<?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.6.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-traces-03" category="info" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title>Traces of EDHOC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-traces-03"/>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization abbrev="Ericsson">Ericsson</organization>
      <address>
        <postal>
          <street>SE-164 40 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J" surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization abbrev="Ericsson">Ericsson</organization>
      <address>
        <postal>
          <street>SE-164 40 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="M" surname="Serafin" fullname="Marek Serafin">
      <organization abbrev="ASSA ABLOY">ASSA ABLOY</organization>
      <address>
        <postal>
          <street>32-080 Zabierzów</street>
          <country>Poland</country>
        </postal>
        <email>marek.serafin@assaabloy.com</email>
      </address>
    </author>
    <author initials="M" surname="Tiloca" fullname="Marco Tiloca">
      <organization abbrev="RISE">RISE</organization>
      <address>
        <postal>
          <street>SE-164 40 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <date year="2022" month="October" day="24"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document contains some example traces of Ephemeral Diffie-Hellman Over COSE (EDHOC).</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>EDHOC <xref target="I-D.ietf-lake-edhoc"/> is a lightweight authenticated key exchange protocol designed for highly constrained settings. This document contains annotated traces of EDHOC protocol runs, with input, output and intermediate processing results to simplify testing of implementations.</t>
      <t>The document contains two traces:</t>
      <ul spacing="normal">
        <li>
          <xref target="sec-trace-1"/> - Authentication with signature keys identified by the hash value of the X.509 certificates (provided in <xref target="certs"/>). The endpoints use EdDSA <xref target="RFC8032"/> for authentication and X25519 <xref target="RFC7748"/> for ephemeral-ephemeral Diffie-Hellman key exchange.</li>
        <li>
          <xref target="sec-trace-2"/> - Authentication with static Diffie-Hellman keys identified by short key identifiers labelling CWT Claim Sets (CCSs) <xref target="RFC8392"/>. The endpoints use NIST P-256 (FIPS PUB 186-4) for both ephemeral-ephemeral and static-ephemeral Diffie-Hellman key exchange. This trace also illustrates the cipher suite negotiation, and provides an example of low protocol overhead, with messages sizes of (39, 45, 19) bytes.</li>
      </ul>
      <t>The traces in this draft are valid for version -16 and -17 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
      <t>Editor's note: Update reference to test vectors below.</t>
      <t>Test vectors for trace 2 can be found at https://github.com/lake-wg/edhoc/tree/master/test-vectors-16/ )</t>
    </section>
    <section anchor="setup">
      <name>Setup</name>
      <t>EDHOC is run between an Initiator (I) and a Responder (R). The private/public key pairs and credentials of I and R required to produce the protocol messages are shown in the traces when needed for the calculations.</t>
      <t>EDHOC messages and intermediate results are encoded in CBOR <xref target="RFC8949"/> and can therefore be displayed in CBOR diagnostic notation using, e.g., the CBOR playground <xref target="CborMe"/>, which makes them easy to parse for humans.</t>
      <t>NOTE 1. The same name is used for hexadecimal byte strings and their CBOR encodings. The traces contain both the raw byte strings and the corresponding CBOR encoded data items.</t>
      <t>NOTE 2. If not clear from the context, remember that CBOR sequences and CBOR arrays assume CBOR encoded data items as elements.</t>
      <t>NOTE 3. When the protocol transporting EDHOC messages does not inherently provide correlation across all messages, like CoAP, then some messages typically are prepended with connection identifiers and potentially a message_1 indicator (see Sections <xref target="I-D.ietf-lake-edhoc" section="3.4.1" sectionFormat="bare"/> and <xref target="I-D.ietf-lake-edhoc" section="A.2" sectionFormat="bare"/> of <xref target="I-D.ietf-lake-edhoc"/>). Those bytes are not included in the traces in this document.</t>
    </section>
    <section anchor="sec-trace-1">
      <name>Authentication with signatures, X.509 certificates identified by 'x5t'</name>
      <t>In this example the Initiator (I) and Responder (R) are authenticated with digital signatures (METHOD = 0). Both I and R support cipher suite 0, which determines the algorithms:</t>
      <ul spacing="normal">
        <li>EDHOC AEAD algorithm = AES-CCM-16-64-128</li>
        <li>EDHOC hash algorithm = SHA-256</li>
        <li>EDHOC MAC length in bytes (Static DH) = 8</li>
        <li>EDHOC key exchange algorithm (ECDH curve) = X25519</li>
        <li>EDHOC signature algorithm = EdDSA</li>
        <li>Application AEAD algorithm = AES-CCM-16-64-128</li>
        <li>Application hash algorithm = SHA-256</li>
      </ul>
      <t>The public keys are represented with X.509 certificates identified by the COSE header parameter 'x5t'.</t>
      <section anchor="message1">
        <name>message_1</name>
        <t>Both endpoints are authenticated with signatures, i.e. METHOD = 0:</t>
        <artwork align="left"><![CDATA[
METHOD (CBOR Data Item) (1 byte)
00
]]></artwork>
        <t>I selects cipher suite 0. A single cipher suite is encoded as an int:</t>
        <artwork><![CDATA[
SUITES_I (CBOR Data Item) (1 byte)
00
]]></artwork>
        <t>I creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Initiator's ephemeral private key
X (Raw Value) (32 bytes)
89 2e c2 8e 5c b6 66 91 08 47 05 39 50 0b 70 5e 60 d0 08 d3 47 c5 81
7e e9 f3 32 7c 8a 87 bb 03
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key
G_X (Raw Value) (32 bytes)
31 f8 2c 7b 5b 9c bb f0 f1 94 d9 13 cc 12 ef 15 32 d3 28 ef 32 63 2a
48 81 a1 c0 70 1e 23 7f 04
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key
G_X (CBOR Data Item) (34 bytes)
58 20 31 f8 2c 7b 5b 9c bb f0 f1 94 d9 13 cc 12 ef 15 32 d3 28 ef 32
63 2a 48 81 a1 c0 70 1e 23 7f 04
]]></artwork>
        <t>I selects its connection identifier C_I to be the byte string 0x2d, which since it is represented by the 1-byte CBOR int -14 is encoded as 0x2d:</t>
        <artwork><![CDATA[
C_I (Raw Value) (Connection identifier chosen by I) (1 byte)
2d
]]></artwork>
        <artwork><![CDATA[
C_I (CBOR Data Item) (Connection identifier chosen by I) (1 byte)
2d
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_1 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>I constructs message_1:</t>
        <artwork><![CDATA[
message_1 =
(
 0,
 0,
 h'31f82c7b5b9cbbf0f194d913cc12ef1532d328ef32632a48
   81a1c0701e237f04',
 -14
)
]]></artwork>
        <artwork><![CDATA[
message_1 (CBOR Sequence) (37 bytes)
00 00 58 20 31 f8 2c 7b 5b 9c bb f0 f1 94 d9 13 cc 12 ef 15 32 d3 28
ef 32 63 2a 48 81 a1 c0 70 1e 23 7f 04 2d
]]></artwork>
      </section>
      <section anchor="message2">
        <name>message_2</name>
        <t>R supports the most preferred and selected cipher suite 0, so SUITES_I is acceptable.</t>
        <t>R creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Responder's ephemeral private key
Y (Raw Value) (32 bytes)
e6 9c 23 fb f8 1b c4 35 94 24 46 83 7f e8 27 bf 20 6c 8f a1 0a 39 db
47 44 9e 5a 81 34 21 e1 e8
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key
G_Y (Raw Value) (32 bytes)
dc 88 d2 d5 1d a5 ed 67 fc 46 16 35 6b c8 ca 74 ef 9e be 8b 38 7e 62
3a 36 0b a4 80 b9 b2 9d 1c
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key
G_Y (CBOR Data Item) (34 bytes)
58 20 dc 88 d2 d5 1d a5 ed 67 fc 46 16 35 6b c8 ca 74 ef 9e be 8b 38
7e 62 3a 36 0b a4 80 b9 b2 9d 1c
]]></artwork>
        <t>R selects its connection identifier C_R to be the byte string 0x18, which since it is not represented as a 1-byte CBOR int is encoded as h'18' = 0x4118:</t>
        <artwork><![CDATA[
C_R (Raw Value) (Connection identifier chosen by R) (1 byte)
18
]]></artwork>
        <artwork><![CDATA[
C_R (CBOR Data Item) (Connection identifier chosen by R) (2 bytes)
41 18
]]></artwork>
        <t>The transcript hash TH_2 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_2 = H( G_Y, C_R, H(message_1) )</t>
        <artwork><![CDATA[
H(message_1) (Raw Value) (32 bytes)
c1 65 d6 a9 9d 1b ca fa ac 8d bf 2b 35 2a 6f 7d 71 a3 0b 43 9c 9d 64
d3 49 a2 38 48 03 8e d1 6b
]]></artwork>
        <artwork><![CDATA[
H(message_1) (CBOR Data Item) (34 bytes)
58 20 c1 65 d6 a9 9d 1b ca fa ac 8d bf 2b 35 2a 6f 7d 71 a3 0b 43 9c
9d 64 d3 49 a2 38 48 03 8e d1 6b
]]></artwork>
        <t>The input to calculate TH_2 is the CBOR sequence:</t>
        <t>G_Y, C_R, H(message_1)</t>
        <artwork><![CDATA[
Input to calculate TH_2 (CBOR Sequence) (70 bytes)
58 20 dc 88 d2 d5 1d a5 ed 67 fc 46 16 35 6b c8 ca 74 ef 9e be 8b 38
7e 62 3a 36 0b a4 80 b9 b2 9d 1c 41 18 58 20 c1 65 d6 a9 9d 1b ca fa
ac 8d bf 2b 35 2a 6f 7d 71 a3 0b 43 9c 9d 64 d3 49 a2 38 48 03 8e d1
6b
]]></artwork>
        <artwork><![CDATA[
TH_2 (Raw Value) (32 bytes)
3a b1 17 00 84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99 50 fd
62 48 84 f7 f5 7c d9 8b 07
]]></artwork>
        <artwork><![CDATA[
TH_2 (CBOR Data Item) (34 bytes)
58 20 3a b1 17 00 84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99
50 fd 62 48 84 f7 f5 7c d9 8b 07
]]></artwork>
        <t>PRK_2e is specified in <xref section="4.1.1.1" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>First, the ECDH shared secret G_XY is computed from G_X and Y, or G_Y and X:</t>
        <artwork><![CDATA[
G_XY (Raw Value) (ECDH shared secret) (32 bytes)
e5 cd f3 a9 86 cd ac 5b 7b f0 46 91 e2 b0 7c 08 e7 1f 53 99 8d 8f 84
2b 7c 3f b4 d8 39 cf 7b 28
]]></artwork>
        <t>Then, PRK_2e is calculated using Extract() determined by the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_2e = Extract( salt, G_XY ) =
       = HMAC-SHA-256( salt, G_XY )
]]></artwork>
        <t>where salt is TH_2:</t>
        <artwork><![CDATA[
salt (Raw Value) (32 bytes)
3a b1 17 00 84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99 50 fd
62 48 84 f7 f5 7c d9 8b 07
]]></artwork>
        <artwork><![CDATA[
PRK_2e (Raw Value) (32 bytes)
2a e2 42 1d e9 a7 2a 7a e6 71 5f b5 18 f3 ed 30 05 8f d9 ca 58 b6 25
68 ca fe 7c da a1 5a 41 f7
]]></artwork>
        <t>Since METHOD = 0, R authenticates using signatures. Since the selected cipher suite is 0, the EDHOC signature algorithm is EdDSA.</t>
        <t>R's signature key pair using EdDSA:</t>
        <artwork><![CDATA[
Responder's private authentication key
SK_R (Raw Value) (32 bytes)
ef 14 0f f9 00 b0 ab 03 f0 c0 8d 87 9c bb d4 b3 1e a7 1e 6e 7e e7 ff
cb 7e 79 55 77 7a 33 27 99
]]></artwork>
        <artwork><![CDATA[
Responders's public authentication key
PK_R (Raw Value) (32 bytes)
a1 db 47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62
c0 0b 3a c5 5d e9 2f 93 59
]]></artwork>
        <t>PRK_3e2m is specified in <xref section="4.1.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>Since R authenticates with signatures PRK_3e2m = PRK_2e.</t>
        <artwork><![CDATA[
PRK_3e2m (Raw Value) (32 bytes)
2a e2 42 1d e9 a7 2a 7a e6 71 5f b5 18 f3 ed 30 05 8f d9 ca 58 b6 25
68 ca fe 7c da a1 5a 41 f7
]]></artwork>
        <t>R constructs the remaining input needed to calculate MAC_2:</t>
        <t>MAC_2 = EDHOC-KDF( PRK_3e2m, 2, context_2, mac_length_2 )</t>
        <t>context_2 = &lt;&lt; ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <t>CRED_R is identified by a 64-bit hash:</t>
        <artwork><![CDATA[
ID_CRED_R =
{
  34 : [-15, h'79f2a41b510c1f9b']
}
]]></artwork>
        <t>where the COSE header value 34 ('x5t') indicates a hash of an X.509 certficate,
and the COSE algorithm -15 indicates the hash algorithm SHA-256 truncated to 64 bits.</t>
        <t>ID_CRED_R (CBOR Data Item) (14 bytes)
