<?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-01" 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="10"/>

    
    
    

    <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>A more extensive test vector suite and related code that was used to generate trace 1 can be found at: https://github.com/lake-wg/edhoc/tree/master/test-vectors-11.
The test vector for trace 2 can be found at: https://github.com/lake-wg/edhoc/tree/master/test-vectors-11/p256.</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 (CBOR sequence of simple type) (0 bytes)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_2 =
(
 ? PAD,
 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 (CBOR sequence of simple type) (0 bytes)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_3 =
(
 ? PAD,
 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)
67 ec d7 d5 bb 49 46 17
]]></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 f5 7d c3 4e d5 49 17
]]></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 (CBOR sequence of simple type) (0 bytes)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_2 =
(
 ? PAD,
 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 (CBOR sequence of simple type) (0 bytes)
]]></artwork></figure>

<figure><artwork><![CDATA[
PLAINTEXT_3 =
(
 ? PAD,
 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) (20 bytes)
27 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)
25 54 9b 72 55 ca fa 1d
]]></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)
3a ef 12 c4 27 00 cb 60
]]></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">

</section>


  </back>

<!-- ##markdown-source:
H4sIACEcy2IAA+2965IbR5Im+j+fIkz9g+RYVTHjkjfYqndwbdVydLEiu0c6
Y2O0vJJYVQF1AJQktoznVfYh1uy8wLzY8c/zDmQmUIWipufYUlQRlciM9PDw
e7h7XF5eWrvl7jYdiXebME63Yp2J+eyb76dWso5X4R19kWzCbHe5THfZ5W34
c3q54xsvbWmFUbRJfxlZ1vJ+MxK7zcN2p2w7sJUVh7uRWK6ytWXF62S5+jAS
D/S8b90vR+JPIg5X4mGbinCzCT+Jl8tMhLe34lO6fSXWG/Ex3H4UH9NNagmx
W8cjfEEft+vNbpNm2+r3T3fNX+nOJL3ffRwJZVnhw+7jejOyLkU+h7/8x/+7
oXe+TW/DVZJu8PTDJv+qcW29ITjnm2W83a5X9Hsxv+alLYGQ0tzezi+la4Sx
xVt68c8f17d39G28fljtNp/o61/TJMX96V24vB2JD2t6/dW2eNU/p8WAV/H6
roLxf6w/rsQPm/ThP/6X+Dbc7Yo3LlfL3TK8pXn+jybYhzd+Oej/J0F2dVe8
qRv4b8NN+jPhkmhl2Yb62zayyxsY2vHbt2MxnvzL9z814G1dLCHW6tL2bfF/
hdEy3fz9P/73r014f1gDrzW8dwCGsM3v+udwuw3D6Hb9aR/geC3eLW/XcdgP
b/U9g3tz/XbeALT49YlIvQMAVzt+wT9vlgSuZa3WG0Lz8pcUPEXcU/8mxPXl
7KpmwjT5SJxBl28WU88zfvHRt7UqP+qg+hiYgMeYRuvNtymuEr+Emw8A++Nu
dz96/Tqmr67u0tf5d7lImE6+vxE/3IafPmxoFgl/VXKW4D+Xxb9AIOFueiUm
AHq14utJuGNMfxLKlr5lXV5eEvK2ECA7y3r3cbkVJGUe7tLVjvC02oU0CLH5
XSrS38K7+9tU7GqhdP8xvaMVvRWzZZYt08tv0ttbepP4/pd0I6bfv52Llyy4
Xl3lL7pbJskt4fRP4poWYJ08xLslMYHFN4nff+/A5+fPgkAKxe3yw8fdryl+
8nwJviVJtDQRP6efCLb4Y7j6kIr7zZoWen0rknS7/LCirzNIL3rs9hPmg4ku
cXmb7nYkA7dXomfOhLD1jl+wa0vh+h2bh9X2Qvy63H0kVN8/7C7E+mFH/9Kz
CV3ZpZu7NFnSGHiEhtjSC8Um3T7c7rYkG8V2SQhdZp/ELt0CGLwCl1JAEgI1
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
whAJkcFt85nGpKt8bisLU9vFxgSZ6XSbx+QURjhWNvHQIkP52GOSEQpQyXZH
Iolp1ZRWHyp09iWpp6gY8rk7CAz7FAVbZL2TmqPX+gkyj/JjicmeJ72uOKOZ
vkUPEoMZkPmlYmz7AGqNTZuUk1dcW5gWyV8/NTtEF3saHafW58vs1rsV7b0I
3cwO0e391OtSsJe/5VE2XWeHXD8hO0RFe9kh113ZISqqskOs+sZTskJU1ATu
yyaDGHXp2JdaXi5Iry0utXep1aUODhJD/oGSQU5LzehMBqE1eUoyiHl6Msh4
6jnzYD6d67ljTxZTfz5zbR0Evh84Shn7IMTmTI03WZASXASu69pjI1XgTydG
297Cm09cJGl0JIO4c9KnrpTa90lj+mNf0Wdt6PUz7c2nk8P3qLH2vZlyvLk7
m+ipwultCyUXCz1eEJzHkkH2skE6mzDZldLHdo/naaOVmmlH2/RTa6lmxjUu
/XTwk654/FPxz2B/G0hNrHof6Bheh9BoAY/5PtAxtA1hyQKanpwn0hGOGMgT
eYxcq56uHz4Mb9fho3xbT03Os8qs3Cw7d52tfKHPXWer5pdz1tmq2WEof0N3
52+Y+pgEH/uR56LZqq3fc9Bs1fx0Dpqttlh6KpqtttRp2hK5OXBuUsXJR3+X
ee6lFbKfWdE8WLRpftSZFXVqxbCxMphaoR+dWqGH/MC6pdW5BJiP0/TBnkaF
+Tj7ov3xpJiP06cmT6fHIp1iSBV+kZSLTqlcd8Bwn0NoWOcvFxbKOm+lyjWy
nr5IzeWx9tenPxdD9yQuYGMr41R9Li2UKTK74t5cjK6odzNX4fhwJ+Ri6DIX
Qw/mYjzDlLrGfMr8ol7Pr96Z0V8gG2MvHUMfT8e4PjkdQ7fSMaqz29vpGNf/
VdMxyP95UjqGivrSMfDNE9MxVF86RpdkrNtfROIkjjuIRITb7TpecuwH9jjL
4WqXstCf431i+qo8Y/6rgxPeYIAfdDcad/JSbWz72vVJVs9dErNe4NkeyUJj
P1a8W50R0YG578de8jBeddbiG1gpj0lAvTi+WQvMvOkK5+QRc116MAcHYeLP
kUB785mLUh23D748PEayq8X1fqrJsC2lnyWm3oym18dhCnH6gZhdM+lOOuli
pUayiX6eSHxXHP7NvqKqD4hSNgLsnsI2l8KZcNx3TyEt3HGwVxcnKKeLAuxx
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
Wf8fneUpODk4AQA=

-->

</rfc>

