虚拟方法
GioTlsConnectionhandshake
自:2.28
声明 [src]
gboolean
handshake (
GTlsConnection* conn,
GCancellable* cancellable,
GError** error
)
描述 [src]
尝试在conn
上执行TLS
握手。
在客户端,从不必要调用此方法;尽管在连接后需要执行握手(或发送“STARTTLS”类型命令后),但在尝试在连接上发送或接收数据时,GTlsConnection
会自动为您处理此操作。如果您想手动知道最初的握手是否成功或失败(与立即尝试使用conn
进行读取或写入相反,在这种情况下,如果它失败,可能无法判断是在握手之前还是之后失败),但请注意,服务器可能在接受握手后拒绝客户端验证,因此成功的握手并不表示连接可以
类似地,在服务器端,虽然在通信开始时需要进行握手,但除非您想要更清晰的错误报告,否则不需要显式调用此函数。
以前,在初始握手后调用g_tls_connection_handshake()
将触发重新握手;然而,由于从TLS 1.3的TLS协议中删除了重新握手,因此这种用法在GLib 2.60中被弃用。从GLib 2.64开始,在初始握手后调用此函数将不再执行任何操作。
当使用由GSocketClient
创建的GTlsConnection
时,GSocketClient
执行初始握手,因此不建议手动调用此函数。
在握手过程中可能会触发GTlsConnection::accept_certificate
。
自:2.28
参数
cancellable
-
类型:
GCancellable
A
GCancellable
,或NULL
。该参数可以为 NULL
。数据归方法调用者所有。 error
-
类型:
GError **
恢复错误的返回位置。
该参数可以为 NULL
。如果返回位置不是 NULL
,则必须将其初始化为零个GError
。如果没有错误,则虚拟函数将初始化该参数为零个 GError
。在出现错误的情况下,如果有的话,该参数将被设置为新分配的 GError
;调用者将获取数据的所有权,并负责释放它。