<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2045 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2045.xml">
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3688 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml">
<!ENTITY RFC5234 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5234.xml">
<!ENTITY RFC5730 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5730.xml">
<!ENTITY RFC5731 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5731.xml">
<!ENTITY RFC5732 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5732.xml">
<!ENTITY RFC5733 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5733.xml">
<!ENTITY RFC7451 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7451.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml">
<!ENTITY W3C.xmldsig PUBLIC '' 'http://xml2rfc.ietf.org/public/rfc/bibxml4/reference.W3C.CR-xmldsig-core2-20120124.xml'>]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="yes"?>
<!-- keep one blank line between list items -->
<?rfc comments="yes" ?>
<!-- show cref output -->
<?rfc inline="yes" ?>
<!-- inline cref output -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-gould-eppext-verificationcode-04" ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <title abbrev="verificationCode">
     Verification Code Extension for the Extensible Provisioning Protocol (EPP)</title>

    <author fullname="James Gould" initials="J.G" surname="Gould">
      <organization>VeriSign, Inc.</organization>

      <address>
        <postal>
          <street>12061 Bluemont Way</street>

          <city>Reston</city>

          <region>VA</region>

          <code>20190</code>

          <country>US</country>
        </postal>

        <email>jgould@verisign.com</email>

        <uri>http://www.verisign.com</uri>
      </address>
    </author>


    <date day="29" month="September" year="2016"/>

    <abstract>
      <t>This document describes an Extensible Provisioning Protocol (EPP)
      extension for including a verification code for marking 
      the data for a transform command as being verified by a 3rd party, 
      which is referred to as the Verification Service Provider (VSP).  
      The verification code is digitally signed by the VSP using 
      XML Signature and is "base64" encoded.  The XML Signature 
      includes the VSP signer certificate, so the server can verify that the 
      verification code originated from the VSP.</t>
    </abstract>
           
  </front>

  <middle>
    <section title="Introduction">
      <t>This document describes an extension mapping for version 1.0 of the
      <xref target="RFC5730">Extensible Provisioning Protocol (EPP)</xref>.
      This mapping, an extension to EPP object mappings like the <xref
      target="RFC5731">EPP domain name mapping</xref>, <xref target="RFC5732">EPP host mapping</xref>, 
      and <xref target="RFC5733">EPP contact mapping</xref>, can be used to pass 
      a verification code to one of the EPP transform commands.  The 
      domain name object is used for examples in the document.  The 
      verification code is signed using <xref target="W3C.CR-xmldsig-core2-20120124">XML Signature</xref> and is "base64" encoded.
      The "base64" encoded text of the verification code MUST conform to <xref target="RFC2045"/>.  
      The verification code demonstrates that verification was done by 
      a Verification Service Provider (VSP).</t>
      
      <t>The Verification Service Provider (VSP) is a certified 
      party to verify that data is in compliance with the policies of a locality.  A 
      locality MAY require the client to have data verified in accordance with 
      local regulations or laws utilizing data sources not available to the server.  The 
      VSP has access to the local data sources and is authorized to verify the data.  Examples 
      include verifying that the domain name is not prohibited and verifying that the 
      domain name registrant is a valid individual, organization, or business in the locality.  
      The data verified, and the objects and operations that require the verification code to be passed 
      to the server is up to the policies of the locality.
      The verification code represents a marker that the verification was completed.  
      The data verified by the VSP MUST be stored by the VSP along with the generated 
      verification code to address any compliance issues.  The signer certificate 
      and the digital signature of the verification code MUST be verified 
      by the server.</t>

      <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">RFC 2119</xref>.</t>

        <t>XML is case sensitive. Unless stated otherwise, XML specifications
        and examples provided in this document MUST be interpreted in the
        character case presented in order to develop a conforming
        implementation.</t>
        
        <t>In examples, "C:" represents lines sent by a protocol client and "S:" represents lines returned by a protocol server.  
        Indentation and white space in examples are provided only to illustrate element relationships 
        and are not a REQUIRED feature of this protocol.        
        </t>

        <t>"verificationCode-1.0" is used as an abbreviation for
        "urn:ietf:params:xml:ns:verificationCode-1.0". The XML namespace prefix 
        "verificationCode" 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>

    <section anchor="attrs" title="Object Attributes">
    
      <t>This extension adds additional elements to EPP object mappings like the <xref
      target="RFC5731">EPP domain name mapping</xref>, <xref target="RFC5732">EPP host mapping</xref>, 
      and <xref target="RFC5733">EPP contact mapping</xref>. Only those new elements
      are described here.</t>
      
      <section anchor="verificationCode" title="Verification Code">
        
        <t>The Verification Code is a formatted token, referred to as the Verification Code Token, that is digitally 
        signed by a Verification Service Provider (VSP) using <xref target="W3C.CR-xmldsig-core2-20120124">XML Signature</xref>, 
        using the process described in <xref target="signedCode"/>, and is then "base64" encoded, as defined in 
        <xref target="encodedSignedCode"/>.  The Verification Code Token syntax is specified using  
        <xref target="RFC5234">Augmented Backus-Naur Form (ABNF) grammar</xref> as follows:</t>
        <figure>
          <preamble>Verification Code Token ABNF</preamble>
          <artwork><![CDATA[
token     = vsp-id "-" verification-id ; Verification Code Token
vsp-id    = 1*DIGIT                    ; VSP Identifier 
verification-id = 1*(DIGIT / ALPHA)    ; Verification Identifier]]></artwork>
        </figure>

        <t>For a VSP given VSP Identifier "1" and with a Verification Identifier 
        of "abc123", the resulting Verification Code Token is "1-abc123".  The 
        Verification Identifier MUST be unique within a VSP and the VSP Identifier 
        MUST be unique across supporting VSP's, so the Verification Code Token 
        MUST be unique to an individual verification.  The VSP Identifiers MAY require 
        registration within an IANA registry.</t>
        
        <section anchor="signedCode" title="Signed Code">
        
          <t>The &lt;verificationCode:signedCode&gt; is the fragment of XML that is 
          digitally signed using <xref target="W3C.CR-xmldsig-core2-20120124">XML Signature</xref>.  
          The &lt;verificationCode:signedCode&gt; element includes a required "id" attribute 
          of type XSD ID for use with an IDREF URI from the Signature element.
          The certificate of the issuer MUST be included with the Signature so it  
          can be chained with the issuer's certificate by the validating client.</t>
          
          <t>The &lt;verificationCode:signedCode&gt; element includes a REQUIRED 
          "type" attribute for use in defining the type of the signed code.  It is up to the VSP and the server 
          to define the valid values for the "type" attribute. Examples of possible "type" attribute 
          values include "domain" for verification of the domain name, "registrant" for verification 
          of the registrant contact, or "domain-registrant" for verification of both the domain name 
          and the registrant.  The typed signed code is used to indicate the verifications that 
          are done by the VSP.  The "type" attribute values MAY require registration within an IANA registry.</t>
          
          <t>A &lt;verificationCode:signedCode&gt; element substitutes for the &lt;verificationCode:abstractSignedCode&gt; 
          abstract element to define a concrete definition of a signed code.  The 
          &lt;verificationCode:abstractSignedCode&gt; element can be replaced by other signed code 
          definitions using the XML schema substitution groups feature.</t>
          
          <t>The child elements of the &lt;verificationCode:signedCode&gt; element include:</t>
          
       <t><list hangIndent="4" style="hanging">
        <t hangText="&lt;verificationCode:code&gt;">Contains the Verification Code Token as defined by the ABNF in <xref target="verificationCode"/>.</t>
        <t hangText="&lt;Signature&gt;"><xref target="W3C.CR-xmldsig-core2-20120124">XML Signature</xref> for the &lt;verificationCode:signedCode&gt;.  Use 
        of a namespace prefix, like "dsig", is recommended for the <xref target="W3C.CR-xmldsig-core2-20120124">XML Signature</xref> elements.</t>
       </list></t>
                  
       <figure>
            <preamble>Example of a "domain" typed signed code using the &lt;verificationCode:signedCode&gt; 
            element and <xref target="W3C.CR-xmldsig-core2-20120124">XML Signature</xref>:</preamble>

            <artwork><![CDATA[
<verificationCode:signedCode
  xmlns:verificationCode=
  "urn:ietf:params:xml:ns:verificationCode-1.0"
  id="signedCode">
  <verificationCode:code type="domain">1-abc111
  </verificationCode:code>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
    <CanonicalizationMethod
 Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    <SignatureMethod
 Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
    <Reference URI="#signedCode">
     <Transforms>
      <Transform
 Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
     </Transforms>
     <DigestMethod
 Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
 <DigestValue>wgyW3nZPoEfpptlhRILKnOQnbdtU6ArM7ShrAfHgDFg=
 </DigestValue>
    </Reference>
   </SignedInfo>
   <SignatureValue>
 jMu4PfyQGiJBF0GWSEPFCJjmywCEqR2h4LD+ge6XQ+JnmKFFCuCZS/3SLKAx0L1w
 QDFO2e0Y69k2G7/LGE37X3vOflobFM1oGwja8+GMVraoto5xAd4/AF7eHukgAymD
 o9toxoa2h0yV4A4PmXzsU6S86XtCcUE+S/WM72nyn47zoUCzzPKHZBRyeWehVFQ+
 jYRMIAMzM57HHQA+6eaXefRvtPETgUO4aVIVSugc4OUAZZwbYcZrC6wOaQqqqAZi
 30aPOBYbAvHMSmWSS+hFkbshomJfHxb97TD2grlYNrQIzqXk7WbHWy2SYdA+sI/Z
 ipJsXNa6osTUw1CzA7jfwA==
   </SignatureValue>
   <KeyInfo>
    <X509Data>
    <X509Certificate>
 MIIESTCCAzGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBiMQswCQYDVQQGEwJVUzEL
 MAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJQ0FO
 TiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0EwHhcNMTMwMjA4MDAw
 MDAwWhcNMTgwMjA3MjM1OTU5WjBsMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0Ex
 FDASBgNVBAcTC0xvcyBBbmdlbGVzMRcwFQYDVQQKEw5WYWxpZGF0b3IgVE1DSDEh
 MB8GA1UEAxMYVmFsaWRhdG9yIFRNQ0ggVEVTVCBDRVJUMIIBIjANBgkqhkiG9w0B
 AQEFAAOCAQ8AMIIBCgKCAQEAo/cwvXhbVYl0RDWWvoyeZpETVZVVcMCovUVNg/sw
 WinuMgEWgVQFrz0xA04pEhXCFVv4evbUpekJ5buqU1gmQyOsCKQlhOHTdPjvkC5u
 pDqa51Flk0TMaMkIQjs7aUKCmA4RG4tTTGK/EjR1ix8/D0gHYVRldy1YPrMP+ou7
 5bOVnIos+HifrAtrIv4qEqwLL4FTZAUpaCa2BmgXfy2CSRQbxD5Or1gcSa3vurh5
 sPMCNxqaXmIXmQipS+DuEBqMM8tldaN7RYojUEKrGVsNk5i9y2/7sjn1zyyUPf7v
 L4GgDYqhJYWV61DnXgx/Jd6CWxvsnDF6scscQzUTEl+hywIDAQABo4H/MIH8MAwG
 A1UdEwEB/wQCMAAwHQYDVR0OBBYEFPZEcIQcD/Bj2IFz/LERuo2ADJviMIGMBgNV
 HSMEgYQwgYGAFO0/7kEh3FuEKS+Q/kYHaD/W6wihoWakZDBiMQswCQYDVQQGEwJV
 UzELMAkGA1UECBMCQ0ExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRMwEQYDVQQKEwpJ
 Q0FOTiBUTUNIMRswGQYDVQQDExJJQ0FOTiBUTUNIIFRFU1QgQ0GCAQEwDgYDVR0P
 AQH/BAQDAgeAMC4GA1UdHwQnMCUwI6AhoB+GHWh0dHA6Ly9jcmwuaWNhbm4ub3Jn
 L3RtY2guY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQB2qSy7ui+43cebKUKwWPrzz9y/
 IkrMeJGKjo40n+9uekaw3DJ5EqiOf/qZ4pjBD++oR6BJCb6NQuQKwnoAz5lE4Ssu
 y5+i93oT3HfyVc4gNMIoHm1PS19l7DBKrbwbzAea/0jKWVzrvmV7TBfjxD3AQo1R
 bU5dBr6IjbdLFlnO5x0G0mrG7x5OUPuurihyiURpFDpwH8KAH1wMcCpXGXFRtGKk
 wydgyVYAty7otkl/z3bZkCVT34gPvF70sR6+QxUy8u0LzF5A/beYaZpxSYG31amL
 AdXitTWFipaIGea9lEGFM0L9+Bg7XzNn4nVLXokyEB3bgS4scG6QznX23FGk
   </X509Certificate>
   </X509Data>
   </KeyInfo>
  </Signature>
</verificationCode:signedCode>]]></artwork>
       </figure>
        
        
        </section>
        
        <section anchor="encodedSignedCode" title="Encoded Signed Code">
        
        <t>The &lt;verificationCode:encodedSignedCode&gt; element contains one or more 
        encoded form of the digitally signed &lt;verificationCode:signedCode&gt; element, described 
        in <xref target="signedCode"/>.  </t> 
        
        <t>The child elements of the &lt;verificationCode:encodedSignedCode&gt; element include:</t>
          
       <t><list hangIndent="4" style="hanging">
        <t hangText="&lt;verificationCode:code&gt;">One or more &lt;verificationCode:code&gt; elements that is an 
        encoded form of the digitally signed &lt;verificationCode:signedCode&gt; element, described 
        in <xref target="signedCode"/>, with the encoding defined by the "encoding" 
        attribute with the default "encoding" value of "base64".  The "base64" encoded text 
        of the &lt;verificationCode:code&gt; element MUST conform to <xref target="RFC2045"/>.</t>
       </list></t>

                
       <figure>
            <preamble>Example &lt;verificationCode:encodedSignedCode&gt; element that contains one "base64" encoded &lt;verificationCode:signedCode&gt; contained 
            in the &lt;verificationCode:code&gt; element:</preamble>

            <artwork><![CDATA[
<verificationCode:encodedSignedCode
  xmlns:verificationCode=
    "urn:ietf:params:xml:ns:verificationCode-1.0">
  <verificationCode:code>
ICAgICAgPHZlcmlmaWNhdGlvbkNvZGU6c2lnbmVkQ29kZQogICAgICAgIHhtbG5z
OnZlcmlmaWNhdGlvbkNvZGU9CiAgICAgICAgICAidXJuOmlldGY6cGFyYW1zOnht
bDpuczp2ZXJpZmljYXRpb25Db2RlLTEuMCIKICAgICAgICAgIGlkPSJzaWduZWRD
b2RlIj4KICAgCQk8dmVyaWZpY2F0aW9uQ29kZTpjb2RlPjEtYWJjMTIzPC92ZXJp
ZmljYXRpb25Db2RlOmNvZGU+CiAgPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgIDxTaWduZWRJbmZvPgogICAg
PENhbm9uaWNhbGl6YXRpb25NZXRob2QKIEFsZ29yaXRobT0iaHR0cDovL3d3dy53
My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8U2lnbmF0dXJlTWV0
aG9kCiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNp
Zy1tb3JlI3JzYS1zaGEyNTYiLz4KICAgIDxSZWZlcmVuY2UgVVJJPSIjc2lnbmVk
Q29kZSI+CiAgICAgPFRyYW5zZm9ybXM+CiAgICAgIDxUcmFuc2Zvcm0KIEFsZ29y
aXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3Bl
ZC1zaWduYXR1cmUiLz4KICAgICA8L1RyYW5zZm9ybXM+CiAgICAgPERpZ2VzdE1l
dGhvZAogQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVu
YyNzaGEyNTYiLz4KIDxEaWdlc3RWYWx1ZT53Z3lXM25aUG9FZnBwdGxoUklMS25P
UW5iZHRVNkFyTTdTaHJBZkhnREZnPTwvRGlnZXN0VmFsdWU+CiAgICA8L1JlZmVy
ZW5jZT4KICAgPC9TaWduZWRJbmZvPgogICA8U2lnbmF0dXJlVmFsdWU+CiBqTXU0
UGZ5UUdpSkJGMEdXU0VQRkNKam15d0NFcVIyaDRMRCtnZTZYUStKbm1LRkZDdUNa
Uy8zU0xLQXgwTDF3CiBRREZPMmUwWTY5azJHNy9MR0UzN1gzdk9mbG9iRk0xb0d3
amE4K0dNVnJhb3RvNXhBZDQvQUY3ZUh1a2dBeW1ECiBvOXRveG9hMmgweVY0QTRQ
bVh6c1U2Uzg2WHRDY1VFK1MvV003Mm55bjQ3em9VQ3p6UEtIWkJSeWVXZWhWRlEr
CiBqWVJNSUFNek01N0hIUUErNmVhWGVmUnZ0UEVUZ1VPNGFWSVZTdWdjNE9VQVpa
d2JZY1pyQzZ3T2FRcXFxQVppCiAzMGFQT0JZYkF2SE1TbVdTUytoRmtic2hvbUpm
SHhiOTdURDJncmxZTnJRSXpxWGs3V2JIV3kyU1lkQStzSS9aCiBpcEpzWE5hNm9z
VFV3MUN6QTdqZndBPT0KICAgPC9TaWduYXR1cmVWYWx1ZT4KICAgPEtleUluZm8+
CiAgICA8WDUwOURhdGE+CiAgICA8WDUwOUNlcnRpZmljYXRlPgogTUlJRVNUQ0NB
ekdnQXdJQkFnSUJBakFOQmdrcWhraUc5dzBCQVFzRkFEQmlNUXN3Q1FZRFZRUUdF
d0pWVXpFTAogTUFrR0ExVUVDQk1DUTBFeEZEQVNCZ05WQkFjVEMweHZjeUJCYm1k
bGJHVnpNUk13RVFZRFZRUUtFd3BKUTBGTwogVGlCVVRVTklNUnN3R1FZRFZRUURF
eEpKUTBGT1RpQlVUVU5JSUZSRlUxUWdRMEV3SGhjTk1UTXdNakE0TURBdwogTURB
d1doY05NVGd3TWpBM01qTTFPVFU1V2pCc01Rc3dDUVlEVlFRR0V3SlZVekVMTUFr
R0ExVUVDQk1DUTBFeAogRkRBU0JnTlZCQWNUQzB4dmN5QkJibWRsYkdWek1SY3dG
UVlEVlFRS0V3NVdZV3hwWkdGMGIzSWdWRTFEU0RFaAogTUI4R0ExVUVBeE1ZVm1G
c2FXUmhkRzl5SUZSTlEwZ2dWRVZUVkNCRFJWSlVNSUlCSWpBTkJna3Foa2lHOXcw
QgogQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBby9jd3ZYaGJWWWwwUkRXV3ZveWVa
cEVUVlpWVmNNQ292VVZOZy9zdwogV2ludU1nRVdnVlFGcnoweEEwNHBFaFhDRlZ2
NGV2YlVwZWtKNWJ1cVUxZ21ReU9zQ0tRbGhPSFRkUGp2a0M1dQogcERxYTUxRmxr
MFRNYU1rSVFqczdhVUtDbUE0Ukc0dFRUR0svRWpSMWl4OC9EMGdIWVZSbGR5MVlQ
ck1QK291NwogNWJPVm5Jb3MrSGlmckF0ckl2NHFFcXdMTDRGVFpBVXBhQ2EyQm1n
WGZ5MkNTUlFieEQ1T3IxZ2NTYTN2dXJoNQogc1BNQ054cWFYbUlYbVFpcFMrRHVF
QnFNTTh0bGRhTjdSWW9qVUVLckdWc05rNWk5eTIvN3NqbjF6eXlVUGY3dgogTDRH
Z0RZcWhKWVdWNjFEblhneC9KZDZDV3h2c25ERjZzY3NjUXpVVEVsK2h5d0lEQVFB
Qm80SC9NSUg4TUF3RwogQTFVZEV3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZQWkVj
SVFjRC9CajJJRnovTEVSdW8yQURKdmlNSUdNQmdOVgogSFNNRWdZUXdnWUdBRk8w
LzdrRWgzRnVFS1MrUS9rWUhhRC9XNndpaG9XYWtaREJpTVFzd0NRWURWUVFHRXdK
VgogVXpFTE1Ba0dBMVVFQ0JNQ1EwRXhGREFTQmdOVkJBY1RDMHh2Y3lCQmJtZGxi
R1Z6TVJNd0VRWURWUVFLRXdwSgogUTBGT1RpQlVUVU5JTVJzd0dRWURWUVFERXhK
SlEwRk9UaUJVVFVOSUlGUkZVMVFnUTBHQ0FRRXdEZ1lEVlIwUAogQVFIL0JBUURB
Z2VBTUM0R0ExVWRId1FuTUNVd0k2QWhvQitHSFdoMGRIQTZMeTlqY213dWFXTmhi
bTR1YjNKbgogTDNSdFkyZ3VZM0pzTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFC
MnFTeTd1aSs0M2NlYktVS3dXUHJ6ejl5LwogSWtyTWVKR0tqbzQwbis5dWVrYXcz
REo1RXFpT2YvcVo0cGpCRCsrb1I2QkpDYjZOUXVRS3dub0F6NWxFNFNzdQogeTUr
aTkzb1QzSGZ5VmM0Z05NSW9IbTFQUzE5bDdEQktyYndiekFlYS8waktXVnpydm1W
N1RCZmp4RDNBUW8xUgogYlU1ZEJyNklqYmRMRmxuTzV4MEcwbXJHN3g1T1VQdXVy
aWh5aVVScEZEcHdIOEtBSDF3TWNDcFhHWEZSdEdLawogd3lkZ3lWWUF0eTdvdGts
L3ozYlprQ1ZUMzRnUHZGNzBzUjYrUXhVeTh1MEx6RjVBL2JlWWFacHhTWUczMWFt
TAogQWRYaXRUV0ZpcGFJR2VhOWxFR0ZNMEw5K0JnN1h6Tm40blZMWG9reUVCM2Jn
UzRzY0c2UXpuWDIzRkdrCiAgIDwvWDUwOUNlcnRpZmljYXRlPgogICA8L1g1MDlE
YXRhPgogICA8L0tleUluZm8+CiAgPC9TaWduYXR1cmU+CgkJPC92ZXJpZmljYXRp
b25Db2RlOnNpZ25lZENvZGU+Cg==
  </verificationCode:code>
</verificationCode:encodedSignedCode>]]></artwork>
       </figure>


       <figure>
            <preamble>Example &lt;verificationCode:encodedSignedCode&gt; element that contains two &lt;verificationCode:code&gt; elements ;.</preamble>

            <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  <command>
    <create>
      <domain:create
       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
        <domain:name>domain.example</domain:name>
        <domain:registrant>jd1234</domain:registrant>
        <domain:contact type="admin">sh8013</domain:contact>
        <domain:contact type="tech">sh8013</domain:contact>
        <domain:authInfo>
          <domain:pw>2fooBAR</domain:pw>
        </domain:authInfo>
      </domain:create>
    </create>
    <extension>
      <verificationCode:encodedSignedCode
        xmlns:verificationCode=
          "urn:ietf:params:xml:ns:verificationCode-1.0">
        <verificationCode:code>
