<?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.7.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-traces-09" category="info" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <front>
    <title>Traces of EDHOC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-traces-09"/>
    <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="2024" month="January" day="27"/>
    <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 sessions, with input, output, and intermediate processing results to simplify testing of implementations. The traces have been verified by two independent 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>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </li>
        </ul>
        <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>
          <t>EDHOC AEAD algorithm = AES-CCM-16-64-128</t>
        </li>
        <li>
          <t>EDHOC hash algorithm = SHA-256</t>
        </li>
        <li>
          <t>EDHOC MAC length in bytes (Static DH) = 8</t>
        </li>
        <li>
          <t>EDHOC key exchange algorithm (ECDH curve) = X25519</t>
        </li>
        <li>
          <t>EDHOC signature algorithm = EdDSA</t>
        </li>
        <li>
          <t>Application AEAD algorithm = AES-CCM-16-64-128</t>
        </li>
        <li>
          <t>Application hash algorithm = SHA-256</t>
        </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; C_R, 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; C_R, ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <artwork><![CDATA[
context_2 (CBOR Sequence) (293 bytes)
41 18 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) (296 bytes)
59 01 25 41 18 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'4118a11822822e4879f2a41b510c1f9b5820c6405c154c56
   7466ab1df20369500e540e9f14bd3a796a0652cae66c9061
   688d58f13081ee3081a1a003020102020462319ec4300506
   032b6570301d311b301906035504030c124544484f432052
   6f6f742045643235353139301e170d323230333136303832
   3433365a170d3239313233313233303030305a3022312030
   1e06035504030c174544484f4320526573706f6e64657220
   45643235353139302a300506032b6570032100a1db47b951
   84854ad12a0c1a354e418aace33aa0f2c662c00b3ac55de9
   2f9359300506032b6570034100b723bc01eab0928e8b2b6c
   98de19cc3823d46e7d6987b032478fecfaf14537a1af14cc
   8be829c6b73044101837eb4abc949565d86dce51cfae52ab
   82c152cb02',
 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) (299 bytes)
02 59 01 25 41 18 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)
86 2a 7e 5e f1 47 f9 a5 f4 c5 12 e1 b6 62 3c d6 6c d1 7a 72 72 07 2b
fe 5b 60 2f fe 30 7e e0 e9
]]></artwork>
        <artwork><![CDATA[
MAC_2 (CBOR Data Item) (34 bytes)
58 20 86 2a 7e 5e f1 47 f9 a5 f4 c5 12 e1 b6 62 3c d6 6c d1 7a 72 72
07 2b fe 5b 60 2f fe 30 7e e0 e9
]]></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'862a7e5ef147f9a5f4c512e1b6623cd66cd17a7272072bfe
   5b602ffe307ee0e9'
]
]]></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 86 2a 7e 5e f1 47 f9 a5 f4 c5 12 e1 b6
62 3c d6 6c d1 7a 72 72 07 2b fe 5b 60 2f fe 30 7e e0 e9
]]></artwork>
        <t>The Responder signs using the private authentication key SK_R</t>
        <artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (64 bytes)
