<?xml version='1.0' encoding='US-ASCII'?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc number="8063" ipr="trust200902" category="std" consensus="yes" obsoletes="" updates="" submissionType="IETF" xml:lang="en">
  <?rfc toc="yes"?>
  <?rfc symrefs="yes"?>
  <?rfc sortrefs="yes" ?>
  <?rfc compact="yes" ?>
  <?rfc subcompact="no" ?>

  <front>
    <title abbrev="EPP Key Relay">Key Relay Mapping for the Extensible Provisioning Protocol</title>
    <author initials="HW." surname="Ribbers" fullname="Rik Ribbers">
      <organization>SIDN</organization>
      <address>
        <postal>
          <street>Meander 501</street>
          <city>Arnhem</city>
          <region/>
          <code>6825 MD</code>
          <country>The Netherlands</country>
        </postal>
        <email>rik.ribbers@sidn.nl</email>
        <uri>https://www.sidn.nl/</uri>
      </address>
    </author>
    <author initials="MW." surname="Groeneweg" fullname="Marc Groeneweg">
      <organization>SIDN</organization>
      <address>
        <postal>
          <street>Meander 501</street>
          <city>Arnhem</city>
          <region/>
          <code>6825 MD</code>
          <country>The Netherlands</country>
        </postal>
        <email>marc.groeneweg@sidn.nl</email>
        <uri>https://www.sidn.nl/</uri>
      </address>
    </author>

    <author initials="R." surname="Gieben" fullname="Miek Gieben">
      <organization/>
      <address>
        <email>miek@miek.nl</email>
      </address>
    </author>

    <author initials="ALJ." surname="Verschuren" fullname="Antoin Verschuren">
      <organization/>
      <address>
        <email>ietf@antoin.nl</email>
      </address>
    </author>
    <date month="February" year="2017" />
    <area>Application</area>
    <workgroup>eppext</workgroup>
    <keyword>Extensible Provisioning Protocol</keyword>


    <abstract><t>This document describes an Extensible Provisioning Protocol
    (EPP) mapping for a key relay object that relays DNSSEC key material
    between EPP clients using the poll queue defined in RFC 5730.  </t><t>This key relay mapping will help facilitate changing the DNS operator of a domain while keeping the DNSSEC chain of trust intact.  </t> </abstract>
  </front>
  <middle><section title="Introduction" anchor="introduction"
		   toc="default"><t>There are certain transactions initiated
  by a DNS operator that require an authenticated exchange of information
  between DNS operators. Often, there is no direct channel between these
  parties or it is non-scalable and insecure.  </t><t>One such transaction is
  the exchange of DNSSEC key material when changing the DNS operator for
  DNSSEC-signed zones. We suggest that DNS operators use the administrative
  EPP channel to bootstrap the delegation by relaying DNSSEC key material for
  the zone.  </t><t>In this document, we define an EPP extension to send DNSSEC
  key material between EPP clients. This allows DNS operators to automatically, reliably, and securely bootstrap the transfer of a domain name while
  keeping the DNSSEC chain of trust intact.  </t>

<section title="Conventions Used in This Document"
	 anchor="conventions-used-in-this-document" toc="default"><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 BCP 14, RFC 2119 <xref target="RFC2119"
pageno="false" format="default"/>.  </t><t>XML is case sensitive. Unless
stated otherwise, the 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 the examples, "C:" represents lines sent by
a protocol client and "S:" represents lines returned by a protocol
server. Indentation and white space in the examples are provided only to illustrate
element relationships and are not mandatory features of this protocol.
</t></section>
<section title="Secure Transfer of DNSSEC Key Material"
	 anchor="secure-transfer-of-dnssec-key-material"
	 toc="default"><t>Exchanging DNSSEC key material in preparation of a
domain name transfer is one of the phases in the life cycle of a domain name
<xref target="DNSOP" pageno="false"
      format="default"/>.  </t>