a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b</t>
        <t>CRED_R is a CBOR byte string of the DER encoding of the X.509 certificate in <xref target="resp-cer"/>:</t>
        <artwork><![CDATA[
CRED_R (Raw Value) (241 bytes)
30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05 06 03 2b 65
70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f 6f
74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32 34
33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20 30
1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f 6e 64 65 72
20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 a1 db 47
b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62 c0 0b 3a
c5 5d e9 2f 93 59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc 01 ea b0 92
8e 8b 2b 6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f ec fa f1 45
37 a1 af 14 cc 8b e8 29 c6 b7 30 44 10 18 37 eb 4a bc 94 95 65 d8 6d
ce 51 cf ae 52 ab 82 c1 52 cb 02
]]></artwork>
        <artwork><![CDATA[
CRED_R (CBOR Data Item) (243 bytes)
58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05 06 03
2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52
6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38
32 34 33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31
20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f 6e 64
65 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 a1
db 47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62 c0
0b 3a c5 5d e9 2f 93 59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc 01 ea
b0 92 8e 8b 2b 6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f ec fa
f1 45 37 a1 af 14 cc 8b e8 29 c6 b7 30 44 10 18 37 eb 4a bc 94 95 65
d8 6d ce 51 cf ae 52 ab 82 c1 52 cb 02
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_2 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>context_2 = &lt;&lt; ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <artwork><![CDATA[
context_2 (CBOR Sequence) (291 bytes)
a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 20 3a b1 17 00 84 1f ce
19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99 50 fd 62 48 84 f7 f5 7c d9
8b 07 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05
06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43
20 52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36
30 38 32 34 33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30
22 31 20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f
6e 64 65 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21
00 a1 db 47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6
62 c0 0b 3a c5 5d e9 2f 93 59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc
01 ea b0 92 8e 8b 2b 6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f
ec fa f1 45 37 a1 af 14 cc 8b e8 29 c6 b7 30 44 10 18 37 eb 4a bc 94
95 65 d8 6d ce 51 cf ae 52 ab 82 c1 52 cb 02
]]></artwork>
        <artwork><![CDATA[
context_2 (CBOR byte string) (294 bytes)
59 01 23 a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 20 3a b1 17 00
84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99 50 fd 62 48 84 f7
f5 7c d9 8b 07 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e
c4 30 05 06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44
48 4f 43 20 52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30
33 31 36 30 38 32 34 33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30
30 5a 30 22 31 20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52 65
73 70 6f 6e 64 65 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65
70 03 21 00 a1 db 47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a
a0 f2 c6 62 c0 0b 3a c5 5d e9 2f 93 59 30 05 06 03 2b 65 70 03 41 00
b7 23 bc 01 ea b0 92 8e 8b 2b 6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0
32 47 8f ec fa f1 45 37 a1 af 14 cc 8b e8 29 c6 b7 30 44 10 18 37 eb
4a bc 94 95 65 d8 6d ce 51 cf ae 52 ab 82 c1 52 cb 02
]]></artwork>
        <t>MAC_2 is computed through Expand() using the EDHOC hash algorithm, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <t>MAC_2 = HKDF-Expand(PRK_3e2m, info, mac_length_2), where</t>
        <t>info = ( 2, context_2, mac_length_2 )</t>
        <t>Since METHOD = 0, mac_length_2 is given by the EDHOC hash algorithm.</t>
        <t>info for MAC_2 is:</t>
        <artwork><![CDATA[
info =
(
 2,
 h'a11822822e4879f2a41b510c1f9b58203ab11700841fce19
   3c323911edb317b046dcf24b9950fd624884f7f57cd98b07
   58f13081ee3081a1a003020102020462319ec4300506032b
   6570301d311b301906035504030c124544484f4320526f6f
   742045643235353139301e170d3232303331363038323433
   365a170d3239313233313233303030305a30223120301e06
   035504030c174544484f4320526573706f6e646572204564
   3235353139302a300506032b6570032100a1db47b9518485
   4ad12a0c1a354e418aace33aa0f2c662c00b3ac55de92f93
   59300506032b6570034100b723bc01eab0928e8b2b6c98de
   19cc3823d46e7d6987b032478fecfaf14537a1af14cc8be8
   29c6b73044101837eb4abc949565d86dce51cfae52ab82c1
   52cb02',
 32
)
]]></artwork>
        <t>where the last value is the output size of the EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for MAC_2 (CBOR Sequence) (297 bytes)
02 59 01 23 a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 20 3a b1 17
00 84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99 50 fd 62 48 84
f7 f5 7c d9 8b 07 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31
9e c4 30 05 06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45
44 48 4f 43 20 52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32
30 33 31 36 30 38 32 34 33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30
30 30 5a 30 22 31 20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52
65 73 70 6f 6e 64 65 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b
65 70 03 21 00 a1 db 47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3
3a a0 f2 c6 62 c0 0b 3a c5 5d e9 2f 93 59 30 05 06 03 2b 65 70 03 41
00 b7 23 bc 01 ea b0 92 8e 8b 2b 6c 98 de 19 cc 38 23 d4 6e 7d 69 87
b0 32 47 8f ec fa f1 45 37 a1 af 14 cc 8b e8 29 c6 b7 30 44 10 18 37
eb 4a bc 94 95 65 d8 6d ce 51 cf ae 52 ab 82 c1 52 cb 02 18 20
]]></artwork>
        <artwork><![CDATA[
MAC_2 (Raw Value) (32 bytes)
7a b9 61 ac 76 30 26 9a 99 5a 72 9a 0f ce ad 31 f5 cd 97 fb 51 5b c5
db 9c 11 19 83 3e 4c 3b 4a
]]></artwork>
        <artwork><![CDATA[
MAC_2 (CBOR Data Item) (34 bytes)
58 20 7a b9 61 ac 76 30 26 9a 99 5a 72 9a 0f ce ad 31 f5 cd 97 fb 51
5b c5 db 9c 11 19 83 3e 4c 3b 4a
]]></artwork>
        <t>Since METHOD = 0, Signature_or_MAC_2 is the 'signature' of the COSE_Sign1 object.</t>
        <t>R constructs the message to be signed:</t>
        <artwork><![CDATA[
[ "Signature1", << ID_CRED_R >>,
 << TH_2, CRED_R, ? EAD_2 >>, MAC_2 ] =

[
 "Signature1",
 h'a11822822e4879f2a41b510c1f9b',
 h'58203ab11700841fce193c323911edb317b046dcf24b9950
   fd624884f7f57cd98b0758f13081ee3081a1a00302010202
   0462319ec4300506032b6570301d311b301906035504030c
   124544484f4320526f6f742045643235353139301e170d32
   32303331363038323433365a170d32393132333132333030
   30305a30223120301e06035504030c174544484f43205265
   73706f6e6465722045643235353139302a300506032b6570
   032100a1db47b95184854ad12a0c1a354e418aace33aa0f2
   c662c00b3ac55de92f9359300506032b6570034100b723bc
   01eab0928e8b2b6c98de19cc3823d46e7d6987b032478fec
   faf14537a1af14cc8be829c6b73044101837eb4abc949565
   d86dce51cfae52ab82c152cb02',
 h'7ab961ac7630269a995a729a0fcead31f5cd97fb515bc5db
   9c1119833e4c3b4a'
]
]]></artwork>
        <artwork><![CDATA[
Message to be signed 2 (CBOR Data Item) (341 bytes)
84 6a 53 69 67 6e 61 74 75 72 65 31 4e a1 18 22 82 2e 48 79 f2 a4 1b
51 0c 1f 9b 59 01 15 58 20 3a b1 17 00 84 1f ce 19 3c 32 39 11 ed b3
17 b0 46 dc f2 4b 99 50 fd 62 48 84 f7 f5 7c d9 8b 07 58 f1 30 81 ee
30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05 06 03 2b 65 70 30 1d
31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f 6f 74 20 45
64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32 34 33 36 5a
17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20 30 1e 06 03
55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f 6e 64 65 72 20 45 64
32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 a1 db 47 b9 51 84
85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62 c0 0b 3a c5 5d e9
2f 93 59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc 01 ea b0 92 8e 8b 2b
6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f ec fa f1 45 37 a1 af
14 cc 8b e8 29 c6 b7 30 44 10 18 37 eb 4a bc 94 95 65 d8 6d ce 51 cf
ae 52 ab 82 c1 52 cb 02 58 20 7a b9 61 ac 76 30 26 9a 99 5a 72 9a 0f
ce ad 31 f5 cd 97 fb 51 5b c5 db 9c 11 19 83 3e 4c 3b 4a
]]></artwork>
        <t>R signs using the private authentication key SK_R</t>
        <artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (64 bytes)
af 73 81 f1 9a e1 fe 0f 53 89 5b 18 e5 81 8b 1f e3 e3 46 30 72 c0 2a
d3 9f 20 2d 38 28 aa 62 37 c1 0b 08 66 8f c4 76 96 41 24 03 1f ed 9f
94 4e 6a 78 79 7f 5c 08 49 58 db 0f 20 89 c2 1c 52 02
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (66 bytes)
58 40 af 73 81 f1 9a e1 fe 0f 53 89 5b 18 e5 81 8b 1f e3 e3 46 30 72
c0 2a d3 9f 20 2d 38 28 aa 62 37 c1 0b 08 66 8f c4 76 96 41 24 03 1f
ed 9f 94 4e 6a 78 79 7f 5c 08 49 58 db 0f 20 89 c2 1c 52 02
]]></artwork>
        <t>R constructs the plaintext without padding:</t>
        <artwork><![CDATA[
PAD_2 (CBOR sequence of simple type) (0 bytes)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_2 =
(
 ? PAD_2,
 ID_CRED_R / bstr / -24..23,
 Signature_or_MAC_2,
 ? EAD_2
)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_2 (CBOR Sequence) (80 bytes)
a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 40 af 73 81 f1 9a e1 fe
0f 53 89 5b 18 e5 81 8b 1f e3 e3 46 30 72 c0 2a d3 9f 20 2d 38 28 aa
62 37 c1 0b 08 66 8f c4 76 96 41 24 03 1f ed 9f 94 4e 6a 78 79 7f 5c
08 49 58 db 0f 20 89 c2 1c 52 02
]]></artwork>
        <t>The input needed to calculate KEYSTREAM_2 is defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using Expand() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
KEYSTREAM_2 = EDHOC-KDF( PRK_2e, 0, TH_2, plaintext_length ) =
            = HKDF-Expand( PRK_2e, info, plaintext_length )
]]></artwork>
        <t>where plaintext_length is the length of PLAINTEXT_2, and info for KEYSTREAM_2 is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'3ab11700841fce193c323911edb317b046dcf24b9950fd62
   4884f7f57cd98b07',
 80
)
]]></artwork>
        <t>where the last value is the length of PLAINTEXT_2.</t>
        <artwork><![CDATA[
info for KEYSTREAM_2 (CBOR Sequence) (37 bytes)
00 58 20 3a b1 17 00 84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b
99 50 fd 62 48 84 f7 f5 7c d9 8b 07 18 50
]]></artwork>
        <artwork><![CDATA[
KEYSTREAM_2 (Raw Value) (80 bytes)
c6 a1 ed d7 c9 ff 34 20 38 c7 b7 82 43 e4 1a dc f0 84 6c 7e 80 22 05
4f 66 34 69 4c 57 ea e8 b7 b4 ca 1c cb 5d 1d 64 94 0e 14 0f 02 b4 73
fb 18 f1 64 a7 3a 04 13 57 4a 0e 96 d8 28 3e e9 2f aa 58 36 30 cf 47
ac 7d 9a 06 c3 83 cd f3 bb 4e 71
]]></artwork>
        <t>R calculates CIPHERTEXT_2 as XOR between PLAINTEXT_2 and KEYSTREAM_2:</t>
        <artwork><![CDATA[
CIPHERTEXT_2 (Raw Value) (80 bytes)
67 b9 cf 55 e7 b7 4d d2 9c dc e6 8e 5c 7f 42 9c 5f f7 ed 8f 1a c3 fb
40 35 bd 32 54 b2 6b 63 a8 57 29 5a fb 2f dd 4e 47 91 34 22 3a 9c d9
99 2f 30 6f af 5c 8b d7 21 dc 4f b2 db 37 d3 76 bb e4 32 4e 49 b0 1b
a4 34 c2 dd cc a3 44 31 a7 1c 73
]]></artwork>
        <t>R constructs message_2:</t>
        <artwork><![CDATA[
message_2 =
(
 G_Y_CIPHERTEXT_2,
 C_R
)
]]></artwork>
        <t>where G_Y_CIPHERTEXT_2 is the bstr encoding of the concatenation of
  the raw values of G_Y and CIPHERTEXT_2.</t>
        <artwork><![CDATA[
message_2 (CBOR Sequence) (116 bytes)
58 70 dc 88 d2 d5 1d a5 ed 67 fc 46 16 35 6b c8 ca 74 ef 9e be 8b 38
7e 62 3a 36 0b a4 80 b9 b2 9d 1c 67 b9 cf 55 e7 b7 4d d2 9c dc e6 8e
5c 7f 42 9c 5f f7 ed 8f 1a c3 fb 40 35 bd 32 54 b2 6b 63 a8 57 29 5a
fb 2f dd 4e 47 91 34 22 3a 9c d9 99 2f 30 6f af 5c 8b d7 21 dc 4f b2
db 37 d3 76 bb e4 32 4e 49 b0 1b a4 34 c2 dd cc a3 44 31 a7 1c 73 41
18
]]></artwork>
      </section>
      <section anchor="message3">
        <name>message_3</name>
        <t>Since METHOD = 0, I authenticates using signatures. Since the selected cipher suite is 0, the EDHOC signature algorithm is EdDSA.</t>
        <t>I's signature key pair using EdDSA:</t>
        <artwork><![CDATA[
Initiator's private authentication key
SK_I (Raw Value) (32 bytes)
4c 5b 25 87 8f 50 7c 6b 9d ae 68 fb d4 fd 3f f9 97 53 3d b0 af 00 b2
5d 32 4e a2 8e 6c 21 3b c8
]]></artwork>
        <artwork><![CDATA[
Initiator's public authentication key
PK_I (Raw Value) (32 bytes)
ed 06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f
23 d8 cc 20 b7 30 85 14 1e
]]></artwork>
        <t>PRK_4e3m is specified in <xref section="4.1.1.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>Since I authenticates with signatures PRK_4e3m = PRK_3e2m.</t>
        <artwork><![CDATA[
PRK_4e3m (Raw Value) (32 bytes)
2a e2 42 1d e9 a7 2a 7a e6 71 5f b5 18 f3 ed 30 05 8f d9 ca 58 b6 25
68 ca fe 7c da a1 5a 41 f7
]]></artwork>
        <t>The transcript hash TH_3 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_3 = H(TH_2, PLAINTEXT_2, CRED_R)</t>
        <artwork><![CDATA[
Input to calculate TH_3 (CBOR Sequence) (357 bytes)
58 20 3a b1 17 00 84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99
50 fd 62 48 84 f7 f5 7c d9 8b 07 a1 18 22 82 2e 48 79 f2 a4 1b 51 0c
1f 9b 58 40 af 73 81 f1 9a e1 fe 0f 53 89 5b 18 e5 81 8b 1f e3 e3 46
30 72 c0 2a d3 9f 20 2d 38 28 aa 62 37 c1 0b 08 66 8f c4 76 96 41 24
03 1f ed 9f 94 4e 6a 78 79 7f 5c 08 49 58 db 0f 20 89 c2 1c 52 02 58
f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05 06 03 2b
65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f
6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32
34 33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20
30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f 6e 64 65
72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 a1 db
47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62 c0 0b
3a c5 5d e9 2f 93 59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc 01 ea b0
92 8e 8b 2b 6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f ec fa f1
45 37 a1 af 14 cc 8b e8 29 c6 b7 30 44 10 18 37 eb 4a bc 94 95 65 d8
6d ce 51 cf ae 52 ab 82 c1 52 cb 02
]]></artwork>
        <artwork><![CDATA[
TH_3 (Raw Value) (32 bytes)
03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8
55 04 5e 33 c0 21 d7 f6 91
]]></artwork>
        <artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8