ICAgICAgPHZlcmlmaWNhdGlvbkNvZGU6c2lnbmVkQ29kZQogICAgICAgIHhtbG5z
OnZlcmlmaWNhdGlvbkNvZGU9CiAgICAgICAgICAidXJuOmlldGY6cGFyYW1zOnht
bDpuczp2ZXJpZmljYXRpb25Db2RlLTEuMCIKICAgICAgICAgIGlkPSJzaWduZWRD
b2RlIj4KICAgCQk8dmVyaWZpY2F0aW9uQ29kZTpjb2RlPjEtYWJjMTIzPC92ZXJp
ZmljYXRpb25Db2RlOmNvZGU+CiAgPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgIDxTaWduZWRJbmZvPgogICAg
PENhbm9uaWNhbGl6YXRpb25NZXRob2QKIEFsZ29yaXRobT0iaHR0cDovL3d3dy53
My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8U2lnbmF0dXJlTWV0
aG9kCiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNp
Zy1tb3JlI3JzYS1zaGEyNTYiLz4KICAgIDxSZWZlcmVuY2UgVVJJPSIjc2lnbmVk
Q29kZSI+CiAgICAgPFRyYW5zZm9ybXM+CiAgICAgIDxUcmFuc2Zvcm0KIEFsZ29y
aXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3Bl
ZC1zaWduYXR1cmUiLz4KICAgICA8L1RyYW5zZm9ybXM+CiAgICAgPERpZ2VzdE1l
dGhvZAogQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVu
YyNzaGEyNTYiLz4KIDxEaWdlc3RWYWx1ZT53Z3lXM25aUG9FZnBwdGxoUklMS25P
UW5iZHRVNkFyTTdTaHJBZkhnREZnPTwvRGlnZXN0VmFsdWU+CiAgICA8L1JlZmVy
ZW5jZT4KICAgPC9TaWduZWRJbmZvPgogICA8U2lnbmF0dXJlVmFsdWU+CiBqTXU0
UGZ5UUdpSkJGMEdXU0VQRkNKam15d0NFcVIyaDRMRCtnZTZYUStKbm1LRkZDdUNa
Uy8zU0xLQXgwTDF3CiBRREZPMmUwWTY5azJHNy9MR0UzN1gzdk9mbG9iRk0xb0d3
amE4K0dNVnJhb3RvNXhBZDQvQUY3ZUh1a2dBeW1ECiBvOXRveG9hMmgweVY0QTRQ
bVh6c1U2Uzg2WHRDY1VFK1MvV003Mm55bjQ3em9VQ3p6UEtIWkJSeWVXZWhWRlEr
CiBqWVJNSUFNek01N0hIUUErNmVhWGVmUnZ0UEVUZ1VPNGFWSVZTdWdjNE9VQVpa
d2JZY1pyQzZ3T2FRcXFxQVppCiAzMGFQT0JZYkF2SE1TbVdTUytoRmtic2hvbUpm
SHhiOTdURDJncmxZTnJRSXpxWGs3V2JIV3kyU1lkQStzSS9aCiBpcEpzWE5hNm9z
VFV3MUN6QTdqZndBPT0KICAgPC9TaWduYXR1cmVWYWx1ZT4KICAgPEtleUluZm8+
CiAgICA8WDUwOURhdGE+CiAgICA8WDUwOUNlcnRpZmljYXRlPgogTUlJRVNUQ0NB
ekdnQXdJQkFnSUJBakFOQmdrcWhraUc5dzBCQVFzRkFEQmlNUXN3Q1FZRFZRUUdF
d0pWVXpFTAogTUFrR0ExVUVDQk1DUTBFeEZEQVNCZ05WQkFjVEMweHZjeUJCYm1k
bGJHVnpNUk13RVFZRFZRUUtFd3BKUTBGTwogVGlCVVRVTklNUnN3R1FZRFZRUURF
eEpKUTBGT1RpQlVUVU5JSUZSRlUxUWdRMEV3SGhjTk1UTXdNakE0TURBdwogTURB
d1doY05NVGd3TWpBM01qTTFPVFU1V2pCc01Rc3dDUVlEVlFRR0V3SlZVekVMTUFr
R0ExVUVDQk1DUTBFeAogRkRBU0JnTlZCQWNUQzB4dmN5QkJibWRsYkdWek1SY3dG
UVlEVlFRS0V3NVdZV3hwWkdGMGIzSWdWRTFEU0RFaAogTUI4R0ExVUVBeE1ZVm1G
c2FXUmhkRzl5SUZSTlEwZ2dWRVZUVkNCRFJWSlVNSUlCSWpBTkJna3Foa2lHOXcw
QgogQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBby9jd3ZYaGJWWWwwUkRXV3ZveWVa
cEVUVlpWVmNNQ292VVZOZy9zdwogV2ludU1nRVdnVlFGcnoweEEwNHBFaFhDRlZ2
NGV2YlVwZWtKNWJ1cVUxZ21ReU9zQ0tRbGhPSFRkUGp2a0M1dQogcERxYTUxRmxr
MFRNYU1rSVFqczdhVUtDbUE0Ukc0dFRUR0svRWpSMWl4OC9EMGdIWVZSbGR5MVlQ
ck1QK291NwogNWJPVm5Jb3MrSGlmckF0ckl2NHFFcXdMTDRGVFpBVXBhQ2EyQm1n
WGZ5MkNTUlFieEQ1T3IxZ2NTYTN2dXJoNQogc1BNQ054cWFYbUlYbVFpcFMrRHVF
QnFNTTh0bGRhTjdSWW9qVUVLckdWc05rNWk5eTIvN3NqbjF6eXlVUGY3dgogTDRH
Z0RZcWhKWVdWNjFEblhneC9KZDZDV3h2c25ERjZzY3NjUXpVVEVsK2h5d0lEQVFB
Qm80SC9NSUg4TUF3RwogQTFVZEV3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZQWkVj
SVFjRC9CajJJRnovTEVSdW8yQURKdmlNSUdNQmdOVgogSFNNRWdZUXdnWUdBRk8w
LzdrRWgzRnVFS1MrUS9rWUhhRC9XNndpaG9XYWtaREJpTVFzd0NRWURWUVFHRXdK
VgogVXpFTE1Ba0dBMVVFQ0JNQ1EwRXhGREFTQmdOVkJBY1RDMHh2Y3lCQmJtZGxi
R1Z6TVJNd0VRWURWUVFLRXdwSgogUTBGT1RpQlVUVU5JTVJzd0dRWURWUVFERXhK
SlEwRk9UaUJVVFVOSUlGUkZVMVFnUTBHQ0FRRXdEZ1lEVlIwUAogQVFIL0JBUURB
Z2VBTUM0R0ExVWRId1FuTUNVd0k2QWhvQitHSFdoMGRIQTZMeTlqY213dWFXTmhi
bTR1YjNKbgogTDNSdFkyZ3VZM0pzTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFC
MnFTeTd1aSs0M2NlYktVS3dXUHJ6ejl5LwogSWtyTWVKR0tqbzQwbis5dWVrYXcz
REo1RXFpT2YvcVo0cGpCRCsrb1I2QkpDYjZOUXVRS3dub0F6NWxFNFNzdQogeTUr
aTkzb1QzSGZ5VmM0Z05NSW9IbTFQUzE5bDdEQktyYndiekFlYS8waktXVnpydm1W
N1RCZmp4RDNBUW8xUgogYlU1ZEJyNklqYmRMRmxuTzV4MEcwbXJHN3g1T1VQdXVy
aWh5aVVScEZEcHdIOEtBSDF3TWNDcFhHWEZSdEdLawogd3lkZ3lWWUF0eTdvdGts
L3ozYlprQ1ZUMzRnUHZGNzBzUjYrUXhVeTh1MEx6RjVBL2JlWWFacHhTWUczMWFt
TAogQWRYaXRUV0ZpcGFJR2VhOWxFR0ZNMEw5K0JnN1h6Tm40blZMWG9reUVCM2Jn
UzRzY0c2UXpuWDIzRkdrCiAgIDwvWDUwOUNlcnRpZmljYXRlPgogICA8L1g1MDlE
YXRhPgogICA8L0tleUluZm8+CiAgPC9TaWduYXR1cmU+CgkJPC92ZXJpZmljYXRp
b25Db2RlOnNpZ25lZENvZGU+Cg==
        </verificationCode:code>
        <verificationCode:code>
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48dmVyaWZpY2F0
aW9uQ29kZTpzaWduZWRDb2RlIHhtbG5zOnZlcmlmaWNhdGlvbkNvZGU9InVybjpp
ZXRmOnBhcmFtczp4bWw6bnM6dmVyaWZpY2F0aW9uQ29kZS0xLjAiIGlkPSJzaWdu
ZWRDb2RlIiB0eXBlPSJyZWdpc3RyYW50Ij48dmVyaWZpY2F0aW9uQ29kZTpjb2Rl
PjEtYWJjMjIyPC92ZXJpZmljYXRpb25Db2RlOmNvZGU+PGRzaWc6U2lnbmF0dXJl
IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMi
Pjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBB
bGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRu
LTIwMDEwMzE1I1dpdGhDb21tZW50cyIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBB
bGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Et
c2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNzaWduZWRDb2RlIj48ZHNpZzpU
cmFuc2Zvcm1zPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9k
c2lnOlRyYW5zZm9ybXM+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0
cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzaWc6RGln
ZXN0VmFsdWU+SFg2TU1WUWdnSStzNG9tT3haYjBGTW1VSlBRdk15WmUybDVEdEhh
QlZMND08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6
U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5VOUhPNVlYVWE0ZUsyYXRz
U1RuQk1DU3dXM0dWUzZnUEtkaDBZTlZicERud1d4b1BtYlR2YkVsNDE4NFlKZ3Uw
WXB3RkROMmZLY3JVCk1YV0hncE56K0oycTh6MWpTcVJMUEw0UmpnRWw0eGhiOXl5
cExOZC8xQXJXRVlhWWZEdUc1S3FYV05MRG5YVzJoQkEzK0R5Wk82MFQKcTVPd0R5
ZVFSVlNPVWNXVE9FOTJsSlZ4M014Q1V6d1hoL0ZOSTlPbGtXK0ZPNVZNNTZlTmZq
UEhkUlJVdjdzQzRmM0NnWmFaSWFXNQp2RmJnTmJodFJVa0hsSVhnYVNGWDgvcFdV
RXFIY0dLTUxnRU1nbHBnQ3RtOFlIcXVqb0tXUk0yUDNiK2h3ZTRsU0hSWVRjK0pB
eEluClU4RDc1WnliWThnSWFuZUprS2dwVTk2T0tJTGQ5L0l0UVhaeHZnPT08L2Rz
aWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48
ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRGlUQ0NBbkdnQXdJQkFnSUVmcXE2SFRB
TkJna3Foa2lHOXcwQkFRc0ZBREIxTVJBd0RnWURWUVFHRXdkVmJtdHViM2R1TVJB
dwpEZ1lEVlFRSUV3ZFZibXR1YjNkdU1SQXdEZ1lEVlFRSEV3ZFZibXR1YjNkdU1S
QXdEZ1lEVlFRS0V3ZFZibXR1YjNkdU1SQXdEZ1lEClZRUUxFd2RWYm10dWIzZHVN
Umt3RndZRFZRUURFeEIyWlhKcFptbGpZWFJwYjI1RGIyUmxNQjRYRFRFMU1EWXhO
VEl4TURBeU1sb1gKRFRNMU1EWXhNREl4TURBeU1sb3dkVEVRTUE0R0ExVUVCaE1I
Vlc1cmJtOTNiakVRTUE0R0ExVUVDQk1IVlc1cmJtOTNiakVRTUE0RwpBMVVFQnhN
SFZXNXJibTkzYmpFUU1BNEdBMVVFQ2hNSFZXNXJibTkzYmpFUU1BNEdBMVVFQ3hN
SFZXNXJibTkzYmpFWk1CY0dBMVVFCkF4TVFkbVZ5YVdacFkyRjBhVzl1UTI5a1pU
Q0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUpjY2pY
cmsKUWFJL2lHUEZ3WmVITjFnRFVhcTltVnJmQis2eWR5Qmdoc2FHVFZoaERIOFNO
TmtpamxIMkxCQ3J3TjhjVjhQZ1BPOXRwbG9rR2F5UwpxNktFaHZtTk03b1dsZk5L
SkdSdGNidGMzTnJuYzhiUUJacU1xcFo0UlNRTmh5QWh6Ri85UmErd3RFc0JWeGF3
VDc1L2J0SDZ1YytmClJOdE5FcmhJdVlJUmN0WTZIRmRaR3BlS3cxYnlYK0RsNkJP
L3ZLdnQ4NDllY1R3aEZIcDUwWGh2NFVTL0Z5aWVLaGs3dDdHRnJGRlQKL2NCTGsy
WmxFa1lLcFlEU2dlc2lseFg2QkpTZVdCbXZLQzlTL2pBZDhNWmRHVUg2aHNHRXBl
U1BmZkZQV3FWcXl6V0p5bG91OXF4ZQpnUTZjOFo2SVpXZkUzakxSOUVySDhzOTFD
Mm1pTFZrQ0F3RUFBYU1oTUI4d0hRWURWUjBPQkJZRUZIY0JLdk03dmk3dUZNTUx5
ZE43CmVGVXF2YzVVTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBVjB2cmlrSWRB
d2l4THZ0NUx5eXpTNFdTU1d0dVlWL2JQMVg3NzVMRmYKSWh3a2xoMENidk5rYXlK
Tms2Tnp0eDlSc1AwNWZndkxrZER1N0V5cnRzY3I1ZVdETG1WMGtKMWE1N1Z4bnJh
aEdLTnM2Wit1Ui9pSApMaTJXb3liWEpFT2N0NWtJSjFzL05CeUUrdkdGdjFoTmJz
dVVVUEVCYWVtaWpYUFROOWxxZE9uM1FIbktobXhsa1czYS9KbmhtT20vCkRWYTE0
NDJXTVVUSlUyVFlWVldtdUs2NFkwQXFrN2FldzkvVzIzZEcrT2xhOW9VYnBrSXJr
dDRDN3hRa0d5SXN2eUo3bi91OFhBRDIKbno1T1cvek5GWnlrZDAzT2N3M240NkZx
c1IwVDlBbFBEWHQxUjlmMjZMd1lxdjk3dWtVNEcrMVRJNHorV0F2TCtVRk9FVnNu
PC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktl
eUluZm8+PC9kc2lnOlNpZ25hdHVyZT48L3ZlcmlmaWNhdGlvbkNvZGU6c2lnbmVk
Q29kZT4=
        </verificationCode:code>
    </verificationCode:encodedSignedCode>
    </extension>
    <clTRID>ABC-12345</clTRID>
  </command>
