Groupe de travail Réseau	N. Williams, Sun	
Request for Comments: 5587	juillet 2009	
Catégorie : Sur la voie de la normalisation 	Traduction Claude Brière de L'Isle	

API étendues d'interrogation de mécanisme générique de service de sécurité (GSS-API)

Résumé
Le présent document introduit de nouvelles interface de programmation d'application (API, Application Programming Interface) à l'API générique de services de sécurité (GSS-API, Generic Security Services API) pour des interrogations étendues d'attributs de mécanisme. Ces interfaces sont principalement destinées à réduire les instances d'incorporation d'identifiants de mécanismes dans les applications de GSS.

Ces interfaces incluent des attributs de mécanismes et des ensembles d'attributs, une fonction pour enquêter sur les attributs d'un mécanisme, une fonction pour indiquer les mécanismes qui possèdent des attributs donnés, et une fonction pour afficher les attributs de mécanisme.

Statut du présent mémoire
Le présent document spécifie un protocole de l’Internet sur la voie de la normalisation pour la communauté de l’Internet, et appelle à des discussions et suggestions pour son amélioration. Prière de se référer à l’édition en cours des "Protocoles officiels de l’Internet" (STD 1) pour voir l’état de normalisation et le statut de ce protocole. La distribution du présent mémoire n’est soumise à aucune restriction.

Notice de droits de reproduction
Copyright (c) 2009 IETF Trust et les personnes identifiées comme auteurs du document. Tous droits réservés.

