<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.6 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY I-D.ietf-lake-edhoc SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-edhoc.xml">
<!ENTITY RFC7748 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7748.xml">
<!ENTITY RFC8032 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8032.xml">
<!ENTITY RFC8392 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml">
<!ENTITY RFC8949 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc tocdepth="2"?>

<rfc ipr="trust200902" docName="draft-ietf-lake-traces-02" category="info">

  <front>
    <title>Traces of EDHOC</title>

    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization abbrev="Ericsson">Ericsson</organization>
      <address>
        <postal>
          <street>SE-164 40 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J" surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization abbrev="Ericsson">Ericsson</organization>
      <address>
        <postal>
          <street>SE-164 40 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="M" surname="Serafin" fullname="Marek Serafin">
      <organization abbrev="ASSA ABLOY">ASSA ABLOY</organization>
      <address>
        <postal>
          <street>32-080 Zabierzów</street>
          <country>Poland</country>
        </postal>
        <email>marek.serafin@assaabloy.com</email>
      </address>
    </author>
    <author initials="M" surname="Tiloca" fullname="Marco Tiloca">
      <organization abbrev="RISE">RISE</organization>
      <address>
        <postal>
          <street>SE-164 40 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>

    <date year="2022" month="July" day="25"/>

    
    
    

    <abstract>


<t>This document contains some example traces of Ephemeral Diffie-Hellman Over COSE (EDHOC).</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>EDHOC <xref target="I-D.ietf-lake-edhoc"/> is a lightweight authenticated key exchange protocol designed for highly constrained settings. This document contains annotated traces of EDHOC protocol runs, with input, output and intermediate processing results to simplify testing of implementations.</t>

<t>The document contains two traces:</t>

<t><list style="symbols">
  <t>Section 3. 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>
  <t>Section 4. Authentication with static Diffie-Hellman keys identified by short key identifiers labelling CWT Claim Sets (CCSs) <xref target="RFC8392"/>. The endpoints use NIST P-256 (FIPS PUB 186-4) for both ephemeral-ephemeral and static-ephemeral Diffie-Hellman key exchange. This trace also illustrates the cipher suite negotiation, and provides an example of low protocol overhead, with messages sizes of (39, 45, 19) bytes.</t>
</list></t>

<t>The traces in this draft are valid for version -14 and -15 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>Editor’s note: update reference to test vectors below:</t>

<t>The test vector for trace 2 can be found at: https://github.com/lake-wg/edhoc/tree/master/test-vectors-15/</t>

</section>
<section anchor="setup" title="Setup">

<t>EDHOC is run between an Initiator (I) and a Responder (R). The private/public key pairs and credentials of I and R required to produce the protocol messages are shown in the traces when needed for the calculations.</t>

<t>EDHOC messages and intermediate results are encoded in CBOR <xref target="RFC8949"/> and can therefore be displayed in CBOR diagnostic notation using, e.g., the CBOR playground <xref target="CborMe"/>, which makes them easy to parse for humans.</t>

<t>NOTE 1. The same name is used for hexadecimal byte strings and their CBOR encodings. The traces contain both the raw byte strings and the corresponding CBOR encoded data items.</t>

<t>NOTE 2. If not clear from the context, remember that CBOR sequences and CBOR arrays assume CBOR encoded data items as elements.</t>

<t>NOTE 3. When the protocol transporting EDHOC messages does not inherently provide correlation across all messages, like CoAP, then some messages typically are prepended with connection identifiers and potentially a message_1 indicator (see Section 3.4.1 and Appendix A.3 of <xref target="I-D.ietf-lake-edhoc"/>). Those bytes are not included in the traces in this document.</t>

</section>
<section anchor="authentication-with-signatures-x509-certificates-identified-by-x5t" title="Authentication with signatures, X.509 certificates identified by ‘x5t’">

<t>In this example the Initiator (I) and Responder (R) are authenticated with digital signatures (METHOD = 0). Both I and R support cipher suite 0, which determines the algorithms:</t>

<t><list style="symbols">
  <t>EDHOC AEAD algorithm = AES-CCM-16-64-128</t>
  <t>EDHOC hash algorithm = SHA-256</t>
  <t>EDHOC MAC length in bytes (Static DH) = 8</t>
  <t>EDHOC key exchange algorithm (ECDH curve) = X25519</t>
  <t>EDHOC signature algorithm = EdDSA</t>
  <t>Application AEAD algorithm = AES-CCM-16-64-128</t>
  <t>Application hash algorithm = SHA-256</t>
</list></t>

<t>The public keys are represented with X.509 certificates identified by the COSE header parameter ‘x5t’.</t>

<section anchor="message1" title="message_1">

<t>Both endpoints are authenticated with signatures, i.e. METHOD = 0:</t>

<figure><artwork align="left"><![CDATA[
METHOD (CBOR Data Item) (1 bytes)
00
]]></artwork></figure>

<t>I selects cipher suite 0. A single cipher suite is encoded as an int:</t>

<figure><artwork><![CDATA[
SUITES_I (CBOR Data Item) (1 byte)
00
]]></artwork></figure>

<t>I creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>

<figure><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></figure>

<figure><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></figure>
<figure><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></figure>

<t>I selects its connection identifier C_I to be the byte string 0x2d, which since it is represented by the 1-byte CBOR int -14 is encoded as 0x2d:</t>

<figure><artwork><![CDATA[
C_I (Raw Value) (Connection identifier chosen by I) (1 bytes)
2d
]]></artwork></figure>
<figure><artwork><![CDATA[
C_I (CBOR Data Item) (Connection identifier chosen by I) (1 bytes)
2d
]]></artwork></figure>

<t>No external authorization data:</t>

<figure><artwork><![CDATA[
EAD_1 (CBOR Sequence) (0 bytes)
]]></artwork></figure>

<t>I constructs message_1:</t>

<figure><artwork><![CDATA[
message_1 =
(
 0,
 0,
 h'31F82C7B5B9CBBF0F194D913CC12EF1532D328EF32632A4881A1C0701E237F04',
 -14
)
]]></artwork></figure>

<figure><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></figure>

</section>
<section anchor="message2" title="message_2">

<t>R supports the most preferred and selected cipher suite 0, so SUITES_I is acceptable.</t>

<t>R creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>

<figure><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></figure>
<figure><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></figure>
<figure><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></figure>

<t>R selects its connection identifier C_R to be the byte string 0x18, which since it is not represented as a 1-byte CBOR int is encoded as h’18’ = 0x4118:</t>

<figure><artwork><![CDATA[
C_R (Raw Value) (Connection identifier chosen by R) (int)
18
]]></artwork></figure>
<figure><artwork><![CDATA[
C_R (CBOR Data Item) (Connection identifier chosen by R) (1 bytes)
41 18
]]></artwork></figure>

<t>The transcript hash TH_2 is calculated using the EDHOC hash algorithm:</t>

<t>TH_2 = H( G_Y, C_R, H(message_1) )</t>

<figure><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></figure>

<figure><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></figure>

<t>The input to calculate TH_2 is the CBOR sequence:</t>

<t>G_Y, C_R, H(message_1)</t>

<figure><artwork><![CDATA[
Input to calculate TH_2 (CBOR Sequence) (70 bytes)
58 20 dc 88 d2 d5 1d a5 ed 67 fc 46
16 35 6b c8 ca 74 ef 9e be 8b 38 7e 62 3a 36 0b a4 80 b9 b2 9d 1c 41 18
58 20 c1 65 d6 a9 9d 1b ca fa ac 8d bf 2b 35 2a 6f 7d 71 a3 0b 43 9c
9d 64 d3 49 a2 38 48 03 8e d1 6b
]]></artwork></figure>

<figure><artwork><![CDATA[
TH_2 (Raw Value) (32 bytes)
3a b1 17 00 84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99 50 fd 62
48 84 f7 f5 7c d9 8b 07
]]></artwork></figure>

<figure><artwork><![CDATA[
TH_2 (CBOR Data Item) (34 bytes)
58 20 3a b1 17 00 84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99 50
fd 62 48 84 f7 f5 7c d9 8b 07
]]></artwork></figure>

<t>PRK_2e is specified in Section 4.1.1.1 of <xref 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>

<figure><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></figure>

<t>Then, PRK_2e is calculated using Extract() determined by the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
PRK_2e = Extract( salt, G_XY ) =
       = HMAC-SHA-256( salt, G_XY )
]]></artwork></figure>

<t>where salt is the zero-length byte string:</t>

<figure><artwork><![CDATA[
salt (Raw Value) (0 bytes)
]]></artwork></figure>

<figure><artwork><![CDATA[
PRK_2e (Raw Value) (32 bytes)
c5 76 10 5d 95 b4 d8 c1 8e 8f 65 5f 54 68 80 a8 54 f2 da 10 6c e5 a3
a0 2d 8b 3e de 7b aa bc a6
]]></artwork></figure>

<t>Since METHOD = 0, R authenticates using signatures. Since the selected cipher suite is 0, the EDHOC signature algorithm is EdDSA.</t>

<t>R’s signature key pair using EdDSA:</t>

<figure><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></figure>
<figure><artwork><![CDATA[
Responders's public authentication key
PK_R (Raw Value) (32 bytes)
a1 db 47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62
c0 0b 3a c5 5d e9 2f 93 59
]]></artwork></figure>

<t>PRK_3e2m is specified in Section 4.1.1.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>Since R authenticates with signatures PRK_3e2m = PRK_2e.</t>

<figure><artwork><![CDATA[
PRK_3e2m (Raw Value) (32 bytes)
c5 76 10 5d 95 b4 d8 c1 8e 8f 65 5f 54 68 80 a8 54 f2 da 10 6c e5 a3
a0 2d 8b 3e de 7b aa bc a6
]]></artwork></figure>

<t>R constructs the remaining input needed to calculate MAC_2:</t>

<t>MAC_2 = EDHOC-KDF( PRK_3e2m, 2, context_2, mac_length_2 )</t>

<t>context_2 = « ID_CRED_R, TH_2, CRED_R, ? EAD_2 »</t>

<t>CRED_R is identified by a 64-bit hash:</t>

<figure><artwork><![CDATA[
ID_CRED_R =
{
  34 : [-15, h'79F2A41B510C1F9B']
}
]]></artwork></figure>

<t>where the COSE header value 34 (‘x5t’) indicates a hash of an X.509 certficate,
and the COSE algorithm -15 indicates the hash algorithm SHA-256 truncated to 64 bits.</t>

<t>ID_CRED_R (CBOR Data Item) (14 bytes)
a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b</t>

<t>CRED_R is a CBOR byte string of the DER encoding of the X.509 certificate in <xref target="resp-cer"/>:</t>

<figure><artwork><![CDATA[
CRED_R (Raw Value) (241 bytes)
3081EE3081A1A003020102020462319EC4300506032B6570301D311B301906035504
030C124544484F4320526F6F742045643235353139301E170D323230333136303832
3433365A170D3239313233313233303030305A30223120301E06035504030C174544
484F4320526573706F6E6465722045643235353139302A300506032B6570032100A1
DB47B95184854AD12A0C1A354E418AACE33AA0F2C662C00B3AC55DE92F9359300506
032B6570034100B723BC01EAB0928E8B2B6C98DE19CC3823D46E7D6987B032478FEC
FAF14537A1AF14CC8BE829C6B73044101837EB4ABC949565D86DCE51CFAE52AB82C1
52CB02
]]></artwork></figure>

<figure><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></figure>

<t>No external authorization data:</t>

<figure><artwork><![CDATA[
EAD_2 (CBOR Sequence) (0 bytes)
]]></artwork></figure>

<t>context_2 = « ID_CRED_R, TH_2, CRED_R, ? EAD_2 »</t>

<figure><artwork><![CDATA[
context_2 (CBOR Sequence) (291 bytes)
a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 20 3a b1 17 00 84 1f ce 19
3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99 50 fd 62 48 84 f7 f5 7c d9 8b 07
58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05 06 03 2b
65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f 6f
74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32 34 33
36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20 30 1e 06
03 55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f 6e 64 65 72 20 45 64
32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 a1 db 47 b9 51 84 85
4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62 c0 0b 3a c5 5d e9 2f 93
59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc 01 ea b0 92 8e 8b 2b 6c 98 de
19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f ec fa f1 45 37 a1 af 14 cc 8b e8
29 c6 b7 30 44 10 18 37 eb 4a bc 94 95 65 d8 6d ce 51 cf ae 52 ab 82 c1
52 cb 02
]]></artwork></figure>