</epp>]]></artwork>
       </figure>

        
        </section>
        
      </section> 
      
      <section anchor="verificationProfile" title="Verification Profile">
      	<t>A Verification Profile defines the set of verification code types, 
      	the commands that the verification code types are required, supported, 
      	or not supported, and the grace period by which the verification code 
      	types MUST be set.  A server MAY support many verification profiles, 
      	each with a unique name and a unique verification policy that is implemented 
      	by the server.  Each client MAY have zero or more server assigned verification profiles 
      	that will enforce the required verification policies.  Most likely a client 
      	will be assigned zero or one server assigned verification profile, but overlapping 
      	profiles is possible.  Overlapping verification profiles MUST be treated as a logical 
      	"and" of the policies by the server.  If no verification profile is 
      	assigned to the client, no additional verification is required by the client.</t>
      </section>
      
 
    </section>

    <section anchor="commands" title="EPP Command Mapping">
      <t>A detailed description of the EPP syntax and semantics can be found
      in the EPP core protocol specification <xref target="RFC5730"/>.</t>
      
      <section anchor="queryCommands" title="EPP Query Commands">
      
        <t>EPP provides three commands to retrieve object information: &lt;check&gt; to determine 
        if an object is known to the server, &lt;info&gt; to retrieve detailed information associated 
        with an object, and &lt;transfer&gt; to retrieve object transfer status information.</t>

      <section anchor="checkCommand" title="EPP &lt;check&gt; Command">
      
       <t>This extension does not add any elements to the EPP &lt;check&gt; command or &lt;check&gt; response 
       described in the <xref target="RFC5730"/>.</t>   
      
      </section>

      <!-- end CHECK command -->

      <section anchor="infoCommand" title="EPP &lt;info&gt; Command">
       <t>This extension defines additional elements to extend the EPP
        &lt;info&gt; command of an object mapping like the <xref
      	target="RFC5731">EPP domain name mapping</xref>, <xref target="RFC5732">EPP host mapping</xref>, 
      	and <xref target="RFC5733">EPP contact mapping</xref>.</t>
        
        <t>The EPP &lt;info&gt; command is used to retrieve the verification information.  
        The verification information is based on the verification profile, as defined in <xref target="verificationProfile"/>, 
        set in the server for the client.  The &lt;verificationCode:info&gt; element is an empty 
        element that indicates that the client requests the verification information.  The 
        OPTIONAL "profile" attribute can be used by the client to explicitly specify a verification profile, 
        as defined in <xref target="verificationProfile"/>, to base the verification information on.  
        It is up to server policy on the set of verification profiles that the client is allowed to explicitly specify, 
        and if the client is not allowed, the server MUST return the 2201 error response.</t>
        
          <figure>
            <preamble>Example &lt;info&gt; domain command with the
            &lt;verificationCode:info&gt; extension to retrieve the 
            verification information for the domain "domain.example", using the 
            profiles associated with the client:</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>domain.example</domain:name>
