<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc compact="yes"?>
<?rfc toc="yes"?>
<?rfc sortrefs="no"?>
<?rfc strict="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc category="info" docName="draft-cira-regext-idn-00" ipr="trust200902">
	<front>
		<title abbrev="CIRA IDN EPP Extension">
		  CIRA IDN EPP Extension
		</title>
		
		<author initials="J." surname="Latour" fullname="Jacques Latour">
		  <organization>CIRA</organization>
		  <address>
		    <postal>
		      <street>350 Sparks Street, Suite 306</street>
		      <city>Ottawa</city>
		      <region>ON</region>
		      <code>K1R 7S8</code>
		      <country>Canada</country>
		    </postal>
		    <email>jacques.latour@cira.ca</email>
		  </address>
		</author>			
		
		<author initials="J." surname="Bernard" fullname="Julien Bernard">
		  <organization>Viagenie</organization>
		  <address>
		    <email>julien.bernard@viagenie.ca</email>
		  </address>
		</author>

		<date year="2016" />
		
		<area>Applications Area</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <keyword>Extensible Provisioning Protocol</keyword>
    <keyword>EPP</keyword>
    <keyword>eppext</keyword>
		
		<abstract>
			<t>The Canadian Internet Registration Authority (CIRA), administering the .CA country-code top-level domain, offers internationalized domain names (IDN) in French, one of Canada's official languages. CIRA's Extensible Provisioning Protocol (EPP) services have been augmented with an IDN EPP extension in order to support registrars desiring to register internationalized domains using French characters as bundled domains.</t>
			<t>This document defines the extension to the Extensible Provisioning Protocol used at CIRA to support IDN operations. </t>
		</abstract>
	</front>

	<middle>
	  <section title="Introduction">
		  <t>This document describes an extension to the Extensible Provisioning Protocol (EPP) providing support for the internationalization of domain names (IDN) and other related functions. This EPP extension is used at the Canadian Internet Registration Authority (CIRA) to support IDN operations for French, one of Canada's official languages.</t> 
		  
			<t>The design of this EPP extension is based on a number of requirements from the CIRA registry. A first requirement is to exchange IDN labels with registrars during create operations. There is also a need to exchange information about the set of characters supported by the registry. This set is called a repertoire throughout the document, as a synonym with IDN-table.</t>
			  
			<t>Registry policies often prevent the registration of similar-looking IDN labels by different registrants. CIRA policies allow each IDN label to be registered independently, removing the need for a registration bundle structure as described in <xref target="RFC4290"/> or more recently in <xref target="ID.draft-kong-eppext-bundling-registration"/>. The policies also specify that all the label variants must be linked to a single registrant-registrar pair, even if some variants aren't registered. </t>
			
			<t>In order to support this, a simple list of label variants is used. No zone information or registration information is included in that list. By providing such list to a registrar, a registry has the capacity to inform a registrar of the possible label variants without relying on the accurate processing of complex Label Generation Rulesets (LGR) on the registrar side, minimizing risks of errors. </t>
			
			<t>The CIRA IDN EPP extension defines three XML elements named createType, infDataType and checkType, respectively used in &lt;create&gt;, &lt;info&gt; and &lt;check&gt; EPP commands. These elements contain elements describing a "repertoire", as a set of variant Unicode code points, an IDN label in U-label form and "domainVariants", a list of variant labels accepted by the registry (also called bundle). A new type named repertoireType is also defined. This type is used to carry a set of variant Unicode code points supported by a registry.</t> 
			
		</section>

	  <section title="Operational Requirements">

			<t>This section explains the rationale and detailed requirements behind CIRA's EPP extension for IDN.</t>
 
			<section title="IDN Labels">
				<t>The first requirement relating to IDN support is to allow registrars to specify a U-label string in a create operation. For this purpose a new element is required, in this case called 'u-label'.</t> 
			</section>

			<section title="Repertoires">
				<t>French being the first IDN language supported at CIRA, it would be possible to accept EPP create operations without other information than the U-label and to consider the French character set as the default for all operations, which would include the base English character set already in place. However CIRA did not want to preclude the possibility to add support for other languages in the future or to add supplementary constrained character sets. The registrars are therefore required to specify the character set in every create operation.</t>
				
				<t>The character set is being specified in a repertoire type as a string. The name 'repertoire' as used here represents the set of code points variants accepted by policy by the registry for a specific language. This has the same meaning as the definition of idn:table identifier defined in <xref target="ID.draft-kong-eppext-bundling-registration"/>.</t> 
				
				<t>The string used to identify a repertoire may be similar in content to a language tag, but shouldn't be confused with a language, as the character set approved by policy by a registry may represent a subset of an official language's character set. See section 1.3 of <xref target="RFC4290"/> for a more detailed discussion on possible confusion in usage.</t>  
			</section>


			<section title="French IDN Characters Variants">
				<t>The code points below are included in the implementation of French IDN by CIRA. Each French accented character is considered a variant of the base character.</t> 


				<figure title="Variant code points for French IDN at CIRA" anchor="Figure_1">
		   		 <artwork name="Variant code points for French IDN at CIRA">
 ----------- ---------------------------------------------------- 
