<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.11 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5280 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC7049 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7049.xml">
<!ENTITY RFC7925 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7925.xml">
<!ENTITY RFC8152 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC8610 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
<!ENTITY RFC8742 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8742.xml">
<!ENTITY I-D.ietf-tls-dtls13 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-dtls13.xml">
<!ENTITY I-D.ietf-tls-certificate-compression SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-certificate-compression.xml">
<!ENTITY RFC7228 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7228.xml">
<!ENTITY I-D.ietf-cose-x509 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-cose-x509.xml">
<!ENTITY I-D.ietf-lake-edhoc SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-edhoc.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc tocdepth="2"?>

<rfc ipr="trust200902" docName="draft-mattsson-cose-cbor-cert-compress-02" category="std">

  <front>
    <title>CBOR Profile of X.509 Certificates</title>

    <author initials="S." surname="Raza" fullname="Shahid Raza">
      <organization>RISE AB</organization>
      <address>
        <email>shahid.raza@ri.se</email>
      </address>
    </author>
    <author initials="J." surname="Höglund" fullname="Joel Höglund">
      <organization>RISE AB</organization>
      <address>
        <email>joel.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson AB</organization>
      <address>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J." surname="Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson AB</organization>
      <address>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Furuhed" fullname="Martin Furuhed">
      <organization>Nexus Group</organization>
      <address>
        <email>martin.furuhed@nexusgroup.com</email>
      </address>
    </author>

    <date year="2020" month="November" day="02"/>

    
    
    

    <abstract>


<t>This document specifies a CBOR encoding/compression of RFC 7925 profiled certificates. By using the fact that the certificates are profiled, the CBOR certificate compression algorithms can in many cases compress RFC 7925 profiled certificates with over 50%.
This document also specifies COSE headers for CBOR encoded certificates as well as the use of the CBOR certificate compression algorithm with TLS Certificate Compression in TLS 1.3 and DTLS 1.3.</t>



    </abstract>


  </front>

  <middle>


<section anchor="intro" title="Introduction">

<t>One of the challenges with deploying a Public Key Infrastructure (PKI) for the Internet of Things (IoT) is the size and encoding of X.509 public key certificates <xref target="RFC5280"/>, since those are not optimized for constrained environments <xref target="RFC7228"/>. More compact certificate representations are desirable. Due to the current PKI usage of X.509 certificates, keeping X.509 compatibility is necessary at least for a transition period. However, the use of a more compact encoding with the Concise Binary Object Representation (CBOR) <xref target="RFC7049"/> reduces the certificate size significantly which has known performance benefits in terms of decreased communication overhead, power consumption, latency, storage, etc.</t>

<t>CBOR is a data format designed for small code size and small message size. CBOR builds on the JSON data model but extends it by e.g. encoding binary data directly without base64 conversion. In addition to the binary CBOR encoding, CBOR also has a diagnostic notation that is readable and editable by humans. The Concise Data Definition Language (CDDL) <xref target="RFC8610"/> provides a way to express structures for protocol messages and APIs that use CBOR. <xref target="RFC8610"/> also extends the diagnostic notation.</t>

<t>CBOR data items are encoded to or decoded from byte strings using a type-length-value encoding scheme, where the three highest order bits of the initial byte contain information about the major type. CBOR supports several different types of data items, in addition to integers (int, uint), simple values (e.g. null), byte strings (bstr), and text strings (tstr), CBOR also supports arrays [] of data items, maps {} of pairs of data items, and sequences of data items. For a complete specification and examples, see <xref target="RFC7049"/>, <xref target="RFC8610"/>, and  <xref target="RFC8742"/>.</t>

<t>RFC 7925 <xref target="RFC7925"/> specifies a certificate profile for Internet of Things deployments which can be applied for lightweight certificate based authentication with e.g. TLS <xref target="RFC8446"/>, DTLS <xref target="I-D.ietf-tls-dtls13"/>, COSE <xref target="RFC8152"/>, or EDHOC <xref target="I-D.ietf-lake-edhoc"/>. This document specifies the CBOR encoding/compression of <xref target="RFC7925"/> profiled X.509 certificates based on <xref target="X.509-IoT"/>. Two variants are defined using exactly the same CBOR encoding and differing only in what is being signed:</t>

