方法

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

GCancellableNULL

此参数可以是 NULL
数据由方法调用者拥有。
error

类型: GError **

用于恢复性错误的返回位置。

此参数可以是 NULL
如果返回位置不是 NULL,则必须将其初始化为 NULLGError*
如果没有错误,方法将保留初始化参数为 NULL
出现错误时,参数将被设置为新分配的 GError;调用者将获得数据的管理权,并负责释放它。

返回值

类型: gboolean

成功或失败。