<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc5730 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5730.xml">
<!ENTITY rfc3735 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3735.xml">
<!ENTITY rfc5731 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5731.xml">
<!ENTITY rfc5891 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5891.xml">
]>
<rfc category="exp" submissionType="IETF" ipr="trust200902" docName="draft-ietf-eppext-idnmap-00">
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
  <?rfc toc="yes" ?>
  <?rfc symrefs="yes" ?>
  <?rfc sortrefs="yes"?>
  <?rfc iprnotified="no" ?>
  <?rfc strict="yes" ?>
  <?rfc compact="yes" ?>
  <?rfc subcompact="no" ?>
  <?rfc autobreaks="yes" ?>
  <front>
    <title abbrev="IDN Mapping for the EPP Protocol">Internationalized Domain
    Name Mapping Extension for the Extensible Provisioning Protocol
    (EPP)</title>
    <author initials="F." surname="Obispo" fullname="Francisco Obispo">
      <organization abbrev="ISC">Uniregistry Corp.</organization>
      <address>
        <postal>
          <street>3-110 Governors Square</street>
          <city>Grand Cayman</city>
          <region>Grand Cayman</region>
          <code>KY1-1108</code>
          <country>KY</country>
        </postal>
        <phone>+194990334499</phone>
        <email>fobispo@uniregistry.com</email>
        <uri>http://www.uniregistry.com/</uri>
      </address>
    </author>
    <author initials="L." surname="Muñoz" fullname="Luis Enrique Muñoz">
      <organization abbrev="ISC">Uniregistry Corp.</organization>
      <address>
        <postal>
          <street>3-110 Governors Square</street>
          <city>Grand Cayman</city>
          <region>Grand Cayman</region>
          <code>KY1-1108</code>
          <country>KY</country>
        </postal>
        <phone>+19499034226</phone>
        <email>fobispo@uniregistry.com</email>
        <uri>http://www.uniregistry.com/</uri>
      </address>
    </author>
    <date/>
    <workgroup>Internet Engineering Task Force</workgroup>
    <abstract>
      <t>This document describes an Extensible Provisioning Protocol (EPP)
      extension mapping for the provisioning of Internationalized Domain Names
      (IDN) stored in a shared central repository. This mapping extends the
      EPP domain name mapping to provide additional features required to
      implement registrations of domain names in characters sets other than
      ASCII.</t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction">
      <t>The EPP protocol provides a complete description of EPP command and
      response structures. A thorough understanding of the base protocol
      specification is necessary to understand the mapping described in this
      document.</t>
      <t>This document is written in consideration with the Guidelines
      for Extending the Extensible Provisioning Protocol as defined in
      <xref target="RFC3735"/>.</t>
      <t>To comply with the 
      <eref target="http://www.icann.org/en/topics/idn/idn-guidelines-26apr07.pdf">
      Guidelines
      for the Implementation of Internationalized Domain Names</eref>, it is
      required to associate each label to be registered with a single script,
      as defined by the code division of the Unicode code chart. This
      requirement imposes a challenge for registries using the EPP protocol,
      since there is no such field currently in the domain name mapping to
      allow for this information to be exchanged.</t>
      <t>In addition, registries intending to comply with the recommendation of 
        <xref target="RFC5891">section 4.1</xref> of the 
      IDNA2008 protocol, which implies the verification of both the name in 
      ASCII Compatible Encoding and Unicode form, will be able to do so using
      this extension.</t>
      <t>This extension adds two additional data element to the EPP Domain
      Name mapping, to allow for association of a domain name to an IDN table 
      identifier, and a the domain name in Unicode Normalization Form C (NFC 
      <eref target="http://www.unicode.org/reports/tr15/"/>).</t>
    </section>
    <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>
      <t>XML is case sensitive. Unless stated otherwise, XML specifications
      and examples provided in this document MUST be interpreted in the
      character case representation presented in order to develop a conforming
      specification.</t>
      <t>"idn-1.0" is used as an abbreviation for
      "urn:ietf:params:xml:ns:idn-1.0". The XML namespace prefix "idn" is
      used, but implementations MUST NOT depend on it and instead employ a
      proper namespace-aware XML parser and serializer to interpret and output
      the XML documents.</t>
    </section>
    <section title="EPP Command Mapping">
      <t>A detailed description of the EPP syntax and semantics can be found
      in <xref target="RFC5730"/>.</t>
      <section title="EPP Query Commands">
        <t>This extension does not add any elements to the EPP &lt;check&gt;,
        &lt;poll&gt;, or &lt;transfer&gt; commands or responses.</t>
        <section title="EPP &lt;info&gt; Command">
          <t>This extension does not add any elements to the EPP &lt;info&gt;
          command, but does include elements in the response, when the
          extension has been selected during a &lt;login&gt; command.</t>
          <t>Example &lt;info&gt; command:</t>
          <figure>
            <preamble/>
            <artwork><![CDATA[
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C:  <command>
C:    <info>
C:      <domain:info 
C:          xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C:        <domain:name>xn--espaol-zwa.example.com</domain:name>
C:        <domain:authInfo>
C:          <domain:pw>2fooBAR</domain:pw>
C:        </domain:authInfo>
C:      </domain:info>
C:    </info>
C:    <clTRID>ABC-12345</clTRID>
C:  </command>
C:</epp>
]]></artwork>
            <postamble/>
          </figure>
          <t>When the info command has been processed successfully, 
               and the domain name is an IDN, the server must include 
               in the &lt;extension&gt; section of the EPP response an 
               &lt;idn:data&gt; element with the following elements:</t>
          <t>
            <list style="symbols">
              <t>A &lt;idn:table&gt; element that contains the IDN table 
                   identifier.</t>
              <t>A &lt;idn:uname&gt; element that contains the domain name
                   in Unicode NFC form.</t>
            </list>
          </t>
          <t>Example &lt;info&gt; response for an authorized client:</t>
          <figure>
            <preamble/>
            <artwork><![CDATA[
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
S:  <response>
S:    <result code="1000">
S:      <msg>Command completed successfully</msg>
S:    </result>
S:    <resData>
S:      <domain:infData
S:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
S:        <domain:name>xn--espaol-zwa.example.com</domain:name>
S:        <domain:roid>EXAMPLE1-REP</domain:roid>
S:        <domain:status s="ok"/>
S:        <domain:registrant>jd1234</domain:registrant>
S:        <domain:contact type="admin">sh8013</domain:contact>
S:        <domain:contact type="tech">sh8013</domain:contact>
S:        <domain:ns>
S:          <domain:hostObj>ns1.example.com</domain:hostObj>
S:          <domain:hostObj>ns1.example.net</domain:hostObj>
S:        </domain:ns>
S:        <domain:clID>ClientX</domain:clID>
S:        <domain:crID>ClientY</domain:crID>
S:        <domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
S:        <domain:upID>ClientX</domain:upID>
S:        <domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
S:        <domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
S:        <domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
S:        <domain:authInfo>
S:          <domain:pw>2fooBAR</domain:pw>
S:        </domain:authInfo>
S:      </domain:infData>
S:    </resData>
S:    <extension>
S:      <idn:data xmlns:idn="urn:ietf:params:xml:ns:idn-1.0">
S:        <idn:table>es</idn:table>
S:        <idn:uname>espa&#xF1;ol.example.com</idn:uname>
S:      </idn:data>
S:    </extension>
S:    <trID>
S:      <clTRID>ABC-12345</clTRID>
S:      <svTRID>54322-XYZ</svTRID>
S:    </trID>
S:  </response>
S:</epp>]]></artwork>
            <postamble/>
          </figure>
        </section>
      </section>
      <section title="EPP Transform Commands">
        <t>This extension does not add any elements to the EPP &lt;delete&gt;,
        &lt;renew&gt;, or &lt;transfer&gt; commands or responses.</t>
        <section title="EPP &lt;create&gt; Command">
          <t>This extension defines additional elements for the EPP
          &lt;create&gt; command.</t>
          <t>If the domain name is an IDN, the EPP command MUST contain an 
            &lt;extension&gt; element, which MUST
          contain a child &lt;idn:data&gt; element with the following child
          elements:</t>
          <t>
            <list style="symbols">
              <t>A &lt;idn:table&gt; element that contains the IDN table 
              identifier as provided by the server.</t>
              <t>An optional &lt;idn:uname&gt; element that contains the domain name
              to be registered in Unicode NFC.</t>
            </list>
          </t>
          <t>Example &lt;create&gt; command:</t>
          <figure>
            <preamble/>
            <artwork><![CDATA[
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
C: <command>
C:   <create>
C:     <domain:create 
C:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C:     <domain:name>xn--espaol-zwa.example.com</domain:name>
C:     <domain:period unit="y">2</domain:period>
C:     <domain:ns>
C:       <domain:hostObj>ns1.example.net</domain:hostObj>
C:       <domain:hostObj>ns2.example.net</domain:hostObj>
C:     </domain:ns>
C:     <domain:registrant>jd1234</domain:registrant>
C:     <domain:contact type="admin">sh8013</domain:contact>
C:     <domain:contact type="tech">sh8013</domain:contact>
C:     <domain:authInfo>
C:       <domain:pw>2fooBAR</domain:pw>
C:     </domain:authInfo>
C:     </domain:create>
C:   </create>
C:   <extension>
C:   <idn:data xmlns:idn="urn:ietf:params:xml:ns:idn-1.0">
C:     <idn:table>es</idn:table>
C:     <idn:uname>espa&#xF1;ol.example.com</idn:uname>
C:   </idn:data>
C:   </extension>
C:   <clTRID>123456</clTRID>
C: </command>
C:</epp>]]></artwork>
            <postamble/>
          </figure>
          <t>The server MUST validate the name using the procedure described in 
            section 4.2 of <xref target="RFC5891"/>.</t>
          <t>If the validation of the IDN name failed because it contained a 
            code point not available in the specified IDN table, the server 
            MUST return an EPP error 2306.</t>
          <t>In the specific case that the &lt;domain:name&gt; provided did 
            not map to the provided &lt;idn:uname&gt;, the server MUST respond
            with an EPP error 2005.</t>
        </section>
      </section>
      <section title="Formal Syntax">
        <t>An EPP object mapping is specified in XML Schema notation. The
        formal syntax presented here is a complete schema representation of
        the object mapping suitable for automated validation of EPP XML
        instances.</t>
        <figure>
          <preamble/>
          <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
        xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" 
        xmlns:idn="urn:ietf:params:xml:ns:idn-1.0"
        targetNamespace="urn:ietf:params:xml:ns:idn-1.0" 
        elementFormDefault="qualified">
  <annotation>
    <documentation>
      Extensible Provisioning Protocol v1.0 domain name extension
      schema for IDN Table selection.
    </documentation>
  </annotation>
  <import namespace="urn:ietf:params:xml:ns:eppcom-1.0" 
          schemaLocation="eppcom-1.0.xsd"/>
  <!-- Child elements found in IDN -->
    <element name="data" type="idn:idnDataType"/>
      <complexType name="idnDataType">
        <sequence>
          <element name="table" type="eppcom:minTokenType"/>
          <element name="uname" type="eppcom:labelType" 
              minOccurs="0"/>
        </sequence>
      </complexType>
  <!-- End of schema. -->