<t>DNS operators need to exchange DNSSEC key
material before the registration data can be changed to keep the DNSSEC chain
of trust intact. This exchange is normally initiated through the gaining
registrar.  </t><t>The gaining and losing DNS operators could talk directly to
each other (see <xref target="fig:keyrelay" pageno="false"
format="default"/>) to exchange the DNSKEY, but often there is no trusted path
between the two. As both can securely interact with the registry over the
administrative channel through the registrar, the registry can act as a relay
for the key material exchange.  </t><t>The registry is merely used as a relay
channel. Therefore, it is up to the losing DNS operator to complete the
intended transaction.  The registry SHOULD have certain policies in place that
require the losing DNS operator to cooperate with this transaction; however,
this is beyond the scope of this document. This document focuses on the EPP protocol syntax.  </t><figure anchor="fig:keyrelay" align="center" title="Transfer of DNSSEC Key Material" suppress-title="false" alt="" width="" height=""><artwork align="center" xml:space="preserve" name="" type="" alt="" width="" height="">
   +--------------------+  DNSKEY   +---------------------+
   |gaining DNS operator| ~~~~~~~~&gt; | losing DNS operator |
   +--------------------+           +---------------------+
                  |                   ^
                  |                   |
                  V                   |
   +--------------------+         +---------------------+
   |  gaining registrar |         | registrar of record |
   +--------------------+         +---------------------+
                  |                   ^
    EPP key relay |                   | EPP poll
                  V                   |
             +-----------------------------+
             |           registry          |
             +-----------------------------+
</artwork></figure><t></t><t>There is no distinction in the EPP protocol
between Registrars and DNS operators, and there is only mention of an EPP client
and EPP server. Therefore, the term "EPP client" will be used for the interaction
with the EPP server for relaying DNSSEC key material.
</t></section></section>

<section title="Object Attributes" anchor="object-attributes" toc="default"><section title="DNSSEC Key Material" anchor="dnssec-key-material" toc="default"><t>The DNSSEC key material is represented in EPP by a &lt;keyRelayData&gt; element.  </t><section title="&lt;keyRelayData&gt; Element" anchor="keyrelaydata-element" toc="default"><t>The &lt;keyRelayData&gt; contains the following elements: </t><t><list style="symbols"><t>One REQUIRED &lt;keyData&gt; element that contains the DNSSEC key material as described in <xref target="RFC5910" pageno="false" format="default"/>, Section 4. </t><t>An OPTIONAL &lt;expiry&gt; element that describes the expected lifetime of the relayed key(s) in the zone. When the &lt;expiry&gt; element is provided, the losing DNS operator SHOULD remove the inserted key material from the zone after the expiry time. 

This may be because the transaction that needed the insertion should be either completed or abandoned by that time. If a client receives a key relay object that has been sent previously, it MUST update the expiry time of the key material. This enables the clients to update the lifetime of the key material when a transfer is delayed.  </t></list></t><t>The &lt;expiry&gt; element MUST contain exactly one of the following child elements:

  <list style="hanging" ><t hangText="&lt;absolute&gt;:">The DNSSEC key material is valid from the current 
  date and time until it expires on the specified date and time. If a 
  date in the past is provided, this MUST be interpreted as a revocation 
  of a previously sent key relay object.</t>

  <t hangText="&lt;relative&gt;:">The DNSSEC key material is valid from the current date
  and time until the end of the specified duration. If a period of 
  zero is provided, this MUST be interpreted as a revocation of a 
  previously sent key relay object.
</t></list></t></section></section></section>

<section title="EPP Command Mapping" anchor="epp-command-mapping"
	 toc="default"><t>A detailed description of the EPP syntax and
semantics can be found in the EPP core protocol specification <xref
target="RFC5730" pageno="false" format="default"/>. The command mapping
described here is specifically for use in this key relay mapping.  </t>

<section title="EPP Query Commands" anchor="epp-query-commands"
	 toc="default"><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 title="EPP &lt;check&gt; Command" anchor="epp-check-command"
	 toc="default"><t>Check that semantics do not apply to key relay objects,
so there is no mapping defined for the EPP &lt;check&gt; command and the EPP
&lt;check&gt; response.  </t></section>

<section title="EPP &lt;info&gt; Command" anchor="epp-info-command" toc="default"><t>Info command semantics do not apply to the key relay objects, so there is no mapping defined for the EPP &lt;info&gt; command.  </t><t>The EPP &lt;info&gt; response for key relay objects is used in the EPP poll response, as described in <xref target="RFC5730" pageno="false" format="default"/>. The key relay object created with the &lt;create&gt; command, described in <xref target="epp-create-command" pageno="false" format="default"/> is inserted into the receiving client&#8217;s poll queue. The receiving client will receive the key relay object using the EPP &lt;poll&gt; command, as described in <xref target="RFC5730" pageno="false" format="default"/>.  </t><t>When a &lt;poll&gt; command has been processed successfully for a key relay poll message, the EPP &lt;resData&gt; element MUST contain a child &lt;keyrelay:infData&gt; element that is identified by the keyrelay namespace. The &lt;keyrelay:infData&gt; element contains the following child elements: 