C:      </domain:info>
C:    </info>
C:    <extension>
C:      <verificationCode:info 
C:        xmlns:verificationCode=
C:          "urn:ietf:params:xml:ns:verificationCode-1.0"/>
C:    </extension>
C:    <clTRID>ABC-12345</clTRID>
C:  </command>
C:</epp>]]></artwork>
          </figure>

          <figure>
            <preamble>Example &lt;info&gt; domain command with the
            &lt;verificationCode:info&gt; extension to retrieve the 
            verification information for the domain "domain.example", using the 
            profiles associated with the client and with 
            the authorization information to retrieve the 
            verification codes from the non-sponsoring client:</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>domain.example</domain:name>
C:        <domain:authInfo>
C:          <domain:pw>2fooBAR</domain:pw>
C:        </domain:authInfo>
C:      </domain:info>
C:    </info>
C:    <extension>
C:      <verificationCode:info 
C:        xmlns:verificationCode=
C:          "urn:ietf:params:xml:ns:verificationCode-1.0"/>
C:    </extension>
C:    <clTRID>ABC-12345</clTRID>
C:  </command>
C:</epp>]]></artwork>
          </figure>


          <figure>
            <preamble>Example &lt;info&gt; domain command with the
            &lt;verificationCode:info&gt; extension to retrieve the 
            verification information for the domain "domain.example", using the 
            the "sample" profile:</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>domain.example</domain:name>
