<?xml version="1.0" encoding="UTF-8"?><?rfc linefile="1:I:/docs/gih/drafts/draft-ietf-sidr-rescerts-provisioning-00.xml"?>
<!-- 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-00.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>robl@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="RFC3280"></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 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 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 XML-formatted data
      objects.</t>

      <t>The underlying transport for this protocol is HTTPS <xref
      target="RFC2818"></xref> using 2 way (mutual) identification. The client
      initiates 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".
      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>.</t>

      <t>The 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="Common Message format">

      <t>The XML template for all messages is as follows: </t>

        <figure>
          <artwork>

---------------------------------------------------------------

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;message xmlns="http://www.apnic.net/specs/rescerts/up-down/"
         version="1"
         sender="sender name"
         recipient = "recipient name"
         type="message type"&gt;

[payload]

&lt;/message&gt;

---------------------------------------------------------------

    </artwork>
        </figure>

        <t>The message is passed over an HTTPS transport connection that
        safeguards against interception and replay attacks. The HTTPS session
        uses mutually authenticated TLS. The TLS keys and associated
        certificates have been previously established between the two
        entities.</t>

        <t>The message is signed by the sender using a communications key and
        associated certificate that has been previously established between
        the two entities. The message signing format is CMS with a timestamp.
        The CMS keys and certificates MAY be the same as those used for
        TLS.</t>

        <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 TLA
            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>

---------------------------------------------------------------

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>
---------------------------------------------------------------

