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