<?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-07" 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-07"/>
    <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="September" day="14"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 109?>

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

<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>
      <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. Credentials can also be encoded in CBOR, e.g. CBOR Web Tokens (CWT) <xref target="RFC8392"/>.</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>
        <t>Examples of invalid EDHOC messages are found in <xref target="sec-trace-invalid"/>.</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="term">
        <name>Terminology and Requirements Language</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
        </t>
      </section>
    </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="sec-trace-invalid">
      <name>Invalid Traces</name>
      <t>This section contains examples of invalid messages, which a compliant implementation will not compose and must or may reject according to <xref target="I-D.ietf-lake-edhoc"/>, <xref target="RFC8949"/>, <xref target="RFC9053"/>, and <xref target="SP-800-56A"/>. This is just a small set of examples of different reasons a message might be invalid. The same types of invalidities applies to other fields and messages as well. Implementations should make sure to check for similar types of invalidities in all EHDOC fields and messages.</t>
      <section anchor="encoding-errors">
        <name>Encoding Errors</name>
        <section anchor="surplus-array-encoding-of-message">
          <name>Surplus array encoding of message</name>
          <t>Invalid encoding of message_1 as array. Correct encoding is a CBOR sequence according to Section 5.2.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (38 bytes)
84 03 02 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="surplus-bstr-encoding-of-connection-identifier">
          <name>Surplus bstr encoding of connection identifier</name>
          <t>Invalid encoding 41 0e of C_I = 0x0e. Correct encoding is 0e according to Section 3.3.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (38 bytes)
03 02 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 41 0e
]]></artwork>
        </section>
        <section anchor="surplus-array-encoding-of-ciphersuite">
          <name>Surplus array encoding of ciphersuite</name>
          <t>Invalid array encoding 81 02 of SUITES_I = 2. Correct encoding is 02 according to Section 5.2.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (38 bytes)
03 81 02 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="text-string-encoding-of-ephemeral-key">
          <name>Text string encoding of ephemeral key</name>
          <t>Invalid type of the third element (G_X). Correct encoding is a byte string according to Section 5.2.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (37 bytes)
03 02 78 20 20 61 69 72 20 73 70 65 65 64 20 6F 66 20 61 20 75 6E 6C
61 64 65 6E 20 73 77 61 6C 6C 6F 77 20 0e
]]></artwork>
        </section>
        <section anchor="wrong-number-of-cbor-sequence-elements">
          <name>Wrong number of CBOR sequence elements</name>
          <t>Invalid number of elements in the CBOR sequence. Correct number of elements is 1 according to Section 5.3.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid message_2 (46 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 4B 98 62 a1 1d e4 2a 95 d7 85 38 6a
]]></artwork>
        </section>
        <section anchor="surplus-map-encoding-of-idcred-field">
          <name>Surplus map encoding of ID_CRED field</name>
          <t>Invalid encoding a1 04 42 32 10 of ID_CRED_R in PLAINTEXT_2. Correct encoding is 42 32 10 according to Section 3.5.3.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid PLAINTEXT_2 (15 bytes)
27 a1 04 42 32 10 48 fa 5e fa 2e bf 92 0b f3
]]></artwork>
        </section>
        <section anchor="surplus-bstr-encoding-of-idcred-field">
          <name>Surplus bstr encoding of ID_CRED field</name>
          <t>Invalid encoding 41 32 of ID_CRED_R in PLAINTEXT_2. Correct encoding is 32 according to Section 3.5.3.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid PLAINTEXT_2 (12 bytes)
27 41 32 48 fa 5e fa 2e bf 92 0b f3
]]></artwork>
        </section>
      </section>
      <section anchor="crypto-related-errors">
        <name>Crypto-related Errors</name>
        <section anchor="error-in-length-of-ephemeral-key">
          <name>Error in length of ephemeral key</name>
          <t>Invalid length of the third element (G_X). Selected cipher suite is cipher suite 24 with curve P-384 according to Sections 5.2.2, and 10.2 of <xref target="I-D.ietf-lake-edhoc"/>. Correct length of x-coordinate is 48 bytes according to Section 3.7 of <xref target="I-D.ietf-lake-edhoc"/> and Section 7.1.1 of <xref target="RFC9053"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (40 bytes)
03 82 02 18 18 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-in-elliptic-curve-representation">
          <name>Error in elliptic curve representation</name>
          <t>Invalid x-coordinate in G_X as x <contact fullname="≥"/> p. Requirement that x &lt; p according to Section 9.2 of <xref target="I-D.ietf-lake-edhoc"/> and Section 5.6.2.3 of <xref target="SP-800-56A"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (37 bytes)