| Code Point |              French                  |   Base     |
|            |            Character                 | Character  |
 ----------- -------------------------------------- ------------  
|   U+00E0   | LATIN SMALL LETTER A WITH GRAVE      |    a       | 
|   U+00E2   | LATIN SMALL LETTER A WITH CIRCUMFLEX |    a       | 
|   U+00E7   | LATIN SMALL LETTER C WITH CEDILLA    |    c       | 
|   U+00E8   | LATIN SMALL LETTER E WITH GRAVE      |    e       | 
|   U+00E9   | LATIN SMALL LETTER E WITH ACUTE      |    e       | 
|   U+00EA   | LATIN SMALL LETTER E WITH CIRCUMFLEX |    e       | 
|   U+00EB   | LATIN SMALL LETTER E WITH DIAERESIS  |    e       | 
|   U+00EE   | LATIN SMALL LETTER I WITH CIRCUMFLEX |    i       | 
|   U+00EF   | LATIN SMALL LETTER I WITH DIAERESIS  |    i       | 
|   U+00F4   | LATIN SMALL LETTER O WITH CIRCUMFLEX |    o       | 
|   U+00F9   | LATIN SMALL LETTER U WITH GRAVE      |    u       | 
|   U+00FB   | LATIN SMALL LETTER U WITH CIRCUMFLEX |    u       | 
|   U+00FC   | LATIN SMALL LETTER U WITH DIAERESIS  |    u       | 
|   U+00FF   | LATIN SMALL LETTER Y WITH DIAERESIS  |    y       | 
|   U+00E6   | LATIN SMALL LETTER AE                |    ae      | 
|   U+0153   | LATIN SMALL LIGATURE OE              |    oe      | 
 ----------- ----------------------------------------------------
	 					</artwork>
		  	</figure>   
			</section>
			
			<section title="Bundling and Registration Policy">
				
			<t>A group of label variants referring to the same canonical base label (without accented characters) is named a bundle in this document. This definition is similar to the definition of registration bundle provided in <xref target="RFC4290"/>, with the difference that it isn't used for registration at CIRA but only to retrieve information through an EPP &lt;info&gt; operation.</t> 
				
			<t>Concurrent registration of different labels in a bundle is not required by CIRA policy. The registration of individual variants remains independent, with the requirement that the registrar-registrant pair remains the same for every label in the bundle. Once a single variant has been registered, registration of a variant by different registrant or registrar is prevented. This includes the registration of canonical names from a period preceding IDN support.</t>
			
			<t>In a way similar to registration, transfers are handled on a per-label basis. All labels within a bundle must be transferred within 5 days otherwise the transfer is canceled. </t>
			
			<t>Label variants, besides being independently registered, are also allowed to have different lifetimes, expiration times and server information. The limitations on the bundle are managed using the earliest registration date to the latest expiry date for all labels in a single bundle. An expired variant part of a non-expired bundle is considered 'withheld' and cannot be registered except by the same registrant-registrar pair. </t>

				<figure  title="Bundle lifetime" anchor="Figure_2">
		   		 <artwork name="Bundle lifetime">
          Variant1   ---R++++++++++++++E---------
          Variant2   ------R++++++++++++++E------
          Variant3   ---------R++++++++++++++E---
                        |                    |
          Bundle     ---++++++++++++++++++++++---
          lifetime
                      R=Registration, E=Expiry,
                      +=valid, -=invalid

	 					</artwork>
		  	</figure>  

				<t>In the context of CIRA, the bundle object will provide additional information regarding the canonical base label, the registrar and the registrant. Several fields relating to important dates, such as creation date, last update, transfer date and expiration are also included. The bundle object is not used for registration and transfers.</t>

			</section>
			
			<section title="Domain Lists">
			<t>Because of the limitations on variant registration described above, it is desirable for the registry to specify the exact list of allowed label variants. A registrar could, for example, use that list to display information to prospective registrants or to explain registration errors in a registrant-facing interface.</t>
				
			<t>The CIRA IDN EPP extension adds support for a domainList element returned as a result to Info operations. The domainList contains a list of allowed label variants based on the requested label. </t>
			
			<t>Using a list is simpler to implement for registrars and does not require them to process complex rules (or Label Generation Rulesets) as defined in <xref target="ID.draft-ietf-lager-specification"/>. This limits implementation errors in the parsing of these rules and the need to refresh and process them on a regular basis. </t>
			</section>
		</section>
		
		<section title="Object Elements">
		
			<t>In order to cover the requirements described above, five elements are defined in this EPP extension. Elements u-label, repertoire and domainVariants are defined as part of the base CIRA IDN extension. The repertoire identifies a character table (idn-table) and the domainVariants carries a list of label variants. The two other elements, bundleDomain and info, are used in the bundle manipulation part of the extension.  </t>
		
			<section title="U-Labels">
				<t>The u-label element is an optional parameter used to specify explicitly the value of a U-label. It will be validated against the A-label value found in the domain:name attribute. It is based on the type labelType.</t>
				
				<figure><artwork><![CDATA[
<element name="u-label" type="eppcom:labelType" minOccurs="0"/>
				]]></artwork></figure>		
			</section>
			
			<section title="Repertoires">
				<t>The repertoire element is based on the repertoireType type defined in the extension and is a simple string token. Its value MUST be a valid language tag as described in <xref target="RFC5646"/>. The attribute value is linked to a character table describing which code points are valid for this language. </t>
				
				<figure><artwork><![CDATA[
<element name="repertoire" type="cira-idn:repertoireType" /> 
<simpleType name="repertoireType">
  <restriction base="token">
    <length value="2"/>
  </restriction>
</simpleType>				      	
				]]></artwork></figure>
			</section>
			
			<section title="DomainVariants">
				<t>The optional domainVariants element is based on the domainList type, which is a sequence of elements of labelType. Each label enumerated in domainVariants represents the possible label variants for a base domain. </t>
				
				<figure><artwork><![CDATA[
<element name="domainVariants" 
         type="cira-idn:domainList" 
         minOccurs="0" />
<complexType name="domainList">
  <sequence>
    <element name="name"    
             type="eppcom:labelType" 
             maxOccurs="unbounded" />
  </sequence>
</complexType>				      	
				]]></artwork></figure>
			</section>
			
			<section title="BundleDomains">
				<t>The bundleDomains element uses the same domainList type as domainVariants and is used in a similar way, but in a bundle object rather than in a ciraIdnInfo element. The exact usage is described below in the extension elements section. </t>
				
				<figure><artwork><![CDATA[
<element name="bundleDomains" type="cira-idn:domainList"/>				      	
				]]></artwork></figure>
			</section>
			
			<section title="Info">
				<t>The info element is based on the infoType type, built out of a label type and a repertoire id. This is similar to the u-label and repertoire types defined above, but this composed type is only used in bundle objects and may contain either a u-label or an a-label. </t>
				
				<figure><artwork><![CDATA[
<element name="info" type="cira-idn-bundle:infoType" />
<complexType name="infoType">
 <sequence>
   <element name="name" type="eppcom:labelType" />
   <element name="repertoire" 
            type="cira-idn:repertoireType" 
            minOccurs="0"/>
 </sequence>
</complexType>				      	
				]]></artwork></figure>
			</section>
		</section>
		
		<section title="EPP Extension Elements">
			<section title="The ciraIdnCheck Element">
					<t>The ciraIdnCheck element is used in &lt;check&gt; commands requests to specify which repertoire (language) is used. Multiple repertoire elements may be specified if needed.</t>
					
					<figure><artwork><![CDATA[
<element name="ciraIdnCheck" type="cira-idn:checkType" />
<complexType name="checkType">
  <sequence>
    <element name="repertoire" type="cira-idn:repertoireType" />
  </sequence>
</complexType>					      	
					]]></artwork></figure>
			</section>

			<section title="The ciraIdnInfo Element">
					<t>The ciraIdnInfo element is used in &lt;info&gt; command responses to a client when multiple IDN labels variants exist according to the registry policies.</t>
					
					<figure><artwork><![CDATA[
<element name="ciraIdnInfo" type="cira-idn:infDataType" />
<complexType name="infDataType">
  <sequence>
    <element name="domainVariants" 
             type="cira-idn:domainList" 
             minOccurs="0" />
  </sequence>
</complexType>					      	
					]]></artwork></figure>
			</section>
			
			<section title="The ciraIdnCreate Element">
					<t>The ciraIdnCreate element is used in &lt;create&gt; command requests to specify which repertoire (language) is used. An optionnal U-label of the requested domain may be specified in order to be validated against the A-label of the EPP &lt;create&gt; request to ensure correct conversion. Multiple repertoire elements may be specified if needed.</t>
					
					<figure><artwork><![CDATA[
<element name="ciraIdnCreate" type="cira-idn:createType"/>
  <complexType name="createType">
  <sequence>
    <element name="repertoire" type="cira-idn:repertoireType" />
    <element name="u-label" type="eppcom:labelType" minOccurs="0"/>
  </sequence>
</complexType>					      	
					]]></artwork></figure>
			</section>					
		</section>		
		
		<section title="EPP Command Mapping">
			<section title="EPP Query Commands">
				<section title="EPP &lt;check&gt; Command">
					<t>The following is an example of IDN EPP Domain Check transaction in which the client includes the ciraIdnCheck element in the request: </t>
					<figure><artwork><![CDATA[
C: <?xml version="1.0" encoding="UTF-8"?> 
C: <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> 
C:   <command> 
C:     <check> 
C:       <domain:check 
          xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> 
C:         <domain:name>abc123.ca</domain:name>
C:         <domain:name>xyz987.ca</domain:name>
C:         <domain:name>xn--r-wfan6a.ca</domain:name> 
C:       </domain:check> 
C:     </check>
C:     <extension>
C:       <cira-idn:ciraIdnCheck 
          xmlns:cira-idn="urn:ietf:params:xml:ns:cira-idn-1.0">
C:         <cira-idn:repertoire>fr</cira-idn:repertoire>
C:       </cira-idn:ciraIdnCheck>
C:     </extension>
C:     <clTRID>ABC-12346</clTRID>
C:   </command>
C: </epp>

S: <?xml version="1.0" encoding="UTF-8"?> 
S: <epp xmlns:cira="urn:ietf:params:xml:ns:cira1.0" 
S:      xmlns="urn:ietf:params:xml:ns:epp-1.0"  
S:      xmlns:host="urn:ietf:params:xml:ns:host- 1.0" 
S:      xmlns:poll="urn:ietf:params:xml:ns:poll1.0" 
S:      xmlns:contact="urn:ietf:params:xml:ns:contact1.0" 
S:      xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> 
S:   <response>
S:     <result code="1000">
S:       <msg>Command completed successfully</msg>
S:     </result>
S:     <resData>
S:     <domain:chkData> 
S:       <domain:cd>  
S:         <domain:name avail="true">abc123.ca</domain:name> 
S:       </domain:cd>  
S:       <domain:cd>  
S:         <domain:name avail="true">xyz987.ca</domain:name> 
S:       </domain:cd>  
S:       <domain:cd>  
S:         <domain:name avail="false">xn--r-wfan6a.ca</domain:name> 
S:         <domain:reason>Withheld</domain:reason> 
S:       </domain:cd>  
S:     </domain:chkData> 
S:   </resData>         
S:   <trID>             
S:     <clTRID>ABC-12346</clTRID>             
S:     <svTRID>CIRA-000000000312-0000000003</svTRID> 
S:   </trID>  
S: </response> 
S: </epp>
]]></artwork></figure>
					<t>This command returns successful completions responses as specified in <xref target="RFC5730"/> if no error occurred, usually with a code 1000. </t>
					
					<t>If the request is invalid, return code 2005 is used. The error value is set to 8309 if the specified repertoire is invalid and to 8001 if the label contains invalid characters or cannot be converted. </t>
				</section>
				
				<section title="EPP &lt;info&gt; Command">
					<t>The base CIRA IDN extension does not modify the EPP &lt;info&gt; command sent by the client, except in the case of a bundle command where a cira-idn-bundle:info object is added to the request. The two cases are covered below. </t>
						<section title="EPP &lt;info&gt; command for an IDN">
						<t>If the queried domain is an IDN in A-label format, the response is modified to include a ciraIdnInfo element containing all the valid label variants for the domain, including the base label.</t>
						<figure><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 
          xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C:         <domain:name hosts="all">xn--r-wfan6a.ca</domain:name>