40 d8 55 04 5e 33 c0 21 d7 f6 91
]]></artwork>
        <t>I constructs the remaining input needed to calculate MAC_3:</t>
        <artwork><![CDATA[
MAC_3 = EDHOC-KDF( PRK_4e3m, 6, context_3, mac_length_3 )
]]></artwork>
        <t>where</t>
        <artwork><![CDATA[
context_3 = << ID_CRED_I, TH_3, CRED_I, ? EAD_3 >>
]]></artwork>
        <t>CRED_I is identified by a 64-bit hash:</t>
        <artwork><![CDATA[
ID_CRED_I =
{
 34 : [-15, h'c24ab2fd7643c79f']
}
]]></artwork>
        <t>where the COSE header value 34 ('x5t') indicates a hash of an X.509 certficate,
and the COSE algorithm -15 indicates the hash algorithm SHA-256 truncated to 64 bits.</t>
        <artwork><![CDATA[
ID_CRED_I (CBOR Data Item) (14 bytes)
a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f
]]></artwork>
        <t>CRED_I is a CBOR byte string of the DER encoding of the X.509 certificate in <xref target="init-cer"/>:</t>
        <artwork><![CDATA[
CRED_I (Raw Value) (241 bytes)
30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05 06 03 2b 65
70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f 6f
74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32 34
30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20 30
1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69 61 74 6f 72
20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 ed 06 a8
ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f 23 d8 cc
20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41 d8 b3 a7 70
99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3 92 75 ae 48
b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05 ee ff 27 b9
e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <artwork><![CDATA[
CRED_I (CBOR Data Item) (243 bytes)
58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05 06 03
2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52
6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38
32 34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31
20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69 61 74
6f 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 ed
06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f 23
d8 cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41 d8 b3
a7 70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3 92 75
ae 48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05 ee ff
27 b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_3 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>context_3 = &lt;&lt; ID_CRED_I, TH_3, CRED_I, ? EAD_3 &gt;&gt;</t>
        <artwork><![CDATA[
context_3 (CBOR Sequence) (291 bytes)
a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f 58 20 03 12 56 1b 73 43 ce
af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8 55 04 5e 33 c0 21 d7
f6 91 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05
06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43
20 52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36
30 38 32 34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30
22 31 20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69
61 74 6f 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21
00 ed 06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e
0f 23 d8 cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41
d8 b3 a7 70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3
92 75 ae 48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05
ee ff 27 b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <artwork><![CDATA[
context_3 (CBOR byte string) (294 bytes)
59 01 23 a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f 58 20 03 12 56 1b
73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8 55 04 5e 33
c0 21 d7 f6 91 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e
a0 30 05 06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44
48 4f 43 20 52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30
33 31 36 30 38 32 34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30
30 5a 30 22 31 20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e
69 74 69 61 74 6f 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65
70 03 21 00 ed 06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3
02 f4 3e 0f 23 d8 cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00
52 12 41 d8 b3 a7 70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df
29 10 b3 92 75 ae 48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22
67 dd 05 ee ff 27 b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <t>MAC_3 is computed through Expand() using the EDHOC hash algorithm, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
MAC_3 = HKDF-Expand(PRK_4e3m, info, mac_length_3), where
]]></artwork>
        <t>info = ( 6, context_3, mac_length_3 )</t>
        <t>where context_3 = &lt;&lt; ID_CRED_I, TH_3, CRED_I, ? EAD_3 &gt;&gt;</t>
        <t>Since METHOD = 0, mac_length_3 is given by the EDHOC hash algorithm.</t>
        <t>info for MAC_3 is:</t>
        <artwork><![CDATA[
info =
(
 6,
 h'a11822822e48c24ab2fd7643c79f58200312561b7343ceaf
   659df50013e064e6b46dcb3fa840d855045e33c021d7f691
   58f13081ee3081a1a003020102020462319ea0300506032b
   6570301d311b301906035504030c124544484f4320526f6f
   742045643235353139301e170d3232303331363038323430
   305a170d3239313233313233303030305a30223120301e06
   035504030c174544484f4320496e69746961746f72204564
   3235353139302a300506032b6570032100ed06a8ae61a829
   ba5fa54525c9d07f48dd44a302f43e0f23d8cc20b7308514
   1e300506032b6570034100521241d8b3a770996bcfc9b9ea
   d4e7e0a1c0db353a3bdf2910b39275ae48b756015981850d
   27db6734e37f67212267dd05eeff27b9e7a813fa574b72a0
   0b430b',
 32
)
]]></artwork>
        <t>where the last value is the output size of the EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for MAC_3 (CBOR Sequence) (297 bytes)
06 59 01 23 a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f 58 20 03 12 56
1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8 55 04 5e
33 c0 21 d7 f6 91 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31
9e a0 30 05 06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45
44 48 4f 43 20 52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32
30 33 31 36 30 38 32 34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30
30 30 5a 30 22 31 20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49
6e 69 74 69 61 74 6f 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b
65 70 03 21 00 ed 06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44
a3 02 f4 3e 0f 23 d8 cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41
00 52 12 41 d8 b3 a7 70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b
df 29 10 b3 92 75 ae 48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21
22 67 dd 05 ee ff 27 b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b 18 20
]]></artwork>
        <artwork><![CDATA[
MAC_3 (Raw Value) (32 bytes)
cd d2 50 7b cf 66 2b 5d 9d 9c f2 3c 4b 31 a9 b6 66 c6 a1 9a 0a 44 dc
2a 7a 9c 90 45 22 b1 eb 3e
]]></artwork>
        <artwork><![CDATA[
MAC_3 (CBOR Data Item) (34 bytes)
58 20 cd d2 50 7b cf 66 2b 5d 9d 9c f2 3c 4b 31 a9 b6 66 c6 a1 9a 0a
44 dc 2a 7a 9c 90 45 22 b1 eb 3e
]]></artwork>
        <t>Since METHOD = 0, Signature_or_MAC_3 is the 'signature' of the
COSE_Sign1 object.</t>
        <t>I constructs the message to be signed:</t>
        <artwork><![CDATA[
[ "Signature1", << ID_CRED_I >>,
 << TH_3, CRED_I, ? EAD_3 >>, MAC_3 ] =

[
 "Signature1",
 h'a11822822e48c24ab2fd7643c79f',
 h'58200312561b7343ceaf659df50013e064e6b46dcb3fa840
   d855045e33c021d7f69158f13081ee3081a1a00302010202
   0462319ea0300506032b6570301d311b301906035504030c
   124544484f4320526f6f742045643235353139301e170d32
   32303331363038323430305a170d32393132333132333030
   30305a30223120301e06035504030c174544484f4320496e
   69746961746f722045643235353139302a300506032b6570
   032100ed06a8ae61a829ba5fa54525c9d07f48dd44a302f4
   3e0f23d8cc20b73085141e300506032b6570034100521241
   d8b3a770996bcfc9b9ead4e7e0a1c0db353a3bdf2910b392
   75ae48b756015981850d27db6734e37f67212267dd05eeff
   27b9e7a813fa574b72a00b430b',
 h'cdd2507bcf662b5d9d9cf23c4b31a9b666c6a19a0a44dc2a
   7a9c904522b1eb3e'
]
]]></artwork>
        <artwork><![CDATA[
Message to be signed 3 (CBOR Data Item) (341 bytes)
84 6a 53 69 67 6e 61 74 75 72 65 31 4e a1 18 22 82 2e 48 c2 4a b2 fd
76 43 c7 9f 59 01 15 58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0
64 e6 b4 6d cb 3f a8 40 d8 55 04 5e 33 c0 21 d7 f6 91 58 f1 30 81 ee
30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05 06 03 2b 65 70 30 1d
31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f 6f 74 20 45
64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32 34 30 30 5a
17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20 30 1e 06 03
55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69 61 74 6f 72 20 45 64
32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 ed 06 a8 ae 61 a8
29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f 23 d8 cc 20 b7 30
85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41 d8 b3 a7 70 99 6b cf
c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3 92 75 ae 48 b7 56 01
59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05 ee ff 27 b9 e7 a8 13
fa 57 4b 72 a0 0b 43 0b 58 20 cd d2 50 7b cf 66 2b 5d 9d 9c f2 3c 4b
31 a9 b6 66 c6 a1 9a 0a 44 dc 2a 7a 9c 90 45 22 b1 eb 3e
]]></artwork>
        <t>I signs using the private authentication key SK_I:</t>
        <artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (64 bytes)
4f 99 22 77 bc be 5f ec 00 9f be 0b 31 34 91 65 2b d4 c8 02 18 07 32
75 c3 f1 66 99 af 9c d3 f4 c6 b6 61 ff 11 da 12 b3 fe 03 c5 df d2 ce
ee c0 6a dc ff 6a 76 a7 0e 31 56 a6 00 fb 61 ac d6 02
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (66 bytes)
58 40 4f 99 22 77 bc be 5f ec 00 9f be 0b 31 34 91 65 2b d4 c8 02 18
07 32 75 c3 f1 66 99 af 9c d3 f4 c6 b6 61 ff 11 da 12 b3 fe 03 c5 df
d2 ce ee c0 6a dc ff 6a 76 a7 0e 31 56 a6 00 fb 61 ac d6 02
]]></artwork>
        <t>I constructs the plaintext without padding:</t>
        <artwork><![CDATA[
PAD_3 (CBOR sequence of simple type) (0 bytes)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_3 =
(
 ? PAD_3,
 ID_CRED_I / bstr / -24..23,
 Signature_or_MAC_3,
 ? EAD_3
)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_3 (CBOR Sequence) (80 bytes)
a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f 58 40 4f 99 22 77 bc be 5f
ec 00 9f be 0b 31 34 91 65 2b d4 c8 02 18 07 32 75 c3 f1 66 99 af 9c
d3 f4 c6 b6 61 ff 11 da 12 b3 fe 03 c5 df d2 ce ee c0 6a dc ff 6a 76
a7 0e 31 56 a6 00 fb 61 ac d6 02
]]></artwork>
        <t>I constructs the associated data for message_3:</t>
        <artwork><![CDATA[
A_3 =
[
 "Encrypt0",
 h'',
 h'0312561b7343ceaf659df50013e064e6b46dcb3fa840d855
   045e33c021d7f691'
]
]]></artwork>
        <artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 03 12 56 1b 73 43 ce af 65 9d
f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8 55 04 5e 33 c0 21 d7 f6 91
]]></artwork>
        <t>I constructs the input needed to derive the key K_3, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
K_3 = EDHOC-KDF( PRK_3e2m, 3, TH_3, key_length )
    = HKDF-Expand( PRK_3e2m, info, key_length ),
]]></artwork>
        <t>where key_length is the key length of EDHOC AEAD algorithm, and info for K_3 is:</t>
        <artwork><![CDATA[
info =
(
 3,
 h'0312561b7343ceaf659df50013e064e6b46dcb3fa840d855
   045e33c021d7f691',
 16
)
]]></artwork>
        <t>where the last value is the key length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_3 (CBOR Sequence) (36 bytes)
03 58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f
a8 40 d8 55 04 5e 33 c0 21 d7 f6 91 10
]]></artwork>
        <artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
50 b9 cb 0b ba 0c 75 88 0b 54 27 86 be 62 77 fa
]]></artwork>
        <t>I constructs the input needed to derive the nonce IV_3, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
IV_3 = EDHOC-KDF( PRK_3e2m, 4, TH_3, iv_length )
     = HKDF-Expand( PRK_3e2m, info, iv_length ),
]]></artwork>
        <t>where iv_length is the nonce length of EDHOC AEAD algorithm, and info for IV_3 is:</t>
        <artwork><![CDATA[
info =
(
 4,
 h'0312561b7343ceaf659df50013e064e6b46dcb3fa840d855
   045e33c021d7f691',
 13
)
]]></artwork>
        <t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_3 (CBOR Sequence) (36 bytes)
04 58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f
a8 40 d8 55 04 5e 33 c0 21 d7 f6 91 0d
]]></artwork>
        <artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