C:      </domain:info>
C:    </info>
C:    <extension>
C:      <verificationCode:info 
C:        xmlns:verificationCode=
C:          "urn:ietf:params:xml:ns:verificationCode-1.0"
C:        profile="sample"/>
C:    </extension>
C:    <clTRID>ABC-12345</clTRID>
C:  </command>
C:</epp>]]></artwork>
          </figure>


          <t>If the query was successful, the server replies with a
          &lt;verificationCode:infData&gt; element along with the regular EPP
          &lt;resData&gt;. The &lt;verificationCode:infData&gt; element contains the following
          child elements:</t>
          <t><list hangIndent="4" style="hanging">
              <t hangText="&lt;verificationCode:status&gt;">The status of the verification for 
              the object, using all of the verification profiles assigned to the client.  
              There are four possible values for the status:</t>
                <t><list hangIndent="4" style="hanging">
                  <t hangText="notApplicable">The  status is not applicable to the client since there is no assigned verification profile.</t>
                  <t hangText="nonCompliant">The object is non-compliant according to the verification profiles.  If at least one 
                  of the profiles is "nonCompliant", the object is "nonCompliant".</t>
                  <t hangText="pendingCompliance">The object is not in compliance with the verification profiles, 
                  but has a grace period to set the required set of verification codes, as reflected by the 
                  due date of the verification code type.  If at least one of the profiles is "pendingCompliance" and 
                  none of the profiles is "nonCompliant", the object is "pendingCompliance".</t>
                  <t hangText="compliant">The object is compliant with the verification profiles.  If All of the 
                  profiles for the object are "compliant" or if the object has no assignd profiles, the object is "compliant".</t>
                </list></t>

				  <t hangText="&lt;verificationCode:profile&gt;">Zero or more OPTIONAL &lt;verificationCode:profile&gt; elements that 
				  defines the verification status of the object based on the profile.  The required "name" attribute defines the name of 
				  the profile.  The &lt;verificationCode:profile&gt; element contains the following child elements:</t>
				     <t><list hangIndent="4" style="hanging">
						  <t hangText="&lt;verificationCode:status&gt;">The status of the verification for 
						  the object and the profile.  There are four possible values for the status:</t>
                      <t><list hangIndent="4" style="hanging">
                  	   <t hangText="notApplicable">The profile status is not applicable to the client based on the assigned verification profiles or the profile specified.</t>
                        <t hangText="nonCompliant">The object is non-compliant according to the verification profile.</t>
                        <t hangText="pendingCompliance">The object is not in compliance with the verification profile, 
                        but has a grace period to set the required set of verification codes, as reflected by the 
                        due date of the verification code type.</t>
                        <t hangText="compliant">The object is compliant with the verification profile.</t>
                     </list></t>
					    <t hangText="&lt;verificationCode:missing&gt;">OPTIONAL list of missing verification code types.  The &lt;verificationCode:missing&gt; element is 
					    returned only if there is at least one missing verification code type and based on server policy.  The &lt;verificationCode:missing&gt; element contains the following 
					    child elements:</t>
						   <t><list hangIndent="4" style="hanging">
							  <t hangText="&lt;verificationCode:code&gt;">One or more &lt;verificationCode:code&gt; elements that is empty with 
							  the REQUIRED "type" attribute that indicates the verification code type and the  
							  REQUIRED "due" attribute that indicates when the verification code type was or is due.  Past due verification code types will 
							  result in the &lt;verificationCode:status&gt; element being set to "nonCompliant".</t>
						   </list></t>
	
					    <t hangText="&lt;verificationCode:set&gt;">OPTIONAL list of set verification codes.  The &lt;verificationCode:set&gt; element is returned 
					    only if there is at least one set verification code.  The &lt;verificationCode:set&gt; element contains the following child 
					    elements:</t>
						   <t><list hangIndent="4" style="hanging">
							  <t hangText="&lt;verificationCode:code&gt;">One or more &lt;verificationCode:code&gt; elements containing the verification code  
								  with a REQUIRED "type" attribute that indicates the code type and a REQUIRED "date" attribute that indicates when the 
						  		  verification code was set.  The inclusion of the code value is up server policy, so if the server determines that the 
								  code value cannot be exposed to a non-sponsoring client, the &lt;verificationCode:code&gt; element MUST be empty.</t>
						   </list></t>
                 
			     </list></t>
                                
          </list></t>

          <figure>
            <preamble>Example &lt;info&gt; domain response using the 
            &lt;verificationCode:infData&gt; extension for 
            a compliant domain using the "sample" profile, and 
            with the two verification codes, from the sponsoring or 
            authorized client:</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>domain.example</domain:name>
S:        <domain:roid>DOMAIN-REP</domain:roid>
S:        <domain:status s="ok"/>
S:        <domain:clID>ClientX</domain:clID>
S:        <domain:crID>ClientY</domain:crID>
S:        <domain:crDate>2010-04-03T22:00:00.0Z
S:        </domain:crDate>
S:        <domain:exDate>2015-04-03T22:00:00.0Z
S:        </domain:exDate>
S:        <domain:authInfo>
S:          <domain:pw>2fooBAR</domain:pw>
S:        </domain:authInfo>
S:      </domain:infData>
S:    </resData>
S:    <extension>
S:      <verificationCode:infData 
S:        xmlns:verificationCode=
S:        "urn:ietf:params:xml:ns:verificationCode-1.0">
S:        <verificationCode:status>compliant
S:        </verificationCode:status>
S:        <verificationCode:profile name="sample">
S:          <verificationCode:status>compliant
S:          </verificationCode:status>
S:          <verificationCode:set>
S:            <verificationCode:code type="domain"  
S:              date="2010-04-03T22:00:00.0Z">1-abc333
S:            </verificationCode:code>
S:            <verificationCode:code type="registrant" 
S:              date="2010-04-03T22:00:00.0Z">1-abc444
S:            </verificationCode:code>
S:          </verificationCode:set>
S:        </verificationCode:profile>
S:      </verificationCode:infData>
S:    </extension>
S:    <trID>
S:      <clTRID>ABC-12345</clTRID>
S:      <svTRID>54322-XYZ</svTRID>
S:    </trID>
S:  </response>
S:</epp>]]></artwork>
          </figure>

          <figure>
            <preamble>Example &lt;info&gt; domain response using the 
            &lt;verificationCode:infData&gt; extension for 
            a compliant domain using the "sample" profile, and 
            with the two verification codes, from the sponsoring or 
            authorized client that also includes codes 
            set for the "sample2" profile:</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>domain.example</domain:name>