Le présent document est soumis au BCP 78 et aux dispositions légales de l’IETF Trust qui se rapportent aux documents de l’IETF (http://trustee.ietf.org/license-info) en vigueur à la date de publication de ce document. Prière de revoir ces documents avec attention, car ils décrivent vos droits et obligations par rapport à ce document. 
Table des matières
1. Introduction	1
2. Conventions utilisées dans le document	2
3. Nouvelles interfaces GSS-API	2
3.1 Attributs de mécanisme et ensembles d'attributs	2
3.2 Liste des attributs de mécanisme connus	2
3.3 Ensembles d'attributs de mécanisme des mécanismes existants	3
3.4 Nouvelles interfaces de fonction GSS-API	4
4. Exigences pour les concepteurs de mécanismes	7
5. Considérations relatives à l'IANA	7
6. Considérations sur la sécurité	7
7. Références	7
7.1 Références normatives	7
7.2 Références pour information	8
Appendice A. Typedefs et liens C	8
Adresse de l'auteur	9

 	1.	Introduction

Les mécanismes GSS-API [RFC2743] ont un certain nombre de propriétés qui peuvent être intéressantes pour les applications. Le manque d'API pour interroger sur les propriétés des mécanismes disponibles a signifié que de nombreuses applications GSS-API doivent incorporer les identifiants d'objet (OID, Object Identifier) de mécanisme. Les travaux en cours peuvent résulter en divers nouveaux mécanismes de GSS-API. Les applications ne devraient pas avoir à incorporer leurs OID.

Par exemple, le protocole Secure Shell version 2 (SSHv2) [RFC4251] prend en charge l'utilisation de mécanismes GSS-API pour l'authentification [RFC4462] mais interdit explicitement l'utilisation de la négociation simple et protégée de GSS-API (SPNEGO, Simple and Protected GSS-API Negotiation) [RFC4178]. De futurs mécanismes qui négocient les mécanismes devraient être aussi interdits, mais il n'y a pas de moyen de mettre en œuvre des applications qui enquêtent sur les mécanismes disponibles et ensuite excluent programmatiquement les mécanismes "comme SPNEGO".

 	2.	Conventions utilisées dans le document

Les mots clés "DOIT", "NE DOIT PAS", "EXIGE", "DEVRA", "NE DEVRA PAS", "DEVRAIT", "NE DEVRAIT PAS", "RECOMMANDE", "PEUT", et "FACULTATIF" en majuscules dans ce document sont à interpréter comme décrit dans le BCP 14, [RFC2119].

 	3.	Nouvelles interfaces GSS-API

On introduit un nouveau concept -- celui d'attributs de mécanisme. En permettant aux applications d'interroger l'ensemble d'attributs associés aux mécanismes individuels et de trouver quels mécanismes prennent en charge un ensemble donné d'attributs, on permet aux applications de choisir les mécanismes sur la base de leurs attributs sans avoir à incorporer les OID de mécanisme.

Le paragraphe 3.1 décrit le concept d'attributs de mécanisme. Les paragraphes 3.4.2, 3.4.3, et 3.4.4 décrivent trois nouvelles interfaces qui traitent des ensembles de mécanismes et d'attributs :
o	GSS_Indicate_mechs_by_attrs()
o	GSS_Inquire_attrs_for_mech()
o	GSS_Display_mech_attr()

 	3.1	Attributs de mécanisme et ensembles d'attributs
Une abstraction pour les caractéristiques fournies par les mécanismes et pseudo-mécanismes est nécessaire afin de faciliter le choix programmatique des mécanismes. Les pseudo-mécanismes sont des mécanismes qui font référence à d'autres mécanismes afin de fournir leurs services. Par exemple, SPNEGO est un pseudo-mécanisme, car sans d'autres mécanismes SPNEGO est inutile.

Deux types de données sont nécessaires : un pour les attributs de mécanisme individuels et un pour les ensembles d'attributs de mécanisme. Pour simplifier les interfaces d'attribut de mécanisme, on réutilise les types de données "OID" et "ensemble d'OID" et on modélise les types individuels d'attribut de mécanisme comme des OID.

À cette fin, on définit un espace de noms ouvert des attributs de mécanisme et on leur alloue des arcs dans cet OID :

<1.3.6.1.5.5.13>

Chaque mécanisme a un ensemble d'attributs de mécanisme qui le prend en charge comme décrit dans la présente spécification.

 	3.2	Liste des attributs de mécanisme connus
Nom d'attribut de mécanisme	Arc d'OID	Nom d'arc
GSS_C_MA_MECH_CONCRETE	(1)	concrete-mech
GSS_C_MA_MECH_PSEUDO	(2)	pseudo-mech
GSS_C_MA_MECH_COMPOSITE	(3)	composite-mech
GSS_C_MA_MECH_NEGO	(4)	mech-negotiation-mech
GSS_C_MA_MECH_GLUE	(5)	mech-glue
GSS_C_MA_NOT_MECH	(6)	not-mech
GSS_C_MA_DEPRECATED	(7)	mech-deprecated
GSS_C_MA_NOT_DFLT_MECH	(8)	mech-not-default
GSS_C_MA_ITOK_FRAMED	(9)	initial-is-framed
GSS_C_MA_AUTH_INIT	(10)	auth-init-princ
GSS_C_MA_AUTH_TARG	(11)	auth-targ-princ
GSS_C_MA_AUTH_INIT_INIT	(12)	auth-init-princ-initial
GSS_C_MA_AUTH_TARG_INIT	(13)	auth-targ-princ-initial
GSS_C_MA_AUTH_INIT_ANON	(14)	auth-init-princ-anon
GSS_C_MA_AUTH_TARG_ANON	(15)	auth-targ-princ-anon
GSS_C_MA_DELEG_CRED	(16)	deleg-cred
GSS_C_MA_INTEG_PROT	(17)	integ-prot
GSS_C_MA_CONF_PROT	(18)	conf-prot
GSS_C_MA_MIC	(19)	mic
GSS_C_MA_WRAP	(20)	wrap
GSS_C_MA_PROT_READY	(21)	prot-ready
GSS_C_MA_REPLAY_DET	(22)	replay-detection
GSS_C_MA_OOS_DET	(23)	oos-detection
GSS_C_MA_CBINDINGS	(24)	channel-bindings
GSS_C_MA_PFS	(25)	pfs
GSS_C_MA_COMPRESS	(26)	compress
GSS_C_MA_CTX_TRANS	(27)	context-transfer
<réservé>	(28...)	

Tableau 1

Nom d'attribut de mécanisme	Objet
GSS_C_MA_MECH_CONCRETE	Indique qu'un mécanisme n'est ni un pseudo-mécanisme ni un mécanisme composite.
GSS_C_MA_MECH_PSEUDO	Indique qu'un mécanisme est un pseudo-mécanisme.
GSS_C_MA_MECH_COMPOSITE	Indique qu'un mécanisme est un composite d'autres mécanismes. C'est réservé pour une spécification de pseudo-mécanismes "empilables".
GSS_C_MA_MECH_NEGO	Indique qu'un mécanisme négocie d'autres mécanismes (par exemple, SPNEGO a cet attribut).
GSS_C_MA_MECH_GLUE	Indique que l'OID n'est pas pour un mécanisme mais pour la GSS-API elle-même.
GSS_C_MA_NOT_MECH	Indique que l'OID est connu, et il est aussi connu pour n'être pas l'OID d'un mécanisme de GSS-API (ou de la GSS-API elle-même).
GSS_C_MA_DEPRECATED	Indique qu'un mécanisme (ou son OID) est déconseillé et NE DOIT PAS être utilisé comme mécanisme par défaut.
GSS_C_MA_NOT_DFLT_MECH	Indique qu'un mécanisme (ou son OID) NE DOIT PAS être utilisé comme mécanisme par défaut.
GSS_C_MA_ITOK_FRAMED	Indique que les jetons de contexte initial d'un mécanisme donné sont tramés conformément au paragraphe 3.1 de la [RFC2743].
GSS_C_MA_AUTH_INIT	Indique la prise en charge de l'authentification de initiateur par l'accepteur.
GSS_C_MA_AUTH_TARG	Indique la prise en charge de l'authentification de l'accepteur par l'initiateur.
GSS_C_MA_AUTH_INIT_INIT	Indique la prise en charge de l'authentification "initiale" de l'initiateur chez l'accepteur. "Authentification initiale" se réfère à l'utilisation de mots de passe, ou de clés mémorisées sur des jetons, pour l'authentification. Si un mécanisme prend en charge l'authentification initiale peut dépendre du consensus de l'IETF (voir les considérations sur la sécurité).
GSS_C_MA_AUTH_TARG_INIT	Indique la prise en charge de l'authentification initiale de l'accepteur chez l'initiateur.
GSS_C_MA_AUTH_INIT_ANON	Indique la prise en charge de GSS_C_NT_ANONYMOUS comme nom principal d'initiateur.
GSS_C_MA_AUTH_TARG_ANON	Indique la prise en charge de GSS_C_NT_ANONYMOUS comme nom de cible principale.
GSS_C_MA_DELEG_CRED	Indique la prise en charge de la délégation d'accréditifs.
GSS_C_MA_INTEG_PROT	Indique la prise en charge de la protection de l'intégrité par message.
GSS_C_MA_CONF_PROT	Indique la prise en charge de la protection de la confidentialité par message.
GSS_C_MA_MIC 	Indique la prise en charge des jetons de code d'intégrité de message (MIC).
GSS_C_MA_WRAP	Indique la prise en charge des jetons WRAP.
GSS_C_MA_PROT_READY	Indique la prise en charge de la protection par message avant le plein établissement de contexte.
GSS_C_MA_REPLAY_DET	Indique la prise en charge de la détection de répétition.
GSS_C_MA_OOS_DET	Indique la prise en charge de la détection de hors séquence.
GSS_C_MA_CBINDINGS	Indique la prise en charge des liens de canal.
GSS_C_MA_PFS	Indique la prise en charge de la sécurité parfaite de transmission.
GSS_C_MA_COMPRESS	Indique la prise en charge de la compression des entrées de données à GSS_Wrap().
GSS_C_MA_CTX_TRANS	Indique la prise en charge de l'export/import de contexte de sécurité.

Tableau 2

 	3.3	Ensembles d'attributs de mécanisme des mécanismes existants
Le mécanisme Kerberos V [RFC1964] fournit les attributs de mécanisme suivants :
o  GSS_C_MA_MECH_CONCRETE
o  GSS_C_MA_ITOK_FRAMED
o  GSS_C_MA_AUTH_INIT
o  GSS_C_MA_AUTH_TARG
o  GSS_C_MA_DELEG_CRED
o  GSS_C_MA_INTEG_PROT
o  GSS_C_MA_CONF_PROT
o  GSS_C_MA_MIC
o  GSS_C_MA_WRAP
o  GSS_C_MA_PROT_READY
o  GSS_C_MA_REPLAY_DET
o  GSS_C_MA_OOS_DET
o  GSS_C_MA_CBINDINGS
o  GSS_C_MA_CTX_TRANS (certaines mises en œuvre, qui utilisent des formats de jeton de contexte exportés spécifiques de la mise en œuvre)

Le mécanisme Kerberos V a aussi un OID déconseillé qui a les mêmes attributs de mécanisme que ci-dessus ainsi que GSS_C_MA_DEPRECATED.

Les attributs de mécanisme de la famille de mécanismes simples de clé publique GSS-API (SPKM, Simple Public-Key GSS-API Mechanism) [RFC2025] vont être fournis dans un document séparé, car SPKM est actuellement revu pour des changements éventuellement significatifs à cause de problèmes dans sa spécification.

Le mécanisme de clé publique à infrastructure basse (LIPKEY, Low Infrastructure Public Key) [RFC2847] offre les attributs suivants :
o  GSS_C_MA_MECH_CONCRETE
o  GSS_C_MA_ITOK_FRAMED
o  GSS_C_MA_AUTH_INIT_INIT
o  GSS_C_MA_AUTH_TARG (de SPKM-3)
o  GSS_C_MA_AUTH_TARG_ANON (de SPKM-3)
o  GSS_C_MA_INTEG_PROT
o  GSS_C_MA_CONF_PROT
o  GSS_C_MA_REPLAY_DET
o  GSS_C_MA_OOS_DET
o  GSS_C_MA_CTX_TRANS (certaines mises en œuvre, qui utilisent des formats de jeton de contexte exportés spécifiques de la mise en œuvre)

(LIPKEY devrait aussi fournir GSS_C_MA_CBINDINGS, mais SPKM-3 a besoin de préciser ce point.)

Le mécanisme SPNEGO [RFC4178] fournit les attributs suivants :
o  GSS_C_MA_MECH_NEGO
o  GSS_C_MA_ITOK_FRAMED

Tous les autres attributs de mécanismes vont être décrits ailleurs.

 	3.4	Nouvelles interfaces de fonction GSS-API
Plusieurs nouvelles interfaces sont données par lesquelles, par exemple, les applications GSS-API peuvent déterminer quelles caractéristiques sont fournies par un certain mécanisme et quels mécanismes fournissent quelles caractéristiques.

Ces nouvelles interfaces sont toutes FACULTATIVES.

Les applications devraient utiliser GSS_Indicate_mechs_by_attrs() au lieu de GSS_Indicate_mechs() chaque fois que possible.

Les applications peuvent utiliser GSS_Indicate_mechs_by_attrs() pour déterminer quels mécanismes, si il en est, fournissent un certain ensemble de caractéristiques.

GSS_Indicate_mechs_by_attrs() peut aussi être utilisé pour indiquer (comme dans GSS_Indicate_mechs()) l'ensemble de mécanismes disponibles de chaque type (concret, pseudo-mécanisme de négociation de mécanisme, etc.).

 	3.4.1	Criticité d'attribut de mécanisme
Des attributs de mécanisme peuvent être ajoutés à tout moment. Non seulement des attributs peuvent être ajoutés à la liste des attributs de mécanisme connus à tout moment, mais l'ensemble des attributs de mécanisme pris en charge par un mécanisme peut être changé à tout moment.

Par exemple, de nouveaux attributs pourraient être ajoutés pour refléter si l'initiateur d'un mécanisme doit contacter une infrastructure en ligne et/ou si l'accepteur doit le faire. Dans cet exemple, le mécanisme Kerberos V gagnerait un nouvel attribut même si le mécanisme lui-même n'est pas modifié.

Les applications qui utilisent des attributs non définis ici n'auront alors aucun moyen de savoir si une mise en œuvre de GSS-API et ses mécanismes connaissent les nouveaux attributs de mécanisme. Pour traiter ce problème, GSS_Indicate_mechs_by_attrs() et GSS_Inquire_attrs_for_mech() prennent en charge une notion d'attributs de mécanisme critiques. Les applications peuvent chercher des mécanismes comprenant les attributs de mécanisme qui sont critiques pour l'application, et l'application peut demander quels attributs de mécanisme sont compris par un mécanisme donné.

 	3.4.2	GSS_Indicate_mechs_by_attrs()
Entrées :
o	ENSEMBLE D'IDENTIFIANTS D'OBJET desired_mech_attrs -- ensemble d'OID GSS_C_MA_* que les mécanismes indiqués dans le paramètre de résultat de mécanisme DOIVENT offrir.
o	ENSEMBLE D'IDENTIFIANTS D'OBJET except_mech_attrs -- ensemble d'OID GSS_C_MA_* que les mécanismes indiqués dans le paramètre de résultat de mécanisme NE DOIVENT PAS offrir.
o	ENSEMBLE D'IDENTIFIANTS D'OBJET critical_mech_attrs -- ensemble d'OID GSS_C_MA_* que les mécanismes indiqués dans le paramètre de résultat de mécanisme DOIVENT comprendre (c'est-à-dire, les mécanismes doivent savoir si les attributs critiques sont ou non pris en charge).