c3 b5 bd 44 d1 e4 4a 08 5c 03 d3 ae de 4e 1e 6c 11 c5 72 a1 96 8c c3
62 9b 50 5f 98 c6 81 60 8d 3d 1d e7 93 d1 c4 0e b5 dd 5d 89 ac f1 96
6a ea 07 02 2b 48 cd c9 98 70 eb c4 03 74 e8 fa 6e 09
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (66 bytes)
58 40 c3 b5 bd 44 d1 e4 4a 08 5c 03 d3 ae de 4e 1e 6c 11 c5 72 a1 96
8c c3 62 9b 50 5f 98 c6 81 60 8d 3d 1d e7 93 d1 c4 0e b5 dd 5d 89 ac
f1 96 6a ea 07 02 2b 48 cd c9 98 70 eb c4 03 74 e8 fa 6e 09
]]></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 c3 b5 bd 44 d1
e4 4a 08 5c 03 d3 ae de 4e 1e 6c 11 c5 72 a1 96 8c c3 62 9b 50 5f 98
c6 81 60 8d 3d 1d e7 93 d1 c4 0e b5 dd 5d 89 ac f1 96 6a ea 07 02 2b
48 cd c9 98 70 eb c4 03 74 e8 fa 6e 09
]]></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 2f 05 45 9f 8d
35 8c 8d 12 27 5a c4 2c 5f 96 de d5 f1 3c c9 08 4e 5b 20 18 89 a4 5e
5a 60 a5 56 2d c1 18 61 9c 3d aa 2f d9 f4 c9 f4 d6 ed ad 10 9d d4 ed
f9 59 62 aa fb af 9a b3 f4 a1 f6 b9 8f
]]></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 2f 05 45 9f 8d 35 8c 8d 12 27 5a c4 2c 5f 96 de d5
f1 3c c9 08 4e 5b 20 18 89 a4 5e 5a 60 a5 56 2d c1 18 61 9c 3d aa 2f
d9 f4 c9 f4 d6 ed ad 10 9d d4 ed f9 59 62 aa fb af 9a b3 f4 a1 f6 b9
8f
]]></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 c3 b5 bd 44 d1 e4 4a 08 5c 03 d3 ae de 4e 1e 6c 11
c5 72 a1 96 8c c3 62 9b 50 5f 98 c6 81 60 8d 3d 1d e7 93 d1 c4 0e b5
dd 5d 89 ac f1 96 6a ea 07 02 2b 48 cd c9 98 70 eb c4 03 74 e8 fa 6e
09 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)
5b 7d f9 b4 f5 8f 24 0c e0 41 8e 48 19 1b 5f ff 3a 22 b5 ca 57 f6 69
b1 67 77 99 65 92 e9 28 bc
]]></artwork>
        <artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 5b 7d f9 b4 f5 8f 24 0c e0 41 8e 48 19 1b 5f ff 3a 22 b5 ca 57
f6 69 b1 67 77 99 65 92 e9 28 bc
]]></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 5b 7d f9 b4 f5 8f 24
0c e0 41 8e 48 19 1b 5f ff 3a 22 b5 ca 57 f6 69 b1 67 77 99 65 92 e9
28 bc 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 5b 7d f9 b4
f5 8f 24 0c e0 41 8e 48 19 1b 5f ff 3a 22 b5 ca 57 f6 69 b1 67 77 99
65 92 e9 28 bc 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'a11822822e48c24ab2fd7643c79f58205b7df9b4f58f240c
   e0418e48191b5fff3a22b5ca57f669b16777996592e928bc
   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 5b 7d f9
b4 f5 8f 24 0c e0 41 8e 48 19 1b 5f ff 3a 22 b5 ca 57 f6 69 b1 67 77
99 65 92 e9 28 bc 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)
39 b1 27 c1 30 12 9a fa 30 61 8c 75 13 29 e6 37 cc 37 34 27 0d 4b 01
25 84 45 a8 ee 02 da a3 bd
]]></artwork>
        <artwork><![CDATA[
MAC_3 (CBOR Data Item) (34 bytes)
58 20 39 b1 27 c1 30 12 9a fa 30 61 8c 75 13 29 e6 37 cc 37 34 27 0d 4b
01 25 84 45 a8 ee 02 da a3 bd
]]></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'58205b7df9b4f58f240ce0418e48191b5fff3a22b5ca57f6
   69b16777996592e928bc58f13081ee3081a1a00302010202
   0462319ea0300506032b6570301d311b301906035504030c
   124544484f4320526f6f742045643235353139301e170d32
   32303331363038323430305a170d32393132333132333030
   30305a30223120301e06035504030c174544484f4320496e
   69746961746f722045643235353139302a300506032b6570
   032100ed06a8ae61a829ba5fa54525c9d07f48dd44a302f4
   3e0f23d8cc20b73085141e300506032b6570034100521241
   d8b3a770996bcfc9b9ead4e7e0a1c0db353a3bdf2910b392
   75ae48b756015981850d27db6734e37f67212267dd05eeff
   27b9e7a813fa574b72a00b430b',
 h'39b127c130129afa30618c751329e637cc3734270d4b0125
   8445a8ee02daa3bd'
]
]]></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 5b 7d f9 b4 f5 8f 24 0c e0 41 8e 48 19 1b
5f ff 3a 22 b5 ca 57 f6 69 b1 67 77 99 65 92 e9 28 bc 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 39 b1 27 c1 30 12 9a fa 30 61 8c 75 13
29 e6 37 cc 37 34 27 0d 4b 01 25 84 45 a8 ee 02 da a3 bd
]]></artwork>
        <t>The Initiator signs using the private authentication key SK_I:</t>
        <artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (64 bytes)
