Merge branch 'master' into lukeh/acquire-cred-ex-moonshot-integ
[heimdal.git] / doc / standardisation / draft-ietf-kitten-gssapi-naming-exts-00.txt
blobc6325ee78c08f72d0aa245da0a713e5374b3457b
1 Internet-Draft                                                       Sun
2 Expires: November 14, 2005                                  May 13, 2005
5                        GSS-API Naming Extensions
6               draft-ietf-kitten-gssapi-naming-exts-00.txt
8 Status of this Memo
10    By submitting this Internet-Draft, each author represents that any
11    applicable patent or other IPR claims of which he or she is aware
12    have been or will be disclosed, and any of which he or she becomes
13    aware will be disclosed, in accordance with Section 6 of BCP 79.
15    Internet-Drafts are working documents of the Internet Engineering
16    Task Force (IETF), its areas, and its working groups.  Note that
17    other groups may also distribute working documents as Internet-
18    Drafts.
20    Internet-Drafts are draft documents valid for a maximum of six months
21    and may be updated, replaced, or obsoleted by other documents at any
22    time.  It is inappropriate to use Internet-Drafts as reference
23    material or to cite them other than as "work in progress."
25    The list of current Internet-Drafts can be accessed at
26    http://www.ietf.org/ietf/1id-abstracts.txt.
28    The list of Internet-Draft Shadow Directories can be accessed at
29    http://www.ietf.org/shadow.html.
31    This Internet-Draft will expire on November 14, 2005.
33 Copyright Notice
35    Copyright (C) The Internet Society (2005).
37 Abstract
39    The Generic Security Services API (GSS-API) provides a simple naming
40    architecture that supports name-based authorization.  This document
41    introduces new APIs that extend the GSS-API naming and authorization
42    model.
51 Williams                Expires November 14, 2005               [Page 1]
53 Internet-Draft          GSS-API Naming Extensions               May 2005
56 Table of Contents
58    1.    Conventions used in this document  . . . . . . . . . . . . .  3
59    2.    Introduction . . . . . . . . . . . . . . . . . . . . . . . .  3
60    3.    Name Attribute Sources and Criticality . . . . . . . . . . .  3
61    4.    Name Attributes/Values as ACL Subjects . . . . . . . . . . .  4
62    5.    Mapping Mechanism Facilities to Name Attributes  . . . . . .  4
63    5.1   Kerberos V and SPKM Authorization-Data . . . . . . . . . . .  4
64    5.2   Kerberos V Cross-Realm Transit Paths . . . . . . . . . . . .  5
65    5.3   PKIX Certificate Extensions  . . . . . . . . . . . . . . . .  5
66    5.3.1 PKIX EKUs  . . . . . . . . . . . . . . . . . . . . . . . . .  5
67    5.3.2 PKIX Certificate Alternative Names . . . . . . . . . . . . .  6
68    5.3.3 Other PKIX Certificate Extensions and Attributes . . . . . .  6
69    5.4   PKIX Certificate CA Paths and Trust Anchors  . . . . . . . .  6
70    6.    GSS_Inquire_name_attribute() . . . . . . . . . . . . . . . .  6
71    6.1   C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . .  7
72    6.2   Java Bindings  . . . . . . . . . . . . . . . . . . . . . . .  7
73    7.    GSS_Display_name_ext() . . . . . . . . . . . . . . . . . . .  7
74    7.1   C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . .  8
75    7.2   Java Bindings  . . . . . . . . . . . . . . . . . . . . . . .  8
76    8.    GSS_Inquire_name() . . . . . . . . . . . . . . . . . . . . .  8
77    8.1   C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . .  9
78    8.2   Java Bindings  . . . . . . . . . . . . . . . . . . . . . . . 10
79    9.    GSS_Get_name_attribute() . . . . . . . . . . . . . . . . . . 10
80    9.1   C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . 11
81    9.2   Java Bindings  . . . . . . . . . . . . . . . . . . . . . . . 11
82    10.   GSS_Set_name_attribute() . . . . . . . . . . . . . . . . . . 12
83    10.1  C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . 12
84    10.2  Java Bindings  . . . . . . . . . . . . . . . . . . . . . . . 12
85    11.   GSS_Delete_name_attribute()  . . . . . . . . . . . . . . . . 13
86    11.1  C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . 13
87    11.2  Java Bindings  . . . . . . . . . . . . . . . . . . . . . . . 13
88    12.   GSS_Export_name_composite()  . . . . . . . . . . . . . . . . 14
89    12.1  C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . 14
90    12.2  Java Bindings  . . . . . . . . . . . . . . . . . . . . . . . 14
91    13.   GSS_Map_name_to_any()  . . . . . . . . . . . . . . . . . . . 15
92    13.1  C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . 15
93    13.2  Java Bindings  . . . . . . . . . . . . . . . . . . . . . . . 16
94    14.   GSS_Release_any_name_mapping() . . . . . . . . . . . . . . . 16
95    14.1  C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . 16
96    14.2  Java Bindings  . . . . . . . . . . . . . . . . . . . . . . . 17
97    15.   IANA Considerations  . . . . . . . . . . . . . . . . . . . . 17
98    16.   Security Considerations  . . . . . . . . . . . . . . . . . . 17
99    17.   References . . . . . . . . . . . . . . . . . . . . . . . . . 18
100    17.1  Normative References . . . . . . . . . . . . . . . . . . . . 18
101    17.2  Informative References . . . . . . . . . . . . . . . . . . . 18
102          Author's Address . . . . . . . . . . . . . . . . . . . . . . 18
103          Intellectual Property and Copyright Statements . . . . . . . 20
107 Williams                Expires November 14, 2005               [Page 2]
109 Internet-Draft          GSS-API Naming Extensions               May 2005
112 1.  Conventions used in this document
114    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
115    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
116    document are to be interpreted as described in [RFC2119].
118 2.  Introduction
120    As described in [I-D.GSS-NAMING] the GSS-API's naming architecture
121    suffers from certain limitations.  This document proposes concrete
122    GSS-API extensions as outlined in [I-D.GSS-NAMING].
124    A number of extensions to the GSS-API are described herein with the
125    goal of making authorization information, and other information that
126    can be modelled as "name attributes" available as such to
127    applications.  For example, Kerberos V authorization data elements,
128    both, in their raw forms as well as mapped to more useful value
129    types, can be made available to GSS-API applications through these
130    interfaces.
132    The model is that GSS names have attributes.  The attributes of a
133    name may be authenticated by the credential whence the name comes, or
134    may have been set locally on a GSS name for the purpose of
135    "asserting" the attribute during credential acquisition or security
136    context exchange.  Name attributes' values are network
137    representations thereof (e.g., the actual value octets of the
138    contents of an X.509 certificate extension, for example) and are
139    intended to be useful for constructing portable access control
140    facilities.  Applications may often require language- or platform-
141    specific data types, rather than network representations of name
142    attributes, so a function is provided to obtain objects of such types
143    associated with names and name attributes.
145 3.  Name Attribute Sources and Criticality
147    A given GSS name object's name attributes may be authenticated or
148    asserted by an associated credential, or it may be mapped or derived
149    from another attribute of the same name.
151    That a given name's given attribute is 'mapped' means that it was
152    obtained through some mapping mechanism applied to another attribute
153    of the name that was not, itself, mapped.  For example, such
154    attributes as platform-specific internal identifiers may sometimes be
155    mapped from other name attributes.
157    Name attributes may be "critical," meaning that applications that do
158    not understand them MUST reject security contexts where the peer has
159    such unknown, critical attributes.
163 Williams                Expires November 14, 2005               [Page 3]
165 Internet-Draft          GSS-API Naming Extensions               May 2005
168 4.  Name Attributes/Values as ACL Subjects
170    Some name attributes (e.g., numeric user or group identifiers) may be
171    useful as subjects of access control list (ACL) entries, some may not
172    (e.g., time of day login restrictions).  The
173    GSS_Inquire_name_attribute() function indicates this.
175    To facilitate the development of portable applications that make use
176    of name attributes to construct and evaluate portable ACLs the GSS-
177    API makes name attribute values available in canonical network
178    encodings thereof.
180    To facilitate the development of platform- or language-specific
181    applications that need access to native types of representations of
182    name attributes an optional facility is provided,
183    GSS_Map_name_to_any().
185 5.  Mapping Mechanism Facilities to Name Attributes
187    [NOTE:  This entire section should probably be split into one or more
188    separate Internet-Drafts.  It is here in the -00 of this I-D to help
189    readers understand how to mechanism-specific name attributes would be
190    accessed through these GSS-API extensions.]
192    Kerberos V [I-D.ietf-krb-wg-kerberos-clarifications] and the Simple
193    Public-Key GSS-API Mechanism, SPKM [RFC2025], both support the
194    concept and encoding of containers of "authorization-data" as
195    described in [I-D.ietf-krb-wg-kerberos-clarifications].
197    PKIX [RFC3280] supports a number of authorization-data-like features,
198    like Extended Key Usage values (EKUs) and certificate extensions.
200    The authorization data can be accessed through the GSS-API name
201    attributes facility defined herein.
203 5.1  Kerberos V and SPKM Authorization-Data
205    Authorization-data non-container elements asserted in Kerberos V AP-
206    REQ Authenticators MUST be mapped into *asserted* GSS-API name
207    attributes; if not contained in AD-IF-RELEVANT then they MUST be
208    mapped into *critical* GSS-API name attributes.  AD-AND-OR
209    authorization-data elements MUST be mapped into a single *critical*
210    attribute, (TBD).
212    Authorization-data included in Kerberos V Tickets that is not
213    contained in AD-KDCIssued (with valid signature) MUST be mapped into
214    *asserted* GSS-API name attributes.  Conversely, authorization-data
215    elements in Kerberos V Tickets contained by AD-KDCIssued MUST be
219 Williams                Expires November 14, 2005               [Page 4]
221 Internet-Draft          GSS-API Naming Extensions               May 2005
224    mapped into *authenticated* GSS-API name attributes
226    As with authorization-data elements in Authenticators, authorization-
227    data elements in Tickets not contained in AD-IF-RELEVANT are to be
228    mapped to *critical* name attributes, and similarly with AD-AND-OR
229    (see above).
231    The OIDs for authorization-data elements are to be the authorization-
232    data element's 'ad-type' integer ID, relative to the base OID <TBD>
233    [NOTE: what about negative ad-type's?  OID arcs are positive
234    integers... ad-type is an Int32, so clearly something can be done.]
236 5.2  Kerberos V Cross-Realm Transit Paths
238    [Add text on how to represent/encode/interpret krb5 realm transit
239    paths as name attribute values.  And text on PKINIT too...  Basically
240    Ticket's 'transited' field should be exposed as an authenticated name
241    attribute, with some uncompressed encoding, possibly encompassing
242    certificate validation paths of client certs used for PKINIT, with
243    criticality determined by the presence of the transit-policy-checked
244    flag.]
246 5.3  PKIX Certificate Extensions
248    [NOTE:  In the Kerberos V authorization-data case we can tell when AD
249    elements are "authenticated" and when the are asserted, but what
250    about x.509 certificate extensions?  Clearly KU, EKUs and
251    subjectAltNames are authenticated in that no CA should sign a cert
252    with, say, arbitrary subjectAltNames not understood by the CA, but,
253    does that also apply to all other x.509 certificate extensions?  The
254    answer may depend on actual CA operator practices...  At worst a new
255    extension may be needed, like Kerberos V's AD-KDCIssued AD container
256    element; at best this text can just say "all cert extensions MUST be
257    mapped to authenticated..." below.]
259    PKI certificate extensions MAY/SHOULD/MUST (see comment above) be
260    mapped to *authenticated* GSS-API name attributes with the _same_
261    OIDs, and if they be marked critical in the certificate then they
262    MUST be mapped as *critical* GSS-API name attributes.
263    SubjectAltNames and EKUs, specifically, MUST be mapped to
264    *authenticated* GSS-API name attributes; see below.  Certificate
265    extensions MUST be mapped to GSS-API name attributes whose OIDs are
266    the same as the extensions'
268 5.3.1  PKIX EKUs
270    Extended Key Usage extensions, specifically, MUST be mapped as
271    described above, except that GSS-API name attributes for EKUs MUST
275 Williams                Expires November 14, 2005               [Page 5]
277 Internet-Draft          GSS-API Naming Extensions               May 2005
280    have NULL values (i.e., zero-length OCTET STRINGs).
282    PKI certificate key usages (KUs, but not EKUs), MUST NOT be mapped to
283    GSS-API name attributes.
285 5.3.2  PKIX Certificate Alternative Names
287    PKI certificate subjectAltNames MUST be mapped as *authenticated*,
288    *non-critical* GSS-API name attributes.
290    PKI certificate extensions MUST be mapped to *authenticated* GSS-API
291    name attributes with the _same_ OIDs, and if they be marked critical
292    in the certificate then they MUST be mapped as *critical* GSS-API
293    name attributes.
295    Extended Key Usage extensions, specifically, MUST be mapped as
296    described above, except that GSS-API name attributes for EKUs MUST
297    have NULL values (i.e., zero-length OCTET STRINGs).
299 5.3.3  Other PKIX Certificate Extensions and Attributes
301    [Add text...]
303 5.4  PKIX Certificate CA Paths and Trust Anchors
305    [Add text on how to represent/encode/interpret PKI certificate
306    validation CA paths as name attribute values, much as with Kerberos V
307    transited paths.]
309 6.  GSS_Inquire_name_attribute()
311    Inputs:
314    o  attr OBJECT IDENTIFIER
316    Outputs:
319    o  major_status INTEGER,
321    o  minor_status INTEGER,
323    o  attr_name OCTET STRING,
325    o  attr_description OCTET STRING,
327    o  attr_is_a_name BOOLEAN,
331 Williams                Expires November 14, 2005               [Page 6]
333 Internet-Draft          GSS-API Naming Extensions               May 2005
336    o  attr_is_trust_indicator BOOLEAN
338    Return major_status codes:
340    o  GSS_S_COMPLETE indicates no error.
342    o  GSS_S_UNAVAILABLE indicates that the given attribute OID is not
343       known (even if present as a name's attribute).
345    o  GSS_S_FAILURE indicates a general error.
347    This function outputs a name for the given name attribute,
348    description for display to users, indicates whether the given name
349    attribute's values are useful as the subject of an access control
350    list entry and/or whether the given name attribute's values are
351    useful as indicators of trust (for example, whether they name PKIX
352    trust anchors).
354 6.1  C-Bindings
356    OM_uint32 gss_inquire_name_attribute(
357      OM_uint32                     *minor_status,
358      gss_OID                       attr,
359      gss_buffer_t                  attr_name,
360      gss_buffer_t                  attr_description,
361      int                           *attr_is_a_name,
362      int                           *attr_is_trust_indicator
363    );
366 6.2  Java Bindings
368    public String nameAttributeName(Oid attr)
369       throws GSSException
370    public String nameAttributeDescription(Oid attr)
371       throws GSSException
372    public boolean nameAttributeIsName(Oid attr)
373       throws GSSException
374    public boolean nameAttributeIsTrustIndicator(Oid attr)
375       throws GSSException
378 7.  GSS_Display_name_ext()
380    Inputs:
383    o  name NAME,
387 Williams                Expires November 14, 2005               [Page 7]
389 Internet-Draft          GSS-API Naming Extensions               May 2005
392    o  display_as_name_type OBJECT IDENTIFIER
394    Outputs:
397    o  major_status INTEGER,
399    o  minor_status INTEGER,
401    o  display_name STRING
403    Return major_status codes:
405    o  GSS_S_COMPLETE indicates no error.
407    o  GSS_S_UNAVAILABLE indicates that the given name could not be
408       displayed using the syntax of the given name type.
410    o  GSS_S_FAILURE indicates a general error.
412    This function displays a given name using the given name syntax, if
413    possible.  This operation may require mapping MNs to generic name
414    syntaxes or generic name syntaxes to mechanism-specific name
415    syntaxes; such mappings may not always be feasible and MAY be inexact
416    or lossy.
418 7.1  C-Bindings
420    OM_uint32 GSS_Display_name_ext(
421      OM_uint32                     *minor_status,
422      gss_name_t                    name,
423      gss_OID                       display_as_name_type,
424      gss_buffer_t                  display_name
425    );
428 7.2  Java Bindings
430    public String displayExtended(Oid display_as_name_type)
431       throws GSSException
434 8.  GSS_Inquire_name()
436    Inputs:
439    o  name NAME
443 Williams                Expires November 14, 2005               [Page 8]
445 Internet-Draft          GSS-API Naming Extensions               May 2005
448    Outputs:
451    o  major_status INTEGER,
453    o  minor_status INTEGER,
455    o  name_is_MN BOOLEAN,
457    o  mn_mech OBJECT IDENTIFIER
459    o  asserted_attrs SET OF OBJECT IDENTIFIER
461    o  authenticated_attrs SET OF OBJECT IDENTIFIER
463    o  critical_attrs SET OF OBJECT IDENTIFIER
465    o  all_attrs SET OF OBJECT IDENTIFIER
467    o  [NOTE: Perhaps this function should also output an indicator as to
468       the provenance of the name, of which, in the GSS-API, there are
469       three: imported, inquired from a credential, and a peer's name
470       inquired from a security context.]
472    Return major_status codes:
474    o  GSS_S_COMPLETE indicates no error.
476    o  GSS_S_FAILURE indicates a general error.
478    This function outputs the sets of attributes of a name, that are
479    authenticated, asserted or critical.  It also indicates if a given
480    NAME is an MN or not and, if it is, what mechanism it's an MN of.
482 8.1  C-Bindings
484    OM_uint32 gss_inquire_name(
485      OM_uint32                     *minor_status,
486      gss_name_t                    name,
487      int                           name_is_MN,
488      gss_OID                       *MN_mech,
489      gss_OID_set                   *authenticated,
490      gss_OID_set                   *asserted,
491      gss_OID_set                   *critical,
492      gss_OID_set                   *all_attrs
493    );
499 Williams                Expires November 14, 2005               [Page 9]
501 Internet-Draft          GSS-API Naming Extensions               May 2005
504 8.2  Java Bindings
506    public boolean isMN(boolean authenticated, boolean critical)
507       throws GSSException
508    public Oid mnMech(boolean authenticated, boolean critical)
509       throws GSSException
510    public Oid[] allAttributes(boolean authenticated, boolean critical)
511       throws GSSException
512    public Oid[] authenticatedAttributes(boolean authenticated,
513       boolean critical) throws GSSException
514    public Oid[] assertedAttributes(boolean authenticated,
515       boolean critical) throws GSSException
516    public Oid[] criticalAttributes(boolean authenticated,
517       boolean critical) throws GSSException
520 9.  GSS_Get_name_attribute()
522    Inputs:
525    o  name NAME,
527    o  attr OBJECT IDENTIFIER
529    Outputs:
532    o  major_status INTEGER,
534    o  minor_status INTEGER,
536    o  authenticated BOOLEAN,
538    o  mapped BOOLEAN,
540    o  critical BOOLEAN,
542    o  values SET OF OCTET STRING,
544    o  display_values SET OF STRING
546    Return major_status codes:
548    o  GSS_S_COMPLETE indicates no error.
550    o  GSS_S_UNAVAILABLE indicates that the given attribute OID is not
551       known or set.
555 Williams                Expires November 14, 2005              [Page 10]
557 Internet-Draft          GSS-API Naming Extensions               May 2005
560    o  GSS_S_FAILURE indicates a general error.
562    This function outputs the value(s) associated with a given GSS name
563    object for a given name attribute.
565 9.1  C-Bindings
567    The C-bindings of GSS_Get_name_attribute() requires one function call
568    per-attribute value, for multi-valued name attributes.  This is done
569    by using a single gss_buffer_t for each value and an input/output
570    integer parameter to distinguish initial and subsequent calls and to
571    indicate when all values have been obtained.
573    The 'more' input/output parameter should point to an integer variable
574    whose value, on first call to gss_name_attribute_get() MUST be -1,
575    and whose value upon function call return will be non-zero to
576    indicate that additional values remain, or zero to indicate that no
577    values remain.  The caller should not modify this parameter after the
578    initial call.
580    OM_uint32 gss_get_name_attribute(
581      OM_uint32                     *minor_status,
582      gss_name_t                    name,
583      gss_OID                       attr,
584      int                           *authenticated,
585      int                           *mapped,
586      int                           *critical,
587      gss_buffer_t                  value,
588      gss_buffer_t                  display_value,
589      int                           *more
590    );
593 9.2  Java Bindings
595    public byte[] getAttributeValue(Oid attr)
596       throws GSSException
597    public String getAttributeDisplayValue(Oid attr)
598       throws GSSException
599    public boolean isAttributeAuthenticated(Oid attr)
600       throws GSSException
601    public boolean isAttributeMapped(Oid attr)
602       throws GSSException
603    public boolean getAttributeCriticality(Oid attr)
604       throws GSSException
607 10.  GSS_Set_name_attribute()
611 Williams                Expires November 14, 2005              [Page 11]
613 Internet-Draft          GSS-API Naming Extensions               May 2005
616    Inputs:
619    o  name NAME,
621    o  critical BOOLEAN,
623    o  attr OBJECT IDENTIFIER,
625    o  values SET OF OCTET STRING
627    Outputs:
630    o  major_status INTEGER,
632    o  minor_status INTEGER
634    Return major_status codes:
636    o  GSS_S_COMPLETE indicates no error.
638    o  GSS_S_UNAVAILABLE indicates that the given attribute OID is not
639       known or could not be set.
641    o  GSS_S_FAILURE indicates a general error.
644 10.1  C-Bindings
646    The C-bindings of GSS_Set_name_attribute() requires one function call
647    per-attribute value, for multi-valued name attributes -- each call
648    adds one value.  To replace an attribute's every value delete the
649    attribute's values first with GSS_Delete_name_attribute().
651    OM_uint32 gss_set_name_attribute(
652      OM_uint32                     *minor_status,
653      gss_name_t                    name,
654      int                           critical,
655      gss_OID                       attr,
656      gss_buffer_t                  value
657    );
660 10.2  Java Bindings
662    The Java-bindings of GSS_Set_name_attribute() requires one function
663    call per-attribute value, for multi-valued name attributes -- each
667 Williams                Expires November 14, 2005              [Page 12]
669 Internet-Draft          GSS-API Naming Extensions               May 2005
672    call adds one value.  To replace an attribute's every value delete
673    the attribute's values first with GSS_Delete_name_attribute().
675    public abstract setAttribute(Oid attr, boolean critical,
676                                 byte[] value)
677       throws GSSException
680 11.  GSS_Delete_name_attribute()
682    Inputs:
685    o  name NAME,
687    o  attr OBJECT IDENTIFIER,
689    Outputs:
692    o  major_status INTEGER,
694    o  minor_status INTEGER
696    Return major_status codes:
698    o  GSS_S_COMPLETE indicates no error.
700    o  GSS_S_UNAVAILABLE indicates that the given attribute OID is not
701       known.
703    o  GSS_S_FAILURE indicates a general error.
706 11.1  C-Bindings
708    OM_uint32 gss_delete_name_attribute(
709      OM_uint32                     *minor_status,
710      gss_name_t                    name,
711      gss_OID                       attr
712    );
715 11.2  Java Bindings
717    public abstract deleteAttribute(Oid attr, boolean critical)
718       throws GSSException
723 Williams                Expires November 14, 2005              [Page 13]
725 Internet-Draft          GSS-API Naming Extensions               May 2005
728 12.  GSS_Export_name_composite()
730    Inputs:
733    o  name NAME
735    Outputs:
738    o  major_status INTEGER,
740    o  minor_status INTEGER,
742    o  exp_composite_name OCTET STRING
744    Return major_status codes:
746    o  GSS_S_COMPLETE indicates no error.
748    o  GSS_S_FAILURE indicates a general error.
750    This function outputs a token which can be imported with
751    GSS_Import_name(), using GSS_C_NT_COMPOSITE_EXPORT as the name type
752    and which preserves any name attribute information associated with
753    the input name (which GSS_Export_name() may well not).  The token
754    format is no specified here as this facility is intended for inter-
755    process communication only; however, all such tokens MUST start with
756    a two-octet token ID, hex 04 02, in network byte order.
758    The OID for GSS_C_NT_COMPOSITE_EXPORT is <TBD>.
760 12.1  C-Bindings
762    OM_uint32 gss_export_name_composite(
763      OM_uint32                     *minor_status,
764      gss_name_t                    name,
765      gss_buffer_t                  exp_composite_name
766    );
769 12.2  Java Bindings
771    public byte[] exportComposite()
772       throws GSSException
775 13.  GSS_Map_name_to_any()
779 Williams                Expires November 14, 2005              [Page 14]
781 Internet-Draft          GSS-API Naming Extensions               May 2005
784    Inputs:
787    o  name NAME,
789    o  authenticated BOOLEAN, -- if TRUE no data will be output unless it
790       is authenticated
792    o  type_id OBJECT IDENTIFIER
794    Outputs:
797    o  major_status INTEGER,
799    o  minor_status INTEGER,
801    o  output ANY DEFINED BY type_id
803    Return major_status codes:
805    o  GSS_S_COMPLETE indicates no error.
807    o  GSS_S_UNAVAILABLE indicates that the mapping or conversion could
808       not be done.  The minor status code may provide additional
809       information.
811    o  GSS_S_FAILURE indicates a general error.  The minor status code
812       may provide additional information.
814    Whereas name attribute's values are encoded in some network
815    representation applications often require native, language- and/or
816    platform-specific data types.  This function provides access to such
817    types.
819 13.1  C-Bindings
821    struct gss_any;
822    typedef struct gss_any *gss_any_t;
823    OM_uint32 gss_map_name_to_any(
824      OM_uint32                     *minor_status,
825      gss_name_t                    name,
826      int                           authenticated,
827      gss_OID                       type_id,
828      gss_any_t                     output
829    );
835 Williams                Expires November 14, 2005              [Page 15]
837 Internet-Draft          GSS-API Naming Extensions               May 2005
840 13.2  Java Bindings
842    ...
845 14.  GSS_Release_any_name_mapping()
847    Inputs:
850    o  name NAME,
852    o  type_id OBJECT IDENTIFIER,
854    o  input ANY DEFINED BY type_id
856    Outputs:
859    o  major_status INTEGER,
861    o  minor_status INTEGER,
863    Return major_status codes:
865    o  GSS_S_COMPLETE indicates no error.
867    o  GSS_S_UNAVAILABLE indicates that the mapping or conversion could
868       not be done.  The minor status code may provide additional
869       information.
871    o  GSS_S_FAILURE indicates a general error.  The minor status code
872       may provide additional information.
874    This function releases, if possible, the objects of language- and/or
875    platform-specific types output by GSS_Map_name_to_any().  If such
876    types have native release functions applications MAY use either those
877    or this function to release the given object.
879 14.1  C-Bindings
881    struct gss_any;
882    typedef struct gss_any *gss_any_t;
883    OM_uint32 gss_release_any_name_mapping(
884      OM_uint32                     *minor_status,
885      gss_name_t                    name,
886      gss_OID                       type_id,
887      gss_any_t                     *input
891 Williams                Expires November 14, 2005              [Page 16]
893 Internet-Draft          GSS-API Naming Extensions               May 2005
896    );
899 14.2  Java Bindings
901    ...
904 15.  IANA Considerations
906    This document creates a namespace of GSS-API name attributes.
907    Attributes are named by OID, so no single authority might be needed
908    for allocation, however, in the interest of providing the community
909    with an authority for name attribute OID allocation and a way to find
910    the existing set of name attributes, the IANA should establish both,
911    a single OID off of which name attributes could be allocated, and a
912    registry of known GSS name attributes.
914    GSS-API name attribute registry entries should contain all the
915    information that GSS_Inquire_name_attribute() may return about the
916    given name attributes and their OIDs:
918    o  a name attribute OID (this is a unique key)
920    o  a name attribute symbolic name, starting with "GSS_C_NA_" (this is
921       a unique key)
923    o  a brief description, in English
925    o  whether the attribute is useful as the subject of access control
926       list entries
928    o  whether the attribute is useful as an indicator of trust
930    o  an optional normative reference to documentation for the given
931       name attribute
933    The allocation and registration policy should be first come, first
934    served.  Registry entries' OIDs need not be based on the base OID
935    given above.
937 16.  Security Considerations
939    <TBA>
941    [In particular, the status of a name attribute as "authenticated" vs.
942    "asserted" requires close review, particularly with respect to PKIX
943    certificate extensions.]
947 Williams                Expires November 14, 2005              [Page 17]
949 Internet-Draft          GSS-API Naming Extensions               May 2005
952 17.  References
954 17.1  Normative References
956    [I-D.GSS-NAMING]
957               Hartman, S., "Desired Enhancements to GSSAPI Naming",
958               draft-ietf-kitten-gss-naming-01.txt (work in progress),
959               February 2005.
961    [I-D.ietf-krb-wg-kerberos-clarifications]
962               Neuman, C., "The Kerberos Network Authentication Service
963               (V5)", draft-ietf-krb-wg-kerberos-clarifications-07 (work
964               in progress), September 2004.
966    [RFC2025]  Adams, C., "The Simple Public-Key GSS-API Mechanism
967               (SPKM)", RFC 2025, October 1996.
969    [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
970               Requirement Levels", BCP 14, RFC 2119, March 1997.
972    [RFC2743]  Linn, J., "Generic Security Service Application Program
973               Interface Version 2, Update 1", RFC 2743, January 2000.
975    [RFC2744]  Wray, J., "Generic Security Service API Version 2 :
976               C-bindings", RFC 2744, January 2000.
978    [RFC3280]  Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
979               X.509 Public Key Infrastructure Certificate and
980               Certificate Revocation List (CRL) Profile", RFC 3280,
981               April 2002.
983 17.2  Informative References
985    [RFC1750]  Eastlake, D., Crocker, S., and J. Schiller, "Randomness
986               Recommendations for Security", RFC 1750, December 1994.
988    [RFC1964]  Linn, J., "The Kerberos Version 5 GSS-API Mechanism",
989               RFC 1964, June 1996.
992 Author's Address
994    Nicolas Williams
995    Sun Microsystems
996    5300 Riata Trace Ct
997    Austin, TX  78727
998    US
1003 Williams                Expires November 14, 2005              [Page 18]
1005 Internet-Draft          GSS-API Naming Extensions               May 2005
1008    Email: Nicolas.Williams@sun.com
1059 Williams                Expires November 14, 2005              [Page 19]
1061 Internet-Draft          GSS-API Naming Extensions               May 2005
1064 Intellectual Property Statement
1066    The IETF takes no position regarding the validity or scope of any
1067    Intellectual Property Rights or other rights that might be claimed to
1068    pertain to the implementation or use of the technology described in
1069    this document or the extent to which any license under such rights
1070    might or might not be available; nor does it represent that it has
1071    made any independent effort to identify any such rights.  Information
1072    on the procedures with respect to rights in RFC documents can be
1073    found in BCP 78 and BCP 79.
1075    Copies of IPR disclosures made to the IETF Secretariat and any
1076    assurances of licenses to be made available, or the result of an
1077    attempt made to obtain a general license or permission for the use of
1078    such proprietary rights by implementers or users of this
1079    specification can be obtained from the IETF on-line IPR repository at
1080    http://www.ietf.org/ipr.
1082    The IETF invites any interested party to bring to its attention any
1083    copyrights, patents or patent applications, or other proprietary
1084    rights that may cover technology that may be required to implement
1085    this standard.  Please address the information to the IETF at
1086    ietf-ipr@ietf.org.
1089 Disclaimer of Validity
1091    This document and the information contained herein are provided on an
1092    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1093    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1094    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1095    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1096    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1097    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1100 Copyright Statement
1102    Copyright (C) The Internet Society (2005).  This document is subject
1103    to the rights, licenses and restrictions contained in BCP 78, and
1104    except as set forth therein, the authors retain all their rights.
1107 Acknowledgment
1109    Funding for the RFC Editor function is currently provided by the
1110    Internet Society.
1115 Williams                Expires November 14, 2005              [Page 20]