03 02 58 20 ff ff ff ff 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
00 ff ff ff ff ff ff ff ff ff ff ff ff 0e
]]></artwork>
        </section>
        <section anchor="error-in-elliptic-curve-point">
          <name>Error in elliptic curve point</name>
          <t>Invalid x-coordinate in (G_X) not corresponding to a point on the P-256 curve. Requirement that y<sup>2</sup> <contact fullname="≡"/> x<sup>3</sup> + a <contact fullname="⋅"/> x + b (mod p) according to Section 9.2 of <xref target="I-D.ietf-lake-edhoc"/> and Section 5.6.2.3 of <xref target="SP-800-56A"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (37 bytes)
03 02 58 20 a0 4e 73 60 1d f5 44 a7 0b a7 ea 1e 57 03 0f 7d 4b 4e b7
f6 73 92 4e 58 d5 4c a7 7a 5e 7d 4d 4a 0e
]]></artwork>
        </section>
        <section anchor="curve-point-of-low-order">
          <name>Curve point of low order</name>
          <t>Curve25519 point of low order which fails the all-zero output check. Requirement to perform the all-zero output check according to Section 9.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (37 bytes)
03 00 58 20 ed ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff 7f 0e
]]></artwork>
        </section>
        <section anchor="error-in-length-of-mac">
          <name>Error in length of MAC</name>
          <t>Invalid length of third element (Signature_or_MAC_2). The length of Signature_or_MAC_2 is given by the cipher suite and the MAC length is at least 8 bytes according to Section 9.3 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid PLAINTEXT_2 (7 bytes)
27 32 44 fa 5e fa 2e
]]></artwork>
        </section>
        <section anchor="error-in-elliptic-curve-encoding">
          <name>Error in elliptic curve encoding</name>
          <t>Invalid encoding of third element (G_X). Correct encoding is with leading zeros according to Section 3.7 of <xref target="I-D.ietf-lake-edhoc"/> and Section 7.1.1 of <xref target="RFC9053"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (36 bytes)