96 e1 cd 5f ce ad fa c1 b5 af 81 94 43 f7 09 24 f5 71 99 55 95 7f d0
26 55 be b4 77 5e 1a 73 18 6a 0d 1d 3e a6 83 f0 8f 8d 03 dc ec b9 cf
15 4e 1c 6f 55 5a 1e 12 ca 11 8c e4 2b db a6 87 89 07
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (66 bytes)
58 40 96 e1 cd 5f ce ad fa c1 b5 af 81 94 43 f7 09 24 f5 71 99 55 95
7f d0 26 55 be b4 77 5e 1a 73 18 6a 0d 1d 3e a6 83 f0 8f 8d 03 dc ec
b9 cf 15 4e 1c 6f 55 5a 1e 12 ca 11 8c e4 2b db a6 87 89 07
]]></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 96 e1 cd 5f ce ad fa
c1 b5 af 81 94 43 f7 09 24 f5 71 99 55 95 7f d0 26 55 be b4 77 5e 1a
73 18 6a 0d 1d 3e a6 83 f0 8f 8d 03 dc ec b9 cf 15 4e 1c 6f 55 5a 1e
12 ca 11 8c e4 2b db a6 87 89 07
]]></artwork>
        <t>The Initiator constructs the associated data for message_3:</t>
        <artwork><![CDATA[
A_3 =
[
 "Encrypt0",
 h'',
 h'5b7df9b4f58f240ce0418e48191b5fff3a22b5ca57f669b1
   6777996592e928bc'
]
]]></artwork>
        <artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 5b 7d f9 b4 f5 8f 24 0c e0 41
8e 48 19 1b 5f ff 3a 22 b5 ca 57 f6 69 b1 67 77 99 65 92 e9 28 bc
]]></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'5b7df9b4f58f240ce0418e48191b5fff3a22b5ca57f669b1
   6777996592e928bc',
 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 5b 7d f9 b4 f5 8f 24 0c e0 41 8e 48 19 1b 5f ff 3a 22 b5 ca
57 f6 69 b1 67 77 99 65 92 e9 28 bc 10
]]></artwork>
        <artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
da 19 5e 5f 64 8a c6 3b 0e 8f b0 c4 55 20 51 39
]]></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'5b7df9b4f58f240ce0418e48191b5fff3a22b5ca57f669b1
   6777996592e928bc',
 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 5b 7d f9 b4 f5 8f 24 0c e0 41 8e 48 19 1b 5f ff 3a 22 b5 ca
57 f6 69 b1 67 77 99 65 92 e9 28 bc 0d
]]></artwork>
        <artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
38 d8 c6 4c 56 25 5a ff a4 49 f4 be d7
]]></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)
25 c3 45 88 4a aa eb 22 c5 27 f9 b1 d2 b6 78 72 07 e0 16 3c 69 b6 2a
0d 43 92 81 50 42 72 03 c3 16 74 e4 51 4e a6 e3 83 b5 66 eb 29 76 3e
fe b0 af a5 18 77 6a e1 c6 5f 85 6d 84 bf 32 af 3a 78 36 97 04 66 dc
b7 1f 76 74 5d 39 d3 02 5e 77 03 e0 c0 32 eb ad 51 94 7c
]]></artwork>
        <t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>
        <artwork><![CDATA[
message_3 (CBOR Sequence) (90 bytes)
58 58 25 c3 45 88 4a aa eb 22 c5 27 f9 b1 d2 b6 78 72 07 e0 16 3c 69
b6 2a 0d 43 92 81 50 42 72 03 c3 16 74 e4 51 4e a6 e3 83 b5 66 eb 29
76 3e fe b0 af a5 18 77 6a e1 c6 5f 85 6d 84 bf 32 af 3a 78 36 97 04
66 dc b7 1f 76 74 5d 39 d3 02 5e 77 03 e0 c0 32 eb ad 51 94 7c
]]></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 5b 7d f9 b4 f5 8f 24 0c e0 41 8e 48 19 1b 5f ff 3a 22 b5 ca 57
f6 69 b1 67 77 99 65 92 e9 28 bc a1 18 22 82 2e 48 c2 4a b2 fd 76 43
c7 9f 58 40 96 e1 cd 5f ce ad fa c1 b5 af 81 94 43 f7 09 24 f5 71 99
55 95 7f d0 26 55 be b4 77 5e 1a 73 18 6a 0d 1d 3e a6 83 f0 8f 8d 03
dc ec b9 cf 15 4e 1c 6f 55 5a 1e 12 ca 11 8c e4 2b db a6 87 89 07 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)
0e b8 68 f2 63 cf 35 55 dc cd 39 6d d8 de c2 9d 37 50 d5 99 be 42 d5
a4 1a 5a 37 c8 96 f2 94 ac
]]></artwork>
        <artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 0e b8 68 f2 63 cf 35 55 dc cd 39 6d d8 de c2 9d 37 50 d5 99 be