27 a3 b3 ba 30 14 ab 62 d9 a2 69 45 a3
]]></artwork>
        <t>I calculates CIPHERTEXT_3 as 'ciphertext' of COSE_Encrypt0 applied
using the EDHOC AEAD algorithm with plaintext PLAINTEXT_3, additional data
A_3, key K_3 and nonce IV_3.</t>
        <artwork><![CDATA[
CIPHERTEXT_3 (Raw Value) (88 bytes)
ba 5e 0e 74 5b fa 2a 87 1d 20 cb 02 c8 00 20 07 71 43 4b 6e 1a c9 89
77 ec 73 3e c9 4c 06 33 cb 3e c0 20 78 98 59 7f 2c 49 d3 a4 0f 4c 14
51 b4 3d 0b ca e4 84 7a 0d 6c d3 2d 5e 8a 35 54 f4 3f 7a 98 29 04 b0
77 c5 02 9b 3d c7 f0 5e ed ed e3 b0 21 57 c3 24 c0 db 3e
]]></artwork>
        <t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>
        <artwork><![CDATA[
message_3 (CBOR Sequence) (90 bytes)
58 58 ba 5e 0e 74 5b fa 2a 87 1d 20 cb 02 c8 00 20 07 71 43 4b 6e 1a
c9 89 77 ec 73 3e c9 4c 06 33 cb 3e c0 20 78 98 59 7f 2c 49 d3 a4 0f
4c 14 51 b4 3d 0b ca e4 84 7a 0d 6c d3 2d 5e 8a 35 54 f4 3f 7a 98 29
04 b0 77 c5 02 9b 3d c7 f0 5e ed ed e3 b0 21 57 c3 24 c0 db 3e
]]></artwork>
        <t>The transcript hash TH_4 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_4 = H( TH_3, PLAINTEXT_3, CRED_I )</t>
        <artwork><![CDATA[
Input to calculate TH_4 (CBOR Sequence) (357 bytes)
58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8
40 d8 55 04 5e 33 c0 21 d7 f6 91 a1 18 22 82 2e 48 c2 4a b2 fd 76 43
c7 9f 58 40 4f 99 22 77 bc be 5f ec 00 9f be 0b 31 34 91 65 2b d4 c8
02 18 07 32 75 c3 f1 66 99 af 9c d3 f4 c6 b6 61 ff 11 da 12 b3 fe 03
c5 df d2 ce ee c0 6a dc ff 6a 76 a7 0e 31 56 a6 00 fb 61 ac d6 02 58
f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05 06 03 2b
65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f
6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32
34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20
30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69 61 74 6f
72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 ed 06
a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f 23 d8
cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41 d8 b3 a7
70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3 92 75 ae
48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05 ee ff 27
b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <artwork><![CDATA[
TH_4 (Raw Value) (32 bytes)
38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36 07 4f 98
12 39 e6 47 4d 9c cc dd c8
]]></artwork>
        <artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36 07
4f 98 12 39 e6 47 4d 9c cc dd c8
]]></artwork>
      </section>
      <section anchor="message4">
        <name>message_4</name>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_4 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>R constructs the plaintext PLAINTEXT_4:</t>
        <artwork><![CDATA[
PLAINTEXT_4 =
(
 ? EAD_4
)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_4 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>R constructs the associated data for message_4:</t>
        <artwork><![CDATA[
A_4 =
[
 "Encrypt0",
 h'',
 h'38e2e6f4641e814b721814c05b51ef0aa38bdb36074f9812
   39e6474d9cccddc8'
]
]]></artwork>
        <artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 38 e2 e6 f4 64 1e 81 4b 72 18
14 c0 5b 51 ef 0a a3 8b db 36 07 4f 98 12 39 e6 47 4d 9c cc dd c8
]]></artwork>
        <t>R constructs the input needed to derive the EDHOC message_4 key, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
K_4   = EDHOC-KDF( PRK_4e3m, 8, TH_4, key_length )
      = HKDF-Expand( PRK_4x3m, info, key_length )
]]></artwork>
        <t>where key_length is the key length of the EDHOC AEAD algorithm,
  and info for EDHOC_K_4 is:</t>
        <artwork><![CDATA[
info =
(
 8,
 h'38e2e6f4641e814b721814c05b51ef0aa38bdb36074f9812
   39e6474d9cccddc8',
 16
)
]]></artwork>
        <t>where the last value is the key length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_4 (CBOR Sequence) (36 bytes)
08 58 20 38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36
07 4f 98 12 39 e6 47 4d 9c cc dd c8 10
]]></artwork>
        <artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
3d e5 c1 6f 9f 7e f0 0c 46 4b e8 d7 7b de f7 30
]]></artwork>
        <t>R constructs the input needed to derive the EDHOC message_4 nonce, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
      IV_4 = EDHOC-KDF( PRK_4e3m, 9, TH_4, iv_length )
           = HKDF-Expand( PRK_4x3m, info, iv_length )
]]></artwork>
        <t>where length is the nonce length of EDHOC AEAD algorithm,
  and info for EDHOC_IV_4 is:</t>
        <artwork><![CDATA[
info =
(
 9,
 h'38e2e6f4641e814b721814c05b51ef0aa38bdb36074f9812
   39e6474d9cccddc8',
 13
)
]]></artwork>
        <t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_4 (CBOR Sequence) (36 bytes)
09 58 20 38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36
07 4f 98 12 39 e6 47 4d 9c cc dd c8 0d
]]></artwork>
        <artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
26 35 c2 b3 6d 2b f8 af b6 c8 9b 0f af
]]></artwork>
        <t>R calculates CIPHERTEXT_4 as 'ciphertext' of COSE_Encrypt0 applied
using the EDHOC AEAD algorithm with plaintext PLAINTEXT_4, additional data
A_4, key K_4 and nonce IV_4.</t>
        <artwork><![CDATA[
CIPHERTEXT_4 (8 bytes)
d5 41 7c 47 4c b4 a3 02
]]></artwork>
        <t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>
        <artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 d5 41 7c 47 4c b4 a3 02
]]></artwork>
      </section>
      <section anchor="out-and-exporter1">
        <name>PRK_out and PRK_exporter</name>
        <t>PRK_out is specified in <xref section="4.1.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
PRK_out = EDHOC-KDF( PRK_4e3m, 7, TH_4, hash_length ) =
        = HKDF-Expand( PRK_4e3m, info,  hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for PRK_out is:</t>
        <artwork><![CDATA[
info =
(
 7,
 h'38e2e6f4641e814b721814c05b51ef0aa38bdb36074f9812
   39e6474d9cccddc8',
 32
)
]]></artwork>
        <t>where the last value is the length of EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_out (CBOR Sequence) (37 bytes)
07 58 20 38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36
07 4f 98 12 39 e6 47 4d 9c cc dd c8 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
cf aa 94 87 37 c8 c7 5f 54 2a fb 6a 07 df da 67 3e 78 a1 04 ca cb d9
3f dc a3 c2 b0 e6 63 e9 44
]]></artwork>
        <t>The OSCORE Master Secret and OSCORE Master Salt are derived with the EDHOC-Exporter as specified in 4.2.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
EDHOC-Exporter( label, context, length )
= EDHOC-KDF( PRK_exporter, label, context, length )
]]></artwork>
        <t>where PRK_exporter is derived from PRK_out:</t>
        <artwork><![CDATA[
 PRK_exporter = EDHOC-KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for the PRK_exporter is:</t>
        <artwork><![CDATA[
info =
(
 10,
 h'',
 32
)
]]></artwork>
        <t>where the last value is the length of EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_exporter (CBOR Sequence) (4 bytes)
0a 40 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
55 15 9b 06 37 4e 4b 2b c2 a9 f5 82 4b 56 1f e1 66 d6 26 4a a6 da e8
97 7d 2e d5 37 90 b4 2b 2f
]]></artwork>
      </section>
      <section anchor="oscore-param">
        <name>OSCORE Parameters</name>
        <t>The derivation of OSCORE parameters is specified in Appendix A.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
        <t>The AEAD and Hash algorithms to use in OSCORE are given by the selected cipher suite:</t>
        <artwork><![CDATA[
Application AEAD Algorithm (int)
10
]]></artwork>
        <artwork><![CDATA[
Application Hash Algorithm (int)
-16
]]></artwork>
        <t>The mapping from EDHOC connection identifiers to OSCORE Sender/Recipient IDs is defined in <xref section="3.3.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>C_R is mapped to the Recipient ID of the server, i.e., the Sender ID of the client. The byte string 0x18, which as C_R is encoded as the CBOR byte string 0x4118, is converted to the server Recipient ID 0x18.</t>
        <artwork><![CDATA[
Client's OSCORE Sender ID (Raw Value) (1 byte)
18
]]></artwork>
        <t>C_I is mapped to the Recipient ID of the client, i.e., the Sender ID of the server. The byte string 0x2d, which as C_I is encoded as the CBOR integer 0x2d is converted to the client Recipient ID 0x2d.</t>
        <artwork><![CDATA[
Server's OSCORE Sender ID (Raw Value) (1 byte)
2d
]]></artwork>
        <t>The OSCORE Master Secret is computed through Expand() using the
Application hash algorithm, see Appendix A.1 of <xref target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
OSCORE Master Secret = EDHOC-Exporter( 0, h'', oscore_key_length )
= EDHOC-KDF( PRK_exporter, 0, h'',  oscore_key_length )
= HKDF-Expand( PRK_exporter, info,  oscore_key_length )
]]></artwork>
        <t>where oscore_key_length is by default the key length of the Application AEAD
algorithm, and info for the OSCORE Master Secret is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'',
 16
)
]]></artwork>
        <t>where the last value is the key length of Application AEAD algorithm.</t>
        <artwork><![CDATA[
info for OSCORE Master Secret (CBOR Sequence) (3 bytes)
00 40 10
]]></artwork>
        <artwork><![CDATA[
OSCORE Master Secret (Raw Value) (16 bytes)
09 c3 66 61 cf 68 f8 c3 ad 21 64 43 cf 62 91 e6
]]></artwork>
        <t>The OSCORE Master Salt is computed through Expand() using the Application hash algorithm, see <xref section="4.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
OSCORE Master Salt = EDHOC-Exporter( 1, h'', oscore_salt_length )
= EDHOC-KDF( PRK_exporter, 1, h'', oscore_salt_length )
= HKDF-Expand( PRK_4x3m, info, oscore_salt_length )
]]></artwork>
        <t>where oscore_salt_length is the length of the OSCORE Master Salt, and info for the OSCORE Master Salt is:</t>
        <artwork><![CDATA[
info =
(
 1,
 h'',
 8
)
]]></artwork>
        <t>where the last value is the length of the OSCORE Master Salt.</t>
        <artwork><![CDATA[
info for OSCORE Master Salt (CBOR Sequence) (3 bytes)
01 40 08
]]></artwork>
        <artwork><![CDATA[
OSCORE Master Salt (Raw Value) (8 bytes)
13 82 bf 71 9e e6 5c 32
]]></artwork>
      </section>
      <section anchor="key-update">
        <name>Key Update</name>
        <t>Key update is defined in <xref section="J" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