<t><list style="symbols">
  <t>The CBOR compressed X.509 certificate, which can be decompressed into a certificate that can be verified by code compatible with <xref target="RFC7925"/>.</t>
  <t>The “natively signed” CBOR encoded certificate, which further optimizes the performance in constrained environments but is not backwards compatible with <xref target="RFC7925"/>, see <xref target="native-CBOR"/>.</t>
</list></t>

<t>Other work has looked at reducing the size of X.509 certificates. The purpose of this document is to stimulate a discussion on CBOR based certificates: what field values (in particular for ‘issuer’/’subject’) are relevant for constrained IoT applications, what 
is the potential savings that can be expected with the proposed encoding, and what is the right trade-off between compactness and generality. The current version specifies a certificate encoding which can support large parts of <xref target="RFC5280"/>, and at the same time can maintain a small message size for certificates compatible with <xref target="RFC7925"/>.</t>

<t>This document specifies COSE headers for use of the CBOR certificate encoding with COSE. The document also specifies the CBOR certificate compression algorithm for use as TLS Certificate Compression with TLS 1.3 and DTLS 1.3.</t>

</section>
<section anchor="notational-conventions" title="Notational Conventions">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” 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>

<t>This specification makes use of the terminology in <xref target="RFC7228"/>.</t>

</section>
<section anchor="encoding" title="CBOR Encoding">

<t>This section specifies the content and encoding for CBOR certificates, with the overall objective to produce a very compact representation of the certificate profile defined in <xref target="RFC7925"/>. The CBOR certificate can be either a CBOR compressed X.509 certificate, in which case the signature is calculated on the DER encoded ASN.1 data in the X.509 certificate, or a natively signed CBOR certificate, in which case the signature is calculated directly on the CBOR encoded data (see <xref target="native-CBOR"/>). In both cases the certificate content is adhering to the restrictions given by <xref target="RFC7925"/>. The corresponding ASN.1 schema is given in <xref target="appA"/>.</t>

<section anchor="message-fields" title="Message Fields">

<t>The encoding and compression has several components including: ASN.1 DER and base64 encoding are replaced with CBOR encoding, static fields are elided, and elliptic curve points are compressed. The X.509 fields and their CBOR encodings are listed below. Combining these different components reduces the certificate size significantly, which is not possible with general purpose compressions algorithms, see <xref target="fig-table"/>.</t>

<t>CBOR certificates are defined in terms of <xref target="RFC7925"/> profiled X.509 certificates:</t>

<t><list style="symbols">
  <t>version. The ‘version’ field is known (fixed to v3), and is omitted in the CBOR encoding.</t>
  <t>serialNumber. The ‘serialNumber’ field is encoded as a CBOR byte string. This allows encoding of all lengths with minimal overhead.</t>
  <t>signatureAlgorithm. The ‘signatureAlgorithm’ field is encoded as a CBOR int (see <xref target="iana"/>).</t>
  <t>signature. The ‘signature’ field is always the same as the ‘signatureAlgorithm’ field and always omitted from the CBOR encoding.</t>
  <t>issuer. In the general case, the sequence of ‘RelativeDistinguishedName’ is encoded as CBOR array of CBOR maps, where each AttributeTypeAndValue is encoded as a (CBOR int, CBOR byte string) pair. Each AttributeType is encoded as a CBOR int (see <xref target="fig-attrtype"/>), where the sign is used to represent the character string type; positive for printableString, negative for utf8String. If only a single ‘RelativeDistinguishedName’ is present, the array is omitted and issuer is encoded as a CBOR map. If a RelativeDistinguishedName contains a single AttributeTypeAndValue containing an utf8String encoded ‘common name’, the AttributeValue is encoded as a CBOR text string. If the utf8String encoded ‘common name’ contains an EUI-64 mapped from a 48-bit MAC address it is encoded as a CBOR byte string of length 6. Other EUI-64 is encoded as a CBOR byte string of length 8.</t>
  <t>validity. The ‘notBefore’ and ‘notAfter’ UTCTime fields are ASCII string of the form “yymmddHHMMSSZ”. They are encoded as the unsigned integers using the following invertible encoding (Horner’s method with different bases). The resulting integer n always fit in a 32 bit usigned integer.  <vspace blankLines='1'/>
