接続が確立されたあと、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 は、GSS-API 関数 gss_init_sec_context() から返される任意のフラグを表す int です。
client_establish_context() は次のタスクを実行します。
サービス名を GSS-API 内部形式に変換します
セキュリティーコンテキストが完了するまで、クライアントとサーバー間のトークン交換ループを実行します