<figure><artwork><![CDATA[
context_2 (CBOR byte string) (294 bytes)
59 01 23 a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 20 3a b1 17 00 84
1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99 50 fd 62 48 84 f7 f5 7c
d9 8b 07 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05
06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20
52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38
32 34 33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20
30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f 6e 64 65 72
20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 a1 db 47 b9
51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62 c0 0b 3a c5 5d
e9 2f 93 59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc 01 ea b0 92 8e 8b 2b
6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f ec fa f1 45 37 a1 af 14
cc 8b e8 29 c6 b7 30 44 10 18 37 eb 4a bc 94 95 65 d8 6d ce 51 cf ae 52
ab 82 c1 52 cb 02
]]></artwork></figure>

<t>MAC_2 is computed through Expand() using the EDHOC hash algorithm, see Section 4.1.2 of <xref 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>

<figure><artwork><![CDATA[
info =
(
 2,
 h'a11822822e4879f2a41b510c1f9b58203ab11700841fce19
   3c323911edb317b046dcf24b9950fd624884f7f57cd98b07
   58f13081ee3081a1a003020102020462319ec4300506032b
   6570301d311b301906035504030c124544484f4320526f6f
   742045643235353139301e170d3232303331363038323433
   365a170d3239313233313233303030305a30223120301e06
   035504030c174544484f4320526573706f6e646572204564
   3235353139302a300506032b6570032100a1db47b9518485
   4ad12a0c1a354e418aace33aa0f2c662c00b3ac55de92f93
   59300506032b6570034100b723bc01eab0928e8b2b6c98de
   19cc3823d46e7d6987b032478fecfaf14537a1af14cc8be8
   29c6b73044101837eb4abc949565d86dce51cfae52ab82c1
   52cb02',
 32
)
]]></artwork></figure>

<t>where the last value is the output size of the EDHOC hash algorithm.</t>

<figure><artwork><![CDATA[
info for MAC_2 (CBOR Sequence) (297 bytes)
02590123A11822822E4879F2A41B510C1F9B58203AB11700841FCE193C323911EDB3
17B046DCF24B9950FD624884F7F57CD98B0758F13081EE3081A1A003020102020462
319EC4300506032B6570301D311B301906035504030C124544484F4320526F6F7420
45643235353139301E170D3232303331363038323433365A170D3239313233313233
303030305A30223120301E06035504030C174544484F4320526573706F6E64657220
45643235353139302A300506032B6570032100A1DB47B95184854AD12A0C1A354E41
8AACE33AA0F2C662C00B3AC55DE92F9359300506032B6570034100B723BC01EAB092
8E8B2B6C98DE19CC3823D46E7D6987B032478FECFAF14537A1AF14CC8BE829C6B730
44101837EB4ABC949565D86DCE51CFAE52AB82C152CB021820
]]></artwork></figure>

<figure><artwork><![CDATA[
MAC_2 (Raw Value) (32 bytes)
7f 0f b4 2e c3 ed db 0d b7 94 b8 ef dd 14 1e 44 ca 03 9a a7 19 c9 e6 61
8f ea f1 e7 83 3e 58 9a
]]></artwork></figure>

<figure><artwork><![CDATA[
MAC_2 (CBOR Data Item) (34 bytes)
58 20 7f 0f b4 2e c3 ed db 0d b7 94 b8 ef dd 14 1e 44 ca 03 9a a7 19 c9
e6 61 8f ea f1 e7 83 3e 58 9a
]]></artwork></figure>

<t>Since METHOD = 0, Signature_or_MAC_2 is the ‘signature’ of the COSE_Sign1 object.</t>

<t>R constructs the message to be signed:</t>

<figure><artwork><![CDATA[
[ "Signature1", << ID_CRED_R >>,
 << TH_2, CRED_R, ? EAD_2 >>, MAC_2 ] =

[
 "Signature1",
 h'A11822822E4879F2A41B510C1F9B',
 h'58203AB11700841FCE193C323911EDB317B046DCF24B9950FD624884F7F57CD98
 B0758F13081EE3081A1A003020102020462319EC4300506032B6570301D311B3019
 06035504030C124544484F4320526F6F742045643235353139301E170D323230333
 1363038323433365A170D3239313233313233303030305A30223120301E06035504
 030C174544484F4320526573706F6E6465722045643235353139302A300506032B6
 570032100A1DB47B95184854AD12A0C1A354E418AACE33AA0F2C662C00B3AC55DE9
 2F9359300506032B6570034100B723BC01EAB0928E8B2B6C98DE19CC3823D46E7D6
 987B032478FECFAF14537A1AF14CC8BE829C6B73044101837EB4ABC949565D86DCE
 51CFAE52AB82C152CB02',
 h'7F0FB42EC3EDDB0DB794B8EFDD141E44CA039AA719C9E6618FEAF1E7833E589A'
]
]]></artwork></figure>

<figure><artwork><![CDATA[
Message to be signed 2 (CBOR Data Item) (341 bytes)
846A5369676E6174757265314EA11822822E4879F2A41B510C1F9B59011558203AB1
1700841FCE193C323911EDB317B046DCF24B9950FD624884F7F57CD98B0758F13081
EE3081A1A003020102020462319EC4300506032B6570301D311B301906035504030C
124544484F4320526F6F742045643235353139301E170D3232303331363038323433
365A170D3239313233313233303030305A30223120301E06035504030C174544484F
4320526573706F6E6465722045643235353139302A300506032B6570032100A1DB47
B95184854AD12A0C1A354E418AACE33AA0F2C662C00B3AC55DE92F9359300506032B
6570034100B723BC01EAB0928E8B2B6C98DE19CC3823D46E7D6987B032478FECFAF1
4537A1AF14CC8BE829C6B73044101837EB4ABC949565D86DCE51CFAE52AB82C152CB
0258207F0FB42EC3EDDB0DB794B8EFDD141E44CA039AA719C9E6618FEAF1E7833E58
9A
]]></artwork></figure>

<t>R signs using the private authentication key SK_R</t>

<figure><artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (64 bytes)
f3 73 a7 20 3e fa 7d f0 73 8c 36 0e e0 80 17 1a ca 67 fc b1 75 f2 6d 78
5d 09 5b 55 eb 14 84 65 5c 39 e0 3a 3f 5f 9b dd 87 ef 8c 5f 2e c3 df e6
fb ba 49 b7 b4 62 5b 12 6f 27 de 30 17 67 27 0c
]]></artwork></figure>
<figure><artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (66 bytes)
58 40 f3 73 a7 20 3e fa 7d f0 73 8c 36 0e e0 80 17 1a ca 67 fc b1 75 f2
6d 78 5d 09 5b 55 eb 14 84 65 5c 39 e0 3a 3f 5f 9b dd 87 ef 8c 5f 2e c3
df e6 fb ba 49 b7 b4 62 5b 12 6f 27 de 30 17 67 27 0c
]]></artwork></figure>

<t>R constructs the plaintext without padding:</t>

<figure><artwork><![CDATA[
PAD_2 (CBOR sequence of simple type) (0 bytes)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_2 =
(
 ? PAD_2,
 ID_CRED_R / bstr / -24..23,
 Signature_or_MAC_2,
 ? EAD_2
)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_2 (CBOR Sequence) (80 bytes)
a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 40 f3 73 a7 20 3e fa 7d f0
73 8c 36 0e e0 80 17 1a ca 67 fc b1 75 f2 6d 78 5d 09 5b 55 eb 14 84 65
5c 39 e0 3a 3f 5f 9b dd 87 ef 8c 5f 2e c3 df e6 fb ba 49 b7 b4 62 5b 12
6f 27 de 30 17 67 27 0c
]]></artwork></figure>

<t>The input needed to calculate KEYSTREAM_2 is defined in Section 4.1.2 of
<xref target="I-D.ietf-lake-edhoc"/>, using Expand() with the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
KEYSTREAM_2 = EDHOC-KDF( PRK_2e, 0, TH_2, plaintext_length ) =
            = HKDF-Expand( PRK_2e, info, plaintext_length )
]]></artwork></figure>

<t>where plaintext_length is the length of PLAINTEXT_2, and info for KEYSTREAM_2 is:</t>

<figure><artwork><![CDATA[
info =
(
 0,
 h'3AB11700841FCE193C323911EDB317B046DCF24B9950FD624884F7F57CD98B07',
 80
)
]]></artwork></figure>

<t>where the last value is the length of PLAINTEXT_2.</t>

<figure><artwork><![CDATA[
info for KEYSTREAM_2 (CBOR Sequence) (37 bytes)
0058203AB11700841FCE193C323911EDB317B046DCF24B9950FD624884F7F57CD98B0718
50
]]></artwork></figure>

<figure><artwork><![CDATA[
KEYSTREAM_2 (Raw Value) (80 bytes)
3a 37 61 38 40 a9 65 bc c8 1b 0d 06 21 d7 ed 9d 38 87 bb b3 b0 50 43 ff
ec c3 ab 78 1e 00 d7 66 32 d7 67 99 14 c1 72 04 bc 11 1b 1f de 5f 0d 99
da 68 71 64 8d 78 56 db 47 9b ec 48 ad 3a af 8c e0 4e 0b 4c ed 60 9e d3
40 49 f7 b6 26 ee ac 31
]]></artwork></figure>

<t>R calculates CIPHERTEXT_2 as XOR between PLAINTEXT_2 and KEYSTREAM_2:</t>

<figure><artwork><![CDATA[
CIPHERTEXT_2 (Raw Value) (80 bytes)
9b 2f 43 ba 6e e1 1c 4e 6c 00 5c 0a 3e 4c b5 dd cb f4 1c 93 8e aa 3e 0f
9f 4f 9d 76 fe 80 c0 7c f8 b0 9b 28 61 33 1f 7c e1 18 40 4a 35 4b 89 fc
86 51 91 5e b2 27 cd 06 c0 74 60 17 83 f9 70 6a 1b f4 42 fb 59 02 c5 c1
2f 6e 29 86 31 89 8b 3d
]]></artwork></figure>

<t>R constructs message_2:</t>

<figure><artwork><![CDATA[
message_2 =
(
 G_Y_CIPHERTEXT_2,
 C_R
)
]]></artwork></figure>

<t>where G_Y_CIPHERTEXT_2 is the bstr encoding of the concatenation of
  the raw values of G_Y and CIPHERTEXT_2.</t>

<figure><artwork><![CDATA[
message_2 (CBOR Sequence) (116 bytes)
58 70 dc 88 d2 d5 1d a5 ed 67 fc 46 16 35 6b c8 ca 74 ef 9e be 8b 38 7e
62 3a 36 0b a4 80 b9 b2 9d 1c 9b 2f 43 ba 6e e1 1c 4e 6c 00 5c 0a 3e 4c
b5 dd cb f4 1c 93 8e aa 3e 0f 9f 4f 9d 76 fe 80 c0 7c f8 b0 9b 28 61 33
1f 7c e1 18 40 4a 35 4b 89 fc 86 51 91 5e b2 27 cd 06 c0 74 60 17 83 f9
70 6a 1b f4 42 fb 59 02 c5 c1 2f 6e 29 86 31 89 8b 3d 41 18
]]></artwork></figure>

</section>
<section anchor="message3" title="message_3">

<t>Since METHOD = 0, I authenticates using signatures. Since the selected cipher suite is 0, the EDHOC signature algorithm is EdDSA.</t>

<t>I’s signature key pair using EdDSA:</t>

<figure><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></figure>

<figure><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></figure>

<t>PRK_4e3m is specified in Section 4.1.1.3 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>Since I authenticates with signatures PRK_4e3m = PRK_3e2m.</t>

<figure><artwork><![CDATA[
PRK_4e3m (Raw Value) (32 bytes)
c5 76 10 5d 95 b4 d8 c1 8e 8f 65 5f 54 68 80 a8 54 f2 da 10 6c e5 a3
a0 2d 8b 3e de 7b aa bc a6
]]></artwork></figure>

<t>The transcript hash TH_3 is calculated using the EDHOC hash algorithm:</t>

<t>TH_3 = H(TH_2, PLAINTEXT_2)</t>

