Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qtlskey_generic_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QTLSKEY_GENERIC_P_H
6#define QTLSKEY_GENERIC_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtNetwork/private/qtnetworkglobal_p.h>
20
21#include <QtNetwork/private/qtlsbackend_p.h>
22
23#include "qtlskey_base_p.h"
24
25
26#include <QtCore/qnamespace.h>
27#include <QtCore/qglobal.h>
28
30
31namespace QTlsPrivate {
32
33// This class is what previously was known as qsslkey_qt:
34// it implements most of functionality needed by QSslKey
35// not relying on any TLS implementation. It's used by
36// our SecureTransport and Schannel backends.
38{
39public:
40 using TlsKeyBase::TlsKeyBase;
41
42 void decodeDer(KeyType type, KeyAlgorithm algorithm, const QByteArray &der,
43 const QByteArray &passPhrase, bool deepClear) override;
44 void decodePem(KeyType type, KeyAlgorithm algorithm, const QByteArray &pem,
45 const QByteArray &passPhrase, bool deepClear) override;
46
47 QByteArray toPem(const QByteArray &passPhrase) const override;
48
49 QByteArray derFromPem(const QByteArray &pem, QMap<QByteArray,
50 QByteArray> *headers) const override;
51
52 void fromHandle(Qt::HANDLE opaque, KeyType expectedType) override;
53
54 void clear(bool deep) override;
55
56 Qt::HANDLE handle() const override
57 {
58 return Qt::HANDLE(opaque);
59 }
60
61 int length() const override
62 {
63 return keyLength;
64 }
65
66 bool isPkcs8() const override
67 {
68 return pkcs8;
69 }
70
71private:
72 QByteArray decryptPkcs8(const QByteArray &encrypted, const QByteArray &passPhrase);
73
74 bool pkcs8 = false;
75 Qt::HANDLE opaque = nullptr;
76 QByteArray derData;
77 int keyLength = -1;
78};
79
80} // namespace QTlsPrivate
81
82QT_END_NAMESPACE
83
84#endif // QTLSKEY_GENERIC_P_H
void init(QSslSocket *q, QSslSocketPrivate *d) override
QSsl::SslProtocol sessionProtocol() const override
bool hasUndecryptedData() const override
QSslCipher sessionCipher() const override
QList< QSslError > tlsErrors() const override
QByteArray derFromPem(const QByteArray &pem, QMap< QByteArray, QByteArray > *headers) const override
bool isPkcs8() const override
QByteArray toPem(const QByteArray &passPhrase) const override
int length() const override
void decodePem(KeyType type, KeyAlgorithm algorithm, const QByteArray &pem, const QByteArray &passPhrase, bool deepClear) override
void fromHandle(Qt::HANDLE opaque, KeyType expectedType) override
Qt::HANDLE handle() const override
void clear(bool deep) override
void decodeDer(KeyType type, KeyAlgorithm algorithm, const QByteArray &der, const QByteArray &passPhrase, bool deepClear) override
QByteArray decrypt(Cipher cipher, const QByteArray &data, const QByteArray &key, const QByteArray &iv) const override
QByteArray encrypt(Cipher cipher, const QByteArray &data, const QByteArray &key, const QByteArray &iv) const override
Q_DISABLE_COPY_MOVE(X509CertificateSchannel)
Namespace containing onternal types that TLS backends implement.
QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED std::array< SchannelCipherInfo, 44 > schannelCipherInfo
QList< QSslCipher > defaultCiphers()
UNICODE_STRING cbcChainingMode
QList< CRYPTO_SETTINGS > cryptoSettingsForCiphers(const QList< QSslCipher > &ciphers)
bool containsTls13Cipher(const QList< QSslCipher > &ciphers)
UNICODE_STRING gcmChainingMode
QList< QSslCipher > ciphersByName(QStringView schannelSuiteName)
static void attachPrivateKeyToCertificate(const QSslCertificate &certificate, const QSslKey &privateKey)
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")
Q_GLOBAL_STATIC(QReadWriteLock, g_updateMutex)
QT_REQUIRE_CONFIG(thread)
#define SP_PROT_TLS1_0_SERVER
#define SP_PROT_TLS1_1_SERVER
#define SP_PROT_TLS1_2_SERVER
#define BCRYPT_ECDSA_ALGORITHM
#define SP_PROT_TLS1_2
#define SP_PROT_TLS1_3_SERVER
#define MAP_PROTOCOL(sp_protocol, q_protocol)
#define SP_PROT_TLS1_0
#define SP_PROT_TLS1_3
#define CHECK_STATUS(status)
#define CHECK_ATTRIBUTE(attributeName)
#define DEBUG_WARN(message)
QByteArray _q_makePkcs12(const QList< QSslCertificate > &certs, const QSslKey &key, const QString &passPhrase)
#define SP_PROT_TLS1_1_CLIENT
#define SP_PROT_TLS1_SERVER
QAsn1Element _q_PKCS12_key(const QSslKey &key)
#define BCRYPT_ECDH_ALGORITHM
#define SP_PROT_TLS1_3_CLIENT
#define SP_PROT_TLS1_1
#define SEC_E_APPLICATION_PROTOCOL_MISMATCH
#define SP_PROT_TLS1_CLIENT
#define SP_PROT_TLS1_0_CLIENT
#define SECBUFFER_ALERT
#define SP_PROT_TLS1_2_CLIENT
QList< QSsl::SslProtocol > protocols