Kontexte werden mit dem Aufruf von rpc_gss_seccreate() erstellt. Diese Funktion verwendet folgende Argumente:
Einen Client-Zeiger (der z. B. zurückgegeben wurde von clnt_create())
Den Namen des Server-Hauptbenutzers (z. B. nfs@acme.com)
Den Mechanismus (z. B. Kerberos V5) für diese Sitzung
Den Typ des Sicherheits-Services (z. B. Vertraulichkeit)
Den QOP für die Sitzung
Zwei GSS-API-Parameter, die für die meisten Einsatzzwecke opak (nicht transparent) verbleiben können (d. h., der Programmierer kann NULL-Werte bereitstellen)
Zurückgegeben wird ein AUTH-Authentisierungszeiger. Beispiel 8-1 veranschaulicht, wie rpc_gss_seccreate() dazu verwendet werden kann, um einen Kontext mit dem Sicherheitsmechanismus und Integritäts-Service von Kerberos V5 zu erstellen:
CLIENT *clnt; /* Client-Zeiger */ char server_host[] = "foo"; char service_name[] = "nfs@eng.acme.com"; char mech[] = "kerberos_v5"; 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); . . .
Folgendes sollte für Beispiel 8-1 beachtet werden:
Obwohl der Mechanismus explizit deklariert wurde (zum einfacheren Verständnis), würde er wahrscheinlicher mit rpc_gss_get_mechanisms() aus einer Tabelle von verfügbaren Mechanismen abgerufen werden.
Dem QOP wird ein NULL übergeben, wodurch der QOP als Standardwert für diesen Mechanismus festgelegt wird. Andernfalls könnte ein gültiger Wert, wie beim Mechanismus, mit der Funktion rpc_gss_get_mechanisms() abgerufen werden. Weitere Informationen finden Sie in der Online-Dokumentation zu rpc_gss_get_mechanisms(3N).
Der Typ des Sicherheits-Services, rpc_gss_svc_integrity, stellt ein enum vom RPCSEC_GSS-Typ rpc_gss_service_t dar. rpc_gss_service_t besitzt das folgende Format:
typedef enum { rpc_gss_svc_default = 0, rpc_gss_svc_none = 1, rpc_gss_svc_integrity = 2, rpc_gss_svc_privacy = 3 } rpc_gss_service_t;
Der Standard-Service für die Sicherheit wird der Integrität zugeordnet, daher könnte der Programmierer rpc_gss_svc_default festgelegt und dasselbe Ergebnis erhalten haben.
Weitere Informationen finden Sie in der Online-Dokumentation zu rpc_gss_seccreate(3N).