<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liao-cose-c509-revocation-01" category="std" consensus="true" submissionType="IETF" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="C509 Revocation">CBOR Encoded Certificate Revocation Management</title>
    <seriesInfo name="Internet-Draft" value="draft-liao-cose-c509-revocation-01"/>
    <author initials="L." surname="Liao" fullname="Lijun Liao">
      <organization>NIO Inc.</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>lijun.liao@nio.io</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="J." surname="Höglund" fullname="Joel Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>joel.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="S." surname="Raza" fullname="Shahid Raza">
      <organization>University of Glasgow</organization>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>shahid.raza@glasgow.ac.uk</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>COSE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 114?>

<t>This document specifies CBOR-encoded PKI structures for use with C509 certificates (draft-ietf-cose-cbor-encoded-cert), X.509 certificates (RFC 5280), and future certificate types. It defines C509 CRL and C509 OCSP, compact CBOR encodings of X.509 Certificate Revocation Lists (RFC 5280) and OCSP messages (RFC 6960), respectively. The structures defined in this document are certificate-type agnostic and can be used with C509 certificates, X.509 certificates, or future certificate types without modification. C509 OCSP improves on RFC 6960 by signing a wider set of fields to prevent algorithm-substitution and certificate-chain substitution attacks, replacing plaintext serial numbers with hashes to preserve requestor privacy, replacing the two-hash issuer identity with a single certificate hash, and identifying all participants (requestor, responder, issuer) by a uniform certificate hash rather than type-specific fields. C509 CRL and C509 OCSP are not wire-format-compatible with their DER-encoded X.509 counterparts and cannot be converted to or from them without semantic interpretation. Additionally, this document specifies the PEM representation of the C509 structures following the framework of <xref target="RFC7468"/>.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-liao-cose-c509-revocation/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        CBOR Object Signing and Encryption (cose) Working Group mailing list (<eref target="mailto:cose@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cose/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cose/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lijun-nio/idc509rev"/>.</t>
    </note>
  </front>
  <middle>
    <?line 119?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Public Key Infrastructure (PKI) for constrained environments <xref target="RFC7228"/> requires compact certificate representations and compact revocation information.  <xref target="I-D.ietf-cose-cbor-encoded-cert"/> defines C509 certificates, a CBOR encoding of X.509 certificates <xref target="RFC5280"/> that reduces certificate size by over 50% for typical constrained-device profiles. However, revocation mechanisms such as Certificate Revocation Lists (CRLs) and Online Certificate Status Protocol (OCSP) messages have not yet received the same treatment.</t>
      <t>CRLs as defined in <xref target="RFC5280"/> can be large, especially when many certificates have been revoked or when CRL extensions add overhead.  In the complementary OCSP mechanism defined in <xref target="RFC6960"/>, OCSP responses carry per-certificate status information and may be exchanged during TLS <xref target="RFC9846"/> and DTLS <xref target="RFC9147"/> handshakes via OCSP stapling <xref target="RFC6066"/>, directly affecting handshake latency.</t>
      <t>Note on terminology: The label "C509" is used for consistency with the C509 certificate encoding and to promote a cohesive C509 PKI ecosystem (C509 certificates, CRLs, OCSP, and related tooling). Although this document uses "C509" in its names, the encodings and protocols defined here are certificate-type agnostic and apply equally to X.509 certificates and other certificate types; see <xref target="cert-type-interop"/>.</t>
      <t>This document specifies:</t>
      <ul spacing="normal">
        <li>
          <t><strong>C509 CRL</strong> -- a natively signed CBOR <xref target="RFC8949"/> encoding of X.509 CRLs (<xref section="5" sectionFormat="comma" target="RFC5280"/>).  The signature is computed over the CBOR Sequence <xref target="RFC8742"/> <tt>TBSCertList</tt>; no ASN.1 encoding is involved. Three key improvements are made over <xref target="RFC5280"/>:  </t>
          <ul spacing="normal">
            <li>
              <t>Reduce the search complexity for a given certificate serial number from O(n) to O(log(n)):      </t>
              <ul spacing="normal">
                <li>
                  <t>Replace the implicit <tt>certificateIssuer</tt> mechanism with explicit per-issuer grouping.</t>
                </li>
                <li>
                  <t>Use a dedicated list for the <tt>removeFromCRL</tt> revocation entries.</t>
                </li>
                <li>
                  <t>Use fixed-length entry encoding.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Define a new standalone <tt>C509CRLInfo</tt> structure to carry CRL information without the (large) revocation list itself.</t>
            </li>
            <li>
              <t>Define dedicated fields for the common extensions to simplify the encoding: <tt>crlNumber</tt>, <tt>authorityKeyIdentifier</tt>, <tt>deltaCRLIndicator</tt>.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>C509 OCSP</strong> -- a CBOR encoding of OCSP requests and responses (<xref target="RFC6960"/>).  The encoding compresses common fields while preserving semantic equivalence.  Four key improvements are made over <xref target="RFC6960"/>:  </t>
          <ul spacing="normal">
            <li>
              <t>The signature in signed requests and responses is computed over a wider set of fields than in <xref target="RFC6960"/>, including the signature algorithm and the certificate chain, preventing algorithm-substitution and certificate-chain substitution attacks.</t>
            </li>
            <li>
              <t>Certificate serial numbers in requests and responses are replaced by hashes (<tt>serialNumberHash</tt>), providing privacy against passive observers who do not already know the queried serial numbers.</t>
            </li>
            <li>
              <t>The issuer is identified by a single hash over the issuer certificate (<tt>issuerCertHash</tt>) rather than by the two-hash <tt>CertID</tt>, reducing per-issuer overhead.</t>
            </li>
            <li>
              <t>All participants (requestor, responder, issuer) are identified by a hash over their certificate (<tt>requestorCertHash</tt>, <tt>responderCertHash</tt>, <tt>issuerCertHash</tt>) rather than by a plaintext Subject distinguished name or SubjectKeyIdentifier, avoiding structural <tt>CHOICE</tt> types such as the X.509 <tt>ResponderID</tt> (<tt>byName</tt> or <tt>byKey</tt>) and simplifying support for different certificate types (e.g., C509, X.509, or future types) because the same hash applies regardless of the certificate encoding.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>The CRL and OCSP structures defined in this document are certificate-type agnostic: they can be used with C509 certificates, X.509 certificates, or any future certificate type without modification; see <xref target="cert-type-interop"/>.</t>
      <t>C509 CRL and C509 OCSP apply the same compression techniques as C509 certificates: static fields are elided, OIDs are replaced with short integers, time values are compressed to POSIX timestamps, and redundant encoding is removed.  Implementers may use the CBOR playground <xref target="CborMe"/> to inspect encoded examples.</t>
      <t>C509 CRL and C509 OCSP are not wire-format-compatible with their DER-encoded counterparts defined in <xref target="RFC5280"/> and <xref target="RFC6960"/>.  Systems that use C509 CRL or C509 OCSP must explicitly support these CBOR-encoded formats; they cannot be transparently substituted for or derived from the corresponding DER-encoded structures.</t>
      <t>C509 CRL and C509 OCSP are designed to be compatible with certificate profiles for constrained deployments, such as <xref target="RFC7925"/>.</t>
    </section>
    <section anchor="status-alternatives">
      <name>Alternative Certificate Status Checking Mechanisms</name>
      <t>This section considers both widely deployed certificate-status mechanisms and closely related prior work for constrained environments.  Several such mechanisms can be used to check certificate status, but none of them replaces the work in this document.</t>
      <ul spacing="normal">
        <li>
          <t><strong>X.509 CRLs and OCSP</strong> (<xref target="RFC5280"/>, <xref target="RFC6960"/>) provide the baseline revocation mechanisms, but their DER encodings are not compact enough for constrained deployments and are not certificate-type agnostic.  This document keeps their semantics while defining CBOR encodings that are smaller and easier to process.</t>
        </li>
        <li>
          <t><strong>OCSP stapling</strong> (<xref target="RFC6066"/>, <xref target="RFC9846"/>) reduces client latency by having the server provide a fresh OCSP response, but it does not define a revocation status format of its own.  It still depends on the underlying OCSP message structure, so it cannot replace a compact, standalone status representation.</t>
        </li>
        <li>
          <t><strong>Short-lived certificates</strong> reduce reliance on revocation, but they do not provide revocation status when certificates must remain valid for longer periods or must be withdrawn immediately after compromise.  They also shift the problem to more frequent issuance and renewal rather than eliminating status checking.</t>
        </li>
        <li>
          <t><strong>CRLSets</strong> <xref target="CRLSets"/> are a browser-distributed revocation blocklist rather than a general-purpose revocation protocol.  They cover only a limited subset of certificates and are tied to a specific browser ecosystem, so they cannot provide complete, interoperable status checking for arbitrary C509, X.509, or future certificate types.</t>
        </li>
        <li>
          <t><strong>CRLite</strong> <xref target="CRLite"/> compresses revocation information into a browser-oriented filter-based representation, which is useful for client-side deployment at scale.  However, it is not a wire-format replacement for CRLs or OCSP, does not preserve the full per-certificate status structures defined here, and is not a certificate-type-agnostic status format that other implementations can exchange directly.</t>
        </li>
        <li>
          <t><strong>Compact CBOR revocation for IoT (TinyOCSP and CCRL)</strong> <xref target="TinyOCSP"/> are prior research mechanisms that reduce OCSP and CRL overhead for low-power IoT, confirming the feasibility and benefits of CBOR-based revocation on constrained hardware.  They are a precursor to this work.  However, they were specified as point solutions rather than as interoperable, certificate-type-agnostic wire formats aligned with the C509 certificate encoding <xref target="I-D.ietf-cose-cbor-encoded-cert"/>; this document generalizes those mechanisms into complete C509 CRL and C509 OCSP structures usable with C509, X.509, and future certificate types.</t>
        </li>
      </ul>
      <t>The compactness benefit over the DER-encoded baselines is concrete and substantial.  For the representative profiles in the worked examples (<xref target="examples"/>), C509 CRLs are 18% to 52% smaller than the equivalent X.509 CRLs (for example, a CRL carrying revoked certificates is reduced from 335 to 177 bytes, a 47% reduction), and C509 OCSP messages are 40% to 73% smaller (for example, a Simple OCSP request from 150 to 51 bytes, and a Basic OCSP response without the responder's certificate from 837 to 248 bytes); see <xref target="tab-examples-overview"/>.</t>
      <t>These alternatives are useful in specific deployments, but they do not provide the CBOR-based, certificate-type-agnostic revocation structures defined here for C509, X.509, and future certificate types.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the terminology from <xref target="RFC5280"/>, <xref target="RFC6960"/>, <xref target="RFC7228"/>, <xref target="RFC8610"/>, <xref target="RFC8742"/>, <xref target="RFC8949"/>, and <xref target="RFC9682"/>.  Unless otherwise stated, "CBOR" refers to deterministically encoded CBOR as specified in Sections <xref target="RFC8949" section="4.2.1" sectionFormat="bare"/> and <xref target="RFC8949" section="4.2.2" sectionFormat="bare"/> of <xref target="RFC8949"/>.</t>
    </section>
    <section anchor="common-types">
      <name>Common Types</name>
      <t>The following types are imported from <xref target="I-D.ietf-cose-cbor-encoded-cert"/>: <tt>Name</tt>, <tt>Extension</tt>, <tt>Extensions</tt>, <tt>Defined</tt>, <tt>COSE_C509</tt>, and <tt>AlgorithmIdentifier</tt>. Additionally, the following type is imported from <xref target="RFC9360"/>: <tt>COSE_X509</tt>.</t>
      <t>This document further defines the following constrained aliases for use in all CDDL definitions:</t>
      <sourcecode type="cddl" name="c509common.cddl"><![CDATA[
uint8 = uint .le 255

uint32 = 0..4294967295             ; 2^32 - 1

uint63 = 0..9223372036854775807    ; 2^63 - 1

int16 = -32768..32767

IntAlgorithmIdentifier = int16

IntExtension = ( extensionID: IntExtensionID, extensionValue: Defined )

IntExtensionID = 1..9223372036854775807 / ;   2^32 - 1
                 -9223372036854775807..-1  ; -(2^32 - 1)

IntExtensions = [ * IntExtension ]
]]></sourcecode>
      <t>The CDDL definitions in this document are split into three files: <tt>c509common.cddl</tt> (the definitions above), <tt>c509crl.cddl</tt> (<xref target="c509crl"/>), and <tt>c509ocsp.cddl</tt> (<xref target="c509ocsp"/>).  Both <tt>c509crl.cddl</tt> and <tt>c509ocsp.cddl</tt> depend on <tt>c509common.cddl</tt> and on the types imported from <xref target="I-D.ietf-cose-cbor-encoded-cert"/> and <xref target="RFC9360"/>.</t>
      <t><tt>IntAlgorithmIdentifier</tt> is the <tt>int</tt>-only instantiation of <tt>AlgorithmIdentifier</tt> from <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.  It is used throughout this document wherever an algorithm identifier appears in the wire encoding.</t>
      <t><tt>IntExtension</tt> is the instantiation of <tt>Extension</tt> from <xref target="I-D.ietf-cose-cbor-encoded-cert"/> with an integer <tt>extensionID</tt>.  As in C509 certificates (<xref section="3.1.10" sectionFormat="comma" target="I-D.ietf-cose-cbor-encoded-cert"/>), the absolute value of <tt>extensionID</tt> is the value from the "C509 Extensions" registry, and its sign indicates whether the extension is critical: critical extensions are encoded with a negative sign and non-critical extensions with a positive sign.  It is used throughout this document wherever a single extension appears in the wire encoding.</t>
      <t><tt>IntExtensions</tt> is the instantiation of <tt>Extensions</tt> from <xref target="I-D.ietf-cose-cbor-encoded-cert"/> where all embedded <tt>Extension</tt> entries are <tt>IntExtension</tt> entries.  An <tt>IntExtensions</tt> field with no extensions is encoded as an empty array.</t>
    </section>
    <section anchor="time-encoding">
      <name>Encoding of Time Fields</name>
      <t>Time fields are encoded as unwrapped CBOR epoch-based date/time (<tt>~time</tt>).  The value <bcp14>MUST</bcp14> be a non-negative integer.  In POSIX time <xref target="POSIX"/>, leap seconds are ignored; a leap second has the same POSIX time as the second before it.</t>
    </section>
    <section anchor="c509crl">
      <name>C509 CRL</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>A C509 CRL is a natively signed CBOR <xref target="RFC8949"/> encoding of an X.509 v2 CRL as defined in <xref section="5" sectionFormat="comma" target="RFC5280"/>.  The signature is computed over the CBOR Sequence <xref target="RFC8742"/> <tt>TBSCertList</tt>; no ASN.1 encoding is involved.  A C509 CRL preserves the semantics of the corresponding DER-encoded X.509 CRL for the subset of RFC 5280 structures supported by this document.</t>
        <t>A C509 CRL is not wire-format-compatible with a DER-encoded X.509 CRL.  The two formats cannot be mechanically converted to or from each other without semantic interpretation of the contained data.</t>
      </section>
      <section anchor="crl-cddl">
        <name>C509 CRL CDDL</name>
        <t>The following CDDL defines the top-level <tt>C509CRL</tt> structure and the <tt>TBSCertList</tt> sequence:</t>
        <figure anchor="fig-CRLcddl">
          <name>CDDL for C509CRL</name>
          <sourcecode type="cddl" name="c509crl.cddl"><![CDATA[
C509CRL = [
  TBSCertList,
  signatureValue : any,
]

TBSCertList = (
  CRLInfoData,
  revokedCertsList       : [+ PerIssuerRevokedCerts] / null
)

C509CRLInfo = [ CRLInfoData ]

CRLInfoData = (
  crlType                : 0, ; int16
  signatureAlgorithm     : IntAlgorithmIdentifier,
  authoritySubject       : Name / #6.121(bytes),
  authorityKeyIdentifier : bytes,
  crlNumber              : CRLNumber,
  thisUpdate             : ~time,
  nextUpdate             : uint63 / null,
  baseCrlNumber          : CRLNumber / null,
  crlExtensions          : IntExtensions,
)

CRLNumber = 1..9223372036854775807

PerIssuerRevokedCerts = (
  issuer                 : Name / #6.121(bytes) / null,
  revokedCertsControl    : RevokedCertsControl / null,
  extensions             : IntExtensions,
  revokedCerts           : bytes .size (1..2147483647) / null,
  removedFromCRLCerts    : bytes .size (1..2147483647) / null,
)

RevokedCertsControl = [
  flags               : uint32,
  serialNumberLength  : 1..20,
  dateLength          : uint .le 8,
  baseDate            : ~time,
]
]]></sourcecode>
        </figure>
      </section>
      <section anchor="crl-fields">
        <name>Field Encodings</name>
        <section anchor="crlinfo">
          <name>CRLInfoData and C509CRLInfo</name>
          <t><tt>CRLInfoData</tt> is a CDDL group that carries all CRL fields except <tt>revokedCertsList</tt>.  <tt>C509CRLInfo</tt> is the standalone CBOR array form of <tt>CRLInfoData</tt>; it can be used to convey CRL information (crlType, signature algorithm, issuer identity, CRL number, validity window, base CRL number, extensions) without the potentially large revocation list.  <tt>TBSCertList</tt> embeds <tt>CRLInfoData</tt> and adds <tt>revokedCertsList</tt>.</t>
        </section>
        <section anchor="crltype">
          <name>crlType</name>
          <t>The <tt>crlType</tt> field serves as the discriminator for <tt>C509CRL</tt>:</t>
          <table anchor="tab-crl-types">
            <name>CRL types</name>
            <thead>
              <tr>
                <th align="center">Value</th>
                <th align="left">Type</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="center">0</td>
                <td align="left">
                  <tt>C509CRL</tt></td>
              </tr>
            </tbody>
          </table>
          <t>Future specifications may define additional types by assigning new integer values.</t>
        </section>
        <section anchor="signaturealgorithm">
          <name>signatureAlgorithm</name>
          <t>Encoded identically to the <tt>int</tt> choice of <tt>issuerSignatureAlgorithm</tt> in C509 certificates (see <xref section="3.1.3" sectionFormat="comma" target="I-D.ietf-cose-cbor-encoded-cert"/>).  Algorithm integer values are from the same registry used for C509 certificates.</t>
          <t>Unlike in <xref target="RFC5280"/>, where the signature algorithm appears outside the <tt>TBSCertList</tt> and is therefore not covered by the CRL signature, <tt>signatureAlgorithm</tt> is part of <tt>CRLInfoData</tt> within <tt>TBSCertList</tt> and is therefore covered by the signature.  This prevents algorithm-substitution attacks on the CRL.</t>
        </section>
        <section anchor="authoritysubject-and-authoritykeyidentifier">
          <name>authoritySubject and authorityKeyIdentifier</name>
          <t>The <tt>authoritySubject</tt> and <tt>authorityKeyIdentifier</tt> fields identify the CRL authority.</t>
          <t>The <tt>authoritySubject</tt> field identifies the subject of the CRL issuer.  When the CRL is issued by a C509 CA, <tt>authoritySubject</tt> is a <tt>Name</tt> value identical to the <tt>subject</tt> field of the authority C509 certificate.  When the CRL is issued by an X.509 CA (e.g., in a hybrid deployment where a legacy CA issues a C509-format CRL), <tt>authoritySubject</tt> is encoded as <tt>#6.121(bytes)</tt> (tag 121 is alternative 0), where the byte string contains the DER-encoded <tt>Name</tt> from the <tt>subject</tt> field of the issuing X.509 CA certificate (<xref target="X.690"/>). Since the <tt>Name</tt> structure may also be <tt>bytes</tt>, the DER-encoded subject is wrapped in a 121-tagged structure.</t>
          <t>The <tt>authorityKeyIdentifier</tt> field is identical to the value of the authority's <tt>subjectKeyIdentifier</tt> extension.  This field corresponds to the X.509 CRL extension <tt>authorityKeyIdentifier</tt> (<xref section="5.2.1" sectionFormat="comma" target="RFC5280"/>).  It is promoted to a dedicated field because it <bcp14>MUST</bcp14> be present in conforming X.509 CRLs and because making it explicit simplifies the structure and reduces encoded size compared to representing it as a generic extension.</t>
        </section>
        <section anchor="crlnumber">
          <name>crlNumber</name>
          <t>The <tt>crlNumber</tt> field is encoded as a positive integer (<tt>CRLNumber</tt>, from 1 to 2^63 - 1).  It corresponds to the <tt>cRLNumber</tt> extension in <xref section="5.2.3" sectionFormat="comma" target="RFC5280"/>, which this document replaces with a dedicated field.  The value is monotonically increasing for both full and delta CRLs.</t>
        </section>
        <section anchor="thisupdate-and-nextupdate">
          <name>thisUpdate and nextUpdate</name>
          <t>The <tt>thisUpdate</tt> field is encoded as described in <xref target="time-encoding"/>.  The <tt>nextUpdate</tt> field is encoded as a <tt>uint63</tt> representing the number of seconds from <tt>thisUpdate</tt> until the next CRL is expected to be issued.  It is encoded as <tt>null</tt> when no next update time is known.</t>
        </section>
        <section anchor="basecrlnumber">
          <name>baseCrlNumber</name>
          <t>The <tt>baseCrlNumber</tt> field is encoded as <tt>null</tt> for a full CRL.  For a delta CRL, it contains the CRL number of the corresponding base full CRL.  It corresponds to the <tt>deltaCRLIndicator</tt> extension in <xref section="5.2.4" sectionFormat="comma" target="RFC5280"/>, which this document replaces with a dedicated field.</t>
        </section>
        <section anchor="reasoncode-encoding">
          <name>reasonCode Encoding</name>
          <t>The <tt>reasonCode</tt> ENUMERATED value is encoded as one unsigned byte.  The byte values are aligned with the ENUMERATED values of the <tt>CRLReason</tt> type defined in <xref section="5.3.1" sectionFormat="comma" target="RFC5280"/>; a C509 <tt>revocationReason</tt> byte value equals the corresponding ASN.1 ENUMERATED integer value for the same reason code.</t>
          <table anchor="tab-reasoncode">
            <name>reasonCode encoding</name>
            <thead>
              <tr>
                <th align="center">Byte</th>
                <th align="left">reasonCode</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="center">0x00</td>
                <td align="left">unspecified</td>
              </tr>
              <tr>
                <td align="center">0x01</td>
                <td align="left">keyCompromise</td>
              </tr>
              <tr>
                <td align="center">0x02</td>
                <td align="left">cACompromise</td>
              </tr>
              <tr>
                <td align="center">0x03</td>
                <td align="left">affiliationChanged</td>
              </tr>
              <tr>
                <td align="center">0x04</td>
                <td align="left">superseded</td>
              </tr>
              <tr>
                <td align="center">0x05</td>
                <td align="left">cessationOfOperation</td>
              </tr>
              <tr>
                <td align="center">0x06</td>
                <td align="left">certificateHold</td>
              </tr>
              <tr>
                <td align="center">-</td>
                <td align="left">removeFromCRL</td>
              </tr>
              <tr>
                <td align="center">0x09</td>
                <td align="left">privilegeWithdrawn</td>
              </tr>
              <tr>
                <td align="center">0x0A</td>
                <td align="left">aACompromise</td>
              </tr>
            </tbody>
          </table>
          <t><tt>removeFromCRL</tt> (enumeration value 0x08) is not encoded in <tt>revokedCerts</tt>.  Certificates removed from the CRL are instead indicated in the <tt>removedFromCRLCerts</tt> field of <tt>PerIssuerRevokedCerts</tt>.</t>
        </section>
        <section anchor="revoked-certs-list">
          <name>revokedCertsList and PerIssuerRevokedCerts</name>
          <section anchor="design-considerations">
            <name>Design Considerations</name>
            <t>In X.509 CRLs (<xref section="5.3.3" sectionFormat="comma" target="RFC5280"/>), an indirect CRL uses the <tt>certificateIssuer</tt> CRL entry extension to indicate that a revocation entry -- and all subsequent entries -- belong to a different issuer.  This mechanism has two significant drawbacks:</t>
            <ul spacing="normal">
              <li>
                <t>It is implicit and positional, making it difficult to parse correctly and error-prone to implement.</t>
              </li>
              <li>
                <t>It is impossible to represent an issuer that has no currently revoked certificates (e.g., to carry per-issuer extensions or to explicitly indicate that the issuer is known but has an empty revocation list), because there is no entry to attach the <tt>certificateIssuer</tt> extension to.</t>
              </li>
            </ul>
            <t><tt>PerIssuerRevokedCerts</tt> solves both problems by introducing an explicit intermediate structure that groups all revocation information for one issuer.  The issuer is identified directly in the <tt>issuer</tt> field of the structure rather than being inferred from the position of a CRL entry extension.  This makes the grouping unambiguous and easy to parse, and it allows an issuer to appear in the list even when it has no revoked certificates.</t>
            <t>A second design problem in X.509 CRLs is that each revocation entry has variable length because:</t>
            <ul spacing="normal">
              <li>
                <t>the serial number length differs between certificates,</t>
              </li>
              <li>
                <t>the revocation date uses different encodings depending on whether the date falls before or after 2050,</t>
              </li>
              <li>
                <t>optional per-entry extensions (e.g., reason code) may or may not be present.</t>
              </li>
            </ul>
            <t>This variable-length layout makes it impossible to determine whether a given serial number is present in the list without scanning every entry sequentially, resulting in O(n) lookup time.</t>
            <t>In this document, the <tt>revokedCertsControl</tt> structure introduces fixed parameters (<tt>serialNumberLength</tt>, <tt>dateLength</tt>) that make every entry within <tt>revokedCerts</tt> exactly the same size.  The <tt>flags</tt> field can additionally indicate that entries are sorted in ascending order by serial number, enabling binary search and reducing lookup time to O(log(n)).  Using a compact byte-string concatenation rather than a CBOR array of structured items further reduces encoded size and accelerates parsing.  Furthermore, certificates removed from the CRL (delta CRL <tt>removeFromCRL</tt> entries in X.509) are kept in a dedicated <tt>removedFromCRLCerts</tt> field rather than mixed into <tt>revokedCerts</tt>.  This keeps <tt>revokedCerts</tt> free of removal noise, reducing its size and allowing implementations to process currently revoked and removed entries independently.</t>
          </section>
          <section anchor="fields">
            <name>Fields</name>
            <t>The <tt>revokedCertsList</tt> field is either a CBOR array of one or more <tt>PerIssuerRevokedCerts</tt> entries, each describing the revocation state for certificates issued by one issuer, or CBOR <tt>null</tt>.  Since <tt>PerIssuerRevokedCerts</tt> is a CDDL group, the fields of each entry are inlined in the array rather than wrapped in a nested array; an array with n entries therefore contains 5n elements.  <tt>revokedCertsList</tt> <bcp14>MUST</bcp14> be encoded as CBOR <tt>null</tt> when all of the following conditions hold: no certificates are currently revoked, no certificates have been removed from the CRL, the only issuer that would appear is the CRL's own <tt>authoritySubject</tt> (i.e., the <tt>issuer</tt> field is <tt>null</tt>), and there are no non-empty per-issuer extensions.</t>
            <t>Each <tt>PerIssuerRevokedCerts</tt> entry describes revoked certificates for one issuer using the following fields:</t>
            <ul spacing="normal">
              <li>
                <t>The <tt>issuer</tt> field identifies the issuer of the certificates covered by this <tt>PerIssuerRevokedCerts</tt> entry.  When the issuer is a C509 CA, it is encoded as a <tt>Name</tt> value identical to the <tt>issuer</tt> field of the covered C509 certificates.  When the issuer is an X.509 CA, it is encoded as <tt>#6.121(bytes)</tt> (tag 121 is alternative 0), where the byte string contains the DER-encoded <tt>Name</tt> from the <tt>issuer</tt> field of the covered X.509 certificates (<xref target="X.690"/>).  If the issuer is identical to the CRL's <tt>authoritySubject</tt> field, it <bcp14>MUST</bcp14> be encoded as CBOR <tt>null</tt>.</t>
              </li>
              <li>
                <t>The <tt>revokedCertsControl</tt> field defines the controls for interpreting <tt>removedFromCRLCerts</tt> and <tt>revokedCerts</tt>.  If either <tt>removedFromCRLCerts</tt> or <tt>revokedCerts</tt> is non-<tt>null</tt>, <tt>revokedCertsControl</tt> <bcp14>MUST NOT</bcp14> be <tt>null</tt>.  If both <tt>removedFromCRLCerts</tt> and <tt>revokedCerts</tt> are <tt>null</tt>, <tt>revokedCertsControl</tt> <bcp14>MUST</bcp14> be <tt>null</tt> to reduce CRL size.  </t>
                <ul spacing="normal">
                  <li>
                    <t>The <tt>flags</tt> field is an unsigned integer encoding boolean control bits for <tt>crlType = 0</tt>: bit 0 indicates whether entries in <tt>revokedCerts</tt> are sorted in ascending order by the integer value of the certificate serial number; bit 1 indicates whether each entry contains a reason code.  Bits greater than 1 are reserved for <tt>crlType = 0</tt> and <bcp14>MUST</bcp14> be zero and <bcp14>MUST</bcp14> be ignored by receivers.  Future <tt>crlType</tt> values defined in successor documents may assign additional bit meanings.</t>
                  </li>
                  <li>
                    <t>The <tt>serialNumberLength</tt> field defines the length, in bytes, of a certificate serial number.  It <bcp14>MUST</bcp14> be greater than 0.  It is the smallest value that can encode all certificate serial numbers without leading zeros.      </t>
                    <t>
Each certificate serial number is encoded as a fixed-length big-endian integer of length <tt>serialNumberLength</tt>.  If the encoded value is shorter than <tt>serialNumberLength</tt>, it is left-padded with zeros.</t>
                  </li>
                  <li>
                    <t>The <tt>dateLength</tt> field defines the length, in bytes, of the big-endian encoded revocation-date offset relative to <tt>baseDate</tt>.  A value of 0 means that no revocation date is included in <tt>revokedCerts</tt> entries.  This is permitted in C509-native deployments where the revocation date is not required -- for example, when minimizing revocation data is more important than recording the revocation time.  Implementations that need to convert a C509 CRL to an RFC 5280 DER-encoded CRL <bcp14>MUST</bcp14> set <tt>dateLength</tt> to a non-zero value, since <xref section="5.1" sectionFormat="comma" target="RFC5280"/> requires a <tt>revocationDate</tt> in every CRL entry.  When <tt>dateLength</tt> is non-zero, the offset <bcp14>MUST</bcp14> fit within the specified byte length without leading zero bytes.</t>
                  </li>
                  <li>
                    <t>The <tt>baseDate</tt> field is a reference time used to compute revocation and removal dates, encoded as described in <xref target="time-encoding"/>.  It <bcp14>MUST</bcp14> be greater than or equal to the issuer certificate's <tt>notBefore</tt>, which ensures that all stored offsets are non-negative.  It is <bcp14>RECOMMENDED</bcp14> to set <tt>baseDate</tt> to the earliest revocation date and removal-from-CRL date among all entries in this CRL, as this minimizes the magnitude of stored offsets and reduces encoding size.  Any time between the issuer certificate's <tt>notBefore</tt> (inclusive) and that earliest date (inclusive) is a conformant value.  Revocation dates in <tt>revokedCerts</tt> and removal dates in <tt>removedFromCRLCerts</tt> are stored as non-negative offsets, in seconds, from <tt>baseDate</tt>.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>The <tt>extensions</tt> field contains per-issuer extensions.</t>
              </li>
              <li>
                <t>The <tt>revokedCerts</tt> field is a CBOR byte string containing the concatenated byte sequence of revoked-certificate entries.  Each entry is the concatenation of:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>a big-endian encoded certificate serial number of length <tt>serialNumberLength</tt>;</t>
                  </li>
                  <li>
                    <t>a big-endian encoded revocation-date offset from <tt>baseDate</tt>, in seconds, of length <tt>dateLength</tt> (absent when <tt>dateLength</tt> is 0); and</t>
                  </li>
                  <li>
                    <t>an optional reason code (1 byte if bit 1 of <tt>flags</tt> is set, absent otherwise).</t>
                  </li>
                </ul>
                <t>
If there are no entries, this field <bcp14>MUST</bcp14> be encoded as CBOR <tt>null</tt> instead of a zero-length byte string.  </t>
                <t>
The revocation date for a given entry is recovered by adding the stored offset to <tt>baseDate</tt>.  When <tt>dateLength</tt> is 0, no revocation date is stored and no date recovery is possible.  </t>
                <t>
Revoked-certificate entries have fixed length.  If bit 0 of <tt>flags</tt> is set, entries are sorted in ascending order, enabling binary search for a given serial number in O(log(n)) time.</t>
              </li>
              <li>
                <t>The <tt>removedFromCRLCerts</tt> field contains a concatenated byte sequence of entries for certificates removed from the CRL since publication of the CRL with <tt>crlNumber = baseCrlNumber</tt>.  Each entry is the concatenation of:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>a big-endian encoded certificate serial number of length <tt>serialNumberLength</tt>; and</t>
                  </li>
                  <li>
                    <t>a big-endian encoded removal-date offset from <tt>baseDate</tt>, in seconds, of length <tt>dateLength</tt> (absent when <tt>dateLength</tt> is 0).</t>
                  </li>
                </ul>
                <t>
If there are no entries, this field <bcp14>MUST</bcp14> be encoded as CBOR <tt>null</tt> instead of a zero-length byte string.  </t>
                <t>
The removal date for a given entry is recovered by adding the stored offset to <tt>baseDate</tt>.  When <tt>dateLength</tt> is 0, no removal date is stored and no date recovery is possible.  </t>
                <t>
Removed-certificate entries have fixed length.  If bit 0 of <tt>flags</tt> is set, entries are sorted in ascending order, enabling binary search for a given serial number in O(log(n)) time.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="crl-extensions">
          <name>CRL Extensions</name>
          <t>The <tt>crlExtensions</tt> field contains extensions for the CRL.  This document does not define any new CRL-level extensions.</t>
          <t><xref target="tab-crlExt"/> lists X.509 CRL extensions and their equivalents.</t>
          <table anchor="tab-crlExt">
            <name>CRL extensions and their equivalents</name>
            <thead>
              <tr>
                <th align="left">Code</th>
                <th align="left">Extension</th>
                <th align="left">Reference</th>
                <th align="left">Equivalent</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">-</td>
                <td align="left">authorityKeyIdentifier</td>
                <td align="left">
                  <xref section="5.2.1" sectionFormat="comma" target="RFC5280"/></td>
                <td align="left">field <tt>authorityKeyIdentifier</tt></td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">issuerAltName</td>
                <td align="left">
                  <xref section="5.2.2" sectionFormat="comma" target="RFC5280"/></td>
                <td align="left">-</td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">cRLNumber</td>
                <td align="left">
                  <xref section="5.2.3" sectionFormat="comma" target="RFC5280"/></td>
                <td align="left">field <tt>crlNumber</tt></td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">deltaCRLIndicator</td>
                <td align="left">
                  <xref section="5.2.4" sectionFormat="comma" target="RFC5280"/></td>
                <td align="left">field <tt>baseCrlNumber</tt></td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">issuingDistributionPoint</td>
                <td align="left">
                  <xref section="5.2.5" sectionFormat="comma" target="RFC5280"/></td>
                <td align="left">-</td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">freshestCRL</td>
                <td align="left">
                  <xref section="5.2.6" sectionFormat="comma" target="RFC5280"/></td>
                <td align="left">-</td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">authorityInfoAccess</td>
                <td align="left">
                  <xref section="5.2.7" sectionFormat="comma" target="RFC5280"/></td>
                <td align="left">-</td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">orderedList</td>
                <td align="left">OID 2.5.29.56 (ITU-T X.509, Section 9.5.2.5)</td>
                <td align="left">bit 0 of <tt>flags</tt> (ascSerialNum); - (ascRevDate)</td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">toBeRevoked</td>
                <td align="left">OID 2.5.29.58 (ITU-T X.509, Section 9.5.2.6)</td>
                <td align="left">-</td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">revokedGroups</td>
                <td align="left">OID 2.5.29.59 (ITU-T X.509, Section 9.5.2.7)</td>
                <td align="left">-</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="per-issuer-extensions">
          <name>Per-Issuer Extensions</name>
          <t>The <tt>extensions</tt> field of <tt>PerIssuerRevokedCerts</tt> contains per-issuer extensions. This document defines one per-issuer extension (<tt>expiredCertsOnCRL</tt>, see <xref target="ext-expired-certs"/>).</t>
          <t><xref target="tab-perIssuerExt"/> lists per-issuer extensions defined in this document.</t>
          <table anchor="tab-perIssuerExt">
            <name>Per-issuer extensions and their equivalents</name>
            <thead>
              <tr>
                <th align="left">Code</th>
                <th align="left">Extension</th>
                <th align="left">Reference</th>
                <th align="left">Equivalent</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">TBD4</td>
                <td align="left">expiredCertsOnCRL</td>
                <td align="left">OID 2.5.29.60 (ITU-T X.509, Section 9.5.2.8)</td>
                <td align="left">-</td>
              </tr>
            </tbody>
          </table>
          <section anchor="ext-expired-certs">
            <name>expiredCertsOnCRL</name>
            <t>The <tt>expiredCertsOnCRL</tt> extension indicates that this CRL includes revocation information for certificates that have already expired.  The extension value is a time value indicating the earliest expiration date of certificates included on the CRL; certificates that expired on or after this date are listed even if they are expired when the CRL is generated.</t>
            <t>The extension value <bcp14>MUST</bcp14> be encoded as follows.</t>
            <sourcecode type="cddl" name="c509crl.cddl"><![CDATA[
ExpiredCertsOnCRL = ~time
]]></sourcecode>
            <t>The value is encoded as described in <xref target="time-encoding"/>.  When this extension is present, a relying party processing expired certificates (for example, for audit or archiving purposes) <bcp14>SHOULD</bcp14> use the indicated date to determine the extent of historical revocation coverage.</t>
          </section>
        </section>
        <section anchor="crl-entry-extensions">
          <name>CRL Entry Extensions</name>
          <t><xref target="tab-crlEntryExt"/> lists X.509 CRL entry extensions.  No corresponding extension is defined in this document.</t>
          <table anchor="tab-crlEntryExt">
            <name>CRL entry extensions defined for X.509 CRLs</name>
            <thead>
              <tr>
                <th align="left">Code</th>
                <th align="left">Extension</th>
                <th align="left">Reference</th>
                <th align="left">Equivalent</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">-</td>
                <td align="left">reasonCode</td>
                <td align="left">
                  <xref section="5.3.1" sectionFormat="comma" target="RFC5280"/> / ITU-T X.509, Section 9.6.2.1</td>
                <td align="left">fields <tt>removedFromCRLCerts</tt> and <tt>revokedCerts</tt></td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">holdInstructionCode</td>
                <td align="left">
                  <xref section="5.3.2" sectionFormat="comma" target="RFC3280"/> / ITU-T X.509, Section 9.6.2.2</td>
                <td align="left">-</td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">invalidityDate</td>
                <td align="left">
                  <xref section="5.3.2" sectionFormat="comma" target="RFC5280"/> / ITU-T X.509, Section 9.6.2.3</td>
                <td align="left">-</td>
              </tr>
              <tr>
                <td align="left">-</td>
                <td align="left">certificateIssuer</td>
                <td align="left">
                  <xref section="5.3.3" sectionFormat="comma" target="RFC5280"/> / ITU-T X.509, Section 9.6.2.4</td>
                <td align="left">field <tt>issuer</tt> within <tt>PerIssuerRevokedCerts</tt></td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="signaturevalue">
          <name>signatureValue</name>
          <t>Encoded identically to <tt>signatureValue</tt> in C509 certificates (see <xref section="3.1.12" sectionFormat="comma" target="I-D.ietf-cose-cbor-encoded-cert"/>).</t>
        </section>
      </section>
      <section anchor="pem-representation">
        <name>PEM Representation</name>
        <t>The CBOR-encoded C509CRL is first Base64-encoded and then wrapped between "-----BEGIN C509 CRL-----" and "-----END C509 CRL-----", following the framework of <xref target="RFC7468"/>.</t>
        <figure anchor="fig-pem-c509-crl">
          <name>C509 CRL PEM Encoding</name>
          <artwork><![CDATA[
-----BEGIN C509 CRL-----
(base64-encoded CBOR C509CRL)
-----END C509 CRL-----
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="c509ocsp">
      <name>C509 OCSP</name>
      <section anchor="overview-1">
        <name>Overview</name>
        <t>C509 OCSP defines CBOR encodings for OCSP requests and OCSP responses as defined in <xref target="RFC6960"/>.  The encoding follows the same compression principles as C509 CRL and C509 certificates.</t>
        <t>C509 OCSP requests and responses are not wire-format-compatible with DER-encoded OCSP messages as defined in <xref target="RFC6960"/>.  The two formats cannot be mechanically converted to or from each other without semantic interpretation of the contained data.</t>
        <t><tt>C509OCSPRequest</tt> and <tt>C509OCSPResponse</tt> are designed to be extensible.  The first field of every message is <tt>ocspRequestType</tt> or <tt>ocspResponseType</tt>, an integer that identifies the structure type. Future specifications may define additional types by assigning new integer values, enabling new request or response structures to be introduced without modifying the existing types.</t>
      </section>
      <section anchor="hash-algs">
        <name>Hash Algorithms</name>
        <t>The <tt>hashAlgorithm</tt> field of C509 OCSP requests and responses identifies the hash algorithm used to compute all hashes within the enclosing structure.  Its value is the integer identifier of a hash algorithm from the "COSE Algorithms" registry <xref target="IANA.cose"/>, e.g., -16 for SHA-256, -43 for SHA-384, and -44 for SHA-512 <xref target="RFC9054"/>.  Any hash algorithm in that registry can be used, subject to the restrictions below; for example, SHA3-256 or SM3 can be used once they are registered.</t>
        <t>The hash algorithm <bcp14>MUST</bcp14> produce an output of at least 20 bytes, so that <tt>HashId20</tt> values can be derived (see <xref target="cert-identification"/>).  Consequently, SHA-256/64 (-15) <bcp14>MUST NOT</bcp14> be used.  Other truncated hash algorithms, such as SHA-512/256 (-17), <bcp14>SHOULD NOT</bcp14> be used: this document already defines the truncated identifiers <tt>HashId8</tt> and <tt>HashId20</tt>, so using a truncated hash algorithm provides no benefit.  SHA-1 (-14) <bcp14>MUST NOT</bcp14> be used either, since it is not collision resistant.  For SHAKE128 (-18) and SHAKE256 (-45), the output length is as specified in <xref target="RFC9054"/>, i.e., 256 and 512 bits, respectively.  For an extendable-output function whose output length is not fixed by its registration, such as TurboSHAKE128 (-261) and TurboSHAKE256 (-262) <xref target="RFC9861"/>, the output length is the length of the identifier being computed, i.e., 8 bytes for <tt>HashId8</tt> and 20 bytes for <tt>HashId20</tt>.</t>
      </section>
      <section anchor="cert-identification">
        <name>Identification of Certificates</name>
        <t>To reduce OCSP message size, this document defines two truncated-hash identifier types used to refer to certificates compactly:</t>
        <ul spacing="normal">
          <li>
            <t><tt>HashId8</tt>: the leading 8 bytes of the hash value computed using the enclosing <tt>hashAlgorithm</tt>.  <tt>HashId8</tt> is used to identify issuer certificates and the certificates of OCSP requestors and responders in request and response structures where a short identifier provides sufficient uniqueness in the deployment context.</t>
          </li>
          <li>
            <t><tt>HashId20</tt>: the leading 20 bytes of the hash value computed using the enclosing <tt>hashAlgorithm</tt>. <tt>HashId20</tt> is intended for identifying certificate serial numbers (the <tt>serialNumberHash</tt> field) when higher uniqueness is required to minimize collision risk. When derived from a secure hash (e.g., SHA-256 or SHA3-256) and treated as a random output, it gives ~2^160 preimage work and ~2^80 collision resistance (birthday bound) for the truncated value. Since the relying party verifies a certificate's signature before querying OCSP, an adversary needs to construct a different certificate that (a) validates under the same issuer chain and (b) has a serial number whose hash truncation equals an existing certificate's <tt>HashId20</tt>. Such a construction is practically infeasible.</t>
          </li>
        </ul>
        <sourcecode type="cddl" name="c509ocsp.cddl"><![CDATA[
HashId8   = bytes .size 8
HashId20  = bytes .size 20
]]></sourcecode>
        <t><tt>HashId20</tt> is used to carry the hash of the certificate serial number of the target certificate, computed using the <tt>hashAlgorithm</tt> of the enclosing structure.  The serial number is encoded in big-endian byte order without a leading zero byte (as in C509 certificates) before hashing.  In X.509, a <tt>CertificateSerialNumber</tt> INTEGER is DER-encoded with a leading zero byte when the most-significant bit is set; that leading zero <bcp14>MUST</bcp14> be stripped before computing the hash.</t>
        <t>Using a hash rather than the plain serial number preserves the privacy of the requestor: an observer cannot determine which certificate is being queried without already knowing the serial number.</t>
      </section>
      <section anchor="ocsp-request">
        <name>C509 OCSP Request</name>
        <section anchor="ocsp-req-cddl">
          <name>CDDL</name>
          <figure anchor="fig-OCSPReqCDDL">
            <name>CDDL for C509OCSPRequest</name>
            <sourcecode type="cddl" name="c509ocsp.cddl"><![CDATA[
C509OCSPRequest = C509UnsignedOCSPRequest /
                  C509SignedOCSPRequest /
                  C509SimpleOCSPRequest

C509UnsignedOCSPRequest = [
  ocspRequestType    : 0, ; int16
  hashAlgorithm      : IntAlgorithmIdentifier,
  nonce              : bytes .size (16..32) / null,
  extensions         : IntExtensions,
  requests           : PerIssuerOCSPRequests
]

TBSOCSPRequest = (
  ocspRequestType    : 1, ; int16
  signatureAlgorithm : IntAlgorithmIdentifier,
  hashAlgorithm      : IntAlgorithmIdentifier,
  nonce              : bytes .size (16..32) / null,
  requestorCertHash  : HashId8,
  extensions         : IntExtensions,
  requests           : PerIssuerOCSPRequests,
  requestorCerts     : COSE_C509 / #6.121(COSE_X509) / null,
)

C509SignedOCSPRequest = [
  TBSOCSPRequest,
  signatureValue     : any,
]

C509SimpleOCSPRequest = [
  ocspRequestType    : 2, ; int16
  hashAlgorithm      : IntAlgorithmIdentifier,
  nonce              : bytes .size (16..32) / null,
  issuerCertHash     : HashId8,
  serialNumberHash   : HashId20,
  extensions         : IntExtensions
]

PerIssuerOCSPRequests = [ + PerIssuerOCSPRequest ]

PerIssuerOCSPRequest = (
  issuerCertHash   : HashId8,
  extensions       : IntExtensions,
  singleRequests   : SingleCertRequests,
)

SingleCertRequests  = [ + SingleCertRequest ]

SingleCertRequest = (
  serialNumberHash : HashId20,
  extensions       : IntExtensions,
)
]]></sourcecode>
          </figure>
        </section>
        <section anchor="field-encodings">
          <name>Field Encodings</name>
          <section anchor="ocsprequesttype">
            <name>ocspRequestType</name>
            <t>The <tt>ocspRequestType</tt> field serves as the discriminator for <tt>C509OCSPRequest</tt>:</t>
            <table anchor="tab-ocspreq-types">
              <name>OCSP request types</name>
              <thead>
                <tr>
                  <th align="center">Value</th>
                  <th align="left">Type</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="center">0</td>
                  <td align="left">
                    <tt>C509UnsignedOCSPRequest</tt></td>
                </tr>
                <tr>
                  <td align="center">1</td>
                  <td align="left">
                    <tt>C509SignedOCSPRequest</tt></td>
                </tr>
                <tr>
                  <td align="center">2</td>
                  <td align="left">
                    <tt>C509SimpleOCSPRequest</tt></td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="issuer-hash-id">
            <name>issuerCertHash</name>
            <t>The <tt>issuerCertHash</tt> field appears in <tt>PerIssuerOCSPRequest</tt>, <tt>PerIssuerOCSPResponse</tt>, <tt>C509SimpleOCSPRequest</tt>, and <tt>TBSSimpleOCSPResponse</tt>.  It contains a hash of the issuer certificate:</t>
            <ul spacing="normal">
              <li>
                <t><tt>issuerCertHash</tt>: hash computed over the deterministically encoded certificate, i.e., the CBOR-encoded C509Certificate or the DER-encoded (<xref target="X.690"/>) X.509 certificate.  For a CBOR re-encoded X.509 certificate (<tt>c509CertificateType</tt> = 3, see <xref section="3.1.1" sectionFormat="comma" target="I-D.ietf-cose-cbor-encoded-cert"/>), the hash <bcp14>MUST</bcp14> be computed over the DER-encoded X.509 certificate, not over its C509 encoding, since such a certificate may have more than one conformant CBOR encoding (see <xref section="3.4" sectionFormat="comma" target="I-D.ietf-cose-cbor-encoded-cert"/>).  The hash algorithm is specified by the <tt>hashAlgorithm</tt> field of the enclosing request or response structure.</t>
              </li>
            </ul>
            <t>In X.509 OCSP (<xref section="4.1.1" sectionFormat="comma" target="RFC6960"/>), the <tt>CertID</tt> structure identifies the issuer using two separate hashes: <tt>issuerNameHash</tt> (a hash of the DER-encoded issuer name) and <tt>issuerKeyHash</tt> (a hash of the issuer's public key bit string).  This two-hash approach was designed for interoperability with DER-encoded X.509 structures, but it doubles the per-issuer overhead in the message.  In C509 OCSP, the issuer is identified by a single hash of the issuer certificate (<tt>issuerCertHash</tt>), which is simpler, smaller, and unambiguous.  Implementations that need to cross-reference a C509 <tt>issuerCertHash</tt> with an RFC 6960 DER-encoded <tt>CertID</tt> must recompute the respective hash inputs; the values are not directly comparable.</t>
          </section>
          <section anchor="per-issuer-requests">
            <name>PerIssuerOCSPRequests, PerIssuerOCSPRequest, SingleCertRequests and SingleCertRequest</name>
            <t><tt>PerIssuerOCSPRequests</tt> is a list of <tt>PerIssuerOCSPRequest</tt> entries.  In X.509 OCSP (<xref section="4.1.1" sectionFormat="comma" target="RFC6960"/>), every <tt>Request</tt> entry embeds a full <tt>CertID</tt> containing the issuer identity fields (<tt>hashAlgorithm</tt>, <tt>issuerNameHash</tt>, <tt>issuerKeyHash</tt>) alongside the <tt>serialNumber</tt>.  When multiple certificates from the same issuer are queried in a single request, these issuer fields are repeated verbatim for every entry, wasting space.  <tt>PerIssuerOCSPRequest</tt> solves this by grouping all single-certificate requests for the same issuer under one entry: the <tt>issuerCertHash</tt> field is encoded once and shared across all <tt>SingleCertRequest</tt> entries in the <tt>singleRequests</tt> list, eliminating the per-entry duplication.  Since <tt>PerIssuerOCSPRequest</tt> and <tt>SingleCertRequest</tt> are CDDL groups, the fields of each entry are inlined in the enclosing array rather than wrapped in a nested array.</t>
            <ul spacing="normal">
              <li>
                <t>The <tt>extensions</tt> field contains per-issuer extensions that apply to all single-certificate requests in this <tt>PerIssuerOCSPRequest</tt> entry; see <xref target="ocsp-per-issuer-extensions"/>.</t>
              </li>
              <li>
                <t>The <tt>singleRequests</tt> field is a list of <tt>SingleCertRequest</tt> entries for certificates from this issuer.</t>
              </li>
            </ul>
            <t>Each <tt>SingleCertRequest</tt> contains:</t>
            <ul spacing="normal">
              <li>
                <t>The <tt>serialNumberHash</tt> field is the truncated hash of the certificate serial number of the target certificate, computed using the <tt>hashAlgorithm</tt> of the enclosing request structure.  The serial number is encoded in big-endian byte order without a leading zero byte (as in C509 certificates) before hashing.  Using a hash rather than the plain serial number preserves the privacy of the requestor: an observer cannot determine which certificate is being queried without already knowing the serial number.</t>
              </li>
              <li>
                <t>The <tt>extensions</tt> field contains extensions for the single request; see <xref target="ocsp-extensions"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="C509UnsignedOCSPRequest">
            <name>C509UnsignedOCSPRequest</name>
            <ul spacing="normal">
              <li>
                <t>The <tt>ocspRequestType</tt> field <bcp14>MUST</bcp14> be 0.</t>
              </li>
              <li>
                <t>The <tt>hashAlgorithm</tt> field specifies the hash algorithm used to compute <tt>issuerCertHash</tt> and <tt>serialNumberHash</tt>.  The algorithm is encoded as specified in <xref target="hash-algs"/>.</t>
              </li>
              <li>
                <t>The <tt>nonce</tt> field contains the request nonce, or <bcp14>MUST</bcp14> be <tt>null</tt> when no nonce is present.  The nonce <bcp14>MUST</bcp14> be generated by a cryptographically strong pseudorandom number generator and <bcp14>MUST</bcp14> be between 16 and 32 bytes long.  An OCSP server <bcp14>MUST</bcp14> reject a request whose nonce is shorter than 16 bytes or longer than 32 bytes by returning a <tt>C509ErrorOCSPResponse</tt> with <tt>responseStatus</tt> set to <tt>malformedRequest</tt> (1).</t>
              </li>
              <li>
                <t>The <tt>extensions</tt> field contains request-level extensions; see <xref target="ocsp-extensions"/>.</t>
              </li>
              <li>
                <t>The <tt>requests</tt> field is a list of <tt>PerIssuerOCSPRequest</tt> entries, each grouping target certificates by issuer; see <xref target="per-issuer-requests"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="c509signedocsprequest">
            <name>C509SignedOCSPRequest</name>
            <ul spacing="normal">
              <li>
                <t>The <tt>ocspRequestType</tt> field <bcp14>MUST</bcp14> be 1.</t>
              </li>
              <li>
                <t>The <tt>signatureAlgorithm</tt> field specifies the signature algorithm, as defined in <xref section="3.1.3" sectionFormat="comma" target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
              </li>
              <li>
                <t>The <tt>hashAlgorithm</tt> field specifies the hash algorithm used to compute <tt>requestorCertHash</tt>, <tt>issuerCertHash</tt>, and <tt>serialNumberHash</tt>.  The algorithm is encoded as specified in <xref target="hash-algs"/>.</t>
              </li>
              <li>
                <t>The <tt>nonce</tt> field is as defined for <tt>C509UnsignedOCSPRequest</tt> (<xref target="C509UnsignedOCSPRequest"/>).</t>
              </li>
              <li>
                <t>The <tt>requestorCertHash</tt> field is a hash of the signer's certificate, computed using <tt>hashAlgorithm</tt>. When <tt>requestorCerts</tt> is not <tt>null</tt>, it carries the corresponding certificate chain so that the receiver can verify the identity of the requestor.</t>
              </li>
              <li>
                <t>The <tt>extensions</tt> field contains request-level extensions; see <xref target="ocsp-extensions"/>.</t>
              </li>
              <li>
                <t>The <tt>requests</tt> field is as defined for <tt>C509UnsignedOCSPRequest</tt> (<xref target="C509UnsignedOCSPRequest"/>).</t>
              </li>
              <li>
                <t>The <tt>requestorCerts</tt> field contains a sorted certificate chain starting with the signer's certificate, or <bcp14>MUST</bcp14> be <tt>null</tt> if no certificates are transported.  When the signer holds a C509 certificate chain, the value is <tt>COSE_C509</tt>.  When the signer holds an X.509 certificate chain, the value is <tt>#6.121(COSE_X509)</tt>, wrapping a <tt>COSE_X509</tt> chain with CBOR tag 121 (alternative 0).</t>
              </li>
              <li>
                <t>The <tt>signatureValue</tt> field is the signature computed over the CBOR Sequence of the <tt>TBSOCSPRequest</tt> group.</t>
              </li>
            </ul>
          </section>
          <section anchor="C509SimpleOCSPRequest">
            <name>C509SimpleOCSPRequest</name>
            <t><tt>C509SimpleOCSPRequest</tt> is a compact request format for querying the status of a single certificate.  Unlike <tt>C509UnsignedOCSPRequest</tt>, which uses a two-level <tt>PerIssuerOCSPRequests</tt> / <tt>SingleCertRequest</tt> grouping to batch multiple serial numbers across one or more issuers, <tt>C509SimpleOCSPRequest</tt> flattens the structure into a single CBOR array for the common case of a one-certificate query.</t>
            <ul spacing="normal">
              <li>
                <t>The <tt>ocspRequestType</tt> field <bcp14>MUST</bcp14> be 2.</t>
              </li>
              <li>
                <t>The <tt>hashAlgorithm</tt> field specifies the hash algorithm used to compute <tt>issuerCertHash</tt> and <tt>serialNumberHash</tt>.  The algorithm is encoded as specified in <xref target="hash-algs"/>.</t>
              </li>
              <li>
                <t>The <tt>nonce</tt> field is as defined for <tt>C509UnsignedOCSPRequest</tt> (<xref target="C509UnsignedOCSPRequest"/>).</t>
              </li>
              <li>
                <t>The <tt>issuerCertHash</tt> field identifies the issuer of the target certificate; see <xref target="issuer-hash-id"/>.</t>
              </li>
              <li>
                <t>The <tt>serialNumberHash</tt> field is the hash of the certificate serial number of the target certificate, computed as in <xref target="cert-identification"/>.</t>
              </li>
              <li>
                <t>The <tt>extensions</tt> field contains request-level extensions; see <xref target="ocsp-extensions"/>.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="pem-representation-1">
          <name>PEM Representation</name>
          <t>The CBOR-encoded C509 OCSP request is first Base64-encoded and then wrapped between "-----BEGIN C509 OCSP REQUEST-----" and "-----END C509 OCSP REQUEST-----", following the framework of <xref target="RFC7468"/>.</t>
          <figure anchor="fig-pem-c509-ocsp-req">
            <name>C509 OCSP Request PEM Encoding</name>
            <artwork><![CDATA[
-----BEGIN C509 OCSP REQUEST-----
(base64-encoded CBOR C509 OCSP Request)
-----END C509 OCSP REQUEST-----
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="ocsp-response">
        <name>C509 OCSP Response</name>
        <section anchor="ocsp-resp-cddl">
          <name>CDDL</name>
          <figure anchor="fig-OCSPRespCDDL">
            <name>CDDL for C509OCSPResponse</name>
            <sourcecode type="cddl" name="c509ocsp.cddl"><![CDATA[
C509OCSPResponse = C509ErrorOCSPResponse /
                   C509BasicOCSPResponse /
                   C509SimpleOCSPResponse

C509ErrorOCSPResponse = [
  ocspResponseType  : 0,  ; int16
  responseStatus    : -128..127
]

TBSBasicOCSPResponse = (
  ocspResponseType   : 1, ; int16
  signatureAlgorithm : IntAlgorithmIdentifier,
  hashAlgorithm      : IntAlgorithmIdentifier,
  nonce              : bytes .size (16..32) / null,
  responderCertHash  : HashId8,
  producedAt         : ~time,
  extensions         : IntExtensions,
  responses          : PerIssuerOCSPResponses,
  responderCerts     : COSE_C509 / #6.121(COSE_X509) / null,
)

C509BasicOCSPResponse = [
  TBSBasicOCSPResponse,
  signatureValue     : any
]

TBSSimpleOCSPResponse = (
  ocspResponseType   : 2, ; int16
  signatureAlgorithm : IntAlgorithmIdentifier,
  hashAlgorithm      : IntAlgorithmIdentifier,
  nonce              : bytes .size (16..32) / null,
  responderCertHash  : HashId8,
  issuerCertHash     : HashId8,
  serialNumberHash   : HashId20,
  certStatus         : CertStatus,
  producedAt         : ~time,
  thisUpdate         : nint / 0,
  nextUpdate         : uint63 / null,
  extensions         : IntExtensions,
  responderCerts     : COSE_C509 / #6.121(COSE_X509) / null,
)

C509SimpleOCSPResponse = [
  TBSSimpleOCSPResponse,
  signatureValue     : any
]

PerIssuerOCSPResponses = [ + PerIssuerOCSPResponse ]

PerIssuerOCSPResponse = (
  issuerCertHash   : HashId8,
  extensions       : IntExtensions,
  singleResponses  : SingleCertResponses,
)

SingleCertResponses = [ + SingleCertResponse ]

SingleCertResponse = (
  serialNumberHash : HashId20,
  certStatus       : CertStatus,
  thisUpdate       : nint / 0,
  nextUpdate       : uint63 / null,
  extensions       : IntExtensions,
)

CertStatus = 0        ; good
           / 1        ; not-issued (issuer recognized,
                      ;   serial number not issued)
           / 2        ; unknown (issuer not recognized)
           / RevokedInfo

RevokedInfo = [
  revocationTime   : ~time,
  revocationReason : uint8,
]
]]></sourcecode>
          </figure>
        </section>
        <section anchor="ocsp-resp-fields">
          <name>Field Encodings</name>
          <section anchor="c509errorocspresponse">
            <name>C509ErrorOCSPResponse</name>
            <t>If the OCSP server cannot process the OCSP query, it returns a <tt>C509ErrorOCSPResponse</tt>.  The <tt>ocspResponseType</tt> value <bcp14>MUST</bcp14> be 0, and <tt>responseStatus</tt> has the following enumerated values, as in <xref section="4.2.1" sectionFormat="comma" target="RFC6960"/>:</t>
            <table anchor="tab-respstatus">
              <name>responseStatus values</name>
              <thead>
                <tr>
                  <th align="center">int</th>
                  <th align="left">responseStatus</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="center">-</td>
                  <td align="left">successful</td>
                </tr>
                <tr>
                  <td align="center">1</td>
                  <td align="left">malformedRequest</td>
                </tr>
                <tr>
                  <td align="center">2</td>
                  <td align="left">internalError</td>
                </tr>
                <tr>
                  <td align="center">3</td>
                  <td align="left">tryLater</td>
                </tr>
                <tr>
                  <td align="center">5</td>
                  <td align="left">sigRequired</td>
                </tr>
                <tr>
                  <td align="center">6</td>
                  <td align="left">unauthorized</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="c509basicocspresponse">
            <name>C509BasicOCSPResponse</name>
            <t>The <tt>ocspResponseType</tt> field of <tt>C509BasicOCSPResponse</tt> is 1, distinguishing it from <tt>C509ErrorOCSPResponse</tt>.  It corresponds to <tt>BasicOCSPResponse</tt> in <xref target="RFC6960"/>.</t>
            <t><tt>TBSBasicOCSPResponse</tt> is the group of fields to be signed. The <tt>signatureValue</tt> field is the only field outside the signed group.  Covering <tt>signatureAlgorithm</tt> and <tt>responderCerts</tt> within the signed content prevents algorithm-substitution and certificate-chain substitution attacks; this design goes beyond the protections offered by the DER-encoded <tt>BasicOCSPResponse</tt> defined in <xref target="RFC6960"/>.</t>
          </section>
          <section anchor="C509SimpleOCSPResponse">
            <name>C509SimpleOCSPResponse</name>
            <t><tt>C509SimpleOCSPResponse</tt> is a compact signed response for a single-certificate status query.  It is the response counterpart to <tt>C509SimpleOCSPRequest</tt> (see <xref target="C509SimpleOCSPRequest"/>).  Unlike <tt>C509BasicOCSPResponse</tt>, which uses a two-level <tt>PerIssuerOCSPResponses</tt> / <tt>SingleCertResponse</tt> grouping to carry status for multiple certificates across one or more issuers, <tt>C509SimpleOCSPResponse</tt> flattens the structure into a single signed CBOR array for the common case of a one-certificate response.</t>
            <t><tt>TBSSimpleOCSPResponse</tt> is the group of fields to be signed.  The <tt>signatureValue</tt> field is the only field outside the signed group.  Covering <tt>signatureAlgorithm</tt>, <tt>responderCertHash</tt>, and <tt>responderCerts</tt> within the signed content prevents algorithm-substitution and certificate-chain substitution attacks.</t>
            <ul spacing="normal">
              <li>
                <t>The <tt>ocspResponseType</tt> field <bcp14>MUST</bcp14> be 2, which discriminates <tt>C509SimpleOCSPResponse</tt> from <tt>C509ErrorOCSPResponse</tt> and <tt>C509BasicOCSPResponse</tt>.</t>
              </li>
              <li>
                <t>The <tt>signatureAlgorithm</tt> field specifies the signature algorithm, as defined in <xref section="3.1.3" sectionFormat="comma" target="I-D.ietf-cose-cbor-encoded-cert"/>.  It is part of <tt>TBSSimpleOCSPResponse</tt> and is therefore covered by the signature.</t>
              </li>
              <li>
                <t>The <tt>hashAlgorithm</tt> field specifies the hash algorithm used to compute <tt>responderCertHash</tt>, <tt>issuerCertHash</tt>, and <tt>serialNumberHash</tt>.  The algorithm is encoded as specified in <xref target="hash-algs"/>.</t>
              </li>
              <li>
                <t>The <tt>nonce</tt> field contains the request nonce, or <bcp14>MUST</bcp14> be <tt>null</tt> when no nonce is present.  If present, it <bcp14>MUST</bcp14> have the same value as the <tt>nonce</tt> in the corresponding <tt>C509SimpleOCSPRequest</tt>.</t>
              </li>
              <li>
                <t>The <tt>responderCertHash</tt> field identifies the OCSP responder; see <xref target="responderCertHash"/>.</t>
              </li>
              <li>
                <t>The <tt>issuerCertHash</tt> field identifies the issuer of the queried certificate; see <xref target="issuer-hash-id"/>.</t>
              </li>
              <li>
                <t>The <tt>serialNumberHash</tt> field is the hash of the certificate serial number of the target certificate, computed as in <xref target="cert-identification"/>.</t>
              </li>
              <li>
                <t>The <tt>certStatus</tt> field encodes the revocation status; see <xref target="SingleCertResponse"/>.</t>
              </li>
              <li>
                <t>The <tt>producedAt</tt> field is the time at which this response was produced, encoded as described in <xref target="time-encoding"/>.</t>
              </li>
              <li>
                <t>The <tt>thisUpdate</tt> field is encoded as a non-positive integer (<tt>nint / 0</tt>) representing the number of seconds from <tt>producedAt</tt> at which the indicated status is known to be correct.  It <bcp14>MUST</bcp14> be 0 or negative, since the status cannot be known at a time in the future relative to the time the response was produced.</t>
              </li>
              <li>
                <t>The <tt>nextUpdate</tt> field is encoded as a <tt>uint63</tt> representing the number of seconds from <tt>producedAt</tt> until the next response update is expected, or <tt>null</tt> if the update time is unknown.</t>
              </li>
              <li>
                <t>The <tt>extensions</tt> field contains response-level extensions; see <xref target="ocsp-extensions"/>.</t>
              </li>
              <li>
                <t>The <tt>responderCerts</tt> field carries the certificate chain starting with the responder certificate identified by <tt>responderCertHash</tt>; see <xref target="responderCerts"/>.</t>
              </li>
              <li>
                <t>The <tt>signatureValue</tt> field is the signature computed over the CBOR Sequence of the <tt>TBSSimpleOCSPResponse</tt> group.</t>
              </li>
            </ul>
          </section>
          <section anchor="nonce">
            <name>nonce</name>
            <t>If present, this field <bcp14>MUST</bcp14> have the same value as the <tt>nonce</tt> in the corresponding request.</t>
          </section>
          <section anchor="responderCertHash">
            <name>responderCertHash</name>
            <t><tt>responderCertHash</tt> is a truncated hash over the responder's certificate, computed using the same <tt>hashAlgorithm</tt> as <tt>issuerCertHash</tt>.  In X.509 OCSP (<xref target="RFC6960"/>), the responder is identified by a <tt>ResponderID</tt> CHOICE that carries either a distinguished name or a public-key hash.  C509 OCSP replaces this with a single hash over the entire responder certificate, which is consistent with the <tt>issuerCertHash</tt> design for issuer identification.</t>
          </section>
          <section anchor="responderCerts">
            <name>responderCerts</name>
            <t>When present, the <tt>responderCerts</tt> field carries the certificate chain starting with the responder certificate identified by <tt>responderCertHash</tt>.  When the responder holds a C509 certificate chain, the value is <tt>COSE_C509</tt>.  When the responder holds an X.509 certificate chain, the value is <tt>#6.121(COSE_X509)</tt>, wrapping a <tt>COSE_X509</tt> chain with CBOR tag 121 (alternative 0).  The field is part of <tt>TBSBasicOCSPResponse</tt> or <tt>TBSSimpleOCSPResponse</tt> and is therefore covered by the signature, which prevents certificate-chain substitution attacks.</t>
          </section>
          <section anchor="signaturealgorithm-and-signaturevalue">
            <name>signatureAlgorithm and signatureValue</name>
            <ul spacing="normal">
              <li>
                <t><tt>signatureAlgorithm</tt>: the signature algorithm used to compute <tt>signatureValue</tt>, as defined in <xref section="3.1.3" sectionFormat="comma" target="I-D.ietf-cose-cbor-encoded-cert"/>.  It is part of the <tt>TBSBasicOCSPResponse</tt> or <tt>TBSSimpleOCSPResponse</tt> group and is therefore covered by the signature.</t>
              </li>
              <li>
                <t><tt>signatureValue</tt>: the signature computed over the CBOR Sequence of the <tt>TBSBasicOCSPResponse</tt> or <tt>TBSSimpleOCSPResponse</tt> group.</t>
              </li>
            </ul>
          </section>
          <section anchor="producedat-thisupdate-nextupdate">
            <name>producedAt, thisUpdate, nextUpdate</name>
            <t>The <tt>producedAt</tt> field is encoded as described in <xref target="time-encoding"/>.  The <tt>thisUpdate</tt> field is encoded as a non-positive integer (<tt>nint / 0</tt>) representing the number of seconds from <tt>producedAt</tt> at which the indicated status is known to be correct; it <bcp14>MUST</bcp14> be 0 or negative, since the status cannot be known at a time in the future relative to when the response was produced.  The <tt>nextUpdate</tt> field is encoded as a <tt>uint63</tt> representing the number of seconds from <tt>producedAt</tt> until the next update is expected to be available.  <tt>nextUpdate</tt> may be <tt>null</tt>, which indicates an unknown update time.</t>
          </section>
          <section anchor="extensions">
            <name>extensions</name>
            <t>See <xref target="ocsp-extensions"/>.</t>
          </section>
          <section anchor="perissuerocspresponses-and-perissuerocspresponse">
            <name>PerIssuerOCSPResponses and PerIssuerOCSPResponse</name>
            <t><tt>PerIssuerOCSPResponses</tt> is a list of <tt>PerIssuerOCSPResponse</tt> entries.  For the same reason as on the request side (see <xref target="per-issuer-requests"/>), the <tt>issuerCertHash</tt> field is encoded once per issuer and shared across all <tt>SingleCertResponse</tt> entries in the <tt>singleResponses</tt> list, avoiding the per-entry repetition that would occur if the issuer identity were embedded in every individual response entry.  <tt>PerIssuerOCSPResponse</tt> groups single responses for certificates issued by the same issuer; the issuer is identified by <tt>issuerCertHash</tt> (see <xref target="issuer-hash-id"/>).  As on the request side, <tt>PerIssuerOCSPResponse</tt> and <tt>SingleCertResponse</tt> are CDDL groups whose fields are inlined in the enclosing array.</t>
            <ul spacing="normal">
              <li>
                <t>The <tt>extensions</tt> field contains per-issuer extensions that apply to all single-certificate responses in this <tt>PerIssuerOCSPResponse</tt> entry; see <xref target="ocsp-per-issuer-extensions"/>.</t>
              </li>
              <li>
                <t>The <tt>singleResponses</tt> field contains one <tt>SingleCertResponse</tt> for each queried certificate issued by that issuer.</t>
              </li>
            </ul>
          </section>
          <section anchor="SingleCertResponse">
            <name>SingleCertResponse</name>
            <section anchor="serialNumberHash-section">
              <name>serialNumberHash</name>
              <t>This field contains the truncated hash of the serial number of the certificate being queried, computed as in <xref target="cert-identification"/>.</t>
            </section>
            <section anchor="extensions-1">
              <name>extensions</name>
              <t>See <xref target="ocsp-extensions"/>.</t>
            </section>
            <section anchor="certstatus">
              <name>certStatus</name>
              <t><tt>CertStatus</tt> is encoded either as an integer (for <tt>good</tt>, <tt>not-issued</tt>, and <tt>unknown</tt>) or as a <tt>RevokedInfo</tt> array:</t>
              <ul spacing="normal">
                <li>
                  <t>0: <tt>good</tt> -- the certificate is not revoked.</t>
                </li>
                <li>
                  <t>1: <tt>not-issued</tt> -- the issuer is recognized but the serial number is unknown.</t>
                </li>
                <li>
                  <t>2: <tt>unknown</tt> -- the responder does not recognize the issuer identified by <tt>issuerCertHash</tt>.</t>
                </li>
                <li>
                  <t><tt>RevokedInfo</tt>: <tt>revoked</tt> -- an array carrying <tt>revocationTime</tt> and <tt>revocationReason</tt>.  The <tt>revocationReason</tt> field is encoded as specified in <xref target="reasoncode-encoding"/>.  When the revocation reason is not known, <tt>revocationReason</tt> <bcp14>MUST</bcp14> be set to 0 (unspecified).</t>
                </li>
              </ul>
              <t>The integer values are chosen to align with the ASN.1 IMPLICIT tag numbers of <tt>CertStatus</tt> in <xref target="RFC6960"/>: <tt>good</tt> uses ASN.1 tag 0 and <tt>unknown</tt> uses ASN.1 tag 2.  The ASN.1 <tt>revoked</tt> alternative uses ASN.1 tag 1; since C509 represents the revoked status as the explicit <tt>RevokedInfo</tt> array, the integer value 1 becomes available.  It is assigned to the <tt>not-issued</tt> status, which was introduced in <xref section="4.4.8" sectionFormat="comma" target="RFC6960"/> to distinguish unrecognized serial numbers from unrecognized issuers, thereby maintaining a contiguous integer range for the non-revoked statuses.</t>
            </section>
          </section>
          <section anchor="ocsp-per-issuer-extensions">
            <name>Per-Issuer OCSP Extensions</name>
            <t><tt>PerIssuerOCSPRequest.extensions</tt> and <tt>PerIssuerOCSPResponse.extensions</tt> carry per-issuer extensions.</t>
            <t><xref target="tab-perIssuerOCSPExt"/> lists the per-issuer extensions defined in this document.</t>
            <table anchor="tab-perIssuerOCSPExt">
              <name>Per-issuer OCSP extensions</name>
              <thead>
                <tr>
                  <th align="center">Code</th>
                  <th align="left">Extension</th>
                  <th align="left">Applied in</th>
                  <th align="left">Comments</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="center">(none defined)</td>
                  <td align="left"> </td>
                  <td align="left"> </td>
                  <td align="left"> </td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="ocsp-extensions">
            <name>OCSP Extensions</name>
            <t><xref target="tab-ocspext"/> describes the OCSP extensions defined in <xref target="RFC6960"/> and <xref target="I-D.ietf-stir-certificates-ocsp"/> and their mapping in this document.</t>
            <table anchor="tab-ocspext">
              <name>OCSP extensions and their mapping</name>
              <thead>
                <tr>
                  <th align="center">Code</th>
                  <th align="left">Extension</th>
                  <th align="left">RFC Reference</th>
                  <th align="left">Applied in</th>
                  <th align="left">Replaced in this document</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="center">-</td>
                  <td align="left">nonce</td>
                  <td align="left">
                    <xref section="4.4.1" sectionFormat="comma" target="RFC6960"/></td>
                  <td align="left">Request Extension, Response Extension</td>
                  <td align="left">field <tt>nonce</tt></td>
                </tr>
                <tr>
                  <td align="center">-</td>
                  <td align="left">CRL References</td>
                  <td align="left">
                    <xref section="4.4.2" sectionFormat="comma" target="RFC6960"/></td>
                  <td align="left">Single Response Extension</td>
                  <td align="left">-</td>
                </tr>
                <tr>
                  <td align="center">TBD2</td>
                  <td align="left">Acceptable Response Types</td>
                  <td align="left">
                    <xref section="4.4.3" sectionFormat="comma" target="RFC6960"/></td>
                  <td align="left">Request Extension</td>
                  <td align="left">-</td>
                </tr>
                <tr>
                  <td align="center">-</td>
                  <td align="left">Archive Cutoff</td>
                  <td align="left">
                    <xref section="4.4.4" sectionFormat="comma" target="RFC6960"/></td>
                  <td align="left">Response Extension</td>
                  <td align="left">-</td>
                </tr>
                <tr>
                  <td align="center">-</td>
                  <td align="left">Service Locator</td>
                  <td align="left">
                    <xref section="4.4.5" sectionFormat="comma" target="RFC6960"/></td>
                  <td align="left">Request Extension</td>
                  <td align="left">-</td>
                </tr>
                <tr>
                  <td align="center">TBD3</td>
                  <td align="left">Preferred Signature Algorithms</td>
                  <td align="left">
                    <xref section="4.4.7" sectionFormat="comma" target="RFC6960"/></td>
                  <td align="left">Request Extension</td>
                  <td align="left">-</td>
                </tr>
                <tr>
                  <td align="center">-</td>
                  <td align="left">Extended Revoked Definition</td>
                  <td align="left">
                    <xref section="4.4.8" sectionFormat="comma" target="RFC6960"/></td>
                  <td align="left">Response Extension</td>
                  <td align="left">cert status <tt>not-issued</tt> (for serial numbers not issued by a recognized issuer) and <tt>unknown</tt> (for unrecognized issuers)</td>
                </tr>
                <tr>
                  <td align="center">TBD6</td>
                  <td align="left">TN Query</td>
                  <td align="left">
                    <xref target="I-D.ietf-stir-certificates-ocsp"/></td>
                  <td align="left">Single Request Extension</td>
                  <td align="left">-</td>
                </tr>
              </tbody>
            </table>
            <t>This document defines the following extension values:</t>
            <ul spacing="normal">
              <li>
                <t>Acceptable Response Types: The extension value <bcp14>MUST</bcp14> be encoded as follows.</t>
              </li>
            </ul>
            <sourcecode type="cddl" name="c509ocsp.cddl"><![CDATA[
AcceptableResponseTypes = [ + int]
]]></sourcecode>
            <t>The integers in <tt>AcceptableResponseTypes</tt> form a sorted list of preferred <tt>C509OCSPResponse</tt> types, in descending order of preference, that the requestor is willing to accept.  This document defines types 0 (<tt>C509ErrorOCSPResponse</tt>), 1 (<tt>C509BasicOCSPResponse</tt>), and 2 (<tt>C509SimpleOCSPResponse</tt>).  Type 0 (<tt>C509ErrorOCSPResponse</tt>) is always implicitly supported and does not need to be listed.  When this extension is absent, an OCSP server responding to a <tt>C509UnsignedOCSPRequest</tt> or <tt>C509SignedOCSPRequest</tt> <bcp14>MUST</bcp14> reply with a <tt>C509BasicOCSPResponse</tt> (type 1); an OCSP server responding to a <tt>C509SimpleOCSPRequest</tt> <bcp14>MUST</bcp14> reply with a <tt>C509SimpleOCSPResponse</tt> (type 2).  If <tt>AcceptableResponseTypes</tt> contains type 2 but not type 1, and the corresponding request contains entries for two or more certificates, the server <bcp14>SHALL</bcp14> return a <tt>C509ErrorOCSPResponse</tt> with <tt>responseStatus</tt> set to <tt>malformedRequest</tt> (1), since <tt>C509SimpleOCSPResponse</tt> can only carry status for a single certificate.</t>
            <ul spacing="normal">
              <li>
                <t>Preferred Signature Algorithms: The extension value <bcp14>MUST</bcp14> be encoded as follows.</t>
              </li>
            </ul>
            <sourcecode type="cddl" name="c509ocsp.cddl"><![CDATA[
PreferredSignatureAlgorithm = (
  sigIdentifier        : IntAlgorithmIdentifier,
  pubKeyAlgIdentifiers : [ 2* IntAlgorithmIdentifier ]
                         / IntAlgorithmIdentifier
                         / null,
)

PreferredSignatureAlgorithms = [ + PreferredSignatureAlgorithm ]
]]></sourcecode>
            <t>The <tt>sigIdentifier</tt> field carries the signature algorithm identifier.  The <tt>pubKeyAlgIdentifiers</tt> field carries the public key algorithm identifier and <bcp14>MUST</bcp14> be one of:</t>
            <ul spacing="normal">
              <li>
                <t>a CBOR array of two or more <tt>IntAlgorithmIdentifier</tt> values, sorted in descending order of preference, when the requestor is willing to accept any of the listed public key algorithms as a match for this signature algorithm preference (e.g., to express hybrid or multi-algorithm key policies); the first entry in the array represents the most preferred public key algorithm,</t>
              </li>
              <li>
                <t>a single <tt>IntAlgorithmIdentifier</tt> value, when exactly one public key algorithm is acceptable, or</t>
              </li>
              <li>
                <t><tt>null</tt>, when the public key algorithm is unconstrained or implied by <tt>sigIdentifier</tt>.</t>
              </li>
            </ul>
            <t><tt>PreferredSignatureAlgorithms</tt> <bcp14>MUST</bcp14> be sorted in descending order of preference; the first entry represents the most preferred algorithm combination.  Since <tt>PreferredSignatureAlgorithm</tt> is a CDDL group, the fields of each entry are inlined in the array rather than wrapped in a nested array.</t>
            <ul spacing="normal">
              <li>
                <t>TN Query: The extension value <bcp14>MUST</bcp14> be encoded as follows.</t>
              </li>
            </ul>
            <sourcecode type="cddl" name="c509ocsp.cddl"><![CDATA[
TNQuery = text .size (1..15)
]]></sourcecode>
            <t>The <tt>TNQuery</tt> extension carries a telephone number string conforming to the TelephoneNumber ASN.1 type (<xref section="3" sectionFormat="comma" target="RFC8226"/>).  When included in single request extensions, it specifies the telephone number for which the OCSP query is being performed (typically the number from the "orig" field of a PASSporT being validated).</t>
            <t>This extension is allowed only in the single-request extensions per <xref target="I-D.ietf-stir-certificates-ocsp"/>.</t>
          </section>
        </section>
        <section anchor="pem-representation-2">
          <name>PEM Representation</name>
          <t>The CBOR-encoded C509 OCSP response is first Base64-encoded and then wrapped between "-----BEGIN C509 OCSP RESPONSE-----" and "-----END C509 OCSP RESPONSE-----", following the framework of <xref target="RFC7468"/>.</t>
          <figure anchor="fig-pem-c509-ocsp-resp">
            <name>C509 OCSP Response PEM Encoding</name>
            <artwork><![CDATA[
-----BEGIN C509 OCSP RESPONSE-----
(base64-encoded CBOR C509 OCSP Response)
-----END C509 OCSP RESPONSE-----
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="cert-type-interop">
        <name>Certificate Type Interoperability</name>
        <t>C509 OCSP uses a single set of request and response structures that handles both C509 and X.509 certificates without modification.  All participants (requestor, responder, issuer) are identified by a hash over their certificate rather than by type-specific fields such as a Subject distinguished name, SubjectKeyIdentifier, or the X.509 <tt>ResponderID</tt> CHOICE (<tt>byName</tt> or <tt>byKey</tt>).  Because a hash applies uniformly regardless of the certificate encoding, the same OCSP structures accommodate C509 certificates (CBOR-encoded), X.509 certificates (DER-encoded), and any future certificate types.</t>
        <t>The only per-type differences are in how identity hashes are computed and how certificate chains are carried:</t>
        <table anchor="tab-certtypeinterop">
          <name>Per-type differences in C509 OCSP identity fields</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">C509 certificate</th>
              <th align="left">X.509 certificate</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>issuerCertHash</tt></td>
              <td align="left">Hash of CBOR-encoded <tt>C509Certificate</tt></td>
              <td align="left">Hash of DER-encoded X.509 certificate</td>
            </tr>
            <tr>
              <td align="left">
                <tt>requestorCertHash</tt></td>
              <td align="left">Hash of CBOR-encoded <tt>C509Certificate</tt></td>
              <td align="left">Hash of DER-encoded X.509 certificate</td>
            </tr>
            <tr>
              <td align="left">
                <tt>responderCertHash</tt></td>
              <td align="left">Hash of CBOR-encoded <tt>C509Certificate</tt></td>
              <td align="left">Hash of DER-encoded X.509 certificate</td>
            </tr>
            <tr>
              <td align="left">
                <tt>requestorCerts</tt> / <tt>responderCerts</tt></td>
              <td align="left">
                <tt>COSE_C509</tt></td>
              <td align="left">
                <tt>#6.121(COSE_X509)</tt></td>
            </tr>
          </tbody>
        </table>
        <t>In this table, "C509 certificate" refers to a natively signed C509 certificate (<tt>c509CertificateType</tt> = 2).  A CBOR re-encoded X.509 certificate (<tt>c509CertificateType</tt> = 3) is treated as an X.509 certificate: its identity hash <bcp14>MUST</bcp14> be computed over the DER-encoded X.509 certificate.</t>
        <t>In a hybrid deployment where the responder holds an X.509 certificate, <tt>responderCertHash</tt> contains the hash of the DER-encoded X.509 certificate and <tt>responderCerts</tt> carries a <tt>#6.121(COSE_X509)</tt> chain.  In a deployment using C509 certificates throughout, all identity hashes are computed over CBOR-encoded certificates and certificate chains are carried as <tt>COSE_C509</tt>.  The <tt>hashAlgorithm</tt> field at the top level of each request or response structure governs all hashes within that structure.</t>
      </section>
      <section anchor="ocsp-stapling">
        <name>OCSP Stapling in TLS</name>
        <t>In standard TLS certificate status stapling (see the <tt>status_request</tt> extension, <xref target="RFC9846"/>), the stapled OCSP response is a DER-encoded <tt>OCSPResponse</tt>.  To allow C509 OCSP stapling, this document defines a new TLS <tt>CertificateStatusType</tt> value (see <xref section="8" sectionFormat="comma" target="RFC6066"/>):</t>
        <table anchor="tab-tlsstaple">
          <name>TLS CertificateStatusType for C509 OCSP</name>
          <thead>
            <tr>
              <th align="center">Value</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">TBD1</td>
              <td align="left">c509_ocsp</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>When <tt>CertificateStatusType</tt> is <tt>c509_ocsp</tt>, the <tt>status</tt> field contains a CBOR-encoded <tt>C509OCSPResponse</tt> instead of a DER-encoded <tt>OCSPResponse</tt>.</t>
      </section>
    </section>
    <section anchor="sec-implementation-status" removeInRFC="true">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: Please remove this section before publication.  When deleting this section, please also delete RFC 7942 from the references of this document.</t>
      <t>(Boilerplate as per <xref section="2.1" sectionFormat="of" target="RFC7942"/>:)</t>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -22?>
      </t>
      <section anchor="sec-implementation-1">
        <name>Implementation #1</name>
        <ul spacing="normal">
          <li>
            <t>Organization: RISE AB</t>
          </li>
          <li>
            <t>Implementation: c509rev, available in the <tt>c509rev</tt> directory of the GitHub repository of this document (https://github.com/lijun-nio/idc509rev)</t>
          </li>
          <li>
            <t>Description: A reference implementation of the C509 CRL and C509 OCSP structures specified in this document, written in Rust.</t>
          </li>
          <li>
            <t>Implementation's level of maturity: Prototype.  Intended for testing and reference purposes, not for production use.</t>
          </li>
          <li>
            <t>Coverage:
            </t>
            <ul spacing="normal">
              <li>
                <t>C509 CRL, including the compact <tt>revokedCertsList</tt> encoding with fixed-length revoked-certificate and removed-from-CRL entries.</t>
              </li>
              <li>
                <t>C509 OCSP requests of all defined types (simple, unsigned, and signed).  The signed-request variants carrying the requestor's certificate or certificate chain are supported only as an opaque pass-through.</t>
              </li>
              <li>
                <t>C509 OCSP responses of all defined types (error, basic, and simple).</t>
              </li>
              <li>
                <t>The hash algorithms SHA-256, SHA-384, and SHA-512, including truncated identity hashes.</t>
              </li>
              <li>
                <t>Time encoding, including the delta encodings used in OCSP.</t>
              </li>
              <li>
                <t>Signing and signature verification with Ed25519 and ECDSA with secp256r1 and SHA-256.</t>
              </li>
              <li>
                <t>PEM textual representation of C509 CRLs and C509 OCSP messages, as specified in this document.</t>
              </li>
              <li>
                <t>Names are supported only in the single common-name text form.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Version compatibility: draft-liao-cose-c509-revocation-00</t>
          </li>
          <li>
            <t>Interoperability: The encoder output matches the examples in this document byte for byte (for signed objects, the to-be-signed part), and all examples successfully round-trip through decoding and re-encoding.  No interoperability testing with independent implementations has been performed yet.</t>
          </li>
          <li>
            <t>Licensing: See the repository of this document.</t>
          </li>
          <li>
            <t>Contact: Joel Höglund (joel.hoglund@ri.se)</t>
          </li>
        </ul>
      </section>
      <section anchor="sec-implementation-2">
        <name>Implementation #2</name>
        <ul spacing="normal">
          <li>
            <t>Organization: NIO Inc.</t>
          </li>
          <li>
            <t>Implementation: Internal project, not publicly available</t>
          </li>
          <li>
            <t>Description: An implementation of the C509 CRL and C509 OCSP structures specified in this document, written in Java.</t>
          </li>
          <li>
            <t>Implementation's level of maturity: Prototype.</t>
          </li>
          <li>
            <t>Coverage: All structures and features specified in this document.</t>
          </li>
          <li>
            <t>Version compatibility: draft-liao-cose-c509-revocation-00</t>
          </li>
          <li>
            <t>Interoperability: This implementation was used to produce the examples in the appendices of this document.</t>
          </li>
          <li>
            <t>Licensing: Internal use only.</t>
          </li>
          <li>
            <t>Contact: Lijun Liao (lijun.liao@nio.io)</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC5280"/>, <xref target="RFC6960"/>, <xref target="I-D.ietf-cose-cbor-encoded-cert"/>, and <xref section="10" sectionFormat="comma" target="RFC8949"/> apply.  This section covers the considerations specific to this document.</t>
      <section anchor="sec-signature">
        <name>Signature Verification</name>
        <t>The signatures of C509 CRLs and of signed C509 OCSP messages cover all fields except <tt>signatureValue</tt>, including <tt>signatureAlgorithm</tt> and <tt>requestorCerts</tt> or <tt>responderCerts</tt>.  This prevents algorithm and certificate-chain substitution, but does not replace the validation of <xref target="RFC5280"/> and <xref target="RFC6960"/>: the verifier <bcp14>MUST</bcp14> check that <tt>signatureAlgorithm</tt> matches the signer's public key, <bcp14>MUST</bcp14> validate the signer's certificate chain (a transported chain is only a hint for path construction), and <bcp14>MUST</bcp14> verify that the signer is authorized, as specified in <xref section="4.2.2.2" sectionFormat="comma" target="RFC6960"/> for OCSP responses and in <xref section="6.3" sectionFormat="comma" target="RFC5280"/> for CRLs.  The signature <bcp14>SHOULD</bcp14> be verified over the bytes as received rather than over a re-encoding.</t>
        <t><tt>C509ErrorOCSPResponse</tt> and <tt>C509CRLInfo</tt> (<xref target="crlinfo"/>) are not signed.  An error response <bcp14>MUST NOT</bcp14> be interpreted as status information about any certificate.  A <tt>C509CRLInfo</tt> <bcp14>MUST NOT</bcp14> be used for revocation or freshness decisions unless it was obtained over a channel that authenticates the CRL issuer.</t>
      </section>
      <section anchor="sec-truncated-hash">
        <name>Truncated Hash Identifiers</name>
        <t><tt>HashId8</tt> (<xref target="cert-identification"/>) only selects a certificate and does not authenticate it; security relies on the signature verification in <xref target="sec-signature"/>.  A relying party <bcp14>MUST</bcp14> match a response to its request using hash values it has computed itself from the certificates it holds.  A receiver that finds several certificates matching a <tt>HashId8</tt> <bcp14>MUST NOT</bcp14> assume that a particular one is intended.  An OCSP responder for which an <tt>issuerCertHash</tt> matches more than one of its issuers, or a <tt>serialNumberHash</tt> matches more than one serial number, <bcp14>MUST NOT</bcp14> return the status <tt>good</tt> for that entry.</t>
        <t>Since serial numbers are chosen by the CA, an attacker cannot mount a collision attack on <tt>serialNumberHash</tt>; making the status of one certificate appear as that of another requires a second preimage of about 2^160 operations.  The serial number <bcp14>MUST</bcp14> be normalized as specified in <xref target="cert-identification"/> before hashing; otherwise, a revoked certificate is not found.</t>
      </section>
      <section anchor="sec-privacy">
        <name>Privacy</name>
        <t><tt>serialNumberHash</tt> hides the queried certificate only from observers that do not know its serial number.  Serial numbers are not secret, and the hash is unsalted, so an observer with a set of candidate serial numbers can identify the queried certificate and link repeated queries; <tt>issuerCertHash</tt> reveals the issuer.  Where this matters, requests and responses <bcp14>SHOULD</bcp14> be protected, e.g., by DTLS or OSCORE, or OCSP stapling (<xref target="ocsp-stapling"/>) <bcp14>SHOULD</bcp14> be used.</t>
      </section>
      <section anchor="sec-freshness">
        <name>Freshness and Replay</name>
        <t>A relying party <bcp14>MUST</bcp14> check the validity interval of an OCSP response (<xref section="4.2.2.1" sectionFormat="comma" target="RFC6960"/>) and, if it sent a nonce, that the response carries the same nonce.  Without a nonce, a response can be replayed until it expires; relying parties without a reliable clock <bcp14>SHOULD</bcp14> use nonces.</t>
        <t>The nonce is 16 to 32 bytes long (<xref target="C509UnsignedOCSPRequest"/>), whereas <xref target="RFC8954"/> requires new clients to use 32 octets in the Nonce extension of <xref target="RFC6960"/>.  A replay succeeds only if the attacker has obtained, from the OCSP responder, a response for the nonce that the relying party later chooses.  With N such responses and M requests, the probability is about N * M / 2^128 for a 16-byte nonce, i.e., about 2^-48 even for N = M = 2^40, and the attack can be neither performed offline nor accelerated by a quantum computer.  A 32-byte nonce adds no practical security but 16 bytes to each request and response, which is significant on constrained links.</t>
        <t>A relying party <bcp14>MUST NOT</bcp14> use a CRL after <tt>thisUpdate + nextUpdate</tt>, <bcp14>SHOULD</bcp14> reject a CRL whose <tt>crlNumber</tt> is lower than that of a CRL previously accepted for the same scope, and <bcp14>MUST</bcp14> combine a delta CRL only with a full CRL whose <tt>crlNumber</tt> is at least <tt>baseCrlNumber</tt> (<xref section="5.2.4" sectionFormat="comma" target="RFC5280"/>).</t>
      </section>
      <section anchor="sec-completeness">
        <name>Completeness of CRLs</name>
        <ul spacing="normal">
          <li>
            <t>Certificates whose serial number is not a positive integer of at most 20 bytes, as required by <xref section="4.1.2.2" sectionFormat="comma" target="RFC5280"/>, are not supported by this document; C509 CRLs cannot list some of them, and relying parties <bcp14>MUST</bcp14> reject them.</t>
          </li>
          <li>
            <t>When <tt>dateLength</tt> is 0, no revocation date is available, and a listed certificate <bcp14>MUST</bcp14> be treated as revoked at all times.</t>
          </li>
          <li>
            <t>When bit 1 of <tt>flags</tt> is not set, no reason code is available, and the reason <bcp14>MUST</bcp14> be treated as <tt>unspecified</tt>.</t>
          </li>
          <li>
            <t>The issuer <bcp14>MUST</bcp14> be compared in the representation that matches the certificate type (<tt>Name</tt> or tag 121 with a DER-encoded name).</t>
          </li>
        </ul>
        <t>Implementations <bcp14>MUST</bcp14> reject a CRL in which the length of <tt>revokedCerts</tt> or <tt>removedFromCRLCerts</tt> is not a multiple of the entry length.  An implementation that uses binary search based on bit 0 of <tt>flags</tt> <bcp14>MUST</bcp14> verify that the entries are sorted, since otherwise a revoked certificate can be missed.</t>
      </section>
      <section anchor="sec-parsing">
        <name>Parsing and Denial of Service</name>
        <t>Messages are parsed before their signature is verified, and unsigned requests are never authenticated.  Implementations <bcp14>MUST</bcp14> reject input that does not conform to the CDDL, <bcp14>SHOULD</bcp14> limit message sizes and the number of entries, and <bcp14>MUST</bcp14> reject input for which computing an absolute time from a base time and an offset overflows.</t>
        <t>Answering a request may require a signature, and responses are larger than requests, which exposes OCSP responders to resource exhaustion and to abuse for traffic amplification over UDP (<xref section="11.3" sectionFormat="comma" target="RFC7252"/>).  OCSP responders <bcp14>SHOULD</bcp14> rate-limit requests and <bcp14>MAY</bcp14> require signed requests.</t>
        <t>A stapled <tt>C509OCSPResponse</tt> (<xref target="ocsp-stapling"/>) <bcp14>MUST</bcp14> be validated as if obtained directly from the OCSP responder.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has the following actions for IANA.</t>
      <t>Note to RFC Editor: Please replace all occurrences of "[RFC-XXXX]" with the RFC number of this specification and delete this paragraph.</t>
      <section anchor="crltypes">
        <name>C509 CRL Types Registry</name>
        <t>IANA is requested to create a new registry titled "C509 CRL Types" under the registry group "CBOR Encoded X.509 (C509)". The fields of the registry are Value, Description, and Reference, where Value is an integer in the interval [-32768, 32767], and the other columns are text strings. It is mandatory to specify content in all columns. For values in the interval [-24, 23], the registration procedure is "IETF Review with Expert Review", and for all other values, the registration procedure is "Expert Review". The initial contents of the registry are:</t>
        <figure anchor="fig-crltypes">
          <name>C509 CRL Types</name>
          <artwork align="center"><![CDATA[
+-------+-------------------------------+-------------------+
| Value | Description                   | Reference         |
+=======+===============================+===================+
|     0 | C509CRL                       | [[this document]] |
+-------+-------------------------------+-------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="ocspreqtypes">
        <name>C509 OCSP Request Types Registry</name>
        <t>IANA is requested to create a new registry titled "C509 OCSP Request Types" under the registry group "CBOR Encoded X.509 (C509)". The fields of the registry are Value, Description, and Reference, where Value is an integer in the interval [-32768, 32767], and the other columns are text strings. It is mandatory to specify content in all columns. For values in the interval [-24, 23], the registration procedure is "IETF Review with Expert Review", and for all other values, the registration procedure is "Expert Review". The initial contents of the registry are:</t>
        <figure anchor="fig-ocspreqtypes">
          <name>C509 OCSP Request Types</name>
          <artwork align="center"><![CDATA[
+-------+-------------------------------+-------------------+
| Value | Description                   | Reference         |
+=======+===============================+===================+
|     0 | C509 Unsigned OCSP Request    | [[this document]] |
+-------+-------------------------------+-------------------+
|     1 | C509 Signed OCSP Request      | [[this document]] |
+-------+-------------------------------+-------------------+
|     2 | C509 Simple OCSP Request      | [[this document]] |
+-------+-------------------------------+-------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="ocspresptypes">
        <name>C509 OCSP Response Types Registry</name>
        <t>IANA is requested to create a new registry titled "C509 OCSP Response Types" under the registry group "CBOR Encoded X.509 (C509)". The fields of the registry are Value, Description, and Reference, where Value is an integer in the interval [-32768, 32767], and the other columns are text strings. It is mandatory to specify content in all columns. For values in the interval [-24, 23], the registration procedure is "IETF Review with Expert Review", and for all other values, the registration procedure is "Expert Review". The initial contents of the registry are:</t>
        <figure anchor="fig-ocspresptypes">
          <name>C509 OCSP Response Types</name>
          <artwork align="center"><![CDATA[
+-------+-------------------------------+-------------------+
| Value | Description                   | Reference         |
+=======+===============================+===================+
|     0 | C509 Error OCSP Response      | [[this document]] |
+-------+-------------------------------+-------------------+
|     1 | C509 Basic OCSP Response      | [[this document]] |
+-------+-------------------------------+-------------------+
|     2 | C509 Simple OCSP Response     | [[this document]] |
+-------+-------------------------------+-------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="extension-identifiers-registry">
        <name>Extension Identifiers Registry</name>
        <t>IANA is requested to assign the new values shown in <xref target="tab-extensions-iana"/> in the "C509 Extensions" registry under the new registry group "CBOR Encoded X.509 (C509)" defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
        <figure anchor="tab-extensions-iana">
          <name>C509 extension identifier allocation requests</name>
          <artwork><![CDATA[
+-------+----------------------------------------------------------+
| Value | Extension                                                |
+=======+==========================================================+
| TBD2  | Name:            Acceptable Response Types               |
|       | Identifiers:     id-pkix-ocsp-response                   |
|       | OID:             1.3.6.1.5.5.7.48.1.4                    |
|       | DER:             06 09 2B 06 01 05 05 07 30 01 04        |
|       | Comments:        RFC 6960                                |
|       | extensionValue:  AcceptableResponseTypes                 |
|       | Reference:       [[this document]]                       |
+-------+----------------------------------------------------------+
| TBD3  | Name:            Preferred Signature Algorithms          |
|       | Identifiers:     id-pkix-ocsp-pref-sig-algs              |
|       | OID:             1.3.6.1.5.5.7.48.1.8                    |
|       | DER:             06 09 2B 06 01 05 05 07 30 01 08        |
|       | Comments:        RFC 6960                                |
|       | extensionValue:  PreferredSignatureAlgorithms            |
|       | Reference:       [[this document]]                       |
+-------+----------------------------------------------------------+
| TBD4  | Name:            Expired Certificates on CRL             |
|       | Identifiers:     id-ce-expiredCertsOnCRL                 |
|       | OID:             2.5.29.60                               |
|       | DER:             06 03 55 1D 3C                          |
|       | Comments:        ITU-T X.509, Section 9.5.2.8            |
|       | extensionValue:  ExpiredCertsOnCRL                       |
|       | Reference:       [[this document]]                       |
+-------+----------------------------------------------------------+
| TBD6  | Name:            TN Query                                |
|       | Identifiers:     id-pkix-ocsp-stir-tn                    |
|       | OID:             1.3.6.1.5.5.7.48.1.10                   |
|       | DER:             06 09 2B 06 01 05 05 07 30 01 0A        |
|       | Comments:        draft-ietf-stir-certificates-ocsp       |
|       | extensionValue:  TNQuery                                 |
|       | Reference:       [[this document]]                       |
+-------+----------------------------------------------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="tls-certificatestatustype-registry">
        <name>TLS CertificateStatusType Registry</name>
        <t>IANA is requested to assign the value shown in <xref target="tab-tls-certstatus-iana"/> in the "TLS Certificate Status Types" registry under "Transport Layer Security (TLS) Extensions":</t>
        <table anchor="tab-tls-certstatus-iana">
          <name>TLS CertificateStatusType allocation request</name>
          <thead>
            <tr>
              <th align="center">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
              <th align="left">Comment</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">TBD1</td>
              <td align="left">c509_ocsp</td>
              <td align="left">[RFC-XXXX]</td>
              <td align="left">N/A</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-pem">
        <name>PEM Label Registry</name>
        <t>IANA is requested to register the following entries in the "Textual Encoding Label" registry under the registry group "PKIX Parameters" <xref target="RFC7468"/>:</t>
        <table anchor="tab-iana-pem">
          <name>PEM Label Registrations</name>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>C509 CRL</tt></td>
              <td align="left">[RFC-XXXX]</td>
            </tr>
            <tr>
              <td align="left">
                <tt>C509 OCSP REQUEST</tt></td>
              <td align="left">[RFC-XXXX]</td>
            </tr>
            <tr>
              <td align="left">
                <tt>C509 OCSP RESPONSE</tt></td>
              <td align="left">[RFC-XXXX]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="media-type-application-registry">
        <name>Media Type Application Registry</name>
        <t>IANA is requested to assign the following entries in the "application" registry in the registry group "Media Types" with this document as reference.</t>
        <section anchor="media-type-applicationc509-crlcbor">
          <name>Media Type application/c509-crl+cbor</name>
          <t>When the application/c509-crl+cbor media type is used, the data is a C509CRL structure.  A stored file format is defined with "magic number" TBD11 using the reserved CBOR tag 55799 and the Content-Format TBD7, enveloped as described in <xref section="2.2" sectionFormat="comma" target="RFC9277"/>.</t>
          <t>Subtype name: c509-crl+cbor</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: binary</t>
          <t>Security considerations: See <xref target="security"/> of [RFC-XXXX].</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: [RFC-XXXX]</t>
          <t>Applications that use this media type: Any MIME-compliant transport</t>
          <t>Fragment identifier considerations: N/A</t>
          <t>Additional information:</t>
          <ul spacing="normal">
            <li>
              <t>Deprecated alias names for this type: N/A</t>
            </li>
            <li>
              <t>Magic number(s): TBD11</t>
            </li>
            <li>
              <t>File extension(s): .c509</t>
            </li>
            <li>
              <t>Macintosh file type code(s): N/A</t>
            </li>
          </ul>
          <t>Person &amp; email address to contact for further information: iesg@ietf.org</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on usage: N/A</t>
          <t>Author: COSE WG</t>
          <t>Change controller: IETF</t>
        </section>
        <section anchor="media-type-applicationc509-crlinfocbor">
          <name>Media Type application/c509-crlinfo+cbor</name>
          <t>When the application/c509-crlinfo+cbor media type is used, the data is a C509CRLInfo structure.  A stored file format is defined with "magic number" TBD12 using the reserved CBOR tag 55799 and the Content-Format TBD8, enveloped as described in <xref section="2.2" sectionFormat="comma" target="RFC9277"/>.</t>
          <t>Subtype name: c509-crlinfo+cbor</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: binary</t>
          <t>Security considerations: See <xref target="security"/> of [RFC-XXXX].</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: [RFC-XXXX]</t>
          <t>Applications that use this media type: Any MIME-compliant transport</t>
          <t>Fragment identifier considerations: N/A</t>
          <t>Additional information:</t>
          <ul spacing="normal">
            <li>
              <t>Deprecated alias names for this type: N/A</t>
            </li>
            <li>
              <t>Magic number(s): TBD12</t>
            </li>
            <li>
              <t>File extension(s): .c509</t>
            </li>
            <li>
              <t>Macintosh file type code(s): N/A</t>
            </li>
          </ul>
          <t>Person &amp; email address to contact for further information: iesg@ietf.org</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on usage: N/A</t>
          <t>Author: COSE WG</t>
          <t>Change controller: IETF</t>
        </section>
        <section anchor="media-type-applicationc509-ocspreqcbor">
          <name>Media Type application/c509-ocspreq+cbor</name>
          <t>When the application/c509-ocspreq+cbor media type is used, the data is a C509OCSPRequest structure.  A stored file format is defined with "magic number" TBD13 using the reserved CBOR tag 55799 and the Content-Format TBD9, enveloped as described in <xref section="2.2" sectionFormat="comma" target="RFC9277"/>.</t>
          <t>Subtype name: c509-ocspreq+cbor</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: binary</t>
          <t>Security considerations: See <xref target="security"/> of [RFC-XXXX].</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: [RFC-XXXX]</t>
          <t>Applications that use this media type: OCSP clients</t>
          <t>Fragment identifier considerations: N/A</t>
          <t>Additional information:</t>
          <ul spacing="normal">
            <li>
              <t>Deprecated alias names for this type: N/A</t>
            </li>
            <li>
              <t>Magic number(s): TBD13</t>
            </li>
            <li>
              <t>File extension(s): .c509</t>
            </li>
            <li>
              <t>Macintosh file type code(s): N/A</t>
            </li>
          </ul>
          <t>Person &amp; email address to contact for further information: iesg@ietf.org</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on usage: N/A</t>
          <t>Author: COSE WG</t>
          <t>Change controller: IETF</t>
        </section>
        <section anchor="media-type-applicationc509-ocsprespcbor">
          <name>Media Type application/c509-ocspresp+cbor</name>
          <t>When the application/c509-ocspresp+cbor media type is used, the data is a C509OCSPResponse structure.  A stored file format is defined with "magic number" TBD14 using the reserved CBOR tag 55799 and the Content-Format TBD10, enveloped as described in <xref section="2.2" sectionFormat="comma" target="RFC9277"/>.</t>
          <t>Subtype name: c509-ocspresp+cbor</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: binary</t>
          <t>Security considerations: See <xref target="security"/> of [RFC-XXXX].</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: [RFC-XXXX]</t>
          <t>Applications that use this media type: OCSP servers</t>
          <t>Fragment identifier considerations: N/A</t>
          <t>Additional information:</t>
          <ul spacing="normal">
            <li>
              <t>Deprecated alias names for this type: N/A</t>
            </li>
            <li>
              <t>Magic number(s): TBD14</t>
            </li>
            <li>
              <t>File extension(s): .c509</t>
            </li>
            <li>
              <t>Macintosh file type code(s): N/A</t>
            </li>
          </ul>
          <t>Person &amp; email address to contact for further information: iesg@ietf.org</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on usage: N/A</t>
          <t>Author: COSE WG</t>
          <t>Change controller: IETF</t>
        </section>
      </section>
      <section anchor="content-format">
        <name>CoAP Content-Formats Registry</name>
        <t>IANA is requested to add entries for "application/c509-crl+cbor", "application/c509-crlinfo+cbor", "application/c509-ocspreq+cbor" and "application/c509-ocspresp+cbor" to the "CoAP Content-Formats" registry in the registry group "Constrained RESTful Environments (CoRE) Parameters".</t>
        <artwork><![CDATA[
+-------------------------+---------+-------+------------+
| Content                 | Content | ID    | Reference  |
| Type                    | Coding  |       |            |
+=========================+=========+=======+============+
| application/            | -       | TBD7  | [[this     |
| c509-crl+cbor           |         |       | document]] |
+-------------------------+---------+-------+------------+
| application/            |         | TBD8  | [[this     |
| c509-crlinfo+cbor       | -       |       | document]] |
+-------------------------+---------+-------+------------+
| application/            | -       | TBD9  | [[this     |
| c509-ocspreq+cbor       |         |       | document]] |
+-------------------------+---------+-------+------------+
| application/            | -       | TBD10 | [[this     |
| c509-ocspresp+cbor      |         |       | document]] |
+-------------------------+---------+-------+------------+
]]></artwork>
      </section>
      <section anchor="expert-review-guidelines">
        <name>Expert Review Guidelines</name>
        <t>TODO</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC6960">
          <front>
            <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="M. Myers" initials="M." surname="Myers"/>
            <author fullname="R. Ankney" initials="R." surname="Ankney"/>
            <author fullname="A. Malpani" initials="A." surname="Malpani"/>
            <author fullname="S. Galperin" initials="S." surname="Galperin"/>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents. This document obsoletes RFCs 2560 and 6277. It also updates RFC 5912.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6960"/>
          <seriesInfo name="DOI" value="10.17487/RFC6960"/>
        </reference>
        <reference anchor="RFC7120">
          <front>
            <title>Early IANA Allocation of Standards Track Code Points</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <date month="January" year="2014"/>
            <abstract>
              <t>This memo describes the process for early allocation of code points by IANA from registries for which "Specification Required", "RFC Required", "IETF Review", or "Standards Action" policies apply. This process can be used to alleviate the problem where code point allocation is needed to facilitate desired or required implementation and deployment experience prior to publication of an RFC, which would normally trigger code point allocation. The procedures in this document are intended to apply only to IETF Stream documents.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="100"/>
          <seriesInfo name="RFC" value="7120"/>
          <seriesInfo name="DOI" value="10.17487/RFC7120"/>
        </reference>
        <reference anchor="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="S. Leonard" initials="S." surname="Leonard"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS). The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed. This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7468"/>
          <seriesInfo name="DOI" value="10.17487/RFC7468"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8226">
          <front>
            <title>Secure Telephone Identity Credentials: Certificates</title>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="February" year="2018"/>
            <abstract>
              <t>In order to prevent the impersonation of telephone numbers on the Internet, some kind of credential system needs to exist that cryptographically asserts authority over telephone numbers. This document describes the use of certificates in establishing authority over telephone numbers, as a component of a broader architecture for managing telephone numbers as identities in protocols like SIP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8226"/>
          <seriesInfo name="DOI" value="10.17487/RFC8226"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8742">
          <front>
            <title>Concise Binary Object Representation (CBOR) Sequences</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq". A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
              <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation. This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8742"/>
          <seriesInfo name="DOI" value="10.17487/RFC8742"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9054">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Hash Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>The CBOR Object Signing and Encryption (COSE) syntax (see RFC 9052) does not define any direct methods for using hash algorithms. There are, however, circumstances where hash algorithms are used, such as indirect signatures, where the hash of one or more contents are signed, and identification of an X.509 certificate or other object by the use of a fingerprint. This document defines hash algorithms that are identified by COSE algorithm identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9054"/>
          <seriesInfo name="DOI" value="10.17487/RFC9054"/>
        </reference>
        <reference anchor="RFC9360">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>The CBOR Object Signing and Encryption (COSE) message structure uses references to keys in general. For some algorithms, additional properties are defined that carry parameters relating to keys as needed. The COSE Key structure is used for transporting keys outside of COSE messages. This document extends the way that keys can be identified and transported by providing attributes that refer to or contain X.509 certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9360"/>
          <seriesInfo name="DOI" value="10.17487/RFC9360"/>
        </reference>
        <reference anchor="RFC9682">
          <front>
            <title>Updates to the Concise Data Definition Language (CDDL) Grammar</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="November" year="2024"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), as defined in RFCs 8610 and 9165, provides an easy and unambiguous way to express structures for protocol messages and data formats that are represented in Concise Binary Object Representation (CBOR) or JSON.</t>
              <t>This document updates RFC 8610 by addressing related errata reports and making other small fixes for the ABNF grammar defined for CDDL.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9682"/>
          <seriesInfo name="DOI" value="10.17487/RFC9682"/>
        </reference>
        <reference anchor="RFC9277">
          <front>
            <title>On Stable Storage for Items in Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document defines a stored ("file") format for Concise Binary Object Representation (CBOR) data items that is friendly to common systems that recognize file types, such as the Unix file(1) command.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9277"/>
          <seriesInfo name="DOI" value="10.17487/RFC9277"/>
        </reference>
        <reference anchor="RFC9846">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>University of Glasgow</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>IN Groupe</organization>
            </author>
            <author fullname="Lijun Liao" initials="L." surname="Liao">
              <organization>NIO Inc.</organization>
            </author>
            <date day="24" month="September" year="2026"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and common certificate
   profiles, and it is extensible.

   Two types of C509 certificates are defined.  One type is an
   invertible CBOR re-encoding of DER-encoded X.509 certificates with
   the signature field copied from the DER encoding.  The other type is
   identical except that the signature is computed over the CBOR
   encoding instead of the DER encoding, thereby avoiding the use of
   ASN.1.  Both types of certificates have the same semantics as X.509
   while providing comparable size reduction.

   This document also specifies CBOR-encoded data structures for
   certification requests and certification request templates, new COSE
   headers, as well as a TLS certificate type and a file format for
   C509.  This document updates RFC 6698 by extending the TLSA selectors
   registry to include C509 certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-21"/>
        </reference>
        <reference anchor="I-D.ietf-stir-certificates-ocsp">
          <front>
            <title>OCSP Usage for Secure Telephone Identity Certificates</title>
            <author fullname="Jon Peterson" initials="J." surname="Peterson">
              <organization>TransUnion, Inc.</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="10" month="June" year="2026"/>
            <abstract>
              <t>   When certificates are used as credentials to attest the assignment or
   ownership of telephone numbers, some mechanism is required to convey
   certificate freshness to relying parties.  Certificate Revocation
   Lists (CRLs) are commonly used for this purpose, but for certain
   classes of certificates, including delegate certificates conveying
   their scope of authority by-reference in Secure Telephone Identity
   Revisited (STIR) systems, they may not be aligned with the needs of
   relying parties.  This document specifies the use of the Online
   Certificate Status Protocol (OCSP) as a means of retrieving real-time
   status information about such certificates, defining new extensions
   to compensate for the dynamism of telephone number assignments.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-stir-certificates-ocsp-14"/>
        </reference>
        <reference anchor="IANA.cose" target="https://www.iana.org/assignments/cose">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <author fullname="W. Ford" initials="W." surname="Ford"/>
            <author fullname="D. Solo" initials="D." surname="Solo"/>
            <date month="May" year="2002"/>
            <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"/>
          <seriesInfo name="DOI" value="10.17487/RFC3280"/>
        </reference>
        <reference anchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7925">
          <front>
            <title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t>
              <t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery. The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7925"/>
          <seriesInfo name="DOI" value="10.17487/RFC7925"/>
        </reference>
        <reference anchor="RFC8954">
          <front>
            <title>Online Certificate Status Protocol (OCSP) Nonce Extension</title>
            <author fullname="M. Sahni" initials="M." role="editor" surname="Sahni"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>This document specifies the updated format of the Nonce extension in the Online Certificate Status Protocol (OCSP) request and response messages. OCSP is used to check the status of a certificate, and the Nonce extension is used to cryptographically bind an OCSP response message to a particular OCSP request message. This document updates RFC 6960.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8954"/>
          <seriesInfo name="DOI" value="10.17487/RFC8954"/>
        </reference>
        <reference anchor="RFC9861">
          <front>
            <title>KangarooTwelve and TurboSHAKE</title>
            <author fullname="B. Viguier" initials="B." surname="Viguier"/>
            <author fullname="D. Wong" initials="D." role="editor" surname="Wong"/>
            <author fullname="G. Van Assche" initials="G." role="editor" surname="Van Assche"/>
            <author fullname="Q. Dang" initials="Q." role="editor" surname="Dang"/>
            <author fullname="J. Daemen" initials="J." role="editor" surname="Daemen"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This document defines four eXtendable-Output Functions (XOFs), hash functions with output of arbitrary length, named TurboSHAKE128, TurboSHAKE256, KT128, and KT256.</t>
              <t>All four functions provide efficient and secure hashing primitives, and the last two are able to exploit the parallelism of the implementation in a scalable way.</t>
              <t>This document is a product of the Crypto Forum Research Group. It builds up on the definitions of the permutations and of the sponge construction in NIST FIPS 202 and is meant to serve as a stable reference and an implementation guide.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9861"/>
          <seriesInfo name="DOI" value="10.17487/RFC9861"/>
        </reference>
        <reference anchor="POSIX" target="https://pubs.opengroup.org/onlinepubs/9699919799/">
          <front>
            <title>IEEE Standard for Information Technology--Portable Operating System Interface (POSIX(TM)) Base Specifications, Issue 7</title>
            <author>
              <organization/>
            </author>
            <date year="2018" month="January"/>
          </front>
        </reference>
        <reference anchor="CborMe" target="https://cbor.me/">
          <front>
            <title>CBOR Playground</title>
            <author initials="C." surname="Bormann">
              <organization/>
            </author>
            <date year="2018" month="May"/>
          </front>
        </reference>
        <reference anchor="CRLSets" target="https://www.chromium.org/Home/chromium-security/crlsets/">
          <front>
            <title>CRLSets - The Chromium Projects</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CRLite" target="https://github.com/mozilla/crlite">
          <front>
            <title>mozilla/crlite</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="TinyOCSP" target="https://doi.org/10.1016/j.jisa.2023.103424">
          <front>
            <title>Lightweight certificate revocation for low-power IoT with end-to-end security</title>
            <author initials="J." surname="Höglund">
              <organization/>
            </author>
            <author initials="M." surname="Furuhed">
              <organization/>
            </author>
            <author initials="S." surname="Raza">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="Journal of Information Security and Applications" value="73:103424"/>
          <seriesInfo name="DOI" value="10.1016/j.jisa.2023.103424"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 1392?>

<section anchor="examples">
      <name>Examples</name>
      <section anchor="overview-2">
        <name>Overview</name>
        <table anchor="tab-examples-overview">
          <name>Size comparison in examples</name>
          <thead>
            <tr>
              <th align="left">Section</th>
              <th align="left">Description</th>
              <th align="left">size(X509)</th>
              <th align="left">size(C509)</th>
              <th align="left">Size Reduction</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <xref target="exam-crl-no-revoked"/></td>
              <td align="left">CRL Example Without Revoked Certificates</td>
              <td align="left">147</td>
              <td align="left">120</td>
              <td align="left">18%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-crl-revoked"/></td>
              <td align="left">CRL Example With Revoked Certificates</td>
              <td align="left">335</td>
              <td align="left">177</td>
              <td align="left">47%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-delta-crl-revoked"/></td>
              <td align="left">Delta CRL Example With Revoked Certificates</td>
              <td align="left">335</td>
              <td align="left">160</td>
              <td align="left">52%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-indirect-crl-revoked"/></td>
              <td align="left">Indirect CRL Example With Revoked Certificates</td>
              <td align="left">409</td>
              <td align="left">202</td>
              <td align="left">51%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-simple-ocsp-req"/></td>
              <td align="left">Simple OCSP Request Example</td>
              <td align="left">150</td>
              <td align="left">51</td>
              <td align="left">66%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-unsigned-ocsp-req"/></td>
              <td align="left">Unsigned OCSP Request Example</td>
              <td align="left">475</td>
              <td align="left">132</td>
              <td align="left">72%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-signed-ocsp-req"/></td>
              <td align="left">Signed OCSP Request Example Without Requestor's Certificate</td>
              <td align="left">584</td>
              <td align="left">209</td>
              <td align="left">64%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-signed-ocsp-req-withcert"/></td>
              <td align="left">Signed OCSP Request Example With Requestor's Certificate</td>
              <td align="left">1035</td>
              <td align="left">420</td>
              <td align="left">59%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-signed-ocsp-req-withcertchain"/></td>
              <td align="left">Signed OCSP Request Example With Requestor's Certificate Chain</td>
              <td align="left">1371</td>
              <td align="left">625</td>
              <td align="left">54%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-error-ocsp-resp"/></td>
              <td align="left">Error OCSP Response Example</td>
              <td align="left">5</td>
              <td align="left">3</td>
              <td align="left">40%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-simple-ocsp-resp"/></td>
              <td align="left">Simple OCSP Response Example</td>
              <td align="left">336</td>
              <td align="left">140</td>
              <td align="left">58%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-basic-ocsp-resp"/></td>
              <td align="left">Basic OCSP Response Example Without Responder's Certificate</td>
              <td align="left">837</td>
              <td align="left">248</td>
              <td align="left">70%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-basic-ocsp-resp-withcert"/></td>
              <td align="left">Basic OCSP Response Example With Responder's Certificate</td>
              <td align="left">1181</td>
              <td align="left">446</td>
              <td align="left">62%</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="exam-basic-ocsp-resp-withcertchain"/></td>
              <td align="left">Basic OCSP Response Example With Responder's Certificate Chain</td>
              <td align="left">1517</td>
              <td align="left">651</td>
              <td align="left">57%</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="helper-keys-and-certificates">
        <name>Helper Keys and Certificates</name>
        <section anchor="ca-private-key-and-certificate">
          <name>CA Private Key and Certificate</name>
          <section anchor="ca-private-key">
            <name>CA Private Key</name>
            <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIDP+AdMbqXudBAN3YNAwoR0i3nl4IuoSSA6Hazy2oAKc
-----END PRIVATE KEY-----
]]></artwork>
          </section>
          <section anchor="ca-cert">
            <name>CA Certificate</name>
            <section anchor="plain-hex">
              <name>Plain Hex</name>
              <artwork><![CDATA[
8B0241010C73746573742063726C6F6373702D726F6F7463611A677485801A6B36EC
7F6F746573742063726C6F6373702D63610C58205EF8A355A001A7C50D2349470120
8131A4BB2AB920D40BFB0EE1F6AB28FF74008801542F45E78D2CAEDF368CDF53C390
05D492450E1056211860230107542DA3A403F7D2F4E0B3D8031A73BA8A839F557F0F
5840E50465D60C02A2111EF3FC6E44F2A36008765B552351F9A3F5B2AA7C76F1F05D
259847A4F4250B2E4B0AE2099762A2596D3CC1DB2CCD180AA0A2D0E191310B0F
]]></artwork>
            </section>
            <section anchor="textual-representation">
              <name>Textual Representation</name>
              <artwork><![CDATA[
Certificate
  TBSCertificate
    Certificate Type: 2
    Serial Number
      01
    Signature Algorithm: Ed25519 (12)
    Issuer : CN=test crlocsp-rootca
    Subject: CN=test crlocsp-ca
    Validity
      Not Before: 2025-01-01T00:00:00Z
      Not After : 2026-12-31T23:59:59Z
    Subject Public Key Info:
      algorithm: Ed25519 (12)
      Raw public key
        5e:f8:a3:55:a0:01:a7:c5:0d:23:49:47:01:20:81:31:
        a4:bb:2a:b9:20:d4:0b:fb:0e:e1:f6:ab:28:ff:74:00
    Extensions
      SubjectKeyIdentifier (1)
        2f:45:e7:8d:2c:ae:df:36:8c:df:53:c3:90:05:d4:92:
        45:0e:10:56
      KeyUsage (2), critical
        0x60: [keyCertSign, cRLSign]
      BasicConstraints (4), critical
        CA: true, pathLenConstraint: 1
      AuthorityKeyIdentifier (7)
        Key Identifier
          2d:a3:a4:03:f7:d2:f4:e0:b3:d8:03:1a:73:ba:8a:83:
          9f:55:7f:0f
  Signature Value
    e5:04:65:d6:0c:02:a2:11:1e:f3:fc:6e:44:f2:a3:60:
    08:76:5b:55:23:51:f9:a3:f5:b2:aa:7c:76:f1:f0:5d:
    25:98:47:a4:f4:25:0b:2e:4b:0a:e2:09:97:62:a2:59:
    6d:3c:c1:db:2c:cd:18:0a:a0:a2:d0:e1:91:31:0b:0f
]]></artwork>
            </section>
          </section>
        </section>
        <section anchor="crl-signer-private-key-and-certificate">
          <name>CRL Signer Private Key and Certificate</name>
          <section anchor="crl-signer-private-key">
            <name>CRL Signer Private Key</name>
            <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIOJ3HnsrBJ5g5Pb5oy7qlvijr3Wfx3ywAUvnmRV4354s
-----END PRIVATE KEY-----
]]></artwork>
          </section>
          <section anchor="crl-signer-cert">
            <name>CRL Signer Certificate</name>
            <section anchor="plain-hex-1">
              <name>Plain Hex</name>
              <artwork><![CDATA[
8B024212340C6F746573742063726C6F6373702D63611A6775D7001A69570A806A63
726C2D7369676E65720C5820C9BA1EC496DACB97AED087ADE390F398FBD477871EE9
203817EC0E31902789FF86015409E433582556550A27DB4A19BCE2D660884722B621
184007542F45E78D2CAEDF368CDF53C39005D492450E10565840D46E6A8F9FD53417
F36DFE56CBB8CACE0FC3E59ACBE72CD9916B3E4C5022D06D16CC9BF9AC54394037C9
5433644194FAE18FF783381959584A21BDC0E1C6CB0B
]]></artwork>
            </section>
            <section anchor="textual-representation-1">
              <name>Textual Representation</name>
              <artwork><![CDATA[
Certificate
  TBSCertificate
    Certificate Type: 2
    Serial Number
      12:34
    Signature Algorithm: Ed25519 (12)
    Issuer : CN=test crlocsp-ca
    Subject: CN=crl-signer
    Validity
      Not Before: 2025-01-02T00:00:00Z
      Not After : 2026-01-02T00:00:00Z
    Subject Public Key Info:
      algorithm: Ed25519 (12)
      Raw public key
        c9:ba:1e:c4:96:da:cb:97:ae:d0:87:ad:e3:90:f3:98:
        fb:d4:77:87:1e:e9:20:38:17:ec:0e:31:90:27:89:ff
    Extensions
      SubjectKeyIdentifier (1)
        09:e4:33:58:25:56:55:0a:27:db:4a:19:bc:e2:d6:60:
        88:47:22:b6
      KeyUsage (2), critical
        0x40: [cRLSign]
      AuthorityKeyIdentifier (7)
        Key Identifier
          2f:45:e7:8d:2c:ae:df:36:8c:df:53:c3:90:05:d4:92:
          45:0e:10:56
  Signature Value
    d4:6e:6a:8f:9f:d5:34:17:f3:6d:fe:56:cb:b8:ca:ce:
    0f:c3:e5:9a:cb:e7:2c:d9:91:6b:3e:4c:50:22:d0:6d:
    16:cc:9b:f9:ac:54:39:40:37:c9:54:33:64:41:94:fa:
    e1:8f:f7:83:38:19:59:58:4a:21:bd:c0:e1:c6:cb:0b
]]></artwork>
            </section>
          </section>
        </section>
        <section anchor="ocsp-requestor-private-key-and-certificate">
          <name>OCSP Requestor Private Key and Certificate</name>
          <section anchor="ocsp-requestor-private-key">
            <name>OCSP Requestor Private Key</name>
            <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIDoXZF67Rh+ENmXzefN4vLk/o2fK5q/otI2G1xQYtThH
-----END PRIVATE KEY-----
]]></artwork>
          </section>
          <section anchor="ocsp-requestor-cert">
            <name>OCSP Requestor Certificate</name>
            <section anchor="plain-hex-2">
              <name>Plain Hex</name>
              <artwork><![CDATA[
8B024212360C6F746573742063726C6F6373702D63611A6775D7001A69570A806E6F
6373702D726571756573746F720C582004530B1764EDD4B4E33AB44AF0F838961C00
7176D74B6A3546ECB7FD57320DD3860154DD51BDB2A2C791C062D4027856DBACF526
07F0BE210107542F45E78D2CAEDF368CDF53C39005D492450E10565840F8C6183ECF
8C3EFD50DD4942D172814C46EC0FC01DD586A597178DF864A0D9DA86B7CA17FC9F77
2FF04C80E98B60D5B4B62408A277A5B70D0D2A3F5ED5442D07
]]></artwork>
            </section>
            <section anchor="textual-representation-2">
              <name>Textual Representation</name>
              <artwork><![CDATA[
Certificate
  TBSCertificate
    Certificate Type: 2
    Serial Number
      12:36
    Signature Algorithm: Ed25519 (12)
    Issuer : CN=test crlocsp-ca
    Subject: CN=ocsp-requestor
    Validity
      Not Before: 2025-01-02T00:00:00Z
      Not After : 2026-01-02T00:00:00Z
    Subject Public Key Info:
      algorithm: Ed25519 (12)
      Raw public key
        04:53:0b:17:64:ed:d4:b4:e3:3a:b4:4a:f0:f8:38:96:
        1c:00:71:76:d7:4b:6a:35:46:ec:b7:fd:57:32:0d:d3
    Extensions
      SubjectKeyIdentifier (1)
        dd:51:bd:b2:a2:c7:91:c0:62:d4:02:78:56:db:ac:f5:
        26:07:f0:be
      KeyUsage (2), critical
        0x1: [digitalSignature]
      AuthorityKeyIdentifier (7)
        Key Identifier
          2f:45:e7:8d:2c:ae:df:36:8c:df:53:c3:90:05:d4:92:
          45:0e:10:56
  Signature Value
    f8:c6:18:3e:cf:8c:3e:fd:50:dd:49:42:d1:72:81:4c:
    46:ec:0f:c0:1d:d5:86:a5:97:17:8d:f8:64:a0:d9:da:
    86:b7:ca:17:fc:9f:77:2f:f0:4c:80:e9:8b:60:d5:b4:
    b6:24:08:a2:77:a5:b7:0d:0d:2a:3f:5e:d5:44:2d:07
]]></artwork>
            </section>
          </section>
        </section>
        <section anchor="ocsp-responder-private-key-and-certificate">
          <name>OCSP Responder Private Key and Certificate</name>
          <section anchor="ocsp-responder-private-key">
            <name>OCSP Responder Private Key</name>
            <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEII5swSxWTjlZinUj+5kie//qjgBbzupdc0lmaHF9NkXl
-----END PRIVATE KEY-----
]]></artwork>
          </section>
          <section anchor="ocsp-responder-cert">
            <name>OCSP Responder Certificate</name>
            <section anchor="plain-hex-3">
              <name>Plain Hex</name>
              <artwork><![CDATA[
8B024212350C6F746573742063726C6F6373702D63611A6775D7001A69570A806E6F
6373702D726573706F6E6465720C582081947BBC248AAC79738211A8D75BF92CB777
D994073DF23AE06380EF2C573976880154B5B4CAF35401D06151DF9629DB579DC8CC
A453A8210107542F45E78D2CAEDF368CDF53C39005D492450E105627095840A01B0C
BF3E34A4762D05404FD08A7AEC103035358314686D72B6159078C76E1D88597F3753
1886A3F52F256FD722192B289D6844014467F1F17F05ACBB7B660A
]]></artwork>
            </section>
            <section anchor="textual-representation-3">
              <name>Textual Representation</name>
              <artwork><![CDATA[
Certificate
  TBSCertificate
    Certificate Type: 2
    Serial Number
      12:35
    Signature Algorithm: Ed25519 (12)
    Issuer : CN=test crlocsp-ca
    Subject: CN=ocsp-responder
    Validity
      Not Before: 2025-01-02T00:00:00Z
      Not After : 2026-01-02T00:00:00Z
    Subject Public Key Info:
      algorithm: Ed25519 (12)
      Raw public key
        81:94:7b:bc:24:8a:ac:79:73:82:11:a8:d7:5b:f9:2c:
        b7:77:d9:94:07:3d:f2:3a:e0:63:80:ef:2c:57:39:76
    Extensions
      SubjectKeyIdentifier (1)
        b5:b4:ca:f3:54:01:d0:61:51:df:96:29:db:57:9d:c8:
        cc:a4:53:a8
      KeyUsage (2), critical
        0x1: [digitalSignature]
      AuthorityKeyIdentifier (7)
        Key Identifier
          2f:45:e7:8d:2c:ae:df:36:8c:df:53:c3:90:05:d4:92:
          45:0e:10:56
      ExtendedKeyUsage (8), critical
        OCSPSigning (9)
  Signature Value
    a0:1b:0c:bf:3e:34:a4:76:2d:05:40:4f:d0:8a:7a:ec:
    10:30:35:35:83:14:68:6d:72:b6:15:90:78:c7:6e:1d:
    88:59:7f:37:53:18:86:a3:f5:2f:25:6f:d7:22:19:2b:
    28:9d:68:44:01:44:67:f1:f1:7f:05:ac:bb:7b:66:0a
]]></artwork>
            </section>
          </section>
        </section>
      </section>
      <section anchor="crl-examples">
        <name>CRL Examples</name>
        <section anchor="exam-crl-no-revoked">
          <name>CRL Example Without Revoked Certificates</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 18%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ca-cert"/></t>
            </li>
            <li>
              <t>Direct CRL</t>
            </li>
            <li>
              <t>Full CRL</t>
            </li>
            <li>
              <t>No revoked certificates</t>
            </li>
            <li>
              <t>Note that the X.509 CRL and the C509 CRL are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-crl">
            <name>X.509 CRL</name>
            <t>PEM content (147 bytes):</t>
            <artwork><![CDATA[
-----BEGIN X509 CRL-----
MIGQMEQCAQEwBQYDK2VwMBoxGDAWBgNVBAMMD3Rlc3QgY3Jsb2NzcC1jYRcNMjUw
MTAyMDAwMDAwWhcNMjUwMTA5MDAwMDAwWjAFBgMrZXADQQBeSb215S+/7HT9HjQN
zeuuETZAjRIwCLxCIZatpkiov3ndsI7fjXcabny/kx9d5Ce39o3RcDG3QiDDdWOi
R5UK
-----END X509 CRL-----
]]></artwork>
          </section>
          <section anchor="c509-crl">
            <name>C509 CRL</name>
            <t>Plain Hex (120 bytes):</t>
            <artwork><![CDATA[
8B000C6F746573742063726C6F6373702D6361542F45E78D2CAEDF368CDF53C39005
D492450E1056011A6775D7001A00093A80F680F6584013834F4E38AA9F0DC5B8D21C
8650C776A6D961C31C894C36A71A6433F5ED7D30E67F787F13C7E4C349B2848A181F
DBBCE361A14C220021C4A267367AD5F1D90D
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509CRL
  TBSCertList
    CRL Type: C509CRL (0)
    Signature Algorithm: Ed25519 (12)
    Authority Subject: CN=test crlocsp-ca
    Authority Key Identifier:
      2F:45:E7:8D:2C:AE:DF:36:8C:DF:53:C3:90:05:D4:92:
      45:0E:10:56
    CRL Number: 1
    This Update: 2025-01-02T00:00:00Z
    Next Update: 2025-01-09T00:00:00Z
    Base CRL Number: <null>
    Extensions: <empty>
  revokedCertsList: <null>
  Signature Value
    13:83:4f:4e:38:aa:9f:0d:c5:b8:d2:1c:86:50:c7:76:
    a6:d9:61:c3:1c:89:4c:36:a7:1a:64:33:f5:ed:7d:30:
    e6:7f:78:7f:13:c7:e4:c3:49:b2:84:8a:18:1f:db:bc:
    e3:61:a1:4c:22:00:21:c4:a2:67:36:7a:d5:f1:d9:0d
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 8B             # C509CRL=array[11]
  1:   00             # [0]. crlType=0
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   6F             # [2]. authoritySubject=char[15]
  4:     746573742063726C6F6373702D6361 # "test crlocsp-ca"
 19:   54             # [3]. authorityKeyIdentifier=byte[20]
 20:     2F45E78D2CAEDF368CDF53C39005D492450E1056
 40:   01             # [4]. crlNumber=1
 41:   1A 6775D700    # [5]. thisUpdate=1735776000:
                      #      2025-01-02T00:00:00Z
 46:   1A 00093A80    # [6]. nextUpdate=604800: 2025-01-09T00:00:00Z
 51:   F6             # [7]. baseCrlNumber=<null>
 52:   80             # [8]. crlExtensions=array[0]
 53:   F6             # [9]. revokedCertsList: <null>
 54:   58 40          # [10]. signature value=byte[64]
 56:     13834F4E38AA9F0DC5B8D21C8650C776A6D961C31C894C36A71A6433F5
 85:     ED7D30E67F787F13C7E4C349B2848A181FDBBCE361A14C220021C4A267
114:     367AD5F1D90D
]]></artwork>
          </section>
        </section>
        <section anchor="exam-crl-revoked">
          <name>CRL Example With Revoked Certificates</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 47%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ca-cert"/></t>
            </li>
            <li>
              <t>Direct CRL</t>
            </li>
            <li>
              <t>Full CRL</t>
            </li>
            <li>
              <t>With revoked certificates</t>
            </li>
            <li>
              <t>With Per-Issuer Extension ExpiredCertsOnCRL</t>
            </li>
            <li>
              <t>Note that the X.509 CRL and the C509 CRL are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-crl-1">
            <name>X.509 CRL</name>
            <t>PEM content (335 bytes):</t>
            <artwork><![CDATA[
-----BEGIN X509 CRL-----
MIIBSzCB/gIBATAFBgMrZXAwGjEYMBYGA1UEAwwPdGVzdCBjcmxvY3NwLWNhFw0y
NTAxMDcwMDEyMzRaFw0yNTAxMTQwMDEyMzRaMIG3MCECAhEiFw0yNTAxMDYwMDEy
MzRaMAwwCgYDVR0VBAMKAQYwIQICEjQXDTI1MDEwMTAwMTIzNFowDDAKBgNVHRUE
AwoBATAhAgIzRBcNMjUwMTA0MDAxMjM0WjAMMAoGA1UdFQQDCgEGMCECAlVmFw0y
NTAxMDIwMDEyMzRaMAwwCgYDVR0VBAMKAQYwEwICVngXDTI1MDEwNTAwMTIzNFow
FAIDAJq8Fw0yNTAxMDMwMDEyMzRaMAUGAytlcANBAAK0jdEbZtlvJDmhKAJQTklZ
WqS7xaN9gHvLC/8lvmqsSdY8T/1YbdkVGCyKsWuDSBGVFtrM2DrBzSDarRKctwY=
-----END X509 CRL-----
]]></artwork>
          </section>
          <section anchor="c509-crl-1">
            <name>C509 CRL</name>
            <t>Plain Hex (177 bytes):</t>
            <artwork><![CDATA[
8B000C6F746573742063726C6F6373702D6361542F45E78D2CAEDF368CDF53C39005
D492450E1056021A677C71721A00093A80F68085F6840302031A677488728218571A
677485805824112206978006123400000001334403F4800655660151800656780546
00009ABC02A30000F6584070BB7A38065FBCABFE615170F05A9A9FE83DC892D5F735
812B2A053AF4B300EB466BABB4F1A387CDCE90D8302C680B77AA61566423D7C235F7
BD31344CF7F405
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509CRL
  TBSCertList
    CRL Type: C509CRL (0)
    Signature Algorithm: Ed25519 (12)
    Authority Subject: CN=test crlocsp-ca
    Authority Key Identifier:
      2F:45:E7:8D:2C:AE:DF:36:8C:DF:53:C3:90:05:D4:92:
      45:0E:10:56
    CRL Number: 2
    This Update: 2025-01-07T00:12:34Z
    Next Update: 2025-01-14T00:12:34Z
    Base CRL Number: <null>
    Extensions: <empty>
  revokedCertsList:
    PerIssuerRevokedCerts[0]
      Issuer: <null>
      RevokedCertsControl
        Flags: sorted, with reason (0x3)
        Serial number length: 2
        Date length: 3
        Base date: 2025-01-01T00:12:34Z
      Extensions
        ExpiredCertsOnCRL (87)
          2025-01-01T00:00:00Z
      RevokedCerts:
        0x1122, 2025-01-06T00:12:34Z, certificateHold
        0x1234, 2025-01-01T00:12:34Z, keyCompromise
        0x3344, 2025-01-04T00:12:34Z, certificateHold
        0x5566, 2025-01-02T00:12:34Z, certificateHold
        0x5678, 2025-01-05T00:12:34Z, unspecified
        0x9ABC, 2025-01-03T00:12:34Z, unspecified
      RemovedFromCRLCerts: <null>
  Signature Value
    70:bb:7a:38:06:5f:bc:ab:fe:61:51:70:f0:5a:9a:9f:
    e8:3d:c8:92:d5:f7:35:81:2b:2a:05:3a:f4:b3:00:eb:
    46:6b:ab:b4:f1:a3:87:cd:ce:90:d8:30:2c:68:0b:77:
    aa:61:56:64:23:d7:c2:35:f7:bd:31:34:4c:f7:f4:05
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 8B             # C509CRL=array[11]
  1:   00             # [0]. crlType=0
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   6F             # [2]. authoritySubject=char[15]
  4:     746573742063726C6F6373702D6361 # "test crlocsp-ca"
 19:   54             # [3]. authorityKeyIdentifier=byte[20]
 20:     2F45E78D2CAEDF368CDF53C39005D492450E1056
 40:   02             # [4]. crlNumber=2
 41:   1A 677C7172    # [5]. thisUpdate=1736208754:
                      #      2025-01-07T00:12:34Z
 46:   1A 00093A80    # [6]. nextUpdate=604800: 2025-01-14T00:12:34Z
 51:   F6             # [7]. baseCrlNumber=<null>
 52:   80             # [8]. crlExtensions=array[0]
 53:   85             # [9]. revokedCertsList=array[5]
                        #---PerIssuerRevokedCerts[0]---
 54:     F6             # [0]. issuer=<null>
 55:     84             # [1]. revokedCertsControl=array[4]
 56:       03             # [0]. flags: sorted, with reason (0x3)
 57:       02             # [1]. serialNumberLength=2
 58:       03             # [2]. dateLength=3
 59:       1A 67748872    # [3]. baseDate=1735690354:
                          #      2025-01-01T00:12:34Z
 64:     82             # [2]. extensions=array[2]
                          #---extension[0]---
 65:       18 57          # [0]. type=ExpiredCertsOnCRL (87)
 67:       1A 67748580    # [1]. value=1735689600:
                          #      2025-01-01T00:00:00Z
 72:     58 24          # [3]. revokedCerts=byte[36], 6 entries
                          #---entries[0]---
 74:       1122           # CSN=1122
 76:       069780         # date=069780: 2025-01-06T00:12:34Z
 79:       06             # reason=6: certificateHold
                          #---entries[1]---
 80:       1234           # CSN=1234
 82:       000000         # date=000000: 2025-01-01T00:12:34Z
 85:       01             # reason=1: keyCompromise
                          #---entries[2]---
 86:       3344           # CSN=3344
 88:       03F480         # date=03F480: 2025-01-04T00:12:34Z
 91:       06             # reason=6: certificateHold
                          #---entries[3]---
 92:       5566           # CSN=5566
 94:       015180         # date=015180: 2025-01-02T00:12:34Z
 97:       06             # reason=6: certificateHold
                          #---entries[4]---
 98:       5678           # CSN=5678
100:       054600         # date=054600: 2025-01-05T00:12:34Z
103:       00             # reason=0: unspecified
                          #---entries[5]---
104:       9ABC           # CSN=9ABC
106:       02A300         # date=02A300: 2025-01-03T00:12:34Z
109:       00             # reason=0: unspecified
110:     F6             # [4]. removedFromCRLCerts=<null>
111:   58 40          # [10]. signature value=byte[64]
113:     70BB7A38065FBCABFE615170F05A9A9FE83DC892D5F735812B2A053AF4
142:     B300EB466BABB4F1A387CDCE90D8302C680B77AA61566423D7C235F7BD
171:     31344CF7F405
]]></artwork>
          </section>
        </section>
        <section anchor="exam-delta-crl-revoked">
          <name>Delta CRL Example With Revoked Certificates</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 52%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ca-cert"/></t>
            </li>
            <li>
              <t>Direct CRL</t>
            </li>
            <li>
              <t>Delta CRL</t>
            </li>
            <li>
              <t>With revoked certificates</t>
            </li>
            <li>
              <t>With entries removed from the CRL since the last full CRL</t>
            </li>
            <li>
              <t>Note that the X.509 CRL and the C509 CRL are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-crl-2">
            <name>X.509 CRL</name>
            <t>PEM content (335 bytes):</t>
            <artwork><![CDATA[
-----BEGIN X509 CRL-----
MIIBSzCB/gIBATAFBgMrZXAwGjEYMBYGA1UEAwwPdGVzdCBjcmxvY3NwLWNhFw0y
NTAxMDgwMDEyMzRaFw0yNTAxMTAwMDEyMzRaMIG3MCECAjQSFw0yNTAxMDcxMjEy
MzRaMAwwCgYDVR0VBAMKAQEwEwICeFYXDTI1MDEwODAwMTAzNFowFAIDALyaFw0y
NTAxMDgwMDA4MzRaMCECAhEiFw0yNTAxMDcxMzEyMzRaMAwwCgYDVR0VBAMKAQgw
IQICM0QXDTI1MDEwNzE0MTIzNFowDDAKBgNVHRUEAwoBCDAhAgJVZhcNMjUwMTA3
MTUxMjM0WjAMMAoGA1UdFQQDCgEIMAUGAytlcANBAKxSjqeefzjGdniA3bQCg3rL
d7rrJnfh8GfsWdawC9BHjK1G336hRYaxwLOtyQS4Mn80jjSwrN+bXg10spSA4gA=
-----END X509 CRL-----
]]></artwork>
          </section>
          <section anchor="c509-crl-2">
            <name>C509 CRL</name>
            <t>Plain Hex (160 bytes):</t>
            <artwork><![CDATA[
8B000C6F746573742063726C6F6373702D6361542F45E78D2CAEDF368CDF53C39005
D492450E1056031A677DC2F21A0002A300028085F6840302021A677D1A32804F3412
0000017856A84800BC9AA7D0004C11220E1033441C2055662A305840369C3E6412E9
D0537CD39EA1DA40C68C32B4EC0E5678650D6AF73677A5A0CF37F1CDE75D663DE374
9101F4354CCD6D8D05773887650046932B583C5365D7EB0B
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509CRL
  TBSCertList
    CRL Type: C509CRL (0)
    Signature Algorithm: Ed25519 (12)
    Authority Subject: CN=test crlocsp-ca
    Authority Key Identifier:
      2F:45:E7:8D:2C:AE:DF:36:8C:DF:53:C3:90:05:D4:92:
      45:0E:10:56
    CRL Number: 3
    This Update: 2025-01-08T00:12:34Z
    Next Update: 2025-01-10T00:12:34Z
    Base CRL Number: 2
    Extensions: <empty>
  revokedCertsList:
    PerIssuerRevokedCerts[0]
      Issuer: <null>
      RevokedCertsControl
        Flags: sorted, with reason (0x3)
        Serial number length: 2
        Date length: 2
        Base date: 2025-01-07T12:12:34Z
      Extensions: <empty>
      RevokedCerts:
        0x3412, 2025-01-07T12:12:34Z, keyCompromise
        0x7856, 2025-01-08T00:10:34Z, unspecified
        0xBC9A, 2025-01-08T00:08:34Z, unspecified
      RemovedFromCRLCerts:
        0x1122, 2025-01-07T13:12:34Z
        0x3344, 2025-01-07T14:12:34Z
        0x5566, 2025-01-07T15:12:34Z
  Signature Value
    36:9c:3e:64:12:e9:d0:53:7c:d3:9e:a1:da:40:c6:8c:
    32:b4:ec:0e:56:78:65:0d:6a:f7:36:77:a5:a0:cf:37:
    f1:cd:e7:5d:66:3d:e3:74:91:01:f4:35:4c:cd:6d:8d:
    05:77:38:87:65:00:46:93:2b:58:3c:53:65:d7:eb:0b
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 8B             # C509CRL=array[11]
  1:   00             # [0]. crlType=0
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   6F             # [2]. authoritySubject=char[15]
  4:     746573742063726C6F6373702D6361 # "test crlocsp-ca"
 19:   54             # [3]. authorityKeyIdentifier=byte[20]
 20:     2F45E78D2CAEDF368CDF53C39005D492450E1056
 40:   03             # [4]. crlNumber=3
 41:   1A 677DC2F2    # [5]. thisUpdate=1736295154:
                      #      2025-01-08T00:12:34Z
 46:   1A 0002A300    # [6]. nextUpdate=172800: 2025-01-10T00:12:34Z
 51:   02             # [7]. baseCrlNumber=2
 52:   80             # [8]. crlExtensions=array[0]
 53:   85             # [9]. revokedCertsList=array[5]
                        #---PerIssuerRevokedCerts[0]---
 54:     F6             # [0]. issuer=<null>
 55:     84             # [1]. revokedCertsControl=array[4]
 56:       03             # [0]. flags: sorted, with reason (0x3)
 57:       02             # [1]. serialNumberLength=2
 58:       02             # [2]. dateLength=2
 59:       1A 677D1A32    # [3]. baseDate=1736251954:
                          #      2025-01-07T12:12:34Z
 64:     80             # [2]. extensions=array[0]
 65:     4F             # [3]. revokedCerts=byte[15], 3 entries
                          #---entries[0]---
 66:       3412           # CSN=3412
 68:       0000           # date=0000: 2025-01-07T12:12:34Z
 70:       01             # reason=1: keyCompromise
                          #---entries[1]---
 71:       7856           # CSN=7856
 73:       A848           # date=A848: 2025-01-08T00:10:34Z
 75:       00             # reason=0: unspecified
                          #---entries[2]---
 76:       BC9A           # CSN=BC9A
 78:       A7D0           # date=A7D0: 2025-01-08T00:08:34Z
 80:       00             # reason=0: unspecified
 81:     4C             # [4]. removedFromCRLCerts=byte[12], 3
                        #      entries
                          #---entries[0]---
 82:       1122           # CSN=1122
 84:       0E10           # date=0E10: 2025-01-07T13:12:34Z
                          #---entries[1]---
 86:       3344           # CSN=3344
 88:       1C20           # date=1C20: 2025-01-07T14:12:34Z
                          #---entries[2]---
 90:       5566           # CSN=5566
 92:       2A30           # date=2A30: 2025-01-07T15:12:34Z
 94:   58 40          # [10]. signature value=byte[64]
 96:     369C3E6412E9D0537CD39EA1DA40C68C32B4EC0E5678650D6AF73677A5
125:     A0CF37F1CDE75D663DE3749101F4354CCD6D8D05773887650046932B58
154:     3C5365D7EB0B
]]></artwork>
          </section>
        </section>
        <section anchor="exam-indirect-crl-revoked">
          <name>Indirect CRL Example With Revoked Certificates</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 51%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="crl-signer-cert"/></t>
            </li>
            <li>
              <t>Indirect CRL</t>
            </li>
            <li>
              <t>Full CRL</t>
            </li>
            <li>
              <t>With revoked certificates</t>
            </li>
            <li>
              <t>With two issuers</t>
            </li>
            <li>
              <t>Note that the X.509 CRL and the C509 CRL are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-crl-3">
            <name>X.509 CRL</name>
            <t>PEM content (409 bytes):</t>
            <artwork><![CDATA[
-----BEGIN X509 CRL-----
MIIBlTCCAUcCAQEwBQYDK2VwMBUxEzARBgNVBAMMCmNybC1zaWduZXIXDTI1MDEw
NzAwMTIzNFoXDTI1MDExNDAwMTIzNFowggEEMEoCAhI0Fw0yNTAxMDEwMDEyMzRa
MDUwCgYDVR0VBAMKAQEwJwYDVR0dBCAwHqQcMBoxGDAWBgNVBAMMD3Rlc3QgY3Js
b2NzcC1jYTATAgJWeBcNMjUwMTA1MDAxMjM0WjAUAgMAmrwXDTI1MDEwMzAwMTIz
NFowRQICESIXDTI1MDEwNjAwMTIzNFowMDAKBgNVHRUEAwoBBjAiBgNVHR0EGzAZ
pBcwFTETMBEGA1UEAwwKZXhhbXBsZSBDQTAhAgIzRBcNMjUwMTA0MDAxMjM0WjAM
MAoGA1UdFQQDCgEGMCECAlVmFw0yNTAxMDIwMDEyMzRaMAwwCgYDVR0VBAMKAQYw
BQYDK2VwA0EAUMWMYunvDSqQzFV+lo5O5TZmopxPvnMBpuR0Do8kCA4P4PHGg/E8
1U6GfBu/9MvUuTOX13loPDedsjvs/uK8AQ==
-----END X509 CRL-----
]]></artwork>
          </section>
          <section anchor="c509-crl-3">
            <name>C509 CRL</name>
            <t>Plain Hex (202 bytes):</t>
            <artwork><![CDATA[
8B000C6A63726C2D7369676E65725409E433582556550A27DB4A19BCE2D660884722
B6041A677C71721A00093A80F6808A6F746573742063726C6F6373702D6361840302
031A6774887280521234000000015678054600009ABC02A30000F66A6578616D706C
65204341840302031A6775D9F28052112205460006334402A30006556600000006F6
5840F00D6270F91486A7F378D06F01A807E64E086BB366BE3A1592CE4A64BFFD621F
30E2AB93766B4F8818116AB7DA7BEDF7C3EBCBDEAC6D0455F5F5669712006205
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509CRL
  TBSCertList
    CRL Type: C509CRL (0)
    Signature Algorithm: Ed25519 (12)
    Authority Subject: CN=crl-signer
    Authority Key Identifier:
      09:E4:33:58:25:56:55:0A:27:DB:4A:19:BC:E2:D6:60:
      88:47:22:B6
    CRL Number: 4
    This Update: 2025-01-07T00:12:34Z
    Next Update: 2025-01-14T00:12:34Z
    Base CRL Number: <null>
    Extensions: <empty>
  revokedCertsList:
    PerIssuerRevokedCerts[0]
      Issuer: CN=test crlocsp-ca
      RevokedCertsControl
        Flags: sorted, with reason (0x3)
        Serial number length: 2
        Date length: 3
        Base date: 2025-01-01T00:12:34Z
      Extensions: <empty>
      RevokedCerts:
        0x1234, 2025-01-01T00:12:34Z, keyCompromise
        0x5678, 2025-01-05T00:12:34Z, unspecified
        0x9ABC, 2025-01-03T00:12:34Z, unspecified
      RemovedFromCRLCerts: <null>
    PerIssuerRevokedCerts[1]
      Issuer: CN=example CA
      RevokedCertsControl
        Flags: sorted, with reason (0x3)
        Serial number length: 2
        Date length: 3
        Base date: 2025-01-02T00:12:34Z
      Extensions: <empty>
      RevokedCerts:
        0x1122, 2025-01-06T00:12:34Z, certificateHold
        0x3344, 2025-01-04T00:12:34Z, certificateHold
        0x5566, 2025-01-02T00:12:34Z, certificateHold
      RemovedFromCRLCerts: <null>
  Signature Value
    f0:0d:62:70:f9:14:86:a7:f3:78:d0:6f:01:a8:07:e6:
    4e:08:6b:b3:66:be:3a:15:92:ce:4a:64:bf:fd:62:1f:
    30:e2:ab:93:76:6b:4f:88:18:11:6a:b7:da:7b:ed:f7:
    c3:eb:cb:de:ac:6d:04:55:f5:f5:66:97:12:00:62:05
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 8B             # C509CRL=array[11]
  1:   00             # [0]. crlType=0
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   6A             # [2]. authoritySubject=char[10]
  4:     63726C2D7369676E6572 # "crl-signer"
 14:   54             # [3]. authorityKeyIdentifier=byte[20]
 15:     09E433582556550A27DB4A19BCE2D660884722B6
 35:   04             # [4]. crlNumber=4
 36:   1A 677C7172    # [5]. thisUpdate=1736208754:
                      #      2025-01-07T00:12:34Z
 41:   1A 00093A80    # [6]. nextUpdate=604800: 2025-01-14T00:12:34Z
 46:   F6             # [7]. baseCrlNumber=<null>
 47:   80             # [8]. crlExtensions=array[0]
 48:   8A             # [9]. revokedCertsList=array[10]
                        #---PerIssuerRevokedCerts[0]---
 49:     6F             # [0]. issuer=char[15]
 50:       746573742063726C6F6373702D6361 # "test crlocsp-ca"
 65:     84             # [1]. revokedCertsControl=array[4]
 66:       03             # [0]. flags: sorted, with reason (0x3)
 67:       02             # [1]. serialNumberLength=2
 68:       03             # [2]. dateLength=3
 69:       1A 67748872    # [3]. baseDate=1735690354:
                          #      2025-01-01T00:12:34Z
 74:     80             # [2]. extensions=array[0]
 75:     52             # [3]. revokedCerts=byte[18], 3 entries
                          #---entries[0]---
 76:       1234           # CSN=1234
 78:       000000         # date=000000: 2025-01-01T00:12:34Z
 81:       01             # reason=1: keyCompromise
                          #---entries[1]---
 82:       5678           # CSN=5678
 84:       054600         # date=054600: 2025-01-05T00:12:34Z
 87:       00             # reason=0: unspecified
                          #---entries[2]---
 88:       9ABC           # CSN=9ABC
 90:       02A300         # date=02A300: 2025-01-03T00:12:34Z
 93:       00             # reason=0: unspecified
 94:     F6             # [4]. removedFromCRLCerts=<null>
                        #---PerIssuerRevokedCerts[1]---
 95:     6A             # [5]. issuer=char[10]
 96:       6578616D706C65204341 # "example CA"
106:     84             # [6]. revokedCertsControl=array[4]
107:       03             # [0]. flags: sorted, with reason (0x3)
108:       02             # [1]. serialNumberLength=2
109:       03             # [2]. dateLength=3
110:       1A 6775D9F2    # [3]. baseDate=1735776754:
                          #      2025-01-02T00:12:34Z
115:     80             # [7]. extensions=array[0]
116:     52             # [8]. revokedCerts=byte[18], 3 entries
                          #---entries[0]---
117:       1122           # CSN=1122
119:       054600         # date=054600: 2025-01-06T00:12:34Z
122:       06             # reason=6: certificateHold
                          #---entries[1]---
123:       3344           # CSN=3344
125:       02A300         # date=02A300: 2025-01-04T00:12:34Z
128:       06             # reason=6: certificateHold
                          #---entries[2]---
129:       5566           # CSN=5566
131:       000000         # date=000000: 2025-01-02T00:12:34Z
134:       06             # reason=6: certificateHold
135:     F6             # [9]. removedFromCRLCerts=<null>
136:   58 40          # [10]. signature value=byte[64]
138:     F00D6270F91486A7F378D06F01A807E64E086BB366BE3A1592CE4A64BF
167:     FD621F30E2AB93766B4F8818116AB7DA7BEDF7C3EBCBDEAC6D0455F5F5
196:     669712006205
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="ocsp-request-examples">
        <name>OCSP Request Examples</name>
        <section anchor="exam-simple-ocsp-req">
          <name>Simple OCSP Request Example</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 66%</t>
            </li>
            <li>
              <t>Simple OCSP Request (<tt>C509SimpleOCSPRequest</tt>)</t>
            </li>
            <li>
              <t>Note that the X.509 OCSP Request and the C509 OCSP Request are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-request">
            <name>X.509 OCSP Request</name>
            <t>PEM content (150 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP REQUEST-----
MIGTMIGQMGswaTBnMAsGCWCGSAFlAwQCAQQgMlOOdIW9N65FTx8NK5dV11i5H26O
Onrzl6D0AGBcb/gEIMwRyHQKBQnsTaFM5YhucjZMD2O2DtY0fxPBbuclt2aiAhQS
NBI0EjQSNBI0EjQSNBI0EjQSNKIhMB8wHQYJKwYBBQUHMAECBBARERERERERERER
ERERERER
-----END OCSP REQUEST-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-request">
            <name>C509 OCSP Request</name>
            <t>Plain Hex (51 bytes):</t>
            <artwork><![CDATA[
86022F501111111111111111111111111111111148A01C73A5F3B063345410652787
FA0527BC2449A1BFC5AB31AA5A6F0D8D80
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509SimpleOCSPRequest
  Type: C509SimpleOCSPRequest (2)
  Hash Algorithm: SHA256 (-16)
  IssuerCertHash:
    a0:1c:73:a5:f3:b0:63:34
  SerialNumberHash:
    10:65:27:87:fa:05:27:bc:24:49:a1:bf:c5:ab:31:aa:
    5a:6f:0d:8d
  Nonce
    11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
  Extensions: <empty>
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
 0: 86             # C509OCSPRequest=array[6]
 1:   02             # [0]. ocspRequestType=C509SimpleOCSPRequest
                     #      (2)
 2:   2F             # [1]. hashAlgorithm=SHA256 (-16)
 3:   50             # [2]. nonce=byte[16]
 4:     11111111111111111111111111111111
20:   48             # [3]. issuerCertHash=byte[8]
21:     A01C73A5F3B06334
29:   54             # [4]. serialNumberHash=byte[20]
30:     10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D
50:   80             # [5]. extensions=array[0]
]]></artwork>
          </section>
        </section>
        <section anchor="exam-unsigned-ocsp-req">
          <name>Unsigned OCSP Request Example</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 72%</t>
            </li>
            <li>
              <t>Unsigned OCSP Request (<tt>C509UnsignedOCSPRequest</tt>)</t>
            </li>
            <li>
              <t>Note that the X.509 OCSP Request and the C509 OCSP Request are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-request-1">
            <name>X.509 OCSP Request</name>
            <t>PEM content (475 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP REQUEST-----
MIIB1zCCAdMwggGsMGkwZzALBglghkgBZQMEAgEEIDJTjnSFvTeuRU8fDSuXVddY
uR9ujjp685eg9ABgXG/4BCDMEch0CgUJ7E2hTOWIbnI2TA9jtg7WNH8TwW7nJbdm
ogIUEjQSNBI0EjQSNBI0EjQSNBI0EjQwaTBnMAsGCWCGSAFlAwQCAQQgMlOOdIW9
N65FTx8NK5dV11i5H26OOnrzl6D0AGBcb/gEIMwRyHQKBQnsTaFM5YhucjZMD2O2
DtY0fxPBbuclt2aiAhQ0VjRWNFY0VjRWNFY0VjRWNFY0VjBpMGcwCwYJYIZIAWUD
BAIBBCAyU450hb03rkVPHw0rl1XXWLkfbo46evOXoPQAYFxv+AQgzBHIdAoFCexN
oUzliG5yNkwPY7YO1jR/E8Fu5yW3ZqICFFZ4VnhWeFZ4VnhWeFZ4VnhWeFZ4MGkw
ZzALBglghkgBZQMEAgEEIDMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz
BCBERERERERERERERERERERERERERERERERERERERERERAIUIjMiMyIzIjMiMyIz
IjMiMyIzIjOiITAfMB0GCSsGAQUFBzABAgQQEREREREREREREREREREREQ==
-----END OCSP REQUEST-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-request-1">
            <name>C509 OCSP Request</name>
            <t>Plain Hex (132 bytes):</t>
            <artwork><![CDATA[
85002F5011111111111111111111111111111111808648A01C73A5F3B06334808654
10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D805475D8BC4FBAFC6694467641E7
48DFD53A8B9D176D8054D1AC135D7DA29BDCF4DCA0D5281A51605B67840080482222
222222222222808254D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B80
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509UnsignedOCSPRequest
  Type: C509UnsignedOCSPRequest (0)
  Hash Algorithm: SHA256 (-16)
  Nonce
    11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
  Requests
    OcspPerIssuerRequest
      issuerCertHash
        a0:1c:73:a5:f3:b0:63:34
      extensions: <empty>
      singleRequests
        SingleCertRequest
          SerialNumberHash:
            10:65:27:87:fa:05:27:bc:24:49:a1:bf:c5:ab:31:aa:
            5a:6f:0d:8d
          Extensions: <empty>
        SingleCertRequest
          SerialNumberHash:
            75:d8:bc:4f:ba:fc:66:94:46:76:41:e7:48:df:d5:3a:
            8b:9d:17:6d
          Extensions: <empty>
        SingleCertRequest
          SerialNumberHash:
            d1:ac:13:5d:7d:a2:9b:dc:f4:dc:a0:d5:28:1a:51:60:
            5b:67:84:00
          Extensions: <empty>
    OcspPerIssuerRequest
      issuerCertHash
        22:22:22:22:22:22:22:22
      extensions: <empty>
      singleRequests
        SingleCertRequest
          SerialNumberHash:
            d3:a0:c1:e3:db:92:e8:f6:81:05:37:d4:5c:fa:ec:f6:
            ce:41:7e:3b
          Extensions: <empty>
  Extensions: <empty>
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 85             # C509OCSPRequest=array[5]
  1:   00             # [0]. ocspRequestType=C509UnsignedOCSPRequest
                      #      (0)
  2:   2F             # [1]. hashAlgorithm=SHA256 (-16)
  3:   50             # [2]. nonce=byte[16]
  4:     11111111111111111111111111111111
 20:   80             # [3]. extensions=array[0]
 21:   86             # [4]. requests=array[6]
                        #---PerIssuerRequests[0]---
 22:     48             # [0]. issuerCertHash=byte[8]
 23:       A01C73A5F3B06334
 31:     80             # [1]. extensions=array[0]
 32:     86             # [2]. singleRequests=array[6]
                          #---SingleCertRequests[0]---
 33:       54             # [0]. serialNumberHash=byte[20]
 34:         10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D
 54:       80             # [1]. extensions=array[0]
                          #---SingleCertRequests[1]---
 55:       54             # [2]. serialNumberHash=byte[20]
 56:         75D8BC4FBAFC6694467641E748DFD53A8B9D176D
 76:       80             # [3]. extensions=array[0]
                          #---SingleCertRequests[2]---
 77:       54             # [4]. serialNumberHash=byte[20]
 78:         D1AC135D7DA29BDCF4DCA0D5281A51605B678400
 98:       80             # [5]. extensions=array[0]
                        #---PerIssuerRequests[1]---
 99:     48             # [3]. issuerCertHash=byte[8]
100:       2222222222222222
108:     80             # [4]. extensions=array[0]
109:     82             # [5]. singleRequests=array[2]
                          #---SingleCertRequests[0]---
110:       54             # [0]. serialNumberHash=byte[20]
111:         D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B
131:       80             # [1]. extensions=array[0]
]]></artwork>
          </section>
        </section>
        <section anchor="exam-signed-ocsp-req">
          <name>Signed OCSP Request Example Without Requestor's Certificate</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 64%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ocsp-requestor-cert"/></t>
            </li>
            <li>
              <t>Signed OCSP Request (<tt>C509SignedOCSPRequest</tt>) without requestor's certificate</t>
            </li>
            <li>
              <t>Note that the X.509 OCSP Request and the C509 OCSP Request are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-request-2">
            <name>X.509 OCSP Request</name>
            <t>PEM content (584 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP REQUEST-----
MIICRDCCAfKhHaQbMBkxFzAVBgNVBAMMDm9jc3AtcmVxdWVzdG9yMIIBrDBpMGcw
CwYJYIZIAWUDBAIBBCAyU450hb03rkVPHw0rl1XXWLkfbo46evOXoPQAYFxv+AQg
zBHIdAoFCexNoUzliG5yNkwPY7YO1jR/E8Fu5yW3ZqICFBI0EjQSNBI0EjQSNBI0
EjQSNBI0MGkwZzALBglghkgBZQMEAgEEIDJTjnSFvTeuRU8fDSuXVddYuR9ujjp6
85eg9ABgXG/4BCDMEch0CgUJ7E2hTOWIbnI2TA9jtg7WNH8TwW7nJbdmogIUNFY0
VjRWNFY0VjRWNFY0VjRWNFYwaTBnMAsGCWCGSAFlAwQCAQQgMlOOdIW9N65FTx8N
K5dV11i5H26OOnrzl6D0AGBcb/gEIMwRyHQKBQnsTaFM5YhucjZMD2O2DtY0fxPB
buclt2aiAhRWeFZ4VnhWeFZ4VnhWeFZ4VnhWeDBpMGcwCwYJYIZIAWUDBAIBBCAz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMwQgRERERERERERERERERERE
REREREREREREREREREREREQCFCIzIjMiMyIzIjMiMyIzIjMiMyIzoiEwHzAdBgkr
BgEFBQcwAQIEEBERERERERERERERERERERGgTDBKMAUGAytlcANBAJxdKYl8BFnb
nngr44EK7xqnJFQWfa8iM4Lje1eezFCTX1GiRVJEqS2Oe2HEdFggCngY5q5RkRaY
qvjTEhXlRwg=
-----END OCSP REQUEST-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-request-2">
            <name>C509 OCSP Request</name>
            <t>Plain Hex (209 bytes):</t>
            <artwork><![CDATA[
89010C2F50111111111111111111111111111111114844F0528B56F35AD9808648A0
1C73A5F3B0633480865410652787FA0527BC2449A1BFC5AB31AA5A6F0D8D805475D8
BC4FBAFC6694467641E748DFD53A8B9D176D8054D1AC135D7DA29BDCF4DCA0D5281A
51605B67840080482222222222222222808254D3A0C1E3DB92E8F6810537D45CFAEC
F6CE417E3B80F658407B840FABA2179AC564A97BA369436F05316FE45FFA28B773FB
33397123BA7AB17605572D7B638B26127E1B86FB452C5B4F1FEAE1638D5D328AF893
B77A7D1106
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509SignedOCSPRequest
  TBSOCSPRequest
    Type: C509SignedOCSPRequest (1)
    Signature Algorithm: Ed25519 (12)
    Hash Algorithm: SHA256 (-16)
    RequestorCertHash
      44:f0:52:8b:56:f3:5a:d9
    Nonce
      11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
    Extensions: <empty>
    Requests
      OcspPerIssuerRequest
        issuerCertHash
          a0:1c:73:a5:f3:b0:63:34
        extensions: <empty>
        singleRequests
          SingleCertRequest
            SerialNumberHash:
              10:65:27:87:fa:05:27:bc:24:49:a1:bf:c5:ab:31:aa:
              5a:6f:0d:8d
            Extensions: <empty>
          SingleCertRequest
            SerialNumberHash:
              75:d8:bc:4f:ba:fc:66:94:46:76:41:e7:48:df:d5:3a:
              8b:9d:17:6d
            Extensions: <empty>
          SingleCertRequest
            SerialNumberHash:
              d1:ac:13:5d:7d:a2:9b:dc:f4:dc:a0:d5:28:1a:51:60:
              5b:67:84:00
            Extensions: <empty>
      OcspPerIssuerRequest
        issuerCertHash
          22:22:22:22:22:22:22:22
        extensions: <empty>
        singleRequests
          SingleCertRequest
            SerialNumberHash:
              d3:a0:c1:e3:db:92:e8:f6:81:05:37:d4:5c:fa:ec:f6:
              ce:41:7e:3b
            Extensions: <empty>
    Requestor Certs: null
  Signature Value
    7b:84:0f:ab:a2:17:9a:c5:64:a9:7b:a3:69:43:6f:05:
    31:6f:e4:5f:fa:28:b7:73:fb:33:39:71:23:ba:7a:b1:
    76:05:57:2d:7b:63:8b:26:12:7e:1b:86:fb:45:2c:5b:
    4f:1f:ea:e1:63:8d:5d:32:8a:f8:93:b7:7a:7d:11:06
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 89             # C509OCSPRequest=array[9]
  1:   01             # [0]. ocspRequestType=C509SignedOCSPRequest
                      #      (1)
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   2F             # [2]. hashAlgorithm=SHA256 (-16)
  4:   50             # [3]. nonce=byte[16]
  5:     11111111111111111111111111111111
 21:   48             # [4]. requestorCertHash=byte[8]
 22:     44F0528B56F35AD9
 30:   80             # [5]. extensions=array[0]
 31:   86             # [6]. requests=array[6]
                        #---PerIssuerRequests[0]---
 32:     48             # [0]. issuerCertHash=byte[8]
 33:       A01C73A5F3B06334
 41:     80             # [1]. extensions=array[0]
 42:     86             # [2]. singleRequests=array[6]
                          #---SingleCertRequests[0]---
 43:       54             # [0]. serialNumberHash=byte[20]
 44:         10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D
 64:       80             # [1]. extensions=array[0]
                          #---SingleCertRequests[1]---
 65:       54             # [2]. serialNumberHash=byte[20]
 66:         75D8BC4FBAFC6694467641E748DFD53A8B9D176D
 86:       80             # [3]. extensions=array[0]
                          #---SingleCertRequests[2]---
 87:       54             # [4]. serialNumberHash=byte[20]
 88:         D1AC135D7DA29BDCF4DCA0D5281A51605B678400
108:       80             # [5]. extensions=array[0]
                        #---PerIssuerRequests[1]---
109:     48             # [3]. issuerCertHash=byte[8]
110:       2222222222222222
118:     80             # [4]. extensions=array[0]
119:     82             # [5]. singleRequests=array[2]
                          #---SingleCertRequests[0]---
120:       54             # [0]. serialNumberHash=byte[20]
121:         D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B
141:       80             # [1]. extensions=array[0]
142:   F6             # [7]. requestorCerts=<null>
143:   58 40          # [8]. signatureValue=byte[64]
145:     7B840FABA2179AC564A97BA369436F05316FE45FFA28B773FB33397123
174:     BA7AB17605572D7B638B26127E1B86FB452C5B4F1FEAE1638D5D328AF8
203:     93B77A7D1106
]]></artwork>
          </section>
        </section>
        <section anchor="exam-signed-ocsp-req-withcert">
          <name>Signed OCSP Request Example With Requestor's Certificate</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 59%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ocsp-requestor-cert"/></t>
            </li>
            <li>
              <t>Signed OCSP Request (<tt>C509SignedOCSPRequest</tt>) with embedded requestor's certificate</t>
            </li>
            <li>
              <t>Note that the X.509 OCSP Request and the C509 OCSP Request are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-request-3">
            <name>X.509 OCSP Request</name>
            <t>PEM content (1035 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP REQUEST-----
MIIEBzCCAnGhHaQbMBkxFzAVBgNVBAMMDm9jc3AtcmVxdWVzdG9yMIIBrDBpMGcw
CwYJYIZIAWUDBAIBBCAyU450hb03rkVPHw0rl1XXWLkfbo46evOXoPQAYFxv+AQg
zBHIdAoFCexNoUzliG5yNkwPY7YO1jR/E8Fu5yW3ZqICFBI0EjQSNBI0EjQSNBI0
EjQSNBI0MGkwZzALBglghkgBZQMEAgEEIDJTjnSFvTeuRU8fDSuXVddYuR9ujjp6
85eg9ABgXG/4BCDMEch0CgUJ7E2hTOWIbnI2TA9jtg7WNH8TwW7nJbdmogIUNFY0
VjRWNFY0VjRWNFY0VjRWNFYwaTBnMAsGCWCGSAFlAwQCAQQgMlOOdIW9N65FTx8N
K5dV11i5H26OOnrzl6D0AGBcb/gEIMwRyHQKBQnsTaFM5YhucjZMD2O2DtY0fxPB
buclt2aiAhRWeFZ4VnhWeFZ4VnhWeFZ4VnhWeDBpMGcwCwYJYIZIAWUDBAIBBCAz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMwQgRERERERERERERERERERE
REREREREREREREREREREREQCFCIzIjMiMyIzIjMiMyIzIjMiMyIzooGfMIGcMBoG
CSsGAQUFBzABBAQNMAsGCSsGAQUFBzABATBfBgkrBgEFBQcwAQgEUjBQMAcwBQYD
K2VwMCEwCgYIKoZIzj0EAwIwEwYHKoZIzj0CAQYIKoZIzj0DAQcwIjAKBggqhkjO
PQQDAjAUBgcqhkjOPQIBBgkrJAMDAggBAQcwHQYJKwYBBQUHMAECBBARERERERER
ERERERERERERoIIBjjCCAYowBQYDK2VwA0EAnqnZjVvfg50lAZOGBiSExUCuMKja
IHCZKykPyiVpW8ECz2Ejd8NiIQ/pnXvzTRvbQz1i7y+figq4L4YZYGfjAaCCATww
ggE4MIIBNDCB56ADAgECAgISNjAFBgMrZXAwGjEYMBYGA1UEAwwPdGVzdCBjcmxv
Y3NwLWNhMB4XDTI1MDEwMjAwMDAwMFoXDTI2MDEwMjAwMDAwMFowGTEXMBUGA1UE
AwwOb2NzcC1yZXF1ZXN0b3IwKjAFBgMrZXADIQAEUwsXZO3UtOM6tErw+DiWHABx
dtdLajVG7Lf9VzIN06NSMFAwHQYDVR0OBBYEFLE21FmKGxtqhtplEK6lZNgSl+T5
MA4GA1UdDwEB/wQEAwIHgDAfBgNVHSMEGDAWgBTZfXfmNML3ADAMpY/IdzZbFVAH
ojAFBgMrZXADQQCY+ZIhXpHFm+r/HrfqPv0rqn4dvQHRKwN3gZhZyWeQP/nP6vYx
W73WoQgSSbXiyYVCHNASdBpZljgSyNJ6NX0C
-----END OCSP REQUEST-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-request-3">
            <name>C509 OCSP Request</name>
            <t>Plain Hex (420 bytes):</t>
            <artwork><![CDATA[
89010C2F50111111111111111111111111111111114844F0528B56F35AD984185D82
0001185E840CF600820118188648A01C73A5F3B0633480865410652787FA0527BC24
49A1BFC5AB31AA5A6F0D8D805475D8BC4FBAFC6694467641E748DFD53A8B9D176D80
54D1AC135D7DA29BDCF4DCA0D5281A51605B67840080482222222222222222808254
D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B8058C38B024212360C6F74657374
2063726C6F6373702D63611A6775D7001A69570A806E6F6373702D72657175657374
6F720C582004530B1764EDD4B4E33AB44AF0F838961C007176D74B6A3546ECB7FD57
320DD3860154DD51BDB2A2C791C062D4027856DBACF52607F0BE210107542F45E78D
2CAEDF368CDF53C39005D492450E10565840F8C6183ECF8C3EFD50DD4942D172814C
46EC0FC01DD586A597178DF864A0D9DA86B7CA17FC9F772FF04C80E98B60D5B4B624
08A277A5B70D0D2A3F5ED5442D07584075C65F028199FFC884B6A0E3E4F9EDC380A0
37B1E9B5868C74F5A0CEBCCDF6C7D0C0D69B1BB6976414444E156D72E12E2FF93678
2513516B02B4A1E40EB13D01
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509SignedOCSPRequest
  TBSOCSPRequest
    Type: C509SignedOCSPRequest (1)
    Signature Algorithm: Ed25519 (12)
    Hash Algorithm: SHA256 (-16)
    RequestorCertHash
      44:f0:52:8b:56:f3:5a:d9
    Nonce
      11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
    Extensions
      AcceptOCSPResponseTypes (93)
        C509ErrorOCSPResponse (0)
        C509BasicOCSPResponse (1)
      preferredSignatureAlgorithms (94)
          Preferred Signature Algorithm:
            Signature Algorithm: Ed25519 (12)
          Preferred Signature Algorithm:
            Signature Algorithm: ecdsa-with-sha256 (0)
            Public Key Algorithms:
              EC public key on curve secp256r1 (1)
              EC public key on curve brainpoolp256r1 (24)
    Requests
      OcspPerIssuerRequest
        issuerCertHash
          a0:1c:73:a5:f3:b0:63:34
        extensions: <empty>
        singleRequests
          SingleCertRequest
            SerialNumberHash:
              10:65:27:87:fa:05:27:bc:24:49:a1:bf:c5:ab:31:aa:
              5a:6f:0d:8d
            Extensions: <empty>
          SingleCertRequest
            SerialNumberHash:
              75:d8:bc:4f:ba:fc:66:94:46:76:41:e7:48:df:d5:3a:
              8b:9d:17:6d
            Extensions: <empty>
          SingleCertRequest
            SerialNumberHash:
              d1:ac:13:5d:7d:a2:9b:dc:f4:dc:a0:d5:28:1a:51:60:
              5b:67:84:00
            Extensions: <empty>
      OcspPerIssuerRequest
        issuerCertHash
          22:22:22:22:22:22:22:22
        extensions: <empty>
        singleRequests
          SingleCertRequest
            SerialNumberHash:
              d3:a0:c1:e3:db:92:e8:f6:81:05:37:d4:5c:fa:ec:f6:
              ce:41:7e:3b
            Extensions: <empty>
    Requestor Certs
      C509Certificate
        8b:02:42:12:36:0c:6f:74:65:73:74:20:63:72:6c:6f:
        63:73:70:2d:63:61:1a:67:75:d7:00:1a:69:57:0a:80:
        6e:6f:63:73:70:2d:72:65:71:75:65:73:74:6f:72:0c:
        58:20:04:53:0b:17:64:ed:d4:b4:e3:3a:b4:4a:f0:f8:
        38:96:1c:00:71:76:d7:4b:6a:35:46:ec:b7:fd:57:32:
        0d:d3:86:01:54:dd:51:bd:b2:a2:c7:91:c0:62:d4:02:
        78:56:db:ac:f5:26:07:f0:be:21:01:07:54:2f:45:e7:
        8d:2c:ae:df:36:8c:df:53:c3:90:05:d4:92:45:0e:10:
        56:58:40:f8:c6:18:3e:cf:8c:3e:fd:50:dd:49:42:d1:
        72:81:4c:46:ec:0f:c0:1d:d5:86:a5:97:17:8d:f8:64:
        a0:d9:da:86:b7:ca:17:fc:9f:77:2f:f0:4c:80:e9:8b:
        60:d5:b4:b6:24:08:a2:77:a5:b7:0d:0d:2a:3f:5e:d5:
        44:2d:07
  Signature Value
    75:c6:5f:02:81:99:ff:c8:84:b6:a0:e3:e4:f9:ed:c3:
    80:a0:37:b1:e9:b5:86:8c:74:f5:a0:ce:bc:cd:f6:c7:
    d0:c0:d6:9b:1b:b6:97:64:14:44:4e:15:6d:72:e1:2e:
    2f:f9:36:78:25:13:51:6b:02:b4:a1:e4:0e:b1:3d:01
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 89             # C509OCSPRequest=array[9]
  1:   01             # [0]. ocspRequestType=C509SignedOCSPRequest
                      #      (1)
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   2F             # [2]. hashAlgorithm=SHA256 (-16)
  4:   50             # [3]. nonce=byte[16]
  5:     11111111111111111111111111111111
 21:   48             # [4]. requestorCertHash=byte[8]
 22:     44F0528B56F35AD9
 30:   84             # [5]. extensions=array[4]
                        #---extension[0]---
 31:     18 5D          # [0]. type=AcceptOCSPResponseTypes (93)
 33:     82             # [1]. value=array[2]
 34:       00             # [0]. C509ErrorOCSPResponse (0)
 35:       01             # [1]. C509BasicOCSPResponse (1)
                        #---extension[1]---
 36:     18 5E          # [2]. type=preferredSignatureAlgorithms
                        #      (94)
 38:     84             # [3]. value=array[4]
                          #---preferredSignatureAlgorithms[0]---
 39:       0C             # [0]. sigIdentifier=Ed25519 (12)
 40:       F6             # [1]. pubKeyAlgIdentifiers=<null>
                          #---preferredSignatureAlgorithms[1]---
 41:       00             # [2]. sigIdentifier=ecdsa-with-sha256 (0)
 42:       82             # [3]. pubKeyAlgIdentifiers=array[2]
 43:         01             # [0]. pubKeyAlgIdentifier=EC public key
                            #      on curve secp256r1 (1)
 44:         18 18          # [1]. pubKeyAlgIdentifier=EC public key
                            #      on curve brainpoolp256r1 (24)
 46:   86             # [6]. requests=array[6]
                        #---PerIssuerRequests[0]---
 47:     48             # [0]. issuerCertHash=byte[8]
 48:       A01C73A5F3B06334
 56:     80             # [1]. extensions=array[0]
 57:     86             # [2]. singleRequests=array[6]
                          #---SingleCertRequests[0]---
 58:       54             # [0]. serialNumberHash=byte[20]
 59:         10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D
 79:       80             # [1]. extensions=array[0]
                          #---SingleCertRequests[1]---
 80:       54             # [2]. serialNumberHash=byte[20]
 81:         75D8BC4FBAFC6694467641E748DFD53A8B9D176D
101:       80             # [3]. extensions=array[0]
                          #---SingleCertRequests[2]---
102:       54             # [4]. serialNumberHash=byte[20]
103:         D1AC135D7DA29BDCF4DCA0D5281A51605B678400
123:       80             # [5]. extensions=array[0]
                        #---PerIssuerRequests[1]---
124:     48             # [3]. issuerCertHash=byte[8]
125:       2222222222222222
133:     80             # [4]. extensions=array[0]
134:     82             # [5]. singleRequests=array[2]
                          #---SingleCertRequests[0]---
135:       54             # [0]. serialNumberHash=byte[20]
136:         D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B
156:       80             # [1]. extensions=array[0]
157:   58 C3          # [7]. requestorCerts(COSE_C509)=byte[195]
159:     8B024212360C6F746573742063726C6F6373702D63611A6775D7001A69
188:     570A806E6F6373702D726571756573746F720C582004530B1764EDD4B4
217:     E33AB44AF0F838961C007176D74B6A3546ECB7FD57320DD3860154DD51
246:     BDB2A2C791C062D4027856DBACF52607F0BE210107542F45E78D2CAEDF
275:     368CDF53C39005D492450E10565840F8C6183ECF8C3EFD50DD4942D172
304:     814C46EC0FC01DD586A597178DF864A0D9DA86B7CA17FC9F772FF04C80
333:     E98B60D5B4B62408A277A5B70D0D2A3F5ED5442D07
354:   58 40          # [8]. signatureValue=byte[64]
356:     75C65F028199FFC884B6A0E3E4F9EDC380A037B1E9B5868C74F5A0CEBC
385:     CDF6C7D0C0D69B1BB6976414444E156D72E12E2FF936782513516B02B4
414:     A1E40EB13D01
]]></artwork>
          </section>
        </section>
        <section anchor="exam-signed-ocsp-req-withcertchain">
          <name>Signed OCSP Request Example With Requestor's Certificate Chain</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 54%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ocsp-requestor-cert"/></t>
            </li>
            <li>
              <t>Signed OCSP Request (<tt>C509SignedOCSPRequest</tt>) with embedded requestor's certificate chain (2 certificates)</t>
            </li>
            <li>
              <t>Note that the X.509 OCSP Request and the C509 OCSP Request are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-request-4">
            <name>X.509 OCSP Request</name>
            <t>PEM content (1371 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP REQUEST-----
MIIFVzCCAnGhHaQbMBkxFzAVBgNVBAMMDm9jc3AtcmVxdWVzdG9yMIIBrDBpMGcw
CwYJYIZIAWUDBAIBBCAyU450hb03rkVPHw0rl1XXWLkfbo46evOXoPQAYFxv+AQg
zBHIdAoFCexNoUzliG5yNkwPY7YO1jR/E8Fu5yW3ZqICFBI0EjQSNBI0EjQSNBI0
EjQSNBI0MGkwZzALBglghkgBZQMEAgEEIDJTjnSFvTeuRU8fDSuXVddYuR9ujjp6
85eg9ABgXG/4BCDMEch0CgUJ7E2hTOWIbnI2TA9jtg7WNH8TwW7nJbdmogIUNFY0
VjRWNFY0VjRWNFY0VjRWNFYwaTBnMAsGCWCGSAFlAwQCAQQgMlOOdIW9N65FTx8N
K5dV11i5H26OOnrzl6D0AGBcb/gEIMwRyHQKBQnsTaFM5YhucjZMD2O2DtY0fxPB
buclt2aiAhRWeFZ4VnhWeFZ4VnhWeFZ4VnhWeDBpMGcwCwYJYIZIAWUDBAIBBCAz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMwQgRERERERERERERERERERE
REREREREREREREREREREREQCFCIzIjMiMyIzIjMiMyIzIjMiMyIzooGfMIGcMBoG
CSsGAQUFBzABBAQNMAsGCSsGAQUFBzABATBfBgkrBgEFBQcwAQgEUjBQMAcwBQYD
K2VwMCEwCgYIKoZIzj0EAwIwEwYHKoZIzj0CAQYIKoZIzj0DAQcwIjAKBggqhkjO
PQQDAjAUBgcqhkjOPQIBBgkrJAMDAggBAQcwHQYJKwYBBQUHMAECBBARERERERER
ERERERERERERoIIC3jCCAtowBQYDK2VwA0EAnqnZjVvfg50lAZOGBiSExUCuMKja
IHCZKykPyiVpW8ECz2Ejd8NiIQ/pnXvzTRvbQz1i7y+figq4L4YZYGfjAaCCAoww
ggKIMIIBNDCB56ADAgECAgISNjAFBgMrZXAwGjEYMBYGA1UEAwwPdGVzdCBjcmxv
Y3NwLWNhMB4XDTI1MDEwMjAwMDAwMFoXDTI2MDEwMjAwMDAwMFowGTEXMBUGA1UE
AwwOb2NzcC1yZXF1ZXN0b3IwKjAFBgMrZXADIQAEUwsXZO3UtOM6tErw+DiWHABx
dtdLajVG7Lf9VzIN06NSMFAwHQYDVR0OBBYEFLE21FmKGxtqhtplEK6lZNgSl+T5
MA4GA1UdDwEB/wQEAwIHgDAfBgNVHSMEGDAWgBTZfXfmNML3ADAMpY/IdzZbFVAH
ojAFBgMrZXADQQCY+ZIhXpHFm+r/HrfqPv0rqn4dvQHRKwN3gZhZyWeQP/nP6vYx
W73WoQgSSbXiyYVCHNASdBpZljgSyNJ6NX0CMIIBTDCB/6ADAgECAgEBMAUGAytl
cDAeMRwwGgYDVQQDDBN0ZXN0IGNybG9jc3Atcm9vdGNhMB4XDTI1MDEwMTAwMDAw
MFoXDTI2MTIzMTIzNTk1OVowGjEYMBYGA1UEAwwPdGVzdCBjcmxvY3NwLWNhMCow
BQYDK2VwAyEAXvijVaABp8UNI0lHASCBMaS7Krkg1Av7DuH2qyj/dACjZjBkMB0G
A1UdDgQWBBTZfXfmNML3ADAMpY/IdzZbFVAHojAOBgNVHQ8BAf8EBAMCAQYwEgYD
VR0TAQH/BAgwBgEB/wIBATAfBgNVHSMEGDAWgBSRI5z6+eeDbLKfUeExkdsQ064W
kzAFBgMrZXADQQDWXgHXy/pBf7F7mfeX7Wknr1Yv9j6NNbPjp9OBYMxkZ0AQTY85
GJfdqxGY89BaJhkgQ2Km+DwziCEbNrxWPUEC
-----END OCSP REQUEST-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-request-4">
            <name>C509 OCSP Request</name>
            <t>Plain Hex (625 bytes):</t>
            <artwork><![CDATA[
89010C2F50111111111111111111111111111111114844F0528B56F35AD984185D82
0001185E840CF600820118188648A01C73A5F3B0633480865410652787FA0527BC24
49A1BFC5AB31AA5A6F0D8D805475D8BC4FBAFC6694467641E748DFD53A8B9D176D80
54D1AC135D7DA29BDCF4DCA0D5281A51605B67840080482222222222222222808254
D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B808258C38B024212360C6F746573
742063726C6F6373702D63611A6775D7001A69570A806E6F6373702D726571756573
746F720C582004530B1764EDD4B4E33AB44AF0F838961C007176D74B6A3546ECB7FD
57320DD3860154DD51BDB2A2C791C062D4027856DBACF52607F0BE210107542F45E7
8D2CAEDF368CDF53C39005D492450E10565840F8C6183ECF8C3EFD50DD4942D17281
4C46EC0FC01DD586A597178DF864A0D9DA86B7CA17FC9F772FF04C80E98B60D5B4B6
2408A277A5B70D0D2A3F5ED5442D0758CA8B0241010C73746573742063726C6F6373
702D726F6F7463611A677485801A6B36EC7F6F746573742063726C6F6373702D6361
0C58205EF8A355A001A7C50D23494701208131A4BB2AB920D40BFB0EE1F6AB28FF74
008801542F45E78D2CAEDF368CDF53C39005D492450E1056211860230107542DA3A4
03F7D2F4E0B3D8031A73BA8A839F557F0F5840E50465D60C02A2111EF3FC6E44F2A3
6008765B552351F9A3F5B2AA7C76F1F05D259847A4F4250B2E4B0AE2099762A2596D
3CC1DB2CCD180AA0A2D0E191310B0F58408EC4D20A1C156B2FDB61D82D39EF9D54CC
BFFE42EAC1ACADDECD20787D979A38823BBB1A6458C22F07E6487073769FB9B52544
7A43B0C9C3BCDE790455DEC508
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509SignedOCSPRequest
  TBSOCSPRequest
    Type: C509SignedOCSPRequest (1)
    Signature Algorithm: Ed25519 (12)
    Hash Algorithm: SHA256 (-16)
    RequestorCertHash
      44:f0:52:8b:56:f3:5a:d9
    Nonce
      11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
    Extensions
      AcceptOCSPResponseTypes (93)
        C509ErrorOCSPResponse (0)
        C509BasicOCSPResponse (1)
      preferredSignatureAlgorithms (94)
          Preferred Signature Algorithm:
            Signature Algorithm: Ed25519 (12)
          Preferred Signature Algorithm:
            Signature Algorithm: ecdsa-with-sha256 (0)
            Public Key Algorithms:
              EC public key on curve secp256r1 (1)
              EC public key on curve brainpoolp256r1 (24)
    Requests
      OcspPerIssuerRequest
        issuerCertHash
          a0:1c:73:a5:f3:b0:63:34
        extensions: <empty>
        singleRequests
          SingleCertRequest
            SerialNumberHash:
              10:65:27:87:fa:05:27:bc:24:49:a1:bf:c5:ab:31:aa:
              5a:6f:0d:8d
            Extensions: <empty>
          SingleCertRequest
            SerialNumberHash:
              75:d8:bc:4f:ba:fc:66:94:46:76:41:e7:48:df:d5:3a:
              8b:9d:17:6d
            Extensions: <empty>
          SingleCertRequest
            SerialNumberHash:
              d1:ac:13:5d:7d:a2:9b:dc:f4:dc:a0:d5:28:1a:51:60:
              5b:67:84:00
            Extensions: <empty>
      OcspPerIssuerRequest
        issuerCertHash
          22:22:22:22:22:22:22:22
        extensions: <empty>
        singleRequests
          SingleCertRequest
            SerialNumberHash:
              d3:a0:c1:e3:db:92:e8:f6:81:05:37:d4:5c:fa:ec:f6:
              ce:41:7e:3b
            Extensions: <empty>
    Requestor Certs
      C509Certificate
        8b:02:42:12:36:0c:6f:74:65:73:74:20:63:72:6c:6f:
        63:73:70:2d:63:61:1a:67:75:d7:00:1a:69:57:0a:80:
        6e:6f:63:73:70:2d:72:65:71:75:65:73:74:6f:72:0c:
        58:20:04:53:0b:17:64:ed:d4:b4:e3:3a:b4:4a:f0:f8:
        38:96:1c:00:71:76:d7:4b:6a:35:46:ec:b7:fd:57:32:
        0d:d3:86:01:54:dd:51:bd:b2:a2:c7:91:c0:62:d4:02:
        78:56:db:ac:f5:26:07:f0:be:21:01:07:54:2f:45:e7:
        8d:2c:ae:df:36:8c:df:53:c3:90:05:d4:92:45:0e:10:
        56:58:40:f8:c6:18:3e:cf:8c:3e:fd:50:dd:49:42:d1:
        72:81:4c:46:ec:0f:c0:1d:d5:86:a5:97:17:8d:f8:64:
        a0:d9:da:86:b7:ca:17:fc:9f:77:2f:f0:4c:80:e9:8b:
        60:d5:b4:b6:24:08:a2:77:a5:b7:0d:0d:2a:3f:5e:d5:
        44:2d:07
      C509Certificate
        8b:02:41:01:0c:73:74:65:73:74:20:63:72:6c:6f:63:
        73:70:2d:72:6f:6f:74:63:61:1a:67:74:85:80:1a:6b:
        36:ec:7f:6f:74:65:73:74:20:63:72:6c:6f:63:73:70:
        2d:63:61:0c:58:20:5e:f8:a3:55:a0:01:a7:c5:0d:23:
        49:47:01:20:81:31:a4:bb:2a:b9:20:d4:0b:fb:0e:e1:
        f6:ab:28:ff:74:00:88:01:54:2f:45:e7:8d:2c:ae:df:
        36:8c:df:53:c3:90:05:d4:92:45:0e:10:56:21:18:60:
        23:01:07:54:2d:a3:a4:03:f7:d2:f4:e0:b3:d8:03:1a:
        73:ba:8a:83:9f:55:7f:0f:58:40:e5:04:65:d6:0c:02:
        a2:11:1e:f3:fc:6e:44:f2:a3:60:08:76:5b:55:23:51:
        f9:a3:f5:b2:aa:7c:76:f1:f0:5d:25:98:47:a4:f4:25:
        0b:2e:4b:0a:e2:09:97:62:a2:59:6d:3c:c1:db:2c:cd:
        18:0a:a0:a2:d0:e1:91:31:0b:0f
  Signature Value
    8e:c4:d2:0a:1c:15:6b:2f:db:61:d8:2d:39:ef:9d:54:
    cc:bf:fe:42:ea:c1:ac:ad:de:cd:20:78:7d:97:9a:38:
    82:3b:bb:1a:64:58:c2:2f:07:e6:48:70:73:76:9f:b9:
    b5:25:44:7a:43:b0:c9:c3:bc:de:79:04:55:de:c5:08
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 89             # C509OCSPRequest=array[9]
  1:   01             # [0]. ocspRequestType=C509SignedOCSPRequest
                      #      (1)
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   2F             # [2]. hashAlgorithm=SHA256 (-16)
  4:   50             # [3]. nonce=byte[16]
  5:     11111111111111111111111111111111
 21:   48             # [4]. requestorCertHash=byte[8]
 22:     44F0528B56F35AD9
 30:   84             # [5]. extensions=array[4]
                        #---extension[0]---
 31:     18 5D          # [0]. type=AcceptOCSPResponseTypes (93)
 33:     82             # [1]. value=array[2]
 34:       00             # [0]. C509ErrorOCSPResponse (0)
 35:       01             # [1]. C509BasicOCSPResponse (1)
                        #---extension[1]---
 36:     18 5E          # [2]. type=preferredSignatureAlgorithms
                        #      (94)
 38:     84             # [3]. value=array[4]
                          #---preferredSignatureAlgorithms[0]---
 39:       0C             # [0]. sigIdentifier=Ed25519 (12)
 40:       F6             # [1]. pubKeyAlgIdentifiers=<null>
                          #---preferredSignatureAlgorithms[1]---
 41:       00             # [2]. sigIdentifier=ecdsa-with-sha256 (0)
 42:       82             # [3]. pubKeyAlgIdentifiers=array[2]
 43:         01             # [0]. pubKeyAlgIdentifier=EC public key
                            #      on curve secp256r1 (1)
 44:         18 18          # [1]. pubKeyAlgIdentifier=EC public key
                            #      on curve brainpoolp256r1 (24)
 46:   86             # [6]. requests=array[6]
                        #---PerIssuerRequests[0]---
 47:     48             # [0]. issuerCertHash=byte[8]
 48:       A01C73A5F3B06334
 56:     80             # [1]. extensions=array[0]
 57:     86             # [2]. singleRequests=array[6]
                          #---SingleCertRequests[0]---
 58:       54             # [0]. serialNumberHash=byte[20]
 59:         10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D
 79:       80             # [1]. extensions=array[0]
                          #---SingleCertRequests[1]---
 80:       54             # [2]. serialNumberHash=byte[20]
 81:         75D8BC4FBAFC6694467641E748DFD53A8B9D176D
101:       80             # [3]. extensions=array[0]
                          #---SingleCertRequests[2]---
102:       54             # [4]. serialNumberHash=byte[20]
103:         D1AC135D7DA29BDCF4DCA0D5281A51605B678400
123:       80             # [5]. extensions=array[0]
                        #---PerIssuerRequests[1]---
124:     48             # [3]. issuerCertHash=byte[8]
125:       2222222222222222
133:     80             # [4]. extensions=array[0]
134:     82             # [5]. singleRequests=array[2]
                          #---SingleCertRequests[0]---
135:       54             # [0]. serialNumberHash=byte[20]
136:         D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B
156:       80             # [1]. extensions=array[0]
157:   82             # [7]. requestorCerts(COSE_C509)=array[2]
158:     58 C3          # [0]. C509CertData=byte[195]
160:       8B024212360C6F746573742063726C6F6373702D63611A6775D7001A
188:       69570A806E6F6373702D726571756573746F720C582004530B1764ED
216:       D4B4E33AB44AF0F838961C007176D74B6A3546ECB7FD57320DD38601
244:       54DD51BDB2A2C791C062D4027856DBACF52607F0BE210107542F45E7
272:       8D2CAEDF368CDF53C39005D492450E10565840F8C6183ECF8C3EFD50
300:       DD4942D172814C46EC0FC01DD586A597178DF864A0D9DA86B7CA17FC
328:       9F772FF04C80E98B60D5B4B62408A277A5B70D0D2A3F5ED5442D07
355:     58 CA          # [1]. C509CertData=byte[202]
357:       8B0241010C73746573742063726C6F6373702D726F6F7463611A6774
385:       85801A6B36EC7F6F746573742063726C6F6373702D63610C58205EF8
413:       A355A001A7C50D23494701208131A4BB2AB920D40BFB0EE1F6AB28FF
441:       74008801542F45E78D2CAEDF368CDF53C39005D492450E1056211860
469:       230107542DA3A403F7D2F4E0B3D8031A73BA8A839F557F0F5840E504
497:       65D60C02A2111EF3FC6E44F2A36008765B552351F9A3F5B2AA7C76F1
525:       F05D259847A4F4250B2E4B0AE2099762A2596D3CC1DB2CCD180AA0A2
553:       D0E191310B0F
559:   58 40          # [8]. signatureValue=byte[64]
561:     8EC4D20A1C156B2FDB61D82D39EF9D54CCBFFE42EAC1ACADDECD20787D
590:     979A38823BBB1A6458C22F07E6487073769FB9B525447A43B0C9C3BCDE
619:     790455DEC508
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="ocsp-response-examples">
        <name>OCSP Response Examples</name>
        <section anchor="exam-error-ocsp-resp">
          <name>Error OCSP Response Example</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 40%</t>
            </li>
            <li>
              <t>Error Response (<tt>C509ErrorOCSPResponse</tt>)</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-response">
            <name>X.509 OCSP Response</name>
            <t>PEM content (5 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP RESPONSE-----
MAMKAQY=
-----END OCSP RESPONSE-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-response">
            <name>C509 OCSP Response</name>
            <t>Plain Hex (3 bytes):</t>
            <artwork><![CDATA[
820006
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509ErrorResponse
  Type:   C509ErrorOCSPResponse (0)
  Status: unauthorized (6)
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
0: 82             # C509OCSPResponse=array[2]
1:   00             # [0]. ocspResponseType=C509ErrorOCSPResponse
                    #      (0)
2:   06             # [1]. responseStatus=unauthorized (6)
]]></artwork>
          </section>
        </section>
        <section anchor="exam-simple-ocsp-resp">
          <name>Simple OCSP Response Example</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 58%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ocsp-responder-cert"/></t>
            </li>
            <li>
              <t>Simple OCSP Response (<tt>C509SimpleOCSPResponse</tt>) without responder's certificate</t>
            </li>
            <li>
              <t>Note that the X.509 OCSP Response and the C509 OCSP Response are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-response-1">
            <name>X.509 OCSP Response</name>
            <t>PEM content (336 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP RESPONSE-----
MIIBTAoBAKCCAUUwggFBBgkrBgEFBQcwAQEEggEyMIIBLjCB4aIWBBTq5ZqK6ar0
EEsV5Q6O4BcVF3QYrxgPMjAyNTAzMDMwMDAwMDBaMIGSMIGPMGcwCwYJYIZIAWUD
BAIBBCAyU450hb03rkVPHw0rl1XXWLkfbo46evOXoPQAYFxv+AQgzBHIdAoFCexN
oUzliG5yNkwPY7YO1jR/E8Fu5yW3ZqICFBI0EjQSNBI0EjQSNBI0EjQSNBI0gAAY
DzIwMjUwMzAyMTYwMDAwWqARGA8yMDI1MDMwMzA3MDAwMFqhITAfMB0GCSsGAQUF
BzABAgQQERERERERERERERERERERETAFBgMrZXADQQAoVz6mB1JqePHWA2adyeK4
ElU3cwbFiAepAQkUhmtUT9vU4J4mc/QxA39Ja36kVABy8+f62xw0f+5v3G9LTS0M
-----END OCSP RESPONSE-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-response-1">
            <name>C509 OCSP Response</name>
            <t>Plain Hex (140 bytes):</t>
            <artwork><![CDATA[
8E020C2F5011111111111111111111111111111111480600867838E3311A48A01C73
A5F3B063345410652787FA0527BC2449A1BFC5AB31AA5A6F0D8D001A67C4F1003970
7F19627080F6584052D9F137BC08E4D17C3C1A0412EF70F6C4BA7124EB998F3B0A53
AAF62F84FD18BF9AB24AEC7CE9C73717A816BFA1E3E9B0BEE6FA1DD588F0A2C838DF
DED37404
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509SimpleOCSPResponse
  TBSSimpleOCSPResponse
    Type: C509SimpleOCSPResponse (2)
    Signature Algorithm: Ed25519 (12)
    Hash Algorithm: SHA256 (-16)
    Nonce
      11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
    ResponderCertHash
      06:00:86:78:38:e3:31:1a
    IssuerCertHash
      a0:1c:73:a5:f3:b0:63:34
    SerialNumberHash
      10:65:27:87:fa:05:27:bc:24:49:a1:bf:c5:ab:31:aa:
      5a:6f:0d:8d
    Cert Status: good
    ProducedAt: 2025-03-03T00:00:00Z
    This Update: -28800, 2025-03-02T16:00:00Z
    Next Update: 25200, 2025-03-03T07:00:00Z
    Extensions: <empty>
    Responder Certs: null
  Signature Value
    52:d9:f1:37:bc:08:e4:d1:7c:3c:1a:04:12:ef:70:f6:
    c4:ba:71:24:eb:99:8f:3b:0a:53:aa:f6:2f:84:fd:18:
    bf:9a:b2:4a:ec:7c:e9:c7:37:17:a8:16:bf:a1:e3:e9:
    b0:be:e6:fa:1d:d5:88:f0:a2:c8:38:df:de:d3:74:04
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 8E             # C509OCSPResponse=array[14]
  1:   02             # [0]. ocspResponseType=C509SimpleOCSPResponse
                      #      (2)
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   2F             # [2]. hashAlgorithm=SHA256 (-16)
  4:   50             # [3]. nonce=byte[16]
  5:     11111111111111111111111111111111
 21:   48             # [4]. responderCertHash=byte[8]
 22:     0600867838E3311A
 30:   48             # [5]. issuerCertHash=byte[8]
 31:     A01C73A5F3B06334
 39:   54             # [6]. serialNumberHash=byte[20]
 40:     10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D
 60:   00             # [7]. certStatus=good (0)
 61:   1A 67C4F100    # [8]. producedAt=1740960000:
                      #      2025-03-03T00:00:00Z
 66:   39 707F        # [9]. thisUpdate=-28800: 2025-03-02T16:00:00Z
 69:   19 6270        # [10]. nextUpdate=25200: 2025-03-03T07:00:00Z
 72:   80             # [11]. extensions=array[0]
 73:   F6             # [12]. responderCerts=<null>
 74:   58 40          # [13]. signatureValue=byte[64]
 76:     52D9F137BC08E4D17C3C1A0412EF70F6C4BA7124EB998F3B0A53AAF62F
105:     84FD18BF9AB24AEC7CE9C73717A816BFA1E3E9B0BEE6FA1DD588F0A2C8
134:     38DFDED37404
]]></artwork>
          </section>
        </section>
        <section anchor="exam-basic-ocsp-resp">
          <name>Basic OCSP Response Example Without Responder's Certificate</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 70%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ocsp-responder-cert"/></t>
            </li>
            <li>
              <t>Basic OCSP Response (<tt>C509BasicOCSPResponse</tt>) without responder's certificate</t>
            </li>
            <li>
              <t>Note that the X.509 OCSP Response and the C509 OCSP Response are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-response-2">
            <name>X.509 OCSP Response</name>
            <t>PEM content (837 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP RESPONSE-----
MIIDQQoBAKCCAzowggM2BgkrBgEFBQcwAQEEggMnMIIDIzCCAtWiFgQU6uWaiumq
9BBLFeUOjuAXFRd0GK8YDzIwMjUwMzAzMDAwMDAwWjCCAnQwgY8wZzALBglghkgB
ZQMEAgEEIDJTjnSFvTeuRU8fDSuXVddYuR9ujjp685eg9ABgXG/4BCDMEch0CgUJ
7E2hTOWIbnI2TA9jtg7WNH8TwW7nJbdmogIUEjQSNBI0EjQSNBI0EjQSNBI0EjSA
ABgPMjAyNTAzMDIxNjAwMDBaoBEYDzIwMjUwMzAzMDcwMDAwWjCBpTBnMAsGCWCG
SAFlAwQCAQQgMlOOdIW9N65FTx8NK5dV11i5H26OOnrzl6D0AGBcb/gEIMwRyHQK
BQnsTaFM5YhucjZMD2O2DtY0fxPBbuclt2aiAhQ0VjRWNFY0VjRWNFY0VjRWNFY0
VqEWGA8xOTcwMDEwMTAwMDAwMFqgAwoBBhgPMjAyNTAzMDIxNjAwMDBaoBEYDzIw
MjUwMzAzMDcwMDAwWjCBpTBnMAsGCWCGSAFlAwQCAQQgMlOOdIW9N65FTx8NK5dV
11i5H26OOnrzl6D0AGBcb/gEIMwRyHQKBQnsTaFM5YhucjZMD2O2DtY0fxPBbucl
t2aiAhRWeFZ4VnhWeFZ4VnhWeFZ4VnhWeKEWGA8yMDI1MDMwMTE2MDAwMFqgAwoB
BBgPMjAyNTAzMDIxNjAwMDBaoBEYDzIwMjUwMzAzMDcwMDAwWjCBjzBnMAsGCWCG
SAFlAwQCAQQgMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMEIERERERE
REREREREREREREREREREREREREREREREREREAhQiMyIzIjMiMyIzIjMiMyIzIjMi
M4IAGA8yMDI1MDMwMjE2MDAwMFqgERgPMjAyNTAzMDMwNzAwMDBaoTIwMDAdBgkr
BgEFBQcwAQIEEBEREREREREREREREREREREwDwYJKwYBBQUHMAEJBAIFADAFBgMr
ZXADQQCaRi+pYIEMvQ/4MpYqP8MDa4wRdqow+HmCecWetC36CdSC0KF+oukKTk/b
65VJ3TmJa1blNiaKl58HVz5zVR8D
-----END OCSP RESPONSE-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-response-2">
            <name>C509 OCSP Response</name>
            <t>Plain Hex (248 bytes):</t>
            <artwork><![CDATA[
8A010C2F5011111111111111111111111111111111480600867838E3311A1A67C4F1
00808648A01C73A5F3B06334808F5410652787FA0527BC2449A1BFC5AB31AA5A6F0D
8D0039707F196270805475D8BC4FBAFC6694467641E748DFD53A8B9D176D0139707F
1962708054D1AC135D7DA29BDCF4DCA0D5281A51605B678400821A67C32F00043970
7F19627080482222222222222222808554D3A0C1E3DB92E8F6810537D45CFAECF6CE
417E3B0239707F19627080F658401BB7E5C65F7D65260A4FB127BE66B1DB3E7C9F16
DC2969D5F67DFCF25DCCF1EE09ED28441F92B5242AF60F760AE4029EC5C74DB7C042
3A941F869358C71FF800
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509BasicOCSPResponse
  TBSBasicOCSPResponse
    Type: C509BasicOCSPResponse (1)
    Signature Algorithm: Ed25519 (12)
    Hash Algorithm: SHA256 (-16)
    Nonce
      11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
    ResponderCertHash
      06:00:86:78:38:e3:31:1a
    ProducedAt: 2025-03-03T00:00:00Z
    Extensions: <empty>
    Responses
      OcspPerIssuerResponse
        IssuerCertHash
          a0:1c:73:a5:f3:b0:63:34
        Extensions: <empty>
        SingleResponses
          SingleCertResponse
            SerialNumberHash:
              10:65:27:87:fa:05:27:bc:24:49:a1:bf:c5:ab:31:aa:
              5a:6f:0d:8d
            Cert Status: good
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
          SingleCertResponse
            SerialNumberHash:
              75:d8:bc:4f:ba:fc:66:94:46:76:41:e7:48:df:d5:3a:
              8b:9d:17:6d
            Cert Status: not-issued
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
          SingleCertResponse
            SerialNumberHash:
              d1:ac:13:5d:7d:a2:9b:dc:f4:dc:a0:d5:28:1a:51:60:
              5b:67:84:00
            Cert Status: revoked (superseded)
              Revoked at 2025-03-01T16:00:00Z
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
      OcspPerIssuerResponse
        IssuerCertHash
          22:22:22:22:22:22:22:22
        Extensions: <empty>
        SingleResponses
          SingleCertResponse
            SerialNumberHash:
              d3:a0:c1:e3:db:92:e8:f6:81:05:37:d4:5c:fa:ec:f6:
              ce:41:7e:3b
            Cert Status: unknown
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
    Responder Certs: null
  Signature Value
    1b:b7:e5:c6:5f:7d:65:26:0a:4f:b1:27:be:66:b1:db:
    3e:7c:9f:16:dc:29:69:d5:f6:7d:fc:f2:5d:cc:f1:ee:
    09:ed:28:44:1f:92:b5:24:2a:f6:0f:76:0a:e4:02:9e:
    c5:c7:4d:b7:c0:42:3a:94:1f:86:93:58:c7:1f:f8:00
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 8A             # C509OCSPResponse=array[10]
  1:   01             # [0]. ocspResponseType=C509BasicOCSPResponse
                      #      (1)
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   2F             # [2]. hashAlgorithm=SHA256 (-16)
  4:   50             # [3]. nonce=byte[16]
  5:     11111111111111111111111111111111
 21:   48             # [4]. responderCertHash=byte[8]
 22:     0600867838E3311A
 30:   1A 67C4F100    # [5]. producedAt=1740960000:
                      #      2025-03-03T00:00:00Z
 35:   80             # [6]. extensions=array[0]
 36:   86             # [7]. responses=array[6]
                        #---PerIssuerResponses[0]---
 37:     48             # [0]. issuerCertHash=byte[8]
 38:       A01C73A5F3B06334
 46:     80             # [1]. extensions=array[0]
 47:     8F             # [2]. singleResponses=array[15]
                          #---SingleCertResponses[0]---
 48:       54             # [0]. serialNumberHash=byte[20]
 49:         10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D
 69:       00             # [1]. certStatus=good (0)
 70:       39 707F        # [2]. thisUpdate=-28800:
                          #      2025-03-02T16:00:00Z
 73:       19 6270        # [3]. nextUpdate=25200:
                          #      2025-03-03T07:00:00Z
 76:       80             # [4]. extensions=array[0]
                          #---SingleCertResponses[1]---
 77:       54             # [5]. serialNumberHash=byte[20]
 78:         75D8BC4FBAFC6694467641E748DFD53A8B9D176D
 98:       01             # [6]. certStatus=not-issued (1)
 99:       39 707F        # [7]. thisUpdate=-28800:
                          #      2025-03-02T16:00:00Z
102:       19 6270        # [8]. nextUpdate=25200:
                          #      2025-03-03T07:00:00Z
105:       80             # [9]. extensions=array[0]
                          #---SingleCertResponses[2]---
106:       54             # [10]. serialNumberHash=byte[20]
107:         D1AC135D7DA29BDCF4DCA0D5281A51605B678400
127:       82             # [11]. certStatus=array[2]
128:         1A 67C32F00    # [0]. revocationTime=1740844800:
                            #      2025-03-01T16:00:00Z
133:         04             # [1]. revocationReason=superseded (4)
134:       39 707F        # [12]. thisUpdate=-28800:
                          #       2025-03-02T16:00:00Z
137:       19 6270        # [13]. nextUpdate=25200:
                          #       2025-03-03T07:00:00Z
140:       80             # [14]. extensions=array[0]
                        #---PerIssuerResponses[1]---
141:     48             # [3]. issuerCertHash=byte[8]
142:       2222222222222222
150:     80             # [4]. extensions=array[0]
151:     85             # [5]. singleResponses=array[5]
                          #---SingleCertResponses[0]---
152:       54             # [0]. serialNumberHash=byte[20]
153:         D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B
173:       02             # [1]. certStatus=unknown (2)
174:       39 707F        # [2]. thisUpdate=-28800:
                          #      2025-03-02T16:00:00Z
177:       19 6270        # [3]. nextUpdate=25200:
                          #      2025-03-03T07:00:00Z
180:       80             # [4]. extensions=array[0]
181:   F6             # [8]. responderCerts=<null>
182:   58 40          # [9]. signature value=byte[64]
184:     1BB7E5C65F7D65260A4FB127BE66B1DB3E7C9F16DC2969D5F67DFCF25D
213:     CCF1EE09ED28441F92B5242AF60F760AE4029EC5C74DB7C0423A941F86
242:     9358C71FF800
]]></artwork>
          </section>
        </section>
        <section anchor="exam-basic-ocsp-resp-withcert">
          <name>Basic OCSP Response Example With Responder's Certificate</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 62%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ocsp-responder-cert"/></t>
            </li>
            <li>
              <t>Basic OCSP Response (<tt>C509BasicOCSPResponse</tt>) with embedded responder's certificate</t>
            </li>
            <li>
              <t>Note that the X.509 OCSP Response and the C509 OCSP Response are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-response-3">
            <name>X.509 OCSP Response</name>
            <t>PEM content (1181 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP RESPONSE-----
MIIEmQoBAKCCBJIwggSOBgkrBgEFBQcwAQEEggR/MIIEezCCAtWiFgQU6uWaiumq
9BBLFeUOjuAXFRd0GK8YDzIwMjUwMzAzMDAwMDAwWjCCAnQwgY8wZzALBglghkgB
ZQMEAgEEIDJTjnSFvTeuRU8fDSuXVddYuR9ujjp685eg9ABgXG/4BCDMEch0CgUJ
7E2hTOWIbnI2TA9jtg7WNH8TwW7nJbdmogIUEjQSNBI0EjQSNBI0EjQSNBI0EjSA
ABgPMjAyNTAzMDIxNjAwMDBaoBEYDzIwMjUwMzAzMDcwMDAwWjCBpTBnMAsGCWCG
SAFlAwQCAQQgMlOOdIW9N65FTx8NK5dV11i5H26OOnrzl6D0AGBcb/gEIMwRyHQK
BQnsTaFM5YhucjZMD2O2DtY0fxPBbuclt2aiAhQ0VjRWNFY0VjRWNFY0VjRWNFY0
VqEWGA8xOTcwMDEwMTAwMDAwMFqgAwoBBhgPMjAyNTAzMDIxNjAwMDBaoBEYDzIw
MjUwMzAzMDcwMDAwWjCBpTBnMAsGCWCGSAFlAwQCAQQgMlOOdIW9N65FTx8NK5dV
11i5H26OOnrzl6D0AGBcb/gEIMwRyHQKBQnsTaFM5YhucjZMD2O2DtY0fxPBbucl
t2aiAhRWeFZ4VnhWeFZ4VnhWeFZ4VnhWeKEWGA8yMDI1MDMwMTE2MDAwMFqgAwoB
BBgPMjAyNTAzMDIxNjAwMDBaoBEYDzIwMjUwMzAzMDcwMDAwWjCBjzBnMAsGCWCG
SAFlAwQCAQQgMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMEIERERERE
REREREREREREREREREREREREREREREREREREAhQiMyIzIjMiMyIzIjMiMyIzIjMi
M4IAGA8yMDI1MDMwMjE2MDAwMFqgERgPMjAyNTAzMDMwNzAwMDBaoTIwMDAdBgkr
BgEFBQcwAQIEEBEREREREREREREREREREREwDwYJKwYBBQUHMAEJBAIFADAFBgMr
ZXADQQCaRi+pYIEMvQ/4MpYqP8MDa4wRdqow+HmCecWetC36CdSC0KF+oukKTk/b
65VJ3TmJa1blNiaKl58HVz5zVR8DoIIBVDCCAVAwggFMMIH/oAMCAQICAhI1MAUG
AytlcDAaMRgwFgYDVQQDDA90ZXN0IGNybG9jc3AtY2EwHhcNMjUwMTAyMDAwMDAw
WhcNMjYwMTAyMDAwMDAwWjAZMRcwFQYDVQQDDA5vY3NwLXJlc3BvbmRlcjAqMAUG
AytlcAMhAIGUe7wkiqx5c4IRqNdb+Sy3d9mUBz3yOuBjgO8sVzl2o2owaDAdBgNV
HQ4EFgQU6uWaiumq9BBLFeUOjuAXFRd0GK8wDgYDVR0PAQH/BAQDAgeAMB8GA1Ud
IwQYMBaAFNl9d+Y0wvcAMAylj8h3NlsVUAeiMBYGA1UdJQEB/wQMMAoGCCsGAQUF
BwMJMAUGAytlcANBABOjKOFFurdnjAVsbGF91L4VCZ2qF1Dh+3wLKakj1yv394ef
hUq5LdEQsV83LeBZZoIvh06AhhH9Rd09LFwohwg=
-----END OCSP RESPONSE-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-response-3">
            <name>C509 OCSP Response</name>
            <t>Plain Hex (446 bytes):</t>
            <artwork><![CDATA[
8A010C2F5011111111111111111111111111111111480600867838E3311A1A67C4F1
00808648A01C73A5F3B06334808F5410652787FA0527BC2449A1BFC5AB31AA5A6F0D
8D0039707F196270805475D8BC4FBAFC6694467641E748DFD53A8B9D176D0139707F
1962708054D1AC135D7DA29BDCF4DCA0D5281A51605B678400821A67C32F00043970
7F19627080482222222222222222808554D3A0C1E3DB92E8F6810537D45CFAECF6CE
417E3B0239707F1962708058C58B024212350C6F746573742063726C6F6373702D63
611A6775D7001A69570A806E6F6373702D726573706F6E6465720C582081947BBC24
8AAC79738211A8D75BF92CB777D994073DF23AE06380EF2C573976880154B5B4CAF3
5401D06151DF9629DB579DC8CCA453A8210107542F45E78D2CAEDF368CDF53C39005
D492450E105627095840A01B0CBF3E34A4762D05404FD08A7AEC103035358314686D
72B6159078C76E1D88597F37531886A3F52F256FD722192B289D6844014467F1F17F
05ACBB7B660A5840C8B1C14815BD49604E7A99439C84B550FED5F94CFF35E8238CD5
3CEA91D58A0D4627D2EA0800EBEA3E1453C0E71B175B441466E3431FB235A1BD6E43
03109B03
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509BasicOCSPResponse
  TBSBasicOCSPResponse
    Type: C509BasicOCSPResponse (1)
    Signature Algorithm: Ed25519 (12)
    Hash Algorithm: SHA256 (-16)
    Nonce
      11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
    ResponderCertHash
      06:00:86:78:38:e3:31:1a
    ProducedAt: 2025-03-03T00:00:00Z
    Extensions: <empty>
    Responses
      OcspPerIssuerResponse
        IssuerCertHash
          a0:1c:73:a5:f3:b0:63:34
        Extensions: <empty>
        SingleResponses
          SingleCertResponse
            SerialNumberHash:
              10:65:27:87:fa:05:27:bc:24:49:a1:bf:c5:ab:31:aa:
              5a:6f:0d:8d
            Cert Status: good
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
          SingleCertResponse
            SerialNumberHash:
              75:d8:bc:4f:ba:fc:66:94:46:76:41:e7:48:df:d5:3a:
              8b:9d:17:6d
            Cert Status: not-issued
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
          SingleCertResponse
            SerialNumberHash:
              d1:ac:13:5d:7d:a2:9b:dc:f4:dc:a0:d5:28:1a:51:60:
              5b:67:84:00
            Cert Status: revoked (superseded)
              Revoked at 2025-03-01T16:00:00Z
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
      OcspPerIssuerResponse
        IssuerCertHash
          22:22:22:22:22:22:22:22
        Extensions: <empty>
        SingleResponses
          SingleCertResponse
            SerialNumberHash:
              d3:a0:c1:e3:db:92:e8:f6:81:05:37:d4:5c:fa:ec:f6:
              ce:41:7e:3b
            Cert Status: unknown
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
    Responder Certs
      C509Certificate
        8b:02:42:12:35:0c:6f:74:65:73:74:20:63:72:6c:6f:
        63:73:70:2d:63:61:1a:67:75:d7:00:1a:69:57:0a:80:
        6e:6f:63:73:70:2d:72:65:73:70:6f:6e:64:65:72:0c:
        58:20:81:94:7b:bc:24:8a:ac:79:73:82:11:a8:d7:5b:
        f9:2c:b7:77:d9:94:07:3d:f2:3a:e0:63:80:ef:2c:57:
        39:76:88:01:54:b5:b4:ca:f3:54:01:d0:61:51:df:96:
        29:db:57:9d:c8:cc:a4:53:a8:21:01:07:54:2f:45:e7:
        8d:2c:ae:df:36:8c:df:53:c3:90:05:d4:92:45:0e:10:
        56:27:09:58:40:a0:1b:0c:bf:3e:34:a4:76:2d:05:40:
        4f:d0:8a:7a:ec:10:30:35:35:83:14:68:6d:72:b6:15:
        90:78:c7:6e:1d:88:59:7f:37:53:18:86:a3:f5:2f:25:
        6f:d7:22:19:2b:28:9d:68:44:01:44:67:f1:f1:7f:05:
        ac:bb:7b:66:0a
  Signature Value
    c8:b1:c1:48:15:bd:49:60:4e:7a:99:43:9c:84:b5:50:
    fe:d5:f9:4c:ff:35:e8:23:8c:d5:3c:ea:91:d5:8a:0d:
    46:27:d2:ea:08:00:eb:ea:3e:14:53:c0:e7:1b:17:5b:
    44:14:66:e3:43:1f:b2:35:a1:bd:6e:43:03:10:9b:03
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 8A             # C509OCSPResponse=array[10]
  1:   01             # [0]. ocspResponseType=C509BasicOCSPResponse
                      #      (1)
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   2F             # [2]. hashAlgorithm=SHA256 (-16)
  4:   50             # [3]. nonce=byte[16]
  5:     11111111111111111111111111111111
 21:   48             # [4]. responderCertHash=byte[8]
 22:     0600867838E3311A
 30:   1A 67C4F100    # [5]. producedAt=1740960000:
                      #      2025-03-03T00:00:00Z
 35:   80             # [6]. extensions=array[0]
 36:   86             # [7]. responses=array[6]
                        #---PerIssuerResponses[0]---
 37:     48             # [0]. issuerCertHash=byte[8]
 38:       A01C73A5F3B06334
 46:     80             # [1]. extensions=array[0]
 47:     8F             # [2]. singleResponses=array[15]
                          #---SingleCertResponses[0]---
 48:       54             # [0]. serialNumberHash=byte[20]
 49:         10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D
 69:       00             # [1]. certStatus=good (0)
 70:       39 707F        # [2]. thisUpdate=-28800:
                          #      2025-03-02T16:00:00Z
 73:       19 6270        # [3]. nextUpdate=25200:
                          #      2025-03-03T07:00:00Z
 76:       80             # [4]. extensions=array[0]
                          #---SingleCertResponses[1]---
 77:       54             # [5]. serialNumberHash=byte[20]
 78:         75D8BC4FBAFC6694467641E748DFD53A8B9D176D
 98:       01             # [6]. certStatus=not-issued (1)
 99:       39 707F        # [7]. thisUpdate=-28800:
                          #      2025-03-02T16:00:00Z
102:       19 6270        # [8]. nextUpdate=25200:
                          #      2025-03-03T07:00:00Z
105:       80             # [9]. extensions=array[0]
                          #---SingleCertResponses[2]---
106:       54             # [10]. serialNumberHash=byte[20]
107:         D1AC135D7DA29BDCF4DCA0D5281A51605B678400
127:       82             # [11]. certStatus=array[2]
128:         1A 67C32F00    # [0]. revocationTime=1740844800:
                            #      2025-03-01T16:00:00Z
133:         04             # [1]. revocationReason=superseded (4)
134:       39 707F        # [12]. thisUpdate=-28800:
                          #       2025-03-02T16:00:00Z
137:       19 6270        # [13]. nextUpdate=25200:
                          #       2025-03-03T07:00:00Z
140:       80             # [14]. extensions=array[0]
                        #---PerIssuerResponses[1]---
141:     48             # [3]. issuerCertHash=byte[8]
142:       2222222222222222
150:     80             # [4]. extensions=array[0]
151:     85             # [5]. singleResponses=array[5]
                          #---SingleCertResponses[0]---
152:       54             # [0]. serialNumberHash=byte[20]
153:         D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B
173:       02             # [1]. certStatus=unknown (2)
174:       39 707F        # [2]. thisUpdate=-28800:
                          #      2025-03-02T16:00:00Z
177:       19 6270        # [3]. nextUpdate=25200:
                          #      2025-03-03T07:00:00Z
180:       80             # [4]. extensions=array[0]
181:   58 C5          # [8]. responderCerts(COSE_C509)=byte[197]
183:     8B024212350C6F746573742063726C6F6373702D63611A6775D7001A69
212:     570A806E6F6373702D726573706F6E6465720C582081947BBC248AAC79
241:     738211A8D75BF92CB777D994073DF23AE06380EF2C573976880154B5B4
270:     CAF35401D06151DF9629DB579DC8CCA453A8210107542F45E78D2CAEDF
299:     368CDF53C39005D492450E105627095840A01B0CBF3E34A4762D05404F
328:     D08A7AEC103035358314686D72B6159078C76E1D88597F37531886A3F5
357:     2F256FD722192B289D6844014467F1F17F05ACBB7B660A
380:   58 40          # [9]. signature value=byte[64]
382:     C8B1C14815BD49604E7A99439C84B550FED5F94CFF35E8238CD53CEA91
411:     D58A0D4627D2EA0800EBEA3E1453C0E71B175B441466E3431FB235A1BD
440:     6E4303109B03
]]></artwork>
          </section>
        </section>
        <section anchor="exam-basic-ocsp-resp-withcertchain">
          <name>Basic OCSP Response Example With Responder's Certificate Chain</name>
          <ul spacing="normal">
            <li>
              <t>Size reduction: 57%</t>
            </li>
            <li>
              <t>Verifiable with certificate in <xref target="ocsp-responder-cert"/></t>
            </li>
            <li>
              <t>Basic OCSP Response (<tt>C509BasicOCSPResponse</tt>) with embedded responder's certificate chain (2 certificates)</t>
            </li>
            <li>
              <t>Note that the X.509 OCSP Response and the C509 OCSP Response are not convertible.</t>
            </li>
          </ul>
          <section anchor="x509-ocsp-response-4">
            <name>X.509 OCSP Response</name>
            <t>PEM content (1517 bytes):</t>
            <artwork><![CDATA[
-----BEGIN OCSP RESPONSE-----
MIIF6QoBAKCCBeIwggXeBgkrBgEFBQcwAQEEggXPMIIFyzCCAtWiFgQU6uWaiumq
9BBLFeUOjuAXFRd0GK8YDzIwMjUwMzAzMDAwMDAwWjCCAnQwgY8wZzALBglghkgB
ZQMEAgEEIDJTjnSFvTeuRU8fDSuXVddYuR9ujjp685eg9ABgXG/4BCDMEch0CgUJ
7E2hTOWIbnI2TA9jtg7WNH8TwW7nJbdmogIUEjQSNBI0EjQSNBI0EjQSNBI0EjSA
ABgPMjAyNTAzMDIxNjAwMDBaoBEYDzIwMjUwMzAzMDcwMDAwWjCBpTBnMAsGCWCG
SAFlAwQCAQQgMlOOdIW9N65FTx8NK5dV11i5H26OOnrzl6D0AGBcb/gEIMwRyHQK
BQnsTaFM5YhucjZMD2O2DtY0fxPBbuclt2aiAhQ0VjRWNFY0VjRWNFY0VjRWNFY0
VqEWGA8xOTcwMDEwMTAwMDAwMFqgAwoBBhgPMjAyNTAzMDIxNjAwMDBaoBEYDzIw
MjUwMzAzMDcwMDAwWjCBpTBnMAsGCWCGSAFlAwQCAQQgMlOOdIW9N65FTx8NK5dV
11i5H26OOnrzl6D0AGBcb/gEIMwRyHQKBQnsTaFM5YhucjZMD2O2DtY0fxPBbucl
t2aiAhRWeFZ4VnhWeFZ4VnhWeFZ4VnhWeKEWGA8yMDI1MDMwMTE2MDAwMFqgAwoB
BBgPMjAyNTAzMDIxNjAwMDBaoBEYDzIwMjUwMzAzMDcwMDAwWjCBjzBnMAsGCWCG
SAFlAwQCAQQgMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMEIERERERE
REREREREREREREREREREREREREREREREREREAhQiMyIzIjMiMyIzIjMiMyIzIjMi
M4IAGA8yMDI1MDMwMjE2MDAwMFqgERgPMjAyNTAzMDMwNzAwMDBaoTIwMDAdBgkr
BgEFBQcwAQIEEBEREREREREREREREREREREwDwYJKwYBBQUHMAEJBAIFADAFBgMr
ZXADQQCaRi+pYIEMvQ/4MpYqP8MDa4wRdqow+HmCecWetC36CdSC0KF+oukKTk/b
65VJ3TmJa1blNiaKl58HVz5zVR8DoIICpDCCAqAwggFMMIH/oAMCAQICAhI1MAUG
AytlcDAaMRgwFgYDVQQDDA90ZXN0IGNybG9jc3AtY2EwHhcNMjUwMTAyMDAwMDAw
WhcNMjYwMTAyMDAwMDAwWjAZMRcwFQYDVQQDDA5vY3NwLXJlc3BvbmRlcjAqMAUG
AytlcAMhAIGUe7wkiqx5c4IRqNdb+Sy3d9mUBz3yOuBjgO8sVzl2o2owaDAdBgNV
HQ4EFgQU6uWaiumq9BBLFeUOjuAXFRd0GK8wDgYDVR0PAQH/BAQDAgeAMB8GA1Ud
IwQYMBaAFNl9d+Y0wvcAMAylj8h3NlsVUAeiMBYGA1UdJQEB/wQMMAoGCCsGAQUF
BwMJMAUGAytlcANBABOjKOFFurdnjAVsbGF91L4VCZ2qF1Dh+3wLKakj1yv394ef
hUq5LdEQsV83LeBZZoIvh06AhhH9Rd09LFwohwgwggFMMIH/oAMCAQICAQEwBQYD
K2VwMB4xHDAaBgNVBAMME3Rlc3QgY3Jsb2NzcC1yb290Y2EwHhcNMjUwMTAxMDAw
MDAwWhcNMjYxMjMxMjM1OTU5WjAaMRgwFgYDVQQDDA90ZXN0IGNybG9jc3AtY2Ew
KjAFBgMrZXADIQBe+KNVoAGnxQ0jSUcBIIExpLsquSDUC/sO4farKP90AKNmMGQw
HQYDVR0OBBYEFNl9d+Y0wvcAMAylj8h3NlsVUAeiMA4GA1UdDwEB/wQEAwIBBjAS
BgNVHRMBAf8ECDAGAQH/AgEBMB8GA1UdIwQYMBaAFJEjnPr554Nssp9R4TGR2xDT
rhaTMAUGAytlcANBANZeAdfL+kF/sXuZ95ftaSevVi/2Po01s+On04FgzGRnQBBN
jzkYl92rEZjz0FomGSBDYqb4PDOIIRs2vFY9QQI=
-----END OCSP RESPONSE-----
]]></artwork>
          </section>
          <section anchor="c509-ocsp-response-4">
            <name>C509 OCSP Response</name>
            <t>Plain Hex (651 bytes):</t>
            <artwork><![CDATA[
8A010C2F5011111111111111111111111111111111480600867838E3311A1A67C4F1
00808648A01C73A5F3B06334808F5410652787FA0527BC2449A1BFC5AB31AA5A6F0D
8D0039707F196270805475D8BC4FBAFC6694467641E748DFD53A8B9D176D0139707F
1962708054D1AC135D7DA29BDCF4DCA0D5281A51605B678400821A67C32F00043970
7F19627080482222222222222222808554D3A0C1E3DB92E8F6810537D45CFAECF6CE
417E3B0239707F196270808258C58B024212350C6F746573742063726C6F6373702D
63611A6775D7001A69570A806E6F6373702D726573706F6E6465720C582081947BBC
248AAC79738211A8D75BF92CB777D994073DF23AE06380EF2C573976880154B5B4CA
F35401D06151DF9629DB579DC8CCA453A8210107542F45E78D2CAEDF368CDF53C390
05D492450E105627095840A01B0CBF3E34A4762D05404FD08A7AEC10303535831468
6D72B6159078C76E1D88597F37531886A3F52F256FD722192B289D6844014467F1F1
7F05ACBB7B660A58CA8B0241010C73746573742063726C6F6373702D726F6F746361
1A677485801A6B36EC7F6F746573742063726C6F6373702D63610C58205EF8A355A0
01A7C50D23494701208131A4BB2AB920D40BFB0EE1F6AB28FF74008801542F45E78D
2CAEDF368CDF53C39005D492450E1056211860230107542DA3A403F7D2F4E0B3D803
1A73BA8A839F557F0F5840E50465D60C02A2111EF3FC6E44F2A36008765B552351F9
A3F5B2AA7C76F1F05D259847A4F4250B2E4B0AE2099762A2596D3CC1DB2CCD180AA0
A2D0E191310B0F58408AE4AAB91FE232B36AE874CE310BE76449626B177C2E596A21
E3DECDA9E7B9DC702291C6DAF19AF5ADE236EE34B38996CF4803BC6569037492EB41
F7ADE8D505
]]></artwork>
            <t>Textual Representation</t>
            <artwork><![CDATA[
C509BasicOCSPResponse
  TBSBasicOCSPResponse
    Type: C509BasicOCSPResponse (1)
    Signature Algorithm: Ed25519 (12)
    Hash Algorithm: SHA256 (-16)
    Nonce
      11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
    ResponderCertHash
      06:00:86:78:38:e3:31:1a
    ProducedAt: 2025-03-03T00:00:00Z
    Extensions: <empty>
    Responses
      OcspPerIssuerResponse
        IssuerCertHash
          a0:1c:73:a5:f3:b0:63:34
        Extensions: <empty>
        SingleResponses
          SingleCertResponse
            SerialNumberHash:
              10:65:27:87:fa:05:27:bc:24:49:a1:bf:c5:ab:31:aa:
              5a:6f:0d:8d
            Cert Status: good
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
          SingleCertResponse
            SerialNumberHash:
              75:d8:bc:4f:ba:fc:66:94:46:76:41:e7:48:df:d5:3a:
              8b:9d:17:6d
            Cert Status: not-issued
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
          SingleCertResponse
            SerialNumberHash:
              d1:ac:13:5d:7d:a2:9b:dc:f4:dc:a0:d5:28:1a:51:60:
              5b:67:84:00
            Cert Status: revoked (superseded)
              Revoked at 2025-03-01T16:00:00Z
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
      OcspPerIssuerResponse
        IssuerCertHash
          22:22:22:22:22:22:22:22
        Extensions: <empty>
        SingleResponses
          SingleCertResponse
            SerialNumberHash:
              d3:a0:c1:e3:db:92:e8:f6:81:05:37:d4:5c:fa:ec:f6:
              ce:41:7e:3b
            Cert Status: unknown
            This Update: -28800, 2025-03-02T16:00:00Z
            Next Update: 25200, 2025-03-03T07:00:00Z
            Extensions: <empty>
    Responder Certs
      C509Certificate
        8b:02:42:12:35:0c:6f:74:65:73:74:20:63:72:6c:6f:
        63:73:70:2d:63:61:1a:67:75:d7:00:1a:69:57:0a:80:
        6e:6f:63:73:70:2d:72:65:73:70:6f:6e:64:65:72:0c:
        58:20:81:94:7b:bc:24:8a:ac:79:73:82:11:a8:d7:5b:
        f9:2c:b7:77:d9:94:07:3d:f2:3a:e0:63:80:ef:2c:57:
        39:76:88:01:54:b5:b4:ca:f3:54:01:d0:61:51:df:96:
        29:db:57:9d:c8:cc:a4:53:a8:21:01:07:54:2f:45:e7:
        8d:2c:ae:df:36:8c:df:53:c3:90:05:d4:92:45:0e:10:
        56:27:09:58:40:a0:1b:0c:bf:3e:34:a4:76:2d:05:40:
        4f:d0:8a:7a:ec:10:30:35:35:83:14:68:6d:72:b6:15:
        90:78:c7:6e:1d:88:59:7f:37:53:18:86:a3:f5:2f:25:
        6f:d7:22:19:2b:28:9d:68:44:01:44:67:f1:f1:7f:05:
        ac:bb:7b:66:0a
      C509Certificate
        8b:02:41:01:0c:73:74:65:73:74:20:63:72:6c:6f:63:
        73:70:2d:72:6f:6f:74:63:61:1a:67:74:85:80:1a:6b:
        36:ec:7f:6f:74:65:73:74:20:63:72:6c:6f:63:73:70:
        2d:63:61:0c:58:20:5e:f8:a3:55:a0:01:a7:c5:0d:23:
        49:47:01:20:81:31:a4:bb:2a:b9:20:d4:0b:fb:0e:e1:
        f6:ab:28:ff:74:00:88:01:54:2f:45:e7:8d:2c:ae:df:
        36:8c:df:53:c3:90:05:d4:92:45:0e:10:56:21:18:60:
        23:01:07:54:2d:a3:a4:03:f7:d2:f4:e0:b3:d8:03:1a:
        73:ba:8a:83:9f:55:7f:0f:58:40:e5:04:65:d6:0c:02:
        a2:11:1e:f3:fc:6e:44:f2:a3:60:08:76:5b:55:23:51:
        f9:a3:f5:b2:aa:7c:76:f1:f0:5d:25:98:47:a4:f4:25:
        0b:2e:4b:0a:e2:09:97:62:a2:59:6d:3c:c1:db:2c:cd:
        18:0a:a0:a2:d0:e1:91:31:0b:0f
  Signature Value
    8a:e4:aa:b9:1f:e2:32:b3:6a:e8:74:ce:31:0b:e7:64:
    49:62:6b:17:7c:2e:59:6a:21:e3:de:cd:a9:e7:b9:dc:
    70:22:91:c6:da:f1:9a:f5:ad:e2:36:ee:34:b3:89:96:
    cf:48:03:bc:65:69:03:74:92:eb:41:f7:ad:e8:d5:05
]]></artwork>
            <t>Annotated hex</t>
            <artwork><![CDATA[
  0: 8A             # C509OCSPResponse=array[10]
  1:   01             # [0]. ocspResponseType=C509BasicOCSPResponse
                      #      (1)
  2:   0C             # [1]. signatureAlgorithm=Ed25519 (12)
  3:   2F             # [2]. hashAlgorithm=SHA256 (-16)
  4:   50             # [3]. nonce=byte[16]
  5:     11111111111111111111111111111111
 21:   48             # [4]. responderCertHash=byte[8]
 22:     0600867838E3311A
 30:   1A 67C4F100    # [5]. producedAt=1740960000:
                      #      2025-03-03T00:00:00Z
 35:   80             # [6]. extensions=array[0]
 36:   86             # [7]. responses=array[6]
                        #---PerIssuerResponses[0]---
 37:     48             # [0]. issuerCertHash=byte[8]
 38:       A01C73A5F3B06334
 46:     80             # [1]. extensions=array[0]
 47:     8F             # [2]. singleResponses=array[15]
                          #---SingleCertResponses[0]---
 48:       54             # [0]. serialNumberHash=byte[20]
 49:         10652787FA0527BC2449A1BFC5AB31AA5A6F0D8D
 69:       00             # [1]. certStatus=good (0)
 70:       39 707F        # [2]. thisUpdate=-28800:
                          #      2025-03-02T16:00:00Z
 73:       19 6270        # [3]. nextUpdate=25200:
                          #      2025-03-03T07:00:00Z
 76:       80             # [4]. extensions=array[0]
                          #---SingleCertResponses[1]---
 77:       54             # [5]. serialNumberHash=byte[20]
 78:         75D8BC4FBAFC6694467641E748DFD53A8B9D176D
 98:       01             # [6]. certStatus=not-issued (1)
 99:       39 707F        # [7]. thisUpdate=-28800:
                          #      2025-03-02T16:00:00Z
102:       19 6270        # [8]. nextUpdate=25200:
                          #      2025-03-03T07:00:00Z
105:       80             # [9]. extensions=array[0]
                          #---SingleCertResponses[2]---
106:       54             # [10]. serialNumberHash=byte[20]
107:         D1AC135D7DA29BDCF4DCA0D5281A51605B678400
127:       82             # [11]. certStatus=array[2]
128:         1A 67C32F00    # [0]. revocationTime=1740844800:
                            #      2025-03-01T16:00:00Z
133:         04             # [1]. revocationReason=superseded (4)
134:       39 707F        # [12]. thisUpdate=-28800:
                          #       2025-03-02T16:00:00Z
137:       19 6270        # [13]. nextUpdate=25200:
                          #       2025-03-03T07:00:00Z
140:       80             # [14]. extensions=array[0]
                        #---PerIssuerResponses[1]---
141:     48             # [3]. issuerCertHash=byte[8]
142:       2222222222222222
150:     80             # [4]. extensions=array[0]
151:     85             # [5]. singleResponses=array[5]
                          #---SingleCertResponses[0]---
152:       54             # [0]. serialNumberHash=byte[20]
153:         D3A0C1E3DB92E8F6810537D45CFAECF6CE417E3B
173:       02             # [1]. certStatus=unknown (2)
174:       39 707F        # [2]. thisUpdate=-28800:
                          #      2025-03-02T16:00:00Z
177:       19 6270        # [3]. nextUpdate=25200:
                          #      2025-03-03T07:00:00Z
180:       80             # [4]. extensions=array[0]
181:   82             # [8]. responderCerts(COSE_C509)=array[2]
182:     58 C5          # [0]. C509CertData=byte[197]
184:       8B024212350C6F746573742063726C6F6373702D63611A6775D7001A
212:       69570A806E6F6373702D726573706F6E6465720C582081947BBC248A
240:       AC79738211A8D75BF92CB777D994073DF23AE06380EF2C5739768801
268:       54B5B4CAF35401D06151DF9629DB579DC8CCA453A8210107542F45E7
296:       8D2CAEDF368CDF53C39005D492450E105627095840A01B0CBF3E34A4
324:       762D05404FD08A7AEC103035358314686D72B6159078C76E1D88597F
352:       37531886A3F52F256FD722192B289D6844014467F1F17F05ACBB7B66
380:       0A
381:     58 CA          # [1]. C509CertData=byte[202]
383:       8B0241010C73746573742063726C6F6373702D726F6F7463611A6774
411:       85801A6B36EC7F6F746573742063726C6F6373702D63610C58205EF8
439:       A355A001A7C50D23494701208131A4BB2AB920D40BFB0EE1F6AB28FF
467:       74008801542F45E78D2CAEDF368CDF53C39005D492450E1056211860
495:       230107542DA3A403F7D2F4E0B3D8031A73BA8A839F557F0F5840E504
523:       65D60C02A2111EF3FC6E44F2A36008765B552351F9A3F5B2AA7C76F1
551:       F05D259847A4F4250B2E4B0AE2099762A2596D3CC1DB2CCD180AA0A2
579:       D0E191310B0F
585:   58 40          # [9]. signature value=byte[64]
587:     8AE4AAB91FE232B36AE874CE310BE76449626B177C2E596A21E3DECDA9
616:     E7B9DC702291C6DAF19AF5ADE236EE34B38996CF4803BC6569037492EB
645:     41F7ADE8D505
]]></artwork>
          </section>
        </section>
      </section>
    </section>
    <section anchor="sec-document-updates" removeInRFC="true">
      <name>Document Updates</name>
      <section anchor="sec-00-01">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>
            <t>Added the section "Alternative Certificate Status Checking Mechanisms".</t>
          </li>
          <li>
            <t>Constrained the value ranges of integer fields in the CDDL.</t>
          </li>
          <li>
            <t>Replaced the "C509 Hash Algorithms" registry with the "COSE Algorithms" registry.</t>
          </li>
          <li>
            <t>Specified the PEM representation of C509 CRL and C509 OCSP messages.</t>
          </li>
          <li>
            <t>Added the registries for C509 CRL types and C509 OCSP request and response types.</t>
          </li>
          <li>
            <t>Added the section "Implementation Status".</t>
          </li>
          <li>
            <t>Added the section "Security Considerations".</t>
          </li>
          <li>
            <t>Clarifications and editorial improvements.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank xxx for reviewing and commenting on intermediate versions of the draft.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
S09e9w+IFC3/D0pM4athtOtJ29zWMpsjGose6RoQAEiGUvIYEldRFu0mjQzP
hdATGo0Wjul1OiC0iMvEZucP3AgRTThkGKqMvG7DKTddmnKnoaecndMlUQbL
kMlDey2XluupkZGvCIcmSziyzLzKBPMv9s0l9dltdLBPv9nlTo+k6r0NpjUJ
+hpu/dsovBUXHKiCmUoErUyQcbT4SeZmaTJlMotUaJk87DuIlnRTSJWZ4j8C
1584V/oODTQk40btA58ENOgCVoJMdPDi9eXVQZX/dc5f0s8X429fn12MR/jz
5bPB8+fqh4pocfns5evnI/2T/nL48sWL8fmIP4anjvWocvBi8MMBr+Dg5aur
s5fng+cHxaYb1jaViwHRvwroojOQfVgpPxm++v//P68JG/s/QBr3PQ/vlviX
rtdpwi8oKfJoJNTwr7hhlWCzAYaBvaA3xyzYRFsQ86pIRNMbEKYJ9ADML35E
yPy17/zrdLbxmv8mHuCCrYcSZtZDgln+Se5jBmLBo4JhFDSt5xlI2/Md/GD9
LuFuPPzXfydlr+Z1//3fKtnrPrq+JCutgVZ00Mp0yarpKSF+QS9g/QtdzFXN
S8Gqtquguy/ZVV6v2TaIPO4WBHISPPA8kT/9ARyeBWr1gCnzkCeHBtUZ3YBK
Yk7iBe6qYqPSnIPjqovG1GnW/bpHk8CffGGTGPK1yRWZPN8/4VsUOsOpOEyG
gwo1IiPzCg07krw+gGn2nQlZZqvOZCwvnaxfUvyNr63m+COGPPwXUoUJA24y
kPcXxq1T3iMnO10y7WcmK3yvaVI0zPc4TO4WeLFLSPaQLil256YMBMw/SA23
QXHohqPRc6Gr0w70K5X/1n+c2Xy+rOzg/Hedrxz816kDB/FbrQo9bfjw2K3X
mz5sY7vj91qO+eep4/8nNKk5HjdvN7h5z/cbjY7vNtrdVrPTaXXdjmwOTag5
tPba0LrW8Dvtbr2O/3QqlbP1tgDG0I7a03u1W/D0UN8eno0oFmWsf6/ql9+h
fbUvbiTnzpHd0dkIuvKKp30Ms3b0Mp3sn1rBR/V6zcPV1g7ld5kBUxjvR+cL
a77OX82NqbzvgwC6S2YhInANby2+OsCgET4bddy3A3E2sltcTOnTzTLasii4
pct3Ep/wZtXudeIcIpKZ/QVTYOMgnXDTZCnbvX8vHpCERQcEH6Czv90En/DF
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
2qfQ0vd6/onf7Y3a3SYsoNlsd069U2Dkbgu07pPOCWj5g8/LnIv2/tdkzq1f
lzmL5fwjMucuKTmdKeqcQEa7AXK5Tg8tpl2ydAZd5L0tUpb8meYcQGSB2qKq
1UQ22JijERT4eQics0G0eoHtkT9Db+2PZM5TovPAEUALBMXM9UiP85BjA2MD
YcHvIWeGUXqggRnKPCh4AckdQff/GuasQDgP53o13aLVICGXtSsPe0clnB24
rzdFu/Z0gTwd9G2AGQhbyChbqBE3F2QzCfqdANk5a8+gKLsohsF/oAt7oLZ3
UbXuoGWi77VwLSAygRwF6rwnVO5uF9XlzgJ1bFgxCBMoDpBJHMDjt/rtBaIZ
6OmgWPtTYRLv4q5C703aefi73SGruUc2+xai6nSKyNsGUSzQJMp0l0m1uftB
rkXsapX1TiolbYl0m+rDF8eYK78mfHnE16KoH76F/yOHc/7g3N/2HVJGaE/y
QY1dtPRY6PLEBQZh3pS6h3zVrTozVLNGXE5/wOKLypMIfjkVSf3hx/O4KO93
Sm/MQuGcVEnWZdxahRpFgvxZvH6LXcCE6kKiUF+VQhBd0R4APAsgGMMs08Ud
oisYpfU/6t/DgR43SE4q+14sRYhkZ19/+2L8LYhlYyWWvTiJ3309Gvz55Pr8
u5PBixejxsVy1vj2+ofGn9Kpf/7zbOj99MPF7PzFT69vKy+uBncvRoNb/P+f
b/ghPGupZz8NTk+uXyR/+X4w+vbbk/By6nutyy+PO8+ues9++va88nO4242v
/jL46eLsdvj83fDsL8F28yaK3zbW8/Sss/jp+1kwXd8dv3nXm7eGYaMXNy5m
o68b30aj0fzPL6PKRev1N1oytJdnXZN8pj0UBwD2T4qLyKHcz7V7qnslQbr3
y477hbGKKY25lqAJnfdApHNP2/h/lNK8RrfRPG2OGyBM9k7d0bB1Ar16w0q3
DUJsp9MetEdo7Gl4WJdy2GgPOtBhs0FGkM6o4Y5B8up0QfpqDDtjaNDsgVwG
oqnX9U4rI5BTxzDhgdcc+r7rQsfNgd/uNNqdwah16o167kju2kfJZw+Cryml
cYysltCwcDaLZyLncF8Fyh+6R48QwRS3vde/QLe02a9kov4p8t4x8N5R3x/2
B+P+6JR47xB/AE40lLx3ZPJe5Ltjg+/iEliolHfWlNOdy7bsEezOMfdlrlUv
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
58amCtS1U1C3cD9rNSdnOUiXTiHdDwXfFfFgtggPFuV4MC/Dg/XaeDAtZ/Vk
4N1xGfiaQLYzBp7W4EtybmKstgi7Gp8HMPOVAGY+B2AWywPM4qcCzGJ1gFms
BDAbPxFgNlYHmI2VAGbrJwLM1uoAs7UKwJyJ5/mxAPMU210OYKZzAGa6PMBM
fyrAzFYHmNlKALNYAWCOL74oDzTObQJp4Ei0vhQDR6zsFng8EzYi4nm7/OE4
ORtrNIlBXf2UrLHkQhabF4/LdWD2JTF2lSBA4dUrg+1RjgGsoxbsnnm8BgCv
2z8ZgG+EoO/9PhT6e8Lw88Sbj18hda/2WP5F9bB530Fq6u3mGptfY/M/GZsf
bw5azU3M6repZXmsjmzvKsFlua2HzgBB/BTDH/pHI6fdkj2VrFBT2QpdH3Pi
NXfG5833EfHlpDnxJ2db8e8g/enfPAmVNEeY0W94f3E12tO+t9ueHMkjZ9hT
H3xvg3Dgjduy5cnh0MEC8wKrtGzXxzBJRiOYWGfjSTYp3+397fno+GUw1Mm1
PN/bdC4P/Ncj97m1M+pozS33fOft6vvb5fHdieW778wf9a3dy2b7693t6cv7
4f5Lt/1OL823L4PL4b34Js7OzzYHI9mBFx1OJtpw6AucnrueCwcuCc32XTls
HuyO6l3goyU3+LQckeZHxBSImMkxyuzIZj6bbB76py3nSFWoQY17cSLGt/PT
gJ6f7pIub0520hZ4zbb0jyaPp+d7/Ohpr2U8+Q+TL97lyZZ0XrX+U/9bZ3S8
aX4b2MfvzV1i7B60AomSx1SHe45z5gfffEaDm53N16f7i6e7a3/HuD7fHR5c
fznUtZYUKoeiN/Gdr5M26sDW0JMDlanxoOVj/sihc3g+OB3c7La+cZBS6+7s
a7P/ft4NjuWWNs40td12z76cNy9O77aCmy8PX7ceBvffX8jD/a3ov7S39ncm
u3x4fnH+dhK2v3+9/W68nL1qJyY/GbeHBwfd08u3s2N3a1ce9J278+vR8OBt
d9vYPSXuT3X+lNsGOTeQYEvHUdZ5wyc4hAS14BSmrtsBa173wTAEe5YQi+Hv
1KpmdBePptryjO6iu0hbntFddBdp9RnduuWC5UqYwOSPRvbuI6080U2c3tEE
gUnD1k0iLWL46TNQQjepqceVQH2MuDrIkwidEzSZhe95whE+59IRQgYksLhl
G9QlxEQhmMIxJNeFASugCeIxNc6I53HLIBSk4+nU8RwmmWvaUMZgniAMs6HD
huMGOjOIGRAH5jCohZle1aQtuvBBpaC0XINaHEQEYvHh3fBeYQvm4a0KVLga
NooELqHQDMuQOpwKoO4A1ARGyPakZTimK6kZuHZgmiwIiHAt4tuWY8AIOtAz
0BNiSYaZoB2TeMRjkge67+kCXgMNRued7sLmTeCNth0ErmWhQIjPfRHYvgfj
RSTRuOlQ33agFZZrigBvb/IdF/pmuKZHXOIZtkMdx7BR0wR8+RREZDKfMh/a
ZXPM5cJ0UDRqwPhjXitfEN+h3CP08513JXN47cab68aLK5G9Xnj3FPXy8Q4+
D1ECj41f7UzSQRSH//Awfsg+N00ZmjzhdB4ve/knaPIEjMggfIBT2UEBQMZ3
id8yGMT35NlSQee9JLVG4nOqDXv9x/ginceLjhpK8luu2Pfn7vVlT2U7TXs3
63nx3cZd9NwVPDe+bfSeH17CxmPYu4M6H2hGaAuKdB9gB7wbj6+TgkzkFGvt
k80XX/tkazV57ZP9e/pk4zIq6WYGa0pqAVUibENEF8wYG6SHk8EUOKNMdVcZ
UzPcZBuG+tO0IH7IMR8q6+MDBsWhhyE21dVkmN2ng+5cHX7ubFgZfTBCrCdb
HCvX0ZMLZafvxWYwbM+0IOaDJiqzKd8gXaX+ArOggvjwajaOEwV+EB3cJwdW
WpBbG7aByxa0Ct9iYAtFF7Op4gVsBsq9a2IiVmgtZ2lBWBRg8CwDc7vqoOd9
1O1uf6PLUP97Jl7k1lNJVaENJFPQtHCLhsGGKTPQ0fdMTGxVN9xg6u43+BUq
ZAN0QodmWtDqo0+6E+LU5+r2OfgB+ttLLmzsqwsb8abGEK/USYVjYL5soTre
MzBdLA/xKjpL3XSHXSPYflgQYaz7NNNUhoooerEcyAB7RPs4nTHHra5yx5ro
D4eajUzCMZzyNuaihcdAer0OPgYrmT3A++uga9BfqBaGPrTRZkkVQK0VMFJd
A9doYqEwo+vzoB6QOfxjMDTQ8RCfnBYECwi0hZhVBAMde64PcCSgS7a9MYDO
WLjowJuguaAiocD8vaA0IFBVCJoHf4FJ2KXYzq7qNQgNNHAQXecX4jrd6+PM
7MUj1ScopL6BSyDtYu22UkYK2gf/Qszyayi9DukGC6NCKBFb3RSo8prjSkox
vy9RNwvCNgVtg0GFdnDoJP00gkGJDbymGvztqQYFx1qp01LMd1pOn59yBmJH
GrUaulcY3icc0/kng4Q+UHQ04thFGdVS/2Im8VtpPOKcAwZP0+YVVJHGReed
PBYJJHa6cyMViJ97CUsEMu8MU/2y6Ft0xEkSyxUHlc8Ibc54Rh2Y15jpIKdp
EwszLM6Al8lPnZ9cYuraLTpOUexwIIFzDrwzrWFhXtEaLY9HQ9BqfWGFllec
zMQ072NRSXlVF1KdTTkmVatgSQV/5M5qcyQx1YyqE2COp2LhvxpD8IHXl58m
oyTdP5S+JMxV6EsivdqvQF9KwiyXoOokt2f+HPpSeuvm0vSl9ArOZehL5rTU
j6cvWXNIIQvoS1aGFFKbvkTJHFLIJ9OXKGHVnZtPX6Iks57Upy+lceA/mL7E
xCr0pTSpbZG+NDUR6tOXEjvh59CX+Byi3QL6Es8Q7erTl/Q5RLtK+lK0NOlW
w+W5AkX60q/u3oH//9Ag+i02YW0dK0g4YaV+mDpuGI0m3LtFDplqf4zGklTP
9T0zs44ZjYlYgqu4aCIPjcaSpP2r+2o0ThJFpcJdzWmDAVGxPHLum3neG43r
FdeKziOm8UTt6jh+yv0+GrdioS3nAco6gDRBY6GVuYI+RExzL9AXvICe1sOH
PoOjpipakqgWlanDVvvZ4eIL2WoN1XawB3P3lf710ikuKfo8k42bS6fxXept
9ehswfGazrams63pbJ9OZ3M50tmefhadbazobDvNNZ3t70Bnw1E6hFH6Oh0l
30myKGg9T4at/clkE28rBq30nF2Cgmxu7r51N5MV2X7pb86M1GE0Ktp0qA6b
7+oy5sMrunc8njv206F3x5lrkd98efpyOTruSOfOOtptkusteeA6rc6BufNw
NaTyxfSet9j92+hrX7qj85FzhUlWNTUCw/aJM0fSIOg9NSpty5EDy4cNB2fo
xIduazDWh7K99dWRwwnMeRjKJqwBs8N4sN/U340vYeh1v+0MjkL/9ar/2CaG
ONGu3rPD6J2cDrdO377eOQMzMG8G4al5cnX7QM9e7JGxu9v9Prqz95yz1uvV
OZHtwzNL1za3B/37180zy3Y627CjtNnOzRdv8n7p+t3dh9eT70f+n8VKLFiD
OWqiwT6JIV/ymjU/8eP8RHi8gqGo1Tsazz8Qa/NOxHXPwVrxILz88VdLzr8f
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
FgkK46KuWgApGYruBpKB/wctwjsFqLrOIFMQBrrbxaE3kABXwdMDcXcpznzY
JaG5XXWlB6zyIsQe2jam3Ld7uL7DcOqxIAbqHg3QE9HDex+g77BcMK7kr2P0
f9jBewcw5r6DpokqJJTI++q6AIKkOkwAAD+DvKka7R7BsaXqJpZEH5HTJ7AD
sDBBS+gA0wDA+zrq3hS8iYGrax4Iblqpmf9xnl6Zdb9m7K0ZexmBrxl7jdKe
rhl7jTVjb83YWzP21oy9SP5rxt6asbdm7K0Ze+mb/iqMPcxXr+cKFBl72RsQ
4ssMTKwguYmitr9t1t2mQak419EKjrfI76axZLqt7oHTWGKBoS9uNVecxpKd
fU6a+wU+ufQigirv3GLnXHqpwGI3XdZLp/FIi5bkY3IrHsFVPHyRg08TNB7B
1V19mkjWd3T6zfr8PsTHdPHuv0WsTHVB4KdQM7NXDdbnZ0alaqWJNv9qJM2G
ajwsztkPH3/7W3E3q+SfJ3Dq9GOJsBa/ryaLMzASFmeILM7TsMjiPP2Oz72t
WZxrFueaxblmcX6AxeneIYvzfs3i/PdgcRaHse1PHBCytsOOJy1HvG7BUKJQ
HNlq+RykzNvDM7792GW77z2XvnWZTWaG8lUNoxq2aChfW6MW/o/uHR7pMJS1
dEPbGaWJ/ZttJ/yys3s8lpu3r20yOjjqOc2m/3r37fH++cA7cr8+7olB52Hn
u03kzu5Na7M9gWFUQ7TnOGf+3JGQQo2EN1Ej4ctJ03FG8kDDfm/ttxw5sHzX
g5kNYw1bnZOM83SYt/3R7fcHXRe7j4939r443Nxnr96h9nDROcwN4+55KPuD
b1+ugq+Pp8/ntj546hyEL8eXX9n3MaGPX/Zu4egwfN/cv207zq42er86u7bZ
g38+eifB+GbzwPHO7rviu7fXbO4/spfgzG63m38iGbdo4uYYuYb+WWEuZS9a
03L/BFquxZYh5mpFpGB5fEBLAIKPEHO1VdGALAagLQcClB/9tTpn/0Unfi1/
5IcxkcvfO6hFFw+uetlgdMGgtvwNg8VbBbV61wrOv0pQq75LsP79gVr+AsHV
Lg3UJMveFIitsKQvJMiDBj7jDGQtfcsUro9P+LAmCNBIw6Gm6TIfqoSGajA7
ceOxfRMWCRfkz2zqGmDrUVsGuvSgIsMHlXO4ZdsGrA8gA8c1dMMmMHowrx1B
tcCEBy1PJ/oPpU3PrM9r7vSaO73mTq+5038nEa6502vu9Jo7veZOr7nT/+7c
6RqKHUm7FytzlVbDz9OCObUcJNMhq+GgdToqDP6aUTMYL7wIbbBgBk01P9WW
ZAZBOyMl10NMcQrS03UcSuhCx0SbCawilmkqmFPCxL9G8wLNKYEiYp2Nro0f
graQ7sagi9oS0syMMND8AskPVFPRxk2UfKqTWVXM9nGhTqIqUlSA7N4KzU7V
vo9dg6YSUA/FPoetGaZhl6Ptg8zxTm44wA4C/QRttAcoENSKQaznoY432oGo
+wZKD0Y81Ra1GtAQZyuaUSGqFkx5eDU0jFg4HWCVgAqhbTrNLReR3nYZmqdm
D59EhSRoUYAm2xaKHdoPzc4qNoiawVvUxXkhw8low+xgaIHA1IBJxHu4JcHK
AILt9dOCICso0lH34MFkhJGy1WhChWRQESNgqey5HTXSdIDv4wwlaHRwq4NB
hT0sqgLGEtZTLVYYaI+h2PzQL2gtNqyD44UbZYit6thYAmrtx2svzgaGLeoZ
G/0OSsLuoHg6ffVWA5P+wgID77bs6SrYG6CZCmMJyzQMD+wERE0G3Im7OC1h
4LECC62x9Ez7mTECM0fZdaDAOlAgI/B1oECjtKfrQIHGOlBgHSiwDhRYBwpE
8l8HCqwDBdaBAutAgfRNf5VAgeKSNj9QIF3gEoZ4MdQAhzuBVDw4ZuWiC6bS
XzW+II0uaDRWS+1lQR3pcrAqmUBjRsa4TDJ+Lccr0Jid2kmlyb8WUww0zqYy
XZwHrJxtoPF0+i6XEiwlHiSRBvil4g5oqh+ZU3I8O4v6AaqNcQc8px9LURgi
BkMad4CL32psBk3wqZkWMRuWJzZoIKPpuBRIDvU4Dpqwp7bVfL5DNd1B09lU
pvWpD3nmg6brU5muxoKQTIOJkNSRJURouqWvEKGiW8lZcmkyRcKl0Awaz77V
WRWaIeIRErRIr/hHwxv3nhF9il0zj9Cv//rHY9j7Zz/+wz+foz/8t/ZfGw/h
zfglvLx9GPT+G1l6GM+By3bjn2A4Po3hG238I6mAEPgVHvs/DanCMDBeAj5H
y67xi7x+Ch9AcJcvYS7qJdoQG+5F2LuCvbzRCnsXndvLx5vHX/6FVbmwRzw9
dC5v4wqV0BsPndshNH08aFzePoXD8KExuAyv+48YU6LCNDzvmyq+H4FrUdlf
FMMwz7t4/AX2luElvOMtiiKJHoT9pfQZVenBXdiD9se1YujFQ46tgu1Sr3L3
v6nIkZTZeBM+Pnag6f/Kiymu/hL6NBg/pIWf3u7go3wVD+H9c/j4pD5NwJjo
wX9VyL6JwUc309ZFIv+l6umDsPcM3X5Tor+ELVeVSobjuvMQDR1+ptoQ9i+f
xmhKNS5v7h5AXfBN2JZ/NGQPzZzrsD9UnylV6+Q/Qy27VTZY2P/jl0Hn+jH8
BXToEFrUeX66GD88YmDO7VXj9fVVyQaOC5fhBFUFXx5DqfgrtB2V4eEGGoSa
9RKpqtIS7GD/oTN4+pf2/wHe1+uzFPUCAA==

-->

</rfc>