EDHOC-KeyUpdate( context ):
PRK_out = EDHOC-KDF( PRK_out, 11, context, hash_length )
        = HKDF-Expand( PRK_out, info, hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash function, context for KeyUpdate is</t>
        <artwork><![CDATA[
context for KeyUpdate (Raw Value) (16 bytes)
d6 be 16 96 02 b8 bc ea a0 11 58 fd b8 20 89 0c
]]></artwork>
        <artwork><![CDATA[
context for KeyUpdate (CBOR Data Item) (17 bytes)
50 d6 be 16 96 02 b8 bc ea a0 11 58 fd b8 20 89 0c
]]></artwork>
        <t>and where info for key update is:</t>
        <artwork><![CDATA[
info =
(
 11,
 h'd6be169602b8bceaa01158fdb820890c',
 32
)
]]></artwork>
        <artwork><![CDATA[
PRK_out after KeyUpdate (Raw Value) (32 bytes)
2b 31 bf cf 9b 0b b2 a6 92 65 3a 08 40 02 73 59 c4 e6 7c c5 04 ff 65
7a 30 af d7 67 c5 a4 1e f9
]]></artwork>
        <t>After key update the PRK_exporter needs to be derived anew:</t>
        <artwork><![CDATA[
 PRK_exporter = EDHOC-KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork>
        <t>where info and hash_length as unchanged as in <xref target="out-and-exporter1"/>.</t>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
2c 62 c4 ac 76 c8 e1 e8 48 38 5b 07 fe 2a 58 ad 2a f7 4c ee 38 70 d5
2b 4d a1 ec 63 39 3d 0f ec
]]></artwork>
        <t>The OSCORE Master Secret is derived with the updated PRK_exporter:</t>
        <artwork><![CDATA[
OSCORE Master Secret =
= HKDF-Expand(PRK_exporter, info, oscore_key_length)
]]></artwork>
        <t>where info and key_length are unchanged as in <xref target="oscore-param"/>.</t>
        <artwork><![CDATA[
OSCORE Master Secret after KeyUpdate (Raw Value) (16 bytes)
f0 05 28 0c 94 8a 64 c4 6e 33 e9 ea 8d e9 31 15
]]></artwork>
        <t>The OSCORE Master Salt is derived with the updated PRK_exporter:</t>
        <artwork><![CDATA[
OSCORE Master Salt = HKDF-Expand(PRK_exporter, info, salt_length)
]]></artwork>
        <t>where info and salt_length are unchanged as in <xref target="oscore-param"/>.</t>
        <artwork><![CDATA[
OSCORE Master Salt after KeyUpdate (Raw Value) (8 bytes)
0b 0a f3 2a a4 9b 3c e3
]]></artwork>
      </section>
      <section anchor="certs">
        <name>Certificates</name>
        <section anchor="resp-cer">
          <name>Responder Certificate</name>
          <artwork><![CDATA[
        Version: 3 (0x2)
        Serial Number: 1647419076 (0x62319ec4)
        Signature Algorithm: ED25519
        Issuer: CN = EDHOC Root Ed25519
        Validity
            Not After : Dec 31 23:00:00 2029 GMT
        Subject: CN = EDHOC Responder Ed25519
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    a1:db:47:b9:51:84:85:4a:d1:2a:0c:1a:35:4e:41:
                    8a:ac:e3:3a:a0:f2:c6:62:c0:0b:3a:c5:5d:e9:2f:
                    93:59
    Signature Algorithm: ED25519
    Signature Value:
        b7:23:bc:01:ea:b0:92:8e:8b:2b:6c:98:de:19:cc:38:23:d4:
        6e:7d:69:87:b0:32:47:8f:ec:fa:f1:45:37:a1:af:14:cc:8b:
        e8:29:c6:b7:30:44:10:18:37:eb:4a:bc:94:95:65:d8:6d:ce:
        51:cf:ae:52:ab:82:c1:52:cb:02
]]></artwork>
        </section>
        <section anchor="init-cer">
          <name>Initiator Certificate</name>
          <artwork><![CDATA[
        Version: 3 (0x2)
        Serial Number: 1647419040 (0x62319ea0)
        Signature Algorithm: ED25519
        Issuer: CN = EDHOC Root Ed25519
        Validity
            Not Before: Mar 16 08:24:00 2022 GMT
            Not After : Dec 31 23:00:00 2029 GMT
        Subject: CN = EDHOC Initiator Ed25519
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    ed:06:a8:ae:61:a8:29:ba:5f:a5:45:25:c9:d0:7f:
                    48:dd:44:a3:02:f4:3e:0f:23:d8:cc:20:b7:30:85:
                    14:1e
    Signature Algorithm: ED25519
    Signature Value:
        52:12:41:d8:b3:a7:70:99:6b:cf:c9:b9:ea:d4:e7:e0:a1:c0:
        db:35:3a:3b:df:29:10:b3:92:75:ae:48:b7:56:01:59:81:85:
        0d:27:db:67:34:e3:7f:67:21:22:67:dd:05:ee:ff:27:b9:e7:
        a8:13:fa:57:4b:72:a0:0b:43:0b
]]></artwork>
        </section>
        <section anchor="root-cer">
          <name>Common Root Certificate</name>
          <artwork><![CDATA[
        Version: 3 (0x2)
        Serial Number: 1647418996 (0x62319e74)
        Signature Algorithm: ED25519
        Issuer: CN = EDHOC Root Ed25519
        Validity
            Not Before: Mar 16 08:23:16 2022 GMT
            Not After : Dec 31 23:00:00 2029 GMT
        Subject: CN = EDHOC Root Ed25519
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    2b:7b:3e:80:57:c8:64:29:44:d0:6a:fe:7a:71:d1:
                    c9:bf:96:1b:62:92:ba:c4:b0:4f:91:66:9b:bb:71:
                    3b:e4
    Signature Algorithm: ED25519
    Signature Value:
        4b:b5:2b:bf:15:39:b7:1a:4a:af:42:97:78:f2:9e:da:7e:81:
        46:80:69:8f:16:c4:8f:2a:6f:a4:db:e8:25:41:c5:82:07:ba:
        1b:c9:cd:b0:c2:fa:94:7f:fb:f0:f0:ec:0e:e9:1a:7f:f3:7a:
        94:d9:25:1f:a5:cd:f1:e6:7a:0f
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="sec-trace-2">
      <name>Authentication with static DH, CCS identified by 'kid'</name>
      <t>In this example I and R are authenticated with ephemeral-static Diffie-Hellman (METHOD = 3). I supports cipher suites 6 and 2 (in order of preference) and R only supports cipher suite 2. After an initial negotiation message exchange cipher suite 2 is used, which determines the algorithms:</t>
      <ul spacing="normal">
        <li>EDHOC AEAD algorithm = AES-CCM-16-64-128</li>
        <li>EDHOC hash algorithm = SHA-256</li>
        <li>EDHOC MAC length in bytes (Static DH) = 8</li>
        <li>EDHOC key exchange algorithm (ECDH curve) = P-256</li>
        <li>EDHOC signature algorithm = ES256</li>
        <li>Application AEAD algorithm = AES-CCM-16-64-128</li>
        <li>Application hash algorithm = SHA-256</li>
      </ul>
      <t>The public keys are represented as raw public keys (RPK), encoded in a CWT Claims Set (CCS) and identified by the COSE header parameter 'kid'.</t>
      <section anchor="m1_1">
        <name>message_1 (first time)</name>
        <t>Both endpoints are authenticated with static DH, i.e. METHOD = 3:</t>
        <artwork><![CDATA[
METHOD (CBOR Data Item) (1 byte)
03
]]></artwork>
        <t>I selects its preferred cipher suite 6. A single cipher suite is encoded as an int:</t>
        <artwork><![CDATA[
SUITES_I (CBOR Data Item) (1 byte)
06
]]></artwork>
        <t>I creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Initiator's ephemeral private key
X (Raw Value) (32 bytes)
5c 41 72 ac a8 b8 2b 5a 62 e6 6f 72 22 16 f5 a1 0f 72 aa 69 f4 2c 1d
1c d3 cc d7 bf d2 9c a4 e9
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, 'x'-coordinate
G_X (Raw Value) (32 bytes)
74 1a 13 d7 ba 04 8f bb 61 5e 94 38 6a a3 b6 1b ea 5b 3d 8f 65 f3 26
20 b7 49 be e8 d2 78 ef a9
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, 'x'-coordinate
G_X (CBOR Data Item) (34 bytes)
58 20 74 1a 13 d7 ba 04 8f bb 61 5e 94 38 6a a3 b6 1b ea 5b 3d 8f 65
f3 26 20 b7 49 be e8 d2 78 ef a9
]]></artwork>
        <t>I selects its connection identifier C_I to be the byte string 0x0e, which since it is represented by the 1-byte CBOR int 14 is encoded as 0x0e:</t>
        <artwork><![CDATA[
C_I (Raw Value) (Connection identifier chosen by I) (1 byte)
0e
]]></artwork>
        <artwork><![CDATA[
C_I (CBOR Data Item) (Connection identifier chosen by I) (1 byte)
0e
]]></artwork>
        <t>No external authorization data:</t>
        <t>EAD_1 (CBOR Sequence) (0 bytes)</t>
        <t>I constructs message_1:</t>
        <artwork><![CDATA[
message_1 =
(
 3,
 6,
 h'741a13d7ba048fbb615e94386aa3b61bea5b3d8f65f32620
   b749bee8d278efa9',
 14
)
]]></artwork>
        <artwork><![CDATA[
message_1 (CBOR Sequence) (37 bytes)
03 06 58 20 74 1a 13 d7 ba 04 8f bb 61 5e 94 38 6a a3 b6 1b ea 5b 3d
8f 65 f3 26 20 b7 49 be e8 d2 78 ef a9 0e
]]></artwork>
      </section>
      <section anchor="error">
        <name>error</name>
        <t>R does not support cipher suite 6 and sends an error with ERR_CODE 2 containing SUITES_R as ERR_INFO. R proposes cipher suite 2, a single cipher suite thus encoded as an int.</t>
        <artwork><![CDATA[
SUITES_R
02
]]></artwork>
        <artwork><![CDATA[
error (CBOR Sequence) (2 bytes)
02 02
]]></artwork>
      </section>
      <section anchor="message1-second-time">
        <name>message_1 (second time)</name>
        <t>Same steps are performed as message_1 first time, <xref target="m1_1"/>, but with updated SUITES_I.</t>
        <t>Both endpoints are authenticated with static DH, i.e. METHOD = 3:</t>
        <artwork align="left"><![CDATA[
METHOD (CBOR Data Item) (1 byte)
03
]]></artwork>
        <t>I selects cipher suite 2 and indicates the more preferred cipher suite(s), in this case 6, all encoded as the array [6, 2]:</t>
        <artwork><![CDATA[
SUITES_I (CBOR Data Item) (3 bytes)
82 06 02
]]></artwork>
        <t>I creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Initiator's ephemeral private key
X (Raw Value) (32 bytes)
36 8e c1 f6 9a eb 65 9b a3 7d 5a 8d 45 b2 1b dc 02 99 dc ea a8 ef 23
5f 3c a4 2c e3 53 0f 95 25
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, 'x'-coordinate
G_X (Raw Value) (32 bytes)
8a f6 f4 30 eb e1 8d 34 18 40 17 a9 a1 1b f5 11 c8 df f8 f8 34 73 0b
96 c1 b7 c8 db ca 2f c3 b6
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, 'y'-coordinate
(Raw Value) (32 bytes)
51 e8 af 6c 6e db 78 16 01 ad 1d 9c 5f a8 bf 7a a1 57 16 c7 c0 6a 5d
03 85 03 c6 14 ff 80 c9 b3
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, 'x'-coordinate
G_X (CBOR Data Item) (34 bytes)
58 20 8a f6 f4 30 eb e1 8d 34 18 40 17 a9 a1 1b f5 11 c8 df f8 f8 34
73 0b 96 c1 b7 c8 db ca 2f c3 b6
]]></artwork>
        <t>I selects its connection identifier C_I to be the byte string 0x37, which since it is represented by the 1-byte CBOR int -24 is encoded as 0x37:</t>
        <artwork><![CDATA[
C_I (Raw Value) (Connection identifier chosen by I) (1 byte)
37
]]></artwork>
        <artwork><![CDATA[
C_I (CBOR Data Item) (Connection identifier chosen by I) (1 byte)
37
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_1 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>I constructs message_1:</t>
        <artwork><![CDATA[
message_1 =
(
 3,
 [6, 2],
 h'8af6f430ebe18d34184017a9a11bf511c8dff8f834730b96
   c1b7c8dbca2fc3b6',
 -24
)
]]></artwork>
        <artwork><![CDATA[
message_1 (CBOR Sequence) (39 bytes)
03 82 06 02 58 20 8a f6 f4 30 eb e1 8d 34 18 40 17 a9 a1 1b f5 11 c8
df f8 f8 34 73 0b 96 c1 b7 c8 db ca 2f c3 b6 37
]]></artwork>
      </section>
      <section anchor="message2-1">
        <name>message_2</name>
        <t>R supports the selected cipher suite 2 and not the by I more preferred cipher suite(s) 6, so SUITES_I is acceptable.</t>
        <t>R creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Responder's ephemeral private key
Y (Raw Value) (32 bytes)
e2 f4 12 67 77 20 5e 85 3b 43 7d 6e ac a1 e1 f7 53 cd cc 3e 2c 69 fa
88 4b 0a 1a 64 09 77 e4 18
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key, 'x'-coordinate
G_Y (Raw Value) (32 bytes)
41 97 01 d7 f0 0a 26 c2 dc 58 7a 36 dd 75 25 49 f3 37 63 c8 93 42 2c
8e a0 f9 55 a1 3a 4f f5 d5
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key, 'y'-coordinate
(Raw Value) (32 bytes)
5e 4f 0d d8 a3 da 0b aa 16 b9 d3 ad 56 a0 c1 86 0a 94 0a f8 59 14 91
5e 25 01 9b 40 24 17 e9 9d
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key, 'x'-coordinate
G_Y (CBOR Data Item) (34 bytes)
58 20 41 97 01 d7 f0 0a 26 c2 dc 58 7a 36 dd 75 25 49 f3 37 63 c8 93
42 2c 8e a0 f9 55 a1 3a 4f f5 d5
]]></artwork>
        <t>R selects its connection identifier C_R to be the byte string 0x27, which since it is represented by the 1-byte CBOR int -8 is encoded as 0x27:</t>
        <artwork><![CDATA[
C_R (raw value) (Connection identifier chosen by R) (1 byte)
27
]]></artwork>
        <artwork><![CDATA[
C_R (CBOR Data Item) (Connection identifier chosen by R) (1 byte)
27
]]></artwork>
        <t>The transcript hash TH_2 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_2 = H( G_Y, C_R, H(message_1) )</t>
        <artwork><![CDATA[
H(message_1) (Raw Value) (32 bytes)
ca 02 ca bd a5 a8 90 27 49 b4 2f 71 10 50 bb 4d bd 52 15 3e 87 52 75
94 b3 9f 50 cd f0 19 88 8c
]]></artwork>
        <artwork><![CDATA[
H(message_1) (CBOR Data Item) (34 bytes)
58 20 ca 02 ca bd a5 a8 90 27 49 b4 2f 71 10 50 bb 4d bd 52 15 3e 87
52 75 94 b3 9f 50 cd f0 19 88 8c
]]></artwork>
        <t>The input to calculate TH_2 is the CBOR sequence:</t>
        <t>G_Y, C_R, H(message_1)</t>
        <artwork><![CDATA[
Input to calculate TH_2 (CBOR Sequence) (69 bytes)
58 20 41 97 01 d7 f0 0a 26 c2 dc 58 7a 36 dd 75 25 49 f3 37 63 c8 93
42 2c 8e a0 f9 55 a1 3a 4f f5 d5 27 58 20 ca 02 ca bd a5 a8 90 27 49
b4 2f 71 10 50 bb 4d bd 52 15 3e 87 52 75 94 b3 9f 50 cd f0 19 88 8c
]]></artwork>
        <artwork><![CDATA[
TH_2 (Raw Value) (32 bytes)
9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7 e5 cd f5 9c 7d
f1 cf 2d fe 9c 20 24 43 9c
]]></artwork>
        <artwork><![CDATA[
TH_2 (CBOR Data Item) (34 bytes)
58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7 e5 cd f5
9c 7d f1 cf 2d fe 9c 20 24 43 9c
]]></artwork>
        <t>PRK_2e is specified in <xref section="4.1.1.1" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>First, the ECDH shared secret G_XY is computed from G_X and Y, or G_Y and X:</t>
        <artwork><![CDATA[
G_XY (Raw Value) (ECDH shared secret) (32 bytes)
2f 0c b7 e8 60 ba 53 8f bf 5c 8b de d0 09 f6 25 9b 4b 62 8f e1 eb 7d
be 93 78 e5 ec f7 a8 24 ba
]]></artwork>
        <t>Then, PRK_2e is calculated using Extract() determined by the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_2e = Extract( salt, G_XY ) =
       = HMAC-SHA-256( salt, G_XY )
]]></artwork>
        <t>where salt is TH_2:</t>
        <artwork><![CDATA[
salt (Raw Value) (32 bytes)
9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7 e5 cd f5 9c 7d
f1 cf 2d fe 9c 20 24 43 9c
]]></artwork>
        <artwork><![CDATA[
PRK_2e (Raw Value) (32 bytes)
e0 1f a1 4d d5 6e 30 82 67 a1 a8 12 a9 d0 b9 53 41 e3 94 ab c7 c5 c3
9d d7 18 85 f7 d4 cd 5b f3
]]></artwork>
        <t>Since METHOD = 3, R authenticates using static DH. The EDHOC key exchange algorithm is based on the same curve as for the ephemeral keys, which is P-256, since the selected cipher suite is 2.</t>
        <t>R's static Diffie-Hellman key pair for use with P-256:</t>
        <artwork><![CDATA[
Responder's private authentication key
SK_R (Raw Value) (32 bytes)
72 cc 47 61 db d4 c7 8f 75 89 31 aa 58 9d 34 8d 1e f8 74 a7 e3 03 ed
e2 f1 40 dc f3 e6 aa 4a ac
]]></artwork>
        <artwork><![CDATA[
Responder's public authentication key, 'x'-coordinate
PK_R (Raw Value) (32 bytes)
bb c3 49 60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91 a1 2a fb
cb ac 93 62 20 46 dd 44 f0
]]></artwork>
        <artwork><![CDATA[
Responder's public authentication key, 'y'-coordinate
(Raw Value) (32 bytes)
45 19 e2 57 23 6b 2a 0c e2 02 3f 09 31 f1 f3 86 ca 7a fd a6 4f cd e0
10 8c 22 4c 51 ea bf 60 72
]]></artwork>
        <t>Since R authenticates with static DH (METHOD = 3), PRK_3e2m is derived