C:         <domain:authInfo>
C:           <domain:pw>password</domain:pw>
C:         </domain:authInfo>
C:       </domain:info>
C:     </info>
C:     <clTRID>ABC-12345</clTRID>
C:   </command>
C: </epp> 

S: <?xml version="1.0" encoding="UTF-8"?>
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 
        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
S:       <domain:name>xn--r-wfan6a.ca</domain:name>
S:       <domain:roid>CIRA-lifecycle-00122</domain:roid>
S:       <domain:status s="serverUpdateProhibited">
          change registrant
         </domain:status>
S:       <domain:status s="serverDeleteProhibited" />
S:       <domain:status s="serverRenewProhibited" />
S:       <domain:status s="serverTransferProhibited" />
S:       <domain:status s="serverHold" />
S:       <domain:registrant>rant003</domain:registrant>
S:       <domain:contact type="admin">admin003</domain:contact>
S:       <domain:contact type="tech">tech003</domain:contact>
S:       <domain:ns>
S:          <domain:hostObj>ns1.example.ca</domain:hostObj>
S:          <domain:hostObj>ns2.example.ca</domain:hostObj>
S:       </domain:ns>
S:       <domain:host>ns1.pc-case3.ca</domain:host>
S:       <domain:host>ns2.pc-case3.ca</domain:host>
S:       <domain:clID>rar600</domain:clID>
S:       <domain:crID>rar600</domain:crID>
S:       <domain:crDate>2012-12-08T16:25:01.0Z</domain:crDate>
S:       <domain:exDate>2012-12-08T16:25:01.0Z</domain:exDate>
S:       <domain:authInfo>
S:         <domain:pw>password2</domain:pw>
S:       </domain:authInfo>
S:     </domain:infData>
S:   </resData>
S:   <extension>
S:     <cira-idn:ciraIdnInfo 
        xmlns:cira-idn="urn:ietf:params:xml:ns:cira-idn-1.0">