Résultats :
o	major_status ENTIER
o	minor_status ENTIER
o	ENSEMBLE D'IDENTIFIANTS D'OBJET mechs -- ensemble de mécanismes qui prennent en charge les desired_mech_attrs donnés mais pas les except_mech_attrs, et qui tous comprennent les critical_mech_attrs donnés (l'appelant doit livrer ce résultat avec GSS_Release_oid_set()).

Codes major_status de retour :
o	GSS_S_COMPLETE indique le succès ; le paramètre mechs de résultat PEUT être l'ensemble vide (GSS_C_NO_OID_SET).
o	GSS_S_FAILURE indique que la demande a échoué pour une autre raison.

GSS_Indicate_mechs_by_attrs() retourne l'ensemble des OID correspondant aux mécanismes qui offrent au moins les desired_mech_attrs mais aucun des except_mech_attrs, et qui comprennent tous les attributs mentionnés dans critical_mech_attrs.

Quand les trois ensembles de paramètres d'entrée d'OID sont l'ensemble vide, cette fonction agit comme une version de GSS_indicate_mechs() qui donne en résultat l'ensemble de tous les mécanismes pris en charge.

 	3.4.3	GSS_Inquire_attrs_for_mech()
Entrées :
o	IDENTIFIANT D'OBJET mech -- OID de mécanisme

Résultats :
o	major_status ENTIER
o	minor_status ENTIER
o	ENSEMBLE D'IDENTIFIANTS D'OBJET mech_attrs -- ensemble des OID mech_attrs (GSS_C_MA_*) pris en charge par le mécanisme (l'appelant doit livrer ce résultat avec GSS_Release_oid_set()).
o	ENSEMBLE D'IDENTIFIANTS D'OBJET known_mech_attrs -- ensemble des OID mech_attrs connus de la mise en œuvre de mécanisme (l'appelant doit livrer ce résultat avec GSS_Release_oid_set()).

Codes major_status de retour :
o	GSS_S_COMPLETE indique le succès ; le paramètre mech_attrs de résultat PEUT être l'ensemble vide (GSS_C_NO_OID_SET).
o	GSS_S_BAD_MECH indique que le mécanisme désigné par le paramètre mech n'existe pas ou que le mech est GSS_C_NO_OID et qu'aucun mécanisme par défaut ne pourrait être déterminé.
o	GSS_S_FAILURE indique que la demande a échoué pour une autre raison.

GSS_Inquire_attrs_for_mech() indique l'ensemble d'attributs de mécanisme pris en charge par un mécanisme donné.

 	3.4.4	GSS_Display_mech_attr()
Entrées :
o	IDENTIFIANT D'OBJET mech_attr -- OID d'attribut de mécanisme 

Résultats :
o	major_status ENTIER
o	minor_status ENTIER
o	CHAINE D'OCTETS name, -- nom de l'attribut de mécanisme (par exemple, GSS_C_MA_*).
o	CHAINE D'OCTETS short_desc, -- brève description de l'attribut de mécanisme (l'appelant doit livrer ce résultat avec GSS_Release_buffer()).
o	CHAINE D'OCTETS long_desc -- plus longue description de l'attribut de mécanisme (l'appelant doit livrer ce résultat avec GSS_Release_buffer()).

Codes major_status de retour :
o	GSS_S_COMPLETE indique le succès.
o	GSS_S_BAD_MECH_ATTR indique que l'attribut de mécanisme référencé par le paramètre mech_attr est inconnu de la mise en œuvre.
o	GSS_S_FAILURE indique que la demande a échoué pour une autre raison.

Cette fonction peut être utilisée pour obtenir des descriptions lisibles par l'homme des attributs de mécanisme GSS-API.

 	3.4.5	Nouvelles valeurs d'état majeures
Un seul nouveau code major status est ajouté pour GSS_Display_mech_attr() :
o	GSS_S_BAD_MECH_ATTR,

qui correspond en gros à GSS_S_BAD_MECH mais est applicable aux OID d'attribut de mécanisme plutôt qu'aux OID de mécanisme.

Pour les liens C de GSS-API [RFC2744], GSS_S_BAD_MECH_ATTR devra avoir un numéro d'erreur de programme de 19 (ceci est glissé à la gauche par GSS_C_ROUTINE_ERROR_OFFSET).

 	3.4.6	C-Bindings
Noter qu'il y a une erreur dans les liens C de la GSS-APIv2u1 [RFC2744] en ce que l'attribut C "const" est appliqué aux types qui sont le pointeur de typedefs. C'est une erreur parce que elle déclare que l'argument de pointeur est "const" alors que l'objet qu'il pointe est "const". Pour éviter cette erreur, on définit ici un nouveau typedefs, qui inclut "const" correctement :

typedef const gss_buffer_desc * gss_const_buffer_t;
typedef const struct gss_channel_bindings_struct * gss_const_channel_bindings_t;
typedef const <platform-specific> gss_const_ctx_id_t;
typedef const <platform-specific> gss_const_cred_id_t;
typedef const <platform-specific> gss_const_name_t;
typedef const gss_OID_desc * gss_const_OID;
typedef const gss_OID_set_desc * gss_const_OID_set;

Figure 1 : typedefs const

Noter que seuls gss_const_OID et gss_const_OID_set sont utilisés ci-dessous. On inclut les autres typedefs const par facilité car les liens C de la GSS-API utilisent bien const avec le pointeur typedefs quand il devrait souvent utiliser plutôt le typedefs ci-dessus.

#définir GSS_S_BAD_MECH_ATTR (19ul << GSS_C_ROUTINE_ERROR_OFFSET)

      OM_uint32 gss_indicate_mechs_by_attrs(
         OM_uint32         *minor_status,
         gss_const_OID_set  desired_mech_attrs,
         gss_const_OID_set  except_mech_attrs,
         gss_const_OID_set  critical_mech_attrs,
         gss_OID_set       *mechs);

      OM_uint32 gss_inquire_attrs_for_mech(
         OM_uint32         *minor_status,
         gss_const_OID      mech,
         gss_OID_set       *mech_attrs,
         gss_OID_set       *known_mech_attrs);

      OM_uint32 gss_display_mech_attr(
         OM_uint32         *minor_status,
         gss_const_OID      mech_attr,
         gss_buffer_t       name,
         gss_buffer_t       short_desc,
         gss_buffer_t       long_desc);

Figure 2 : Liens C

Noter que les mémoires tampons doivent être livrées via gss_release_buffer(). Les ensembles d'OID de résultats doivent être livrés via gss_release_oid_set().

Voir à l'Appendice A un ensemble complet de fragments typedef définis dans ce document et la licence de code nécessaire.

 	4.	Exigences pour les concepteurs de mécanismes

Toutes les futures spécifications de mécanisme GSS-API DOIVENT faire la liste de l'ensemble des attributs de mécanisme GSS-API qui leur sont associés.

 	5.	Considérations relatives à l'IANA

L'espace de noms des symboles de langage de programmation avec des noms commençant par GSS_C_MA_* est réservé pour allocation par consensus de l'IETF. L'IANA a alloué un OID de base, comme un arc de 1.3.6.1.5.5, pour l'ensemble de GSS_C_MA_* décrit ici, et a enregistré toutes les valeurs de GSS_C_MA_* décrites au paragraphe 3.2.

 	6.	Considérations sur la sécurité

Le présent document spécifie des extensions à une API relative à la sécurité. Il impose de nouvelles exigences aux futurs mécanismes de GSS-API, et les spécifications des futurs protocoles qui utilisent la GSS-API devraient faire référence au présent document lorsque applicable. La capacité d'enquêter sur les propriétés spécifiques des mécanismes devrait améliorer la sécurité.

La sémantique de chaque attribut de mécanisme peut inclure un composant de sécurité.

Les développeurs d'application doivent comprendre que les attributs de mécanisme peuvent être ajoutés à tout moment -- à la fois à l'ensemble des attributs de mécanisme connus et aux ensembles de mécanismes existants d'attributs de mécanisme pris en charge. Donc, les développeurs d'application qui utilisent les API décrites ici doivent comprendre de quels attributs de mécanisme leurs applications dépendent de façon critique, et doivent utiliser les caractéristiques de criticité de l'attribut de mécanisme de ces API.

 	7.	Références
 	7.1	Références normatives

[RFC2119]	S. Bradner, "Mots clés à utiliser dans les RFC pour indiquer les niveaux d'exigence", BCP 14, mars 1997. DOI 10.17487/RFC2119, (MàJ par RFC8174)

[RFC2743]	J. Linn, "Interface générique de programme d’application de service de sécurité, version 2, mise à jour 1", janvier 2000. (MàJ par RFC5554)

[RFC2744]	J. Wray, "API de service générique de sécurité, version 2 : liaisons C", janvier 2000. (P.S.)

 	7.2	Références pour information

[RFC1964]	J. Linn, "Mécanisme GSS-API de Kerberos version 5", juin 1996. (MàJ par RFC4121 et RFC6649)

[RFC2025]	C. Adams, "Mécanisme simple de GSS-API à clé publique (SPKM)", octobre 1996. (P.S.)

[RFC2847]	M. Eisler, "LIPKEY – mécanisme de clé publique à infrastructure basse utilisant SPKM", juin 2000. (P.S.)

[RFC4178]	L. Zhu et autres, "Mécanisme de négociation de l'interface de programme d'application de service générique de sécurité (GSS-API) simple et protégé", octobre 2005. (Remplace RFC2478) (P.S.)

[RFC4251]	T. Ylonen et C. Lonvick, "Architecture du protocole Secure Shell (SSH)", janvier 2006. (P.S. ; MàJ par RFC8308)

[RFC4462]	J. Hutzelman et autres, "Authentification et échange de clés d'interface de programme d'application de service de sécurité générique (GSS-API) pour le protocole Secure Shell (SSH)", mai 2006. (P.S. ; MàJ par RFC8732, 9142)

 	Appendice A.	Typedefs et C Bindings

Cet appendice contient l'ensemble complet de fragments de code définis dans ce document.

Copyright (c) 2009 IETF Trust et les personnes identifiées comme auteurs du code. Tous droits réservés.

La redistribution et l'utilisation en forme source et binaire, avec ou sans modification, sont permises pourvu que les conditions suivantes soient satisfaites :
o	Les redistributions de code source doivent conserver la notice de droits de reproduction ci-dessus, cette liste de conditions et le déclinatoire de responsabilité qui suit.
o	Les redistributions en forme binaire doivent reproduire la notice de droits de reproduction ci-dessus, cette liste de conditions et le déclinatoire de responsabilité qui suit dans la documentation et/ou autres matériaux fournis avec la distribution.
o	Ni le nom de la Internet Society, de l'IETF ou de l'IETF Trust, ni les noms des contributeurs spécifiques, ne peuvent être utilisés pour avaliser ou promouvoir des produits dérivés de ce logiciel sans permission écrite spécifique préalable.

Ce logiciel est fourni par les détenteurs du droit de reproduction et les contributeurs "TEL QUEL" et toutes garanties expresses ou implicites, incluant, sans s'y limiter, les garanties implicites de commercialisabilité et de convenance à un objet particulier sont déclinées. En aucun cas les détenteurs du droit de reproduction et les contributeurs ne seront responsables de dommages directs, indirects, incidents, spéciaux, exemplaires, ou consécutifs (incluant, sans s'y limiter, la fourniture de biens ou services de substitution, perte d'usage, données, ou profits, ou interruption d'affaires) cependant causés, et aucune théorie de responsabilité, contractuelle, stricte, ou pour tort (incluant la négligence ou autrement) survenant d'une façon quelconque de l'utilisation de ce logiciel, même si on est avisé de la possibilité de tels dommages.

   typedef const gss_buffer_desc * gss_const_buffer_t;
   typedef const struct gss_channel_bindings_struct * gss_const_channel_bindings_t;
   typedef const <platform-specific> gss_const_ctx_id_t;
   typedef const <platform-specific> gss_const_cred_id_t;
   typedef const <platform-specific> gss_const_name_t;
   typedef const gss_OID_desc * gss_const_OID;
   typedef const gss_OID_set_desc * gss_const_OID_set;

   #define GSS_S_BAD_MECH_ATTR (19ul << GSS_C_ROUTINE_ERROR_OFFSET)

   OM_uint32 gss_indicate_mechs_by_attrs(
      OM_uint32         *minor_status,
      gss_const_OID_set  desired_mech_attrs,
      gss_const_OID_set  except_mech_attrs,
      gss_const_OID_set  critical_mech_attrs,
      gss_OID_set       *mechs);

   OM_uint32 gss_inquire_attrs_for_mech(
      OM_uint32         *minor_status,
      gss_const_OID      mech,
      gss_OID_set       *mech_attrs,
      gss_OID_set       *known_mech_attrs);

   OM_uint32 gss_display_mech_attr(
      OM_uint32         *minor_status,
      gss_const_OID      mech_attr,
      gss_buffer_t       name,
      gss_buffer_t       short_desc,
      gss_buffer_t       long_desc);

 	Adresse de l'auteur

Nicolas Williams
Sun Microsystems
5300 Riata Trace Ct
Austin, TX  78727
US

mél : Nicolas.Williams@sun.com