<?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.39 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-traces-06" category="info" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title>Traces of EDHOC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-traces-06"/>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J" surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="M" surname="Serafin" fullname="Marek Serafin">
      <organization>ASSA ABLOY</organization>
      <address>
        <postal>
          <country>Poland</country>
        </postal>
        <email>marek.serafin@assaabloy.com</email>
      </address>
    </author>
    <author initials="M" surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="M" surname="Vučinić" fullname="Mališa Vučinić">
      <organization>Inria</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>malisa.vucinic@inria.fr</email>
      </address>
    </author>
    <date year="2023" month="August" day="26"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 89?>

<t>This document contains some example traces of Ephemeral Diffie-Hellman Over COSE (EDHOC).</t>
    </abstract>
  </front>
  <middle>
    <?line 93?>

<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 <xref target="SP-800-186"/> 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 -22 of <xref target="I-D.ietf-lake-edhoc"/>. The traces has been verified by two independent implementations.</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 the Initiator and the Responder 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 <xref target="RFC7252"/>, 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 the Initiator and the Responder 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>The Initiator 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>The Initiator 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>The Initiator 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[
Connection identifier chosen by Initiator
C_I (Raw Value) (1 byte)
2d
]]></artwork>
        <artwork><![CDATA[
Connection identifier chosen by Initiator
C_I (CBOR Data Item) (1 byte)
2d
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_1 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>The Initiator 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>The Responder supports the most preferred and selected cipher suite 0, so SUITES_I is acceptable.</t>
        <t>The Responder 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>The Responder 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[
Connection identifier chosen by Responder
C_R (Raw Value) (1 byte)
18
]]></artwork>
        <artwork><![CDATA[
Connection identifier chosen by Responder
C_R (CBOR Data Item) (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, 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, H(message_1)</t>
        <artwork><![CDATA[
Input to calculate TH_2 (CBOR Sequence) (68 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 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)
c6 40 5c 15 4c 56 74 66 ab 1d f2 03 69 50 0e 54 0e 9f 14 bd 3a 79 6a
06 52 ca e6 6c 90 61 68 8d
]]></artwork>
        <artwork><![CDATA[
TH_2 (CBOR Data Item) (34 bytes)
58 20 c6 40 5c 15 4c 56 74 66 ab 1d f2 03 69 50 0e 54 0e 9f 14 bd 3a
79 6a 06 52 ca e6 6c 90 61 68 8d
]]></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)
c6 40 5c 15 4c 56 74 66 ab 1d f2 03 69 50 0e 54 0e 9f 14 bd 3a 79 6a
06 52 ca e6 6c 90 61 68 8d
]]></artwork>
        <artwork><![CDATA[
PRK_2e (Raw Value) (32 bytes)
d5 84 ac 2e 5d ad 5a 77 d1 4b 53 eb e7 2e f1 d5 da a8 86 0d 39 93 73
bf 2c 24 0a fa 7b a8 04 da
]]></artwork>
        <t>Since METHOD = 0, the Responder authenticates using signatures. Since the selected cipher suite is 0, the EDHOC signature algorithm is EdDSA.</t>
        <t>The Responder'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 the Responder authenticates with signatures PRK_3e2m = PRK_2e.</t>
        <artwork><![CDATA[
PRK_3e2m (Raw Value) (32 bytes)
d5 84 ac 2e 5d ad 5a 77 d1 4b 53 eb e7 2e f1 d5 da a8 86 0d 39 93 73
bf 2c 24 0a fa 7b a8 04 da
]]></artwork>
        <t>The Responder 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>
        <artwork><![CDATA[
ID_CRED_R (CBOR Data Item) (14 bytes)
a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b
]]></artwork>
        <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 c6 40 5c 15 4c 56 74
66 ab 1d f2 03 69 50 0e 54 0e 9f 14 bd 3a 79 6a 06 52 ca e6 6c 90 61
68 8d 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 c6 40 5c 15
4c 56 74 66 ab 1d f2 03 69 50 0e 54 0e 9f 14 bd 3a 79 6a 06 52 ca e6
6c 90 61 68 8d 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'a11822822e4879f2a41b510c1f9b5820c6405c154c567466
   ab1df20369500e540e9f14bd3a796a0652cae66c9061688d
   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 in bytes.</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 c6 40 5c
15 4c 56 74 66 ab 1d f2 03 69 50 0e 54 0e 9f 14 bd 3a 79 6a 06 52 ca
e6 6c 90 61 68 8d 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)
36 9c a4 39 2c 83 ed 63 d6 1a d2 18 42 0e a3 67 06 00 84 78 d5 bc 30
49 fb 8c 59 42 44 4b 13 33
]]></artwork>
        <artwork><![CDATA[
MAC_2 (CBOR Data Item) (34 bytes)
58 20 36 9c a4 39 2c 83 ed 63 d6 1a d2 18 42 0e a3 67 06 00 84 78 d5
bc 30 49 fb 8c 59 42 44 4b 13 33
]]></artwork>
        <t>Since METHOD = 0, Signature_or_MAC_2 is the 'signature' of the COSE_Sign1 object.</t>
        <t>The Responder 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'5820c6405c154c567466ab1df20369500e540e9f14bd3a79
   6a0652cae66c9061688d58f13081ee3081a1a00302010202
   0462319ec4300506032b6570301d311b301906035504030c
   124544484f4320526f6f742045643235353139301e170d32
   32303331363038323433365a170d32393132333132333030
   30305a30223120301e06035504030c174544484f43205265
   73706f6e6465722045643235353139302a300506032b6570
   032100a1db47b95184854ad12a0c1a354e418aace33aa0f2
   c662c00b3ac55de92f9359300506032b6570034100b723bc
   01eab0928e8b2b6c98de19cc3823d46e7d6987b032478fec
   faf14537a1af14cc8be829c6b73044101837eb4abc949565
   d86dce51cfae52ab82c152cb02',
 h'369ca4392c83ed63d61ad218420ea36706008478d5bc3049
   fb8c5942444b1333'
]
]]></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 c6 40 5c 15 4c 56 74 66 ab 1d f2 03 69 50
0e 54 0e 9f 14 bd 3a 79 6a 06 52 ca e6 6c 90 61 68 8d 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 36 9c a4 39 2c 83 ed 63 d6 1a d2 18 42
0e a3 67 06 00 84 78 d5 bc 30 49 fb 8c 59 42 44 4b 13 33
]]></artwork>
        <t>The Responder signs using the private authentication key SK_R</t>
        <artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (64 bytes)