n = SS + 60 * (MM + 60 * (HH + 24 * (dd + 32 * (mm + 13 * yy))))  <vspace blankLines='1'/>
Decoding can be done by a succession of modulo and substraction operations. I.e. SS = n mod 60, MM = ((n - SS) / 60) mod 60, etc.</t>
  <t>subject. The ‘subject’ is encoded exactly like issuer.</t>
  <t>subjectPublicKeyInfo.  The ‘algorithm’ field is encoded as a CBOR int (see <xref target="iana"/>). The ‘subjectPublicKey’ field is encoded as a CBOR byte string. Public keys of type id-ecPublicKey are point compressed as defined in Section 2.3.3 of <xref target="SECG"/>.</t>
  <t>extensions. The ‘extensions’ field is encoded as a CBOR array where each extension is represented with an int. The extensions mandated to be supported by <xref target="RFC7925"/> is encodeded as specified in <xref target="ext-encoding"/>.</t>
  <t>signatureValue. Since the signature algorithm and resulting signature length are known, padding and extra length fields which are present in the ASN.1 encoding are omitted and the ‘signatureValue’ field is encoded as a CBOR byte string. For natively signed CBOR certificates the signatureValue is calculated over the certificate CBOR sequence excluding the signatureValue.</t>
</list></t>

<t>In addition to the above fields present in X.509, the CBOR encoding introduces an additional field:</t>

<t><list style="symbols">
  <t>type. A CBOR int used to indicate the type of CBOR certificate. Currently, type can be a natively signed CBOR certificate (type = 0) or a CBOR compressed X.509 certificates (type = 1), see <xref target="iana"/>.</t>
</list></t>

<t>The following Concise Data Definition Language (CDDL) defines certificate and tbsCertificate as groups, which are encoded as CBOR Sequences <xref target="RFC8742"/>. The member names therefore only have documentary value.</t>

<figure><artwork type="CDDL"><![CDATA[
certificate = (
   tbsCertificate,
   signatureValue : bytes,
)

tbsCertificate = (
   type : int,
   serialNumber : bytes,
   signatureAlgorithm : int,
   issuer : [ 2* DistinguishedName ] / DistinguishedName,
   validity_notBefore: uint,
   validity_notAfter: uint,
   subject : [ 2* DistinguishedName ] / DistinguishedName,
   subjectPublicKeyInfo_algorithm : int,
   subjectPublicKeyInfo_subjectPublicKey : bytes,
   extensions : [ 2* extension ] / extension,
)

DistinguishedName = { + int => bytes } / text / bytes

extension = (int, ? text / bytes) 
]]></artwork></figure>

</section>
<section anchor="ext-encoding" title="Encoding of Extensions">

<t>NOTE: The discussions in the COSE WG seems to indicate that a much larger set of extensions should be supported. This will likely result in a completly different encoding than the one below, which is very <xref target="RFC7925"/> focused.</t>

<t>This section details the encoding of the ‘extensions’ field. Each extension is represented with an int. Critical extensions are encoded with a negative sign. The boolean values (digitalSignature, keyAgreement, etc.) are set to 0 or 1 according to their value in the DER encoding. If the array contains a single int, ‘extensions’ is encoded as the int instead of an array.  pathLenConstraint is limited to a max value of 10. If subjectAltName is present, the value is placed after the int the end of the array encoded as a byte or text string following the encoding rules for the subject field.</t>

<figure><artwork><![CDATA[
   subjectAltName = 1
]]></artwork></figure>
<figure><artwork><![CDATA[
   basicConstraints = 2 + pathLenConstraint
]]></artwork></figure>
<figure><artwork><![CDATA[
   keyUsage = 12 + digitalSignature
            + 2 * keyAgreement + 4 * keyCertSign
]]></artwork></figure>
<figure><artwork><![CDATA[
   extKeyUsage = 19 + id-kp-serverAuth + 2 * id-kp-clientAuth
               + 4 * id-kp-codeSigning + 8 * id-kp-OCSPSigning
]]></artwork></figure>