from SALT_3e2m and G_RX.</t>
        <t>The input needed to calculate SALT_3e2m is defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using Expand() with the EDHOC hash algorithm:.</t>
        <artwork><![CDATA[
SALT_3e2m  = EDHOC-KDF( PRK_2e, 1, TH_2, hash_length ) =
           = HKDF-Expand( PRK_2e, info, hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for SALT_3e2m is:</t>
        <artwork><![CDATA[
info =
(
 1,
 h'9d2af3a3d3fc06aea8110f14ba12ad0b4fb7e5cdf59c7df1
   cf2dfe9c2024439c',
 32
)
]]></artwork>
        <artwork><![CDATA[
info for SALT_3e2m (CBOR Sequence) (37 bytes)
01 58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7 e5 cd
f5 9c 7d f1 cf 2d fe 9c 20 24 43 9c 18 20
]]></artwork>
        <artwork><![CDATA[
SALT_3e2m (Raw Value) (32 bytes)
a4 f7 67 b3 46 9a 6e 6a e5 fc bf 27 38 39 fa 87 c4 1f 46 2b 03 ad 1c
a7 ce 8f 37 c9 53 66 d8 d1
]]></artwork>
        <t>PRK_3e2m is specified in <xref section="4.1.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>PRK_3e2m is derived from G_RX using Extract() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_3e2m = Extract( SALT_3e2m, G_RX ) =
         = HMAC-SHA-256( SALT_3e2m, G_RX )
]]></artwork>
        <t>where G_RX is the ECDH shared secret calculated from G_X and R, or G_R and X.</t>
        <artwork><![CDATA[
G_RX (Raw Value) (ECDH shared secret) (32 bytes)
f2 b6 ee a0 22 20 b9 5e ee 5a 0b c7 01 f0 74 e0 0a 84 3e a0 24 22 f6
08 25 fb 26 9b 3e 16 14 23
]]></artwork>
        <artwork><![CDATA[
PRK_3e2m (Raw Value) (32 bytes)
41 2d 60 cd f9 9d c7 49 07 54 c9 69 ad 4c 46 b1 35 0b 90 84 33 eb f3
fe 06 3b e8 62 7f b3 5b 3b
]]></artwork>
        <t>R constructs the remaining input needed to calculate MAC_2:</t>
        <t>MAC_2 = EDHOC-KDF( PRK_3e2m, 2, context_2, mac_length_2 )</t>
        <t>context_2 = &lt;&lt; ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <t>CRED_R is identified by a 'kid' with byte string value 0x32:</t>
        <artwork><![CDATA[
ID_CRED_R =
{
 4 : h'32'
}
]]></artwork>
        <artwork><![CDATA[
ID_CRED_R (CBOR Data Item) (4 bytes)
a1 04 41 32
]]></artwork>
        <t>CRED_R is an RPK encoded as a CCS:</t>
        <artwork><![CDATA[
{                                              /CCS/
  2 : "example.edu",                           /sub/
  8 : {                                        /cnf/
    1 : {                                      /COSE_Key/
      1 : 2,                                   /kty/
      2 : h'32',                               /kid/
     -1 : 1,                                   /crv/
     -2 : h'BBC34960526EA4D32E940CAD2A234148
            DDC21791A12AFBCBAC93622046DD44F0', /x/
     -3 : h'4519E257236B2A0CE2023F0931F1F386
            CA7AFDA64FCDE0108C224C51EABF6072'  /y/
    }
  }
}
]]></artwork>
        <artwork><![CDATA[
CRED_R (CBOR Data Item) (95 bytes)
a2 02 6b 65 78 61 6d 70 6c 65 2e 65 64 75 08 a1 01 a5 01 02 02 41 32
20 01 21 58 20 bb c3 49 60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2
17 91 a1 2a fb cb ac 93 62 20 46 dd 44 f0 22 58 20 45 19 e2 57 23 6b
2a 0c e2 02 3f 09 31 f1 f3 86 ca 7a fd a6 4f cd e0 10 8c 22 4c 51 ea
bf 60 72
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_2 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>context_2 = &lt;&lt; ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <artwork><![CDATA[
context_2 (CBOR Sequence) (133 bytes)
a1 04 41 32 58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f
b7 e5 cd f5 9c 7d f1 cf 2d fe 9c 20 24 43 9c a2 02 6b 65 78 61 6d 70
6c 65 2e 65 64 75 08 a1 01 a5 01 02 02 41 32 20 01 21 58 20 bb c3 49
60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91 a1 2a fb cb ac 93
62 20 46 dd 44 f0 22 58 20 45 19 e2 57 23 6b 2a 0c e2 02 3f 09 31 f1
f3 86 ca 7a fd a6 4f cd e0 10 8c 22 4c 51 ea bf 60 72
]]></artwork>
        <artwork><![CDATA[
context_2 (CBOR byte string) (135 bytes)
58 85 a1 04 41 32 58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad
0b 4f b7 e5 cd f5 9c 7d f1 cf 2d fe 9c 20 24 43 9c a2 02 6b 65 78 61
6d 70 6c 65 2e 65 64 75 08 a1 01 a5 01 02 02 41 32 20 01 21 58 20 bb
c3 49 60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91 a1 2a fb cb
ac 93 62 20 46 dd 44 f0 22 58 20 45 19 e2 57 23 6b 2a 0c e2 02 3f 09
31 f1 f3 86 ca 7a fd a6 4f cd e0 10 8c 22 4c 51 ea bf 60 72
]]></artwork>
        <t>MAC_2 is computed through Expand() using the EDHOC hash algorithm, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <t>MAC_2 = HKDF-Expand(PRK_3e2m, info, mac_length_2), where</t>
        <t>info = ( 2, context_2, mac_length_2 )</t>
        <t>Since METHOD = 3, mac_length_2 is given by the EDHOC MAC length.</t>
        <t>info for MAC_2 is:</t>
        <artwork><![CDATA[
info =
(
 2,
 h'a104413258209d2af3a3d3fc06aea8110f14ba12ad0b4fb7
   e5cdf59c7df1cf2dfe9c2024439ca2026b6578616d706c65
   2e65647508a101a501020241322001215820bbc34960526e
   a4d32e940cad2a234148ddc21791a12afbcbac93622046dd
   44f02258204519e257236b2a0ce2023f0931f1f386ca7afd
   a64fcde0108c224c51eabf6072',
 8
)
]]></artwork>
        <t>where the last value is the EDHOC MAC length.</t>
        <artwork><![CDATA[
info for MAC_2 (CBOR Sequence) (137 bytes)
02 58 85 a1 04 41 32 58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12
ad 0b 4f b7 e5 cd f5 9c 7d f1 cf 2d fe 9c 20 24 43 9c a2 02 6b 65 78
61 6d 70 6c 65 2e 65 64 75 08 a1 01 a5 01 02 02 41 32 20 01 21 58 20
bb c3 49 60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91 a1 2a fb
cb ac 93 62 20 46 dd 44 f0 22 58 20 45 19 e2 57 23 6b 2a 0c e2 02 3f
09 31 f1 f3 86 ca 7a fd a6 4f cd e0 10 8c 22 4c 51 ea bf 60 72 08
]]></artwork>
        <artwork><![CDATA[
MAC_2 (Raw Value) (8 bytes)
d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <artwork><![CDATA[
MAC_2 (CBOR Data Item) (9 bytes)
48 d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <t>Since METHOD = 3, Signature_or_MAC_2 is MAC_2:</t>
        <artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (8 bytes)
d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (9 bytes)
48 d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <t>R constructs PLAINTEXT_2 without padding:</t>
        <artwork><![CDATA[
PAD_2 (CBOR sequence of simple type) (0 bytes)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_2 =
(
 ? PAD_2,
 ID_CRED_R / bstr / -24..23,
 Signature_or_MAC_2,
 ? EAD_2
)
]]></artwork>
        <t>Since ID_CRED_R contains a single 'kid' parameter, only the byte string value is included in the plaintext, represented as described in <xref section="3.3.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>. The CBOR map { 4 : h'32' } is thus replaced, not by the CBOR byte string 0x4132, but by the CBOR int 0x32, since that is a one byte encoding of a CBOR integer (-19).</t>
        <artwork><![CDATA[
PLAINTEXT_2 (CBOR Sequence) (10 bytes)
32 48 d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <t>The input needed to calculate KEYSTREAM_2 is defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using Expand() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
KEYSTREAM_2 = EDHOC-KDF( PRK_2e, 0, TH_2, plaintext_length ) =
            = HKDF-Expand( PRK_2e, info, plaintext_length )
]]></artwork>
        <t>where plaintext_length is the length of PLAINTEXT_2, and info for KEYSTREAM_2 is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'9d2af3a3d3fc06aea8110f14ba12ad0b4fb7e5cdf59c7df1
   cf2dfe9c2024439c',
 10
)
]]></artwork>
        <t>where last value is the length of PLAINTEXT_2.</t>
        <artwork><![CDATA[
info for KEYSTREAM_2 (CBOR Sequence) (36 bytes)
00 58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7 e5 cd
f5 9c 7d f1 cf 2d fe 9c 20 24 43 9c 0a
]]></artwork>
        <artwork><![CDATA[
KEYSTREAM_2 (Raw Value) (10 bytes)
36 6c 89 33 7f f8 0c 69 35 9a
]]></artwork>
        <t>R calculates CIPHERTEXT_2 as XOR between PLAINTEXT_2 and KEYSTREAM_2:</t>
        <artwork><![CDATA[
CIPHERTEXT_2 (Raw Value) (10 bytes)
04 24 59 e2 da 6c 75 14 3f 35
]]></artwork>
        <t>R constructs message_2:</t>
        <artwork><![CDATA[
message_2 =
(
 G_Y_CIPHERTEXT_2,
 C_R
)
]]></artwork>
        <t>where G_Y_CIPHERTEXT_2 is the bstr encoding of the concatenation of
the raw values of G_Y and CIPHERTEXT_2.</t>
        <artwork><![CDATA[
message_2 (CBOR Sequence) (45 bytes)
58 2a 41 97 01 d7 f0 0a 26 c2 dc 58 7a 36 dd 75 25 49 f3 37 63 c8 93
42 2c 8e a0 f9 55 a1 3a 4f f5 d5 04 24 59 e2 da 6c 75 14 3f 35 27
]]></artwork>
      </section>
      <section anchor="message3-1">
        <name>message_3</name>
        <t>The transcript hash TH_3 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_3 = H( TH_2, PLAINTEXT_2, CRED_R )</t>
        <artwork><![CDATA[
Input to calculate TH_3 (CBOR Sequence) (139 bytes)
58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7 e5 cd f5
9c 7d f1 cf 2d fe 9c 20 24 43 9c 32 48 d0 d1 a5 94 79 7d 0a af a2 02
6b 65 78 61 6d 70 6c 65 2e 65 64 75 08 a1 01 a5 01 02 02 41 32 20 01
21 58 20 bb c3 49 60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91
a1 2a fb cb ac 93 62 20 46 dd 44 f0 22 58 20 45 19 e2 57 23 6b 2a 0c
e2 02 3f 09 31 f1 f3 86 ca 7a fd a6 4f cd e0 10 8c 22 4c 51 ea bf 60
72
]]></artwork>
        <artwork><![CDATA[
TH_3 (Raw Value) (32 bytes)
b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab 3e 9e d1
2d fe 22 a5 3e ed a7 de 48
]]></artwork>
        <artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab 3e
9e d1 2d fe 22 a5 3e ed a7 de 48
]]></artwork>
        <t>Since METHOD = 3, I authenticates using static DH. The EDHOC key exchange algorithm is based on the same curve as for the ephemeral keys, which is P-256, since the selected cipher suite is 2.</t>
        <t>I's static Diffie-Hellman key pair for use with P-256:</t>
        <artwork><![CDATA[
Initiator's private authentication key
SK_I (Raw Value) (32 bytes)
fb 13 ad eb 65 18 ce e5 f8 84 17 66 08 41 14 2e 83 0a 81 fe 33 43 80
a9 53 40 6a 13 05 e8 70 6b
]]></artwork>
        <artwork><![CDATA[
Initiator's public authentication key, 'x'-coordinate
PK_I (Raw Value) (32 bytes)
ac 75 e9 ec e3 e5 0b fc 8e d6 03 99 88 95 22 40 5c 47 bf 16 df 96 66
0a 41 29 8c b4 30 7f 7e b6
]]></artwork>
        <artwork><![CDATA[
Initiator's public authentication key, 'y'-coordinate
(Raw Value) (32 bytes)
6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87 d2 57 e6 db
3c 2a 93 df 21 ff 3a ff c8
]]></artwork>
        <t>Since I authenticates with static DH (METHOD = 3), PRK_4e3m is derived
from SALT_4e3m and G_IY.</t>
        <t>The input needed to calculate SALT_4e3m is defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using Expand() with the EDHOC hash algorithm:.</t>
        <artwork><![CDATA[
SALT_4e3m  = EDHOC-KDF( PRK_3e2m, 5, TH_3, hash_length ) =
           = HKDF-Expand( PRK_3e2m, info, hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for SALT_4e3m is:</t>
        <artwork><![CDATA[
info =
(
 5,
 h'b778f602331ff68ac402a6511b9de285bedf6eab3e9ed12d
   fe22a53eeda7de48',
 32
)
]]></artwork>
        <artwork><![CDATA[
info for SALT_4e3m (CBOR Sequence) (37 bytes)
05 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab
3e 9e d1 2d fe 22 a5 3e ed a7 de 48 18 20
]]></artwork>
        <artwork><![CDATA[
SALT_4e3m (Raw Value) (32 bytes)
8c 60 d4 35 7f ba 5f 69 4a 81 48 2c 4d 38 a1 00 0b c3 e3 e2 a2 94 06
d1 81 53 ff c3 59 5c 17 ba
]]></artwork>
        <t>PRK_4e3m is specified in <xref section="4.1.1.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>Since I authenticates with static DH (METHOD = 3), PRK_4e3m is derived
from G_IY using Extract() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_4e3m = Extract(SALT_4e3m, G_IY) =
         = HMAC-SHA-256(SALT_4e3m, G_IY)
]]></artwork>
        <t>where G_IY is the ECDH shared secret calculated from G_I and Y, or G_Y and I.</t>
        <artwork><![CDATA[
G_IY (Raw Value) (ECDH shared secret) (32 bytes)
08 0f 42 50 85 bc 62 49 08 9e ac 8f 10 8e a6 23 26 85 7e 12 ab 07 d7
20 28 ca 1b 5f 36 e0 04 b3
]]></artwork>
        <artwork><![CDATA[
PRK_4e3m (Raw Value) (32 bytes)
7d 01 59 bb e4 54 73 c9 40 2e 0d 42 db ce b4 5d ca 05 b7 44 ca e1 e0
83 e5 83 15 b8 aa 47 ce ec
]]></artwork>
        <t>I constructs the remaining input needed to calculate MAC_3:</t>
        <t>MAC_3 = EDHOC-KDF( PRK_4e3m, 6, context_3, mac_length_3 )</t>
        <t>context_3 = &lt;&lt; ID_CRED_I, TH_3, CRED_I, ? EAD_3 &gt;&gt;</t>
        <t>CRED_I is identified by a 'kid' with byte string value 0x2b:</t>
        <artwork><![CDATA[
ID_CRED_I =
{
 4 : h'2b'
}
]]></artwork>
        <artwork><![CDATA[
ID_CRED_I (CBOR Data Item) (4 bytes)
a1 04 41 2b
]]></artwork>
        <t>CRED_I is an RPK encoded as a CCS:</t>
        <artwork><![CDATA[
{                                              /CCS/
  2 : "42-50-31-FF-EF-37-32-39",               /sub/
  8 : {                                        /cnf/
    1 : {                                      /COSE_Key/
      1 : 2,                                   /kty/
      2 : h'2b',                               /kid/
     -1 : 1,                                   /crv/
     -2 : h'AC75E9ECE3E50BFC8ED6039988952240
            5C47BF16DF96660A41298CB4307F7EB6'  /x/
     -3 : h'6E5DE611388A4B8A8211334AC7D37ECB
            52A387D257E6DB3C2A93DF21FF3AFFC8'  /y/
    }
  }
}
]]></artwork>
        <artwork><![CDATA[
CRED_I (CBOR Data Item) (107 bytes)
a2 02 77 34 32 2d 35 30 2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32
2d 33 39 08 a1 01 a5 01 02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5
0b fc 8e d6 03 99 88 95 22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30
7f 7e b6 22 58 20 6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52
a3 87 d2 57 e6 db 3c 2a 93 df 21 ff 3a ff c8
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_3 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>context_3 = &lt;&lt; ID_CRED_I, TH_3, CRED_I, ? EAD_3 &gt;&gt;</t>
        <artwork><![CDATA[
context_3 (CBOR Sequence) (145 bytes)
a1 04 41 2b 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be
df 6e ab 3e 9e d1 2d fe 22 a5 3e ed a7 de 48 a2 02 77 34 32 2d 35 30
2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32 2d 33 39 08 a1 01 a5 01
02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5 0b fc 8e d6 03 99 88 95
22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30 7f 7e b6 22 58 20 6e 5d
e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87 d2 57 e6 db 3c 2a
93 df 21 ff 3a ff c8
]]></artwork>
        <artwork><![CDATA[
context_3 (CBOR byte string) (147 bytes)
58 91 a1 04 41 2b 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2
85 be df 6e ab 3e 9e d1 2d fe 22 a5 3e ed a7 de 48 a2 02 77 34 32 2d
35 30 2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32 2d 33 39 08 a1 01
a5 01 02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5 0b fc 8e d6 03 99
88 95 22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30 7f 7e b6 22 58 20
6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87 d2 57 e6 db
3c 2a 93 df 21 ff 3a ff c8
]]></artwork>
        <t>MAC_3 is computed through Expand() using the EDHOC hash algorithm, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
MAC_3 = HKDF-Expand(PRK_4e3m, info, mac_length_3), where
]]></artwork>
        <t>info = ( 6, context_3, mac_length_3 )</t>
        <t>Since METHOD = 3, mac_length_3 is given by the EDHOC MAC length.</t>
        <t>info for MAC_3 is:</t>
        <artwork><![CDATA[
info =
(
 6,
 h'a104412b5820b778f602331ff68ac402a6511b9de285bedf
   6eab3e9ed12dfe22a53eeda7de48a2027734322d35302d33
   312d46462d45462d33372d33322d333908a101a501020241
   2b2001215820ac75e9ece3e50bfc8ed60399889522405c47
   bf16df96660a41298cb4307f7eb62258206e5de611388a4b
   8a8211334ac7d37ecb52a387d257e6db3c2a93df21ff3aff
   c8',
 8
)
]]></artwork>
        <t>where the last value is the EDHOC MAC length.</t>
        <artwork><![CDATA[
info for MAC_3 (CBOR Sequence) (149 bytes)
06 58 91 a1 04 41 2b 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d
e2 85 be df 6e ab 3e 9e d1 2d fe 22 a5 3e ed a7 de 48 a2 02 77 34 32
2d 35 30 2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32 2d 33 39 08 a1
01 a5 01 02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5 0b fc 8e d6 03
99 88 95 22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30 7f 7e b6 22 58
20 6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87 d2 57 e6
db 3c 2a 93 df 21 ff 3a ff c8 08
]]></artwork>
        <artwork><![CDATA[
MAC_3 (Raw Value) (8 bytes)
dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <artwork><![CDATA[
MAC_3 (CBOR Data Item) (9 bytes)
48 dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <t>Since METHOD = 3, Signature_or_MAC_3 is MAC_3:</t>
        <artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (8 bytes)
dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (9 bytes)
48 dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <t>I constructs PLAINTEXT_3 without padding:</t>
        <artwork><![CDATA[
PAD_3 (CBOR sequence of simple type) (0 bytes)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_3 =
(
 ? PAD_3,
 ID_CRED_I / bstr / -24..23,
 Signature_or_MAC_3,
 ? EAD_3
)
]]></artwork>
        <t>Since ID_CRED_I contains a single 'kid' parameter, only the byte string value is included in the plaintext, represented as described in <xref section="3.3.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>. The CBOR map { 4 : h'2b' } is thus replaced, not by the CBOR byte string 0x412b, but by the CBOR int 0x2b, since that is a one byte encoding of a CBOR integer (-12).</t>
        <artwork><![CDATA[
PLAINTEXT_3 (CBOR Sequence) (10 bytes)
2b 48 dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <t>I constructs the associated data for message_3:</t>
        <artwork><![CDATA[
A_3 =
[
 "Encrypt0",
 h'',
 h'b778f602331ff68ac402a6511b9de285bedf6eab3e9ed12d
   fe22a53eeda7de48'
]
]]></artwork>
        <artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 b7 78 f6 02 33 1f f6 8a c4 02
a6 51 1b 9d e2 85 be df 6e ab 3e 9e d1 2d fe 22 a5 3e ed a7 de 48
]]></artwork>
        <t>I constructs the input needed to derive the key K_3, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
K_3 = EDHOC-KDF( PRK_3e2m, 3, TH_3, key_length )
    = HKDF-Expand( PRK_3e2m, info, key_length ),
]]></artwork>
        <t>where key_length is the key length of EDHOC AEAD algorithm, and info for K_3 is:</t>
        <artwork><![CDATA[
info =
(
 3,
 h'b778f602331ff68ac402a6511b9de285bedf6eab3e9ed12d
   fe22a53eeda7de48',
 16
)
]]></artwork>
        <t>where the last value is the key length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_3 (CBOR Sequence) (36 bytes)
03 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab
3e 9e d1 2d fe 22 a5 3e ed a7 de 48 10
]]></artwork>
        <artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
2f 10 8b ef ff 80 6f 5f c8 1b f0 a2 d5 f4 24 1f
]]></artwork>
        <t>I constructs the input needed to derive the nonce IV_3, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
IV_3 = EDHOC-KDF( PRK_3e2m, 4, TH_3, iv_length )
     = HKDF-Expand( PRK_3e2m, info, iv_length ),
]]></artwork>
        <t>where iv_length is the nonce length of EDHOC AEAD algorithm, and info for IV_3 is:</t>
        <artwork><![CDATA[
info =
(
 4,
 h'b778f602331ff68ac402a6511b9de285bedf6eab3e9ed12d
   fe22a53eeda7de48',
 13
)
]]></artwork>
        <t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_3 (CBOR Sequence) (36 bytes)