41 e6 91 27 5b 84 04 24 25 5a cb 87 e6 33 d7 5d da 71 50 2d a2 e3 da
5f ce ee c4 e3 f7 60 74 48 6f 87 e6 6f 2a ca a1 bb d4 8c e0 e6 6a 5d
64 38 91 54 48 2f 9a 5e 57 22 70 63 31 59 f2 b1 7e 0e
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (66 bytes)
58 40 41 e6 91 27 5b 84 04 24 25 5a cb 87 e6 33 d7 5d da 71 50 2d a2
e3 da 5f ce ee c4 e3 f7 60 74 48 6f 87 e6 6f 2a ca a1 bb d4 8c e0 e6
6a 5d 64 38 91 54 48 2f 9a 5e 57 22 70 63 31 59 f2 b1 7e 0e
]]></artwork>
        <t>The Responder constructs PLAINTEXT_2:</t>
        <artwork><![CDATA[
PLAINTEXT_2 =
(
 C_R,
 ID_CRED_R / bstr / -24..23,
 Signature_or_MAC_2,
 ? EAD_2
)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_2 (CBOR Sequence) (82 bytes)
41 18 a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 40 41 e6 91 27 5b
84 04 24 25 5a cb 87 e6 33 d7 5d da 71 50 2d a2 e3 da 5f ce ee c4 e3
f7 60 74 48 6f 87 e6 6f 2a ca a1 bb d4 8c e0 e6 6a 5d 64 38 91 54 48
2f 9a 5e 57 22 70 63 31 59 f2 b1 7e 0e
]]></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 in bytes of PLAINTEXT_2 in bytes, and info for KEYSTREAM_2 is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'c6405c154c567466ab1df20369500e540e9f14bd3a796a06
   52cae66c9061688d',
 82
)
]]></artwork>
        <t>where the last value is the length in bytes of PLAINTEXT_2.</t>
        <artwork><![CDATA[
info for KEYSTREAM_2 (CBOR Sequence) (37 bytes)
00 58 20 c6 40 5c 15 4c 56 74 66 ab 1d f2 03 69 50 0e 54 0e 9f 14 bd
3a 79 6a 06 52 ca e6 6c 90 61 68 8d 18 52
]]></artwork>
        <artwork><![CDATA[
KEYSTREAM_2 (Raw Value) (82 bytes)
fd 3e 7c 3f 2d 6b ee 64 3d 3c 9d 2f 28 47 03 5d 73 e2 ec b0 f8 db 5c
d1 c6 85 4e 24 89 6a f2 11 88 b2 c4 34 4e 68 9e c2 98 42 83 d9 fb c6
9c e1 c5 db 10 dc ff f2 4d f9 a4 9a 04 a9 40 58 27 7b c7 fa 9a d6 c6
b1 94 ab 32 8b 44 5e b0 80 49 0c d7 86
]]></artwork>
        <t>The Responder calculates CIPHERTEXT_2 as XOR between PLAINTEXT_2 and KEYSTREAM_2:</t>
        <artwork><![CDATA[
CIPHERTEXT_2 (Raw Value) (82 bytes)
bc 26 dd 27 0f e9 c0 2c 44 ce 39 34 79 4b 1c c6 2b a2 ad 56 69 fc 07
55 c2 a1 6b 7e 42 ed 14 22 5f ef 1e 45 1e 45 3c 21 42 1d 4d 37 3f 25
6b 81 b1 93 7f 5b 19 9d 67 33 05 21 d0 25 a0 be 4d 26 a3 c2 0b 82 8e
9e 0e f5 65 a9 34 3d 81 d9 bb bd a9 88
]]></artwork>
        <t>The Responder constructs message_2:</t>
        <artwork><![CDATA[
message_2 =
(
 G_Y_CIPHERTEXT_2
)
]]></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 72 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 bc 26 dd 27 0f e9 c0 2c 44 ce 39 34
79 4b 1c c6 2b a2 ad 56 69 fc 07 55 c2 a1 6b 7e 42 ed 14 22 5f ef 1e
45 1e 45 3c 21 42 1d 4d 37 3f 25 6b 81 b1 93 7f 5b 19 9d 67 33 05 21
d0 25 a0 be 4d 26 a3 c2 0b 82 8e 9e 0e f5 65 a9 34 3d 81 d9 bb bd a9
88
]]></artwork>
      </section>
      <section anchor="message3">
        <name>message_3</name>
        <t>Since METHOD = 0, the Initiator authenticates using signatures. Since the selected cipher suite is 0, the EDHOC signature algorithm is EdDSA.</t>
        <t>The Initiator'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 the Initiator authenticates with signatures PRK_4e3m = PRK_3e2m.</t>
        <artwork><![CDATA[
PRK_4e3m (Raw Value) (32 bytes)
d5 84 ac 2e 5d ad 5a 77 d1 4b 53 eb e7 2e f1 d5 da a8 86 0d 39 93 73
bf 2c 24 0a fa 7b a8 04 da
]]></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) (359 bytes)
58 20 c6 40 5c 15 4c 56 74 66 ab 1d f2 03 69 50 0e 54 0e 9f 14 bd 3a
79 6a 06 52 ca e6 6c 90 61 68 8d 41 18 a1 18 22 82 2e 48 79 f2 a4 1b
51 0c 1f 9b 58 40 41 e6 91 27 5b 84 04 24 25 5a cb 87 e6 33 d7 5d da
71 50 2d a2 e3 da 5f ce ee c4 e3 f7 60 74 48 6f 87 e6 6f 2a ca a1 bb
d4 8c e0 e6 6a 5d 64 38 91 54 48 2f 9a 5e 57 22 70 63 31 59 f2 b1 7e
0e 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)
e0 91 12 1a f5 ac 6c e2 14 5d 48 25 e0 90 12 f2 97 98 e8 f7 13 ac 98
91 43 2d 22 56 b6 f6 78 e9
]]></artwork>
        <artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 e0 91 12 1a f5 ac 6c e2 14 5d 48 25 e0 90 12 f2 97 98 e8 f7 13
ac 98 91 43 2d 22 56 b6 f6 78 e9
]]></artwork>
        <t>The Initiator 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 e0 91 12 1a f5 ac 6c