<t>Consequently:</t>

<t><list style="symbols">
  <t>A non-critical subjectAltName is encoded as 1. A critical subjectAltName is encoded as -1.</t>
  <t>A critical basicConstraints (cA = 1) without pathLenConstraint is encoded as -2.</t>
  <t>A non-critical keyUsage (digitalSignature = 0, keyAgreement = 1, keyCertSign = 0) is encoded as 14 (= 12 + 2).</t>
  <t>A non-criticical extKeyUsage (id-kp-serverAuth = 0, id-kp-clientAuth = 0, id-kp-codeSigning = 1, id-kp-OCSPSigning = 1) is encoded as 31 (= 19 + 4 + 8).</t>
</list></t>

<t>Thus, a critical basicConstraints (cA = 1) followed by a non-critical keyUsage (digitalSignature = 0, keyAgreement = 1, keyCertSign = 0) is encoded as [-2, 14]. A single critical subjectAltName (dNSName = “for.example”) is encoded as [-1, “for.example”].</t>

</section>
</section>
<section anchor="compliance-requirements-for-constrained-iot" title="Compliance Requirements for Constrained IoT">

<t>For general purpose applications, the normative requirements of <xref target="RFC5280"/> applies. This section describes the mandatory to implement algorithms and OIDs for constrained IoT application; the values of the OIDs including certificate fields and extensions, time format, attributes in distinguished names, etc.</t>

<t>TODO: Write this section</t>

</section>
<section anchor="dep-set" title="Deployment settings">

<t>CBOR certificates can be deployed with legacy X.509 certificates and CA infrastructure. In order to verify the signature, the CBOR certificate is used to recreate the original X.509 data structure to be able to verify the signature.</t>

<t>For protocols like TLS/DTLS 1.2, where the handshake is sent unencrypted, the actual encoding and compression can be done at different locations depending on the deployment setting. For example, the mapping between CBOR certificate and standard X.509 certificate can take place in a 6LoWPAN border gateway which allows the server side to stay unmodified. This case gives the advantage of the low overhead of a CBOR certificate over a constrained wireless links. The conversion to X.509 within an IoT device will incur a computational overhead, however, measured in energy this is negligible compared to the reduced communication overhead.</t>

<t>For the setting with constrained server and server-only authentication, the server only needs to be provisioned with the CBOR certificate and does not perform the conversion to X.509. This option is viable when client authentication can be asserted by other means.</t>

<t>For protocols like IKEv2, TLS/DTLS 1.3, and EDHOC, where certificates are encrypted, the proposed encoding needs to be done fully end-to-end, through adding the encoding/decoding functionality to the server.</t>

</section>
<section anchor="expected-certificate-sizes" title="Expected Certificate Sizes">

<t>The CBOR encoding of the sample certificate given in <xref target="appA"/> results in the numbers shown in <xref target="fig-table"/>. After <xref target="RFC7925"/> profiling, most duplicated information has been removed, and the remaining text strings are minimal in size. Therefore the further size reduction reached with general compression mechanisms will be small, mainly corresponding to making the ASN.1 endcoding more compact. The zlib number was calculated with zlib-flate.</t>

<figure><artwork><![CDATA[
zlib-flate -compress < cert.der > cert.compressed
]]></artwork></figure>

<figure title="Comparing Sizes of Certificates (bytes)" anchor="fig-table"><artwork align="center"><![CDATA[
+------------------+--------------+------------+--------------------+
|                  |   RFC 7925   |    zlib    |  CBOR Certificate  |
+------------------+---------------------------+--------------------+
| Certificate Size |     314      |     295    |         138        |
+------------------+--------------+------------+--------------------+
]]></artwork></figure>

</section>
<section anchor="native-CBOR" title="Natively Signed CBOR Certificates">