<figure><artwork><![CDATA[
Input to calculate TH_3 (CBOR Sequence) (114 bytes)
58 20 3a b1 17 00 84 1f ce 19 3c 32 39 11 ed b3 17 b0 46 dc f2 4b 99
50 fd 62 48 84 f7 f5 7c d9 8b 07 a1 18 22 82 2e 48 79 f2 a4 1b 51 0c
1f 9b 58 40 f3 73 a7 20 3e fa 7d f0 73 8c 36 0e e0 80 17 1a ca 67 fc
b1 75 f2 6d 78 5d 09 5b 55 eb 14 84 65 5c 39 e0 3a 3f 5f 9b dd 87 ef
8c 5f 2e c3 df e6 fb ba 49 b7 b4 62 5b 12 6f 27 de 30 17 67 27 0c
]]></artwork></figure>

<figure><artwork><![CDATA[
TH_3 (Raw Value) (32 bytes)
77 a5 1a 1c f0 eb 60 e4 06 1b fc 27 08 87 52 9c 16 b6 f4 b3 4d 88 a2 26
e7 06 5b 60 f4 15 26 71
]]></artwork></figure>

<figure><artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 77 a5 1a 1c f0 eb 60 e4 06 1b fc 27 08 87 52 9c 16 b6 f4 b3 4d 88
a2 26 e7 06 5b 60 f4 15 26 71
]]></artwork></figure>

<t>I constructs the remaining input needed to calculate MAC_3:</t>

<figure><artwork><![CDATA[
MAC_3 = EDHOC-KDF( PRK_4e3m, 6, context_3, mac_length_3 )
]]></artwork></figure>

<t>where</t>

<figure><artwork><![CDATA[
context_3 = << ID_CRED_I, TH_3, CRED_I, ? EAD_3 >>
]]></artwork></figure>

<t>CRED_I is identified by a 64-bit hash:</t>

<figure><artwork><![CDATA[
ID_CRED_I =
{
  34 : [-15, h'C24AB2FD7643C79F']
}
]]></artwork></figure>

<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>

<figure><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></figure>

<t>CRED_I is a CBOR byte string of the DER encoding of the X.509 certificate in <xref target="init-cer"/>:</t>

<figure><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></figure>

<figure><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></figure>

<t>No external authorization data:</t>

<figure><artwork><![CDATA[
EAD_3 (CBOR Sequence) (0 bytes)
]]></artwork></figure>

<t>context_3 = « ID_CRED_I, TH_3, CRED_I, ? EAD_3 »</t>

<figure><artwork><![CDATA[
context_3 (CBOR Sequence) (291 bytes)
A11822822E48C24AB2FD7643C79F582077A51A1CF0EB60E4061BFC270887529C16B6
F4B34D88A226E7065B60F415267158F13081EE3081A1A003020102020462319EA030
0506032B6570301D311B301906035504030C124544484F4320526F6F742045643235
353139301E170D3232303331363038323430305A170D323931323331323330303030
5A30223120301E06035504030C174544484F4320496E69746961746F722045643235
353139302A300506032B6570032100ED06A8AE61A829BA5FA54525C9D07F48DD44A3
02F43E0F23D8CC20B73085141E300506032B6570034100521241D8B3A770996BCFC9
B9EAD4E7E0A1C0DB353A3BDF2910B39275AE48B756015981850D27DB6734E37F6721
2267DD05EEFF27B9E7A813FA574B72A00B430B
]]></artwork></figure>

<figure><artwork><![CDATA[
context_3 (CBOR byte string) (294 bytes)
590123A11822822E48C24AB2FD7643C79F582077A51A1CF0EB60E4061BFC27088752
9C16B6F4B34D88A226E7065B60F415267158F13081EE3081A1A00302010202046231
9EA0300506032B6570301D311B301906035504030C124544484F4320526F6F742045
643235353139301E170D3232303331363038323430305A170D323931323331323330
3030305A30223120301E06035504030C174544484F4320496E69746961746F722045
643235353139302A300506032B6570032100ED06A8AE61A829BA5FA54525C9D07F48
DD44A302F43E0F23D8CC20B73085141E300506032B6570034100521241D8B3A77099
6BCFC9B9EAD4E7E0A1C0DB353A3BDF2910B39275AE48B756015981850D27DB6734E3
7F67212267DD05EEFF27B9E7A813FA574B72A00B430B
]]></artwork></figure>

<t>MAC_3 is computed through Expand() using the
EDHOC hash algorithm, see Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>:</t>

<figure><artwork><![CDATA[
MAC_3 = HKDF-Expand(PRK_4e3m, info, mac_length_3), where
]]></artwork></figure>

<t>info = ( 6, context_3, mac_length_3 )</t>

<t>where context_3 = « ID_CRED_I, TH_3, CRED_I, ? EAD_3 »</t>

<t>Since METHOD = 0, mac_length_3 is given by the EDHOC hash algorithm.</t>

<t>info for MAC_3 is:</t>

<figure><artwork><![CDATA[
info =
(
 6,
 h'A11822822E48C24AB2FD7643C79F582077A51A1CF0EB60E4061BFC270887529C16B6
   F4B34D88A226E7065B60F415267158F13081EE3081A1A003020102020462319EA030
   0506032B6570301D311B301906035504030C124544484F4320526F6F742045643235
   353139301E170D3232303331363038323430305A170D323931323331323330303030
   5A30223120301E06035504030C174544484F4320496E69746961746F722045643235
   353139302A300506032B6570032100ED06A8AE61A829BA5FA54525C9D07F48DD44A3
   02F43E0F23D8CC20B73085141E300506032B6570034100521241D8B3A770996BCFC9
   B9EAD4E7E0A1C0DB353A3BDF2910B39275AE48B756015981850D27DB6734E37F6721
   2267DD05EEFF27B9E7A813FA574B72A00B430B',
 32
)
]]></artwork></figure>

<t>where the last value is the output size of the EDHOC hash algorithm.</t>

<figure><artwork><![CDATA[
info for MAC_3 (CBOR Sequence) (297 bytes)
06590123A11822822E48C24AB2FD7643C79F582077A51A1CF0EB60E4061BFC270887
529C16B6F4B34D88A226E7065B60F415267158F13081EE3081A1A003020102020462
319EA0300506032B6570301D311B301906035504030C124544484F4320526F6F7420
45643235353139301E170D3232303331363038323430305A170D3239313233313233
303030305A30223120301E06035504030C174544484F4320496E69746961746F7220
45643235353139302A300506032B6570032100ED06A8AE61A829BA5FA54525C9D07F
48DD44A302F43E0F23D8CC20B73085141E300506032B6570034100521241D8B3A770
996BCFC9B9EAD4E7E0A1C0DB353A3BDF2910B39275AE48B756015981850D27DB6734
E37F67212267DD05EEFF27B9E7A813FA574B72A00B430B1820
]]></artwork></figure>

<figure><artwork><![CDATA[
MAC_3 (Raw Value) (32 bytes)
77 78 cc 72 7b f8 40 c9 bf c9 70 18 a4 d1 29 7c 51 74 43 0a 17 42 ae 97
6a c4 15 e9 7a 42 ce 55
]]></artwork></figure>

<figure><artwork><![CDATA[
MAC_3 (CBOR Data Item) (34 bytes)
58 20 77 78 cc 72 7b f8 40 c9 bf c9 70 18 a4 d1 29 7c 51 74 43 0a 17 42
ae 97 6a c4 15 e9 7a 42 ce 55
]]></artwork></figure>

<t>Since METHOD = 0, Signature_or_MAC_3 is the ‘signature’ of the
COSE_Sign1 object.</t>

<t>I constructs the message to be signed:</t>

<figure><artwork><![CDATA[
[ "Signature1", << ID_CRED_I >>,
 << TH_3, CRED_I, ? EAD_3 >>, MAC_3 ] =

[
 "Signature1",
 h'A11822822E48C24AB2FD7643C79F',
 h'582077A51A1CF0EB60E4061BFC270887529C16B6F4B34D88A226E7065B60F4
   15267158F13081EE3081A1A003020102020462319EA0300506032B6570301D
   311B301906035504030C124544484F4320526F6F742045643235353139301E
   170D3232303331363038323430305A170D3239313233313233303030305A30
   223120301E06035504030C174544484F4320496E69746961746F7220456432
   35353139302A300506032B6570032100ED06A8AE61A829BA5FA54525C9D07F
   48DD44A302F43E0F23D8CC20B73085141E300506032B6570034100521241D8
   B3A770996BCFC9B9EAD4E7E0A1C0DB353A3BDF2910B39275AE48B756015981
   850D27DB6734E37F67212267DD05EEFF27B9E7A813FA574B72A00B430B',
 h'7778CC727BF840C9BFC97018A4D1297C5174430A1742AE976AC415E97A42CE55'
]
]]></artwork></figure>

<figure><artwork><![CDATA[
Message to be signed 3 (CBOR Data Item) (341 bytes)
846A5369676E6174757265314EA11822822E48C24AB2FD7643C79F590115582077A5
1A1CF0EB60E4061BFC270887529C16B6F4B34D88A226E7065B60F415267158F13081
EE3081A1A003020102020462319EA0300506032B6570301D311B301906035504030C
124544484F4320526F6F742045643235353139301E170D3232303331363038323430
305A170D3239313233313233303030305A30223120301E06035504030C174544484F
4320496E69746961746F722045643235353139302A300506032B6570032100ED06A8
AE61A829BA5FA54525C9D07F48DD44A302F43E0F23D8CC20B73085141E300506032B
6570034100521241D8B3A770996BCFC9B9EAD4E7E0A1C0DB353A3BDF2910B39275AE
48B756015981850D27DB6734E37F67212267DD05EEFF27B9E7A813FA574B72A00B43
0B58207778CC727BF840C9BFC97018A4D1297C5174430A1742AE976AC415E97A42CE
55
]]></artwork></figure>

<t>I signs using the private authentication key SK_I:</t>

<figure><artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (64 bytes)
ab 7e fd 2d 2f 2d 2b 7f f4 e1 f1 6b f5 51 a5 09 f1 f7 6d 37 e0 28 b7 0c
9c 98 32 02 6c 52 c2 37 21 73 81 91 91 c5 95 59 07 b1 63 c8 86 0f bf 7e
62 51 b6 71 9f 76 1c b9 44 9e 1d 47 57 41 c6 0b
]]></artwork></figure>

<figure><artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (66 bytes)
58 40 ab 7e fd 2d 2f 2d 2b 7f f4 e1 f1 6b f5 51 a5 09 f1 f7 6d 37 e0 28
b7 0c 9c 98 32 02 6c 52 c2 37 21 73 81 91 91 c5 95 59 07 b1 63 c8 86 0f
bf 7e 62 51 b6 71 9f 76 1c b9 44 9e 1d 47 57 41 c6 0b
]]></artwork></figure>

<t>I constructs the plaintext without padding:</t>

<figure><artwork><![CDATA[
PAD_3 (CBOR sequence of simple type) (0 bytes)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_3 =
(
 ? PAD_3,
 ID_CRED_I / bstr / -24..23,
 Signature_or_MAC_3,
 ? EAD_3
)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_3 (CBOR Sequence) (80 bytes)
a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f 58 40 ab 7e fd 2d 2f 2d 2b 7f
f4 e1 f1 6b f5 51 a5 09 f1 f7 6d 37 e0 28 b7 0c 9c 98 32 02 6c 52 c2 37
21 73 81 91 91 c5 95 59 07 b1 63 c8 86 0f bf 7e 62 51 b6 71 9f 76 1c b9
44 9e 1d 47 57 41 c6 0b
]]></artwork></figure>

<t>I constructs the associated data for message_3:</t>

<figure><artwork><![CDATA[
A_3 =
(
 "Encrypt0",
 h'',
 TH_3
)
]]></artwork></figure>

<figure><artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
8368456E63727970743040582077A51A1CF0EB60E4061BFC270887529C16B6F4B34D
88A226E7065B60F4152671
]]></artwork></figure>

<t>I constructs the input needed to derive the key K_3, see Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
K_3 = EDHOC-KDF( PRK_3e2m, 3, TH_3, key_length )
    = HKDF-Expand( PRK_3e2m, info, key_length ),
]]></artwork></figure>

<t>where key_length is the key length of EDHOC AEAD algorithm, and info for K_3 is:</t>

<figure><artwork><![CDATA[
info =
(
 3,
 h'77a51a1cf0eb60e4061bfc270887529c16b6f4b34d88a226e7065b60f4152671',
 16
)
]]></artwork></figure>