e2 14 5d 48 25 e0 90 12 f2 97 98 e8 f7 13 ac 98 91 43 2d 22 56 b6 f6
78 e9 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 e0 91 12 1a
f5 ac 6c e2 14 5d 48 25 e0 90 12 f2 97 98 e8 f7 13 ac 98 91 43 2d 22
56 b6 f6 78 e9 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'a11822822e48c24ab2fd7643c79f5820e091121af5ac6ce2
   145d4825e09012f29798e8f713ac9891432d2256b6f678e9
   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 in bytes.</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 e0 91 12
1a f5 ac 6c e2 14 5d 48 25 e0 90 12 f2 97 98 e8 f7 13 ac 98 91 43 2d
22 56 b6 f6 78 e9 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)
51 c9 68 a7 f9 fd ea 19 c7 02 3f 70 22 b4 d9 f2 14 77 2e f5 88 59 05
24 05 76 f6 2d 03 6e 69 dc
]]></artwork>
        <artwork><![CDATA[
MAC_3 (CBOR Data Item) (34 bytes)
58 20 51 c9 68 a7 f9 fd ea 19 c7 02 3f 70 22 b4 d9 f2 14 77 2e f5 88
59 05 24 05 76 f6 2d 03 6e 69 dc
]]></artwork>
        <t>Since METHOD = 0, Signature_or_MAC_3 is the 'signature' of the
COSE_Sign1 object.</t>
        <t>The Initiator 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'5820e091121af5ac6ce2145d4825e09012f29798e8f713ac
   9891432d2256b6f678e958f13081ee3081a1a00302010202
   0462319ea0300506032b6570301d311b301906035504030c
   124544484f4320526f6f742045643235353139301e170d32
   32303331363038323430305a170d32393132333132333030
   30305a30223120301e06035504030c174544484f4320496e
   69746961746f722045643235353139302a300506032b6570
   032100ed06a8ae61a829ba5fa54525c9d07f48dd44a302f4
   3e0f23d8cc20b73085141e300506032b6570034100521241
   d8b3a770996bcfc9b9ead4e7e0a1c0db353a3bdf2910b392
   75ae48b756015981850d27db6734e37f67212267dd05eeff
   27b9e7a813fa574b72a00b430b',
 h'51c968a7f9fdea19c7023f7022b4d9f214772ef588590524
   0576f62d036e69dc'
]
]]></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 e0 91 12 1a f5 ac 6c e2 14 5d 48 25 e0 90
12 f2 97 98 e8 f7 13 ac 98 91 43 2d 22 56 b6 f6 78 e9 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 51 c9 68 a7 f9 fd ea 19 c7 02 3f 70 22
b4 d9 f2 14 77 2e f5 88 59 05 24 05 76 f6 2d 03 6e 69 dc
]]></artwork>
        <t>The Initiator signs using the private authentication key SK_I:</t>
        <artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (64 bytes)
fc 10 7e c0 0f 74 ba 31 47 40 04 da 60 c5 b0 e1 eb 18 37 c0 f2 1e 00
81 6f bd bb e9 75 a8 05 68 3d 12 69 5b 1f a4 dc 71 f6 4c 6e 9e e9 32
0a 19 19 85 57 41 e2 7a 16 02 97 8a 13 4f 3e 57 4f 06
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (66 bytes)
58 40 fc 10 7e c0 0f 74 ba 31 47 40 04 da 60 c5 b0 e1 eb 18 37 c0 f2
1e 00 81 6f bd bb e9 75 a8 05 68 3d 12 69 5b 1f a4 dc 71 f6 4c 6e 9e
e9 32 0a 19 19 85 57 41 e2 7a 16 02 97 8a 13 4f 3e 57 4f 06
]]></artwork>
        <t>The Initiator 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 fc 10 7e c0 0f 74 ba
31 47 40 04 da 60 c5 b0 e1 eb 18 37 c0 f2 1e 00 81 6f bd bb e9 75 a8
05 68 3d 12 69 5b 1f a4 dc 71 f6 4c 6e 9e e9 32 0a 19 19 85 57 41 e2
7a 16 02 97 8a 13 4f 3e 57 4f 06
]]></artwork>
        <t>The Initiator constructs the associated data for message_3:</t>
        <artwork><![CDATA[
A_3 =
[
 "Encrypt0",
 h'',
 h'e091121af5ac6ce2145d4825e09012f29798e8f713ac9891
   432d2256b6f678e9'
]
]]></artwork>
        <artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 e0 91 12 1a f5 ac 6c e2 14 5d
48 25 e0 90 12 f2 97 98 e8 f7 13 ac 98 91 43 2d 22 56 b6 f6 78 e9
]]></artwork>
        <t>The Initiator 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 in bytes for the EDHOC AEAD algorithm, and info for K_3 is:</t>
        <artwork><![CDATA[
info =
(
 3,
 h'e091121af5ac6ce2145d4825e09012f29798e8f713ac9891
   432d2256b6f678e9',
 16
)
]]></artwork>
        <t>where the last value is the key length in bytes for the EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_3 (CBOR Sequence) (36 bytes)
03 58 20 e0 91 12 1a f5 ac 6c e2 14 5d 48 25 e0 90 12 f2 97 98 e8 f7
13 ac 98 91 43 2d 22 56 b6 f6 78 e9 10
]]></artwork>
        <artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
95 65 a2 09 f6 7f d0 e1 62 9e 6f e7 c0 cc 3e 4a
]]></artwork>
        <t>The Initiator 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 in bytes for the EDHOC AEAD algorithm, and info for IV_3 is:</t>
        <artwork><![CDATA[
info =
(
 4,
 h'e091121af5ac6ce2145d4825e09012f29798e8f713ac9891
   432d2256b6f678e9',
 13
)
]]></artwork>
        <t>where the last value is the nonce length in bytes for the EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_3 (CBOR Sequence) (36 bytes)
04 58 20 e0 91 12 1a f5 ac 6c e2 14 5d 48 25 e0 90 12 f2 97 98 e8 f7
13 ac 98 91 43 2d 22 56 b6 f6 78 e9 0d
]]></artwork>
        <artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
b6 a7 79 c4 b0 e7 40 fd 8d 77 4d 0a d6
]]></artwork>
        <t>The Initiator 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)
