コンテキストは、rpc_gss_seccreate() 呼び出しを使用して作成します。この関数では引数として、セッションの、クライアントハンドル (たとえば clnt_create() によって戻されたもの) , サーバーの主体名 (nfs@machine.eng.company.com)、メカニズム、サービスタイプ、および QOPと、使用される場合はほとんどの場合不透明なまま使用される 2 つの GSS-API パラメータをとります。この関数で、AUTH 認証ハンドルを返します。以下のコードフラグメントは、Kerberos v5 セキュリティメカニズムと完全性サービスを使用したコンテキストを作成する場合、rpc_gss_seccreate() がどのように使用されるかを示しています。
CLIENT *clnt; /* クライアントハンドル */ char server_host[] = "foo"; char service_name[] = "nfs@machine.eng.company.com"; char mech[] = "kerberosv5"; clnt = clnt_create(server_host, SERVER_PROG, SERV_VERS, "netpath"); clnt->clnt_auth = rpc_gss_seccreate(clnt, service_name, mech, ¥ rpc_gss_svc_integrity, NULL, NULL, NULL); . . . |
この例では、注意する点が数カ所あります。まず、メカニズムは明示的に宣言してありますが (読みやすくするために)、通常は、rpc_gss_get_mechanisms() 用いて、使用できるメカニズムの表から入手します。QOP にも同様のことが言えます。 ここでは、最初の NULL を渡しています。これは、QOP をこのメカニズムのデフォルトに設定するものです。次に、サービスタイプは、RPCSEC_GSS タイプの enum のひとつである rpc_gss_service_t です。最後に、末尾の 2 つの NULL 引数は、不透明な GSS-API オプション用で、プログラマは安全に NULL を値として渡すことができます。