S:        <domain:roid>DOMAIN-REP</domain:roid>
S:        <domain:status s="ok"/>
S:        <domain:clID>ClientX</domain:clID>
S:        <domain:crID>ClientY</domain:crID>
S:        <domain:crDate>2010-04-03T22:00:00.0Z
S:        </domain:crDate>
S:        <domain:exDate>2015-04-03T22:00:00.0Z
S:        </domain:exDate>
S:        <domain:authInfo>
S:          <domain:pw>2fooBAR</domain:pw>
S:        </domain:authInfo>
S:      </domain:infData>
S:    </resData>
S:    <extension>
S:      <verificationCode:infData 
S:        xmlns:verificationCode=
S:        "urn:ietf:params:xml:ns:verificationCode-1.0">
S:        <verificationCode:status>compliant
S:        </verificationCode:status>
S:        <verificationCode:profile name="sample">
S:          <verificationCode:status>compliant
S:          </verificationCode:status>
S:          <verificationCode:set>
S:            <verificationCode:code type="domain"  
S:              date="2010-04-03T22:00:00.0Z">1-abc333
S:            </verificationCode:code>
S:            <verificationCode:code type="registrant" 
S:              date="2010-04-03T22:00:00.0Z">1-abc444
S:            </verificationCode:code>
S:          </verificationCode:set>
S:        </verificationCode:profile>
S:        <verificationCode:profile name="sample2">
S:          <verificationCode:status>notApplicable
S:          </verificationCode:status>
S:          <verificationCode:set>
S:            <verificationCode:code type="domain"  
S:              date="2010-04-03T22:00:00.0Z">2-abc555
S:            </verificationCode:code>
S:          </verificationCode:set>
S:        </verificationCode:profile>
S:      </verificationCode:infData>
S:    </extension>
S:    <trID>
S:      <clTRID>ABC-12345</clTRID>
S:      <svTRID>54322-XYZ</svTRID>
S:    </trID>
S:  </response>
S:</epp>]]></artwork>
          </figure>


          <figure>
            <preamble>Example &lt;info&gt; domain response using the 
            &lt;verificationCode:infData&gt; extension for 
            a compliant domain using the "sample" profile, and 
            with the two verification code types, from the non-sponsoring
            client:</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>domain.example</domain:name>
S:        <domain:roid>DOMAIN-REP</domain:roid>
S:        <domain:status s="ok"/>
S:        <domain:clID>ClientX</domain:clID>
S:        <domain:crID>ClientY</domain:crID>
S:        <domain:crDate>2010-04-03T22:00:00.0Z
S:        </domain:crDate>
S:        <domain:exDate>2015-04-03T22:00:00.0Z
S:        </domain:exDate>
S:      </domain:infData>
S:    </resData>
S:    <extension>
S:      <verificationCode:infData 
S:        xmlns:verificationCode=
S:        "urn:ietf:params:xml:ns:verificationCode-1.0">
S:        <verificationCode:status>compliant
S:        </verificationCode:status>
S:        <verificationCode:profile name="sample">
S:          <verificationCode:status>compliant
S:          </verificationCode:status>
S:          <verificationCode:set>
S:            <verificationCode:code type="domain"  
S:              date="2010-04-03T22:00:00.0Z"/>
S:            <verificationCode:code type="registrant" 
S:              date="2010-04-03T22:00:00.0Z"/>
S:          </verificationCode:set>
S:        </verificationCode:profile>
S:      </verificationCode:infData>
S:    </extension>
S:    <trID>
S:      <clTRID>ABC-12345</clTRID>
S:      <svTRID>54322-XYZ</svTRID>
S:    </trID>
S:  </response>
S:</epp>]]></artwork>
          </figure>


          <figure>
            <preamble>Example &lt;info&gt; domain response using the 
            &lt;verificationCode:infData&gt; extension for 
            a non-compliant domain using the "sample" profile, and 
            with the verification code types missing along with
            their due dates:</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>domain.example</domain:name>
S:        <domain:roid>DOMAIN-REP</domain:roid>
S:        <domain:status s="serverHold"/>
S:        <domain:clID>ClientX</domain:clID>
S:        <domain:crID>ClientY</domain:crID>
S:        <domain:crDate>2010-04-03T22:00:00.0Z
S:        </domain:crDate>
S:        <domain:exDate>2015-04-03T22:00:00.0Z
S:        </domain:exDate>
S:      </domain:infData>
S:    </resData>
S:    <extension>
S:      <verificationCode:infData 
S:        xmlns:verificationCode=
S:        "urn:ietf:params:xml:ns:verificationCode-1.0">
S:        <verificationCode:status>nonCompliant
S:        </verificationCode:status>
S:        <verificationCode:profile name="sample">
S:          <verificationCode:status>nonCompliant
S:          </verificationCode:status>
S:          <verificationCode:missing>
S:            <verificationCode:code 
S:              type="domain" 
S:              due="2010-04-03T22:00:00.0Z"/>
S:            <verificationCode:code
S:              type="registrant"
S:              due="2010-04-08T22:00:00.0Z"/>
S:          </verificationCode:missing>
S:        </verificationCode:profile>
S:      </verificationCode:infData>
S:    </extension>
S:    <trID>
S:      <clTRID>ABC-12345</clTRID>
S:      <svTRID>54322-XYZ</svTRID>
S:    </trID>
S:  </response>
S:</epp>]]></artwork>
          </figure>

          <figure>
            <preamble>Example &lt;info&gt; domain response using the 
            &lt;verificationCode:infData&gt; extension for 
            a pending compliance domain using the "sample" profile,  
            with the verification code type missing along with
            the due date, and with set verification code:</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>domain.example</domain:name>
S:        <domain:roid>DOMAIN-REP</domain:roid>
S:        <domain:status s="ok"/>
S:        <domain:clID>ClientX</domain:clID>
S:        <domain:crID>ClientY</domain:crID>
S:        <domain:crDate>2010-04-03T22:00:00.0Z
S:        </domain:crDate>
S:        <domain:exDate>2015-04-03T22:00:00.0Z
S:        </domain:exDate>
S:      </domain:infData>
S:    </resData>
S:    <extension>
S:      <verificationCode:infData 
S:        xmlns:verificationCode=
S:        "urn:ietf:params:xml:ns:verificationCode-1.0">
S:        <verificationCode:status>pendingCompliance
S:        </verificationCode:status>
S:        <verificationCode:profile name="sample">
S:          <verificationCode:status>pendingCompliance
S:          </verificationCode:status>
S:          <verificationCode:missing>
S:            <verificationCode:code 
S:              type="registrant"
S:              due="2010-04-08T22:00:00.0Z"/>
S:          </verificationCode:missing>
S:          <verificationCode:set>
S:            <verificationCode:code type="domain" 
S:              date="2010-04-03T22:00:00.0Z">1-abc333
S:            </verificationCode:code>
S:          </verificationCode:set>
S:        </verificationCode:profile>
S:      </verificationCode:infData>
S:    </extension>
S:    <trID>
S:      <clTRID>ABC-12345</clTRID>
S:      <svTRID>54322-XYZ</svTRID>
S:    </trID>
S:  </response>
S:</epp>]]></artwork>
          </figure>

          <figure>
            <preamble>Example &lt;info&gt; domain response using the 
            &lt;verificationCode:infData&gt; extension for 
            a client that does not have a verification profile assigned:</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>domain.example</domain:name>