aa 96 6a 1a a4 fa 44 9a 17 2a 16 0b 96 e6 44 f6 a3 33 29 f2 7c 6a f5
bb ef c6 11 58 d0 ad dd 99 06 9b 9a 19 7f f7 c9 0e 62 f3 b5 56 64 c5
83 74 7b 9a 40 2c cd 68 90 7f e4 58 b1 6a d5 2d 63 a0 0e 5a 85 df 95
ee 7b 1b 49 8a c9 83 42 00 8c 04 71 c1 ae 8d 75 82 50 44
]]></artwork>
        <t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>
        <artwork><![CDATA[
message_3 (CBOR Sequence) (90 bytes)
58 58 aa 96 6a 1a a4 fa 44 9a 17 2a 16 0b 96 e6 44 f6 a3 33 29 f2 7c
6a f5 bb ef c6 11 58 d0 ad dd 99 06 9b 9a 19 7f f7 c9 0e 62 f3 b5 56
64 c5 83 74 7b 9a 40 2c cd 68 90 7f e4 58 b1 6a d5 2d 63 a0 0e 5a 85
df 95 ee 7b 1b 49 8a c9 83 42 00 8c 04 71 c1 ae 8d 75 82 50 44
]]></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 e0 91 12 1a f5 ac 6c e2 14 5d 48 25 e0 90 12 f2 97 98 e8 f7 13
ac 98 91 43 2d 22 56 b6 f6 78 e9 a1 18 22 82 2e 48 c2 4a b2 fd 76 43
c7 9f 58 40 fc 10 7e c0 0f 74 ba 31 47 40 04 da 60 c5 b0 e1 eb 18 37
c0 f2 1e 00 81 6f bd bb e9 75 a8 05 68 3d 12 69 5b 1f a4 dc 71 f6 4c
6e 9e e9 32 0a 19 19 85 57 41 e2 7a 16 02 97 8a 13 4f 3e 57 4f 06 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)
6b 13 32 5a 49 bd 9f 97 0d 31 91 ee 31 79 62 df 1d 44 38 c6 64 15 ea
a4 ce dd 62 b5 b4 9d 7b b7
]]></artwork>
        <artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 6b 13 32 5a 49 bd 9f 97 0d 31 91 ee 31 79 62 df 1d 44 38 c6 64
15 ea a4 ce dd 62 b5 b4 9d 7b b7
]]></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>The Responder constructs PLAINTEXT_4:</t>
        <artwork><![CDATA[
PLAINTEXT_4 =
(
 ? EAD_4
)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_4 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>The Responder constructs the associated data for message_4:</t>
        <artwork><![CDATA[
A_4 =
[
 "Encrypt0",
 h'',
 h'6b13325a49bd9f970d3191ee317962df1d4438c66415eaa4
   cedd62b5b49d7bb7'
]
]]></artwork>
        <artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 6b 13 32 5a 49 bd 9f 97 0d 31
91 ee 31 79 62 df 1d 44 38 c6 64 15 ea a4 ce dd 62 b5 b4 9d 7b b7
]]></artwork>
        <t>The Responder 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 in bytes for the EDHOC AEAD algorithm,
  and info for K_4 is:</t>
        <artwork><![CDATA[
info =
(
 8,
 h'6b13325a49bd9f970d3191ee317962df1d4438c66415eaa4
   cedd62b5b49d7bb7',
 16
)
]]></artwork>
        <t>where the last value is the key length in bytes for the EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_4 (CBOR Sequence) (36 bytes)
08 58 20 6b 13 32 5a 49 bd 9f 97 0d 31 91 ee 31 79 62 df 1d 44 38 c6
64 15 ea a4 ce dd 62 b5 b4 9d 7b b7 10
]]></artwork>
        <artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
c9 f5 87 9d dd 4e 25 68 f6 94 46 c3 06 52 5f ef
]]></artwork>
        <t>The Responder 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 in bytes for the EDHOC AEAD algorithm,
  and info for IV_4 is:</t>
        <artwork><![CDATA[
info =
(
 9,
 h'6b13325a49bd9f970d3191ee317962df1d4438c66415eaa4
   cedd62b5b49d7bb7',
 13
)
]]></artwork>
        <t>where the last value is the nonce length in bytes for the EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_4 (CBOR Sequence) (36 bytes)
09 58 20 6b 13 32 5a 49 bd 9f 97 0d 31 91 ee 31 79 62 df 1d 44 38 c6
64 15 ea a4 ce dd 62 b5 b4 9d 7b b7 0d
]]></artwork>
        <artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
a8 e0 4c e7 56 ee 38 e8 23 b7 7b 3e e0
]]></artwork>
        <t>The Responder 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)
ee 12 0e 8b 5e 2a 00 8f
]]></artwork>
        <t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>
        <artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 ee 12 0e 8b 5e 2a 00 8f
]]></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 in bytes of the output of the EDHOC hash algorithm, and info for PRK_out is:</t>
        <artwork><![CDATA[
info =
(
 7,
 h'6b13325a49bd9f970d3191ee317962df1d4438c66415eaa4
   cedd62b5b49d7bb7',
 32
)
]]></artwork>
        <t>where the last value is the length in bytes of the output of the EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_out (CBOR Sequence) (37 bytes)
07 58 20 6b 13 32 5a 49 bd 9f 97 0d 31 91 ee 31 79 62 df 1d 44 38 c6
64 15 ea a4 ce dd 62 b5 b4 9d 7b b7 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
45 06 92 9a d5 95 d5 d4 e5 9b 5f 21 ea b6 7d ea b6 4a 3b d2 c7 d9 d6
87 7d 60 61 81 9c 2d 02 0d
]]></artwork>
        <t>The OSCORE Master Secret and OSCORE Master Salt are derived with the EDHOC_Exporter as specified in <xref section="4.2.1" sectionFormat="of" 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 in bytes 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 in bytes of the output of the 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)
ad 33 a8 f2 e0 6f ff 3e 5d 7e e1 10 9e db f2 b6 d2 56 4c b3 f4 08 68
e6 46 11 e4 20 92 4c e4 09
]]></artwork>
      </section>
      <section anchor="oscore-param">
        <name>OSCORE Parameters</name>
        <t>The derivation of OSCORE parameters is specified in <xref section="A.1" sectionFormat="of" 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 <xref section="A.1" sectionFormat="of" 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 in bytes for 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 in bytes for the 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)
fc 9c fb 05 63 ca 3e 28 f8 80 48 3b 9c 06 bd 03
]]></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 in bytes 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 in bytes 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)
0e c0 9d 45 3b 08 98 34
]]></artwork>
      </section>
      <section anchor="key-update">
        <name>Key Update</name>
        <t>Key update is defined in <xref section="H" 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 in bytes of the output of the EDHOC hash function, and 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)