03 02 58 1f d9 69 77 25 d2 3a 68 8b 12 d1 c7 e0 10 8a 08 c9 f7 1a 85
a0 9c 20 81 49 76 ab 21 12 22 48 fc 0e
]]></artwork>
        </section>
      </section>
      <section anchor="non-deterministic-cbor">
        <name>Non-deterministic CBOR</name>
        <section anchor="unnecessary-long-encoding">
          <name>Unnecessary long encoding</name>
          <t>Invalid 16-bit encoding 19 00 03 of METHOD = 3. Correct is the deterministic encoding 03 according to Section 3.1 of <xref target="I-D.ietf-lake-edhoc"/> and Section 4.2.1 of <xref target="RFC8949"/>, which states that the arguments for integers, lengths in major types 2 through 5, and tags MUST be as short as possible.</t>
          <artwork><![CDATA[
Invalid message_1 (39 bytes)
19 00 03 02 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="indefinite-length-array-encoding">
          <name>Indefinite-length array encoding</name>
          <t>Invalid indefinite-length array encoding 9F 06 02 FF of SUITES_I = [6, 2]. Correct encoding is 82 06 02 according to Section 5.2.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
          <artwork><![CDATA[
Invalid message_1 (40 bytes)
03 9F 06 02 FF 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="non-lexicographic-order-of-map">
          <name>Non-lexicographic order of map</name>
          <t>Invalid encoding of the map ID_CRED_R in PLAINTEXT_2. Correct is the deterministic bytewise lexicographic order encoding according to Section 3.1 of <xref target="I-D.ietf-lake-edhoc"/> and Section 4.2.1 of <xref target="RFC8949"/>.</t>
          <artwork><![CDATA[
Invalid PLAINTEXT_2 (25 bytes)
27 A2 0A 46 6D 6F 72 64 6F 72 04 44 72 69 6E 67 48 fa 5e fa 2e bf 92
0b f3
]]></artwork>
        </section>
      </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>References</name>
      <references>
        <name>Normative 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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <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="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </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-56A" target="https://doi.org/10.6028/NIST.SP.800-56Ar3">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography</title>
            <author initials="E." surname="Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-56A Revision 3"/>
        </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>
    </references>
    <?line 3040?>

<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:
H4sIAAAAAAAAA9293XLcSLImeB9PEau6EDXLpIDAP62rz6FIqsRRqUpLqrqr
rKdNFgACYraSmdxEUhKPTHu3trY2Ns8wMxf7CnO1V3tmX2SfZN098I8A8k9U
1ZlqNpVEAoH48Z/PPdw9JpMJ+3DMHcZW09VMHfM3S5monC8yfn724udTli6S
ubyBL9KlzFaTqVplk5l8ryYrunFiBUzG8VJ9OGZsers85qvlXb4SlhVZgsml
ksf8SiV3y+nqnn18d8x/PHl5zv+6WL6fzt/xH5aLu1v2/uMxv5iv1HKuVpMz
fA1L5OqYT+fZguV38c00z6eL+er+Frpxcf7mOWPJIoXnj/kd9CZkt9Nj/h1P
5Jzf5YrL5VLe84NpxuVsxu9V/oQvlvxa5tf8Wi0V43y1SI7xC/iYL5arpcry
6u/7m+afcGeqblfXx1wwJu9W14vlMZtwPSM//Ot/W8I7r9RMzlO1xKfvlvqr
xrXFEvp5vpwmeb6Yw9/J4m6+Wt7DPR9VqvCKupHT2TF/t4DWjvLiyX9WxSNH
yeKmeuW/X1zP+euluvvX/8xfydWqaHM6n66mcgbd/vfNXvRv3Lgz/4AXHd0U
D5r78gpW9z2MFBZs2u7Eq/ZUlDfQy0+urk74ybMff/6t+frXCxx1/fobbBvm
gh79Z5nnUsazxX33/cmCv5nOFokcfn31Pb398uLqfGzYN9jm0Yqe+eflFHrQ
eN1s+v/+V8n/cvff/xO867//H7130hsu5supbL7iOaxqopqvmE1zefThLoGn
k3+e4v1H2ZKx+WIJEz79oICTOL+YnB3VzKbSa6BZ4DBgieZdl89PA+GJ4+Jj
4IbFx9ByyquhE1UfIzcqPkaW51ATp/Fi+UrhVSB3uXyngPOuV6vb/Pjp0wS+
O7pRT/WXWkCcPvv5kt/O5P07YF5aM85LzuD036T4F+cHpub0iD/DTs/ndD2V
K2jl5O4dF5ZwsAdXryehZU08/8Tci3QxPYK5fWpbR74lwqc/XVy9Obp6fVQ8
tHSa3btUQCM3ag6vAZnBYbr4azldTv46BdHwUt1PzvMV0NI0v4abVvwquVY3
IO9+yVEenU3zZKlWiv+4eCdBZF3f8NPl/e1q8W4pb6/v6T1AlFOV40KU432E
HXp0zB9d3aoEyIG/voMXJLoDRSehXx+mKMW482j9lJ3DlMnle5Ifhq9/POKn
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
c4nba3vHXNIG7L4xlzBRbO+YS+4rtnfMJYZRPXD22eZ+SrZ3zCXYG2zvmEse
eWyXIK7qkxY0A4rJQtYB2oRJBXwCcwlDBEMJ+gjThvzkIbeBwIB7YHZBm8IE
QMeBWW0H749CBi0gRaSErHwsHpX56PFU0XB31m7X7tczRj3jG/VssADPNkl2
TgH36XPfF4K675D7dWya04o8cyprX7dS3dWOgr8gb4pTKJiLcpfWqXPuLrbL
ubto59y1Uu4S4cpYZGngu04SRNm//ZQ7Y5mnkZQ7gPDIhALBZOAjJYHVHmXd
lLuLr5Zyh8dGDKTcXXy1lDtp/bFT7kq99G1S7tyINtgiQlVRsduKCnm/lLsS
8LM9AD8vAT/rAf41SgxWBFfKxsdjBxPKA4tFEZnkGb4XVCsoN1BcgKmVVRTU
SqmECFrlYEFl2GFQR/A4KMDAQ4XjhhjjDAxnEZ4CYoP+WGSkw7NoEROOgxHB
Z5gHWBH4AEODrgJ9ZhkVl4oYvBQmBNQH6EaAaQDwATJIqyhXYhmrkQwy8N4p
d21++OOl3O3FD1un3Jn4gRE/7JVyp1K2twEM/MAGDOCt+IERP/D9+IERP/D9
+IERP/At+GG7lDuDfTmScrcN2Kierh/eLuVuQLfyYfDHtoSlRvDHCPztaP6V
kuKPmnK3o6TYMeWuLSlYQ3PulXK3t6uMNTTnzpKCNTTnzpKCNTTnzpKCNTTn
NpJikEN3ybjbmFvZrkZkk1tZ21TbMePOhHP/SBl323Hrvhl3xK3MhHP3yrjb
lVuZCeduy63MhHO35VZmwrnbcisz4dxtuFW7Db59wl3TZdFNutM+i17SnWNI
utvAsbGTT2M8X8/ZKV/PGYvq8I2R7F1XCMavKyuybWHLzJOJn6gqNtp2vdQN
hQffW7bIRBREoQqzwHZkEoWR7ToiFcLzYz/zg1BV8cSb5OtJ63fL12vEqH/d
fD038pUfBa4f+fCFn22fr6dSy5ehVL4tQ1HNZyy9THquJ7wkSq0gc8M0dV3s
HLxWWZlw0jBJhIUx5KFnV++zlSmO3RMwl3Yaxo4MAiuK/DjJkiiGJalizV0V
KAsLaKcx9Fc6cQqLb1uxE4nAk0BFceD5lu1FoR16VpWnKYI09gMHmC0AgoDX
CD9IU8tTKstEAG8IZGg7MJTAjQMh69j9GBYl/p3y9Yxovw4g8sfy9TbDEmwP
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
7vz/AepyZ7o1dQEA

-->

</rfc>