04 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab
3e 9e d1 2d fe 22 a5 3e ed a7 de 48 0d
]]></artwork>
        <artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
e3 ff 26 46 33 25 8e 49 46 2d 35 56 6d
]]></artwork>
        <t>I calculates CIPHERTEXT_3 as 'ciphertext' of COSE_Encrypt0 applied
using the EDHOC AEAD algorithm with plaintext PLAINTEXT_3, additional data
A_3, key K_3 and nonce IV_3.</t>
        <artwork><![CDATA[
CIPHERTEXT_3 (Raw Value) (18 bytes)
c2 b6 28 35 dc 9b 1f 53 41 9c 1d 3a 22 61 ee ed 35 05
]]></artwork>
        <t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>
        <artwork><![CDATA[
message_3 (CBOR Sequence) (19 bytes)
52 c2 b6 28 35 dc 9b 1f 53 41 9c 1d 3a 22 61 ee ed 35 05
]]></artwork>
        <t>The transcript hash TH_4 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_4 = H( TH_3, PLAINTEXT_3, CRED_I )</t>
        <artwork><![CDATA[
Input to calculate TH_4 (CBOR Sequence) (151 bytes)
58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab 3e
9e d1 2d fe 22 a5 3e ed a7 de 48 2b 48 dd f1 06 b8 6f d2 2f e4 a2 02
77 34 32 2d 35 30 2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32 2d 33
39 08 a1 01 a5 01 02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5 0b fc
8e d6 03 99 88 95 22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30 7f 7e
b6 22 58 20 6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87
d2 57 e6 db 3c 2a 93 df 21 ff 3a ff c8
]]></artwork>
        <artwork><![CDATA[
TH_4 (Raw Value) (32 bytes)
1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2 43 a8 b4
13 60 a9 8e c4 cb 70 6b 70
]]></artwork>
        <artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2 43
a8 b4 13 60 a9 8e c4 cb 70 6b 70
]]></artwork>
      </section>
      <section anchor="message4-1">
        <name>message_4</name>
        <t>No external authorization data:</t>
        <t>EAD_4 (CBOR Sequence) (0 bytes)</t>
        <t>R constructs the plaintext PLAINTEXT_4:</t>
        <artwork><![CDATA[
PLAINTEXT_4 =
(
 ? EAD_4
)
]]></artwork>
        <t>PLAINTEXT_4 (CBOR Sequence) (0 bytes)</t>
        <t>R constructs the associated data for message_4:</t>
        <artwork><![CDATA[
A_4 =
[
 "Encrypt0",
 h'',
 h'1f57dabf8f26da0657d9840c9b1077c1d4c47db243a8b413
   60a98ec4cb706b70'
]
]]></artwork>
        <artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 1f 57 da bf 8f 26 da 06 57 d9