0c 1d e2 f0 6d 9a d7 5a 21 32 90 5f 95 c6 96 40 42 76 af 81 f1 14 4a
a7 61 af bf 78 d6 8c a1 b4
]]></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 are unchanged as in <xref target="out-and-exporter1"/>.</t>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
f0 4e 4c 40 1d e8 db 34 f7 b5 06 b2 33 10 9a 24 c4 9c 4b 09 65 d0 7c
6e 47 7b 23 a3 7b 53 c2 35
]]></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)
50 48 6d 75 82 3a 59 2d 1e fd 28 6a 70 7f e8 7d
]]></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)
61 95 cb b1 ce 03 1c ae
]]></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 Before: Mar 16 08:24:36 2022 GMT
            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
        X509v3 extensions:
            X509v3 Key Usage: critical
                Certificate Sign
            X509v3 Basic Constraints: critical
                CA:TRUE
        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 the Initiator and the Responder are authenticated with ephemeral-static Diffie-Hellman (METHOD = 3). The Initiator supports cipher suites 6 and 2 (in order of preference) and the Responder 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>The Initiator 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>The Initiator 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>The Initiator 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[
Connection identifier chosen by Initiator
C_I (Raw Value) (1 byte)
0e
]]></artwork>
        <artwork><![CDATA[
Connection identifier chosen by Initiator
C_I (CBOR Data Item) (1 byte)
0e
]]></artwork>
        <t>No external authorization data:</t>
        <t>EAD_1 (CBOR Sequence) (0 bytes)</t>
        <t>The Initiator 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>The Responder does not support cipher suite 6 and sends an error with ERR_CODE 2 containing SUITES_R as ERR_INFO. The Responder 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 for message_1 the 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>The Initiator 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>The Initiator 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, one '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>The Initiator 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[
Connection identifier chosen by Initiator
C_I (Raw Value) (1 byte)
37
]]></artwork>
        <artwork><![CDATA[
Connection identifier chosen by Initiator
C_I (CBOR Data Item) (1 byte)
37
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_1 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>The Initiator 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>The Responder supports the selected cipher suite 2 and not the by the Initiator more preferred cipher suite(s) 6, so SUITES_I is acceptable.</t>
        <t>The Responder 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, one '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>The Responder 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[
Connection identifier chosen by Responder
C_R (raw value) (1 byte)
27
]]></artwork>
        <artwork><![CDATA[
Connection identifier chosen by Responder
C_R (CBOR Data Item) (1 byte)
27
]]></artwork>
        <t>The transcript hash TH_2 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_2 = H( G_Y, 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, H(message_1)</t>
        <artwork><![CDATA[
Input to calculate TH_2 (CBOR Sequence) (68 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 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)
35 6e fd 53 77 14 25 e0 08 f3 fe 3a 86 c8 3f f4 c6 b1 6e 57 02 8f f3
9d 52 36 c1 82 b2 02 08 4b
]]></artwork>
        <artwork><![CDATA[
TH_2 (CBOR Data Item) (34 bytes)
58 20 35 6e fd 53 77 14 25 e0 08 f3 fe 3a 86 c8 3f f4 c6 b1 6e 57 02
8f f3 9d 52 36 c1 82 b2 02 08 4b
]]></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)
35 6e fd 53 77 14 25 e0 08 f3 fe 3a 86 c8 3f f4 c6 b1 6e 57 02 8f f3
9d 52 36 c1 82 b2 02 08 4b
]]></artwork>
        <artwork><![CDATA[
PRK_2e (Raw Value) (32 bytes)
5a a0 d6 9f 3e 3d 1e 0c 47 9f 0b 8a 48 66 90 c9 80 26 30 c3 46 6b 1d
c9 23 71 c9 82 56 31 70 b5
]]></artwork>
        <t>Since METHOD = 3, the Responder 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>The Responder's static Diffie-Hellman P-256 key pair:</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
(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 the Responder 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 in bytes of the output of the EDHOC hash algorithm, and info for SALT_3e2m is:</t>
        <artwork><![CDATA[
info =
(
 1,
 h'356efd53771425e008f3fe3a86c83ff4c6b16e57028ff39d
   5236c182b202084b',
 32
)
]]></artwork>
        <artwork><![CDATA[
info for SALT_3e2m (CBOR Sequence) (37 bytes)
01 58 20 35 6e fd 53 77 14 25 e0 08 f3 fe 3a 86 c8 3f f4 c6 b1 6e 57
02 8f f3 9d 52 36 c1 82 b2 02 08 4b 18 20
]]></artwork>
        <artwork><![CDATA[
SALT_3e2m (Raw Value) (32 bytes)
af 4e 10 3a 47 cb 3c f3 25 70 d5 c2 5a d2 77 32 bd 8d 81 78 e9 a6 9d
06 1c 31 a2 7f 8e 3c a9 26
]]></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)
0c a3 d3 39 82 96 b3 c0 39 00 98 76 20 c1 1f 6f ce 70 78 1c 1d 12 19
72 0f 9e c0 8c 12 2d 84 34
]]></artwork>
        <t>The Responder 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 35 6e fd 53 77 14 25 e0 08 f3 fe 3a 86 c8 3f f4 c6
b1 6e 57 02 8f f3 9d 52 36 c1 82 b2 02 08 4b 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 35 6e fd 53 77 14 25 e0 08 f3 fe 3a 86 c8 3f
f4 c6 b1 6e 57 02 8f f3 9d 52 36 c1 82 b2 02 08 4b 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'a10441325820356efd53771425e008f3fe3a86c83ff4c6b1
   6e57028ff39d5236c182b202084ba2026b6578616d706c65
   2e65647508a101a501020241322001215820bbc34960526e
   a4d32e940cad2a234148ddc21791a12afbcbac93622046dd
   44f02258204519e257236b2a0ce2023f0931f1f386ca7afd
   a64fcde0108c224c51eabf6072',
 8
)
]]></artwork>
        <t>where the last value is the EDHOC MAC length in bytes.</t>
        <artwork><![CDATA[
info for MAC_2 (CBOR Sequence) (137 bytes)
02 58 85 a1 04 41 32 58 20 35 6e fd 53 77 14 25 e0 08 f3 fe 3a 86 c8
3f f4 c6 b1 6e 57 02 8f f3 9d 52 36 c1 82 b2 02 08 4b 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)
fa 5e fa 2e bf 92 0b f3
]]></artwork>
        <artwork><![CDATA[
MAC_2 (CBOR Data Item) (9 bytes)
48 fa 5e fa 2e bf 92 0b f3
]]></artwork>
        <t>Since METHOD = 3, Signature_or_MAC_2 is MAC_2:</t>
        <artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (8 bytes)