<t>where the last value is the key length of EDHOC AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for K_3 (CBOR Sequence) (36 bytes)
03582077A51A1CF0EB60E4061BFC270887529C16B6F4B34D88A226E7065B60F41526
7110
]]></artwork></figure>

<figure><artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
8f cd 39 25 44 41 fc 8d 54 b9 cd 97 a6 43 82 4d
]]></artwork></figure>

<t>I constructs the input needed to derive the nonce IV_3, see Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
IV_3 = EDHOC-KDF( PRK_3e2m, 4, TH_3, iv_length )
     = HKDF-Expand( PRK_3e2m, info, iv_length ),
]]></artwork></figure>

<t>where iv_length is the nonce length of EDHOC AEAD algorithm, and info for IV_3 is:</t>

<figure><artwork><![CDATA[
info =
(
 4,
 h'77a51a1cf0eb60e4061bfc270887529c16b6f4b34d88a226e7065b60f4152671',
 13
)
]]></artwork></figure>

<t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for IV_3 (CBOR Sequence) (36 bytes)
04582077A51A1CF0EB60E4061BFC270887529C16B6F4B34D88A226E7065B60F41526
710D
]]></artwork></figure>

<figure><artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
5a 5d b1 7d 7b 83 b0 95 14 5c 77 42 a8
]]></artwork></figure>

<t>I calculates CIPHERTEXT_3 as ‘ciphertext’ of COSE_Encrypt0 applied
using the EDHOC AEAD algorithm with plaintext PLAINTEXT_3, additional data
A_3, key K_3 and nonce IV_3.</t>

<figure><artwork><![CDATA[
CIPHERTEXT_3 (Raw Value) (88 bytes)
2f c1 95 56 f6 7c 92 9a 97 34 78 9e ce c6 0a af 8f 50 32 4f c3 1b d0 78
01 d5 7c ec 00 d3 bf 1e a4 db af ac 34 2f e1 68 6c bc ea 0c ec 45 02 95
98 05 b1 53 81 9e 27 46 38 cc 23 bb c4 f4 e3 94 77 f8 a8 ff f5 ca af 5e
32 d4 ca 4e 7c 74 8d 2b 51 9d 21 b8 d7 57 72 48
]]></artwork></figure>

<t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>

<figure><artwork><![CDATA[
message_3 (CBOR Sequence) (90 bytes)
58 58 2f c1 95 56 f6 7c 92 9a 97 34 78 9e ce c6 0a af 8f 50 32 4f c3 1b
d0 78 01 d5 7c ec 00 d3 bf 1e a4 db af ac 34 2f e1 68 6c bc ea 0c ec 45
02 95 98 05 b1 53 81 9e 27 46 38 cc 23 bb c4 f4 e3 94 77 f8 a8 ff f5 ca
af 5e 32 d4 ca 4e 7c 74 8d 2b 51 9d 21 b8 d7 57 72 48
]]></artwork></figure>

<t>The transcript hash TH_4 is calculated using the EDHOC hash algorithm:</t>

<t>TH_4 = H(TH_3, PLAINTEXT_3)</t>

<figure><artwork><![CDATA[
Input to calculate TH_4 (CBOR Sequence) (114 bytes)
58 20 77 a5 1a 1c f0 eb 60 e4 06 1b fc 27 08 87 52 9c 16 b6 f4 b3 4d 88
a2 26 e7 06 5b 60 f4 15 26 71 a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f
58 40 ab 7e fd 2d 2f 2d 2b 7f f4 e1 f1 6b f5 51 a5 09 f1 f7 6d 37 e0 28
b7 0c 9c 98 32 02 6c 52 c2 37 21 73 81 91 91 c5 95 59 07 b1 63 c8 86 0f
bf 7e 62 51 b6 71 9f 76 1c b9 44 9e 1d 47 57 41 c6 0b
]]></artwork></figure>

<figure><artwork><![CDATA[
TH_4 (Raw Value) (32 bytes)
dd cc c1 4e 32 33 0d 2d a9 3d 13 4b 0c 57 1e 2e 22 a2 8e 62 08 13 5e 7c
da 45 23 1d 85 0d ce c3
]]></artwork></figure>

<figure><artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 dd cc c1 4e 32 33 0d 2d a9 3d 13 4b 0c 57 1e 2e 22 a2 8e 62 08 13
5e 7c da 45 23 1d 85 0d ce c3
]]></artwork></figure>

</section>
<section anchor="message4" title="message_4">

<t>No external authorization data:</t>

<figure><artwork><![CDATA[
EAD_4 (CBOR Sequence) (0 bytes)
]]></artwork></figure>

<t>R constructs the plaintext PLAINTEXT_4:</t>

<figure><artwork><![CDATA[
PLAINTEXT_4 =
(
 ? EAD_4
)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_4 (CBOR Sequence) (0 bytes)
]]></artwork></figure>

<t>R constructs the associated data for message_4:</t>

<figure><artwork><![CDATA[
A_4 =
(
 "Encrypt0",
 h'',
 TH_4
)
]]></artwork></figure>

<figure><artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
8368456E637279707430405820DDCCC14E32330D2DA93D134B0C571E2E22A28E6208
135E7CDA45231D850DCEC3
]]></artwork></figure>

<t>R constructs the input needed to derive the EDHOC message_4 key, see
Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
K_4   = EDHOC-KDF( PRK_4e3m, 8, TH_4, key_length )
      = HKDF-Expand( PRK_4x3m, info, key_length )
]]></artwork></figure>

<t>where key_length is the key length of the EDHOC AEAD algorithm,
  and info for EDHOC_K_4 is:</t>

<figure><artwork><![CDATA[
info =
(
 8,
 h'ddccc14e32330d2da93d134b0c571e2e22a28e6208135e7cda45231d850dcec3',
 16
)
]]></artwork></figure>

<t>where the last value is the key length of EDHOC AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for K_4 (CBOR Sequence) (36 bytes)
085820DDCCC14E32330D2DA93D134B0C571E2E22A28E6208135E7CDA45231D850DCE
C310
]]></artwork></figure>

<figure><artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
e5 5a ba d2 4c 2d 5b 1a a4 a7 e9 98 5c 56 99 ce
]]></artwork></figure>

<t>R constructs the input needed to derive the EDHOC message_4 nonce, see Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
      IV_4 = EDHOC-KDF( PRK_4e3m, 9, TH_4, iv_length )
           = HKDF-Expand( PRK_4x3m, info, iv_length )
]]></artwork></figure>

<t>where length is the nonce length of EDHOC AEAD algorithm,
  and info for EDHOC_IV_4 is:</t>

<figure><artwork><![CDATA[
info =
(
 9,
 h'ddccc14e32330d2da93d134b0c571e2e22a28e6208135e7cda45231d850dcec3',
 13
)
]]></artwork></figure>

<t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for IV_4 (CBOR Sequence) (36 bytes)
095820DDCCC14E32330D2DA93D134B0C571E2E22A28E6208135E7CDA45231D850DCE
C30D
]]></artwork></figure>

<figure><artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
f2 4b 5c da 64 f7 a5 dc 08 dd 6f ef d5
]]></artwork></figure>

<t>R calculates CIPHERTEXT_4 as ‘ciphertext’ of COSE_Encrypt0 applied
using the EDHOC AEAD algorithm with plaintext PLAINTEXT_4, additional data
A_4, key K_4 and nonce IV_4.</t>

<figure><artwork><![CDATA[
CIPHERTEXT_4 (8 bytes)
52 3b 02 82 a1 3c 89 23
]]></artwork></figure>

<t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>

<figure><artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 52 3b 02 82 a1 3c 89 23
]]></artwork></figure>

</section>
<section anchor="out-and-exporter1" title="PRK_out and PRK_exporter">

<t>PRK_out is specified in Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<figure><artwork><![CDATA[
PRK_out = EDHOC-KDF( PRK_4e3m, 7, TH_4, hash_length ) =
        = HKDF-Expand( PRK_4e3m, info,  hash_length )
]]></artwork></figure>

<t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for PRK_out is:</t>

<figure><artwork><![CDATA[
info =
(
 7,
 h'ddccc14e32330d2da93d134b0c571e2e22a28e6208135e7cda45231d850dcec3',
 32
)
]]></artwork></figure>

<t>where the last value is the length of EDHOC hash algorithm.</t>

<figure><artwork><![CDATA[
info for PRK_out (CBOR Sequence) (37 bytes)
075820DDCCC14E32330D2DA93D134B0C571E2E22A28E6208135E7CDA45231D850DCEC3
1820
]]></artwork></figure>

<figure><artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
2d 6d b7 af a2 e8 72 e2 31 65 19 63 03 e2 f4 56 71 40 81 ab 90 81 1e 29
26 d7 28 3a 3f 49 f1 ac
]]></artwork></figure>

<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>

<figure><artwork><![CDATA[
EDHOC-Exporter( label, context, length )
= EDHOC-KDF( PRK_exporter, label, context, length )
]]></artwork></figure>

<t>where PRK_exporter is derived from PRK_out:</t>

<figure><artwork><![CDATA[
 PRK_exporter = EDHOC-KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork></figure>

<t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for the PRK_exporter is:</t>

<figure><artwork><![CDATA[
info =
(
 10,
 h'',
 32
)
]]></artwork></figure>

<t>where the last value is the length of EDHOC hash algorithm.</t>

<figure><artwork><![CDATA[
info for PRK_exporter (CBOR Sequence) (4 bytes)
0a 40 18 20
]]></artwork></figure>

<figure><artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
ea f9 12 d6 9a 96 68 59 f0 e6 9b c0 fd 16 a4 b9 5b bd 9b 6c be 2c 52 5b
d2 3f d4 7f 34 05 9e 10
]]></artwork></figure>

</section>
<section anchor="oscore-param" title="OSCORE Parameters">

<t>The derivation of OSCORE parameters is specified in Appendix A.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>The AEAD and Hash algorithms to use in OSCORE are given by the selected cipher suite:</t>

<figure><artwork><![CDATA[
Application AEAD Algorithm (int)
10
]]></artwork></figure>

<figure><artwork><![CDATA[
Application Hash Algorithm (int)
-16
]]></artwork></figure>

<t>The mapping from EDHOC connection identifiers to OSCORE Sender/Recipient IDs is defined in Section 3.3.3 of <xref 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>

<figure><artwork><![CDATA[
Client's OSCORE Sender ID (Raw Value) (1 bytes)
18
]]></artwork></figure>

<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>

<figure><artwork><![CDATA[
Server's OSCORE Sender ID (Raw Value) (1 bytes)
2d
]]></artwork></figure>

<t>The OSCORE Master Secret is computed through Expand() using the
Application hash algorithm, see Appendix A.1 of <xref target="I-D.ietf-lake-edhoc"/>:</t>

<figure><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></figure>

<t>where oscore_key_length is by default the key length of the Application AEAD
algorithm, and info for the OSCORE Master Secret is:</t>

<figure><artwork><![CDATA[
info =
(
 0,
 h'',
 16
)
]]></artwork></figure>

<t>where the last value is the key length of Application AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for OSCORE Master Secret (CBOR Sequence) (3 bytes)
00 40 10
]]></artwork></figure>

<figure><artwork><![CDATA[
OSCORE Master Secret (Raw Value) (16 bytes)
d6 dd 09 b1 37 35 9f 0a d2 15 dd 02 19 62 c0 5c
]]></artwork></figure>

<t>The OSCORE Master Salt is computed through Expand() using the Application hash algorithm, see Section 4.2 of <xref target="I-D.ietf-lake-edhoc"/>:</t>

<figure><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></figure>

<t>where oscore_salt_length is the length of the OSCORE Master Salt, and info for the OSCORE Master Salt is:</t>

<figure><artwork><![CDATA[
info =
(
 1,
 h'',
 8
)
]]></artwork></figure>

<t>where the last value is the length of the OSCORE Master Salt.</t>

<figure><artwork><![CDATA[
info for OSCORE Master Salt (CBOR Sequence) (3 bytes)
01 40 08
]]></artwork></figure>

<figure><artwork><![CDATA[
OSCORE Master Salt (Raw Value) (8 bytes)
87 b3 eb bb e1 7e b4 b9
]]></artwork></figure>

</section>
<section anchor="key-update" title="Key Update">