</schema>
]]></artwork>
          <postamble/>
        </figure>
      </section>
    </section>
    <section title="IANA Considerations">
      <t>This document uses URNs to describe XML namespaces and XML schemas
      conforming to a registry mechanism described in [RFC3688].  Two URI
      assignments have been registered by the IANA.</t>

      <t>Registration request for the contact namespace:</t>

      <t>URI: urn:ietf:params:xml:ns:idn-1.0</t>

      <t>Registrant Contact: See the "Author's Address" section of this
        document.</t>

      <t>XML: None.  Namespace URIs do not represent an XML specification.</t>

      <t>Registration request for the contact XML schema:</t>

      <t>URI: urn:ietf:params:xml:schema:idn-1.0</t>

      <t>Registrant Contact: See the "Author's Address" section of this
            document.</t>

      <t>XML: See the "Formal Syntax" section of this document.</t>
            
    </section>
    <section title="Security Considerations">
      <t>The mapping extensions described in this document do not provide any
      security services beyond those described by EPP <xref target="RFC5730"/>
      the EPP domain name mapping <xref target="RFC5731"/>, and protocol
      layers used by EPP.  The security considerations described in these
      other specifications apply to this specification as well.</t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      &rfc2119;
      &rfc5730;
      &rfc5891;
    </references>
    <references title="Informational References">
      &rfc3735;
      &rfc5731;
    </references>
  </back>
</rfc>