<t>The difference between CBOR compressed X.509 certificate and natively signed CBOR certificate is that the signature is calculated over the CBOR encoding of the CBOR sequence tbsCertficate rather than the DER encoded ASN.1 data. This removes entirely the need for ASN.1 DER and base64 encoding which reduces the processing in the authenticating devices, and avoids known complexities with these encodings.</t>

<t>Natively signed CBOR certificates can be applied in devices that are only required to authenticate to natively signed CBOR certificate compatible servers.
This is not a major restriction for many IoT deployments, where the parties issuing and verifying certificates can be a restricted ecosystem which not necessarily involves public CAs.</t>

<t>CBOR compressed X.509 certificates provides an intermediate step between <xref target="RFC7925"/> profiled X.509 certificates and natively signed CBOR certificates: An implementation of CBOR compressed X.509 certificates contains both the CBOR encoding of the X.509 certificate and the signature operations sufficient for natively signed CBOR certificates.</t>

</section>
<section anchor="sec-cons" title="Security Considerations">

<t>The CBOR profiling of X.509 certificates does not change the security assumptions needed when deploying standard X.509 certificates but decreases the number of fields transmitted, which reduces the risk for implementation errors.</t>

<t>Conversion between the certificate formats can be made in constant time to reduce risk of information leakage through side channels.</t>

<t>The mechanism in this draft does not reveal any additional information compared to X.509. Because of difference in size, it will be possible to detect that this profile is used. The gateway solution described in <xref target="dep-set"/> requires unencrypted certificates and is not recommended.</t>

</section>
<section anchor="iana" title="IANA Considerations">

<t>For all items, the ‘Reference’ field points to this document.</t>

<section anchor="cbor-certificate-types-registry" title="CBOR Certificate Types Registry">

<t>IANA has created a new registry titled “CBOR Certificate Types” under the new heading “CBOR Certificate”. The registration procedure is “Expert Review”. The columns of the registry are Value, Description, and Reference, where Value is an integer and the other columns are text strings. The initial contents of the registry are:</t>

<figure title="CBOR Certificate Types" anchor="fig-types"><artwork align="center"><![CDATA[
+-------+---------------------------------------+
| Value | Description                           |
+=======+=======================================+
|     0 | Natively Signed CBOR Certificate      |
|     1 | CBOR Compressed X.509 Certificate     |
+-------+---------------------------------------+
]]></artwork></figure>

</section>
<section anchor="cbor-attribute-type-registry" title="CBOR Attribute Type Registry">

<t>IANA has created a new registry titled “CBOR Attribute Type Registry” under the new heading “CBOR Certificate”. The registration procedure is “Expert Review”. The columns of the registry are Value, X.509 Attribute Type, and Reference, where Value is an integer and the other columns are text strings. The initial contents of the registry are:</t>

<figure title="CBOR Attribute Type Registry" anchor="fig-attrtype"><artwork align="center"><![CDATA[
+-------+---------------------------------------+
| Value | X.509 Attribute Type                  |
+=======+=======================================+
|     1 | id-at-countryName                     |
|     2 | id-at-organizationName                |
|     3 | id-at-organizationalUnitName          |
|     4 | id-at-dnQualifier                     |
|     5 | id-at-stateOrProvinceName             |
|     6 | id-at-commonName                      |
|     7 | id-at-serialNumber                    |
|     8 | id-at-localityName                    |
|     9 | id-at-title                           |
|    10 | id-at-surname                         |
|    11 | id-at-givenName                       |
|    12 | id-at-initials                        |
|    13 | id-at-pseudonym                       |
|    14 | id-at-generationQualifier             |
+-------+---------------------------------------+
]]></artwork></figure>

</section>
<section anchor="cbor-certificate-signature-algorithms-registry" title="CBOR Certificate Signature Algorithms Registry">

<t>IANA has created a new registry titled “CBOR Certificate Signature Algorithms” under the new heading “CBOR Certificate”. The registration procedure is “Expert Review”. The columns of the registry are Value, X.509 Algorithm, and Reference, where Value is an integer and the other columns are text strings. The initial contents of the registry are:</t>