42 d5 a4 1a 5a 37 c8 96 f2 94 ac
]]></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'0eb868f263cf3555dccd396dd8dec29d3750d599be42d5a4
   1a5a37c896f294ac'
]
]]></artwork>
        <artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 0e b8 68 f2 63 cf 35 55 dc cd
39 6d d8 de c2 9d 37 50 d5 99 be 42 d5 a4 1a 5a 37 c8 96 f2 94 ac
]]></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'0eb868f263cf3555dccd396dd8dec29d3750d599be42d5a4
   1a5a37c896f294ac',
 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 0e b8 68 f2 63 cf 35 55 dc cd 39 6d d8 de c2 9d 37 50 d5 99
be 42 d5 a4 1a 5a 37 c8 96 f2 94 ac 10
]]></artwork>
        <artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
df 8c b5 86 1e 1f df ed d3 b2 30 15 a3 9d 1e 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_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'0eb868f263cf3555dccd396dd8dec29d3750d599be42d5a4
   1a5a37c896f294ac',
 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 0e b8 68 f2 63 cf 35 55 dc cd 39 6d d8 de c2 9d 37 50 d5 99
be 42 d5 a4 1a 5a 37 c8 96 f2 94 ac 0d
]]></artwork>
        <artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
12 8e c6 58 d9 70 d7 38 0f 74 fc 6c 27
]]></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)
4f 0e de e3 66 e5 c8 83
]]></artwork>
        <t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>
        <artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 4f 0e de e3 66 e5 c8 83
]]></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'0eb868f263cf3555dccd396dd8dec29d3750d599be42d5a4
   1a5a37c896f294ac',
 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 0e b8 68 f2 63 cf 35 55 dc cd 39 6d d8 de c2 9d 37 50 d5 99
be 42 d5 a4 1a 5a 37 c8 96 f2 94 ac 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
b7 44 cb 7d 8a 87 cc 04 47 c3 35 0e 16 5b 25 0d ab 12 ec 45 33 25 ab
b9 22 b3 03 07 e5 c3 68 f0
]]></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)
2a ae c8 fc 4a b3 bc 32 95 de f6 b5 51 05 1a 2f a5 61 42 4d b3 01 fa
84 f6 42 f5 57 8a 6d f5 1a
]]></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)
1e 1c 6b ea c3 a8 a1 ca c4 35 de 7e 2f 9a e7 ff
]]></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)
ce 7a b8 44 c0 10 6d 73
]]></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)
da 6e ac d9 a9 85 f4 fb a9 ae c2 a9 29 90 22 97 6b 25 b1 4e 89 fa 15
97 94 f2 8d 82 fa f2 da ad
]]></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 after KeyUpdate (Raw Value) (32 bytes)
00 14 d2 52 5e e0 d8 e2 13 ea 59 08 02 8e 9a 1c e9 a0 1c 30 54 6f 09
30 c0 44 d3 8d b5 36 2c 05
]]></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)
ee 0f f5 42 c4 7e b0 e0 9c 69 30 76 49 bd bb e5
]]></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)
80 ce de 2a 1e 5a ab 48
]]></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>
          <t>EDHOC AEAD algorithm = AES-CCM-16-64-128</t>
        </li>
        <li>
          <t>EDHOC hash algorithm = SHA-256</t>
        </li>
        <li>
          <t>EDHOC MAC length in bytes (Static DH) = 8</t>
        </li>
        <li>
          <t>EDHOC key exchange algorithm (ECDH curve) = P-256</t>
        </li>
        <li>
          <t>EDHOC signature algorithm = ES256</t>
        </li>
        <li>
          <t>Application AEAD algorithm = AES-CCM-16-64-128</t>
        </li>
        <li>
          <t>Application hash algorithm = SHA-256</t>
        </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; C_R, 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; C_R, ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <artwork><![CDATA[
context_2 (CBOR Sequence) (134 bytes)
27 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) (136 bytes)
58 86 27 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'27a10441325820356efd53771425e008f3fe3a86c83ff4c6
   b16e57028ff39d5236c182b202084ba2026b6578616d706c
   652e65647508a101a501020241322001215820bbc3496052
   6ea4d32e940cad2a234148ddc21791a12afbcbac93622046
   dd44f02258204519e257236b2a0ce2023f0931f1f386ca7a
   fda64fcde0108c224c51eabf6072',
 8
)
]]></artwork>
        <t>where the last value is the EDHOC MAC length in bytes.</t>
        <artwork><![CDATA[
info for MAC_2 (CBOR Sequence) (138 bytes)
02 58 86 27 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)
09 43 30 5c 89 9f 5c 54
]]></artwork>
        <artwork><![CDATA[
MAC_2 (CBOR Data Item) (9 bytes)
48 09 43 30 5c 89 9f 5c 54
]]></artwork>
        <t>Since METHOD = 3, Signature_or_MAC_2 is MAC_2:</t>
        <artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (8 bytes)