fa 5e fa 2e bf 92 0b f3
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (9 bytes)
48 fa 5e fa 2e bf 92 0b f3
]]></artwork>
        <t>The Responder constructs PLAINTEXT_2:</t>
        <artwork><![CDATA[
PLAINTEXT_2 =
(
 C_R,
 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) (11 bytes)
27 32 48 fa 5e fa 2e bf 92 0b f3
]]></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 in bytes of PLAINTEXT_2, and info for KEYSTREAM_2 is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'356efd53771425e008f3fe3a86c83ff4c6b16e57028ff39d
   5236c182b202084b',
 11
)
]]></artwork>
        <t>where the last value is the length in bytes of PLAINTEXT_2.</t>
        <artwork><![CDATA[
info for KEYSTREAM_2 (CBOR Sequence) (36 bytes)
00 58 20 35 6e fd 53 77 14 25 e0 08 f3 fe 3a 86 c8 3f f4 c6 b1 6e 57
02 8f f3 9d 52 36 c1 82 b2 02 08 4b 0b
]]></artwork>
        <artwork><![CDATA[
KEYSTREAM_2 (Raw Value) (11 bytes)
bf 50 e9 e7 ba d0 bb 68 17 33 99
]]></artwork>
        <t>The Responder calculates CIPHERTEXT_2 as XOR between PLAINTEXT_2 and KEYSTREAM_2:</t>
        <artwork><![CDATA[
CIPHERTEXT_2 (Raw Value) (11 bytes)
98 62 a1 1d e4 2a 95 d7 85 38 6a
]]></artwork>
        <t>The Responder constructs message_2:</t>
        <artwork><![CDATA[
message_2 =
(
 G_Y_CIPHERTEXT_2,
)
]]></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 2b 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 98 62 a1 1d e4 2a 95 d7 85 38 6a
]]></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) (140 bytes)
58 20 35 6e fd 53 77 14 25 e0 08 f3 fe 3a 86 c8 3f f4 c6 b1 6e 57 02
8f f3 9d 52 36 c1 82 b2 02 08 4b 27 32 48 fa 5e fa 2e bf 92 0b f3 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)
df e5 b0 65 e6 4c 72 d2 26 d5 00 c1 2d 49 be e6 dc 48 81 de d0 96 5e
9b df 89 d2 4a 54 f2 e5 9a
]]></artwork>
        <artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 df e5 b0 65 e6 4c 72 d2 26 d5 00 c1 2d 49 be e6 dc 48 81 de d0
96 5e 9b df 89 d2 4a 54 f2 e5 9a
]]></artwork>
        <t>Since METHOD = 3, the Initiator 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>The Initiator's static Diffie-Hellman P-256 key pair:</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
(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 in bytes of the output of the EDHOC hash algorithm, and info for SALT_4e3m is:</t>
        <artwork><![CDATA[
info =
(
 5,
 h'dfe5b065e64c72d226d500c12d49bee6dc4881ded0965e9b
   df89d24a54f2e59a',
 32
)
]]></artwork>
        <artwork><![CDATA[
info for SALT_4e3m (CBOR Sequence) (37 bytes)
05 58 20 df e5 b0 65 e6 4c 72 d2 26 d5 00 c1 2d 49 be e6 dc 48 81 de
d0 96 5e 9b df 89 d2 4a 54 f2 e5 9a 18 20
]]></artwork>
        <artwork><![CDATA[
SALT_4e3m (Raw Value) (32 bytes)
84 f8 a2 a9 53 4d dd 78 dc c7 e7 6e 0d 4d f6 0b fa d7 cd 3a d6 e1 d5
31 c7 f3 73 a7 ed a5 2d 1c
]]></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)
e9 cb 83 2a 24 00 95 d3 d0 64 3d be 12 e9 e2 e7 b1 8f 03 60 a3 17 2c
ea 7a c0 01 3e e2 40 e0 72
]]></artwork>
        <t>The Initiator 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 df e5 b0 65 e6 4c 72 d2 26 d5 00 c1 2d 49 be e6 dc
48 81 de d0 96 5e 9b df 89 d2 4a 54 f2 e5 9a 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 df e5 b0 65 e6 4c 72 d2 26 d5 00 c1 2d 49 be
e6 dc 48 81 de d0 96 5e 9b df 89 d2 4a 54 f2 e5 9a 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'a104412b5820dfe5b065e64c72d226d500c12d49bee6dc48
   81ded0965e9bdf89d24a54f2e59aa2027734322d35302d33
   312d46462d45462d33372d33322d333908a101a501020241
   2b2001215820ac75e9ece3e50bfc8ed60399889522405c47
   bf16df96660a41298cb4307f7eb62258206e5de611388a4b
   8a8211334ac7d37ecb52a387d257e6db3c2a93df21ff3aff
   c8',
 8
)
]]></artwork>
        <t>where the last value is the EDHOC MAC length in bytes.</t>
        <artwork><![CDATA[
info for MAC_3 (CBOR Sequence) (149 bytes)
06 58 91 a1 04 41 2b 58 20 df e5 b0 65 e6 4c 72 d2 26 d5 00 c1 2d 49
be e6 dc 48 81 de d0 96 5e 9b df 89 d2 4a 54 f2 e5 9a 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)
a5 ee b9 ef fd ab fc 39
]]></artwork>
        <artwork><![CDATA[
MAC_3 (CBOR Data Item) (9 bytes)
48 a5 ee b9 ef fd ab fc 39
]]></artwork>
        <t>Since METHOD = 3, Signature_or_MAC_3 is MAC_3:</t>
        <artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (8 bytes)
a5 ee b9 ef fd ab fc 39
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (9 bytes)
48 a5 ee b9 ef fd ab fc 39
]]></artwork>
        <t>The Initiator 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 a5 ee b9 ef fd ab fc 39
]]></artwork>
        <t>The Initiator constructs the associated data for message_3:</t>
        <artwork><![CDATA[
A_3 =
[
 "Encrypt0",
 h'',
 h'dfe5b065e64c72d226d500c12d49bee6dc4881ded0965e9b
   df89d24a54f2e59a'
]
]]></artwork>
        <artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 df e5 b0 65 e6 4c 72 d2 26 d5