<t>Key update is defined in Section 4.2.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<figure><artwork><![CDATA[
EDHOC-KeyUpdate( context ):
PRK_out = EDHOC-KDF( PRK_out, 11, context, hash_length )
        = HKDF-Expand( PRK_out, info, hash_length )
]]></artwork></figure>

<t>where hash_length is the length of the output of the EDHOC hash function, context for KeyUpdate is</t>

<figure><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></figure>
<figure><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></figure>

<t>and where info for key update is:</t>

<figure><artwork><![CDATA[
info =
(
 11,
 h'D6BE169602B8BCEAA01158FDB820890C',
 32
)
]]></artwork></figure>

<figure><artwork><![CDATA[
PRK_out after KeyUpdate (Raw Value) (32 bytes)
6f a6 ee 2f fb f3 80 5b d1 d8 ab 59 0b 89 32 a2 05 af f6 a5 fa 79 4b 1d
e9 3c 57 af a9 63 8f b3
]]></artwork></figure>

<t>After key update the PRK_exporter needs to be derived anew:</t>

<figure><artwork><![CDATA[
 PRK_exporter = EDHOC-KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork></figure>

<t>where info and hash_length as unchanged as in <xref target="out-and-exporter1"/>.</t>

<figure><artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
a2 70 ad da a5 39 d9 44 9c ae 79 e9 f5 7b 18 53 28 aa ac e2 bb b4 25 01
d9 d0 dc 30 7f 10 fb 28
]]></artwork></figure>

<t>The OSCORE Master Secret is derived with the updated PRK_exporter:</t>

<figure><artwork><![CDATA[
OSCORE Master Secret =
= HKDF-Expand(PRK_exporter, info, oscore_key_length)
]]></artwork></figure>

<t>where info and key_length are unchanged as in <xref target="oscore-param"/>.</t>

<figure><artwork><![CDATA[
OSCORE Master Secret after KeyUpdate (Raw Value) (16 bytes)
66 ec b0 db 0a 9e 49 6f 67 c0 b5 55 54 79 6e 3e
]]></artwork></figure>

<t>The OSCORE Master Salt is derived with the updated PRK_exporter:</t>

<figure><artwork><![CDATA[
OSCORE Master Salt = HKDF-Expand(PRK_exporter, info, salt_length)
]]></artwork></figure>

<t>where info and salt_length are unchanged as in <xref target="oscore-param"/>.</t>

<figure><artwork><![CDATA[
OSCORE Master Salt after KeyUpdate (Raw Value) (8 bytes)
18 f3 23 ad 2e fc 69 29
]]></artwork></figure>

</section>
<section anchor="certs" title="Certificates">

<section anchor="resp-cer" title="Responder Certificate">

<figure><artwork><![CDATA[
        Version: 3 (0x2)
        Serial Number: 1647419076 (0x62319ec4)
        Signature Algorithm: ED25519
        Issuer: CN = EDHOC Root Ed25519
        Validity
            Not After : Dec 31 23:00:00 2029 GMT
        Subject: CN = EDHOC Responder Ed25519
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    a1:db:47:b9:51:84:85:4a:d1:2a:0c:1a:35:4e:41:
                    8a:ac:e3:3a:a0:f2:c6:62:c0:0b:3a:c5:5d:e9:2f:
                    93:59
    Signature Algorithm: ED25519
    Signature Value:
        b7:23:bc:01:ea:b0:92:8e:8b:2b:6c:98:de:19:cc:38:23:d4:
        6e:7d:69:87:b0:32:47:8f:ec:fa:f1:45:37:a1:af:14:cc:8b:
        e8:29:c6:b7:30:44:10:18:37:eb:4a:bc:94:95:65:d8:6d:ce:
        51:cf:ae:52:ab:82:c1:52:cb:02
]]></artwork></figure>

</section>
<section anchor="init-cer" title="Initiator Certificate">

<figure><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></figure>

</section>
<section anchor="root-cer" title="Common Root Certificate">

<figure><artwork><![CDATA[
        Version: 3 (0x2)
        Serial Number: 1647418996 (0x62319e74)
        Signature Algorithm: ED25519
        Issuer: CN = EDHOC Root Ed25519
        Validity
            Not Before: Mar 16 08:23:16 2022 GMT
            Not After : Dec 31 23:00:00 2029 GMT
        Subject: CN = EDHOC Root Ed25519
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    2b:7b:3e:80:57:c8:64:29:44:d0:6a:fe:7a:71:d1:
                    c9:bf:96:1b:62:92:ba:c4:b0:4f:91:66:9b:bb:71:
                    3b:e4
    Signature Algorithm: ED25519
    Signature Value:
        4b:b5:2b:bf:15:39:b7:1a:4a:af:42:97:78:f2:9e:da:7e:81:
        46:80:69:8f:16:c4:8f:2a:6f:a4:db:e8:25:41:c5:82:07:ba:
        1b:c9:cd:b0:c2:fa:94:7f:fb:f0:f0:ec:0e:e9:1a:7f:f3:7a:
        94:d9:25:1f:a5:cd:f1:e6:7a:0f
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="authentication-with-static-dh-ccs-identified-by-kid" title="Authentication with static DH, CCS identified by ‘kid’">

<t>In this example I and R are authenticated with ephemeral-static Diffie-Hellman (METHOD = 3). I supports cipher suites 6 and 2 (in order of preference) and R only supports cipher suite 2. After an initial negotiation message exchange cipher suite 2 is used, which determines the algorithms:</t>

<t><list style="symbols">
  <t>EDHOC AEAD algorithm = AES-CCM-16-64-128</t>
  <t>EDHOC hash algorithm = SHA-256</t>
  <t>EDHOC MAC length in bytes (Static DH) = 8</t>
  <t>EDHOC key exchange algorithm (ECDH curve) = P-256</t>
  <t>EDHOC signature algorithm = ES256</t>
  <t>Application AEAD algorithm = AES-CCM-16-64-128</t>
  <t>Application hash algorithm = SHA-256</t>
</list></t>

<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" title="message_1 (first time)">

<t>Both endpoints are authenticated with static DH, i.e. METHOD = 3:</t>

<figure><artwork><![CDATA[
METHOD (CBOR Data Item) (1 bytes)
03
]]></artwork></figure>

<t>I selects its preferred cipher suite 6. A single cipher suite is encoded as an int:</t>

<figure><artwork><![CDATA[
SUITES_I (CBOR Data Item) (1 bytes)
06
]]></artwork></figure>

<t>I creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>

<figure><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></figure>
<figure><artwork><![CDATA[
Initiator's ephemeral public key
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></figure>
<figure><artwork><![CDATA[
Initiator's ephemeral public key
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></figure>

<t>I selects its connection identifier C_I to be the byte string 0x0e, which since it is represented by the 1-byte CBOR int 14 is encoded as 0x0e:</t>

<figure><artwork><![CDATA[
C_I (Raw Value) (Connection identifier chosen by I) (1 bytes)
0e
]]></artwork></figure>
<figure><artwork><![CDATA[
C_I (CBOR Data Item) (Connection identifier chosen by I) (1 bytes)
0e
]]></artwork></figure>

<t>No external authorization data:</t>

<t>EAD_1 (CBOR Sequence) (0 bytes)</t>

<t>I constructs message_1:</t>

<figure><artwork><![CDATA[
message_1 =
(
 3,
 6,
 h'741A13D7BA048FBB615E94386AA3B61BEA5B3D8F65F32620B749BEE8D278
 EFA9',
 14
)
]]></artwork></figure>

<figure><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></figure>

</section>
<section anchor="error" title="error">

<t>R does not support cipher suite 6 and sends an error with ERR_CODE 2 containing SUITES_R as ERR_INFO. R proposes cipher suite 2, a single cipher suite thus encoded as an int.</t>

<figure><artwork><![CDATA[
SUITES_R
02
]]></artwork></figure>

<figure><artwork><![CDATA[
error (CBOR Sequence) (2 bytes)
02 02
]]></artwork></figure>

</section>
<section anchor="message1-second-time" title="message_1 (second time)">

<t>Same steps are performed as message_1 first time, <xref target="m1_1"/>, but with updated SUITES_I.</t>

<t>Both endpoints are authenticated with static DH, i.e. METHOD = 3:</t>

<figure><artwork align="left"><![CDATA[
METHOD (CBOR Data Item) (1 bytes)
03
]]></artwork></figure>

<t>I selects cipher suite 2 and indicates the more preferred cipher suite(s), in this case 6, all encoded as the array [6, 2]:</t>

<figure><artwork><![CDATA[
SUITES_I (CBOR Data Item) (3 bytes)
82 06 02
]]></artwork></figure>

<t>I creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>

<figure><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></figure>

<figure><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></figure>
<figure><artwork><![CDATA[
Initiator's ephemeral public key, 'y'-coordinate
(Raw Value) (32 bytes)
51 e8 af 6c 6e db 78 16 01 ad 1d 9c 5f a8 bf 7a a1 57 16 c7 c0 6a 5d
03 85 03 c6 14 ff 80 c9 b3
]]></artwork></figure>

<figure><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></figure>

<t>I selects its connection identifier C_I to be the byte string 0x37, which since it is represented by the 1-byte CBOR int -24 is encoded as 0x37:</t>

<figure><artwork><![CDATA[
C_I (Raw Value) (Connection identifier chosen by I) (1 bytes)
37
]]></artwork></figure>
<figure><artwork><![CDATA[
C_I (CBOR Data Item) (Connection identifier chosen by I) (1 bytes)
37
]]></artwork></figure>

<t>No external authorization data:</t>

<figure><artwork><![CDATA[
EAD_1 (CBOR Sequence) (0 bytes)
]]></artwork></figure>

<t>I constructs message_1:</t>

<figure><artwork><![CDATA[
message_1 =
(
 3,
 [6, 2],
 h'8AF6F430EBE18D34184017A9A11BF511C8DFF8F834730B96C1B7C8DBCA2F
 C3B6',
 -24
)
]]></artwork></figure>

<figure><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></figure>

</section>
<section anchor="message2-1" title="message_2">

<t>R supports the selected cipher suite 2 and not the by I more preferred cipher suite(s) 6, so SUITES_I is acceptable.</t>

<t>R creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>

<figure><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></figure>

<figure><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></figure>
<figure><artwork><![CDATA[
Responder's ephemeral public key, 'y'-coordinate
(Raw Value) (32 bytes)
5e 4f 0d d8 a3 da 0b aa 16 b9 d3 ad 56 a0 c1 86 0a 94 0a f8 59 14 91
5e 25 01 9b 40 24 17 e9 9d
]]></artwork></figure>
<figure><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></figure>

<t>R selects its connection identifier C_R to be the byte string 0x27, which since it is represented by the 1-byte CBOR int -8 is encoded as 0x27:</t>

<figure><artwork><![CDATA[
C_R (raw value) (Connection identifier chosen by R) (0 bytes)
27
]]></artwork></figure>
<figure><artwork><![CDATA[
C_R (CBOR Data Item) (Connection identifier chosen by R) (1 bytes)
27
]]></artwork></figure>

<t>The transcript hash TH_2 is calculated using the EDHOC hash algorithm:</t>

<t>TH_2 = H( G_Y, C_R, H(message_1) )</t>

<figure><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></figure>
<figure><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></figure>

<t>The input to calculate TH_2 is the CBOR sequence:</t>

<t>G_Y, C_R, H(message_1)</t>

<figure><artwork><![CDATA[
Input to calculate TH_2 (CBOR Sequence) (69 bytes)
58 20 41 97 01 d7 f0 0a 26 c2 dc 58
7a 36 dd 75 25 49 f3 37 63 c8 93 42 2c 8e a0 f9 55 a1 3a 4f f5 d5 27
58 20 ca 02 ca bd a5 a8 90 27 49 b4 2f 71 10 50 bb 4d bd 52 15 3e 87
52 75 94 b3 9f 50 cd f0 19 88 8c
]]></artwork></figure>
<figure><artwork><![CDATA[
TH_2 (Raw Value) (32 bytes)
9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7 e5 cd f5 9c 7d
f1 cf 2d fe 9c 20 24 43 9c
]]></artwork></figure>
<figure><artwork><![CDATA[
TH_2 (CBOR Data Item) (34 bytes)
58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7 e5 cd f5
9c 7d f1 cf 2d fe 9c 20 24 43 9c
]]></artwork></figure>

<t>PRK_2e is specified in Section 4.1.1.1 of <xref 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>

<figure><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></figure>

<t>Then, PRK_2e is calculated using Extract() determined by the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
PRK_2e = Extract( salt, G_XY ) =
       = HMAC-SHA-256( salt, G_XY )
]]></artwork></figure>

<t>where salt is the zero-length byte string:</t>

<figure><artwork><![CDATA[
salt (Raw Value) (0 bytes)
]]></artwork></figure>
<figure><artwork><![CDATA[
PRK_2e (Raw Value) (32 bytes)
fd 9e ef 62 74 87 e4 03 90 ca e9 22 51 2d b5 a6 47 c0 8d c9 0d eb 22
b7 2e ce 6f 15 6f f1 c3 96
]]></artwork></figure>

<t>Since METHOD = 3, R authenticates using static DH. The EDHOC key exchange algorithm is based on the same curve as for the ephemeral keys, which is P-256, since the selected cipher suite is 2.</t>

<t>R’s static Diffie-Hellman key pair for use with P-256:</t>

<figure><artwork><![CDATA[
==>MT This should be called SK_R
Responder's private authentication key
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></figure>

<figure><artwork><![CDATA[
Responder's public authentication key, 'x'-coordinate
G_R (Raw Value) (32 bytes)
bb c3 49 60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91 a1 2a fb
cb ac 93 62 20 46 dd 44 f0
]]></artwork></figure>
<figure><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></figure>

<t>Since R authenticates with static DH (METHOD = 3), PRK_3e2m is derived
from SALT_3e2m and G_RX.</t>

<t>The input needed to calculate SALT_3e2m is defined in Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>, using Expand() with the EDHOC hash algorithm:.</t>

<figure><artwork><![CDATA[
SALT_3e2m  = EDHOC-KDF( PRK_2e, 1, TH_2, hash_length ) =
           = HKDF-Expand( PRK_2e, info, hash_length )
]]></artwork></figure>

<t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for SALT_3e2m is:</t>

<figure><artwork><![CDATA[
info =
(
 1,
 h'9d2af3a3d3fc06aea8110f14ba12ad0b4fb7e5cdf59c7df1cf2dfe9c2024439c',
 32
)
]]></artwork></figure>

<figure><artwork><![CDATA[
info for SALT_3e2m (CBOR Sequence) (37 bytes)
0158209D2AF3A3D3FC06AEA8110F14BA12AD0B4FB7E5CDF59C7DF1CF2DFE9C2024439C
1820
]]></artwork></figure>
<figure><artwork><![CDATA[
SALT_3e2m (Raw Value) (32 bytes)
39 92 a4 4f 33 0f ac fc 25 6a 00 ba 32 0d 77 8a 69 f9 99 70 db 39 8a 61
3f 9c 25 06 8e 0a bd 03
]]></artwork></figure>

<t>PRK_3e2m is specified in Section 4.1.1.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>PRK_3e2m is derived from G_RX using Extract() with the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
PRK_3e2m = Extract( SALT_3e2m, G_RX ) =
         = HMAC-SHA-256( SALT_3e2m, G_RX )
]]></artwork></figure>

<t>where G_RX is the ECDH shared secret calculated from G_X and R, or G_R and X.</t>

<figure><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></figure>
<figure><artwork><![CDATA[
PRK_3e2m (Raw Value) (32 bytes)
7e 23 0e 62 b9 09 ca 74 92 36 7a aa 8a 22 9f 63 06 c5 ac 67 48 21 84 b3
33 62 d2 8d 17 7a 56 e9
]]></artwork></figure>

<t>R constructs the remaining input needed to calculate MAC_2:</t>

<t>MAC_2 = EDHOC-KDF( PRK_3e2m, 2, context_2, mac_length_2 )</t>

<t>context_2 = « ID_CRED_R, TH_2, CRED_R, ? EAD_2 »</t>

<t>CRED_R is identified by a ‘kid’ with byte string value 0x32:</t>

<figure><artwork><![CDATA[
ID_CRED_R =
{
 4 : h'32'
}
]]></artwork></figure>

<figure><artwork><![CDATA[
ID_CRED_R (CBOR Data Item) (4 bytes)
a1 04 41 32
]]></artwork></figure>

<t>CRED_R is an RPK encoded as a CCS:</t>

<figure><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></figure>

<figure><artwork><![CDATA[
CRED_R (CBOR Data Item) (95 bytes)
A2026B6578616D706C652E65647508A101A501020241322001215820BBC34960526EA4D
32E940CAD2A234148DDC21791A12AFBCBAC93622046DD44F02258204519E257236B2A0C
E2023F0931F1F386CA7AFDA64FCDE0108C224C51EABF6072
]]></artwork></figure>

<t>No external authorization data:</t>

<figure><artwork><![CDATA[
EAD_2 (CBOR Sequence) (0 bytes)
]]></artwork></figure>

<t>context_2 = « ID_CRED_R, TH_2, CRED_R, ? EAD_2 »</t>

<figure><artwork><![CDATA[
context_2 (CBOR Sequence) (133 bytes)
a1 04 41 32 58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7
e5 cd f5 9c 7d f1 cf 2d fe 9c 20 24 43 9c a2 02 6b 65 78 61 6d 70 6c 65
2e 65 64 75 08 a1 01 a5 01 02 02 41 32 20 01 21 58 20 bb c3 49 60 52 6e
a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91 a1 2a fb cb ac 93 62 20 46 dd
44 f0 22 58 20 45 19 e2 57 23 6b 2a 0c e2 02 3f 09 31 f1 f3 86 ca 7a fd
a6 4f cd e0 10 8c 22 4c 51 ea bf 60 72
]]></artwork></figure>

<figure><artwork><![CDATA[
context_2 (CBOR byte string) (135 bytes)
58 85 a1 04 41 32 58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b
4f b7 e5 cd f5 9c 7d f1 cf 2d fe 9c 20 24 43 9c a2 02 6b 65 78 61 6d 70
6c 65 2e 65 64 75 08 a1 01 a5 01 02 02 41 32 20 01 21 58 20 bb c3 49 60
52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91 a1 2a fb cb ac 93 62 20
46 dd 44 f0 22 58 20 45 19 e2 57 23 6b 2a 0c e2 02 3f 09 31 f1 f3 86 ca
7a fd a6 4f cd e0 10 8c 22 4c 51 ea bf 60 72
]]></artwork></figure>

<t>MAC_2 is computed through Expand() using the EDHOC hash algorithm, see Section 4.1.2 of <xref 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>

<figure><artwork><![CDATA[
info =
(
 2,
 h'a104413258209d2af3a3d3fc06aea8110f14ba12ad0b4fb7e5cdf59c7df1cf2d
 fe9c2024439ca2026b6578616d706c652e65647508a101a5010202413220012158
 20bbc34960526ea4d32e940cad2a234148ddc21791a12afbcbac93622046dd44f0
 2258204519e257236b2a0ce2023f0931f1f386ca7afda64fcde0108c224c51eabf
 6072',
 8
)
]]></artwork></figure>

<t>where the last value is the EDHOC MAC length.</t>

<figure><artwork><![CDATA[
info for MAC_2 (CBOR Sequence) (137 bytes)
025885A104413258209D2AF3A3D3FC06AEA8110F14BA12AD0B4FB7E5CDF59C7DF1CF2D
FE9C2024439CA2026B6578616D706C652E65647508A101A501020241322001215820BB
C34960526EA4D32E940CAD2A234148DDC21791A12AFBCBAC93622046DD44F022582045
19E257236B2A0CE2023F0931F1F386CA7AFDA64FCDE0108C224C51EABF607208
]]></artwork></figure>

<figure><artwork><![CDATA[
MAC_2 (Raw Value) (8 bytes)
ad 01 bc 30 c6 91 11 76
]]></artwork></figure>

<figure><artwork><![CDATA[
MAC_2 (CBOR Data Item) (9 bytes)
48 ad 01 bc 30 c6 91 11 76
]]></artwork></figure>

<t>Since METHOD = 3, Signature_or_MAC_2 is MAC_2:</t>

<figure><artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (8 bytes)
ad 01 bc 30 c6 91 11 76
]]></artwork></figure>

<figure><artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (9 bytes)
48 ad 01 bc 30 c6 91 11 76
]]></artwork></figure>

