class QSslPreSharedKeyAuthenticator#

QSslPreSharedKeyAuthenticator 类为预共享密钥(PSK)加密套件提供认证数据。更多信息

概要#

方法#

注意

此文档可能包含自动从 C++ 翻译到 Python 的代码段。我们始终欢迎对代码段的翻译作出贡献。如果您发现翻译有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单的方式告诉我们。

详细描述#

警告

本节包含自动从 C++ 翻译到 Python 的代码段,可能包含错误。

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

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

QSslPreSharedKeyAuthenticator 为客户端应用程序提供了完成 PSK 握手的手段。客户端应用程序需要连接到 preSharedKeyAuthenticationRequired) 信号

socket.preSharedKeyAuthenticationRequired.connect(
        self.handlePreSharedKeyAuthentication)

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

def handlePreSharedKeyAuthentication(self, authenticator):

    authenticator.setIdentity("My Qt App")
    key = deriveKey(authenticator.identityHint(), passphrase)
    authenticator.setPreSharedKey(key)

注意

仅当使用 OpenSSL 1.0.1(或更高版本)作为 SSL 后端时才支持 PSK 密码套件。

注意

目前只支持 OpenSSL 中的 PSK。

另请参阅

QSslSocket

__init__()#

构造一个默认的 QSslPreSharedKeyAuthenticator 对象。

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

__init__(authenticator)
参数:

authenticatorQSslPreSharedKeyAuthenticator

authenticator 作为副本构造 QSslPreSharedKeyAuthenticator 对象。

另请参阅

operator=()

identity()#
返回类型:

QByteArray

返回 PSK 客户端身份。

另请参阅

setIdentity()

identityHint()#
返回类型:

QByteArray

返回 PSK 身份提示,由服务器提供。此提示的解释留给了应用程序。

maximumIdentityLength()#
返回类型:

int

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

注意

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

另请参阅

setIdentity()

maximumPreSharedKeyLength()#
返回类型:

int

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

注意

可以设置长度大于最大预共享密钥长度的密钥;在这种情况下,实际发送到服务器的将是最大预共享密钥长度

另请参阅

setPreSharedKey()

__ne__(rhs)#
参数:

rhsQSslPreSharedKeyAuthenticator

返回类型:

bool

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

__eq__(rhs)#
参数:

rhsQSslPreSharedKeyAuthenticator

返回类型:

bool

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

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

preSharedKey()#
返回类型:

QByteArray

返回预共享密钥。

另请参阅

setPreSharedKey()

setIdentity(identity)#
参数:

identityQByteArray

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

注意

可以设置长度大于 maximumIdentityLength() 的身份;在这种情况下,只有前 maximumIdentityLength() 字节将被发送到服务器。

setPreSharedKey(preSharedKey)#
参数:

preSharedKeyQByteArray

将预共享密钥设为 preSharedKey

注意

可以设置长度大于 maximumPreSharedKeyLength() 的密钥;在这种情况下,只有前 maximumPreSharedKeyLength() 字节将被发送到服务器。

swap(other)#
参数:

otherQSslPreSharedKeyAuthenticator

交换 QSslPreSharedKeyAuthenticator 对象 authenticator 与此对象。这个操作非常快且永远不会失败。