00 c1 2d 49 be e6 dc 48 81 de d0 96 5e 9b df 89 d2 4a 54 f2 e5 9a
]]></artwork>
        <t>The Initiator 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 in bytes for the EDHOC AEAD algorithm, and info for K_3 is:</t>
        <artwork><![CDATA[
info =
(
 3,
 h'dfe5b065e64c72d226d500c12d49bee6dc4881ded0965e9b
   df89d24a54f2e59a',
 16
)
]]></artwork>
        <t>where the last value is the key length in bytes for the EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_3 (CBOR Sequence) (36 bytes)
03 58 20 df e5 b0 65 e6 4c 72 d2 26 d5 00 c1 2d 49 be e6 dc 48 81 de
d0 96 5e 9b df 89 d2 4a 54 f2 e5 9a 10
]]></artwork>
        <artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
ab 3b 2b 52 a0 4b 6a a3 2f 96 31 19 16 88 3a dd
]]></artwork>
        <t>The Initiator 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 in bytes for the EDHOC AEAD algorithm, and info for IV_3 is:</t>
        <artwork><![CDATA[
info =
(
 4,
 h'dfe5b065e64c72d226d500c12d49bee6dc4881ded0965e9b
   df89d24a54f2e59a',
 13
)
]]></artwork>
        <t>where the last value is the nonce length in bytes for the EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_3 (CBOR Sequence) (36 bytes)
04 58 20 df e5 b0 65 e6 4c 72 d2 26 d5 00 c1 2d 49 be e6 dc 48 81 de
d0 96 5e 9b df 89 d2 4a 54 f2 e5 9a 0d
]]></artwork>
        <artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
05 55 cf a1 6e 40 8d e5 e1 52 3d 04 7d
]]></artwork>
        <t>The Initiator 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)
47 3d d1 60 77 dd 71 d6 5b 56 e6 bd 71 e7 a4 9d 60 12
]]></artwork>
        <t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>
        <artwork><![CDATA[
message_3 (CBOR Sequence) (19 bytes)
52 47 3d d1 60 77 dd 71 d6 5b 56 e6 bd 71 e7 a4 9d 60 12
]]></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 df e5 b0 65 e6 4c 72 d2 26 d5 00 c1 2d 49 be e6 dc 48 81 de d0
96 5e 9b df 89 d2 4a 54 f2 e5 9a 2b 48 a5 ee b9 ef fd ab fc 39 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)
ba f6 0a db c5 00 fc e7 89 af 25 b1 08 ad a2 27 55 75 05 6c 52 c1 c2
03 6a 2d a4 a6 43 89 1c b4
]]></artwork>
        <artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 ba f6 0a db c5 00 fc e7 89 af 25 b1 08 ad a2 27 55 75 05 6c 52
c1 c2 03 6a 2d a4 a6 43 89 1c b4
]]></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>The Responder constructs PLAINTEXT_4:</t>
        <artwork><![CDATA[
PLAINTEXT_4 =
(
 ? EAD_4
)
]]></artwork>
        <t>PLAINTEXT_4 (CBOR Sequence) (0 bytes)</t>
        <t>The Responder constructs the associated data for message_4:</t>
        <artwork><![CDATA[
A_4 =
[
 "Encrypt0",
 h'',
 h'baf60adbc500fce789af25b108ada2275575056c52c1c203
   6a2da4a643891cb4'
]
]]></artwork>
        <artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 ba f6 0a db c5 00 fc e7 89 af
25 b1 08 ad a2 27 55 75 05 6c 52 c1 c2 03 6a 2d a4 a6 43 89 1c b4
]]></artwork>
        <t>The Responder 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 in bytes for the EDHOC AEAD algorithm,
and info for K_4 is:</t>
        <artwork><![CDATA[
info =
(
 8,
 h'baf60adbc500fce789af25b108ada2275575056c52c1c203
   6a2da4a643891cb4',
 16
)
]]></artwork>
        <t>where the last value is the key length in bytes for the EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_4 (CBOR Sequence) (36 bytes)
08 58 20 ba f6 0a db c5 00 fc e7 89 af 25 b1 08 ad a2 27 55 75 05 6c
52 c1 c2 03 6a 2d a4 a6 43 89 1c b4 10
]]></artwork>
        <artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
22 9d 4c 1d 6d 02 33 7b 1c e3 81 a2 bf a7 9b 2e
]]></artwork>
        <t>The Responder 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 in bytes for the EDHOC AEAD algorithm,
and info for IV_4 is:</t>
        <artwork><![CDATA[
info =
(
 9,
 h'baf60adbc500fce789af25b108ada2275575056c52c1c203
   6a2da4a643891cb4',
 13
)
]]></artwork>
        <t>where the last value is the nonce length in bytes for the EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_4 (CBOR Sequence) (36 bytes)
09 58 20 ba f6 0a db c5 00 fc e7 89 af 25 b1 08 ad a2 27 55 75 05 6c
52 c1 c2 03 6a 2d a4 a6 43 89 1c b4 0d
]]></artwork>
        <artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
98 4d 59 ab 25 5e 3d c6 f8 e0 65 5c b6
]]></artwork>
        <t>The Responder 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)
89 07 43 64 70 a6 e1 9f
]]></artwork>
        <t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>
        <artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 89 07 43 64 70 a6 e1 9f
]]></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 in bytes of the output of the EDHOC hash algorithm, and info for PRK_out is:</t>
        <artwork><![CDATA[
info =
(
 7,
 h'baf60adbc500fce789af25b108ada2275575056c52c1c203
   6a2da4a643891cb4',
 32
)
]]></artwork>
        <t>where the last value is the length in bytes of the output of the EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_out (CBOR Sequence) (37 bytes)
07 58 20 ba f6 0a db c5 00 fc e7 89 af 25 b1 08 ad a2 27 55 75 05 6c
52 c1 c2 03 6a 2d a4 a6 43 89 1c b4 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
6b 2d ae 40 32 30 65 71 cf bc 2e 4f 94 a2 55 fb 9f 1f 3f b2 9c a6 f3
79 fe c9 89 d4 fa 90 dc f0
]]></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 in bytes 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 in bytes of the output of the 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)
4f 0a 5a 82 3d 06 d0 00 5e 1b ec da 8a 6e 61 f3 c8 c6 7a 8b 15 da 7d
44 d3 58 5e c5 85 4e 91 e2
]]></artwork>
      </section>
      <section anchor="oscore-parameters">
        <name>OSCORE Parameters</name>
        <t>The derivation of OSCORE parameters is specified in <xref section="A.1" sectionFormat="of" 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 <xref section="A.1" sectionFormat="of" 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 in bytes for 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 in bytes for the 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)
