<?xml version="1.0" encoding="US-ASCII"?>
<!-- automatically generated by xml2rfc v1.33pre4 on 2007-11-30T20:45:42Z -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes"?>
<rfc category="std" docName="draft-ietf-sidr-rescerts-provisioning-03.txt"
     ipr="full3978">
  <front>
    <title abbrev="Rescert Provisioning">A Protocol for Provisioning Resource
    Certificates</title>

    <author fullname="Geoff Huston" initials="G." surname="Huston">
      <organization abbrev="APNIC">Asia Pacific Network Information
      Centre</organization>

      <address>
        <postal>
          <street>33 Park Rd</street>

          <city>Milton</city>

          <region>QLD</region>

          <code>4064</code>

          <country>Australia</country>
        </postal>

        <email>gih@apnic.net</email>

        <uri>http://www.apnic.net</uri>
      </address>
    </author>

    <author fullname="Robert Loomans" initials="R." surname="Loomans">
      <organization abbrev="APNIC">Asia Pacific Network Information
      Centre</organization>

      <address>
        <postal>
          <street>33 Park Rd</street>

          <city>Milton</city>

          <region>QLD</region>

          <code>4064</code>

          <country>Australia</country>
        </postal>

        <email>robertl@apnic.net</email>

        <uri>http://www.apnic.net</uri>
      </address>
    </author>

    <author fullname="Byron Ellacott" initials="B." surname="Ellacott">
      <organization abbrev="APNIC">Asia Pacific Network Information
      Centre</organization>

      <address>
        <postal>
          <street>33 Park Rd</street>

          <city>Milton</city>

          <region>QLD</region>

          <code>4064</code>

          <country>Australia</country>
        </postal>

        <email>bje@apnic.net</email>

        <uri>http://www.apnic.net</uri>
      </address>
    </author>

    <author fullname="Rob Austein" initials="R." surname="Austein">
      <organization abbrev="ISC">Internet Systems Consortium</organization>

      <address>
        <postal>
          <street>950 Charter St</street>

          <city>Redwood City</city>

          <region>CA</region>

          <code>94063</code>

          <country>USA</country>
        </postal>

        <email>sra@isc.org</email>
      </address>
    </author>

    <date year="2008" />

    <area>Routing Area</area>

    <workgroup>Secure Inter-Domain Routing</workgroup>

    <abstract>
      <t>This document defines a framework for certificate management
      interactions between a resource issuer ("Internet Registry" or "IR") and
      a resource recipient ("Internet Service Provider" or "ISP") through the
      specification of a protocol for interaction between the two parties. The
      protocol supports the transmission of requests from the ISP, and
      corresponding responses from the IR encompassing the actions of
      certificate issuance, certificate revocation and certificate status
      information reports. This protocol is intended to be limited to the
      application of resource certificate management and is not intended to be
      used as part of a more general certificate management framework.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>This document defines a framework for certificate management
      interactions between a resource issuer ("Internet Registry" or "IR") and
      a resource recipient ("Internet Service Provider" or "ISP") through the
      specification of a protocol for interaction between the two parties. The
      protocol supports the transmission of requests from the ISP, and
      corresponding responses from the IR encompassing the actions of
      certificate issuance, certificate revocation and certificate status
      information reports. This protocol is intended to be limited to the
      application of resource certificate management and is not intended to be
      used as part of a more general certificate management framework.</t>

      <section title="Terminology">
        <t>It is assumed that the reader is familiar with the terms and
        concepts described in "Internet X.509 Public Key Infrastructure
        Certificate and Certificate Revocation List (CRL) Profile" <xref
        target="RFC5280"></xref>, "X.509 Extensions for IP Addresses and AS
        Identifiers" <xref target="RFC3779"></xref>, "Internet Protocol" <xref
        target="RFC0791"></xref>, "Internet Protocol Version 6 (IPv6)
        Addressing Architecture" <xref target="RFC4291"></xref>, "Internet
        Registry IP Allocation Guidelines" <xref target="RFC2050"></xref>, and
        related regional Internet registry address management policy
        documents.</t>

        <t>Additional terms used in this document are:<vspace
        blankLines="1" /> <list style="hanging">
            <t hangText="&quot;IR&quot;">an abbreviation of "Internet
            Registry", using in the context of this document as an entity
            undertaking the role of resource issuer. An IR is a Certificate
            Authority, and can issue Resource Certificates.<vspace
            blankLines="1" /></t>

            <t hangText="&quot;ISP&quot;">an abbreviation of "Internet Service
            Provider", using in the context of this document as an entity
            undertaking the role of resource recipient who is the subject of a
            Resource Certificate. An ISP may be issued with a CA-enabled
            certificate, allowing the entity to also assume the role of an
            IR.<vspace blankLines="1" /></t>

            <t hangText="&quot;resource class&quot;">a resource class refers
            to a collection of resources that can be certified in a single
            resource certificate by an issuer.<vspace blankLines="1" /></t>

            <t hangText="&quot;server&quot;">in the context of this
            client/server protocol specification, the IR assumes the role of
            the "server."<vspace blankLines="1" /></t>

            <t hangText="&quot;client&quot;">in the context of this
            client/server protocol specification, the ISP assumes the role of
            the "client."<vspace blankLines="1" /></t>
          </list></t>

        <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 RFC 2119.</t>
      </section>
    </section>

    <section title="Scope">
      <t>This Resource PKI (RPKI) certificate provisioning protocol defines a
      basic set of interactions that allow an ISP to request certificate
      issuance, revocation and status information from the IR, and for a IR to
      maintain an issued certificate set that is aligned to the allocation
      records relating to each ISP. The IR's resource allocation database, is
      the authoritative source of what resource allocations the IR may certify
      for an ISP.</t>

      <t>A resource recipient (ISP) may also undertake the role of a resource
      issuer (IR), such as in the case of a Local Internet Registry (LIR).</t>

      <t>This protocol specification does not encompass:</t>

      <t><list style="symbols">
          <t>signing of objects with keys that are certified by resource
          certificates, nor the issuance of end-entity certificates.<vspace
          blankLines="1" /></t>

          <t>the specification of interaction with the IR's resource
          allocation database, nor the specification of a protocol to manage
          the publication repository.<vspace blankLines="1" /></t>

          <t>the interactions between client and server that establish
          identities, exchange the keys used in the protection of the
          communications channel between client and server, and the exchange
          of the certificates and validation PKI contexts used in the
          Cryptographic Message Syntax message exchange.<vspace
          blankLines="1" /></t>
        </list></t>
    </section>

    <section title="Protocol Specification">
      <t>This RPKI certificate provisioning protocol is expressed as a simple
      request/response interaction, where the client passes a request to the
      server, and the server generates a corresponding response.</t>

      <t>The protocol is implemented as an exchange of messages.</t>

      <t>Messages are passed over an HTTPS <xref target="RFC2818"></xref>
      transport connection that safeguards against interception and replay
      attacks. The HTTPS session uses mutually authenticated Transport Layer
      Security (TLS) <xref target="RFC4346"></xref>. The TLS keys and
      associated certificate chain used to validate TLS transactions is
      assumed to have been previously communicated between the two entities,
      through mechanisms not defined in this protocol specification. The HTTPS
      connection will use 2 way (mutual) identification. A message exchange
      commences with the client initiating an HTTP POST with content type of
      "application/x-rpki", with the message object as the body. The server's
      response will similarly be the body of the response with a content type
      of "application/x-rpki".</t>

      <t>The content of the POST, and the server's response, will be a
      "well-formed" Cryptographic Message Syntax (CMS) <xref
      target="RFC3852"></xref> object, encoded using the Distinguished
      Encoding Rules for ASN.1 (DER) <xref target="X.509-88"></xref>,
      formatted in accordance with the CMS profile as specified in the
      following section. CMS is used as the signing format to sign the message
      object. The public part of the signing key and the associated
      certificate chain that is used to validate the CMS digital signature is
      assumed to have been communicated between the two entities, through
      mechanisms not defined in this protocol specification. The CMS keys and
      certificates MAY be the same as those used for TLS.</t>

      <t>The protocol's request / response interaction is assumed to be
      reliable, in that all requests will generate a matching response. The
      protocol requires sequential operation, where the server MUST NOT accept
      a client's request unless it has generated and sent a response to the
      client's previous request. Attempts by the client to initiate multiple
      requests in parallel MUST be detected by the server and rejected with an
      error response.</t>

      <section title="CMS Profile">
        <t>The format of the CMS object is:</t>

        <figure>
          <artwork><![CDATA[
      ContentInfo ::= SEQUENCE {
        contentType ContentType,
        content [0] EXPLICIT ANY DEFINED BY contentType } 
 
      ContentType ::= OBJECT IDENTIFIER 
         ]]></artwork>
        </figure>

        <t>The protocol objects are all instances of CMS signed-data objects,
        where the ContentType used is the signed-data type of id-data, namely
        id-signedData, OID = 1.2.840.113549.1.7.2.</t>

        <section title="SignedData Content Type">
          <t>According to <xref target="RFC3852"></xref>, signed-data content
          types shall have the ASN.1 type SignedData:</t>

          <figure>
            <artwork><![CDATA[
      SignedData ::= SEQUENCE { 
        version CMSVersion, 
        digestAlgorithms DigestAlgorithmIdentifiers, 
        encapContentInfo EncapsulatedContentInfo, 
        certificates [0] IMPLICIT CertificateSet OPTIONAL, 
        crls [1] IMPLICIT RevocationInfoChoices OPTIONAL, 
        signerInfos SignerInfos } 
    
      DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier 
    
      SignerInfos ::= SET OF SignerInfo 
         ]]></artwork>
          </figure>

          <section title="version">
            <t>The version is the syntax version number. It MUST be 3,
            corresponding to the signerInfo structure having version number
            3.</t>
          </section>

          <section title="digestAlgorithms">
            <t>The digestAlgorithms set MUST include only SHA-256, the OID for
            which is 2.16.840.1.101.3.4.2.1 <xref target="RFC4055"></xref>. It
            MUST NOT contain any other algorithms.</t>
          </section>

          <section title="encapContentInfo">
            <t>encapContentInfo is the signed content, consisting of a content
            type identifier and the content itself.</t>

            <figure>
              <artwork><![CDATA[
     EncapsulatedContentInfo ::= SEQUENCE { 
       eContentType ContentType, 
       eContent [0] EXPLICIT OCTET STRING OPTIONAL } 
   
     ContentType ::= OBJECT IDENTIFIER 
         ]]></artwork>
            </figure>

            <section title="eContentType">
              <t>The eContentType for the RPKI Protocol Message object is
              defined as id-ct-xml, and has the numerical value of
              1.2.840.113549.1.9.16.1.28.</t>

              <figure>
                <artwork><![CDATA[
      id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) 
                                rsadsi(113549) pkcs(1) pkcs9(9) 16 } 
    
      id-ct OBJECT IDENTIFIER ::= { id-smime 1 } 
    
      id-ct-xml OBJECT IDENTIFIER ::= { id-ct 28 } 
         ]]></artwork>
              </figure>
            </section>

            <section title="eContent">
              <t>The content of a RPKI XML Protocol Object consists of a
              single protocol message, structured according to a define XML
              schema, as defined in subsequent sections of this document. The
              eContent field of the CMS object is formally defined using ASN.1
              as:</t>

              <figure>
                <artwork><![CDATA[
          id-ct-xml ::= OCTET STRING -- XML encoded message
         ]]></artwork>
              </figure>
            </section>
          </section>

          <section title="certificates">
            <t>The certificates field MUST be present, and MUST contain the EE
            certificate of the key pair whose private key value was used to
            sign the CMS. This MUST NOT be an RPKI certificate, and SHOULD be
            a certificate that is recognised to attest to the identity of the
            party that created the CMS object.</t>

            <t>This field MAY contain other certificates that a relying party
            may use to validate the digital signature of the CMS object.</t>
          </section>

          <section title="crls">
            <t>This field MUST be present. The contents of the field are
            specified in <xref target="RFC3852"></xref>.</t>
          </section>

          <section title="signerInfo">
            <t>SignerInfo is defined under CMS as:</t>

            <figure>
              <artwork><![CDATA[
      SignerInfo ::= SEQUENCE { 
        version CMSVersion, 
        sid SignerIdentifier, 
        digestAlgorithm DigestAlgorithmIdentifier, 
        signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL, 
        signatureAlgorithm SignatureAlgorithmIdentifier, 
        signature SignatureValue, 
        unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL } 
         ]]></artwork>
            </figure>

            <section title="version">
              <t>The version number MUST be 3, corresponding with the choice
              of SubjectKeyIdentifier for the sid.</t>
            </section>

            <section title="sid">
              <t>The sid is defined as:</t>

              <figure>
                <artwork><![CDATA[
      SignerIdentifier ::= CHOICE { 
        issuerAndSerialNumber IssuerAndSerialNumber, 
        subjectKeyIdentifier [0] SubjectKeyIdentifier } 
         ]]></artwork>
              </figure>

              <t>In this profile, the sid MUST be a SubjectKeyIdentifier.</t>
            </section>

            <section title="digestAlgorithm">
              <t>The digestAlgorithm MUST be SHA-256, the OID for which is
              2.16.840.1.101.3.4.2.1. <xref target="RFC4055"></xref></t>
            </section>

            <section title="signedAttrs">
              <t>Signed Attributes are defined as:</t>

              <figure>
                <artwork><![CDATA[
      SignedAttributes ::= SET SIZE (1..MAX) OF Attribute

      UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute

      Attribute ::= SEQUENCE {
        attrType OBJECT IDENTIFIER,
        attrValues SET OF AttributeValue }

      AttributeValue ::= ANY
         ]]></artwork>
              </figure>

              <t>The signer MUST digitally sign a collection of attributes
              along with the content payload. Each attribute in the collection
              MUST be DER-encoded. The syntax for attributes is defined in
              <xref target="X.501"></xref>, and the X.500 Directory provides a
              rich attribute syntax. A very simple subset of this syntax is
              used extensively in <xref target="RFC3852"></xref>, where
              ATTRIBUTE.Type and ATTRIBUTE.id are the only parts of the
              ATTRIBUTE class that are employed.</t>

              <t>Each of the attributes used with this CMS profile has a
              single attribute value. Even though the syntax is defined as a
              SET OF AttributeValue, there MUST be exactly one instance of
              AttributeValue present.</t>

              <t>The SignedAttributes syntax within signerInfo is defined as a
              SET OF Attribute. The SignedAttributes MUST include only one
              instance of any particular attribute.</t>

              <t>The signer MUST include the content-type, message-digest and
              signing-time signed attributes. The signer MAY also include the
              binary-signing-time signed attribute. Other signed attributes
              that are deemed appropriate MAY also be included. The intent is
              to allow additional signed attributes to be included if a future
              need is identified. This does not cause an interoperability
              concern because unrecognized signed attributes are ignored at
              verification.</t>

              <section title="Content-Type Attribute">
                <figure>
                  <artwork><![CDATA[
      id-contentType OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs9(9) 3 }

      ContentType ::= OBJECT IDENTIFIER
         ]]></artwork>
                </figure>

                <t>A content-type attribute is required to contain the same
                object identifier as the content type contained in the
                EncapsulatedContentInfo. The signer MUST include a
                content-type attribute containing the appropriate content
                type. Section 11.1 of <xref target="RFC3852"></xref> defines
                the content-type attribute.</t>
              </section>

              <section title="Message-Digest Attribute">
                <figure>
                  <artwork><![CDATA[
      id-messageDigest OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs9(9) 4 }

      MessageDigest ::= OCTET STRING
         ]]></artwork>
                </figure>

                <t>The signer MUST include a message-digest attribute, having
                as its value the output of a one-way hash function computed on
                the content that is being signed. Section 11.2 of <xref
                target="RFC3852"></xref> defines the message-digest
                attribute.</t>
              </section>

              <section title="Signing-Time Attribute">
                <figure>
                  <artwork><![CDATA[
      id-signingTime OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs9(9) 5 }

      SigningTime ::= Time

      Time ::= CHOICE {
        utcTime UTCTime,
        generalizedTime GeneralizedTime }
         ]]></artwork>
                </figure>

                <t>The signing-time attribute MUST be present.</t>

                <t>The signing-time attribute specifies the time, based on the
                local system clock, when the digital signature was applied to
                the content. Section 11.3 of <xref target="RFC3852"></xref>
                defines the content-type attribute.</t>
              </section>

              <section title="Binary-Signing-Time Attribute">
                <figure>
                  <artwork><![CDATA[
      id-aa-binarySigningTime OBJECT IDENTIFIER ::= { iso(1)
          member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
          smime(16) aa(2) 46 }

      BinarySigningTime ::= BinaryTime

      BinaryTime ::= INTEGER (0..MAX)
         ]]></artwork>
                </figure>

                <t>The signer MAY include a binary-signing-time attribute,
                specifying the time at which the digital signature was applied
                to the content. If the binary-signing-time is present, the
                time that is represented MUST represent the same time value as
                the signing-time attribute. The binary-signing-time attribute
                is defined in <xref target="RFC4049"></xref>.</t>
              </section>
            </section>

            <section title="signatureAlgorithm">
              <t>The signatureAlgorithm MUST be RSA (rsaEncryption), the OID
              for which is 1.2.840.113549.1.1.1.</t>
            </section>

            <section title="signature">
              <t>The signature value is defined as:</t>

              <figure>
                <artwork><![CDATA[
          SignatureValue ::= OCTET STRING 
         ]]></artwork>
              </figure>

              <t>The signature characteristics are defined by the digest and
              signature algorithms.</t>
            </section>

            <section title="unsignedAttrs">
              <t>unsignedAttrs MUST be omitted.</t>
            </section>
          </section>
        </section>

        <section title="ASN.1">
          <t>The following is the ASN.1 specification of the CMS signed object
          used by the RPKI provisioning protocol.</t>

          <figure>
            <artwork><![CDATA[
      ContentInfo ::= SEQUENCE { 
        contentType ContentType, 
        content [0] EXPLICIT ANY DEFINED BY contentType } 
    
      ContentType ::= OBJECT IDENTIFIER 

      id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) 
                                rsadsi(113549) pkcs(1) pkcs9(9) 16 } 
    
      id-ct OBJECT IDENTIFIER ::= { id-smime 1 } 
    
      id-ct-xml OBJECT IDENTIFIER ::= { id-ct 28 } 

      id-ct-xml ::= OCTET STRING -- XML encoded message

      id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
                         us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }

      SignedData ::= SEQUENCE { 
        version CMSVersion, 
        digestAlgorithms DigestAlgorithmIdentifiers, 
        encapContentInfo EncapsulatedContentInfo, 
        certificates [0] IMPLICIT CertificateSet OPTIONAL, 
        crls [1] IMPLICIT RevocationInfoChoices OPTIONAL, 
        signerInfos SignerInfos } 
    
      DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier 
    
      SignerInfos ::= SET OF SignerInfo 

      SignerInfo ::= SEQUENCE { 
        version CMSVersion, 
        sid SignerIdentifier, 
        digestAlgorithm DigestAlgorithmIdentifier, 
        signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL, 
        signatureAlgorithm SignatureAlgorithmIdentifier, 
        signature SignatureValue, 
        unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL } 

      SignerIdentifier ::= CHOICE { 
        issuerAndSerialNumber IssuerAndSerialNumber, 
        subjectKeyIdentifier [0] SubjectKeyIdentifier } 

      SignedAttributes ::= SET SIZE (1..MAX) OF Attribute

      UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute

      Attribute ::= SEQUENCE {
        attrType OBJECT IDENTIFIER,
        attrValues SET OF AttributeValue }

      AttributeValue ::= ANY

      SignatureValue ::= OCTET STRING 

      id-contentType OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs9(9) 3 }

      ContentType ::= OBJECT IDENTIFIER

      id-messageDigest OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs9(9) 4 }

      MessageDigest ::= OCTET STRING

      id-signingTime OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs9(9) 5 }

      SigningTime ::= Time

      Time ::= CHOICE {
        utcTime UTCTime,
        generalizedTime GeneralizedTime }

      id-aa-binarySigningTime OBJECT IDENTIFIER ::= { iso(1)
          member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
          smime(16) aa(2) 46 }

      BinarySigningTime ::= BinaryTime

      BinaryTime ::= INTEGER (0..MAX)
         ]]></artwork>
          </figure>
        </section>
      </section>

      <section title="Common Message format">
        <t>The XML template for all messages is as follows:</t>

        <figure>
          <artwork><![CDATA[
---------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<message xmlns="http://www.apnic.net/specs/rescerts/up-down/"
         version="1"
         sender="sender name"
         recipient = "recipient name"
         type="message type">

[payload]

</message>

---------------------------------------------------------------

    ]]></artwork>
        </figure>

        <t><list style="hanging">
            <t hangText="version:"><vspace blankLines="0" />the value of this
            attribute is the version of this protocol. This document describes
            version 1.<vspace blankLines="1" /></t>

            <t hangText="sender:"><vspace blankLines="0" />the value of this
            attribute is the agreed name of the message sender, as determined
            between the client and the server by prior arrangement.<vspace
            blankLines="1" /></t>

            <t hangText="recipient:"><vspace blankLines="0" />the value of
            this attribute is the agreed name of the message recipient, as
            determined between the client and the server by prior
            arrangement.<vspace blankLines="1" /></t>

            <t hangText="type:"><vspace blankLines="0" />the possible values
            of this attribute are "list", "list_response", "issue",
            "issue_response", "revoke", "revoke_response", and
            "error_response".</t>
          </list></t>

        <t>Conforming parsers MUST reject any document with a version number
        they do not understand, or with any elements or attributes they do not
        understand. Servers must generate an error response when receiving
        such a request. Clients should generate an operator alert error when
        receiving such a response.</t>

        <t>A message in this protocol is a digitally signed object that makes
        use of CMS <xref target="RFC3852"></xref>, and is encoded as DER. It
        uses the signed-data object contentType OID: 1.2.840.113549.1.7.2. The
        attribute "id-signingTime" (contentType OID: 1.2.840.113549.1.9.5)
        MUST be present in the CMS object.</t>

        <t>The encapsulated content of the CMS wrapping is an XML document.
        The remainder of this protocol specification omits this CMS wrapper
        and only discusses the XML document.</t>

        <t>Messages are checked using the following tests:<vspace
        blankLines="1" /> <list style="numbers">
            <t>Check the integrity of the HTTPS message and validate the TLS
            certificate using the PKI that has been determined by prior
            arrangement between client and server.<vspace
            blankLines="1" /></t>

            <t>Check that the CMS is well-formed.<vspace blankLines="1" /></t>

            <t>Check that the XML is well-formed.<vspace blankLines="1" /></t>

            <t>Check that the XML sender and recipient attributes reference a
            known client and this server's system respectively.<vspace
            blankLines="1" /></t>

            <t>Verify the digital signature using the public key provided in
            the certificate carried in the CMS wrapper.<vspace
            blankLines="1" /></t>

            <t>Validate the CMS-provided certificate using the PKI that has
            been determined by prior arrangement between client and
            server.<vspace blankLines="1" /></t>

            <t>Check that the value of the version number of the message is
            1.</t>
          </list></t>

        <t>The checks should generally be applied in the order specified
        here.</t>

        <t>Any errors encountered while checking items 1 through 6 would cause
        the server to generate an "HTTP 400 Bad Data" response to the HTTPS
        POST operation. An error in step 7 would cause the server to generate
        a "Request-Not-Performed" error response.</t>
      </section>

      <section title="Control - Resource Class Query">
        <section title="Resource Class List Query">
          <t>The value of the message "type" message attribute for this query
          is:<vspace blankLines="1" /><list style="empty">
              <t>type="list"</t>
            </list></t>

          <figure>
            <artwork><![CDATA[

---------------------------------------------------------------

Payload:

[No message payload is defined for this query]

---------------------------------------------------------------

    ]]></artwork>
          </figure>
        </section>

        <section title="Resource Class List Response">
          <t>The value of the message "type" element for this response is:
          <vspace blankLines="1" /><list style="empty">
              <t>type="list_response"</t>
            </list></t>

          <figure>
            <artwork><![CDATA[
---------------------------------------------------------------

Payload:

 <class class_name="class name"
     cert_url="url"
     resource_set_as="as resource set"
     resource_set_ipv4="ipv4 resource set"
     resource_set_ipv6="ipv6 resource set"
     resource_set_notafter="datetime"
     suggested_sia_head="[directory uri]" >
     <certificate cert_url="url"
         req_resource_set_as="as resource set"
         req_resource_set_ipv4="ipv4 resource set"
         req_resource_set_ipv6="ipv6 resource set" >
     [certificate]
     </certificate>

     ...

     (repeated for each current certificate where the client
      is the certificate's subject)

     <issuer>[issuer's certificate]</issuer>
     </class>

 ...

 (repeated for each of the issuer's resource class where the
  client has been allocated resources)


---------------------------------------------------------------

    ]]></artwork>
          </figure>

          <t>Where the client has been allocated resources from multiple
          resource classes, then the response will contain multiple class
          elements, corresponding to the complete set of the issuer's resource
          classes where the client holds allocated resources. Those issuer's
          resource classes where the client holds no allocated resources will
          not be included in the response.</t>

          <t>Where the issuer has issued multiple certificates in a resource
          class signed with different keys (as may occur during a staged
          issuer-key rollover), only the most recent certificate issued with
          the currently "active" issuer's key will be listed in the
          response.</t>

          <t>Each "class" element describes a set of resources that are
          certified within the scope of a single certificate, referring to a
          single resource class with a common validation path.</t>

          <t><list style="hanging">
              <t hangText="class_name:"><vspace blankLines="0" />the value of
              this attribute is the issuer-assigned name of the issuer's
              Resource Class.<vspace blankLines="1" /></t>

              <t hangText="cert_url:"><vspace blankLines="0" />in the context
              of a class element, the value of this attribute is a pointer to
              the issuer's CA certificate (i.e. a reference to the immediate
              superior certificate, being the CA-enabled certificate where the
              issuer is the certificate's subject). Its value is a
              comma-separated list of URIs, of which at least one MUST be an
              RSYNC URI. Any comma values within a URI MUST be escaped
              ("%2C"). The ordering of the list may be interpreted by the
              client as a relative preference for access methods as expressed
              by the publisher of this certificate.<vspace
              blankLines="1" /></t>

              <t hangText="resource_set_as:"><vspace blankLines="0" />in the
              context of a class element, the value of this attribute is the
              set of AS numbers and AS number ranges that the issuer has
              allocated to the client within the scope of this resource class,
              presented in ASCII as a comma-separated list. The list elements
              are decimal integer values and ranges of decimal integers
              specified by the low and high value of the range with a hyphen
              delimiter, using the canonical order as described in <xref
              target="RFC3779"></xref>, without leading zeros, and with no
              white space or punctuation other than the comma and the hyphen
              range designator (e.g.: resource_set_as="123,456-789,123456").
              If there are no AS numbers in this Resource Class the empty set
              will be represented by a null string value ("") for this
              attribute.<vspace blankLines="1" /></t>

              <t hangText="resource_set_ipv4:"><vspace blankLines="0" />in the
              context of a class element, the value of this attribute is the
              set of IPv4 addresses that the issuer has allocated to the
              client within the scope of this resource class. The value is
              presented in ASCII as a comma-separated list of elements. Each
              element is either an address prefix using the notation of
              &lt;dotted quad&gt;/mask length, or a range specified as low and
              high range values in dotted quad notation with a hyphen
              delimiter. The list is presented in canonical order, as
              described in <xref target="RFC3779"></xref>. The dotted quad
              notation is without leading zeros, and the list contains no
              white space or punctuation other than the period, forward slash,
              hyphen and comma. (e.g.
              resource_set_ipv4="192.0.2.0/26,192.0.2.66-192.0.2.76") If there
              are no IPv4 addresses in this resource class the empty set will
              be represented by a null string value ("") for this
              attribute.<vspace blankLines="1" /></t>

              <t hangText="resource_set_ipv6:"><vspace blankLines="0" />in the
              context of a class element, the value of this attribute is the
              set of IPv6 addresses that the issuer has allocated to the
              client within the scope of this resource class. The value is
              presented in ASCII as a comma-separated list of elements. Each
              element is either an address prefix using the notation of
              &lt;hex nibble sequence&gt;/mask length, or a range specified as
              low and high range values in hex nibble notation with a hyphen
              delimiter. Trailing zero nibbles are truncated and represented
              by '::'. The list is presented in canonical order, as described
              in <xref target="RFC3779"></xref>. The hex nibble sequence
              notation is without leading zeros, and the list contains no
              white space or punctuation other than the colon, forward slash,
              hyphen and comma (e.g.
              resource_set_ipv6="2001:0DB8::/48,2001:0DB8:002::-2001:0DB8:005::").
              The XML Schema data type is
              "http://www.w3.org/TR/xmlschema-2/#hexBinary" and value is case
              insensitive, with the canonical form being upper case. If there
              are no IPv6 addresses in this resource class the empty set will
              be represented by a null string value ("") for this
              attribute.<vspace blankLines="1" /></t>

              <t hangText="resource_set_notafter:"><vspace
              blankLines="0" />The value of this attribute specified the
              date/time that would be set in the Validity notAfter field in
              any new certificate issued for this particular client within the
              scope of this resource class, should the client request a new
              certificate. The time format used for the value of this
              attribute is specified as ISO 8601 <xref
              target="ISO.8601:2004"></xref>, and MUST use UTC time (i.e.
              YYYY-MM-DDThh:mm:ssZ, e.g. 2007-11-29T04:40:00Z). If the
              client's certificate has a validity notAfter time that is
              different to this this time then the client SHOULD request a new
              certificate to be issued for this resource class.<vspace
              blankLines="1" /></t>

              <t hangText="suggested_sia_head:">(OPTIONAL)<vspace
              blankLines="0" />If this field is present then it indicates a
              publication namespace which the server has made available to the
              client to use for its own collection of published products.
              Presence of this field does not mean that the client has
              permission from the repository operator to lodge under this URI,
              only that the client has permission from the server to lodge
              under this URI.<vspace blankLines="1" /></t>

              <t hangText="[issuer's certificate]"><vspace
              blankLines="0" />value is the Base64 encoding of the DER-encoded
              issuer's CA certificate (the CA-enabled certificate where the
              issuer is the certificate's subject).</t>
            </list></t>

          <t>Each certificate element describes the most recently issued
          current certificate where the certificate's subject refers to the
          client for each active client key pair. A "current" certificate is a
          non-expired, non-revoked certificate. If no current certificate has
          been issued, then no certificate element will be included in the
          response.</t>

          <t><list style="hanging">
              <t hangText="cert_url:"><vspace blankLines="0" />in the context
              of a certificate element, this is a pointer to the location
              where the certificate issuer has published this certificate.
              This field is the issuer's suggestion for the AIA field for the
              subject to use in subordinate certificates that are issued by
              the subject. According to the Resource Certificate Profile
              [insert ref here] the AIA field is a non-empty (contains a
              minimum of 1 element) list of URI's, one of which MUST be an
              RSYNC URI. The order of URI's in the AIA field may be
              interpreted as the publisher's relative preference for access
              methods for this certificate. The cert_url conforms to this AIA
              specification. Its value is a comma-separated list of URIs, one
              of which MUST be an RSYNC URI. Any comma values within a URI
              MUST be escaped ("%2C").<vspace blankLines="1" /></t>

              <t hangText="req_resource_set_as:"><vspace blankLines="0" />the
              set of AS numbers that were specified in the corresponding
              original certificate request that defined the maximal requested
              span of the certified AS number set, following the syntax
              described above. If this attribute was present in the
              certificate request, then the attribute MUST be present in this
              response, otherwise it MUST NOT be present.<vspace
              blankLines="1" /></t>

              <t hangText="req_resource_set_ipv4:"><vspace
              blankLines="0" />the set of IPv4 addresses that were specified
              in the corresponding original certificate request that defined
              the maximal requested span of the certified IPv4 address set,
              following the syntax described above. If this attribute was
              present in the certificate request, then the attribute MUST be
              present in this response, otherwise it MUST NOT be
              present.<vspace blankLines="1" /></t>

              <t hangText="req_resource_set_ipv6:"><vspace
              blankLines="0" />the set of IPv6 addresses that were specified
              in the corresponding original certificate request that defined
              the maximal requested span of the certified IPv6 address set,
              following the syntax described above. If this attribute was
              present in the certificate request, then the attribute MUST be
              present in this response, otherwise it MUST NOT be
              present.<vspace blankLines="1" /></t>

              <t hangText="[certificate]"><vspace blankLines="0" />value is
              the Base64 encoding of the DER-encoded certificate.</t>
            </list></t>
        </section>
      </section>

      <section title="CA - Certificate Issuance">
        <section title="Certificate Issuance Request">
          <t>The value of the message "type" element for this request is:
          <vspace blankLines="1" /><list style="empty">
              <t>type="issue"</t>
            </list></t>

          <figure>
            <artwork><![CDATA[

---------------------------------------------------------------

Payload:

<request
           class_name="class name"
           req_resource_set_as="as resource set"
           req_resource_set_ipv4="ipv4 resource set"
           req_resource_set_ipv6="ipv6 resource set">
           [Certificate request]
           </request>

---------------------------------------------------------------

    ]]></artwork>
          </figure>

          <t>The client must use different key pairs for each distinct
          resource class.</t>

          <t>If any of the req_resource_set attributes are specified in the
          request, then any missing req_resource_set attributes are to be
          interpreted as specifying the complete set of the corresponding
          resource type that match the client's current resource allocation.
          If the value of any req_resource_set attributes is the null value
          (""), then this indicates that no resources of that resource type
          are to be certified with this request.</t>

          <t>The requested resource set values are held as a local record by
          the issuer against the resource class and the client's public key.
          Any subsequent Certificate Issuance Requests that specify the same
          Resource Class and the same client's public key will (re)set the
          issuer's local record of the requested resource sets to the most
          recently specified values.</t>

          <t><list style="hanging">
              <t hangText="class_name:"><vspace blankLines="0" />value is the
              server's identifier of a Resource Class.<vspace
              blankLines="1" /></t>

              <t hangText="req_resource_set_as:">(OPTIONAL)<vspace
              blankLines="0" />the set of AS numbers that define the maximal
              requested span of the certified AS number set, formatted as per
              the resource_set_as attribute of the Resource Class List
              Response.<vspace blankLines="1" /></t>

              <t hangText="req_resource_set_ipv4:">(OPTIONAL)<vspace
              blankLines="0" />the set of IPv4 addresses that define the
              maximal requested span of the certified IPv4 address set,
              formatted as per the resource_set_ipv4 attribute of the Resource
              Class List Response.<vspace blankLines="1" /></t>

              <t hangText="req_resource_set_ipv6:">(OPTIONAL)<vspace
              blankLines="0" />the set of IPv6 addresses that define the
              maximal requested span of the certified IPv6 address set,
              formatted as per the resource_set_ipv6 attribute of the Resource
              Class List Response.<vspace blankLines="1" /></t>

              <t hangText="[Certificate request]"><vspace
              blankLines="0" />value is the certificate request. This is a
              Base-64 encoded DER version of a request formatted using
              PKCS#10.</t>
            </list></t>
        </section>

        <section title="Certificate Issuance Response">
          <t>The value of the message "type" element for this response is:
          <vspace blankLines="1" /><list style="empty">
              <t>type="issue_response"</t>
            </list></t>

          <figure>
            <artwork><![CDATA[

---------------------------------------------------------------

Payload:


 <class class_name="class name"
        cert_url="url"
        resource_set_as="as resource set"
        resource_set_ipv4="ipv4 resource set"
        resource_set_ipv6="ipv6 resource set" >
         <certificate cert_url="url"
               req_resource_set_as="as resource set"
               req_resource_set_ipv4="ipv4 resource set"
               req_resource_set_ipv6="ipv6 resource set" >
         [certificate]
         </certificate>
         <issuer>[issuer's certificate]</issuer>
       </class>

---------------------------------------------------------------

    ]]></artwork>
          </figure>

          <t>If the certificate issuer determines that the issued certificate
          would be identical in all respects to the most recently issued
          certificate for this client, other than the certificate's serial
          number, were the certificate to be issued, the issuer may choose to
          respond with the most recently issued certificate and not issue a
          new certificate for this request.</t>

          <t>The definition of the attributes and syntax of the values is the
          same as the resource class list response, but the response only
          references the (single) named resource class, and the (single)
          certificate issued against the client's public key as provided in
          the corresponding certificate request.</t>
        </section>
      </section>

      <section title="Certificate Revocation">
        <section title="Certificate Revocation Request">
          <t>The value of the message "type" element for this request is:
          <vspace blankLines="1" /><list style="empty">
              <t>type="revoke"</t>
            </list></t>

          <figure>
            <artwork><![CDATA[

---------------------------------------------------------------

Payload:


<key class_name="class name"
     ski="encoded hash of the subject public key]" />


---------------------------------------------------------------

    ]]></artwork>
          </figure>

          <t>This command 'retires' a client's key pair by requesting the
          issuer to revoke all certificates for this client that contain the
          matching public key, within the scope of a named Resource Class.
          Individual issued certificates cannot be revoked within the scope of
          this protocol.</t>

          <t>This command directs the issuer to immediately mark all issued
          valid certificates issued by this issuer within the named Resource
          Class with this client's SKI value to be marked as revoked, causing
          the issued certificates to be withdrawn from the publication
          repository and to be listed in the server's subsequent CRLs within
          this Resource Class.</t>

          <t><list style="hanging">
              <t hangText="class_name:"><vspace blankLines="0" />value is the
              issuer-assigned name of the issuer's Resource Class.<vspace
              blankLines="1" /></t>

              <t hangText="ski:"><vspace blankLines="0" />value is the encoded
              hash of the client's public key that is to be revoked. The
              algorithm for the encoding is to generate the 160-bit SHA-1 hash
              of the client's public key, as defined in method (1) of section
              4.2.1.2 of <xref target="RFC5280"></xref>, and encode this value
              using the Base 64 encoding with URL and Filename Safe Alphabet,
              as defined in section 5 of <xref target="RFC4648"></xref>.</t>
            </list></t>
        </section>

        <section title="Certificate Revocation Response">
          <t>The value of the message "type" element for this response is:
          <vspace blankLines="1" /><list style="empty">
              <t>type="revoke_response"</t>
            </list></t>

          <figure>
            <artwork><![CDATA[

---------------------------------------------------------------

Payload:


<key class_name="class name"
     ski="encoded hash of the subject public key" />

---------------------------------------------------------------

    ]]></artwork>
          </figure>

          <t><list style="hanging">
              <t hangText="class_name:"><vspace blankLines="0" />value is the
              issuer-assigned name of the server's Resource Class.<vspace
              blankLines="1" /></t>

              <t hangText="ski:"><vspace blankLines="0" />value is the encoded
              hash of the client's public key that is to be revoked. The
              algorithm for the encoding is to generate the 160-bit SHA-1 hash
              of the client's public key, as defined in method (1) of section
              4.2.1.2 of <xref target="RFC5280"></xref>, and encode this value
              using the Base 64 encoding with URL and Filename Safe Alphabet,
              as defined in section 5 of <xref target="RFC4648"></xref>.</t>
            </list></t>
        </section>
      </section>

      <section title="Request-Not-Performed Response">
        <t>The value of the message "type" element for this response is:
        <vspace blankLines="1" /><list style="empty">
            <t>type="error_response"</t>
          </list></t>

        <figure>
          <artwork><![CDATA[

---------------------------------------------------------------

Payload:


<status>[Code]</status>
<description xml:lang="en-US">[Readable text]</description>

---------------------------------------------------------------

    ]]></artwork>
        </figure>

        <t>All states where an error response if to be generated, either due
        to detected errors or inconsistencies in the content of the request or
        server-side states that prevent the request being performed, generate
        a Request-Not-Performed response.</t>

        <t><list style="hanging">
            <t hangText="description:"><vspace blankLines="0" />value is a
            text field. This element MAY be present. It's value has no defined
            meaning within the scope of this protocol, and implementations may
            assume that some form of human-readable text may be used here. If
            the HTTP request that triggered this error response includes an
            Accept-Language header as defined in section 14.4 of the HTTP/1.1
            specification [insert reference to RFC2616] then the server will
            make a best effort to include a second description element using
            the highest ranked preferred language of the client. The en-US
            description will always be included if the element is present.</t>
          </list></t>

        <t>The error code set is:</t>

        <figure>
          <artwork><![CDATA[
   Code Value    Description
   1101          already processing request
   1102          version number error
   1103          unrecognised request type
   1201          request - no such resource class
   1202          request - no resources allocated in resource class
   1203          request - badly formed certificate request
   1301          revoke - no such resource class
   1302          revoke - no such key 2000+ Server Error
   2001          Internal Server Error - Request not performed

    ]]></artwork>
        </figure>
      </section>
    </section>

    <section title="XML Schema">
      <t>The following is a RelaxNG compact form schema describing the IR-ISP
      Protocol, version 1.</t>

      <figure>
        <artwork><![CDATA[

default namespace = "http://www.apnic.net/specs/rescerts/up-down/"

  grammar {
    start = element message {
      attribute version { xsd:positiveInteger { maxInclusive="1" } },
      attribute sender { xsd:token { maxLength="1024" } },
      attribute recipient { xsd:token { maxLength="1024" } },
      payload
    }

    payload |= attribute type { "list" }, list_request
    payload |= attribute type { "list_response"}, list_response
    payload |= attribute type { "issue" }, issue_request
    payload |= attribute type { "issue_response"}, issue_response
    payload |= attribute type { "revoke" }, revoke_request
    payload |= attribute type { "revoke_response"}, revoke_response
    payload |= attribute type { "error_response"}, error_response

    list_request = empty
    list_response = class*

    class = element class {
      attribute class_name { xsd:token { maxLength="1024" } },
      attribute cert_url { xsd:string { maxLength="4096" } },
      attribute resource_set_as { xsd:string { maxLength="512000"
        pattern="[\-,0-9]*" } },
      attribute resource_set_ipv4 { xsd:string { maxLength="512000"
        pattern="[\-,/.0-9]*" } },
      attribute resource_set_ipv6 { xsd:string { maxLength="512000"
        pattern="[\-,/:0-9a-fA-F]*" } },
      attribute resource_set_notafter { xsd:dateTime },
      attribute suggested_sia_head { xsd:anyURI { maxLength="1024"
        pattern="rsync://.+"} }?,
      element certificate {
        attribute cert_url { xsd:string { maxLength="4096" } },
        attribute req_resource_set_as { xsd:string {
          maxLength="512000" pattern="[\-,0-9]*" } }?,
        attribute req_resource_set_ipv4 { xsd:string {
          maxLength="512000" pattern="[\-,/.0-9]*" } }?,
        attribute req_resource_set_ipv6 { xsd:string {
          maxLength="512000" pattern="[\-,/:0-9a-fA-F]*" } }?,
        xsd:base64Binary { maxLength="512000" }
      }*,
      element issuer { xsd:base64Binary { maxLength="512000" } }
    }

    issue_request = element request {
      attribute class_name { xsd:token { maxLength="1024" } },
      attribute req_resource_set_as { xsd:string {
        maxLength="512000" pattern="[\-,0-9]*" } }?,
      attribute req_resource_set_ipv4 { xsd:string {
        maxLength="512000" pattern="[\-,/.0-9]*" } }?,
      attribute req_resource_set_ipv6 { xsd:string {
        maxLength="512000" pattern="[\-,/:0-9a-fA-F]*" } }?,
      xsd:base64Binary { maxLength="512000"
      }
    }
    issue_response = class

    revoke_request = revocation

    revoke_response =
      revocation

    revocation = element key { attribute class_name { xsd:token {
      maxLength="1024" } }, attribute ski {
        xsd:token { maxLength="1024" } }
      }

    error_response =
      element status { xsd:positiveInteger {
        maxInclusive="999999999999999" }
      },
      element description { attribute xml:lang { xsd:language },
        xsd:string { maxLength="1024" }
      }?
  }

    ]]></artwork>
      </figure>
    </section>

    <section title="Security Considerations">
      <t>The intent of this protocol is to define a protocol to support the
      maintenance of Resource Certificates that the IR issues for an ISP in
      certifying resources that have been allocated or assigned by the IR to
      the ISP <xref target="ID.SIDR-RES-CERTS"></xref>. This protocol assumes
      that the IR and ISP are known to each other and have exchanged
      credentials so as to support the operation of a TLS channel with mutual
      identification. The mechanisms used to perform this credential exchange
      are not described in this specification.</t>

      <t>The primary objective of this provisioning protocol is to ensure that
      attempts to disrupt the interaction between client and server are
      identifiable by both parties. The mechanisms used to support this level
      of integrity of protocol operation include the use of TLS with mutual
      identification, and the use of message objects that are digitally signed
      and dated using CMS. This is intended to ensure that the communication
      is resistant to attempts to disrupt the communication or to replay
      earlier communication fragments (man-in-the middle disruption and replay
      attacks).</t>

      <t>The protocol is a minimal query / response protocol, that imposes
      strict serialization on each query / response transaction, reducing the
      potential for the ISP and the IR to lose synchronization over the issued
      certificate state.</t>

      <t>The inner protocol elements explicitly reference the intended sender
      and receiver to present an IR or an ISP attempting to masquerade as
      another party within the secure channel.</t>
    </section>

    <section title="IANA Considerations">
      <t>[Note to IANA, to be removed prior to publication: there are no IANA
      considerations stated in this version of the document.]</t>
    </section>

    <section title="Acknowledgements">
      <t>The authors would like to acknowledge the valued contributions from
      Russ Housley, Steve Kent, Randy Bush, George Michaelson, and Robert
      Kisteleki in the preparation of the protocol described in this
      document.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='./rfcs/bibxml/reference.RFC.0791.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.2050.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.2818.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.3779.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.3852.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.4049.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.4055.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.4291.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.4346.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.4648.xml'?>

      <?rfc include='./rfcs/bibxml/reference.RFC.5280.xml'?>

      <reference anchor="X.501">
        <front>
          <title>Recommendation X.501: The Directory - Models</title>

          <author fullname="CCITT" surname="CCITT">
            <organization></organization>
          </author>

          <date year="1988" />
        </front>
      </reference>

      <reference anchor="X.509-88">
        <front>
          <title>Recommendation X.509: The Directory - Authentication
          Framework</title>

          <author fullname="CCITT" surname="CCITT">
            <organization></organization>
          </author>

          <date year="1988" />
        </front>
      </reference>

      <reference anchor="ISO.8601:2004">
        <front>
          <title>ISO 8601:2004 Representation of dates and Times</title>

          <author fullname="ISO" surname="ISO">
            <organization></organization>
          </author>

          <date year="2004" />
        </front>
      </reference>
    </references>

    <references title="Informative References">
      <reference anchor="ID.SIDR-RES-CERTS">
        <front>
          <title>A Profile for X.509 PKIX Resource Certificates</title>

          <author fullname="Geoff Huston" initials="G." surname="Huston">
            <organization>APNIC</organization>
          </author>

          <author fullname="George Michaelson" initials="G."
                  surname="Michaelson">
            <organization>APNIC</organization>
          </author>

          <author fullname="Rob Loomans" initials="R." surname="Loomans">
            <organization>APNIC</organization>
          </author>

          <date month="August" year="2008" />
        </front>

        <seriesInfo name="Work in progress: Internet Drafts"
                    value="draft-ietf-sidr-res-certs-11.txt" />
      </reference>
    </references>
  </back>
</rfc>
