<?xml version="1.0" encoding="UTF-8"?>
<!-- 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml' -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
<!ENTITY rfc5226 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml'>
<!ENTITY rfc3530 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3530.xml'>
<!ENTITY rfc2478 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2478.xml'>
<!ENTITY rfc2743 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2743.xml'>
<!ENTITY rfc2744 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2744.xml'>
<!ENTITY rfc2853 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2853.xml'>
<!ENTITY rfc1964 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1964.xml'>
<!ENTITY rfc4121 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4121.xml'>
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc tocindent="no" ?>
<?rfc autobreaks="no" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<?rfc compact="yes" ?>

<rfc category="std" ipr="trust200902" docName="draft-ietf-kitten-gssapi-extensions-iana-09.txt">
    <front>
	<title abbrev="GSS IANA Instructions">Namespace
	    Considerations and Registries for GSS-API Extensions</title>
	<author initials='N.' surname="Williams" fullname='Nicolas
	    Williams'>
	    <organization>Cryptonector LLC</organization>
	    <address>
		    <email>nico@cryptonector.com</email>
	    </address>
        </author>

        <author initials="A." surname="Melnikov" fullname="Alexey Melnikov">
          <organization>Isode Ltd</organization>
          <address>
            <postal>
              <street>5 Castle Business Village</street>
              <street>36 Station Road</street>
              <city>Hampton</city>
              <region>Middlesex</region>
              <code>TW12 2BX</code>
              <country>UK</country>
            </postal>
            <email>Alexey.Melnikov@isode.com</email>
          </address>
        </author>

      <date year="2015"/>
	    <area>Security</area>
	    <workgroup>NETWORK WORKING GROUP</workgroup>
      
	    <keyword>GSS-API</keyword>

	<abstract>

	    <t>This document describes the ways in which the GSS-API may
		be extended and directs the creation of an IANA registry
		for various GSS-API namespaces.</t>

	</abstract>
    </front>

    <middle>
	<section title="Conventions used in this document">
            <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
            "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
            and "OPTIONAL" in this document are to be interpreted as
            described in <xref target="RFC2119"/>.</t>
        </section>

        <section title="Introduction">

	    <t>There is a need for private-use and mechanism-specific
		extensions to the Generic Security Services Application
		Programming Interface (GSS-API).  As such extensions are
		designed and standardized (or not), both at the IETF and
		elsewhere, there is a non-trivial risk of namespace
		pollution and conflicts.  To avoid this we set out
		guidelines for extending the GSS-API and direct the
		creation of an IANA registry for GSS-API namespaces.</t>

	    <t>Registrations of individual items and sub-namespaces are
		allowed.  Each sub-namespace may provide different rules
		for registration, e.g., for mechanism-specific and
		private-use extensions.</t>

        </section>

	<section title="Extensions to the GSS-API">
	    <t>Extensions to the GSS-API can be categorized as follows:
		<list style='symbols'>
		    <t>Abstract API extensions</t>
		    <t>Implementation-specific</t>
		    <t>Mechanism-specific</t>
		    <t>Language binding-specific</t>
		</list>
	    </t>
	    <t>Extensions to the GSS-API may be purely semantic, without
		effect on the GSS-API's namespaces.  Or they may
		introduce new functions, constants, types, etc...; these
		clearly affect the GSS-API namespaces.</t>
	    <t>Extensions that affect the GSS-API namespaces should
		be registered with the IANA as described herein.</t>
	</section>

	<section title="Generic GSS-API Namespaces">
	    <t>The abstract API namespaces for the GSS-API are:
		<list style='symbols'>
		    <t>Type names</t>
		    <t>Function names</t>
		    <t>Constant names for various types</t>
		    <t>Constant values for various types</t>
		    <t>Name types (OID, type name and syntaxes)</t>
		</list>
	    </t>
	    <t>Additionally we have namespaces associates with the
		OBJECT IDENTIFIER (OID) type.  The IANA already
		maintains a registry of such OIDs:

		<list style='symbols'>
		    <t>Mechanism OIDs</t>
		    <t>Name Type OIDs</t>
		</list>

	    </t>
	</section>

	<section title="Language Binding-Specific GSS-API Namespaces">

	    <t>Language binding specific namespaces include, among
		others:

		<list style='symbols'>
		    <t>Header/interface module names</t>
		    <t>Object classes and/or types</t>
		    <t>Methods and/or functions</t>
		    <t>Constant names</t>
		    <t>Constant values</t>
		</list>

	    </t>

	</section>

	<section title="Extension-Specific GSS-API Namespaces">

	    <t>Extensions to the GSS-API may create additional
		namespaces.  See <xref target='guidelines'/>.</t>

	</section>

	<section title="Registration Form">

	    <t>Registrations for GSS-API namespaces SHALL take the
		following form:</t>

	    <!-- <?rfc compact="no" ?> -->

	    <texttable style="all">
		<ttcol align='left' width='20%'>Registration Field</ttcol>
		<ttcol align='left' width='30%'>Possible Values</ttcol>
		<ttcol align='left' width='50%'>Description</ttcol>

		<c>Bindings</c>
		<c>'Generic', 'C-bindings', 'Java', 'C#',
		    &lt;programming language name&gt;</c>
		<c>Indicates the name of the programming language that
		    this registration involves, or, if 'Generic', that
		    this is an entry for the generic abstract GSS-API
		    (i.e., not specific to any programming
		    language).</c>

		<c>Registration type</c>
		<c>'Instance', 'Sub-Namespace'</c>
		<c>Indicates whether this entry reserves a given symbol
		    name (and possibly, constant value), or whether it
		    reserves an entire sub-namespace (the name is a
		    pattern) or constant value range.</c>

		<c>Object Type</c>
		<c>&lt;Symbol&gt; defined by the binding language
        (for example 'Data-Type', 'Function', 'Method', 'Integer',
		    'String', 'OID', 'Context-Flag', 'Name-Type',
		    'Macro', 'Header-File-Name', 'Module-Name', 'Class')</c>
		<c>Indicates the type of the object whose symbolic
		    name or constant value this entry registers.  The
		    possible values of this field depend on the
		    programming language in question, therefore they are
		    not all specified here.</c>

		<c>Symbol Name/Prefix</c>
		<c>&lt;Symbol name or name pattern&gt;</c>
		<c>The name of a symbol or symbol sub-namespace being
		    registered.  See <xref
			target='sub_namespace_matching'/></c>

		<c>Binding of</c>
		<c>&lt;Name of abstract API element of which this object
		    is a binding&gt;</c>
		<c>If the registration is for a specific language
		    binding of the GSS-API, then this names the abstract
		    API element of which it is a binding (OPTIONAL).</c>

		<c>Constant Value/Range</c>
		<c>&lt;Constant value&gt; or &lt;constant value
		    range&gt;</c>
		<c>The value of the constant named by the &lt;Symbol
		    Name/Prefix&gt;. This field is present only for
		    Instance and Sub-namespace registrations of Constant
		    object types.</c>

		<c>Description</c>
		<c>&lt;Text&gt;</c>
		<c>Description of the registration.  Multiple instances
		    of this field may result (see <xref
			target='change_control'/>).</c>

		<c>Registration Rules</c>
		<c>&lt;Reference&gt; to an IANA registration Policy defined in <xref target='RFC5226'/> (or an RFC that
        updates it), for instance 'IESG Approval', 'Expert Review',
        'First Come First Served', 'Private Use'.</c>
		<c>Describes the rules for allocation of items that fall
		    in this sub-namespace, for entries with Registration
		    Type of Sub-namespace (OPTIONAL).  For private use
		    sub-namespaces the submitter MUST provide the e-mail
		    address of a responsible contact.
        If this field is not specified for a sub-namespace, the default
        registration rules specified in <xref target='guidelines'/> apply.
    </c>

		<c>Reference</c>
		<c>&lt;Reference&gt;</c>
		<c>Reference to a document that describes the
		    registration, if any (OPTIONAL).  Multiple instances
		    of this field are allowed, with one reference
		    each.</c>

		<c>Expert Reviewer</c>
		<c>&lt;Name of expert reviewers, possibly WG names&gt;</c>
		<c>OPTIONAL, see <xref target='expert_review'/>.
		    Multiple instances of this field are allowed, with
		    one expert reviewer per-instance.
       Leave this field blank when requesting a registration.
       It will be filled in by the Expert who reviews the registration.</c>

		<c>Expert Review Notes</c>
		<c>&lt;Notes from the expert review&gt;</c>
		<c>Expert reviewers may request that some comments be
		    included with the registration, e.g., regarding
		    security considerations of the registered
		    extension.</c>

		<c>Status</c>
		<c>'Registered' or 'Obsoleted'</c>
		<c>Status of the registration.</c>

		<c>Obsoleting Reference</c>
		<c>&lt;Reference&gt;</c>
		<c>Reference to a document, if any, that obsoletes this
		    registration.  Multiple instances of this field are
		    allowed, with one reference each.  (OPTIONAL)</c>

	    </texttable>

	    <!-- <?rfc compact="yes" ?> -->

	    <t>The IANA should create a single GSS-API namespace
		registry, or multiple registries, one for symbolic names
		and one for constant values, and/or it may create a
		registry per-programming language, at its
		convenience.</t>

	    <t>Entries in these registries should consist of all the
		fields from their corresponding registration
		entries.</t>

	    <t>Entries should be sorted by: programming language, registration type,
		object type, and symbol name/pattern.</t>

	</section>

	<section title="IANA Considerations">

	    <t>This document deals with IANA considerations throughout.
		Specifically it creates a single registry of various
		kinds of things, though the IANA may instead create
		multiple registries, each for one of those kinds of
		things.  Of particular interest may be that IANA will
		now be the registration authority for the GSS-API name
		type OID space.</t>

	    <section title="Initial Namespace Registrations">

		<t>Initial registry content corresponding to the items
		    defined in <xref target='RFC2743'/>, <xref
			target='RFC2744'/>, <xref target='RFC2853'/>,
		    <xref target='RFC1964'/> and <xref
			target='RFC4121'/> and others will be supplied
		    during the IANA review portion of the RFC publishing
		    process.
        
        [[Note to RFC Editor: Delete the following sentence before publication:]]
        The KITTEN WG chairs MUST indicate that
		    such content has been reviewed by the WG and that
		    there is WG consensus that the entries are in
		    agreement with those RFCs.</t>

        <section title="Example registrations">

          <t>In order to sanity check recommended IANA registration templates, this section registers several entries.</t>

          <texttable style="all">
            <ttcol align='left' width='30%'>Registration Field</ttcol>
            <ttcol align='left' width='70%'>Possible Values</ttcol>

            <c>Bindings</c>
            <c>C-bindings</c>

            <c>Registration type</c>
            <c>Instance</c>

            <c>Object Type</c>
            <c>Function</c>

            <c>Symbol Name</c>
            <c>gss_init_sec_context</c>

            <c>Binding of</c>
            <c>GSS_Init_sec_context</c>

            <c>Constant Value/Range</c>
            <c>N/A</c>

            <c>Description</c>
            <c>Create a security context by initiator</c>

            <c>Registration Rules</c>
            <c>N/A</c>

            <c>Reference</c>
            <c>RFC 2744</c>

            <c>Expert Reviewer</c>
            <c>Kitten WG</c>

            <c>Expert Review Notes</c>
            <c></c>

            <c>Status</c>
            <c>Registered</c>

            <c>Obsoleting Reference</c>
            <c>N/A</c>



            <c>Bindings</c>
            <c>C-bindings</c>

            <c>Registration type</c>
            <c>Instance</c>

            <c>Object Type</c>
            <c>Function</c>

            <c>Symbol Name</c>
            <c>gss_accept_sec_context</c>

            <c>Binding of</c>
            <c>GSS_Accept_sec_context</c>

            <c>Constant Value/Range</c>
            <c>N/A</c>

            <c>Description</c>
            <c>Accept a security context from initiator</c>

            <c>Registration Rules</c>
            <c>N/A</c>

            <c>Reference</c>
            <c>RFC 2744</c>

            <c>Expert Reviewer</c>
            <c>Kitten WG</c>

            <c>Expert Review Notes</c>
            <c></c>

            <c>Status</c>
            <c>Registered</c>

            <c>Obsoleting Reference</c>
            <c>N/A</c>



            <c>Bindings</c>
            <c>C-bindings</c>

            <c>Registration type</c>
            <c>Instance</c>

            <c>Object Type</c>
            <c>Context-Flag</c>

            <c>Symbol Name</c>
            <c>GSS_C_DELEG_FLAG</c>

            <c>Binding of</c>
            <c>deleg_state or deleg_req_flag</c>

            <c>Constant Value/Range</c>
            <c>1</c>

            <c>Description</c>
            <c>
              On output (if set): Delegated credentials are available
              via the delegated_cred_handle
              parameter of GSS_Accept_sec_context.<!--vspace/-->
              On input (if set): With the call to GSS_Init_sec_context, delegate credentials to the acceptor.
            </c>

            <c>Registration Rules</c>
            <c>N/A</c>

            <c>Reference</c>
            <c>RFC 2744</c>

            <c>Expert Reviewer</c>
            <c>Kitten WG</c>

            <c>Expert Review Notes</c>
            <c></c>

            <c>Status</c>
            <c>Registered</c>

            <c>Obsoleting Reference</c>
            <c>N/A</c>
          </texttable>

        </section>
      </section>

	    <section anchor='guidelines' title="Registration Maintenance Guidelines">

		<t>Standards-Track RFCs can create new items with any
		    non-conflicting Symbol Name/Prefix value for this
		    registry by virtue of IESG approval to publish as a
		    Standards-Track RFC -- that is, without additional
		    expert review.</t>

		<t>Standards-Track RFCs can mark existing entries as
		    obsolete, and can even create conflicting entries if
		    explicitly stated (the IESG, of course, should
		    review conflicts carefully, and may reject
		    them).</t>

		<t>IANA shall also consider submissions from
		    individuals, and via Informational and Experimental
		    RFCs, subject to Expert Review.  IANA SHALL allow
		    such registrations if a) they are not conflicting,
		    b) provided that the registration is for object
		    types other than Context-Flags, and c) subject to
		    expert review.  Guidelines for expert reviews are
		    given below.</t>

		<section anchor='sub_namespace_matching'
		    title="Sub-Namespace Symbol Pattern Matching">

		    <t>Sub-namespace registrations must provide a
			pattern for matching symbols for which the
			sub-namespace's registration rules apply.  The
			pattern consists of a string with the following
			special tokens:

			<list style='symbols'>

			    <t>'*', meaning "match any string."</t>
			    <t>"%m", meaning "match any mechanism family
				short-hand name."</t>
			    <t>"%i", meaning "match any implementor
				vanity short-hand name."</t>

			</list>
		    </t>

		    <t>For example, "GSS_%m_*" matches "GSS_krb5_foo"
			since "krb5" is a common short-hand for the
			Kerberos V GSS-API mechanism <xref
			    target="RFC1964"/>.  But "GSS_%m_*" does not
			match "GSS_foo_bar" unless "foo" is asserted to
			be a short-hand for some mechanism.</t>

		</section>

		<section anchor='expert_review' title="Expert Reviews of
		    Individual Submissions">

      <t>[[The following paragraph should be deleted from the document before publication,
      as it will not age well. It should be moved to the shepherding write-up.]]</t>
     
		    <t>Expert review selection SHALL be done as follows.
			If, at the time that the IANA receives an
			individual submission for registration in this
			registry, there are any IETF Working Groups
			chartered to produce GSS-API-related documents,
			then the IANA SHALL ask the chairs of such WGs
			to be expert reviewers or to name one.  If there
			are no such WGs at that time, then the IANA
			SHALL ask past chairs of the KITTEN WG and the
			author/editor of this RFC to act as expert
			reviewers or name an alternate.</t>


		    <t>Expert reviewers of individual registration
			submissions with Registration Type ==
			Sub-namespace should check that the registration
			request has a suitable description (which doesn't need
			to be sufficiently detailed for others to
			implement) and that the Symbol Name/Prefix is
			sufficiently descriptive of the purpose of the
			sub-namespace or reflective of the name of the
			submitter or associated company.</t>

		    <t>Expert reviewers of individual registration
			submissions with Registration Type == Instance
			should check that the Symbol Name falls under a
			sub-namespace controlled by the submitter.
			Registration of such entries which do not fall
			under such a sub-namespace may be allowed
			provided that they correspond to long existing
			non-standard extensions to the GSS-API and this
			can be easily checked or demonstrated, otherwise
			IESG Protocol Action is REQUIRED (see previous
			section).  Also, reviewers should check that any
			registration of constant values have a detailed
			description that is suitable for other
			implementors to reproduce, and that they don't
			conflict with other usages or are otherwise
			dangerous in the reviewers estimation.</t>

		    <t>Expert reviewers should review impact on
			mechanisms, security and interoperability, and
			may reject or annotate registrations which can
			have mechanism impact that requires IESG
			protocol action.  Consider, for example, new
			versions of GSS_Init_sec_context() and/or
			GSS_Accept_sec_context which have new input
			and/or output parameters which imply changes on
			the wire or in behaviour that may result in
			interoperability issues.  A reviewer could
			choose to add notes to the registration
			describing such issues, or the reviewer might
			conclude that the danger to Internet
			interoperability is sufficient to warrant
			rejecting the registration.</t>

		</section>

		<section anchor='change_control' title='Change Control'>

		    <t>Registered entries may be marked obsoleted using
			the same expert review process as for
			registering new entries.  Obsoleted entries are not,
			however, to be deleted, but merely marked having
			Obsoleted Status.  Note that entries may be
			created as obsoleted to record the fact that the
			given symbol(s) have been used before, even
			though continued use of them is discouraged.</t>

		    <t>Registered entries may also be updated in two
			other ways: additional references, obsoleting
			references, and descriptions may be added.</t>

		    <t>All changes are subject to expert review,
        except for changes to registrations in a sub-namespace
        which are subject to the rules of the relevant sub-namespace.
      The submitter of a change request need not be the
			same as the original submitter.</t>

<!--////Alexey: What about editorial rewording/clarification? I suppose such cases can always be handled
as additional notes, although this will clutter the registry.-->
		    <t>Registrations may be modified by addition, but
			under no circumstance may any fields be modified
			except for the Status field or Contact Address,
      or to correct for transcription errors in filing or
      processing registration requests.</t>

		    <t>The IANA SHALL add a field describing the date
			that a an addition or modification was made, and
			a description of the change.</t>

		</section>

	    </section>

	</section>

        <section title="Security Considerations">

	    <t>General security considerations relating to IANA
		registration services apply; see <xref
		    target='RFC5226'/>.</t>

	    <t>Also, expert reviewers should look for and may document
		security related issues with submitters' GSS-API
		extensions, to the best of the reviewers' ability given
		the information furnished by the submitter.  Reviewers
		may add comments regarding their limited ability to
		review a submission for security problems if the
		submitter is unwilling to provide sufficient
		documentation.</t>

        </section>

    </middle>

    <back>
	<references title="Normative References">
	    &rfc2119;&rfc5226;&rfc2743;
	</references>

	<references title="Informative References">
	    &rfc2744;&rfc2853;&rfc1964;&rfc4121;
	</references>
    </back>

</rfc>
