<?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.2.8 -->

<!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-01" 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="July" day="13"/>

    
    
    

    <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 RFC 7925 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 RFC 7925.</t>
  <t>The “native” CBOR encoded certificate, which further optimizes the performance in constrained environments but is not backwards compatible with RFC 7925, 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 maximum compression that can be expected with CBOR, and what is the right trade-off between compactness and generality.</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 native 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>

<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 RFC 7925 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>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 Distinguished Name is encoded as CBOR map, but if only CN is present the value can be encoded as a single text value.</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’ field is restricted to specifying the value of the common name. By RFC 7925 an IoT subject is identified by either an EUI-64 for clients, or by a FQDN for servers. An EUI-64 mapped from a 48-bit MAC address is encoded as a CBOR byte string of length 6. Other EUI-64 is encoded as a CBOR byte string of length 8. A FQDN is encoded as a CBOR text string.</t>
  <t>subjectPublicKeyInfo. If the ‘algorithm’ field is the default (id-ecPublicKey and prime256v1), it is omitted in the CBOR encoding, otherwise it is included in the subjectPublicKeyInfo_algorithm field encoded as an int, (see <xref target="iana"/>). The ‘subjectPublicKey’ 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. This is the most compact representation of the allowed extensions. The extensions mandated to be supported by RFC 7925 is encodeded as specified below, where critical extensions are encoded with a negative sign. TODO: need to make things mod 3 instead.  <vspace blankLines='1'/>
I.e. non-critical keyUsage keyAgreement is encoded as 5, critical basicConstraints cA is encodes as -3, and non-criticical extKeyUsage id-kp-codeSigning + id-kp-OCSPSigning is encoded as 22.  <vspace blankLines='1'/>
If subjectAltName is present, the value is placed at the end of the array encoded as a byte or text string following the encoding rules for the subject field. If the array contains a single int, extensions is encoded as the int instead of an array.</t>
</list></t>

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

<t><list style="symbols">
  <t>signatureAlgorithm. If the ‘signatureAlgorithm’ field is the default (ecdsa-with-SHA256) it is omitted in the CBOR encoding, otherwise it is included in the signatureAlgorithm field encoded as an CBOR int (see <xref target="iana"/>).</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 native 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 ecoding 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 native 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 a group, the elements of which are to be used in an unadorned CBOR Sequence <xref target="RFC8742"/>. The member names therefore only have documentary value.</t>

<figure><artwork type="CDDL"><![CDATA[
certificate = (
   type : int,
   serialNumber : bytes,
   issuer : { + int => bytes } / text,
   validity_notBefore: uint,
   validity_notAfter: uint,
   subject : text / bytes
   subjectPublicKey : bytes
   extensions : [ *4 int, ? text / bytes ] / int,
   signatureValue : bytes,
   ? ( signatureAlgorithm : int,
       subjectPublicKeyInfo_algorithm : int )
)
]]></artwork></figure>

<t>The signatureValue for native CBOR certificates is calculated over the CBOR sequence:</t>

<figure><artwork type="CDDL"><![CDATA[
(
   type : int,
   serialNumber : bytes,
   issuer : { + int => bytes } / text,
   validity_notBefore: uint,
   validity_notAfter: uint,
   subject : text / bytes
   subjectPublicKey : bytes
   extensions : [ *4 int, ? text / bytes ] / int,
   ? ( signatureAlgorithm : int,
       subjectPublicKeyInfo_algorithm : int )
)
]]></artwork></figure>

<t>TODO - Specify exactly how issuer is encoded into a map / text and back again. This is a compromise between compactness and complete generality.</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 RFC 7925 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    |         136        |
+------------------+--------------+------------+--------------------+
]]></artwork></figure>

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

<t>The difference between CBOR compressed X.509 certificate and native CBOR certificate is that the signature is calculated over the CBOR encoding 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>Native CBOR certificates can be applied in devices that are only required to authenticate to native 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 RFC 7925 profiled X.509 certificates and native 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 native 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 | Native CBOR Certificate.              |
|     1 | CBOR Compressed X.509 Certificate     |
+-------+---------------------------------------+
]]></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-SHA384                     |
|     1 | ecdsa-with-SHA512                     |
|     2 | id-ecdsa-with-shake128                |
|     3 | id-ecdsa-with-shake256                |
|     4 | id-Ed25519                            |
|     5 | 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 + prime384v1           |
|     1 | id-ecPublicKey + prime512v1           |
|     2 | id-X25519                             |
|     3 | id-X448                               |
|     4 | id-Ed25519                            |
|     5 | 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 RFC 7925 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',
  "RFC test CA",
  721699200,
  760492800,
  h'0123456789AB',
  h'02ae4cdb01f614defc7121285fdc7f5c6d1d42c95647f061ba
    0080df678867845e',
  5,
  h'373873EF8781B88297EF235C1FACCF62DA4E44740DC2A2E6A3
    C6C882A3238D9C3AD9353BA788683B06BB48FECA16EA711717
    34C675C5332B2AF1CB733810A1FC'
)
]]></artwork></figure>

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

<figure><artwork><![CDATA[
014301F50D6B52464320746573742043411A2B0441801A2D5433004601234567
89AB582102AE4CDB01F614DEFC7121285FDC7F5C6D1D42C95647F061BA0080DF
678867845E055840373873EF8781B88297EF235C1FACCF62DA4E44740DC2A2E6
A3C6C882A3238D9C3AD9353BA788683B06BB48FECA16EA71171734C675C5332B
2AF1CB733810A1FC
]]></artwork></figure>

</section>
<section anchor="example-native-cbor-certificate" title="Example Native CBOR Certificate">

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

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

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

<figure><artwork><![CDATA[
004301F50D6B52464320746573742043411A2B0441801A2D5433004601234567
89AB582102AE4CDB01F614DEFC7121285FDC7F5C6D1D42C95647F061BA0080DF
678867845E0558407F10A063DA8DB2FD49414440CDF85070AC22A266C7F1DFB1
577D9A35A295A8742E794258B76968C097F85542322A07960199C13CC0220A9B
C729EF2ECA638CFE
]]></artwork></figure>

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

<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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
53hqce5cMBsxdT2umIZ/Bw0yhUUqZQAA

-->

</rfc>