09 43 30 5c 89 9f 5c 54
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (9 bytes)
48 09 43 30 5c 89 9f 5c 54
]]></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 09 43 30 5c 89 9f 5c 54
]]></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 ee f9 e0 e7 e1 88 6f cd
]]></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 ee f9 e0 e7 e1 88 6f cd
]]></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 09 43 30 5c 89 9f 5c 54 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)
ad af 67 a7 8a 4b cc 91 e0 18 f8 88 27 62 a7 22 00 0b 25 07 03 9d f0
bc 1b bf 0c 16 1b b3 15 5c
]]></artwork>
        <artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 ad af 67 a7 8a 4b cc 91 e0 18 f8 88 27 62 a7 22 00 0b 25 07 03
9d f0 bc 1b bf 0c 16 1b b3 15 5c
]]></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'adaf67a78a4bcc91e018f8882762a722000b2507039df0bc
   1bbf0c161bb3155c',
 32
)
]]></artwork>
        <artwork><![CDATA[
info for SALT_4e3m (CBOR Sequence) (37 bytes)
05 58 20 ad af 67 a7 8a 4b cc 91 e0 18 f8 88 27 62 a7 22 00 0b 25 07
03 9d f0 bc 1b bf 0c 16 1b b3 15 5c 18 20
]]></artwork>
        <artwork><![CDATA[
SALT_4e3m (Raw Value) (32 bytes)
cf dd f9 51 5a 7e 46 e7 b4 db ff 31 cb d5 6c d0 4b a3 32 25 0d e9 ea
5d e1 ca f9 f6 d1 39 14 a7
]]></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)
81 cc 8a 29 8e 35 70 44 e3 c4 66 bb 5c 0a 1e 50 7e 01 d4 92 38 ae ba
13 8d f9 46 35 40 7c 0f f7
]]></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 ad af 67 a7 8a 4b cc 91 e0 18 f8 88 27 62 a7 22 00
0b 25 07 03 9d f0 bc 1b bf 0c 16 1b b3 15 5c 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 ad af 67 a7 8a 4b cc 91 e0 18 f8 88 27 62 a7
22 00 0b 25 07 03 9d f0 bc 1b bf 0c 16 1b b3 15 5c 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'a104412b5820adaf67a78a4bcc91e018f8882762a722000b
   2507039df0bc1bbf0c161bb3155ca2027734322d35302d33
   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 ad af 67 a7 8a 4b cc 91 e0 18 f8 88 27 62
a7 22 00 0b 25 07 03 9d f0 bc 1b bf 0c 16 1b b3 15 5c 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)
62 3c 91 df 41 e3 4c 2f
]]></artwork>
        <artwork><![CDATA[
MAC_3 (CBOR Data Item) (9 bytes)
48 62 3c 91 df 41 e3 4c 2f
]]></artwork>
        <t>Since METHOD = 3, Signature_or_MAC_3 is MAC_3:</t>
        <artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (8 bytes)