S:       <cira-idn:domainVariants>
S:         <cira-idn:name>xn--r-wfan6a.ca</cira-idn:name>
S:         <cira-idn:name>xn--cir-cla.ca</cira-idn:name>
S:         <cira-idn:name>cira.ca</cira-idn:name>
S:       </cira-idn:domainVariants>
S:     </cira-idn:ciraIdnInfo>
S:   </extension>
S:     <trID>
S:      <clTRID>ABC-12345</clTRID>
S:      <svTRID>cira-000002-0000000005</svTRID>
S:     </trID>
S:   </response>
S: </epp>
]]></artwork></figure>
						<t>This command returns successful completions responses as specified in <xref target="RFC5730"/> if no error occurred, usually with a code 1000. <cref anchor="C2">Error codes and error values to be completed.</cref> </t>
					</section>
					
					<section title="EPP &lt;info&gt; command with a bundle object">
						<t>A client querying bundle information will include a cira-idn-bundle:info object in the request. The server will reply with a bundle object. </t>
						<figure><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:     <cira-idn-bundle:info 
C:      xmlns:cira-idn-bundle=
        "urn:ietf:params:xml:ns:cira-idn-bundle-1.0">
C:       <cira-idn-bundle:name>
C:         xn--valuation-93a.ca
C:       </cira-idn-bundle:name>
C:       <cira-idn-bundle:repertoire>fr</cira-idn-bundle:repertoire>
C:     </cira-idn-bundle:info>
C:   </info>
C:   <clTRID>
C:     ABC-12345
C:   </clTRID>
C: </command>
C: </epp> 

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:		 <extension>
S:       <cira-idn-bundle:infData 
S:           xmlns:cira-idn=
S:           "urn:ietf:params:xml:ns:cira-idn-1.0" 
S:           xmlns:cira-idn-bundle=
S:           "urn:ietf:params:xml:ns:cira-idn-bundle-1.0">
S:         <cira-idn-bundle:canonicalDomainName>
S:           evaluation.ca
S:         </cira-idn-bundle:canonicalDomainName>
S:         <cira-idn-bundle:roid>CIRA-123</cira-idn-bundle:roid>
S:         <cira-idn-bundle:clID>rar600</cira-idn-bundle:clID>
S:         <cira-idn-bundle:registrant>
S:           rant600
S:         </cira-idn-bundle:registrant>
S:         <cira-idn-bundle:crID>rar600</cira-idn-bundle:crID>
S:         <cira-idn-bundle:crDate>
S:           2012-12-08T16:25:01.0Z
S:         </cira-idn-bundle:crDate>
S:         <cira-idn-bundle:upID>rar600</cira-idn-bundle:upID>
S:         <cira-idn-bundle:upDate>
S:           2012-12-08T17:25:01.0Z
S:         </cira-idn-bundle:upDate>
S:         <cira-idn-bundle:bundleDomains>
S:           <cira-idn:name>evaluation.ca</cira-idn:name>
S:           <cira-idn:name>xn--valuation-93a.ca</cira-idn:name>
S:           <cira-idn:name>xn--valution-2ya9f.ca</cira-idn:name>
S:         </cira-idn-bundle:bundleDomains>
S:       </cira-idn-bundle:infData>
S:     </extension>
S:     <trID>
S:       <clTRID>ABC-12345</clTRID>
S:       <svTRID>cira-000002-0000000005</svTRID>
S:     </trID>
S:   </response>
S: </epp>
]]></artwork></figure>
					</section>					
				</section>		
				
				<section title="EPP &lt;poll&gt; Command">
					<t>The EPP &lt;poll&gt; command is not modified by this extension.</t>
				</section>
				
				<section title="EPP &lt;transfer&gt; Query Command">
					<t>The transfer command is not modified by this extension. The domain:name element may contain an IDN in A-label format. </t>
				</section>
					
			</section>
			
			<section title="EPP Transform Commands">
				<section title="EPP &lt;create&gt; Command">
					<t>The create command from the client is extended with a ciraIdnCreate element containing the repertoire information and the U-Label for the domain to create. The server answer will contain the A-label of the created domain in the domain:name element. The server answer is not modified by this extension except for return codes. </t>
					<t>Return code 8001 is returned by the server when the domain name contains invalid characters or when the A-label cannot be converted successfully to a valid U-label. Error code 8309 is used for an invalid repertoire and 8310 is used when the A-label does not match the U-label.</t>
					<figure><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--r-wfan6a.ca</domain:name>