<t>R constructs PLAINTEXT_2 without padding:</t>

<figure><artwork><![CDATA[
PAD_2 (CBOR sequence of simple type) (0 bytes)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_2 =
(
 ? PAD_2,
 ID_CRED_R / bstr / -24..23,
 Signature_or_MAC_2,
 ? EAD_2
)
]]></artwork></figure>

<t>Since ID_CRED_R contains a single ‘kid’ parameter, only the byte string value is included in the plaintext, represented as described in Section 3.3.2 of <xref 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>

<figure><artwork><![CDATA[
PLAINTEXT_2 (CBOR Sequence) (10 bytes)
32 48 ad 01 bc 30 c6 91 11 76
]]></artwork></figure>

<t>The input needed to calculate KEYSTREAM_2 is defined in Section 4.1.2 of
<xref target="I-D.ietf-lake-edhoc"/>, using Expand() with the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
KEYSTREAM_2 = EDHOC-KDF( PRK_2e, 0, TH_2, plaintext_length ) =
            = HKDF-Expand( PRK_2e, info, plaintext_length )
]]></artwork></figure>

<t>where plaintext_length is the length of PLAINTEXT_2, and info for KEYSTREAM_2 is:</t>

<figure><artwork><![CDATA[
info =
(
 0,
 h'9d2af3a3d3fc06aea8110f14ba12ad0b4fb7e5cdf59c7df1cf2dfe9c2024439c',
 10
)
]]></artwork></figure>

<t>where last value is the length of PLAINTEXT_2.</t>

<figure><artwork><![CDATA[
info for KEYSTREAM_2 (CBOR Sequence) (36 bytes)
0058209D2AF3A3D3FC06AEA8110F14BA12AD0B4FB7E5CDF59C7DF1CF2DFE9C2024439C
0A
]]></artwork></figure>
<figure><artwork><![CDATA[
KEYSTREAM_2 (Raw Value) (10 bytes)
b9 c7 41 6a a3 35 46 54 15 4f
]]></artwork></figure>

<t>R calculates CIPHERTEXT_2 as XOR between PLAINTEXT_2 and KEYSTREAM_2:</t>

<figure><artwork><![CDATA[
CIPHERTEXT_2 (Raw Value) (10 bytes)
8b 8f ec 6b 1f 05 80 c5 04 39
]]></artwork></figure>

<t>R constructs message_2:</t>

<figure><artwork><![CDATA[
message_2 =
(
 G_Y_CIPHERTEXT_2,
 C_R
)
]]></artwork></figure>

<t>where G_Y_CIPHERTEXT_2 is the bstr encoding of the concatenation of
the raw values of G_Y and CIPHERTEXT_2.</t>

<figure><artwork><![CDATA[
message_2 (CBOR Sequence) (45 bytes)
58 2a 41 97 01 d7 f0 0a 26 c2 dc 58 7a 36 dd 75 25 49 f3 37 63 c8 93 42
2c 8e a0 f9 55 a1 3a 4f f5 d5 8b 8f ec 6b 1f 05 80 c5 04 39 27
]]></artwork></figure>

</section>
<section anchor="message3-1" title="message_3">

<t>The transcript hash TH_3 is calculated using the EDHOC hash algorithm:</t>

<t>TH_3 = H( TH_2, PLAINTEXT_2 )</t>

<figure><artwork><![CDATA[
Input to calculate TH_3 (CBOR Sequence) (44 bytes)
58 20 9d 2a f3 a3 d3 fc 06 ae a8 11 0f 14 ba 12 ad 0b 4f b7 e5 cd f5 9c
7d f1 cf 2d fe 9c 20 24 43 9c 32 48 ad 01 bc 30 c6 91 11 76
]]></artwork></figure>

<figure><artwork><![CDATA[
TH_3 (Raw Value) (32 bytes)
08 5d e1 6d 9c 82 35 cb f5 7c 46 d0 6d 16 d4 56 a6 c0 ad 81 aa 4b 44 8b
6a bc 98 dc ba 61 25 eb
]]></artwork></figure>
<figure><artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 08 5d e1 6d 9c 82 35 cb f5 7c 46 d0 6d 16 d4 56 a6 c0 ad 81 aa 4b
44 8b 6a bc 98 dc ba 61 25 eb
]]></artwork></figure>