S:        <domain:roid>DOMAIN-REP</domain:roid>
S:        <domain:status s="ok"/>
S:        <domain:clID>ClientX</domain:clID>
S:        <domain:crID>ClientY</domain:crID>
S:        <domain:crDate>2010-04-03T22:00:00.0Z
S:        </domain:crDate>
S:        <domain:exDate>2015-04-03T22:00:00.0Z
S:        </domain:exDate>
S:      </domain:infData>
S:    </resData>
S:    <extension>
S:      <verificationCode:infData 
S:        xmlns:verificationCode=
S:        "urn:ietf:params:xml:ns:verificationCode-1.0">
S:        <verificationCode:status>notApplicable
S:        </verificationCode:status>
S:      </verificationCode:infData>
S:    </extension>
S:    <trID>
S:      <clTRID>ABC-12345</clTRID>
S:      <svTRID>54322-XYZ</svTRID>
S:    </trID>
S:  </response>
S:</epp>]]></artwork>
          </figure>

      </section>
      <!-- end INFO command -->
      
      <section anchor="transferQueryCommand" title="EPP &lt;transfer&gt; Command">
      
       <t>This extension does not add any elements to the EPP &lt;transfer&gt; query command 
       or &lt;transfer&gt; response described in the <xref target="RFC5730"/>.</t>

      </section>
      <!-- end TRANSFER QUERY command -->
      
      </section>
      
      <section anchor="transformCommands" title="EPP Transform Commands">
      
        <t>EPP provides five commands to transform objects: &lt;create&gt; to create an instance of an object, 
        &lt;delete&gt; to delete an instance of an object, &lt;renew&gt; to extend the validity period of an object,
        &lt;transfer&gt; to manage object sponsorship changes, and &lt;update&gt; to change information associated 
        with an object.</t>

      <section anchor="createCommand" title="EPP &lt;create&gt; Command">
      
       <t>This extension defines additional elements to extend the EPP
        &lt;create&gt; command of an object mapping like the <xref
      target="RFC5731">EPP domain name mapping</xref>, <xref target="RFC5732">EPP host mapping</xref>, 
      and <xref target="RFC5733">EPP contact mapping</xref>.</t>
        
       <t>The EPP &lt;create&gt; command provides a transform operation that allows a client to create an object.  
       In addition to the EPP command elements described in an object mapping like <xref target="RFC5731"/>, the command MAY contain a 
       child &lt;verificationCode:encodedSignedCode&gt; element, as defined in <xref target="encodedSignedCode"/>, that identifies the extension namespace 
       for the client to provide proof of verification by a Verification Service Provider (VSP).  The server MAY support multiple policies 
       for the passing of the &lt;verificationCode:encodedSignedCode&gt; element based on the client profile, which include:</t>
       
       <t><list hangIndent="4" style="hanging">
        <t hangText="required">The client MUST pass a valid &lt;verificationCode:encodedSignedCode&gt; element containing the required set of verification codes.  If a &lt;verificationCode:encodedSignedCode&gt; element is not passed or the required set of verification codes is not included, the 
        server MUST return an EPP error result code of 2306.  If an invalid &lt;verificationCode:encodedSignedCode&gt; element is passed, the server MUST return an EPP error 
        result code of 2005.</t>
        <t hangText="optional">The client MAY pass a valid &lt;verificationCode:encodedSignedCode&gt; element.  If an invalid &lt;verificationCode:encodedSignedCode&gt; element is passed, the server MUST return an EPP error 
        result code of 2005.</t>
        <t hangText="not supported">The client MUST NOT pass a &lt;verificationCode:encodedSignedCode&gt; element.  If a &lt;verificationCode:encodedSignedCode&gt; element is passed, the 
        server MUST return an EPP error result code of 2102.</t>
       </list></t>
                            
       <figure>
            <preamble>Example &lt;create&gt; command to create a domain object with a verification code:</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>domain.example</domain:name>
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:      <verificationCode:encodedSignedCode
C:        xmlns:verificationCode=
C:          "urn:ietf:params:xml:ns:verificationCode-1.0">
C:        <verificationCode:code>
C:ICAgICAgPHZlcmlmaWNhdGlvbkNvZGU6c2lnbmVkQ29kZQogICAgICAgIHhtbG5z
C:OnZlcmlmaWNhdGlvbkNvZGU9CiAgICAgICAgICAidXJuOmlldGY6cGFyYW1zOnht
C:bDpuczp2ZXJpZmljYXRpb25Db2RlLTEuMCIKICAgICAgICAgIGlkPSJzaWduZWRD
C:b2RlIj4KICAgCQk8dmVyaWZpY2F0aW9uQ29kZTpjb2RlPjEtYWJjMTIzPC92ZXJp
C:ZmljYXRpb25Db2RlOmNvZGU+CiAgPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3
C:dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgIDxTaWduZWRJbmZvPgogICAg
C:PENhbm9uaWNhbGl6YXRpb25NZXRob2QKIEFsZ29yaXRobT0iaHR0cDovL3d3dy53
C:My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8U2lnbmF0dXJlTWV0
C:aG9kCiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNp
C:Zy1tb3JlI3JzYS1zaGEyNTYiLz4KICAgIDxSZWZlcmVuY2UgVVJJPSIjc2lnbmVk
C:Q29kZSI+CiAgICAgPFRyYW5zZm9ybXM+CiAgICAgIDxUcmFuc2Zvcm0KIEFsZ29y
C:aXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3Bl
C:ZC1zaWduYXR1cmUiLz4KICAgICA8L1RyYW5zZm9ybXM+CiAgICAgPERpZ2VzdE1l
C:dGhvZAogQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVu
C:YyNzaGEyNTYiLz4KIDxEaWdlc3RWYWx1ZT53Z3lXM25aUG9FZnBwdGxoUklMS25P
C:UW5iZHRVNkFyTTdTaHJBZkhnREZnPTwvRGlnZXN0VmFsdWU+CiAgICA8L1JlZmVy
C:ZW5jZT4KICAgPC9TaWduZWRJbmZvPgogICA8U2lnbmF0dXJlVmFsdWU+CiBqTXU0
C:UGZ5UUdpSkJGMEdXU0VQRkNKam15d0NFcVIyaDRMRCtnZTZYUStKbm1LRkZDdUNa
C:Uy8zU0xLQXgwTDF3CiBRREZPMmUwWTY5azJHNy9MR0UzN1gzdk9mbG9iRk0xb0d3
C:amE4K0dNVnJhb3RvNXhBZDQvQUY3ZUh1a2dBeW1ECiBvOXRveG9hMmgweVY0QTRQ
C:bVh6c1U2Uzg2WHRDY1VFK1MvV003Mm55bjQ3em9VQ3p6UEtIWkJSeWVXZWhWRlEr
C:CiBqWVJNSUFNek01N0hIUUErNmVhWGVmUnZ0UEVUZ1VPNGFWSVZTdWdjNE9VQVpa
C:d2JZY1pyQzZ3T2FRcXFxQVppCiAzMGFQT0JZYkF2SE1TbVdTUytoRmtic2hvbUpm
C:SHhiOTdURDJncmxZTnJRSXpxWGs3V2JIV3kyU1lkQStzSS9aCiBpcEpzWE5hNm9z
C:VFV3MUN6QTdqZndBPT0KICAgPC9TaWduYXR1cmVWYWx1ZT4KICAgPEtleUluZm8+
C:CiAgICA8WDUwOURhdGE+CiAgICA8WDUwOUNlcnRpZmljYXRlPgogTUlJRVNUQ0NB
C:ekdnQXdJQkFnSUJBakFOQmdrcWhraUc5dzBCQVFzRkFEQmlNUXN3Q1FZRFZRUUdF
C:d0pWVXpFTAogTUFrR0ExVUVDQk1DUTBFeEZEQVNCZ05WQkFjVEMweHZjeUJCYm1k
C:bGJHVnpNUk13RVFZRFZRUUtFd3BKUTBGTwogVGlCVVRVTklNUnN3R1FZRFZRUURF
C:eEpKUTBGT1RpQlVUVU5JSUZSRlUxUWdRMEV3SGhjTk1UTXdNakE0TURBdwogTURB
C:d1doY05NVGd3TWpBM01qTTFPVFU1V2pCc01Rc3dDUVlEVlFRR0V3SlZVekVMTUFr
C:R0ExVUVDQk1DUTBFeAogRkRBU0JnTlZCQWNUQzB4dmN5QkJibWRsYkdWek1SY3dG
C:UVlEVlFRS0V3NVdZV3hwWkdGMGIzSWdWRTFEU0RFaAogTUI4R0ExVUVBeE1ZVm1G
C:c2FXUmhkRzl5SUZSTlEwZ2dWRVZUVkNCRFJWSlVNSUlCSWpBTkJna3Foa2lHOXcw
C:QgogQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBby9jd3ZYaGJWWWwwUkRXV3ZveWVa
C:cEVUVlpWVmNNQ292VVZOZy9zdwogV2ludU1nRVdnVlFGcnoweEEwNHBFaFhDRlZ2
C:NGV2YlVwZWtKNWJ1cVUxZ21ReU9zQ0tRbGhPSFRkUGp2a0M1dQogcERxYTUxRmxr
C:MFRNYU1rSVFqczdhVUtDbUE0Ukc0dFRUR0svRWpSMWl4OC9EMGdIWVZSbGR5MVlQ
C:ck1QK291NwogNWJPVm5Jb3MrSGlmckF0ckl2NHFFcXdMTDRGVFpBVXBhQ2EyQm1n
C:WGZ5MkNTUlFieEQ1T3IxZ2NTYTN2dXJoNQogc1BNQ054cWFYbUlYbVFpcFMrRHVF
C:QnFNTTh0bGRhTjdSWW9qVUVLckdWc05rNWk5eTIvN3NqbjF6eXlVUGY3dgogTDRH
C:Z0RZcWhKWVdWNjFEblhneC9KZDZDV3h2c25ERjZzY3NjUXpVVEVsK2h5d0lEQVFB
C:Qm80SC9NSUg4TUF3RwogQTFVZEV3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZQWkVj
C:SVFjRC9CajJJRnovTEVSdW8yQURKdmlNSUdNQmdOVgogSFNNRWdZUXdnWUdBRk8w
C:LzdrRWgzRnVFS1MrUS9rWUhhRC9XNndpaG9XYWtaREJpTVFzd0NRWURWUVFHRXdK
C:VgogVXpFTE1Ba0dBMVVFQ0JNQ1EwRXhGREFTQmdOVkJBY1RDMHh2Y3lCQmJtZGxi
C:R1Z6TVJNd0VRWURWUVFLRXdwSgogUTBGT1RpQlVUVU5JTVJzd0dRWURWUVFERXhK
C:SlEwRk9UaUJVVFVOSUlGUkZVMVFnUTBHQ0FRRXdEZ1lEVlIwUAogQVFIL0JBUURB
C:Z2VBTUM0R0ExVWRId1FuTUNVd0k2QWhvQitHSFdoMGRIQTZMeTlqY213dWFXTmhi
C:bTR1YjNKbgogTDNSdFkyZ3VZM0pzTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFC
C:MnFTeTd1aSs0M2NlYktVS3dXUHJ6ejl5LwogSWtyTWVKR0tqbzQwbis5dWVrYXcz
C:REo1RXFpT2YvcVo0cGpCRCsrb1I2QkpDYjZOUXVRS3dub0F6NWxFNFNzdQogeTUr
C:aTkzb1QzSGZ5VmM0Z05NSW9IbTFQUzE5bDdEQktyYndiekFlYS8waktXVnpydm1W
C:N1RCZmp4RDNBUW8xUgogYlU1ZEJyNklqYmRMRmxuTzV4MEcwbXJHN3g1T1VQdXVy
C:aWh5aVVScEZEcHdIOEtBSDF3TWNDcFhHWEZSdEdLawogd3lkZ3lWWUF0eTdvdGts
C:L3ozYlprQ1ZUMzRnUHZGNzBzUjYrUXhVeTh1MEx6RjVBL2JlWWFacHhTWUczMWFt
C:TAogQWRYaXRUV0ZpcGFJR2VhOWxFR0ZNMEw5K0JnN1h6Tm40blZMWG9reUVCM2Jn
C:UzRzY0c2UXpuWDIzRkdrCiAgIDwvWDUwOUNlcnRpZmljYXRlPgogICA8L1g1MDlE
C:YXRhPgogICA8L0tleUluZm8+CiAgPC9TaWduYXR1cmU+CgkJPC92ZXJpZmljYXRp
C:b25Db2RlOnNpZ25lZENvZGU+Cg==
C:        </verificationCode:code>
C:      </verificationCode:encodedSignedCode>
C:    </extension>
C:    <clTRID>ABC-12345</clTRID>
C:  </command>
C:</epp>]]></artwork>
       </figure>
       
       <t>This extension does not add any elements to the EPP &lt;create&gt; response described 
       in the <xref target="RFC5730"/>.</t>      
       
      </section>
      <!-- end CREATE command -->

      <section anchor="deleteCommand" title="EPP &lt;delete&gt; Command">
      
       <t>This extension defines additional elements to extend the EPP &lt;delete&gt; command and 
       response in the same fashion as defined for the <xref target="createCommand">EPP &lt;create&gt; Command</xref>.</t>
         
      </section>
      <!-- end DELETE command -->

      <section anchor="renewCommand" title="EPP &lt;renew&gt; Command">
      
       <t>This extension defines additional elements to extend the EPP &lt;renew&gt; command and 
       response in the same fashion as defined for the <xref target="createCommand">EPP &lt;create&gt; Command</xref>.</t>
       
      </section>
      <!-- end RENEW command -->
      
      <section anchor="transferCommand" title="EPP &lt;transfer&gt; Command">
      
       <t>This extension defines additional elements to extend the EPP &lt;transfer&gt; command and 
       response in the same fashion as defined for the <xref target="createCommand">EPP &lt;create&gt; Command</xref>.</t>
       
      </section>
      <!-- end TRANSFER command -->
      
      <section anchor="updateCommand" title="EPP &lt;update&gt; Command">
      
       <t>This extension defines additional elements to extend the EPP &lt;update&gt; command and 
       response in the same fashion as defined for the <xref target="createCommand">EPP &lt;create&gt; Command</xref>.</t>
        
      </section>
      <!-- end UPDATE command -->

    </section>
      
    </section>

    <!-- EPP command mapping -->

    <section anchor="syntax" title="Formal Syntax">
    
      <t>One schema is presented here that is the EPP Verification Code Extension
      schema.</t>
      
      <t>The formal
      syntax presented here is a complete schema representation of the object
      mapping suitable for automated validation of EPP XML instances. The
      BEGIN and END tags are not part of the schema; they are used to note the
      beginning and ending of the schema for URI registration purposes.</t>

    <section title="Verification Code Extension Schema">

      <figure>
        <artwork><![CDATA[
BEGIN
<?xml version="1.0" encoding="UTF-8"?>
<schema 
  targetNamespace=
    "urn:ietf:params:xml:ns:verificationCode-1.0"
  xmlns:verificationCode=
    "urn:ietf:params:xml:ns:verificationCode-1.0"
  xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
  xmlns="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified">
  
  <annotation>
    <documentation>
      Extensible Provisioning Protocol v1.0
      Verification Code Extension.
    </documentation>
  </annotation>

  <import namespace="http://www.w3.org/2000/09/xmldsig#"
    schemaLocation="xmldsig-core-schema.xsd"/>
                                      
  <!-- Abstract signed code for substitution -->
  <element name="abstractSignedCode" 
    type="verificationCode:abstractSignedCodeType"
    abstract="true"/>
      
  <!-- Empty type for use in extending for a signed code -->
  <complexType name="abstractSignedCodeType"/>
      
  <!-- Definition of concrete signed code -->
  <element name="signedCode" 
    type="verificationCode:signedCodeType"
    substitutionGroup="verificationCode:abstractSignedCode"/>
    
  <complexType name="signedCodeType">
    <complexContent>
      <extension base="verificationCode:abstractSignedCodeType">
        <sequence>
          <element name="code" 
            type="verificationCode:verificationCodeType"/>
          <element ref="dsig:Signature"/>
        </sequence>
        <attribute name="id" type="ID" use="required"/>
      </extension>
    </complexContent>
  </complexType>
  
  <simpleType name="verificationCodeValueType">
    <restriction base="token">
        <pattern value="\d+-[A-Za-z0-9]+"/>    
    </restriction>
  </simpleType>
  
  <complexType name="verificationCodeType">
    <simpleContent>
      <extension base=
        "verificationCode:verificationCodeValueType">
        <attribute name="type" type="token" 
          use="required"/>
      </extension>
    </simpleContent>
  </complexType>
  
  <!-- Definition of an encoded signed code -->
  <element name="encodedSignedCode" 
    type="verificationCode:encodedSignedCodeListType"/>
  
  <complexType name="encodedSignedCodeListType">
    <sequence>
       <element name="code" 
          type="verificationCode:encodedSignedCodeType"
          minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>  
  
  <complexType name="encodedSignedCodeType">
    <simpleContent>
      <extension base="token">
        <attribute name="encoding" 
          type="token" default="base64"/>
      </extension>
    </simpleContent>
  </complexType>
  
  <!-- info command extension elements -->
  <element name="info" type="verificationCode:infoType"/>
  
  <complexType name="infoType">
    <simpleContent>
      <extension base="token">
         <attribute name="profile" type="token"/>
      </extension>
    </simpleContent>       
  </complexType>
  
  
  <!-- info response extension elements -->
  <element name="infData" type="verificationCode:infDataType"/>
  
  <complexType name="infDataType">
    <sequence>
      <element name="status" 
        type="verificationCode:statusEnum"/>
      <element name="profile" 
        type="verificationCode:profileDataType" 
        minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
   
  <complexType name="profileDataType"> 
    <sequence>
      <element name="status" 
        type="verificationCode:statusEnum"/>
      <element name="missing" 
        type="verificationCode:missingCodes"
        minOccurs="0"/>
      <element name="set" 
        type="verificationCode:codesType"
        minOccurs="0"/>
    </sequence>
    <attribute name="name" type="token"/>
  </complexType>
   
  <simpleType name="statusEnum">
    <restriction base="token">
      <enumeration value="notApplicable"/>
      <enumeration value="nonCompliant"/>
      <enumeration value="pendingCompliance"/>
      <enumeration value="compliant"/>
    </restriction>
  </simpleType>
      
  <complexType name="missingVerificationCode">
    <simpleContent>
      <extension base="token">
        <attribute name="type" type="token" 
          use="required"/>
        <attribute name="due" type="dateTime" 
          use="required"/>
      </extension>
    </simpleContent>
  </complexType>
 
  <complexType name="missingCodes">
    <sequence>
      <element name="code" 
        type="verificationCode:missingVerificationCode" 
        minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
 
  <complexType name="infoVerificationCodeType">
    <simpleContent>
      <extension base="token">
        <attribute name="type" type="token" 
          use="required"/>
        <attribute name="date" type="dateTime" 
          use="required"/>
      </extension>
    </simpleContent>
  </complexType>
 
  <complexType name="codesType">
    <sequence>
      <element name="code" 
        type="verificationCode:infoVerificationCodeType"
        minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
</schema>
END]]></artwork>
      </figure>
      </section>
    </section>
       
    <section anchor="IANA" title="IANA Considerations">
           
      <section anchor="IANA-XML-Namespace" title="XML Namespace">
         <t>
             This document uses URNs to describe XML namespaces and XML schemas
             conforming to a registry mechanism described in <xref target="RFC3688"/>.
         </t>
                  
         <t>Registration request for the verificationCode namespace:</t>
         
         <t><list>
         <t>URI: ietf:params:xml:ns:verificationCode-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>
         </list></t>
         
         <t>Registration request for the verificationCode XML schema:</t>
         
         <t><list>
         <t>URI: ietf:params:xml:ns:verificationCode-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>
         
         </list></t>
         
       </section>
       
       <section anchor="EPP-Extension-Registry" title="EPP Extension Registry">
       
        <t>
   The EPP extension described in this document should be registered by
   the IANA in the EPP Extension Registry described in <xref target="RFC7451"/>.  The
   details of the registration are as follows:
   </t>

   <t>
   Name of Extension: &quot;Verification Code Extension for the Extensible Provisioning Protocol (EPP)&quot;
   </t>
   
   <t>
   Document status: Standards Track
   </t>
   
   <t>
   Reference: (insert reference to RFC version of this document)
   </t>

   <t>
   Registrant Name and Email Address: IESG, &lt;iesg@ietf.org&gt;
   </t>
  
   <t>
   TLDs: Any
   </t>
 
   <t>
   IPR Disclosure: None
   </t>

   <t>
   Status: Active
   </t>

   <t>
   Notes: None
   </t>
       
       </section>
     
    </section>


    <section anchor="Security" title="Security Considerations">
      <t>The mapping extension described in this document is based on the 
      security services described by <xref
      target="RFC5730">EPP</xref> and protocol layers used by EPP. The security
      considerations described in these other specifications apply to this
      specification as well.</t>
      <t><xref target="W3C.CR-xmldsig-core2-20120124">XML Signature</xref> is used in this extension 
      to verify that the Verification Code originated from a trusted Verification 
      Service Provider (VSP) and that it wasn't tampered with in transit 
      from the VSP to the client to the server.  To support multiple VSP keys, 
      the VSP certificate chain MUST be included in the &lt;X509Certificate&gt; elements of the 
      <xref target="signedCode">Signed Code</xref> and MUST chain up and be verified 
      by the server against a set of trusted certificates.</t>
      <t>It is RECOMMENDED that signed codes do not include white-spaces 
       between the XML elements in order to mitigate risks of invalidating the 
       digital signature when transferring of signed codes between applications 
       takes place.</t>
      <t>Use of XML canonicalization SHOULD be used when generating 
       the signed code.  SHA256/RSA-SHA256 SHOULD be used for digesting and signing.  
       The size of the RSA key SHOULD be at least 2048 bits.</t>
    </section>

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
       
      &RFC2045;
      
      &RFC2119;
      
      &RFC3688;      

      &RFC5234;
            
      &RFC5730;

      &RFC5731;

      &RFC5732;

      &RFC5733;
      
      &RFC7451;                  
            
    &W3C.xmldsig;
    
    </references>
  
   <section title="Acknowledgements">
   </section>
  
  
   <section title="Change History">
    <section title="Change from 00 to 01" anchor="change-00-to-01">
      <t><list style="numbers">
        <t>Fixed pendingComplaince and complaint to pendingCompliance and compliant in text.</t>
        <t>Fixed verificaton to verification.</t>
      </list></t>
    </section>
    <section title="Change from 01 to 02" anchor="change-01-to-02">
      <t><list style="numbers">
        <t>Added support for the notApplicable status value.</t>
      </list></t>
    </section>
    <section title="Change from 02 to 03" anchor="change-02-to-03">
      <t><list style="numbers">
        <t>Added regular expression pattern for the format of the verification code token value in the XML schema.</t>
      </list></t>
    </section>
    <section title="Change from 03 to 04" anchor="change-03-to-04">
      <t><list style="numbers">
        <t>Ping update.</t>
      </list></t>
    </section>
   </section>
    
  </back>

  <!-- vim: set ts=2 sw=2 expandtab: -->
</rfc>