C:         <domain:period unit="y">2</domain:period>
C:         <domain:ns>
C:           <domain:hostObj>hostname.example.net</domain:hostObj>
C:           <domain:hostObj>hostname.example.com</domain:hostObj>
C:         </domain:ns>
C:         <domain:registrant>contactid-1</domain:registrant>
C:         <domain:contact type="admin">contactid-1</domain:contact>
C:           <domain:contact type="tech">nbguy</domain:contact>
C:           <domain:contact type="tech">nbtech</domain:contact>
C:           <domain:contact type="tech">nbadmin</domain:contact>
C:         <domain:authInfo>
C:           <domain:pw>password</domain:pw>
C:         </domain:authInfo>
C:       </domain:create>
C:     </create>
C:     <extension>
C:         <cira-idn:ciraIdnCreate 
C:          xmlns:cira-idn="urn:ietf:params:xml:ns:cira-idn-1.0">
C:         <cira-idn:repertoire>fr</cira-idn:repertoire>
C:         <cira-idn:u-label>çïrâ.ca</cira-idn:u-label>
C:       </cira-idn:ciraIdnCreate>
C:     </extension>
C:     <clTRID>ABC-12345</clTRID>
C:   </command>
C: </epp> 

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:creData 
S:        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
S:         <domain:name>xn--r-wfan6a.ca</domain:name>
S:         <domain:crDate>2012-08-27T17:52:21.0Z</domain:crDate>
S:         <domain:exDate>2014-08-27T17:52:01.0Z</domain:exDate>
S:       </domain:creData>
S:     </resData>
S:     <trID>
S:       <clTRID>ABC-12345</clTRID>
S:       <svTRID>CIRA-000001-0000000133</svTRID>
S:     </trID>
S:   </response>
S: </epp>
]]></artwork></figure>
				</section>
				
				<section title="EPP &lt;delete&gt; Command">
					<t>The EPP &lt;delete&gt; command is not modified by this extension.</t>
				</section>
				
				<section title="EPP &lt;renew&gt; Command">
					<t>The EPP &lt;renew&gt; command is not modified by this extension.</t>
				</section>
				
				<section title="EPP &lt;transfer&gt; Command">
					<t>The EPP &lt;transfer&gt; command is not modified by this extension. The domain:name element may contain an IDN in A-label format. New error codes and error values may be returned based on IDN processing. </t>
				</section>
				
				<section title="EPP &lt;update&gt; Command">
					<t>The EPP &lt;update&gt; command is not modified by this extension. The domain:name element may contain an IDN in A-label format. New error codes and error values may be returned based on IDN processing.</t>
						
					<t>The server returns code 8001 when the domain name contains invalid characters or when the A-label cannot be converted successfully to a valid U-label. Error code 8309 is used for an invalid repertoire and 8317 is used when the request fails due to a syntax error or a policy violation error. </t>
				</section>
			</section>
		</section>
		
		<section title="Formal Syntax">
			<t>Below are the XML schemas for cira-idn-1.0 and cira-idn-bundle-1.0. These two schemas were developed separately and are almost independent of each other, except for the latter borrowing the domainList type of the former. </t>
			
			<section title="Schema for cira-idn-1.0">
				<figure><artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:cira-idn-1.0"
 xmlns:cira-idn="urn:ietf:params:xml:ns:cira-idn-1.0"
 xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
 xmlns="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified">
 
  <!--
   Import common element types.
  -->
  <import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
          schemaLocation="eppcom-1.0.xsd" />
 
  <annotation>
    <documentation>
      Extensible Provisioning Protocol v1.0
      extension schema for IDN name in the .CA registry
    </documentation>
  </annotation>
 
  <element name="ciraIdnCreate" type="cira-idn:createType" />
  <element name="ciraIdnInfo" type="cira-idn:infDataType" />
  <element name="ciraIdnCheck" type="cira-idn:checkType" />

  <!--
   Child elements of the <create> command.
   -->
  <complexType name="createType">
  <sequence>
    <element name="repertoire" type="cira-idn:repertoireType" />
    <element name="u-label" type="eppcom:labelType" minOccurs="0"/>
  </sequence>
  </complexType>
 
  <simpleType name="repertoireType">
    <restriction base="token">
      <length value="2"/>
    </restriction>
  </simpleType>
 
  <!--
   Child elements of the <info> command.
   -->
    
  <complexType name="infDataType">
    <sequence>
      <element name="domainVariants" 
       type="cira-idn:domainList" minOccurs="0" />
    </sequence>
  </complexType>
    
  <complexType name="domainList">
    <sequence>
      <element name="name" type="eppcom:labelType
               maxOccurs="unbounded" />
    </sequence>
  </complexType>
    
    <!--
    Child elements of the <check> command. 
     -->
    
    <complexType name="checkType">
      <sequence>
        <element name="repertoire" type="cira-idn:repertoireType" />
      </sequence>
    </complexType>
    
    <!--
    End of schema.
    -->
 </schema>
				      				      	
				]]></artwork></figure>
			</section>
			
			<section title="Schema for cira-idn-bundle-1.0">
				<figure><artwork><![CDATA[    
<?xml version="1.0" encoding="UTF-8"?>
  <schema 
  targetNamespace="urn:ietf:params:xml:ns:cira-idn-bundle-1.0"
  xmlns:cira-idn-bundle="urn:ietf:params:xml:ns:cira-idn-bundle-1.0"
  xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
  xmlns:cira-idn="urn:ietf:params:xml:ns:cira-idn-1.0"
  xmlns="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified">
 
  <!--
   Import common element types.
   -->
  <import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
          schemaLocation="eppcom-1.0.xsd" />
  <import namespace="urn:ietf:params:xml:ns:cira-idn-1.0"
          schemaLocation="cira-idn-1.0.xsd" />
 
  <annotation>
    <documentation>
      Extensible Provisioning Protocol v1.0
      bundle schema for framework for
      provisioning of cira idn bundle
      information.
    </documentation>
  </annotation>
    
  <!--
   Child elements found in EPP commands.
   -->
  <element name="info" type="cira-idn-bundle:infoType" />
    <!--
    Child elements of the <info> commands.
    -->

    <complexType name="infoType">
      <sequence>
        <element name="name" type="eppcom:labelType" />
        <element name="repertoire" 
         type="cira-idn:repertoireType" minOccurs="0"/>
      </sequence>
    </complexType>

    <!--
    Child response elements.
    -->
    <element name="infData" type="cira-idn-bundle:infDataType" />
    <!--
    <info> response elements.
    -->
    <complexType name="infDataType">
      <sequence>
        <element name="canonicalDomainName" 
                 type="eppcom:labelType" />
        <element name="roid" type="eppcom:roidType" />
        <element name="clID" type="eppcom:clIDType"/>
        <element name="registrant" type="eppcom:clIDType"  
                 minOccurs="0"/>
        <element name="crID" type="eppcom:clIDType"
                 minOccurs="0" />         
        <element name="crDate" type="dateTime"
             minOccurs="0" />
        <element name="upID" type="eppcom:clIDType"
             minOccurs="0" />
        <element name="upDate" type="dateTime"
             minOccurs="0" />
        <element name="trDate" type="dateTime"
             minOccurs="0" />         
        <element name="bundleDomains" type="cira-idn:domainList"/>
      </sequence>
    </complexType>
    <!--
    End of schema.
    -->
 </schema>
				]]></artwork></figure>
			</section>
		</section>	
		
		<section title="Security Considerations">
			<t>For domain labels containing a large number of IDN characters, the list of label variants can be large. For the French repertoire, the largest variant code point is from the e character and has 5 variants (including the base one). For a label containing 64 characters, the list of label variants may exceed 5E+44 entries. The current schema does not place a limit on the size of domainVariants element, but implementations should limit its size for performance purpose. </t>
		</section>	
		
		<section title="IANA Considerations">
		  <t>The CIRA IDN EPP extension is to be added to the EPP extension registry as specified in <xref target="RFC7451"/>. Below is the registration template.</t>
		  <figure><artwork><![CDATA[ 
-----BEGIN FORM-----
Name of Extension:
"CIRA IDN EPP Extension"

Document Status:
Informational

Reference:
draft-latour-cira-idn-eppext

Registrant Name and Email Address:
.CA Registry Operations, regops@cira.ca

TLDs: .ca

IPR Disclosure: TBD

Status: Active

Notes: None
-----END FORM-----
       ]]></artwork></figure>
		  <t><cref anchor="C1">To be completed as needed.</cref></t>
		</section>


		<section title="Acknowledgments">
		  <t>The initial version of this document was written by Jean-Francois Tremblay and Stuart Olmstead-Wilcox, the authors would like to thank them for their work.</t>
		  <t>The authors would also like to thank Marc Blanchet and Audric Schiltknecht for suggestions and revisions.</t>
		</section>
  </middle>

	<back>
		<references title="Normative References">
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119"?>
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5646"?>
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5730"?>
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5731"?>
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5890"?>		
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5891"?>
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5892"?>	
		</references>
		
		<references title="Informative References">
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.3743"?>
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.4290"?>
			<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.7451"?>

			<reference anchor="iana-idn-tables"
				target='https://www.iana.org/domains/idn-tables'>
				<front>
					<title>Repository of IDN Practices</title>	
					<author/>
					<date/>								
				</front>
			</reference>	
			
			<reference anchor="icann-idn-guidelines"
				target='http://www.icann.org/en/topics/idn/idn-guidelines-26apr07.pdf'>
				<front>
					<title>Guidelines For The Implementation Of Internationalized Domain Names</title>	
					<author/>								
					<date month="April" year="2007"/>
				</front>
			</reference>	  
			
			<reference anchor="icann-epp-extentions"
				target='http://newgtlds.icann.org/en/applicants/advisories/epp-extensions-21dec12-en'>
				<front>
					<title>Proprietary EPP Extensions</title>
					<author/>									
					<date month="December" year="2012"/>
				</front>
			</reference>	  
			
			<reference anchor="ID.draft-ietf-lager-specification"
				target='http://tools.ietf.org/html/draft-ietf-lager-specification'>
				<front>
					<title>Representing Label Generation Rulesets using XML</title>
					<author initials="K." surname="Davies" fullname="Kim Davies">
						 <organization>ICANN</organization>
					</author>
					<author initials="A." surname="Freytag" fullname="Asmus Freytag">
						 <organization>ASMUS Inc.</organization>
					</author>													
					<date month="March" year="2016"/>
				</front>
			</reference>	  
		  
		  <reference anchor="ID.draft-ietf-eppext-idnmap"
		  	target='http://tools.ietf.org/html/draft-ietf-eppext-idnmap'>
				<front>
					<title>Internationalized Domain Name Mapping Extension for the Extensible Provisioning Protocol (EPP)</title>
					<author initials="F." surname="Obispo" fullname="Francisco Obispo">
						 <organization>Uniregistry</organization>
					</author>
					<author initials="L." surname="Munoz" fullname="Luis Enrique Munoz">
						 <organization>Uniregistry</organization>
					</author>													
					<date month="January" year="2015"/>
				</front>
			</reference>
		
		  <reference anchor="ID.draft-kong-eppext-bundling-registration"
		   target='http://tools.ietf.org/html/draft-kong-eppext-bundling-registration'>
				<front>
					<title>Extensible Provisioning Protocol (EPP) Domain Name Mapping Extension for Bundling Registration</title>
					<author initials="N." surname="Kong" fullname="Ning Kong">
						 <organization>CNNIC</organization>
					</author>
					<author initials="J." surname="Yao" fullname="Jiankang Yao">
						 <organization>CNNIC</organization>
					</author>
					<author initials="X." surname="Li" fullname="Xiaodong Li">
						 <organization>CNNIC</organization>
					</author>
					<author initials="J." surname="Xie" fullname="Jiagui Xie">
						 <organization>CONAC</organization>
					</author>					
					<author initials="W." surname="Tan" fullname="Wil Tan">
						 <organization>Cloud Registry</organization>
					</author>																					
					<date month="October" year="2014"/>
				</front>
			</reference>	
			
		</references>   
	</back>
</rfc>
