44 Q_DECLARE_PUBLIC(QSslSocket)
47 virtual ~QSslSocketPrivate();
50 bool verifyProtocolSupported(
const char *where);
53 QSslSocket::SslMode mode;
54 bool autoStartHandshake;
55 bool connectionEncrypted;
56 bool ignoreAllSslErrors;
57 QList<QSslError> ignoreErrorsList;
58 bool* readyReadEmittedPointer;
60 QSslConfigurationPrivate configuration;
64 QString verificationPeerName;
66 bool allowRootCertOnDemandLoading;
68 static bool s_loadRootCertsOnDemand;
70 static bool supportsSsl();
71 static void ensureInitialized();
73 static QList<QSslCipher> defaultCiphers();
74 static QList<QSslCipher> defaultDtlsCiphers();
75 static QList<QSslCipher> supportedCiphers();
76 static void setDefaultCiphers(
const QList<QSslCipher> &ciphers);
77 static void setDefaultDtlsCiphers(
const QList<QSslCipher> &ciphers);
78 static void setDefaultSupportedCiphers(
const QList<QSslCipher> &ciphers);
80 static QList<QSslEllipticCurve> supportedEllipticCurves();
81 static void setDefaultSupportedEllipticCurves(
const QList<QSslEllipticCurve> &curves);
82 static void resetDefaultEllipticCurves();
84 static QList<QSslCertificate> defaultCaCertificates();
85 static QList<QSslCertificate> systemCaCertificates();
86 static void setDefaultCaCertificates(
const QList<QSslCertificate> &certs);
87 static void addDefaultCaCertificate(
const QSslCertificate &cert);
88 static void addDefaultCaCertificates(
const QList<QSslCertificate> &certs);
89 static bool isMatchingHostname(
const QSslCertificate &cert,
const QString &peerName);
90 static bool isMatchingHostname(
const QString &cn,
const QString &hostname);
93 QTcpSocket *plainSocket =
nullptr;
94 void createPlainSocket(QIODevice::OpenMode openMode);
95 static void pauseSocketNotifiers(QSslSocket*);
96 static void resumeSocketNotifiers(QSslSocket*);
98 static void checkSettingSslContext(QSslSocket*, std::shared_ptr<QSslContext>);
99 static std::shared_ptr<QSslContext> sslContext(QSslSocket *socket);
100 bool isPaused()
const;
101 void setPaused(
bool p);
102 bool bind(
const QHostAddress &address, quint16, QAbstractSocket::BindMode,
const QNetworkInterface *iface =
nullptr) override;
103 void _q_connectedSlot();
104 void _q_hostFoundSlot();
105 void _q_disconnectedSlot();
106 void _q_stateChangedSlot(QAbstractSocket::SocketState);
107 void _q_errorSlot(QAbstractSocket::SocketError);
108 void _q_readyReadSlot();
109 void _q_channelReadyReadSlot(
int);
110 void _q_bytesWrittenSlot(qint64);
111 void _q_channelBytesWrittenSlot(
int, qint64);
112 void _q_readChannelFinishedSlot();
113 void _q_flushWriteBuffer();
114 void _q_flushReadBuffer();
115 void _q_resumeImplementation();
117 static QList<QByteArray> unixRootCertDirectories();
119 qint64 peek(
char *data, qint64 maxSize) override;
120 QByteArray peek(qint64 maxSize) override;
121 bool flush() override;
123 void startClientEncryption();
124 void startServerEncryption();
126 void disconnectFromHost();
128 QSslCipher sessionCipher()
const;
129 QSsl::SslProtocol sessionProtocol()
const;
130 void continueHandshake();
132 static bool rootCertOnDemandLoadingSupported();
133 static void setRootCertOnDemandLoadingSupported(
bool supported);
135 static QTlsBackend *tlsBackendInUse();
138 QSslSocket::SslMode tlsMode()
const;
139 bool isRootsOnDemandAllowed()
const;
140 QString verificationName()
const;
141 QString tlsHostName()
const;
142 QTcpSocket *plainTcpSocket()
const;
143 bool verifyErrorsHaveBeenIgnored();
144 bool isAutoStartingHandshake()
const;
145 bool isPendingClose()
const;
146 void setPendingClose(
bool pc);
147 qint64 maxReadBufferSize()
const;
148 void setMaxReadBufferSize(qint64 maxSize);
149 void setEncrypted(
bool enc);
150 QRingBufferRef &tlsWriteBuffer();
151 QRingBufferRef &tlsBuffer();
152 bool &tlsEmittedBytesWritten();
153 bool *readyReadPointer();
157 bool hasUndecryptedData()
const;
161 static inline QMutex backendMutex;
162 static inline QString activeBackendName;
163 static inline QTlsBackend *tlsBackend =
nullptr;
165 std::unique_ptr<QTlsPrivate::TlsCryptograph> backend;