<figure title="CBOR Certificate Signature Algorithms" anchor="fig-sigalgs"><artwork align="center"><![CDATA[
+-------+---------------------------------------+
| Value | X.509 Signature Algorithm             |
+=======+=======================================+
|     0 | ecdsa-with-SHA256                     |
|     1 | ecdsa-with-SHA384                     |
|     2 | ecdsa-with-SHA512                     |
|     3 | id-ecdsa-with-shake128                |
|     4 | id-ecdsa-with-shake256                |
|     5 | id-Ed25519                            |
|     6 | id-Ed448                              |
+-------+---------------------------------------+
]]></artwork></figure>

</section>
<section anchor="cbor-certificate-public-key-algorithms-registry" title="CBOR Certificate Public Key Algorithms Registry">

<t>IANA has created a new registry titled “CBOR Certificate Public Key Algorithms” under the new heading “CBOR Certificate”. The registration procedure is “Expert Review”. The columns of the registry are Value, X.509 Algorithm, and Reference, where Value is an integer and the other columns are text strings. The initial contents of the registry are:</t>

<figure title="CBOR Certificate Public Key Algorithms" anchor="fig-pkalgs"><artwork align="center"><![CDATA[
+-------+---------------------------------------+
| Value | X.509 Public Key Algorithm            |
+=======+=======================================+
|     0 | id-ecPublicKey + prime256v1           |
|     1 | id-ecPublicKey + prime384v1           |
|     2 | id-ecPublicKey + prime512v1           |
|     3 | id-X25519                             |
|     4 | id-X448                               |
|     5 | id-Ed25519                            |
|     6 | id-Ed448                              |
+-------+---------------------------------------+
]]></artwork></figure>

</section>
<section anchor="cose-header-parameters-registry" title="COSE Header Parameters Registry">

<t>This document registers the following entries in the “COSE Header Parameters” registry under the “CBOR Object Signing and Encryption (COSE)” heading. The formatting and processing are the same as the corresponding x5chain and x5u defined in <xref target="I-D.ietf-cose-x509"/> except that the certificates are CBOR encoded instead of DER encoded.</t>

<figure><artwork><![CDATA[
+-----------+-------+----------------+---------------------+
| Name      | Label | Value Type     | Description         |
+===========+=======+================+=====================+
| CBORchain | TBD1  | COSE_CBOR_Cert | An ordered chain of |
|           |       |                | CBOR certificates   |
+-----------+-------+----------------+---------------------+
| CBORu     | TBD2  | uri            | URI pointing to a   |
|           |       |                | CBOR certificate    |
+-----------+-------+----------------+---------------------+
]]></artwork></figure>

</section>
<section anchor="tls-certificate-compression-algorithm-ids-registry" title="TLS Certificate Compression Algorithm IDs Registry">

<t>This document registers the following entry in the “Certificate Compression Algorithm IDs” registry under the “Transport Layer Security (TLS) Extensions” heading.</t>

<figure><artwork><![CDATA[
+------------------+------------------------------+
| Algorithm Number | Description                  |
+==================+==============================+
| TBD3             | CBOR Certificate             |
+------------------+------------------------------+
]]></artwork></figure>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC2119;
&RFC5280;
&RFC7049;
&RFC7925;
&RFC8152;
&RFC8174;
&RFC8446;
&RFC8610;
&RFC8742;
&I-D.ietf-tls-dtls13;
&I-D.ietf-tls-certificate-compression;


    </references>

    <references title='Informative References'>

&RFC7228;
&I-D.ietf-cose-x509;
&I-D.ietf-lake-edhoc;
<reference anchor="X.509-IoT" target="https://doi.org/10.1007/978-3-319-93797-7_14">
  <front>
    <title>Lightweight X.509 Digital Certificates for the Internet of Things.</title>
    <author initials="F." surname="Forsby">
      <organization></organization>
    </author>
    <author initials="M." surname="Furuhed">
      <organization></organization>
    </author>
    <author initials="P." surname="Papadimitratos">
      <organization></organization>
    </author>
    <author initials="S." surname="Raza">
      <organization></organization>
    </author>
    <date year="2018" month="July"/>
  </front>
  <seriesInfo name="Springer, Cham." value="Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering, vol 242."/>
