QSslPreSharedKeyAuthenticator 类

QSslPreSharedKeyAuthenticator 类提供预共享密钥(PSK)密码套件的认证数据。更多...

头文件 #include <QSslPreSharedKeyAuthenticator>
CMakefind_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmakeQT += network

注意:本类中所有函数均为可重入

公开函数

QSslPreSharedKeyAuthenticator()
QSslPreSharedKeyAuthenticator(const QSslPreSharedKeyAuthenticator &authenticator)
~QSslPreSharedKeyAuthenticator()
QByteArrayidentity() const
QByteArrayidentityHint() const
intmaximumIdentityLength() const
intmaximumPreSharedKeyLength() const
QByteArraypreSharedKey() const
voidsetIdentity(const QByteArray &identity)
voidsetPreSharedKey(const QByteArray &preSharedKey)
voidswap(QSslPreSharedKeyAuthenticator &authenticator)
QSslPreSharedKeyAuthenticator &operator=(const QSslPreSharedKeyAuthenticator &authenticator)
QSslPreSharedKeyAuthenticator &operator=(QSslPreSharedKeyAuthenticator &&authenticator)
booloperator!=(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs)
booloperator==(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs)

详细说明

QSslPreSharedKeyAuthenticator 类由 SSL 套接字使用,在预共享密钥(PSK)密码套件中提供所需的认证数据。

在 PSK 握手过程中,客户端必须生成了一个密钥,这个密钥必须与服务器上设置的密钥相匹配。生成密钥的确切算法取决于应用程序;然而,为此目的,服务器可能向客户端发送一个身份提示。这个提示与其他信息(例如密码)结合后,被客户端用来构造共享密钥。

QSslPreSharedKeyAuthenticator类为客户端应用提供了一种完成预共享密钥握手的机制。客户端应用需要连接到一个槽,用于QSslSocket::preSharedKeyAuthenticationRequired()信号。

    connect(socket, &QSslSocket::preSharedKeyAuthenticationRequired,
            this, &AuthManager::handlePreSharedKeyAuthentication);

该信号携带一个包含服务器发送到客户端的身份提示的QSslPreSharedKeyAuthenticator对象,并且该提示必须用相应的客户端身份和派生密钥来填充

    void AuthManager::handlePreSharedKeyAuthentication(QSslPreSharedKeyAuthenticator *authenticator)
    {
        authenticator->setIdentity("My Qt App");

        const QByteArray key = deriveKey(authenticator->identityHint(), passphrase);
        authenticator->setPreSharedKey(key);
    }

注意:只有在使用OpenSSL 1.0.1(或更高版本)作为SSL后端时才支持PSK加密套件。

注意:目前PSK仅在OpenSSL中得到支持。

另请参阅:QSslSocket

成员函数文档

QSslPreSharedKeyAuthenticator::QSslPreSharedKeyAuthenticator()

构造一个默认的QSslPreSharedKeyAuthenticator对象。

身份提示、身份和密钥将初始化为空字节数组;身份和密钥的最大长度将初始化为0。

QSslPreSharedKeyAuthenticator::QSslPreSharedKeyAuthenticator(const QSslPreSharedKeyAuthenticator &authenticator)

authenticator为副本构造一个QSslPreSharedKeyAuthenticator对象。

另请参阅:operator=

[noexcept] QSslPreSharedKeyAuthenticator::~QSslPreSharedKeyAuthenticator()

销毁QSslPreSharedKeyAuthenticator对象。

QByteArray QSslPreSharedKeyAuthenticator::identity() const

返回PSK客户端身份。

另请参阅:setIdentity

QByteArray QSslPreSharedKeyAuthenticator::identityHint() const

返回服务器提供的PSK身份提示。此提示的解释由应用决定。

int QSslPreSharedKeyAuthenticator::maximumIdentityLength() const

返回PSK客户端身份的最大长度(以字节为单位)。

注意:可以设置一个长度大于maximumIdentityLength()的身份;在这种情况下,实际发送到服务器的是前maximumIdentityLength()个字节。

另请参阅:setIdentity

int QSslPreSharedKeyAuthenticator::maximumPreSharedKeyLength() const

返回预共享密钥的最大长度(以字节为单位)。

注意:可以设置一个长度大于maximumPreSharedKeyLength()的密钥;在这种情况下,实际发送到服务器的是前maximumPreSharedKeyLength()个字节。

另请参阅:setPreSharedKey

QByteArray QSslPreSharedKeyAuthenticator::preSharedKey() const

返回预共享密钥。

另请参阅:setPreSharedKey

void QSslPreSharedKeyAuthenticator::setIdentity(const QByteArray &identity)

将PSK客户端身份(将被通知到服务器)设置为identity

注意:可以设置一个长度大于 最大身份长度 的身份;在这种情况下,只有前 最大身份长度 字节会被发送到服务器。

另请参阅身份() 和 最大身份长度

void QSslPreSharedKeyAuthenticator::setPreSharedKey(const QByteArray &preSharedKey)

设置预共享密钥为 preSharedKey

注意:可以设置一个长度大于 最大预共享密钥长度 的密钥;在这种情况下,只有前 最大预共享密钥长度 字节会被发送到服务器。

另请参阅预共享密钥最大预共享密钥长度QByteArray::fromHex

[noexcept] void QSslPreSharedKeyAuthenticator::swap(QSslPreSharedKeyAuthenticator &authenticator)

交换 QSslPreSharedKeyAuthenticator 对象 authenticator 与此对象。此操作非常快速且从不失败。

QSslPreSharedKeyAuthenticator &QSslPreSharedKeyAuthenticator::operator=(const QSslPreSharedKeyAuthenticator &authenticator)

QSslPreSharedKeyAuthenticator 对象 authenticator 赋值给此对象,并返回副本的引用。

[noexcept] QSslPreSharedKeyAuthenticator &QSslPreSharedKeyAuthenticator::operator=(QSslPreSharedKeyAuthenticator &&authenticator)

移动赋值 QSslPreSharedKeyAuthenticator 对象 authenticator 到此对象,并返回已移动实例的引用。

相关非成员函数

bool operator!=(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs)

如果认证器对象 lhs 不等于 rhs 则返回 true;否则返回 false

bool operator==(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs)

如果认证器对象 lhs 等于 rhs 则返回 true;否则返回 false

当且仅当两个认证器对象具有相同的身份提示、身份、预共享密钥以及身份和预共享密钥的最大长度时,这两个认证器对象才相等。

©© 2024 Qt公司有限公司。本文件中包含的文档贡献均为各自所有者的版权。所提供文档的使用受GNU自由文档许可证版本1.3的条款和条件约束,由自由软件基金会发布。Qt及其相关标志为Qt公司有限公司在芬兰及其他国家/地区的商标。所有其他商标均为其各自所有者的财产。