<?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.26 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-traces-04" category="info" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title>Traces of EDHOC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-traces-04"/>
    <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="2023" month="March" day="10"/>
    <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 -19 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 EDHOC_Extract() determined by the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_2e = EDHOC_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[
Responder'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 EDHOC_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 PLAINTEXT_2:</t>
        <artwork><![CDATA[
PLAINTEXT_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 EDHOC_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 EDHOC_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 PLAINTEXT_3:</t>
        <artwork><![CDATA[
PLAINTEXT_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 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 EDHOC_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 EDHOC_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 EDHOC_Extract() determined by the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_2e = EDHOC_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 EDHOC_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 EDHOC_Extract() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_3e2m = EDHOC_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 EDHOC_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:</t>
        <artwork><![CDATA[
PLAINTEXT_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 EDHOC_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 the 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 EDHOC_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 EDHOC_Extract() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_4e3m = EDHOC_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 EDHOC_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:</t>
        <artwork><![CDATA[
PLAINTEXT_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 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 EDHOC_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 EDHOC_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">
        <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="3" month="February" year="2023"/>
          <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-19"/>
      </reference>
      <reference anchor="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">
        <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">
        <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">
        <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:
H4sIAAAAAAAAA929W3MbSbIm+B6/IqzqQdQYSWVc8gabOnsokmrxqKtKRqr7
VO2ZNllkZqSEEQhwAFCXI9O+7tP+hrX5DWM2T/vWs/9r3T3vyMgEQEjqOqtS
UWAiMzIufvncw93j5OSEvZ9wxdh6up7ZCX+1NKld8UXOLy+e/3rOskU6N7fw
RbY0+fpkatf5ycy8sydruvHE08wkydK+nzA2vVtO+Hp5v1pLz4s9yczSmgm/
sen9crr+xD68mfA/n7245P+6WL6bzt/wPy0X93fs3YcJv5qv7XJu1ycX+BqW
mvWET+f5gq3uk9vpajVdzNef7qAbV5evnjGWLjJ4fsLvoTcRu5tO+I88NXN+
v7LcLJfmEz+a5tzMZvyTXT3miyV/a1Zv+Vu7tIzz9SKd4BfwcbVYrpc2X9W/
f7pt/wp3ZvZu/XbCJWPmfv12sZywE17MyJ/+/j+X8M4bOzPzzC7x6ftl8VXr
2mIJ/bxcTtPVajGH38vZal9aQRcsDPjm8kQEmmuP38CL371dzG7h23RxP18v
P8HXH2xm8X57a6azCX+zgNefrspX/bMtGzxNF7d1H/9l8XbOXy7t/d//b/6z
Wa/LN07n0/XUzGCc/9Ludv/Gb9f7/wo9O70t3+Tu/M9AP+9gLoEkpt1e/9yd
7OoG6u3Zzc0ZP3v6519/b/W3c7HqsZInXuTx/90kU7v897//jw/t/r5c4Lw2
/b3FzsBs07v+2axWxiSzxafNDqcL/mo6W6RmuL/199Td66uby1ZHy18fOKm3
2IHTNb3gn5dT6C5j88USpnn63iKHAks1v3F+dXJx2rC0zd4CZ8Dl62fnYaij
8mPkKVl9VHH9MdYxtXGeLJY/W7wK/GKWb7Dbb9fru8mTJyl8dXprnxTfFQLm
/Omv1/zlzHx6A8xPEwyDLzmL05+T8l+cQJi781P+FDs9n9P1zKxppj9x6YmI
sZOTE5i8FYqjNWOv3k5XHGTW/a2dr2Ge5msDjQCb31puP5rbu5nl60bE3b21
t7CiM34xzfOpPXluZzN4E//1vV3y819vLvkRicHHp8WLbqdZNoM5/REF1nKR
3adrkEyM0U3882fHfH75wqFLhs+mb96uP1j8SeOF/k1BzNmMv7OfoG/pWzN/
Y/ndcgELvZjxzK6mb+bwdY7SCx6bfcLx4ECneHll12uQgatTPjBmmLDFml6w
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
c/b/AXkb3pR7UAEA

-->

</rfc>