</reference>
<reference anchor="SECG" target="https://secg.org/sec1-v2.pdf">
  <front>
    <title>Elliptic Curve Cryptography, Standards for Efficient Cryptography Group, ver. 2</title>
    <author >
      <organization></organization>
    </author>
    <date year="2009"/>
  </front>
</reference>


    </references>


<section anchor="appA" title="Example CBOR Certificates">

<section anchor="example-x509-certificate" title="Example X.509 Certificate">

<t>Example of <xref target="RFC7925"/> profiled X.509 certificate parsed with OpenSSL.</t>

<figure><artwork><![CDATA[
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 128269 (0x1f50d)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN=RFC test CA
        Validity
            Not Before: Jan  1 00:00:00 2020 GMT
            Not After : Feb  2 00:00:00 2021 GMT
        Subject: CN=01-23-45-FF-FE-67-89-AB
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:ae:4c:db:01:f6:14:de:fc:71:21:28:5f:dc:7f:
                    5c:6d:1d:42:c9:56:47:f0:61:ba:00:80:df:67:88:
                    67:84:5e:e9:a6:9f:d4:89:31:49:da:e3:d3:b1:54:
                    16:d7:53:2c:38:71:52:b8:0b:0d:f3:e1:af:40:8a:
                    95:d3:07:1e:58
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Key Usage: 
                Digital Signature
    Signature Algorithm: ecdsa-with-SHA256
         30:44:02:20:37:38:73:ef:87:81:b8:82:97:ef:23:5c:1f:ac:
         cf:62:da:4e:44:74:0d:c2:a2:e6:a3:c6:c8:82:a3:23:8d:9c:
         02:20:3a:d9:35:3b:a7:88:68:3b:06:bb:48:fe:ca:16:ea:71:
         17:17:34:c6:75:c5:33:2b:2a:f1:cb:73:38:10:a1:fc
         
]]></artwork></figure>

<t>The DER encoding of the above certificate is 314 bytes.</t>

<figure><artwork><![CDATA[
308201363081DEA003020102020301F50D300A06082A8648CE3D040302301631
14301206035504030C0B5246432074657374204341301E170D32303031303130
30303030305A170D3231303230323030303030305A30223120301E0603550403
0C1730312D32332D34352D46462D46452D36372D38392D41423059301306072A
8648CE3D020106082A8648CE3D03010703420004AE4CDB01F614DEFC7121285F
DC7F5C6D1D42C95647F061BA0080DF678867845EE9A69FD4893149DAE3D3B154
16D7532C387152B80B0DF3E1AF408A95D3071E58A30F300D300B0603551D0F04
0403020780300A06082A8648CE3D04030203470030440220373873EF8781B882
97EF235C1FACCF62DA4E44740DC2A2E6A3C6C882A3238D9C02203AD9353BA788
683B06BB48FECA16EA71171734C675C5332B2AF1CB733810A1FC
]]></artwork></figure>

</section>
<section anchor="example-cbor-certificate-compression" title="Example CBOR Certificate Compression">

<t>The CBOR certificate compression of the X.509 in CBOR diagnostic format is:</t>

<figure><artwork><![CDATA[
(
  1,
  h'01f50d',
  0,
  "RFC test CA",
  721699200,
  760492800,
  h'0123456789AB',
  0,
  h'02ae4cdb01f614defc7121285fdc7f5c6d1d42c95647f061ba
    0080df678867845e',
  5,
  h'373873EF8781B88297EF235C1FACCF62DA4E44740DC2A2E6A3
    C6C882A3238D9C3AD9353BA788683B06BB48FECA16EA711717
    34C675C5332B2AF1CB733810A1FC'
)
]]></artwork></figure>

<t>The CBOR encoding (CBOR sequence) of the CBOR certificate is 138 bytes.</t>

