Les contextes sont créés au moyen de l'appel rpc_gss_seccreate(). Voici les arguments de cette fonction :
Un identificateur de client (renvoyé, par exemple, par clnt_create())
Le nom du principal du serveur (par exemple, nfs@acme.com)
Le mécanisme (par exemple, Kerberos V5) pour la session
Le type de service de sécurité (par exemple, confidentialité)
La qualité de protection pour la session
Deux paramètres d'API GSS pouvant demeurer opaques pour la majorité des utilisations (le programmeur peut fournir des valeurs NULLES)
Cette fonction renvoie un identificateur d'authentification AUTH. Exemple 8-1 illustre la façon dont rpc_gss_seccreate() peut servir à créer un contexte au moyen du mécanisme de sécurité Kerberos V5 et du service d'intégrité :
CLIENT *clnt; /* client handle */
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);
. . .
Remarques à propos de Exemple 8-1 :
Bien que le mécanisme ait été déclaré explicitement (pour faciliter la lecture), il serait normalement obtenu par programme au moyen de rpc_gss_get_mechanisms() à partir d'une table de mécanismes disponibles.
La qualité de protection est transmise comme NULL, ce qui la règle à la valeur par défaut de ce mécanisme. Autrement, une valeur valide pourrait, comme pour le mécanisme, être obtenue par programme avec rpc_gss_get_mechanisms(). Pour de plus amples renseignements, consultez la page de manuel rpc_gss_get_mechanisms(3N).
Le type de service de sécurité, rpc_gss_svc_integrity, est un enum du type RPCSEC_GSS rpc_gss_service_t. rpc_gss_service_t a le format suivant :
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;
Le service de sécurité par défaut correspond à «intégrité», donc le programmeur pourrait spécifier rpc_gss_svc_default et ainsi obtenir le même résultat.
Pour de plus amples renseignements, consultez la page de manuel rpc_gss_seccreate(3N).