273 ~QTlsBackend() override;
275 virtual bool isValid()
const;
276 virtual long tlsLibraryVersionNumber()
const;
277 virtual QString tlsLibraryVersionString()
const;
278 virtual long tlsLibraryBuildVersionNumber()
const;
279 virtual QString tlsLibraryBuildVersionString()
const;
280 virtual void ensureInitialized()
const;
282 virtual QString backendName()
const = 0;
283 virtual QList<QSsl::SslProtocol> supportedProtocols()
const = 0;
284 virtual QList<QSsl::SupportedFeature> supportedFeatures()
const = 0;
285 virtual QList<QSsl::ImplementedClass> implementedClasses()
const = 0;
288 virtual QTlsPrivate::TlsKey *createKey()
const;
289 virtual QTlsPrivate::X509Certificate *createCertificate()
const;
291 virtual QList<QSslCertificate> systemCaCertificates()
const;
294 virtual QTlsPrivate::TlsCryptograph *createTlsCryptograph()
const;
295 virtual QTlsPrivate::DtlsCryptograph *createDtlsCryptograph(
class QDtls *qObject,
int mode)
const;
296 virtual QTlsPrivate::DtlsCookieVerifier *createDtlsCookieVerifier()
const;
300 virtual QTlsPrivate::X509ChainVerifyPtr X509Verifier()
const;
301 virtual QTlsPrivate::X509PemReaderPtr X509PemReader()
const;
302 virtual QTlsPrivate::X509DerReaderPtr X509DerReader()
const;
303 virtual QTlsPrivate::X509Pkcs12ReaderPtr X509Pkcs12Reader()
const;
306 virtual QList<
int> ellipticCurvesIds()
const;
307 virtual int curveIdFromShortName(
const QString &name)
const;
308 virtual int curveIdFromLongName(
const QString &name)
const;
309 virtual QString shortNameForId(
int cid)
const;
310 virtual QString longNameForId(
int cid)
const;
311 virtual bool isTlsNamedCurve(
int cid)
const;
316 virtual int dhParametersFromDer(
const QByteArray &derData, QByteArray *data)
const;
317 virtual int dhParametersFromPem(
const QByteArray &pemData, QByteArray *data)
const;
319 static QList<QString> availableBackendNames();
320 static QString defaultBackendName();
321 static QTlsBackend *findBackend(
const QString &backendName);
322 static QTlsBackend *activeOrAnyBackend();
324 static QList<QSsl::SslProtocol> supportedProtocols(
const QString &backendName);
325 static QList<QSsl::SupportedFeature> supportedFeatures(
const QString &backendName);
326 static QList<QSsl::ImplementedClass> implementedClasses(
const QString &backendName);
329 static constexpr const int nameIndexSchannel = 0;
330 static constexpr const int nameIndexSecureTransport = 1;
331 static constexpr const int nameIndexOpenSSL = 2;
332 static constexpr const int nameIndexCertOnly = 3;
334 static const QString builtinBackendNames[];
336 template<
class DynamicType,
class TLSObject>
337 static DynamicType *backend(
const TLSObject &o)
339 return static_cast<DynamicType *>(o.d->backend.get());
342 static void resetBackend(QSslKey &key, QTlsPrivate::TlsKey *keyBackend);
344 static void setupClientPskAuth(QSslPreSharedKeyAuthenticator *auth,
const char *hint,
345 int hintLength,
unsigned maxIdentityLen,
unsigned maxPskLen);
346 static void setupServerPskAuth(QSslPreSharedKeyAuthenticator *auth,
const char *identity,
347 const QByteArray &identityHint,
unsigned maxPskLen);
349 static QSslCipher createCiphersuite(
const QString &description,
int bits,
int supportedBits);
350 static QSslCipher createCiphersuite(
const QString &suiteName, QSsl::SslProtocol protocol,
351 const QString &protocolString);
352 static QSslCipher createCiphersuite(
const QString &name,
const QString &keyExchangeMethod,
353 const QString &encryptionMethod,
354 const QString &authenticationMethod,
355 int bits, QSsl::SslProtocol protocol,
356 const QString &protocolString);
360 static QList<QSslCipher> defaultCiphers();
361 static QList<QSslCipher> defaultDtlsCiphers();
363 static void setDefaultCiphers(
const QList<QSslCipher> &ciphers);
364 static void setDefaultDtlsCiphers(
const QList<QSslCipher> &ciphers);
365 static void setDefaultSupportedCiphers(
const QList<QSslCipher> &ciphers);
367 static void resetDefaultEllipticCurves();
369 static void setDefaultCaCertificates(
const QList<QSslCertificate> &certs);
374 static bool rootLoadingOnDemandAllowed(
const QSslConfiguration &configuration);
375 static void storePeerCertificate(QSslConfiguration &configuration,
const QSslCertificate &peerCert);
376 static void storePeerCertificateChain(QSslConfiguration &configuration,
377 const QList<QSslCertificate> &peerCertificateChain);
378 static void clearPeerCertificates(QSslConfiguration &configuration);
381 static void clearPeerCertificates(QSslSocketPrivate *d);
382 static void setPeerSessionShared(QSslSocketPrivate *d,
bool shared);
383 static void setSessionAsn1(QSslSocketPrivate *d,
const QByteArray &asn1);
384 static void setSessionLifetimeHint(QSslSocketPrivate *d,
int hint);
385 using AlpnNegotiationStatus = QSslConfiguration::NextProtocolNegotiationStatus;
386 static void setAlpnStatus(QSslSocketPrivate *d, AlpnNegotiationStatus st);
387 static void setNegotiatedProtocol(QSslSocketPrivate *d,
const QByteArray &protocol);
388 static void storePeerCertificate(QSslSocketPrivate *d,
const QSslCertificate &peerCert);
389 static void storePeerCertificateChain(QSslSocketPrivate *d,
const QList<QSslCertificate> &peerChain);
390 static void addTustedRoot(QSslSocketPrivate *d,
const QSslCertificate &rootCert);
392 static void setEphemeralKey(QSslSocketPrivate *d,
const QSslKey &key);
394 virtual void forceAutotestSecurityLevel();
397 Q_DISABLE_COPY_MOVE(QTlsBackend)