62 3c 91 df 41 e3 4c 2f
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (9 bytes)
48 62 3c 91 df 41 e3 4c 2f
]]></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 62 3c 91 df 41 e3 4c 2f
]]></artwork>
        <t>The Initiator constructs the associated data for message_3:</t>
        <artwork><![CDATA[
A_3 =
[
 "Encrypt0",
 h'',
 h'adaf67a78a4bcc91e018f8882762a722000b2507039df0bc
   1bbf0c161bb3155c'
]
]]></artwork>
        <artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 ad af 67 a7 8a 4b cc 91 e0 18
f8 88 27 62 a7 22 00 0b 25 07 03 9d f0 bc 1b bf 0c 16 1b b3 15 5c
]]></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'adaf67a78a4bcc91e018f8882762a722000b2507039df0bc
   1bbf0c161bb3155c',
 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 ad af 67 a7 8a 4b cc 91 e0 18 f8 88 27 62 a7 22 00 0b 25 07
03 9d f0 bc 1b bf 0c 16 1b b3 15 5c 10
]]></artwork>
        <artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
8e 7a 30 04 20 00 f7 90 0e 81 74 13 1f 75 f3 ed
]]></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'adaf67a78a4bcc91e018f8882762a722000b2507039df0bc
   1bbf0c161bb3155c',
 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 ad af 67 a7 8a 4b cc 91 e0 18 f8 88 27 62 a7 22 00 0b 25 07
03 9d f0 bc 1b bf 0c 16 1b b3 15 5c 0d
]]></artwork>
        <artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
6d 83 00 c1 e2 3b 56 15 3a e7 0e e4 57
]]></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)
e5 62 09 7b c4 17 dd 59 19 48 5a c7 89 1f fd 90 a9 fc
]]></artwork>
        <t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>
        <artwork><![CDATA[
message_3 (CBOR Sequence) (19 bytes)
52 e5 62 09 7b c4 17 dd 59 19 48 5a c7 89 1f fd 90 a9 fc
]]></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 ad af 67 a7 8a 4b cc 91 e0 18 f8 88 27 62 a7 22 00 0b 25 07 03
9d f0 bc 1b bf 0c 16 1b b3 15 5c 2b 48 62 3c 91 df 41 e3 4c 2f 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)
c9 02 b1 e3 a4 32 6c 93 c5 55 1f 5f 3a a6 c5 ec c0 24 68 06 76 56 12
e5 2b 5d 99 e6 05 9d 6b 6e
]]></artwork>
        <artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 c9 02 b1 e3 a4 32 6c 93 c5 55 1f 5f 3a a6 c5 ec c0 24 68 06 76
56 12 e5 2b 5d 99 e6 05 9d 6b 6e
]]></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'c902b1e3a4326c93c5551f5f3aa6c5ecc0246806765612e5
   2b5d99e6059d6b6e'
]
]]></artwork>
        <artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 c9 02 b1 e3 a4 32 6c 93 c5 55
1f 5f 3a a6 c5 ec c0 24 68 06 76 56 12 e5 2b 5d 99 e6 05 9d 6b 6e
]]></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'c902b1e3a4326c93c5551f5f3aa6c5ecc0246806765612e5
   2b5d99e6059d6b6e',
 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 c9 02 b1 e3 a4 32 6c 93 c5 55 1f 5f 3a a6 c5 ec c0 24 68 06
76 56 12 e5 2b 5d 99 e6 05 9d 6b 6e 10
]]></artwork>
        <artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
d3 c7 78 72 b6 ee b5 08 91 1b db d3 08 b2 e6 a0
]]></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'c902b1e3a4326c93c5551f5f3aa6c5ecc0246806765612e5
   2b5d99e6059d6b6e',
 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 c9 02 b1 e3 a4 32 6c 93 c5 55 1f 5f 3a a6 c5 ec c0 24 68 06
76 56 12 e5 2b 5d 99 e6 05 9d 6b 6e 0d
]]></artwork>
        <artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
04 ff 0f 44 45 6e 96 e2 17 85 3c 36 01
]]></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)
28 c9 66 b7 ca 30 4f 83
]]></artwork>
        <t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>
        <artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 28 c9 66 b7 ca 30 4f 83
]]></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'c902b1e3a4326c93c5551f5f3aa6c5ecc0246806765612e5
   2b5d99e6059d6b6e',
 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 c9 02 b1 e3 a4 32 6c 93 c5 55 1f 5f 3a a6 c5 ec c0 24 68 06