<list style="symbols"><t>A REQUIRED &lt;name&gt; element containing the domain name for which the DNSSEC key material is relayed.  </t>

<t>A REQUIRED &lt;authInfo&gt; element that contains authorization
information associated with the domain object (<xref target="RFC5731"
pageno="false" format="default"/>, Section 3.2.1).  </t>

<t>One or
more REQUIRED &lt;keyRelayData&gt; elements containing data to be
relayed, as defined in <xref target="dnssec-key-material"
pageno="false" format="default"/>. A server MAY apply a server policy
that specifies the number of &lt;keyRelayData&gt; elements that can be
incorporated. When a server policy is violated, a server MUST respond
with an EPP result code 2308 "Data management policy violation".
</t>

<t>An OPTIONAL &lt;crDate&gt; element that contains the date and
time of the submitted &lt;create&gt; command.  </t>

<t>An OPTIONAL
&lt;reID&gt; element that contains the identifier of the client that
requested the key relay.  </t><t>An OPTIONAL &lt;acID&gt; element
that contains the identifier of the client that SHOULD act upon the
key relay.  </t>
</list></t>
<t>Example &lt;poll&gt; response: </t>

<figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
S:    xmlns:keyrelay="urn:ietf:params:xml:ns:keyrelay-1.0"
S:  xmlns:s="urn:ietf:params:xml:ns:secDNS-1.1" 
S:  xmlns:d="urn:ietf:params:xml:ns:domain-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1301"&gt;
S:      &lt;msg&gt;Command completed successfully; ack to dequeue&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;msgQ count="5" id="12345"&gt;
S:      &lt;qDate&gt;1999-04-04T22:01:00.0Z&lt;/qDate&gt;
S:      &lt;msg&gt;Keyrelay action completed successfully.&lt;/msg&gt;
S:    &lt;/msgQ&gt;
S:    &lt;resData&gt;
S:      &lt;keyrelay:infData&gt;
S:        &lt;keyrelay:name&gt;example.org&lt;/keyrelay:name&gt;
S:        &lt;keyrelay:authInfo&gt;
S:          &lt;d:pw&gt;JnSdBAZSxxzJ&lt;/d:pw&gt;
S:        &lt;/keyrelay:authInfo&gt;
S:        &lt;keyrelay:keyRelayData&gt;
S:          &lt;keyrelay:keyData&gt;
S:            &lt;s:flags&gt;256&lt;/s:flags&gt;
S:            &lt;s:protocol&gt;3&lt;/s:protocol&gt;
S:            &lt;s:alg&gt;8&lt;/s:alg&gt;
S:            &lt;s:pubKey&gt;cmlraXN0aGViZXN0&lt;/s:pubKey&gt;
S:          &lt;/keyrelay:keyData&gt;
S:          &lt;keyrelay:expiry&gt;
S:            &lt;keyrelay:relative&gt;P1M13D&lt;/keyrelay:relative&gt;
S:          &lt;/keyrelay:expiry&gt;
S:        &lt;/keyrelay:keyRelayData&gt;
S:        &lt;keyrelay:crDate&gt;
S:          1999-04-04T22:01:00.0Z
S:        &lt;/keyrelay:crDate&gt;
S:        &lt;keyrelay:reID&gt;
S:          ClientX
S:        &lt;/keyrelay:reID&gt;
S:        &lt;keyrelay:acID&gt;
S:          ClientY
S:        &lt;/keyrelay:acID&gt;
S:      &lt;/keyrelay:infData&gt;
S:    &lt;/resData&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:      &lt;svTRID&gt;54321-ZYX&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;
</artwork></figure></section>
<section title="EPP &lt;transfer&gt; Command" anchor="epp-transfer-command"
	 toc="default"><t>Transfer semantics do not apply to key relay
objects, so there is no mapping defined for the EPP &lt;transfer&gt; command.
</t></section></section>
<section title="EPP Transform Commands" anchor="epp-transform-commands"
	 toc="default"><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
title="EPP &lt;create&gt; Command" anchor="epp-create-command"
toc="default"><t>The EPP &lt;create&gt; command provides a transform operation
that allows a client to create a key relay object that includes the domain
name and DNSSEC key material to be relayed. When the &lt;create&gt; command is
validated, the server MUST insert an EPP &lt;poll&gt; message, using the key
relay info response (see <xref target="epp-info-command" pageno="false"
format="default"/>), in the receiving client&#8217;s poll queue that belongs
to the registrar on record of the provided domain name.  </t><t>In addition to
the standard EPP command elements, the &lt;create&gt; command MUST contain a
&lt;keyrelay:create&gt; element that is identified by the keyrelay
namespace. The &lt;keyrelay:create&gt; element contains the following child
elements: 
<list style="symbols">
<t>A REQUIRED &lt;keyrelay:name&gt; element containing the domain name for which the DNSSEC key material is relayed.  </t>