<t>Since METHOD = 3, I authenticates using static DH. The EDHOC key exchange algorithm is based on the same curve as for the ephemeral keys, which is P-256, since the selected cipher suite is 2.</t>

<t>I’s static Diffie-Hellman key pair for use with P-256:</t>

<figure><artwork><![CDATA[
Initiator's private authentication key
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></figure>

<figure><artwork><![CDATA[
Initiator's public authentication key, 'x'-coordinate
G_I (Raw Value) (32 bytes)
ac 75 e9 ec e3 e5 0b fc 8e d6 03 99 88 95 22 40 5c 47 bf 16 df 96 66
0a 41 29 8c b4 30 7f 7e b6
]]></artwork></figure>
<figure><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></figure>

<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 Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>, using Expand() with the EDHOC hash algorithm:.</t>

<figure><artwork><![CDATA[
SALT_4e3m  = EDHOC-KDF( PRK_3e2m, 5, TH_3, hash_length ) =
           = HKDF-Expand( PRK_3e2m, info, hash_length )
]]></artwork></figure>

<t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for SALT_4e3m is:</t>

<figure><artwork><![CDATA[
info =
(
 5,
 h'085de16d9c8235cbf57c46d06d16d456a6c0ad81aa4b448b6abc98dcba61
 25eb',
 32
)
]]></artwork></figure>

<figure><artwork><![CDATA[
info for SALT_4e3m (CBOR Sequence) (37 bytes)
055820085DE16D9C8235CBF57C46D06D16D456A6C0AD81AA4B448B6ABC98DCBA6125EB
1820
]]></artwork></figure>
<figure><artwork><![CDATA[
SALT_4e3m (Raw Value) (32 bytes)
b8 42 a7 11 41 6d 16 f6 93 24 96 9f 68 bd a7 46 62 9d 71 b9 9d 0a 88 16
0e 12 b9 4f 45 58 ec fd
]]></artwork></figure>

<t>PRK_4e3m is specified in Section 4.1.1.3 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>PRK_4x3m is derived as specified in Section 4.1.3 of <xref target="I-D.ietf-lake-edhoc"/>.
Since I authenticates with static DH (METHOD = 3), PRK_4x3m is derived
from G_IY using Extract() with the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
PRK_4x3m = Extract(SALT_4e3m, G_IY) =
         = HMAC-SHA-256(SALT_4e3m, G_IY)
]]></artwork></figure>

<t>where G_IY is the ECDH shared secret calculated from G_I and Y, or G_Y and I.</t>

<figure><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></figure>
<figure><artwork><![CDATA[
PRK_4x3m (Raw Value) (32 bytes)
9e da 8c d7 55 ae 3b 80 b4 7e 8d db b8 d7 c5 fe 2b 62 b4 62 e4 bc ba 2c
6c 8e a3 6e e5 fb 60 4d
]]></artwork></figure>

<t>I constructs the remaining input needed to calculate MAC_3:</t>

<t>MAC_3 = EDHOC-KDF( PRK_4e3m, 6, context_3, mac_length_3 )</t>

<t>context_3 = « ID_CRED_I, TH_3, CRED_I, ? EAD_3 »</t>

<t>CRED_I is identified by a ‘kid’ with byte string value 0x2b:</t>

<figure><artwork><![CDATA[
ID_CRED_I =
{
 4 : h'2b'
}
]]></artwork></figure>

<t>ID_CRED_I (CBOR Data Item) (4 bytes)
a1 04 41 2b</t>

<t>CRED_I is an RPK encoded as a CCS:</t>

<figure><artwork><![CDATA[
{                                              /CCS/
  2 : "42-50-31-FF-EF-37-32-39",               /sub/
  8 : {                                        /cnf/
    1 : {                                      /COSE_Key/
      1 : 1,                                   /kty/
      2 : h'2b',                               /kid/
     -1 : 4,                                   /crv/
     -2 : h'AC75E9ECE3E50BFC8ED6039988952240
            5C47BF16DF96660A41298CB4307F7EB6'  /x/
     -3 : h'6E5DE611388A4B8A8211334AC7D37ECB
            52A387D257E6DB3C2A93DF21FF3AFFC8'  /y/
    }
  }
}
]]></artwork></figure>

<figure><artwork><![CDATA[
CRED_I (CBOR Data Item) (107 bytes)
A2027734322D35302D33312D46462D45462D33372D33322D333908A101A5010202412B
2001215820AC75E9ECE3E50BFC8ED60399889522405C47BF16DF96660A41298CB4307F
7EB62258206E5DE611388A4B8A8211334AC7D37ECB52A387D257E6DB3C2A93DF21FF3A
FFC8
]]></artwork></figure>

<t>No external authorization data:</t>

<figure><artwork><![CDATA[
EAD_3 (CBOR Sequence) (0 bytes)
]]></artwork></figure>

<t>context_3 = « ID_CRED_I, TH_3, CRED_I, ? EAD_3 »</t>

<figure><artwork><![CDATA[
context_3 (CBOR Sequence) (145 bytes)
A104412B5820085DE16D9C8235CBF57C46D06D16D456A6C0AD81AA4B448B6ABC98DCBA
6125EBA2027734322D35302D33312D46462D45462D33372D33322D333908A101A50102
02412B2001215820AC75E9ECE3E50BFC8ED60399889522405C47BF16DF96660A41298C
B4307F7EB62258206E5DE611388A4B8A8211334AC7D37ECB52A387D257E6DB3C2A93DF
21FF3AFFC8
]]></artwork></figure>

<figure><artwork><![CDATA[
context_3 (CBOR byte string) (147 bytes)
5891A104412B5820085DE16D9C8235CBF57C46D06D16D456A6C0AD81AA4B448B6ABC98
DCBA6125EBA2027734322D35302D33312D46462D45462D33372D33322D333908A101A5
010202412B2001215820AC75E9ECE3E50BFC8ED60399889522405C47BF16DF96660A41
298CB4307F7EB62258206E5DE611388A4B8A8211334AC7D37ECB52A387D257E6DB3C2A
93DF21FF3AFFC8
]]></artwork></figure>

<t>MAC_3 is computed through Expand() using the EDHOC hash algorithm, see
Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>:</t>

<figure><artwork><![CDATA[
MAC_3 = HKDF-Expand(PRK_4e3m, info, mac_length_3), where
]]></artwork></figure>

<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>

<figure><artwork><![CDATA[
info =
(
 6,
 h'A104412B5820085DE16D9C8235CBF57C46D06D16D456A6C0AD81AA4B448B6ABC
 98DCBA6125EBA2027734322D35302D33312D46462D45462D33372D33322D333908
 A101A5010202412B2001215820AC75E9ECE3E50BFC8ED60399889522405C47BF16
 DF96660A41298CB4307F7EB62258206E5DE611388A4B8A8211334AC7D37ECB52A3
 87D257E6DB3C2A93DF21FF3AFFC8',
 8
)
]]></artwork></figure>

<t>where the last value is the EDHOC MAC length.</t>

<figure><artwork><![CDATA[
info for MAC_3 (CBOR Sequence) (149 bytes)
065891A104412B5820085DE16D9C8235CBF57C46D06D16D456A6C0AD81AA4B448B6ABC
98DCBA6125EBA2027734322D35302D33312D46462D45462D33372D33322D333908A101
A5010202412B2001215820AC75E9ECE3E50BFC8ED60399889522405C47BF16DF96660A
41298CB4307F7EB62258206E5DE611388A4B8A8211334AC7D37ECB52A387D257E6DB3C
2A93DF21FF3AFFC808
]]></artwork></figure>

<figure><artwork><![CDATA[
MAC_3 (Raw Value) (8 bytes)
35 4f 0b c2 74 1e ea c6
]]></artwork></figure>

<figure><artwork><![CDATA[
MAC_3 (CBOR Data Item) (9 bytes)
48 35 4f 0b c2 74 1e ea c6
]]></artwork></figure>

<t>Since METHOD = 3, Signature_or_MAC_3 is MAC_3:</t>

<figure><artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (8 bytes)
35 4f 0b c2 74 1e ea c6
]]></artwork></figure>

<figure><artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (9 bytes)
48 35 4f 0b c2 74 1e ea c6b
]]></artwork></figure>

<t>I constructs PLAINTEXT_3 without padding:</t>

<figure><artwork><![CDATA[
PAD_3 (CBOR sequence of simple type) (0 bytes)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_3 =
(
 ? PAD_3,
 ID_CRED_I / bstr / -24..23,
 Signature_or_MAC_3,
 ? EAD_3
)
]]></artwork></figure>

<t>Since ID_CRED_I contains a single ‘kid’ parameter, only the byte string value is included in the plaintext, represented as described in Section 3.3.2 of <xref 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>

<figure><artwork><![CDATA[
PLAINTEXT_3 (CBOR Sequence) (10 bytes)
2b 48 35 4f 0b c2 74 1e ea c6
]]></artwork></figure>

<t>I constructs the associated data for message_3:</t>

<figure><artwork><![CDATA[
A_3 =
(
 "Encrypt0",
 h'',
 TH_3
)
]]></artwork></figure>

<figure><artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
8368456E637279707430405820085DE16D9C8235CBF57C46D06D16D456A6C0AD81AA4B
448B6ABC98DCBA6125EB
]]></artwork></figure>

<t>I constructs the input needed to derive the key K_3, see Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
K_3 = EDHOC-KDF( PRK_3e2m, 3, TH_3, key_length )
    = HKDF-Expand( PRK_3e2m, info, key_length ),
]]></artwork></figure>

<t>where key_length is the key length of EDHOC AEAD algorithm, and info for K_3 is:</t>

<figure><artwork><![CDATA[
info =
(
 3,
 h'085de16d9c8235cbf57c46d06d16d456a6c0ad81aa4b448b6abc98dcba6125eb',
 16
)
]]></artwork></figure>

<t>where the last value is the key length of EDHOC AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for K_3 (CBOR Sequence) (36 bytes)
035820085DE16D9C8235CBF57C46D06D16D456A6C0AD81AA4B448B6ABC98DCBA6125EB
10
]]></artwork></figure>
<figure><artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
20 68 72 4b 29 0c db 72 c3 55 99 cd 5e b9 87 97
]]></artwork></figure>

<t>I constructs the input needed to derive the nonce IV_3, see Section 4.1.2 of
<xref target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
IV_3 = EDHOC-KDF( PRK_3e2m, 4, TH_3, iv_length )
     = HKDF-Expand( PRK_3e2m, info, iv_length ),
]]></artwork></figure>

<t>where iv_length is the nonce length of EDHOC AEAD algorithm, and info for IV_3 is:</t>

<figure><artwork><![CDATA[
info =
(
 4,
 h'085de16d9c8235cbf57c46d06d16d456a6c0ad81aa4b448b6abc98dcba6125eb',
 13
)
]]></artwork></figure>

<t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for IV_3 (CBOR Sequence) (36 bytes)
045820085DE16D9C8235CBF57C46D06D16D456A6C0AD81AA4B448B6ABC98DCBA6125EB
0D
]]></artwork></figure>
<figure><artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
cb db 34 e5 93 8e ef 39 fa 9c 28 f5 82
]]></artwork></figure>

<t>I calculates CIPHERTEXT_3 as ‘ciphertext’ of COSE_Encrypt0 applied
using the EDHOC AEAD algorithm with plaintext PLAINTEXT_3, additional data
A_3, key K_3 and nonce IV_3.</t>

<figure><artwork><![CDATA[
CIPHERTEXT_3 (Raw Value) (18 bytes)
c2 5c 84 20 03 67 64 46 2f 57 35 79 86 61 6c 8d 21 b0
]]></artwork></figure>

<t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>

<figure><artwork><![CDATA[
message_3 (CBOR Sequence) (19 bytes)
52 c2 5c 84 20 03 67 64 46 2f 57 35 79 86 61 6c 8d 21 b0
]]></artwork></figure>

<t>The transcript hash TH_4 is calculated using the EDHOC hash algorithm:</t>

<t>TH_4 = H( TH_3, PLAINTEXT_3 )</t>

<figure><artwork><![CDATA[
Input to calculate TH_4 (CBOR Sequence) (44 bytes)
58 20 08 5d e1 6d 9c 82 35 cb f5 7c 46 d0 6d 16 d4 56 a6 c0 ad 81 aa 4b
44 8b 6a bc 98 dc ba 61 25 eb 2b 48 35 4f 0b c2 74 1e ea c6
]]></artwork></figure>