84 0c 9b 10 77 c1 d4 c4 7d b2 43 a8 b4 13 60 a9 8e c4 cb 70 6b 70
]]></artwork>
        <t>R constructs the input needed to derive the EDHOC message_4 key, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
K_4   = EDHOC-KDF( PRK_4e3m, 8, TH_4, key_length )
      = HKDF-Expand( PRK_4e3m, info, key_length )
]]></artwork>
        <t>where key_length is the key length of the EDHOC AEAD algorithm,
and info for EDHOC_K_4 is:</t>
        <artwork><![CDATA[
info =
(
 8,
 h'1f57dabf8f26da0657d9840c9b1077c1d4c47db243a8b413
   60a98ec4cb706b70',
 16
)
]]></artwork>
        <t>where the last value is the key length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_4 (CBOR Sequence) (36 bytes)
08 58 20 1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2
43 a8 b4 13 60 a9 8e c4 cb 70 6b 70 10
]]></artwork>
        <artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
de 02 dc 03 6c b6 81 cd 53 80 d7 83 e8 53 14 2f
]]></artwork>
        <t>R constructs the input needed to derive the EDHOC message_4 nonce, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
      IV_4 = EDHOC-KDF( PRK_4e3m, 9, TH_4, iv_length )
           = HKDF-Expand( PRK_4e3m, info, iv_length )
]]></artwork>
        <t>where iv_length is the nonce length of EDHOC AEAD algorithm,
and info for EDHOC_IV_4 is:</t>
        <artwork><![CDATA[
info =
(
 9,
 h'1f57dabf8f26da0657d9840c9b1077c1d4c47db243a8b413
   60a98ec4cb706b70',
 13
)
]]></artwork>
        <t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_4 (CBOR Sequence) (36 bytes)
09 58 20 1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2
43 a8 b4 13 60 a9 8e c4 cb 70 6b 70 0d
]]></artwork>
        <artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
c2 93 2c 74 55 f5 6c 82 57 59 23 39 59
]]></artwork>
        <t>R calculates CIPHERTEXT_4 as 'ciphertext' of COSE_Encrypt0 applied
  using the EDHOC AEAD algorithm with plaintext PLAINTEXT_4, additional data
  A_4, key K_4 and nonce IV_4.</t>
        <artwork><![CDATA[
CIPHERTEXT_4 (8 bytes)
63 59 ad 21 f0 77 a9 d1
]]></artwork>
        <t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>
        <artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 63 59 ad 21 f0 77 a9 d1
]]></artwork>
      </section>
      <section anchor="out-and-exporter2">
        <name>PRK_out and PRK_exporter</name>
        <t>PRK_out is specified in <xref section="4.1.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
PRK_out = EDHOC-KDF( PRK_4e3m, 7, TH_4, hash_length ) =
        = HKDF-Expand( PRK_4e3m, info,  hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for PRK_out is:</t>
        <artwork><![CDATA[
info =
(
 7,
 h'1f57dabf8f26da0657d9840c9b1077c1d4c47db243a8b413
   60a98ec4cb706b70',
 32
)
]]></artwork>
        <t>where the last value is the length of EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_out (CBOR Sequence) (37 bytes)
07 58 20 1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2
43 a8 b4 13 60 a9 8e c4 cb 70 6b 70 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
7d 0a 64 61 d8 38 48 ed d5 23 4c 5f 97 f4 b7 7c 1d 24 a7 12 09 29 29
20 cb 49 74 e5 59 f5 41 3d
]]></artwork>
        <t>The OSCORE Master Secret and OSCORE Master Salt are derived with the EDHOC-Exporter as specified in 4.2.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
EDHOC-Exporter( label, context, length )
= EDHOC-KDF( PRK_exporter, label, context, length )
]]></artwork>
        <t>where PRK_exporter is derived from PRK_out:</t>
        <artwork><![CDATA[
 PRK_exporter = EDHOC-KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for the PRK_exporter is:</t>
        <artwork><![CDATA[
info =
(
 10,
 h'',
 32
)
]]></artwork>
        <t>where the last value is the length of EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_exporter (CBOR Sequence) (4 bytes)
0a 40 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
52 d1 2a 79 52 00 96 b6 c4 be 60 cf a9 9e ad 2f d6 2a ba 58 aa fb 5c
c2 df 2e 04 52 ef 6c 0d d9
]]></artwork>
      </section>
      <section anchor="oscore-parameters">
        <name>OSCORE Parameters</name>
        <t>The derivation of OSCORE parameters is specified in Appendix A.1 of
<xref target="I-D.ietf-lake-edhoc"/>.</t>
        <t>The AEAD and Hash algorithms to use in OSCORE are given by the selected cipher suite:</t>
        <artwork><![CDATA[
Application AEAD Algorithm (int)
10
]]></artwork>
        <artwork><![CDATA[
Application Hash Algorithm (int)
-16
]]></artwork>
        <t>The mapping from EDHOC connection identifiers to OSCORE Sender/Recipient IDs
is defined in <xref section="3.3.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>C_R is mapped to the Recipient ID of the server, i.e., the Sender ID of the client. The byte string 0x27, which as C_R is encoded as the CBOR integer 0x27, is converted to the server Recipient ID 0x27.</t>
        <artwork><![CDATA[
Client's OSCORE Sender ID (Raw Value) (1 byte)
27
]]></artwork>
        <t>C_I is mapped to the Recipient ID of the client, i.e., the Sender ID of the server. The byte string 0x37, which as C_I is encoded as the CBOR integer 0x0e is converted to the client Recipient ID 0x37.</t>
        <artwork><![CDATA[
Server's OSCORE Sender ID (Raw Value) (1 byte)
37
]]></artwork>
        <t>The OSCORE Master Secret is computed through Expand() using the
Application hash algorithm, see Appendix A.1 of <xref target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
OSCORE Master Secret = EDHOC-Exporter( 0, h'', oscore_key_length )
= EDHOC-KDF( PRK_exporter, 0, h'',  oscore_key_length )
= HKDF-Expand( PRK_exporter, info,  oscore_key_length )
]]></artwork>
        <t>where oscore_key_length is by default the key length of the Application AEAD
algorithm, and info for the OSCORE Master Secret is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'',
 16
)
]]></artwork>
        <t>where the last value is the key length of Application AEAD algorithm.</t>
        <artwork><![CDATA[
info for OSCORE Master Secret (CBOR Sequence) (3 bytes)
00 40 10
]]></artwork>
        <artwork><![CDATA[
OSCORE Master Secret (Raw Value) (16 bytes)
07 ce 22 f2 63 8f ca 40 4d de d7 2a 25 fa 45 f4
]]></artwork>
        <t>The OSCORE Master Salt is computed through Expand() using the Application hash algorithm, see <xref section="4.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
OSCORE Master Salt = EDHOC-Exporter( 1, h'', oscore_salt_length )
= EDHOC-KDF( PRK_exporter, 1, h'', oscore_salt_length )
= HKDF-Expand( PRK_4x3m, info, oscore_salt_length )
]]></artwork>
        <t>where oscore_salt_length is the length of the OSCORE Master Salt, and info for the OSCORE Master Salt is:</t>
        <artwork><![CDATA[
info =
(
 1,
 h'',
 8
)
]]></artwork>
        <t>where the last value is the length of the OSCORE Master Salt.</t>
        <artwork><![CDATA[
info for OSCORE Master Salt (CBOR Sequence) (3 bytes)
01 40 08
]]></artwork>
        <artwork><![CDATA[
OSCORE Master Salt (Raw Value) (8 bytes)
5b e3 82 5f 5a 52 84 b7
]]></artwork>
      </section>
      <section anchor="key-update-1">
        <name>Key Update</name>
        <t>Key update is defined in <xref section="J" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
EDHOC-KeyUpdate( context ):
PRK_out = EDHOC-KDF( PRK_out, 11, context, hash_length )
        = HKDF-Expand( PRK_out, info, hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash function, context for KeyUpdate is</t>
        <artwork><![CDATA[
context for KeyUpdate (Raw Value) (16 bytes)
a0 11 58 fd b8 20 89 0c d6 be 16 96 02 b8 bc ea
]]></artwork>
        <artwork><![CDATA[
context for KeyUpdate (CBOR Data Item) (17 bytes)
50 a0 11 58 fd b8 20 89 0c d6 be 16 96 02 b8 bc ea
]]></artwork>
        <t>and where info for key update is:</t>
        <artwork><![CDATA[
info =
(
 11,
 h'a01158fdb820890cd6be169602b8bcea',
 32
)
]]></artwork>
        <artwork><![CDATA[
PRK_out after KeyUpdate (Raw Value) (32 bytes)
cb ae fc 6c fe 8c 9d 65 09 0c 34 2e 4e 4f cd d6 07 98 19 85 db 6f 57
67 e9 06 55 14 0e 3a 09 b1
]]></artwork>
        <t>After key update the PRK_exporter needs to be derived anew:</t>
        <artwork><![CDATA[
 PRK_exporter = EDHOC-KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork>
        <t>where info and hash_length as unchanged as in <xref target="out-and-exporter2"/>.</t>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
10 c3 69 11 e0 8a e5 25 13 b9 a8 a2 84 85 bf 3c eb 79 18 e4 c8 4e 5b
ca ad 7a 21 1c 42 f0 13 3a
]]></artwork>
        <t>The OSCORE Master Secret is derived with the updated PRK_exporter:</t>
        <artwork><![CDATA[
OSCORE Master Secret =
= HKDF-Expand(PRK_exporter, info, oscore_key_length)
]]></artwork>
        <t>where info and key_length are unchanged as in <xref target="oscore-param"/>.</t>
        <artwork><![CDATA[
OSCORE Master Secret after KeyUpdate (Raw Value) (16 bytes)
4c 75 69 6c ba 17 9c a9 f6 87  07 ee dc de 76 e0
]]></artwork>
        <t>The OSCORE Master Salt is derived with the updated PRK_exporter:</t>
        <artwork><![CDATA[
OSCORE Master Salt = HKDF-Expand(PRK_exporter, info, salt_length)
]]></artwork>
        <t>where info and salt_length are unchanged as in <xref target="oscore-param"/>.</t>
        <artwork><![CDATA[
OSCORE Master Salt after KeyUpdate (Raw Value) (8 bytes)
9d 95 4f c2 e7 ab b4 d0
]]></artwork>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>This document contains examples of EDHOC <xref target="I-D.ietf-lake-edhoc"/> whose security considerations apply. The keys printed in these examples cannot be considered secret and must not be used.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>There are no IANA considerations.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Informative References</name>
      <reference anchor="I-D.ietf-lake-edhoc" target="https://www.ietf.org/archive/id/draft-ietf-lake-edhoc-17.txt">
        <front>
          <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
          <author fullname="Göran Selander" initials="G." surname="Selander">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="Francesca Palombini" initials="F." surname="Palombini">
            <organization>Ericsson AB</organization>
          </author>
          <date day="12" month="October" year="2022"/>
          <abstract>
            <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-17"/>
      </reference>
      <reference anchor="RFC7748" target="https://www.rfc-editor.org/info/rfc7748">
        <front>
          <title>Elliptic Curves for Security</title>
          <author fullname="A. Langley" initials="A." surname="Langley">
            <organization/>
          </author>
          <author fullname="M. Hamburg" initials="M." surname="Hamburg">
            <organization/>
          </author>
          <author fullname="S. Turner" initials="S." surname="Turner">
            <organization/>
          </author>
          <date month="January" year="2016"/>
          <abstract>
            <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS).  These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7748"/>
        <seriesInfo name="DOI" value="10.17487/RFC7748"/>
      </reference>
      <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
        <front>
          <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
          <author fullname="S. Josefsson" initials="S." surname="Josefsson">
            <organization/>
          </author>
          <author fullname="I. Liusvaara" initials="I." surname="Liusvaara">
            <organization/>
          </author>
          <date month="January" year="2017"/>
          <abstract>
            <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA).  The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves.  An example implementation and test vectors are provided.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8032"/>
        <seriesInfo name="DOI" value="10.17487/RFC8032"/>
      </reference>
      <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392">
        <front>
          <title>CBOR Web Token (CWT)</title>
          <author fullname="M. Jones" initials="M." surname="Jones">
            <organization/>
          </author>
          <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem">
            <organization/>
          </author>
          <author fullname="S. Erdtman" initials="S." surname="Erdtman">
            <organization/>
          </author>
          <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
            <organization/>
          </author>
          <date month="May" year="2018"/>
          <abstract>
            <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8392"/>
        <seriesInfo name="DOI" value="10.17487/RFC8392"/>
      </reference>
      <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
        <front>
          <title>Concise Binary Object Representation (CBOR)</title>
          <author fullname="C. Bormann" initials="C." surname="Bormann">
            <organization/>
          </author>
          <author fullname="P. Hoffman" initials="P." surname="Hoffman">
            <organization/>
          </author>
          <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="CborMe" target="http://cbor.me/">
        <front>
          <title>CBOR Playground</title>
          <author initials="C." surname="Bormann">
            <organization/>
          </author>
          <date year="2018" month="May"/>
        </front>
      </reference>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors want to thank all people verifying EDHOC test vectors and/or contributing to the interoperability testing including: <contact fullname="Christian Amsüss"/>, <contact fullname="Timothy Claeys"/>, <contact fullname="Stefan Hristozov"/>, <contact fullname="Rikard Höglund"/>, <contact fullname="Christos Koulamas"/>, <contact fullname="Francesca Palombini"/>, <contact fullname="Lidia Pocero"/>, <contact fullname="Peter van der Stok"/>, <contact fullname="Michel Veillette"/> and <contact fullname="Mališa Vučinić"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Q56z/w/YeYOaqlEBAA==

-->

</rfc>