<t>A REQUIRED &lt;authInfo&gt; element that contains authorization
information associated with the domain object (<xref target="RFC5731"
pageno="false" format="default"/>, Section 3.2.1).  </t>

<t>One or more REQUIRED &lt;keyrelay:keyRelayData&gt; elements
containing data to be relayed, as defined in <xref
target="dnssec-key-material" pageno="false"
format="default"/>.</t>
</list></t>
<t>Example &lt;create&gt; commands: </t><t>Note
that in the provided example, the second &lt;keyrelay:keyRelayData&gt;
element has a period of zero, and thus represents the revocation of a
previously sent key relay object (see <xref
target="keyrelaydata-element" pageno="false" format="default"/>).
</t>

<figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
C:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
C:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
C:    xmlns:keyrelay="urn:ietf:params:xml:ns:keyrelay-1.0"
C:  xmlns:s="urn:ietf:params:xml:ns:secDNS-1.1" 
C:  xmlns:d="urn:ietf:params:xml:ns:domain-1.0"&gt;
C:  &lt;command&gt;
C:    &lt;create&gt;
C:      &lt;keyrelay:create&gt;
C:        &lt;keyrelay:name&gt;example.org&lt;/keyrelay:name&gt;
C:        &lt;keyrelay:authInfo&gt;
C:          &lt;d:pw&gt;JnSdBAZSxxzJ&lt;/d:pw&gt;
C:        &lt;/keyrelay:authInfo&gt;
C:        &lt;keyrelay:keyRelayData&gt;
C:          &lt;keyrelay:keyData&gt;
C:            &lt;s:flags&gt;256&lt;/s:flags&gt;
C:            &lt;s:protocol&gt;3&lt;/s:protocol&gt;
C:            &lt;s:alg&gt;8&lt;/s:alg&gt;
C:            &lt;s:pubKey&gt;cmlraXN0aGViZXN0&lt;/s:pubKey&gt;
C:          &lt;/keyrelay:keyData&gt;
C:          &lt;keyrelay:expiry&gt;
C:            &lt;keyrelay:relative&gt;P1M13D&lt;/keyrelay:relative&gt;
C:          &lt;/keyrelay:expiry&gt;
C:        &lt;/keyrelay:keyRelayData&gt;
C:        &lt;keyrelay:keyRelayData&gt;
C:          &lt;keyrelay:keyData&gt;
C:            &lt;s:flags&gt;256&lt;/s:flags&gt;
C:            &lt;s:protocol&gt;3&lt;/s:protocol&gt;
C:            &lt;s:alg&gt;8&lt;/s:alg&gt;
C:            &lt;s:pubKey&gt;bWFyY2lzdGhlYmVzdA==&lt;/s:pubKey&gt;
C:          &lt;/keyrelay:keyData&gt;
C:          &lt;keyrelay:expiry&gt;
C:            &lt;keyrelay:relative&gt;P0D&lt;/keyrelay:relative&gt;
C:          &lt;/keyrelay:expiry&gt;
C:        &lt;/keyrelay:keyRelayData&gt;
C:      &lt;/keyrelay:create&gt;
C:    &lt;/create&gt;
C:    &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
C:  &lt;/command&gt;
C:&lt;/epp&gt;
</artwork></figure><t>When a server has successfully processed the &lt;create&gt; command, it MUST respond with a standard EPP response. See <xref target="RFC5730" pageno="false" format="default"/>, Section 2.6.  </t><t>Example &lt;create&gt; response: </t><figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1000"&gt;
S:      &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;trID&gt;
S:       &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:       &lt;svTRID&gt;54321-ZYX&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;
</artwork></figure><t>When a server cannot process the &lt;create&gt; command
due to the server policy, it MUST return an EPP 2308 error message. This might
be the case when the server knows that the receiving client does not support
key relay transactions. See <xref target="RFC5730" pageno="false" format="default"/>, Section 2.6.  </t><t>Example &lt;create&gt; response: </t><figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="2308"&gt;
S:      &lt;msg&gt;Data management policy violation&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;trID&gt;
S:       &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:       &lt;svTRID&gt;54321-ZYX&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;
</artwork></figure></section>
<section title="EPP &lt;delete&gt; Command" anchor="epp-delete-command"
	 toc="default"><t>Delete semantics do not apply to key relay objects,