<figure><artwork><![CDATA[
TH_4 (Raw Value) (32 bytes)
a4 09 7a 6b 9e 39 f7 d3 dc 4f 8a f2 c4 a8 64 5b 37 3d 7a f5 86 f4 15 df
62 6e 16 b6 ac 27 55 d3
]]></artwork></figure>

<figure><artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 a4 09 7a 6b 9e 39 f7 d3 dc 4f 8a f2 c4 a8 64 5b 37 3d 7a f5 86 f4
15 df 62 6e 16 b6 ac 27 55 d3
]]></artwork></figure>

</section>
<section anchor="message4-1" title="message_4">

<t>No external authorization data:</t>

<t>EAD_4 (CBOR Sequence) (0 bytes)</t>

<t>R constructs the plaintext PLAINTEXT_4:</t>

<figure><artwork><![CDATA[
PLAINTEXT_4 =
(
 ? EAD_4
)
]]></artwork></figure>

<t>PLAINTEXT_4 (CBOR Sequence) (0 bytes)</t>

<t>R constructs the associated data for message_4:</t>

<figure><artwork><![CDATA[
A_4 =
(
 "Encrypt0",
 h'',
 TH_4
)
]]></artwork></figure>

<figure><artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
8368456E637279707430405820A4097A6B9E39F7D3DC4F8AF2C4A8645B373D7AF586F4
15DF626E16B6AC2755D3
]]></artwork></figure>

<t>R constructs the input needed to derive the EDHOC message_4 key, see
Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
K_4   = EDHOC-KDF( PRK_4e3m, 8, TH_4, key_length )
      = HKDF-Expand( PRK_4x3m, info, key_length )
]]></artwork></figure>

<t>where key_length is the key length of the EDHOC AEAD algorithm,
and info for EDHOC_K_4 is:</t>

<figure><artwork><![CDATA[
 info =
(
 8,
 h'a4097a6b9e39f7d3dc4f8af2c4a8645b373d7af586f415df626e16b6ac2755d3',
 16
)
]]></artwork></figure>

<t>where the last value is the key length of EDHOC AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for K_4 (CBOR Sequence) (36 bytes)
085820A4097A6B9E39F7D3DC4F8AF2C4A8645B373D7AF586F415DF626E16B6AC2755D3
10
]]></artwork></figure>
<figure><artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
d2 33 fd c7 6e 45 c4 59 48 af 81 f0 72 34 1d b6
]]></artwork></figure>

<t>R constructs the input needed to derive the EDHOC message_4 nonce, see Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>

<figure><artwork><![CDATA[
      IV_4 = EDHOC-KDF( PRK_4e3m, 9, TH_4, iv_length )
           = HKDF-Expand( PRK_4x3m, info, iv_length )
]]></artwork></figure>

<t>where iv_length is the nonce length of EDHOC AEAD algorithm,
and info for EDHOC_IV_4 is:</t>

<figure><artwork><![CDATA[
info =
 (
 9,
 h'a4097a6b9e39f7d3dc4f8af2c4a8645b373d7af586f415df626e16b6ac2755d3',
 13
)
]]></artwork></figure>

<t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for IV_4 (CBOR Sequence) (36 bytes)
095820A4097A6B9E39F7D3DC4F8AF2C4A8645B373D7AF586F415DF626E16B6AC2755D3
0D
]]></artwork></figure>
<figure><artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
aa 33 90 cd 64 93 1a e0 40 10 d8 a8 38
]]></artwork></figure>

<t>R calculates CIPHERTEXT_4 as ‘ciphertext’ of COSE_Encrypt0 applied
  using the EDHOC AEAD algorithm with plaintext PLAINTEXT_4, additional data
  A_4, key K_4 and nonce IV_4.</t>

<figure><artwork><![CDATA[
CIPHERTEXT_4 (8 bytes)
dd f9 77 df 1c ac 7f c3
]]></artwork></figure>

<t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>

<figure><artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 dd f9 77 df 1c ac 7f c3
]]></artwork></figure>

</section>
<section anchor="out-and-exporter2" title="PRK_out and PRK_exporter">

<t>PRK_out is specified in Section 4.1.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<figure><artwork><![CDATA[
PRK_out = EDHOC-KDF( PRK_4e3m, 7, TH_4, hash_length ) =
        = HKDF-Expand( PRK_4e3m, info,  hash_length )
]]></artwork></figure>

<t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for PRK_out is:</t>

<figure><artwork><![CDATA[
info =
(
 7,
  h'a4097a6b9e39f7d3dc4f8af2c4a8645b373d7af586f415df626e16b6ac2755d3',
 32
)
]]></artwork></figure>

<t>where the last value is the length of EDHOC hash algorithm.</t>

<figure><artwork><![CDATA[
info for PRK_out (CBOR Sequence) (37 bytes)
075820A4097A6B9E39F7D3DC4F8AF2C4A8645B373D7AF586F415DF626E16B6AC2755D3
1820
]]></artwork></figure>

<figure><artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
c9 3a db 8f cd a3 ec ba 4b 8b 7a e3 32 db 1d 17 71 e0 a2 fb 9d da 3c 0e
06 fe fa bc 14 cc 17 f2
]]></artwork></figure>

<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>

<figure><artwork><![CDATA[
EDHOC-Exporter( label, context, length )
= EDHOC-KDF( PRK_exporter, label, context, length )
]]></artwork></figure>

<t>where PRK_exporter is derived from PRK_out:</t>

<figure><artwork><![CDATA[
 PRK_exporter = EDHOC-KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork></figure>

<t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for the PRK_exporter is:</t>

<figure><artwork><![CDATA[
info =
(
 10,
 h'',
 32
)
]]></artwork></figure>

<t>where the last value is the length of EDHOC hash algorithm.</t>

<figure><artwork><![CDATA[
info for PRK_exporter (CBOR Sequence) (4 bytes)
0a 40 18 20
]]></artwork></figure>

<figure><artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
86 78 e6 a9 ea 3f a1 d2 ee 2d be 99 bd a9 76 5c ee f5 c4 47 be 6f f4 ea
0b 21 fb 63 cc 82 2f 48
]]></artwork></figure>

</section>
<section anchor="oscore-parameters" title="OSCORE Parameters">

<t>The derivation of OSCORE parameters is specified in Appendix A.1 of
<xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>The AEAD and Hash algorithms to use in OSCORE are given by the selected cipher suite:</t>

<figure><artwork><![CDATA[
Application AEAD Algorithm (int)
10
]]></artwork></figure>

<figure><artwork><![CDATA[
Application Hash Algorithm (int)
-16
]]></artwork></figure>

<t>The mapping from EDHOC connection identifiers to OSCORE Sender/Recipient IDs
is defined in Section 3.3.3 of <xref 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>

<figure><artwork><![CDATA[
Client's OSCORE Sender ID (Raw Value) (1 bytes)
27
]]></artwork></figure>

<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>

<figure><artwork><![CDATA[
Server's OSCORE Sender ID (Raw Value) (1 bytes)
37
]]></artwork></figure>

<t>The OSCORE Master Secret is computed through Expand() using the
Application hash algorithm, see Appendix A.1 of <xref target="I-D.ietf-lake-edhoc"/>:</t>

<figure><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></figure>

<t>where oscore_key_length is by default the key length of the Application AEAD
algorithm, and info for the OSCORE Master Secret is:</t>

<figure><artwork><![CDATA[
info =
(
 0,
 h'',
 16
)
]]></artwork></figure>

<t>where the last value is the key length of Application AEAD algorithm.</t>

<figure><artwork><![CDATA[
info for OSCORE Master Secret (CBOR Sequence) (3 bytes)
00 40 10
]]></artwork></figure>

<figure><artwork><![CDATA[
OSCORE Master Secret (Raw Value) (16 bytes)
f3 fb 21 49 fd 08 c1 8a 40 93 8a e5 70 3b fb 38
]]></artwork></figure>

<t>The OSCORE Master Salt is computed through Expand() using the Application hash algorithm, see Section 4.2 of <xref target="I-D.ietf-lake-edhoc"/>:</t>

<figure><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></figure>

<t>where oscore_salt_length is the length of the OSCORE Master Salt, and info for the OSCORE Master Salt is:</t>

<figure><artwork><![CDATA[
info =
(
 1,
 h'',
 8
)
]]></artwork></figure>

<t>where the last value is the length of the OSCORE Master Salt.</t>

<figure><artwork><![CDATA[
info for OSCORE Master Salt (CBOR Sequence) (3 bytes)
01 40 08
]]></artwork></figure>

<figure><artwork><![CDATA[
OSCORE Master Salt (Raw Value) (8 bytes)
20 41 51 35 27 9a 4e e4
]]></artwork></figure>

</section>
<section anchor="key-update-1" title="Key Update">

<t>ey update is defined in Section 4.2.2 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<figure><artwork><![CDATA[
EDHOC-KeyUpdate( context ):
PRK_out = EDHOC-KDF( PRK_out, 11, context, hash_length )
        = HKDF-Expand( PRK_out, info, hash_length )
]]></artwork></figure>

<t>where hash_length is the length of the output of the EDHOC hash function, context for KeyUpdate is</t>

<figure><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></figure>
<figure><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></figure>

<t>and where info for key update is:</t>

<figure><artwork><![CDATA[
info =
(
 11,
 h'a01158fdb820890cd6be169602b8bcea',
 32
)
]]></artwork></figure>

<figure><artwork><![CDATA[
PRK_out after KeyUpdate (Raw Value) (32 bytes)
83 de 3f a7 eb 2a a7 b0 0a 71 10 9f 41 5f a2 86 52 fc 15 4e 37 69 56 c5
c3 74 bd a8 a4 3d 45 07
]]></artwork></figure>

<t>After key update the PRK_exporter needs to be derived anew:</t>

<figure><artwork><![CDATA[
 PRK_exporter = EDHOC-KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork></figure>

<t>where info and hash_length as unchanged as in <xref target="out-and-exporter2"/>.</t>

<figure><artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
a8 05 45 f5 51 94 8b 71 b2 b6 b0 04 88 ed 47 e8 74 3a 68 b1 ca a0 e8 20
cb 3f 94 ad 45 41 e6 a6
]]></artwork></figure>

<t>The OSCORE Master Secret is derived with the updated PRK_exporter:</t>

<figure><artwork><![CDATA[
OSCORE Master Secret =
= HKDF-Expand(PRK_exporter, info, oscore_key_length)
]]></artwork></figure>

<t>where info and key_length are unchanged as in <xref target="oscore-param"/>.</t>

<figure><artwork><![CDATA[
OSCORE Master Secret after KeyUpdate (Raw Value) (16 bytes)
5d 96 c2 fb 5c 1a d1 2e 32 4a 59 f4 a4 cd e2 5b
]]></artwork></figure>

<t>The OSCORE Master Salt is derived with the updated PRK_exporter:</t>

<figure><artwork><![CDATA[
OSCORE Master Salt = HKDF-Expand(PRK_exporter, info, salt_length)
]]></artwork></figure>

<t>where info and salt_length are unchanged as in <xref target="oscore-param"/>.</t>

<figure><artwork><![CDATA[
OSCORE Master Salt after KeyUpdate (Raw Value) (8 bytes)
94 12 9c a9 a2 2f 1e fc
]]></artwork></figure>

</section>
</section>
<section anchor="security" title="Security Considerations">

<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" title="IANA Considerations">

<t>There are no IANA considerations.</t>

</section>


  </middle>

  <back>


    <references title='Informative References'>

&I-D.ietf-lake-edhoc;
&RFC7748;
&RFC8032;
&RFC8392;
&RFC8949;
<reference anchor="CborMe" target="http://cbor.me/">
  <front>
    <title>CBOR Playground</title>
    <author initials="C." surname="Bormann">
      <organization></organization>
    </author>
    <date year="2018" month="May"/>
  </front>
</reference>


    </references>


<section numbered="no" anchor="acknowledgments" title="Acknowledgments">

<t>The authors want to thank all people verifying EDHOC test vectors and/or contributing to the interoperability testing including: Christian Amsüss, Timothy Claeys, Stefan Hristozov, Rikard Höglund, Christos Koulamas, Francesca Palombini, Lidia Pocero, Peter van der Stok, and Michel Veillette.</t>

</section>


  </back>

<!-- ##markdown-source:
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
s/4/uJUTc8Q4AQA=

-->

</rfc>