8c 40 9a 33 22 23 ad 90 0e 44 f3 43 4d 2d 2c e3
]]></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 in bytes 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 in bytes 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)
61 63 f4 4b e8 62 ad fa
]]></artwork>
      </section>
      <section anchor="key-update-1">
        <name>Key Update</name>
        <t>Key update is defined in <xref section="H" 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 in bytes 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)
5e 5e fc ae dd a8 d1 85 bb 7e 26 1d f1 91 59 1c d9 f7 c9 20 49 e7 0c
23 f6 b4 34 e3 6d fc 1d 1c
]]></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 are unchanged as in <xref target="out-and-exporter2"/>.</t>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
bb b3 b7 72 6e 97 9c 1b b3 46 a3 f9 2b f4 e0 28 8d 52 62 7f b5 e7 9a
fd b3 b2 82 02 fd 2e 48 97
]]></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)
c9 1b 16 4c 81 0b 29 a6 3f cb 73 e5 1b c4 55 f3
]]></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)
73 ce 79 24 59 40 36 80
]]></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="25" month="August" 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-22"/>
      </reference>
      <reference anchor="RFC7252">
        <front>
          <title>The Constrained Application Protocol (CoAP)</title>
          <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
          <author fullname="K. Hartke" initials="K." surname="Hartke"/>
          <author fullname="C. Bormann" initials="C." surname="Bormann"/>
          <date month="June" year="2014"/>
          <abstract>
            <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
            <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7252"/>
        <seriesInfo name="DOI" value="10.17487/RFC7252"/>
      </reference>
      <reference anchor="RFC7748">
        <front>
          <title>Elliptic Curves for Security</title>
          <author fullname="A. Langley" initials="A." surname="Langley"/>
          <author fullname="M. Hamburg" initials="M." surname="Hamburg"/>
          <author fullname="S. Turner" initials="S." surname="Turner"/>
          <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"/>
          <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
          <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"/>
          <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
          <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
          <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
          <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"/>
          <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
          <date month="December" year="2020"/>
          <abstract>
            <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
            <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="94"/>
        <seriesInfo name="RFC" value="8949"/>
        <seriesInfo name="DOI" value="10.17487/RFC8949"/>
      </reference>
      <reference anchor="CborMe" target="https://cbor.me/">
        <front>
          <title>CBOR playground</title>
          <author initials="C." surname="Bormann">
            <organization/>
          </author>
          <date year="2023" month="August"/>
        </front>
      </reference>
      <reference anchor="SP-800-186" target="https://doi.org/10.6028/NIST.SP.800-186">
        <front>
          <title>Recommendations for Discrete Logarithm-based Cryptography: Elliptic Curve Domain Parameters</title>
          <author initials="L." surname="Chen">
            <organization/>
          </author>
          <author initials="D." surname="Moody">
            <organization/>
          </author>
          <author initials="K." surname="Randall">
            <organization/>
          </author>
          <author initials="A." surname="Regenscheid">
            <organization/>
          </author>
          <author initials="A." surname="Robinson">
            <organization/>
          </author>
          <date year="2023" month="February"/>
        </front>
        <seriesInfo name="NIST" value="Special Publication 800-186"/>
      </reference>
    </references>
    <?line 2829?>

<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"/>, and <contact fullname="Michel Veillette"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
7cnB59rs0fxuGpP1R7ubD/L1GYeNPS6ogqkfghr7Lz8bTBcf6OQE3fNxNcMx
u0MNDUa7Ui0ah4reuDGfbaWI6LNu/Z8XYO6/8bnnQtDn/Az00RoGz3d5LAq6
Mh/yRh+XRo98Mpv2aOSWi92wktrGx/5Wy5cyWrL7JU9C1cXcn18OFc32s4c6
t4wFXFm0MQxQnqUyzk/LjajQT+pzNrNPe8+Woq9iOlp8wOU48rp+nmKdtWTJ
B79WsNO58GGXFP5rk3rG2a/mP23ZthdmaRwqK4ysJPVjY/uRb6k4jBMzUIah
6kDljcuICUbmt3WqKlVvSsiBkaZ0Nltqczp7TDvwyqc9jcwmM8hjR0ka0RFu
dOKXRUEQJsCsCGiNzOc9f5d2PPyUGrQ7RQ7OuUONqehZtLTVsSnOHy3tfL00
v5XJQH8CA59XjVa4+S3ZW2AALijEaJblQt/3+akdA72HXYtViB06gS/gYldR
QB4jmy+6PkVGZBFFc2R8kIkKKbSKymLxGTWxR6sTaUEk7JC3KeQAEPxKTqkQ
re0Le3s+pHwF2+7eSaw6oB6HIGQPJPYnvgEgR+ad2zhls5unfBoXTfJJLYdA
8Zh3myOCQpvCYxSfDeRkFKYScMwMbkhc9vLth5OOmNYc3Oyazgaa6E9kE2oc
OZPsa5yax0rzYqLodJuI6lNAoJDL1Kc6Uk3NSytzDxD4QV6slps5ZokB4kZ+
/HZTfPOJppVmcJXc35IRWOVoFCemsMrKFdSIHxMyerUhi7V4V9J+F20KfcgN
WSr0RUW2OEkjT+HAg9WLEr3klApTNVHXIaF5vr0HXiruuN+Y9IyGeH3+43l/
eHO91Dw0Wihak+Uqv7PdObRwenoqY538yvN1nvy6XP22MOlbmouN+DiTy/vb
mDry/TfL1Td5k0U0z0b+ppfb3JrWy1+BuBfyzqwwFAmbeZ59qEq+SKwYkB7g
DT2FoXyXBy7DpI/vtwzhV8VGNZZ+dYfuxfMFzSU9mJf/oMQXfJphFT5evFvP
cV3DHLrd/Pv/2mw+0S40vng9v11t32G5FxpTXV692cIyBKyih1b/tnpfXn81
/1WvU/n83//n28X9Mi0v562vNvLF6n6hb3XVzrO1BobcJFq+1IvVbTxfzsuv
/jpP57i8StD98tpLctUB3y6JPeXNdvUrf0MriW9/mCfvzEL+3cwXC7Pdmk/M
F7Qa2eI+y8T/B27fW99sWAEA

-->

</rfc>
