QSslSocket Class
QSslSocketクラスは、クライアントとサーバーの両方にSSL暗号化ソケットを提供します。詳細...
Header: | #include <QSslSocket> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
Inherits: | QTcpSocket |
- 継承メンバを含む全メンバ一覧
- QSslSocketは、Network Programming APIに含まれます。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
enum | PeerVerifyMode { VerifyNone, QueryPeer, VerifyPeer, AutoVerifyPeer } |
enum | SslMode { UnencryptedMode, SslClientMode, SslServerMode } |
パブリック関数
QSslSocket(QObject *parent = nullptr) | |
virtual | ~QSslSocket() |
void | connectToHostEncrypted(const QString &hostName, quint16 port, QIODeviceBase::OpenMode mode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol) |
void | connectToHostEncrypted(const QString &hostName, quint16 port, const QString &sslPeerName, QIODeviceBase::OpenMode mode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol) |
(since 6.0) void | continueInterruptedHandshake() |
qint64 | encryptedBytesAvailable() const |
qint64 | encryptedBytesToWrite() const |
void | ignoreSslErrors(const QList<QSslError> &errors) |
bool | isEncrypted() const |
QSslCertificate | localCertificate() const |
QList<QSslCertificate> | localCertificateChain() const |
QSslSocket::SslMode | mode() const |
QList<QOcspResponse> | ocspResponses() const |
QSslCertificate | peerCertificate() const |
QList<QSslCertificate> | peerCertificateChain() const |
int | peerVerifyDepth() const |
QSslSocket::PeerVerifyMode | peerVerifyMode() const |
QString | peerVerifyName() const |
QSslKey | privateKey() const |
QSsl::SslProtocol | protocol() const |
QSslCipher | sessionCipher() const |
QSsl::SslProtocol | sessionProtocol() const |
void | setLocalCertificate(const QSslCertificate &certificate) |
void | setLocalCertificate(const QString &path, QSsl::EncodingFormat format = QSsl::Pem) |
void | setLocalCertificateChain(const QList<QSslCertificate> &localChain) |
void | setPeerVerifyDepth(int depth) |
void | setPeerVerifyMode(QSslSocket::PeerVerifyMode mode) |
void | setPeerVerifyName(const QString &hostName) |
void | setPrivateKey(const QSslKey &key) |
void | setPrivateKey(const QString &fileName, QSsl::KeyAlgorithm algorithm = QSsl::Rsa, QSsl::EncodingFormat format = QSsl::Pem, const QByteArray &passPhrase = QByteArray()) |
void | setProtocol(QSsl::SslProtocol protocol) |
void | setSslConfiguration(const QSslConfiguration &configuration) |
QSslConfiguration | sslConfiguration() const |
QList<QSslError> | sslHandshakeErrors() const |
bool | waitForEncrypted(int msecs = 30000) |
再実装パブリック関数
virtual bool | atEnd() const override |
virtual qint64 | bytesAvailable() const override |
virtual qint64 | bytesToWrite() const override |
virtual bool | canReadLine() const override |
virtual void | close() override |
virtual void | resume() override |
virtual void | setReadBufferSize(qint64 size) override |
virtual bool | setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState state = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite) override |
virtual void | setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value) override |
virtual QVariant | socketOption(QAbstractSocket::SocketOption option) override |
virtual bool | waitForBytesWritten(int msecs = 30000) override |
virtual bool | waitForConnected(int msecs = 30000) override |
virtual bool | waitForDisconnected(int msecs = 30000) override |
virtual bool | waitForReadyRead(int msecs = 30000) override |
パブリック・スロット
void | ignoreSslErrors() |
void | startClientEncryption() |
void | startServerEncryption() |
シグナル
void | alertReceived(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description) |
void | alertSent(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description) |
void | encrypted() |
void | encryptedBytesWritten(qint64 written) |
void | handshakeInterruptedOnError(const QSslError &error) |
void | modeChanged(QSslSocket::SslMode mode) |
void | newSessionTicketReceived() |
void | peerVerifyError(const QSslError &error) |
void | preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator) |
void | sslErrors(const QList<QSslError> &errors) |
静的パブリックメンバ
(since 6.1) QString | activeBackend() |
(since 6.1) QList<QString> | availableBackends() |
(since 6.1) QList<QSsl::ImplementedClass> | implementedClasses(const QString &backendName = {}) |
(since 6.1) bool | isClassImplemented(QSsl::ImplementedClass cl, const QString &backendName = {}) |
(since 6.1) bool | isFeatureSupported(QSsl::SupportedFeature ft, const QString &backendName = {}) |
(since 6.1) bool | isProtocolSupported(QSsl::SslProtocol protocol, const QString &backendName = {}) |
(since 6.1) bool | setActiveBackend(const QString &backendName) |
long | sslLibraryBuildVersionNumber() |
QString | sslLibraryBuildVersionString() |
long | sslLibraryVersionNumber() |
QString | sslLibraryVersionString() |
(since 6.1) QList<QSsl::SupportedFeature> | supportedFeatures(const QString &backendName = {}) |
(since 6.1) QList<QSsl::SslProtocol> | supportedProtocols(const QString &backendName = {}) |
bool | supportsSsl() |
再実装された保護された関数
virtual qint64 | readData(char *data, qint64 maxlen) override |
virtual qint64 | skipData(qint64 maxSize) override |
virtual qint64 | writeData(const char *data, qint64 len) override |
詳細説明
QSslSocket は、暗号化されたデータの送信に使用できる、安全で暗号化された TCP 接続を確立します。クライアントモードとサーバーモードの両方で動作し、TLS 1.3 を含む最新の TLS プロトコルをサポートしています。デフォルトでは、QSslSocketは安全だと思われるTLSプロトコルのみを使用します(QSsl::SecureProtocols)が、ハンドシェイクが始まる前であれば、setProtocol()をコールすることでTLSプロトコルを変更することができます。
SSL暗号化は、ソケットがConnectedStateになった後、既存のTCPストリームの上で動作する。QSslSocketを使って安全な接続を確立するには、2つの簡単な方法がある:即座にSSLハンドシェイクを行う方法と、非暗号化モードで接続を確立した後に遅延SSLハンドシェイクを行う方法です。
QSslSocket を使用する最も一般的な方法は、オブジェクトを構築し、connectToHostEncrypted() を呼び出して安全な接続を開始することです。このメソッドは、接続が確立されると直ちに SSL ハンドシェイクを開始します。
QSslSocket *socket = new QSslSocket(this); connect(socket, &QSslSocket::encrypted, this, &Receiver::ready); socket->connectToHostEncrypted("imap.example.com", 993);
プレーンなQTcpSocket と同様に、QSslSocket は HostLookupState、 ConnectingState、そして接続が成功すれば ConnectedState に入ります。その後、ハンドシェイクが自動的に開始され、成功するとencrypted() シグナルが発せられ、ソケットが暗号化された状態になり、使用可能な状態になったことを示す。
connectToHostEncrypted() から戻った直後(すなわちencrypted() シグナルが発せられる前)にソケットにデータを書き込むことができる。データはencrypted() シグナルが発せられるまで QSslSocket にキューイングされる。
既存の接続を保護するために遅延 SSL ハンドシェイクを使う例として、SSL サーバーが着信接続を保護する場合があります。QTcpServer QTcpServer::incomingConnectionまず QSslSocket のインスタンスを生成し、setSocketDescriptor() を呼び出して新しいソケットのディスクリプタを渡された既存のソケットに設定する。その後、startServerEncryption()を呼び出してSSLハンドシェイクを開始する。
void SslServer::incomingConnection(qintptr socketDescriptor) { QSslSocket *serverSocket = new QSslSocket; if (serverSocket->setSocketDescriptor(socketDescriptor)) { addPendingConnection(serverSocket); connect(serverSocket, &QSslSocket::encrypted, this, &SslServer::ready); serverSocket->startServerEncryption(); } else { delete serverSocket; } }
エラーが発生した場合、QSslSocket はsslErrors() シグナルを発する。この場合、エラーを無視するアクションが取られなければ、接続は切断されます。エラーの発生にもかかわらず接続を続行するには、エラー発生後にこのスロット内から、またはQSslSocketの構築後、接続が試行される前であればいつでも、ignoreSslErrors ()を呼び出すことができます。これにより、QSslSocketは相手のIDを確立する際に遭遇したエラーを無視することができます。SSLハンドシェイク中のエラーを無視することは、安全な接続の基本的な特性であるハンドシェイクの成功によって確立されるべきものであるため、注意して使用する必要があります。
暗号化された後は、QSslSocketを通常のQTcpSocket 。readyRead ()が発行されると、read ()、canReadLine ()、readLine ()、getChar ()を呼び出して、QSslSocketの内部バッファから復号化されたデータを読み取り、write ()またはputChar ()を呼び出して、ピアにデータを書き戻すことができる。QSslSocket は、書き込まれたデータを自動的に暗号化し、データがピアに書き込まれると、encryptedBytesWritten() を発行します。
便宜上、QSslSocket はQTcpSocket のブロッキング関数waitForConnected(),waitForReadyRead(),waitForBytesWritten(),waitForDisconnected() をサポートしています。また、暗号化された接続が確立されるまで呼び出し元のスレッドをブロックするwaitForEncrypted() も提供している。
QSslSocket socket; socket.connectToHostEncrypted("http.example.com", 443); if (!socket.waitForEncrypted()) { qDebug() << socket.errorString(); return false; } socket.write("GET / HTTP/1.0\r\n\r\n"); while (socket.waitForReadyRead()) qDebug() << socket.readAll().data();
QSslSocket は、暗号化、秘密鍵、ローカル証明書、ピア証明書、認証局 (CA) 証明書を扱うための広範で使いやすい API を提供します。また、ハンドシェーク段階で発生したエラーを処理するためのAPIも提供します。
以下の機能もカスタマイズ可能である:
- QSslConfiguration::setCiphers() を用いて、ハンドシェイクの前にソケットの暗号スイートをカスタマイズできる。
- ソケットのローカル証明書と秘密鍵は、ハンドシェイクフェーズの前にsetLocalCertificate() とsetPrivateKey() でカスタマイズできる。
- CA 証明書データベースはQSslConfiguration::addCaCertificate() やQSslConfiguration::addCaCertificates() で拡張やカスタマイズが可能である。
SSLハンドシェーク中にSSLソケットによって使用されるデフォルトのCA証明書のリストを拡張するには、以下のスニペットのようにデフォルトの設定を更新する必要があります:
QList<QSslCertificate> certificates = getCertificates(); QSslConfiguration configuration = QSslConfiguration::defaultConfiguration(); configuration.addCaCertificates(certificates); QSslConfiguration::setDefaultConfiguration(configuration);
注: 利用可能な場合、Unix(macOSを除く)のルート証明書は、標準証明書ディレクトリからオンデマンドでロードされます。ルート証明書をオンデマンドでロードしたくない場合は、アプリケーションで最初のSSLハンドシェイクが行われる前に(例えばQSslSocket::systemCaCertificates()を渡すなどして)QSslConfiguration::defaultConfiguration().setCaCertificates()を呼び出すか、SSLハンドシェイクの前にQSslSocketインスタンスでQSslConfiguration::defaultConfiguration()::setCaCertificates()を呼び出す必要があります。
暗号と証明書の詳細については、QSslCipher およびQSslCertificate を参照してください。
本製品には、OpenSSL Toolkit(http://www.openssl.org/)で使用するためにOpenSSL Projectによって開発されたソフトウェアが含まれています。
注意: bytesWritten() 信号とencryptedBytesWritten() 信号の違いに注意してください。QTcpSocket の場合、bytesWritten() は TCP ソケットにデータが書き込まれるとすぐに発行される。QSslSocket の場合、bytesWritten() はデータが暗号化されているときに発せられ、encryptedBytesWritten() はデータが TCP ソケットに書き込まれるとすぐに発せられる。
QSslCertificate 、QSslCipher 、QSslErrorも参照のこと 。
メンバ型ドキュメント
enum QSslSocket::PeerVerifyMode
QSslSocket のピア検証モードについて記述する。デフォルトのモードは AutoVerifyPeer で、ソケットの QSocket::SslMode に応じて適切なモードを選択する。
定数 | 値 | 説明 |
---|---|---|
QSslSocket::VerifyNone | 0 | QSslSocket はピアに証明書を要求しない。接続の相手側の身元に興味がない場合、このモードを設定できます。接続は暗号化され、ソケットはローカル証明書を要求されれば相手に送信します。 |
QSslSocket::QueryPeer | 1 | QSslSocket はピアに証明書を要求しますが、この証明書が有効である必要はありません。これは、実際のSSLハンドシェイクに影響を与えることなく、ピア証明書の詳細をユーザーに表示したい場合に便利です。このモードはサーバーのデフォルトです。注意: Schannelでは、この値はVerifyNoneと同じ動作をします。 |
QSslSocket::VerifyPeer | 2 | QSslSocket は、SSLハンドシェーク・フェーズでピアに証明書を要求し、この証明書が有効であることを要求します。失敗すると、 は () シグナルを発する。このモードがクライアントのデフォルトです。QSslSocket QSslSocket::sslErrors |
QSslSocket::AutoVerifyPeer | 3 | QSslSocket は自動的にサーバー・ソケットに QueryPeer を使用し、クライアント・ソケットに VerifyPeer を使用する。 |
QSslSocket::peerVerifyMode()も参照のこと 。
enum QSslSocket::SslMode
QSslSocket で使用可能な接続モードについて説明する。
定数 | 値 | 説明 |
---|---|---|
QSslSocket::UnencryptedMode | 0 | ソケットは暗号化されていない。動作はQTcpSocket と同じである。 |
QSslSocket::SslClientMode | 1 | ソケットはクライアント側のSSLソケットである。既に暗号化されているか、SSL ハンドシェイクフェーズ(QSslSocket::isEncrypted()を参照)にある。 |
QSslSocket::SslServerMode | 2 | ソケットはサーバー側のSSLソケットである。すでに暗号化されているか、SSLハンドシェイクフェーズにある(QSslSocket::isEncrypted()を参照)。 |
メンバ関数ドキュメント
[explicit]
QSslSocket::QSslSocket(QObject *parent = nullptr)
QSslSocket オブジェクトを構築する。parent はQObject のコンストラクタに渡される。新しいソケットのcipher スイートを static メソッド defaultCiphers() が返すものに設定する。
[virtual noexcept]
QSslSocket::~QSslSocket()
QSslSocket を破棄する。
[static, since 6.1]
QString QSslSocket::activeBackend()
QSslSocket および関連するクラスが使用するバックエンドの名前を返す。アクティブなバックエンドが明示的に設定されていない場合、この関数は、QSslSocket が使用可能なバックエンドの一覧から暗黙的に選択するデフォルトのバックエンドの名前を返します。
注意: デフォルトのバックエンドを暗黙的に選択する場合、QSslSocket は、利用可能であれば OpenSSL バックエンドを優先します。利用できない場合は、WindowsではSchannelバックエンドが、DarwinプラットフォームではSecure Transportが暗黙的に選択される。これらが使えない場合、カスタムTLSバックエンドが見つかれば、それが使われる。他のバックエンドが見つからない場合は、「証明書のみ」のバックエンドが選択される。TLS プラグインの詳細については、ソースから Qt をビルドする際の SSL サポートの有効化と無効化を参照してください。
この関数は Qt 6.1 で導入されました。
setActiveBackend() およびavailableBackends()も参照してください 。
[signal]
void QSslSocket::alertReceived(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
QSslSocket level は、アラートが致命的なものなのか警告なのかを示します。 は、アラートが送信された理由を説明するコードです。アラートメッセージのテキストによる説明がある場合は、 。type description
注意: このシグナルは主に情報提供とデバッグのためのもので、アプリケーションで処理する必要はありません。アラートが致命的であった場合、基礎となるバックエンドはそれを処理し、接続を閉じます。
注意: すべてのバックエンドがこの機能をサポートしているわけではありません。
alertSent()、QSsl::AlertLevel 、QSsl::AlertTypeも参照 。
[signal]
void QSslSocket::alertSent(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
QSslSocket level 、警告か致命的エラーかを記述する。 、警告メッセージのコードを与える。アラートメッセージのテキスト記述がある場合は、 で提供される。type description
注意: このシグナルはほとんどが情報提供であり、デバッグ目的で使用することができます。
注意: すべてのバックエンドがこの機能をサポートしているわけではありません。
alertReceived()、QSsl::AlertLevel 、QSsl::AlertTypeも参照のこと 。
[override virtual]
bool QSslSocket::atEnd() const
を参照してください:QIODevice::atEnd() const.
[static, since 6.1]
QList<QString> QSslSocket::availableBackends()
現在利用可能なバックエンドの名前を返します。これらの名前は小文字で、例えば "openssl"、"securetransport"、"schannel" などです(Qt の TLS バックエンドの既存の機能名と同様です)。
この関数は Qt 6.1 で導入されました。
activeBackend()も参照してください 。
[override virtual]
qint64 QSslSocket::bytesAvailable() const
再インプリメント:QAbstractSocket::bytesAvailable() const.
すぐに読み込める復号化されたバイト数を返します。
[override virtual]
qint64 QSslSocket::bytesToWrite() const
再実装: () const:QAbstractSocket::bytesToWrite() const.
暗号化されてネットワークに書き込まれるのを待っている、暗号化されていないバイト数を返します。
[override virtual]
bool QSslSocket::canReadLine() const
再インプリメントQIODevice::canReadLine() const.
復号化された文字の 1 行(ASCII の ' \n' 文字 1 文字で終端)を読める場合はtrue
を返し、そうでない場合は false を返します。
[override virtual]
void QSslSocket::close()
そうでなければ false を返します:QAbstractSocket::close().
void QSslSocket::connectToHostEncrypted(const QString &hostName, quint16 port, QIODeviceBase::OpenMode mode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol)
mode をOpenMode として使用して、port 上のデバイスhostName への暗号化接続を開始します。これは、connectToHost() を呼び出して接続を確立し、startClientEncryption() を呼び出すのと同じです。protocol パラメータを使用して、使用するネットワーク・プロトコルを指定でき る(IPv4またはIPv6など)。
QSslSocket 最初にHostLookupStateに入る。次に、イベントループまたはwaitFor...()関数のいずれかに入った後、ConnectingStateに入り、 ()を発行し、SSLクライアント・ハンドシェイクを開始する。状態が変わるたびに、 はシグナル () を発する。connected QSslSocket stateChanged
SSLクライアントハンドシェイクを開始した後、相手のIDが確立できない場合、シグナルsslErrors()が発せられる。エラーを無視して接続を続行したい場合は、sslErrors() シグナルに接続されたスロット関数の内部から、または暗号化モードに入る前に、ignoreSslErrors() を呼び出す必要があります。ignoreSslErrors() が呼び出されなかった場合、接続は切断され、シグナルdisconnected() が発せられ、QSslSocket は UnconnectedState に戻る。
SSLハンドシェイクが成功すると、QSslSocket 、encrypted ()が発信される。
QSslSocket socket; connect(&socket, &QSslSocket::encrypted, receiver, &Receiver::socketEncrypted); socket.connectToHostEncrypted("imap", 993); socket->write("1 CAPABILITY\r\n");
注意: 上記の例では、暗号化された接続を要求した直後、encrypted() シグナルが発せられる前に、ソケットにテキストを書き込むことができる。このような場合、テキストはオブジェクト内でキューに入れられ、接続が確立してencrypted() シグナルが発せられた後にソケットに書き込まれる。
mode のデフォルトはReadWrite である。
接続のサーバー側でQSslSocket を作成したい場合は、代わりにQTcpServer を介して着信接続を受信した際にstartServerEncryption() を呼び出す必要がある。
connectToHost()、startClientEncryption()、waitForConnected()、waitForEncrypted()も参照 。
void QSslSocket::connectToHostEncrypted(const QString &hostName, quint16 port, const QString &sslPeerName, QIODeviceBase::OpenMode mode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol)
これはオーバーロードされた関数である。
connectToHostEncryptedの元の動作に加えて、このオーバーロードされたメソッドでは、TCP接続で使用されるホスト名(hostName)の代わりに、証明書の検証用に別のホスト名(sslPeerName)を使用することができます。
connectToHostEncrypted()も参照 。
[since 6.0]
void QSslSocket::continueInterruptedHandshake()
アプリケーションがhandshakeInterruptedOnError() シグナルを受信した後でもハンドシェイクを終了したい場合は、 この関数を呼び出す必要がある。この呼び出しは、シグナルに接続されたスロット関数から行う必要がある。シグナルとスロットの接続は直接でなければなりません。
この関数はQt 6.0で導入されました。
handshakeInterruptedOnError() とQSslConfiguration::setHandshakeMustInterruptOnError()も参照してください 。
[signal]
void QSslSocket::encrypted()
このシグナルは、QSslSocket が暗号化モードに入ると発せられます。このシグナルが発せられた後、QSslSocket::isEncrypted() は真を返し、それ以降のソケットの通信はすべて暗号化される。
QSslSocket::connectToHostEncrypted() およびQSslSocket::isEncrypted()も参照のこと 。
qint64 QSslSocket::encryptedBytesAvailable() const
復号化待ちの暗号化バイト数を返す。通常、QSslSocket は受信データをできるだけ早く復号化するので、この関数は 0 を返す。
qint64 QSslSocket::encryptedBytesToWrite() const
ネットワークへの書き込み待ちの暗号化バイト数を返す。
[signal]
void QSslSocket::encryptedBytesWritten(qint64 written)
このシグナルは、QSslSocket が暗号化されたデータをネットワークに書き込むときに発せられる。written パラメータには、正常に書き込まれたバイト数が含まれる。
QIODevice::bytesWritten()も参照 。
[signal]
void QSslSocket::handshakeInterruptedOnError(const QSslError &error)
QSslSocket 証明書検証エラーが見つかった場合、および で早期エラー報告が有効になっている場合、 このシグナルが発行される。アプリケーションは を検査し、ハンドシェイクを続行するか、中止して相手に警告 メッセージを送信するかを決定することが期待される。シグナルスロット接続は直接接続でなければならない。QSslConfiguration error
continueInterruptedHandshake()、sslErrors()、QSslConfiguration::setHandshakeMustInterruptOnError()も参照のこと 。
[slot]
void QSslSocket::ignoreSslErrors()
このスロットは、QSslSocket のハンドシェーク・フェーズのエラーを無視し、 接続を継続するようにQSslSocket に指示する。ハンドシェークフェーズ中にエラーが発生しても接続を続行したい場合は、sslErrors()に接続されたスロットから、またはハンドシェークフェーズの前に、 このスロットを呼び出す必要がある。このスロットを呼び出さない場合は、エラーに応答するか、ハンドシェイクの前に、sslErrors() シグナルが発せられた後に接続は切断されます。
SSLハンドシェークフェーズでエラーがない場合(つまり、問題なく相手のIDが確立されている場合)、QSslSocket はsslErrors() シグナルを発しないので、この関数を呼び出す必要はありません。
警告: sslErrors() シグナルで報告されるエラーは、必ずユーザーに確認させ、ユーザーが問題なく進行していることを確認した場合にのみ、このメソッドを呼び出すようにしてください。予期せぬエラーが発生した場合は、接続を中止しなければならない。実際のエラーを検査せずにこのメソッドを呼び出すと、アプリケーションにセキュリティ・リスクをもたらす可能性が高くなります。十分注意して使用してください!
sslErrors()も参照のこと 。
void QSslSocket::ignoreSslErrors(const QList<QSslError> &errors)
これはオーバーロードされた関数です。
このメソッドはerrors で与えられたエラーだけを無視するようにQSslSocket に指示します。
注意: ほとんどのSSLエラーは証明書と関連しているので、ほとんどのエラーに対して、このSSLエラーが関連する期待される証明書を設定しなければなりません。例えば、自己署名証明書を使用しているサーバーに接続したい場合、以下のスニペットを考えてみてください:
QList<QSslCertificate> cert = QSslCertificate::fromPath("server-certificate.pem"_L1); QSslError error(QSslError::SelfSignedCertificate, cert.at(0)); QList<QSslError> expectedSslErrors; expectedSslErrors.append(error); QSslSocket socket; socket.ignoreSslErrors(expectedSslErrors); socket.connectToHostEncrypted("server.tld", 443);
この関数を複数回呼び出すと、前の呼び出しで渡されたエラーのリストが置き換わります。この関数を複数回呼び出すと、前の呼び出しで渡されたエラーのリストが置き換えられます。この関数を空のリストで呼び出すと、無視したいエラーのリストを消去できます。
sslErrors() およびsslHandshakeErrors()も参照 。
[static, since 6.1]
QList<QSsl::ImplementedClass> QSslSocket::implementedClasses(const QString &backendName = {})
この関数は、backendName というバックエンドが実装しているバックエンド固有のクラスを返します。空のbackendName は、現在アクティブなバックエンドについての問い合わせとみなされます。
この関数はQt 6.1で導入されました。
QSsl::ImplementedClass 、activeBackend()、isClassImplemented()も参照してください 。
[static, since 6.1]
bool QSslSocket::isClassImplemented(QSsl::ImplementedClass cl, const QString &backendName = {})
cl というクラスがbackendName というバックエンドによって実装されている場合に true を返します。空のbackendName は、現在アクティブなバックエンドに関するクエリとして理解されます。
この関数は Qt 6.1 で導入されました。
implementedClasses()も参照 。
bool QSslSocket::isEncrypted() const
ソケットが暗号化されていればtrue
を返し、そうでなければ false を返す。
暗号化されたソケットでは、write() またはputChar() を呼び出して書き込まれたデータがネットワークに書き込まれる前にすべて暗号化され、read(),readLine() またはgetChar() を呼び出す前に、ネットワークから受信したデータがすべて復号化される。
QSslSocket 暗号化モードに入ると、 ()を呼び出す。encrypted
sessionCipher() を呼び出すと、データの暗号化と復号にどの暗号が使用されているかを確認でき る。
mode()も参照 。
[static, since 6.1]
bool QSslSocket::isFeatureSupported(QSsl::SupportedFeature ft, const QString &backendName = {})
ft という機能がbackendName というバックエンドでサポートされている場合に true を返します。空のbackendName は、現在アクティブなバックエンドに関するクエリとして理解されます。
この関数は Qt 6.1 で導入されました。
QSsl::SupportedFeature およびsupportedFeatures()も参照してください 。
[static, since 6.1]
bool QSslSocket::isProtocolSupported(QSsl::SslProtocol protocol, const QString &backendName = {})
backendName というバックエンドがprotocol をサポートしている場合は true を返します。空のbackendName は、現在アクティブなバックエンドに関するクエリとして理解されます。
この関数は Qt 6.1 で導入されました。
supportedProtocols()も参照 。
QSslCertificate QSslSocket::localCertificate() const
ソケットのローカル証明書certificate 、またはローカル証明書が割り当てられていない場合は空の証明書を返す。
setLocalCertificate() およびprivateKey() も参照 。
QList<QSslCertificate> QSslSocket::localCertificateChain() const
ソケットのローカル証明書certificate チェーン(ローカル証明書が割り当てられていない場合は空リスト)を返す。
setLocalCertificateChain() も参照 。
QSslSocket::SslMode QSslSocket::mode() const
QSslSocket がQTcpSocket と同じ動作をするUnencryptedMode か、クライアントがネゴシエーション中か暗号化モードであるSslClientMode またはSslServerMode のいずれかを返す。
モードが変更されると、QSslSocket はmodeChanged() を返す。
SslModeも参照のこと 。
[signal]
void QSslSocket::modeChanged(QSslSocket::SslMode mode)
このシグナルは、QSslSocket がQSslSocket::UnencryptedMode からQSslSocket::SslClientMode またはQSslSocket::SslServerMode のいずれかに変更されたときに発信される。mode が新しいモードである。
QSslSocket::mode()も参照 。
[signal]
void QSslSocket::newSessionTicketReceived()
ハンドシェイク中にTLS 1.3プロトコルがネゴシエートされた場合、QSslSocket はNewSessionTicketメッセージを受信した後にこのシグナルを発する。セッションとセッションチケットの有効期間ヒントはソケットのコンフィギュレーションで更新される。このセッションは、今後の TLS 接続でセッションの再開(および短縮されたハンドシェイク)に使用できる。
注意: この機能はOpenSSLバックエンドでのみ有効であり、OpenSSL v 1.1.1以上が必要である。
QSslSocket::sslConfiguration()、QSslConfiguration::sessionTicket()、QSslConfiguration::sessionTicketLifeTimeHint()も参照 。
QList<QOcspResponse> QSslSocket::ocspResponses() const
この関数は、OCSP ステープリングを使用した TLS ハンドシェイク中にサーバーが送信する可能性のある Online Certificate Status Protocol レスポンスを返す。明確な応答がない場合、あるいはまったく応答を受け取らなかった場合は、リストは空である。
QSslConfiguration::setOcspStaplingEnabled()も参照のこと 。
QSslCertificate QSslSocket::peerCertificate() const
相手のデジタル証明書(つまり、接続しているホストの即時証明書)、あるいは相手が証明書を割り当てていない場合はヌル証明書を返す。
相手の証明書はハンドシェイクの段階で自動的にチェックされるため、この関数は通常、表示や接続診断の目的で証明書を取得するために使用されます。この関数には、相手のホスト名、証明書の発行者、相手の公開鍵などの情報が含まれています。
ピア証明書はハンドシェーク段階で設定されるため、sslErrors() シグナルまたはencrypted() シグナルに接続されたスロットからピア証明書にアクセスしても安全である。
ヌル証明書が返された場合、SSLハンドシェイクが失敗したことを意味するか、接続先のホストが証明書を持っていないことを意味するか、接続がないことを意味します。
相手の証明書の完全なチェーンを確認したい場合は、peerCertificateChain() を使って一度に取得します。
peerCertificateChain()も参照 。
QList<QSslCertificate> QSslSocket::peerCertificateChain() const
ピアの電子証明書チェーン、または空の証明書リストを返します。
ピアの証明書は、ハンドシェーク時に自動的にチェックされます。この関数は通常、証明書を取得して表示したり、接続診断を行ったりするために使用します。証明書には、ホスト名、発行者名、発行者公開鍵など、相手と証明書発行者に関する情報が含まれています。
ピア証明書は、ハンドシェーク・フェーズ中にQSslSocket で設定されるため、sslErrors() シグナルまたはencrypted() シグナルに接続されたスロットからこの関数をコールしても安全である。
空のリストが返された場合、SSLハンドシェイクが失敗したことを意味するか、接続先のホストが証明書を持っていないことを意味するか、接続がないことを意味します。
相手の直近の証明書だけを取得したい場合は、peerCertificate() を使用する。
peerCertificate()も参照 。
int QSslSocket::peerVerifyDepth() const
SSL ハンドシェークフェーズで確認する相手の証明書チェーンの最大数を返します。最大深度が設定されていない場合は 0 (デフォルト) を返し、証明書チェーン全体を確認する必要があることを示します。
証明書は発行順にチェックされ、ピア自身の証明書から始まり、その発行者の証明書というようにチェックされます。
setPeerVerifyDepth() およびpeerVerifyMode()も参照の こと。
[signal]
void QSslSocket::peerVerifyError(const QSslError &error)
QSslSocket は、SSL ハンドシェイクの間、暗号化が確立する前にこのシグナルを何度か発して、相手の ID を確立する際にエラーが発生したことを示すことができます。 は通常、 がピアを安全に識別できないことを示す。error QSslSocket
このシグナルは、何か問題が発生したときに、その兆候を早期に示してくれる。このシグナルに接続することで、ハンドシェイクが完了する前に、接続されたスロットの内部から手動で接続を切断することを選択できる。何もアクションを起こさなければ、QSslSocket はQSslSocket::sslErrors()の発信に進む。
sslErrors()も参照のこと 。
QSslSocket::PeerVerifyMode QSslSocket::peerVerifyMode() const
ソケットのベリファイモードを返す。このモードは、QSslSocket がピアに証明書を要求するか(すなわち、クライアントがサーバに 証明書を要求するか、サーバがクライアントに証明書を要求するか)、その証明書が有効であることを要求するかを決定する。
デフォルトのモードはAutoVerifyPeer で、QSslSocket に、クライアントにはVerifyPeer 、サーバーにはQueryPeer を使用するように指示する。
setPeerVerifyMode()、peerVerifyDepth()、mode()も参照 。
QString QSslSocket::peerVerifyName() const
setPeerVerifyName またはconnectToHostEncrypted で設定された、証明書検証用の別のホスト名を返す。
setPeerVerifyName() およびconnectToHostEncrypted()も参照 。
[signal]
void QSslSocket::preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
QSslSocket は、PSK暗号化方式をネゴシエートする際にこのシグナルを発行するため、 PSK認証が必要となる。
PSKを使う場合、クライアントはSSLハンドシェイクを続けるために、有効なIDと有効な事前共有鍵をサーバーに送らなければなりません。アプリケーションはこのシグナルに接続されたスロットに、渡されたauthenticator オブジェクトを必要に応じて入力することで、この情報を提供することができます。
注意: このシグナルを無視したり、必要な認証情報を提供しなかったりすると、ハンドシェイクが失敗し、接続が中断されます。
注意 :authenticator オブジェクトはソケットが所有するので、アプリケーションが削除してはならない。
QSslPreSharedKeyAuthenticatorも参照のこと 。
QSslKey QSslSocket::privateKey() const
このソケットの秘密鍵を返す。
setPrivateKey() およびlocalCertificate() も参照する こと。
QSsl::SslProtocol QSslSocket::protocol() const
ソケットの SSL プロトコルを返す。デフォルトではQSsl::SecureProtocols が使用される。
setProtocol()も参照 。
[override virtual protected]
qint64 QSslSocket::readData(char *data, qint64 maxlen)
再実装する:QAbstractSocket::readData(char *data, qint64 maxSize).
[override virtual]
void QSslSocket::resume()
再実装: (char *data, qint64 maxSize):QAbstractSocket::resume().
一時停止したソケットのデータ転送を継続する。このソケットで "setPauseMode(QAbstractSocket::PauseOnSslErrors);" が呼び出され、sslErrors() シグナルを受信した場合、ソケットのデータ転送を継続するためにこのメソッドを呼び出す必要がある。
QAbstractSocket::pauseMode() およびQAbstractSocket::setPauseMode()も参照すること 。
QSslCipher QSslSocket::sessionCipher() const
ソケットの暗号化方式cipher を返し、接続が暗号化されていない場合は NULL 暗号を返す。セッションのソケット暗号はハンドシェークフェーズで設定される。この暗号は、ソケットを介して送信されるデータの暗号化・復号化に使用される。
QSslSocket また、ハンドシェークフェーズで最終的にセッション暗号を選択する暗号の順序リストを設定する関数も提供する。この順序付きリストはハンドシェークフェーズが始まる前に設定されていなければならない。
QSslConfiguration::ciphers(),QSslConfiguration::setCiphers(),QSslConfiguration::setCiphers(),QSslConfiguration::ciphers(),QSslConfiguration::supportedCiphers()も参照のこと 。
QSsl::SslProtocol QSslSocket::sessionProtocol() const
ソケットの SSL/TLS プロトコル、または接続が暗号化されていない場合は UnknownProtocol を返す。セッションのソケットプロトコルはハンドシェークフェーズで設定される。
protocol() およびsetProtocol()も参照 。
[static, since 6.1]
bool QSslSocket::setActiveBackend(const QString &backendName)
backendName という名前のバックエンドがアクティブなバックエンドとして設定されていた場合は true を返す。backendName はavailableBackends() が返す名前のいずれかでなければならない。
注意: アプリケーションは、異なるバックエンドを同時に混在させることはできません。これは、QSslSocket や関連するクラス、例えばQSslCertificate やQSslKey を使用する前に、デフォルトではないバックエンドを選択しなければならないことを意味します。
この関数は Qt 6.1 で導入されました。
activeBackend() やavailableBackends()も参照 。
void QSslSocket::setLocalCertificate(const QSslCertificate &certificate)
ソケットのローカル証明書をcertificate に設定する。 ローカル証明書は、相手に対して自分の身元を確認する必要がある場合に必要である。ローカル証明書を設定する場合、秘密鍵も設定する必要がある。
ローカル証明書と秘密鍵は、サーバー・ソケットでは常に必要ですが、サーバーがクライアントの認証を必要とする場合、クライアント・ソケットでもまれに使用されます。
注: macOS上のSecure Transport SSLバックエンドは、ローカルの証明書と鍵をインポートすることで、デフォルトのキーチェーン(デフォルトはおそらくログインキーチェーン)を更新する可能性があります。その結果、アプリケーションがこれらの秘密鍵を使用しているときに、システムダイアログが表示され、許可を求めることがあります。このような動作が望ましくない場合は、QT_SSL_USE_TEMPORARY_KEYCHAIN環境変数を0以外の値に設定してください。これにより、QSslSocket 、独自の一時キーチェーンを使用するようになります。
localCertificate() およびsetPrivateKey()も参照 。
void QSslSocket::setLocalCertificate(const QString &path, QSsl::EncodingFormat format = QSsl::Pem)
これはオーバーロードされた関数である。
ソケットのローカルcertificate を、指定されたformat に従って解析されたファイルpath で最初に見つかったものに設定する。
void QSslSocket::setLocalCertificateChain(const QList<QSslCertificate> &localChain)
SSL ハンドシェーク中に相手に提示する証明書チェーンをlocalChain に設定する。
localCertificateChain() およびQSslConfiguration::setLocalCertificateChain()も参照 。
void QSslSocket::setPeerVerifyDepth(int depth)
SSL ハンドシェーク・フェーズ中に確認する、ピアの証明書チェーン内の証明書の最大数をdepth に設定します。 深さを 0 に設定すると、最大深さが設定されないことになり、証明書チェーン全体を確認する必要があることを示します。
証明書は発行順にチェックされ、ピア自身の証明書から始まり、その発行者の証明書というようにチェックされます。
peerVerifyDepth() およびsetPeerVerifyMode()も参照の こと。
void QSslSocket::setPeerVerifyMode(QSslSocket::PeerVerifyMode mode)
ソケットのベリファイモードをmode に設定する。このモードは、QSslSocket がピアに証明書を要求するか(すなわち、クライアントがサーバに証明書を要求するか、サーバがクライアントに証明書を要求するか)、この証明書が有効であることを要求するかを決定する。
デフォルトのモードはAutoVerifyPeer で、QSslSocket に、クライアントにはVerifyPeer 、サーバーにはQueryPeer を使用するように指示する。
暗号化の開始後にこのモードを設定しても、現在の接続には影響しない。
peerVerifyMode()、setPeerVerifyDepth()、mode()も参照のこと 。
void QSslSocket::setPeerVerifyName(const QString &hostName)
証明書の検証用に、TCP接続に使用されるホスト名ではなく、hostName で指定される 別のホスト名を設定する。
peerVerifyName() およびconnectToHostEncrypted()も参照のこと 。
void QSslSocket::setPrivateKey(const QSslKey &key)
ソケットの秘密鍵key をkey に設定する。秘密鍵とローカル証明書certificate は、SSLピアに対して自分の身元を証明する必要があるクライアントとサーバで使用される。
SSL サーバーソケットを作成する場合は、キーとローカル証明書の両方が必要です。SSLクライアントソケットを作成する場合、クライアントがSSLサーバーに対して自身を識別する必要がある場合は、キーとローカル証明書が必要です。
privateKey() とsetLocalCertificate()も参照のこと 。
void QSslSocket::setPrivateKey(const QString &fileName, QSsl::KeyAlgorithm algorithm = QSsl::Rsa, QSsl::EncodingFormat format = QSsl::Pem, const QByteArray &passPhrase = QByteArray())
これはオーバーロードされた関数です。
ファイルfileName の文字列を読み込み、指定されたalgorithm とエンコードformat を用いてデコードし、SSL key を構築する。 エンコードされた鍵が暗号化されている場合、passPhrase を用いて復号化する。
ソケットの秘密鍵は構築された鍵に設定される。秘密鍵とローカル証明書certificate は、クライアントとサーバがSSLピアに対して自分の身元を証明するために使われる。
SSL サーバーソケットを作成する場合は、鍵とローカル証明書の両方が必要である。SSLクライアントソケットを作成する場合、クライアントがSSLサーバーに対して自身を識別する必要がある場合は、鍵とローカル証明書が必要です。
privateKey() およびsetLocalCertificate()も参照 。
void QSslSocket::setProtocol(QSsl::SslProtocol protocol)
ソケットのSSLプロトコルをprotocol に設定する。 これは、次にハンドシェークを開始するときに影響する。すでに暗号化されているソケットでこの関数を呼んでも、ソケットのプロトコルに影響しない。
protocol()も参照 。
[override virtual]
void QSslSocket::setReadBufferSize(qint64 size)
再インプリメント:QAbstractSocket::setReadBufferSize(qint64 size).
QSslSocket の内部読み込みバッファのサイズをsize バイトに設定する。
[override virtual]
bool QSslSocket::setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState state = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)
再実装する:QAbstractSocket::setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState, QIODeviceBase::OpenMode openMode)。
ネイティブソケットディスクリプタsocketDescriptor でQSslSocket を初期化する。socketDescriptor が有効なソケットディスクリプタとして受け入れられた場合はtrue
を返し、そうでない場合はfalse
を返す。ソケットはopenMode で指定されたモードでオープンされ、state で指定されたソケット状態になる。
注意: 同じネイティブソケットディスクリプタで2つのソケットを初期化することはできない。
socketDescriptor()も参照のこと 。
[override virtual]
void QSslSocket::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)
再実装:QAbstractSocket::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value).
与えられたoption をvalue で指定された値に設定する。
socketOption()も参照してください 。
void QSslSocket::setSslConfiguration(const QSslConfiguration &configuration)
ソケットのSSL設定をconfiguration の内容に設定する。 この関数は、ローカル証明書、暗号化方式、秘密鍵、CA証明書をconfiguration に格納されているものに設定する。
SSL-state関連フィールドを設定することはできない。
sslConfiguration(),setLocalCertificate(),setPrivateKey(),QSslConfiguration::setCaCertificates(),QSslConfiguration::setCiphers()も参照 。
[override virtual protected]
qint64 QSslSocket::skipData(qint64 maxSize)
再インプリメント:QAbstractSocket::skipData(qint64 maxSize) を参照してください。
[override virtual]
QVariant QSslSocket::socketOption(QAbstractSocket::SocketOption option)
再リプリメント:QAbstractSocket::socketOption(QAbstractSocket::SocketOption option)。
option オプションの値を返します。
setSocketOption()も参照 。
QSslConfiguration QSslSocket::sslConfiguration() const
ソケットのSSL設定状態を返す。ソケットのデフォルトのSSL設定は、デフォルトの暗号化方式、デフォルトのCA証明書、ローカルの秘密鍵や証明書を使用しないことである。
SSL設定には、予告なしに変更される可能性のあるフィールドも含まれる。
setSslConfiguration(),localCertificate(),peerCertificate(),peerCertificateChain(),sessionCipher(),privateKey(),QSslConfiguration::ciphers(),QSslConfiguration::caCertificates()も参照の こと。
[signal]
void QSslSocket::sslErrors(const QList<QSslError> &errors)
QSslSocket は SSL ハンドシェイクの後にこのシグナルを発行し、 ピアの ID を確立する際に一つ以上のエラーが発生したことを示す。エラーは通常、 がピアを安全に識別できないことを示す。何らかのアクションを取らない限り、このシグナルが発せられた後に接続は切断されます。QSslSocket
エラーが発生したにもかかわらず接続を続行したい場合は、このシグナルに接続されたスロットの内部からQSslSocket::ignoreSslErrors() を呼び出す必要がある。後の時点でエラー・リストにアクセスする必要がある場合は、sslHandshakeErrors() を呼び出すことができる。
errors には、 がピアの ID を検証できないようなエラーが 1 つ以上含まれています。QSslSocket
注意: このシグナルへの接続時にQt::QueuedConnection を使用することはできません。また、QSslSocket::ignoreSslErrors() を呼び出しても、何の効果もありません。
peerVerifyError()も参照 。
QList<QSslError> QSslSocket::sslHandshakeErrors() const
最後に発生した SSL エラーのリストを返します。これは、QSslSocket がsslErrors() シグナル経由で渡すリストと同じです。接続が暗号化されており、エラーも発生していない場合、この関数は空のリストを返します。
connectToHostEncrypted()も参照 。
[static]
long QSslSocket::sslLibraryBuildVersionNumber()
コンパイル時に使用されている SSL ライブラリのバージョン番号を返します。SSL サポートがない場合は -1 を返します。
sslLibraryVersionNumber()も参照 。
[static]
QString QSslSocket::sslLibraryBuildVersionString()
コンパイル時に使用されている SSL ライブラリのバージョン文字列を返します。SSL サポートがない場合は空の値を返します。
sslLibraryVersionString()も参照 。
[static]
long QSslSocket::sslLibraryVersionNumber()
使用中の SSL ライブラリのバージョン番号を返します。これはコンパイル時ではなく、実行時に使用されているライブラリのバージョンであることに注意してください。SSL サポートがない場合は -1 を返します。
[static]
QString QSslSocket::sslLibraryVersionString()
使用中の SSL ライブラリのバージョン文字列を返します。これはコンパイル時ではなく、実行時に使用されているライブラリのバージョンであることに注意してください。SSL サポートが利用できない場合、空の値を返します。
[slot]
void QSslSocket::startClientEncryption()
クライアント接続の遅延SSLハンドシェイクを開始する。この関数は、ソケットがConnectedState にあるが、まだUnencryptedMode にあるときに呼び出される。 まだ接続されていないか、すでに暗号化されている場合、この関数は何の効果もない。
STARTTLS機能を実装しているクライアントは、遅延SSLハンドシェイクを利用することが多い。他のほとんどのクライアントは、ハンドシェイクを自動的に実行するconnectToHostEncrypted() を代わりに使うことで、この関数を直接呼び出すことを避けることができる。
connectToHostEncrypted() とstartServerEncryption()も参照のこと 。
[slot]
void QSslSocket::startServerEncryption()
サーバ接続の遅延SSLハンドシェイクを開始する。この関数は、ソケットがConnectedState にあるが、まだUnencryptedMode にあるときに呼び出すことができる。 ソケットが接続されていないか、すでに暗号化されている場合、この関数は何の効果もない。
サーバーソケットでは、この関数を呼び出すことがSSLハンドシェイクを開始する唯一の方法である。ほとんどのサーバーはコネクションを受け取った直後、もしくはSSLモードに入るためのプロトコル固有のコマンドを受け取った結果として、この関数を呼び出します(例えば、サーバーは "STARTTLSrRNA "という文字列を受け取ると、この関数を呼び出して応答します)。
SSLサーバーを実装する最も一般的な方法は、QTcpServer のサブクラスを作成し、QTcpServer::incomingConnection() を再実装することである。返されたソケットディスクリプタはQSslSocket::setSocketDescriptor() に渡される。
connectToHostEncrypted() とstartClientEncryption()も参照のこと 。
[static, since 6.1]
QList<QSsl::SupportedFeature> QSslSocket::supportedFeatures(const QString &backendName = {})
この関数はbackendName というバックエンドがサポートする機能を返す。空のbackendName は、現在アクティブなバックエンドに関する問い合わせとして理解される。
この関数は Qt 6.1 で導入されました。
QSsl::SupportedFeature およびactiveBackend()も参照してください 。
[static, since 6.1]
QList<QSsl::SslProtocol> QSslSocket::supportedProtocols(const QString &backendName = {})
backendName という名前のバックエンドが利用可能な場合、この関数はこのバックエンドがサポートする TLS プロトコルのバージョンのリストを返します。空のbackendName は、現在アクティブなバックエンドについての問い合わせとして理解される。そうでない場合、この関数は空のリストを返します。
この関数は Qt 6.1 で導入されました。
availableBackends(),activeBackend(),isProtocolSupported()も参照してください 。
[static]
bool QSslSocket::supportsSsl()
このプラットフォームがSSLをサポートしている場合はtrue
を返し、そうでない場合は false を返します。そうでない場合は false を返します。プラットフォームが SSL をサポートしていない場合、ソケットは接続フェーズで失敗します。
[override virtual]
bool QSslSocket::waitForBytesWritten(int msecs = 30000)
再インプリメント:QAbstractSocket::waitForBytesWritten(int msecs) を返します。
[override virtual]
bool QSslSocket::waitForConnected(int msecs = 30000)
再インプリメント: (int msecs):QAbstractSocket::waitForConnected(int msecs).
ソケットが接続されるか、msecs ミリ秒のどちらか先になるまで待つ。接続が確立された場合、この関数はtrue
を返し、そうでない場合はfalse
を返す。
QAbstractSocket::waitForConnected()も参照のこと 。
[override virtual]
bool QSslSocket::waitForDisconnected(int msecs = 30000)
再インプリメント:QAbstractSocket::waitForDisconnected(int msecs).
ソケットが切断されるかmsecs ミリ秒のどちらか早い方まで待つ。接続が切断された場合、この関数はtrue
を返し、そうでない場合はfalse
を返す。
QAbstractSocket::waitForDisconnected()も参照のこと 。
bool QSslSocket::waitForEncrypted(int msecs = 30000)
ソケットがSSLハンドシェイクを完了し、encrypted() を発行するまで待機する、またはmsecs ミリ秒のどちらか早い方。encrypted() が発信された場合、この関数は真を返す。そうでない場合(ソケットが切断された、SSLハンドシェイクに失敗したなど)、偽を返す。
以下の例では、ソケットが暗号化されるまで最大1秒待つ:
socket->connectToHostEncrypted("imap", 993); if (socket->waitForEncrypted(1000)) qDebug("Encrypted!");
msecs が -1 の場合、この関数はタイムアウトしない。
startClientEncryption(),startServerEncryption(),encrypted(),isEncrypted()も参照の こと。
[override virtual]
bool QSslSocket::waitForReadyRead(int msecs = 30000)
再インプリメント:QAbstractSocket::waitForReadyRead(int msecs)。
[override virtual protected]
qint64 QSslSocket::writeData(const char *data, qint64 len)
再インプリメント:QAbstractSocket::writeData(const char *data, qint64 size)。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。