建立连接之后,call_server() 会使用 client_establish_context() 函数来创建安全上下文,如下所示:
if (client_establish_context(s, service-name, deleg-flag, oid, &context, &ret-flags) < 0) { (void) close(s); return -1; }
s 是一个文件描述符,表示通过 connect_to_server() 建立的连接。
service-name 是所请求的网络服务。
deleg-flag 用于指定服务器是否可以充当客户机的代理。
oid 表示机制。
context 是要创建的上下文。
ret-flags 是一个 int,用于指定 GSS-API 函数 gss_init_sec_context() 所返回的任何标志。
client_establish_context() 执行以下任务:
将服务名称转换为 GSSAPI 内部格式
在客户机和服务器之间循环执行令牌交换,直到建立完整的安全上下文为止