so there is no mapping defined for the EPP &lt;delete&gt; command and the EPP
&lt;delete&gt; response.  </t></section>
<section title="EPP &lt;renew&gt; Command" anchor="epp-renew-command"
	 toc="default"><t>Renew semantics do not apply to key relay objects,
so there is no mapping defined for the EPP &lt;renew&gt; command and the EPP
&lt;renew&gt; response.  </t></section>
<section title="EPP &lt;transfer&gt; Command" anchor="epp-transfer-command-1"
	 toc="default"><t>Transfer semantics do not apply to key relay
objects, so there is no mapping defined for the EPP &lt;transfer&gt; command
and the EPP &lt;transfer&gt; response.  </t></section>
<section title="EPP &lt;update&gt; Command" anchor="epp-update-command"
	 toc="default"><t>Update semantics do not apply to key relay objects,
so there is no mapping defined for the EPP &lt;update&gt; command and the EPP
&lt;update&gt; response.  </t></section></section></section>
<section title="Formal Syntax" anchor="formal-syntax" toc="default"><figure title="" suppress-title="false" align="left" alt="" width="" height=""><artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height="">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;schema targetNamespace="urn:ietf:params:xml:ns:keyrelay-1.0"
  xmlns:keyrelay="urn:ietf:params:xml:ns:keyrelay-1.0" 
  xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" 
  xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1"
  xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" 
  xmlns="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified"&gt;    

  &lt;annotation&gt;
    &lt;documentation&gt;
      Extensible Provisioning Protocol v1.0 protocol
      extension schema for relaying DNSSEC key material.
    &lt;/documentation&gt;
  &lt;/annotation&gt;      

  &lt;import namespace="urn:ietf:params:xml:ns:eppcom-1.0" /&gt;
  &lt;import namespace="urn:ietf:params:xml:ns:secDNS-1.1" /&gt;
  &lt;import namespace="urn:ietf:params:xml:ns:domain-1.0" /&gt;

  &lt;element name="keyRelayData" type="keyrelay:keyRelayDataType" /&gt;
  &lt;element name="infData" type="keyrelay:infDataType" /&gt;
  &lt;element name="create" type="keyrelay:createType" /&gt;    
  
  &lt;complexType name="createType"&gt;
    &lt;sequence&gt;
      &lt;element name="name" type="eppcom:labelType" /&gt;
      &lt;element name="authInfo" type="domain:authInfoType" /&gt;
      &lt;element name="keyRelayData" type="keyrelay:keyRelayDataType" 
          maxOccurs="unbounded"/&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;    
 
 &lt;complexType name="infDataType"&gt;
    &lt;sequence&gt;
      &lt;element name="name" type="eppcom:labelType" /&gt;
      &lt;element name="authInfo" type="domain:authInfoType" /&gt;
      &lt;element name="keyRelayData" type="keyrelay:keyRelayDataType" 
          maxOccurs="unbounded"/&gt;
      &lt;element name="crDate" type="dateTime"/&gt;
      &lt;element name="reID" type="eppcom:clIDType" /&gt;
      &lt;element name="acID" type="eppcom:clIDType" /&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;    
  
  &lt;complexType name="keyRelayDataType"&gt;
    &lt;sequence&gt;
      &lt;element name="keyData" type="secDNS:keyDataType" /&gt;
      &lt;element name="expiry" type="keyrelay:keyRelayExpiryType" 
          minOccurs="0" /&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;
  
  &lt;complexType name="keyRelayExpiryType"&gt;
    &lt;choice&gt;
      &lt;element name="absolute" type="dateTime" /&gt;
      &lt;element name="relative" type="duration" /&gt;
    &lt;/choice&gt;
  &lt;/complexType&gt;
&lt;/schema&gt;
</artwork></figure></section>
<section title="IANA Considerations" anchor="iana-considerations"
	 toc="default"><section title="XML Namespace" anchor="xml-namespace"
				toc="default">

<t>This document uses URNs to
describe an XML namespace conforming to the registry mechanism described in
<xref target="RFC3688" pageno="false" format="default"/>. The following URI
assignment has been made by IANA: </t>

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

<t>Registrant Contact: See the
"Authors' Addresses" section of this document.  </t>