<figure><artwork><![CDATA[
014301F50D006B52464320746573742043411A2B0441801A2D54330046012345
6789AB00582102AE4CDB01F614DEFC7121285FDC7F5C6D1D42C95647F061BA00
80DF678867845E055840373873EF8781B88297EF235C1FACCF62DA4E44740DC2
A2E6A3C6C882A3238D9C3AD9353BA788683B06BB48FECA16EA71171734C675C5
332B2AF1CB733810A1FC
]]></artwork></figure>

</section>
<section anchor="example-natively-signed-cbor-certificate" title="Example: Natively Signed CBOR Certificate">

<t>The corresponding natively signed CBOR certificate in CBOR diagnostic format is identical except for type and signatureValue.</t>

<figure><artwork><![CDATA[
(
  0,
  h'01f50d',
  0,
  "RFC test CA",
  721699200,
  760492800,
  h'0123456789AB',
  0,
  h'02ae4cdb01f614defc7121285fdc7f5c6d1d42c95647f061
    ba0080df678867845e',
  5,
  h'7F10A063DA8DB2FD49414440CDF85070AC22A266C7F1DFB1
    577D9A35A295A8742E794258B76968C097F85542322A0796
    0199C13CC0220A9BC729EF2ECA638CFE'
)
]]></artwork></figure>

<t>The CBOR encoding (CBOR sequence) of the CBOR certificate is 138 bytes.</t>

<figure><artwork><![CDATA[
004301F50D006B52464320746573742043411A2B0441801A2D54330046012345
6789AB00582102AE4CDB01F614DEFC7121285FDC7F5C6D1D42C95647F061BA00
80DF678867845E0558407F10A063DA8DB2FD49414440CDF85070AC22A266C7F1
DFB1577D9A35A295A8742E794258B76968C097F85542322A07960199C13CC022
0A9BC729EF2ECA638CFE
]]></artwork></figure>

</section>
</section>
<section anchor="appB" title="X.509 Certificate Profile, ASN.1">

<t>NOTE: The ASN.1 below is not up to date with the rest of the specification</t>

<t>TODO - This ASN.1 profile should probably be in a document that updates RFC 7925.</t>

<figure><artwork type="ASN.1"><![CDATA[
IOTCertificate DEFINITIONS EXPLICIT TAGS ::= BEGIN

Certificate  ::= SEQUENCE {
  tbsCertificate        TBSCertificate,
  signatureAlgorithm    AlgorithmIdentifier,
  signatureValue        BIT STRING
}

TBSCertificate  ::= SEQUENCE {
  version           [0] INTEGER {v3(2)},
  serialNumber          INTEGER (1..MAX),
  signature             AlgorithmIdentifier,
  issuer                Name,
  validity              Validity,
  subject               Name,
  subjectPublicKeyInfo  SubjectPublicKeyInfo,
  extensions        [3] Extensions OPTIONAL
}

Name  ::= SEQUENCE SIZE (1) OF DistinguishedName

DistinguishedName  ::= SET SIZE (1) OF CommonName

CommonName  ::= SEQUENCE {
  type              OBJECT IDENTIFIER (id-at-commonName),
  value             UTF8String
}

Validity  ::= SEQUENCE {
  notBefore         UTCTime,
  notAfter          UTCTime
}

SubjectPublicKeyInfo  ::= SEQUENCE {
  algorithm         AlgorithmIdentifier,
  subjectPublicKey  BIT STRING
}

AlgorithmIdentifier  ::=  SEQUENCE  {
  algorithm         OBJECT IDENTIFIER,
  parameters        ANY DEFINED BY algorithm OPTIONAL  }
}

Extensions  ::= SEQUENCE SIZE (1..MAX) OF Extension

Extension  ::= SEQUENCE {
  extnId            OBJECT IDENTIFIER,
  critical          BOOLEAN DEFAULT FALSE,
  extnValue         OCTET STRING
 }

id-at-commonName    OBJECT IDENTIFIER   ::=
         {joint-iso-itu-t(2) ds(5) attributeType(4) 3}

END
]]></artwork></figure>

</section>


  </back>

<!-- ##markdown-source:
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
+T9sCvYDVXEAAA==

-->

</rfc>