Payload:

 &lt;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]" &gt;
     &lt;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" &gt;
     [certificate]
     &lt;/certificate&gt;

     ...

     (repeated for each current certificate where the client
      is the certificate's subject)

     &lt;issuer&gt;[issuer's certificate]&lt;/issuer&gt;
     &lt;/class&gt;

 ...

 (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" />, 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>

---------------------------------------------------------------

Payload:

&lt;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"&gt;
           [Certificate request]
           &lt;/request&gt;

---------------------------------------------------------------

    </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>

---------------------------------------------------------------

Payload:


 &lt;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" &gt;
         &lt;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" &gt;
         [certificate]
         &lt;/certificate&gt;
         &lt;issuer&gt;[issuer's certificate]&lt;/issuer&gt;
       &lt;/class&gt;

---------------------------------------------------------------

    </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>

---------------------------------------------------------------

Payload:


&lt;key class_name="class name"
     ski="encoded hash of the subject public key]" /&gt;


---------------------------------------------------------------

    </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="RFC3280"></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>

---------------------------------------------------------------

Payload:


&lt;key class_name="class name"
     ski="encoded hash of the subject public key" /&gt;

---------------------------------------------------------------

    </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="RFC3280"></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>

---------------------------------------------------------------

Payload:


&lt;status&gt;[Code]&lt;/status&gt;
&lt;description xml:lang="en-US"&gt;[Readable text]&lt;/description&gt;

---------------------------------------------------------------

    </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>
   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>

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>[To be defined]</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
      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?><?rfc linefile="1:./rfcs/bibxml/reference.RFC.0791.xml"?>

<reference anchor='RFC0791'>

<front>
<title abbrev='Internet Protocol'>Internet Protocol</title>
<author initials='J.' surname='Postel' fullname='Jon Postel'>
<organization>University of Southern California (USC)/Information Sciences Institute</organization>
<address>
<postal>
<street>4676 Admiralty Way</street>
<city>Marina del Rey</city>
<region>CA</region>
<code>90291</code>
<country>US</country></postal></address></author>
<date year='1981' day='1' month='September' /></front>

<seriesInfo name='STD' value='5' />
<seriesInfo name='RFC' value='791' />
<format type='TXT' octets='97779' target='ftp://ftp.isi.edu/in-notes/rfc791.txt' />
</reference>
<?rfc linefile="887:I:/docs/gih/drafts/draft-ietf-sidr-rescerts-provisioning-00.xml"?>

      <?rfc?><?rfc linefile="1:./rfcs/bibxml/reference.RFC.2050.xml"?>

<reference anchor='RFC2050'>

<front>
<title abbrev='Internet Registry IP Allocation Guidelines'>INTERNET REGISTRY IP ALLOCATION GUIDELINES</title>
<author initials='K.' surname='Hubbard' fullname='Kim Hubbard'>
<organization>InterNIC Registration Services</organization>
<address>
<postal>
<street>c/o Network Solutions</street>
<street>505 Huntmar Park Drive</street>
<street>Herndon</street>
<street>VA 22070</street></postal>
<phone>(703) 742-4870</phone>
<email>kimh@internic.net</email></address></author>
<author initials='M.' surname='Kosters' fullname='Mark Kosters'>
<organization>InterNIC Registration Services</organization>
<address>
<postal>
<street>c/o Network Solutions</street>
<street>505 Huntmar Park Drive</street>
<street>Herndon</street>
<street>VA 22070</street></postal>
<phone>(703) 742-4795</phone>
<email>markk@internic.net</email></address></author>
<author initials='D.' surname='Conrad' fullname='David Conrad'>
<organization>Asia Pacific Network Information Center</organization>
<address>
<postal>
<street>c/o United Nations University</street>
<street>53-70 Jingumae 5-chome</street>
<street>Shibuya-ku</street>
<street>Tokyo 150</street>
<country>JP</country></postal>
<phone>+81-3-5467-7014</phone>
<email>davidc@APNIC.NET</email></address></author>
<author initials='D.' surname='Karrenberg' fullname='Daniel Karrenberg'>
<organization>RIPE NCC</organization>
<address>
<postal>
<street>Kruislaan 409</street>
<street>SJ Amsterdam NL-1098</street>
<country>NL</country></postal>
<phone>+31 20 592 5065</phone>
<email>dfk@RIPE.NET</email></address></author>
<author initials='J.' surname='Postel' fullname='Jon Postel'>
<organization>USC/Information Sciences Institute</organization>
<address>
<postal>
<street>4676 Admiralty Way</street>
<street>Marina del Rey</street>
<street>CA  90292</street></postal>
<phone>310-822-1511</phone>
<email>Postel@ISI.EDU</email></address></author>
<date year='1996' month='November' />
<area>Routing</area>
<keyword>CIDR</keyword>
<keyword>classless inter-domain routing</keyword>
<abstract>
<t>
   By approving this document as a Best Current Practice,the IESG
   asserts its belief that this policy described herein is an accurate
   representation of the current practice of the IP address registries
   with respect to address assignment.  This does not constitute
   endorsement or recommendation of this policy by the IESG. The IESG
   will reevaluate its approval of this document in December 1997 taking
   into consideration the results of the discussions that will be take
   place in the IRE Working Group between now and then.
</t>
<t>
   This document describes the registry system for the distribution of
   globally unique Internet address space and registry operations.
   Particularly this document describes the rules and guidelines
   governing the distribution of this address space.
</t>
<t>
   This document describes the IP assignment policies currently used by
   the Regional Registries to implement the guidelines developed by the
   IANA. The guidelines and these policies are subject to revision at
   the direction of the IANA. The registry working group (IRE WG) will
   be discussing these issues and may provide advice to the IANA about
   possible revisions.
</t>
<t>
   This document replaces RFC 1466, with all the guidelines and
   procedures updated and modified in the light of experience.
   This document does not describe private Internet address space and
   multicast address space.  It also does not describe regional and
   local refinements of the global rules and guidelines.
</t>
<t>
   This document can be considered the base set of operational
   guidelines in use by all registries.  Additional guidelines may be
   imposed by a particular registry as appropriate.
</t></abstract>
<note title='IESG Note'>
<t>
   By approving this document as a Best Current Practice,the IESG
   asserts its belief that this policy described herein is an accurate
   representation of the current practice of the IP address registries
   with respect to address assignment.  This does not constitute
   endorsement or recommendation of this policy by the IESG. The IESG
   will reevaluate its approval of this document in December 1997 taking
   into consideration the results of the discussions that will be take
   place in the IRE Working Group between now and then.
</t></note></front>

<seriesInfo name='BCP' value='12' />
<seriesInfo name='RFC' value='2050' />
<format type='TXT' octets='28975' target='ftp://ftp.isi.edu/in-notes/rfc2050.txt' />
<format type='HTML' octets='43775' target='http://xml.resource.org/public/rfc/html/rfc2050.html' />
<format type='XML' octets='31155' target='http://xml.resource.org/public/rfc/xml/rfc2050.xml' />
</reference>
<?rfc linefile="889:I:/docs/gih/drafts/draft-ietf-sidr-rescerts-provisioning-00.xml"?>

      <?rfc?><?rfc linefile="1:./rfcs/bibxml/reference.RFC.2818.xml"?>

<reference anchor='RFC2818'>

<front>
<title>HTTP Over TLS</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'>
<organization /></author>
<date year='2000' month='May' />
<abstract>
<t>This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet. This memo provides information for the Internet community. </t></abstract></front>

<seriesInfo name='RFC' value='2818' />
<format type='TXT' octets='15170' target='ftp://ftp.isi.edu/in-notes/rfc2818.txt' />
</reference>
<?rfc linefile="891:I:/docs/gih/drafts/draft-ietf-sidr-rescerts-provisioning-00.xml"?>

      <?rfc?><?rfc linefile="1:./rfcs/bibxml/reference.RFC.3280.xml"?>

<reference anchor='RFC3280'>

<front>
<title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
<author initials='R.' surname='Housley' fullname='R. Housley'>
<organization /></author>
<author initials='W.' surname='Polk' fullname='W. Polk'>
<organization /></author>
<author initials='W.' surname='Ford' fullname='W. Ford'>
<organization /></author>
<author initials='D.' surname='Solo' fullname='D. Solo'>
<organization /></author>
<date year='2002' month='April' />
<abstract>
<t>This memo profiles the X.509 v3 certificate and X.509 v2 Certificate Revocation List (CRL) for use in the Internet. [STANDARDS TRACK] </t></abstract></front>

<seriesInfo name='RFC' value='3280' />
<format type='TXT' octets='295556' target='ftp://ftp.isi.edu/in-notes/rfc3280.txt' />
</reference>
<?rfc linefile="893:I:/docs/gih/drafts/draft-ietf-sidr-rescerts-provisioning-00.xml"?>

      <?rfc?><?rfc linefile="1:./rfcs/bibxml/reference.RFC.3779.xml"?>

<reference anchor='RFC3779'>

<front>
<title>X.509 Extensions for IP Addresses and AS Identifiers</title>
<author initials='C.' surname='Lynn' fullname='C. Lynn'>
<organization /></author>
<author initials='S.' surname='Kent' fullname='S. Kent'>
<organization /></author>
<author initials='K.' surname='Seo' fullname='K. Seo'>
<organization /></author>
<date year='2004' month='June' />
<abstract>
<t>This document defines two X.509 v3 certificate extensions. The first binds a list of IP address blocks, or prefixes, to the subject of a certificate. The second binds a list of autonomous system identifiers to the subject of a certificate. These extensions may be used to convey the authorization of the subject to use the IP addresses and autonomous system identifiers contained in the extensions. [STANDARDS TRACK] </t></abstract></front>

<seriesInfo name='RFC' value='3779' />
<format type='TXT' octets='60732' target='ftp://ftp.isi.edu/in-notes/rfc3779.txt' />
</reference>
<?rfc linefile="895:I:/docs/gih/drafts/draft-ietf-sidr-rescerts-provisioning-00.xml"?>

      <?rfc?><?rfc linefile="1:./rfcs/bibxml/reference.RFC.3852.xml"?>

<reference anchor='RFC3852'>

<front>
<title>Cryptographic Message Syntax (CMS)</title>
<author initials='R.' surname='Housley' fullname='R. Housley'>
<organization /></author>
<date year='2004' month='July' />
<abstract>
<t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS TRACK] </t></abstract></front>

<seriesInfo name='RFC' value='3852' />
<format type='TXT' octets='15541' target='ftp://ftp.isi.edu/in-notes/rfc3852.txt' />
</reference>
<?rfc linefile="897:I:/docs/gih/drafts/draft-ietf-sidr-rescerts-provisioning-00.xml"?>

      <?rfc?><?rfc linefile="1:./rfcs/bibxml/reference.RFC.4291.xml"?>

<reference anchor='RFC4291'>

<front>
<title>IP Version 6 Addressing Architecture</title>
<author initials='R.' surname='Hinden' fullname='R. Hinden'>
<organization /></author>
<author initials='S.' surname='Deering' fullname='S. Deering'>
<organization /></author>
<date year='2006' month='February' />
<abstract>
<t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.&lt;/t>&lt;t> This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS TRACK]</t></abstract></front>

<seriesInfo name='RFC' value='4291' />
<format type='TXT' octets='52897' target='ftp://ftp.isi.edu/in-notes/rfc4291.txt' />
</reference>
<?rfc linefile="899:I:/docs/gih/drafts/draft-ietf-sidr-rescerts-provisioning-00.xml"?>

      <?rfc?><?rfc linefile="1:./rfcs/bibxml/reference.RFC.4648.xml"?>

<reference anchor='RFC4648'>

<front>
<title>The Base16, Base32, and Base64 Data Encodings</title>
<author initials='S.' surname='Josefsson' fullname='S. Josefsson'>
<organization /></author>
<date year='2006' month='October' />
<abstract>
<t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS TRACK]</t></abstract></front>

<seriesInfo name='RFC' value='4648' />
<format type='TXT' octets='35491' target='ftp://ftp.isi.edu/in-notes/rfc4648.txt' />
</reference>
<?rfc linefile="901:I:/docs/gih/drafts/draft-ietf-sidr-rescerts-provisioning-00.xml"?>

      <reference anchor="X.509-88">
        <front>
          <title>Recommendation X.509: The Directory - Authentication
          Framework</title>

          <author fullname="CCITT" surname="CCITT"><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 /></author>

          <date year="2004" />
        </front>
      </reference>
    </references>
  </back>
</rfc>