<t>XML: See the "Formal
Syntax" section of this document.  </t>
</section>


<section title="XML Schema" anchor="xml-schema" toc="default">

<t>This document
uses URNs to describe an XML schema conforming to the registry mechanism
described in <xref target="RFC3688" pageno="false" format="default"/>.  The
following URI assignment has been made by IANA: </t>

<t>URI:
urn:ietf:params:xml:schema:keyrelay-1.0 </t><t>XML: See the "Formal Syntax"
section of this document.  </t>
</section>
<section title="EPP Extension Registry" anchor="epp-extension-registry"
	 toc="default"><t>The EPP extension described in this document has
been registered by IANA in the "Extensions for the Extensible Provisioning Protocol (EPP)" registry described in <xref
target="RFC7451" pageno="false" format="default"/>. The details of the
registration are as follows: </t><t>Name of Extension: "Key Relay Mapping for
the Extensible Provisioning Protocol" </t><t>Document status: Standards Track
</t><t>Reference: RFC 8063
</t><t>Registrant Name and Email Address: IESG, iesg@ietf.org </t><t>Top-Level
Domains (TLDs): Any
</t>

<t>IPR Disclosure: https://datatracker.ietf.org/ipr/ </t><t>Status:
Active </t>


<t>Notes: None </t></section></section>
<section title="Security Considerations" anchor="security-considerations"
	 toc="default"><t>A server SHOULD NOT perform any transformation on
data under server management when processing a &lt;keyrelay:create&gt;
command. The intent of this command is to put DNSSEC key material on the poll
queue of another client. Exceptions to this recommendation are allowable only
for the purposes of achieving interoperability with the different server
policies that have already implemented this EPP extension.</t>

<t>Any EPP client can use
this mechanism to put data on the message queue of another EPP client,
allowing for the potential of a denial-of-service attack. However, this can and should be detected by the server. A server MAY set a server policy that
limits or rejects a &lt;keyrelay:create&gt; command if it detects that the
mechanism is being abused.  </t><t>For the &lt;keyrelay:keyRelayData&gt; data,
a correct &lt;domain:authInfo&gt; element should be used as an indication that
putting the key material on the receiving EPP clients poll queue is authorized
by the <spanx style="emph" xml:space="preserve">registrant</spanx> of that
domain name. The authorization of EPP clients to perform DNS changes is not
covered in this document as it depends on registry-specific policy.  </t><t>A
client that uses this mechanism to send DNSSEC key material to another client
could verify through DNS that the DNSSEC key material is added to the
authoritative zone of the domain. This check can be used to verify that the
DNSSEC key material has traveled end-to-end from the gaining DNS operator to
the losing DNS operator. This check does not tell anything about the DNSSEC
chain of trust and can merely be used as a verification of a successful
transfer of the DNSSEC key material.  </t></section>
 </middle>
  <back><references title="Normative References">
<?rfc include="reference.RFC.2119" ?>
<?rfc include="reference.RFC.3688" ?>
<?rfc include="reference.RFC.5730" ?>
<?rfc include="reference.RFC.5731" ?>
<?rfc include="reference.RFC.5910" ?>
</references>

<references title="Informative References">

<!-- koch-dnsop-dnssec-operator-change-06 IESG state: Expired -->
<reference anchor='DNSOP'>
<front>
<title>Changing DNS Operators for DNSSEC signed Zones</title>

<author initials='P' surname='Koch' fullname='Peter Koch'>
    <organization />
</author>

<author initials='M' surname='Sanz' fullname='Marcos Sanz'>
    <organization />
</author>

<author initials='A' surname='Verschuren' fullname='Antoin Verschuren'>
    <organization />
</author>

<date month='February' day='14' year='2014' />

</front>

<seriesInfo name='Work in Progress,' value='draft-koch-dnsop-dnssec-operator-change-06' />

</reference>

<?rfc include="reference.RFC.7451" ?>

</references>

<section title="Acknowledgements" anchor="acknowledgements" toc="default"
	 numbered="no"><t>We would like to thank the following individuals for
their valuable input, review, and constructive criticism in earlier revisions or support for the concepts described in this document: </t><t>Maarten Wullink, Marco Davids, Ed Lewis, James Mitchell, David Peal, Patrik Faltstrom, Klaus Malorny, James Gould, Patrick Mevzek, Seth Goldman, Maarten Bosteels, Ulrich Wisser, Kees Monshouwer, Scott Hollenbeck, and Job Snijders.  </t></section>
</back>
</rfc>