76 56 12 e5 2b 5d 99 e6 05 9d 6b 6e 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
2c 71 af c1 a9 33 8a 94 0b b3 52 9c a7 34 b8 86 f3 0d 1a ba 0b 4d c5
1b ee ae ab df ea 9e cb f8
]]></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)
e1 4d 06 69 9c ee 24 8c 5a 04 bf 92 27 bb cd 4c e3 94 de 7d cb 56 db
43 55 54 74 17 1e 64 46 db
]]></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)
f9 86 8f 6a 3a ca 78 a0 5d 14 85 b3 50 30 b1 62
]]></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)
ad a2 4c 7d bf c8 5e eb
]]></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)
f9 79 53 77 43 fe 0b d6 b9 b1 41 dd bd 79 65 6c 52 e6 dc 7c 50 ad 80
77 54 d7 4d 07 e8 7d 0d 16
]]></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 after KeyUpdate (Raw Value) (32 bytes)
00 fc f7 db 9b 2e ad 73 82 4e 7e 83 03 63 c8 05 c2 96 f9 02 83 0f ac
23 d8 6c 35 9c 75 2f 0f 17
]]></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)
49 f7 2f ac 02 b4 65 8b da 21 e2 da c6 6f c3 74
]]></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)
dd 8b 24 f2 aa 9b 01 1a
]]></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 check for all-zero output 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 are required to 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>
    </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 anchor="sec-normative-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="22" month="January" year="2024"/>
            <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-23"/>
        </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 anchor="sec-informative-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 3026?>

<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:
H4sIAAAAAAAAA929W3McSbIm9h6/IsR+ILlCoTMj8gqbnnNAABxi2eymAPZM
t50do0VmRhI1LFRBlQVeDo16k8lkMv0GaR/0F/ZJTzqrP6JfInePvN8qq4pk
99keDlDIyoyMi18+93D3mM1m7N0Jl4xt5puFPuGv1irWGV+l/OL82c9nLFnF
S3ULXyRrlW5mc71JZwv1Vs82dOPMCpmKorV+d8LY/G59wjfr+2wjLCu0BFNr
rU74tY7v1/PNR/b+zQn/8fT5Bf/bav12vnzD/7Je3d+xt+9P+OVyo9dLvZmd
42tYrDYnfL5MVyy7j27nWTZfLTcf76AblxevnjIWrxJ4/oTfQ28Cdjc/4d/x
WC35faa5Wq/VR/5onnK1WPCPOnvMV2t+o7IbfqPXmnG+WcUn+AV8zFbrzVqn
Wfn3x9v6n3Bnou82NydcMKbuNzer9QmbcTMjf/m3/7KGd17rhVomeo1P36/N
V7VrqzX082I9j7NstYS/49X9crP+CPe814nGK/pWzRcn/M0KWjvO8if/WeeP
HMer2/KV/3F1s+Qv1/r+3/4P/kJtNnmb8+V8M1cL6PZ/rPeie+PkzvwDXnR8
mz/Y35cXsLpvYaSwYPNmJ140p6K4gV5+en19yk+f/Pjzb/XXv1zhqKvX32Lb
MBf06D+rLFMqWqw+tt8fr/ir+WIVq+HXl9/T268ury/Ghn2LbR5v6Jl/Xs+h
B7XXLeb/739W/K/3//V/h3f91/+l8056w+VyPVf1VzyFVY11/RWLeaaO393H
8HT8z3O8/zhdM7ZcrWHC5+80cBLnl7Pz44rZdHIDNAscBixRv+vq6ZkvXHGS
f/SdIP8YWLK4Gsiw/Bg6Yf4xtFxJTZxFq/ULjVeB3NX6jQbOu9ls7rKT77+P
4bvjW/29+dIIiLMnP1/xu4X6+AaYl9aM84IzOP03y3/j/MDUnB3zJ9jp5ZKu
J2oDrZzev+HCEhJ7cP1yFljWzPVO+3uRrObHMLff29axZ4ng+58ur18dX788
zh9ay3r3rjTQyK1ewmtAZnCYLv5Szdezv81BNDzXH2cX2QZoaZ7dwE0bfh3f
6FuQd79kKI/O51m81hvNf1y9USCybm752frj3Wb1Zq3ubj7Se4Ao5zrDhSjG
+wA79OCEP7i+0zGQA395Dy+ITQfyTkK/3s1RinH5YPuUXcCUqfVbkh89X/94
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
6eIe8ND/D6CsmQWgcwEA

-->

</rfc>
