<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.31 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-traces-05" category="info" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title>Traces of EDHOC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-traces-05"/>
    <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="2023" month="April" day="28"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document contains some example traces of Ephemeral Diffie-Hellman Over COSE (EDHOC).</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>EDHOC <xref target="I-D.ietf-lake-edhoc"/> is a lightweight authenticated key exchange protocol designed for highly constrained settings. This document contains annotated traces of EDHOC protocol runs, with input, output, and intermediate processing results to simplify testing of implementations.</t>
      <t>The document contains two traces:</t>
      <ul spacing="normal">
        <li>
          <xref target="sec-trace-1"/> - Authentication with signature keys identified by the hash value of the X.509 certificates (provided in <xref target="certs"/>). The endpoints use EdDSA <xref target="RFC8032"/> for authentication and X25519 <xref target="RFC7748"/> for ephemeral-ephemeral Diffie-Hellman key exchange.</li>
        <li>
          <xref target="sec-trace-2"/> - Authentication with static Diffie-Hellman keys identified by short key identifiers labelling CWT Claim Sets (CCSs) <xref target="RFC8392"/>. The endpoints use NIST P-256 (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.</li>
      </ul>
      <t>The traces in this draft are valid for version -19 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
    </section>
    <section anchor="setup">
      <name>Setup</name>
      <t>EDHOC is run between an Initiator (I) and a Responder (R). The private/public key pairs and credentials of 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 Sections <xref target="I-D.ietf-lake-edhoc" section="3.4.1" sectionFormat="bare"/> and <xref target="I-D.ietf-lake-edhoc" section="A.2" sectionFormat="bare"/> of <xref target="I-D.ietf-lake-edhoc"/>). Those bytes are not included in the traces in this document.</t>
    </section>
    <section anchor="sec-trace-1">
      <name>Authentication with signatures, X.509 certificates identified by 'x5t'</name>
      <t>In this example the Initiator (I) and Responder (R) are authenticated with digital signatures (METHOD = 0). Both I and R support cipher suite 0, which determines the algorithms:</t>
      <ul spacing="normal">
        <li>EDHOC AEAD algorithm = AES-CCM-16-64-128</li>
        <li>EDHOC hash algorithm = SHA-256</li>
        <li>EDHOC MAC length in bytes (Static DH) = 8</li>
        <li>EDHOC key exchange algorithm (ECDH curve) = X25519</li>
        <li>EDHOC signature algorithm = EdDSA</li>
        <li>Application AEAD algorithm = AES-CCM-16-64-128</li>
        <li>Application hash algorithm = SHA-256</li>
      </ul>
      <t>The public keys are represented with X.509 certificates identified by the COSE header parameter 'x5t'.</t>
      <section anchor="message1">
        <name>message_1</name>
        <t>Both endpoints are authenticated with signatures, i.e., METHOD = 0:</t>
        <artwork align="left"><![CDATA[
METHOD (CBOR Data Item) (1 byte)
00
]]></artwork>
        <t>I selects cipher suite 0. A single cipher suite is encoded as an int:</t>
        <artwork><![CDATA[
SUITES_I (CBOR Data Item) (1 byte)
00
]]></artwork>
        <t>I creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Initiator's ephemeral private key
X (Raw Value) (32 bytes)
89 2e c2 8e 5c b6 66 91 08 47 05 39 50 0b 70 5e 60 d0 08 d3 47 c5 81
7e e9 f3 32 7c 8a 87 bb 03
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key
G_X (Raw Value) (32 bytes)
31 f8 2c 7b 5b 9c bb f0 f1 94 d9 13 cc 12 ef 15 32 d3 28 ef 32 63 2a
48 81 a1 c0 70 1e 23 7f 04
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key
G_X (CBOR Data Item) (34 bytes)
58 20 31 f8 2c 7b 5b 9c bb f0 f1 94 d9 13 cc 12 ef 15 32 d3 28 ef 32
63 2a 48 81 a1 c0 70 1e 23 7f 04
]]></artwork>
        <t>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>
        <artwork><![CDATA[
C_I (Raw Value) (Connection identifier chosen by I) (1 byte)
2d
]]></artwork>
        <artwork><![CDATA[
C_I (CBOR Data Item) (Connection identifier chosen by I) (1 byte)
2d
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_1 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>I constructs message_1:</t>
        <artwork><![CDATA[
message_1 =
(
 0,
 0,
 h'31f82c7b5b9cbbf0f194d913cc12ef1532d328ef32632a48
   81a1c0701e237f04',
 -14
)
]]></artwork>
        <artwork><![CDATA[
message_1 (CBOR Sequence) (37 bytes)
00 00 58 20 31 f8 2c 7b 5b 9c bb f0 f1 94 d9 13 cc 12 ef 15 32 d3 28
ef 32 63 2a 48 81 a1 c0 70 1e 23 7f 04 2d
]]></artwork>
      </section>
      <section anchor="message2">
        <name>message_2</name>
        <t>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>
        <artwork><![CDATA[
Responder's ephemeral private key
Y (Raw Value) (32 bytes)
e6 9c 23 fb f8 1b c4 35 94 24 46 83 7f e8 27 bf 20 6c 8f a1 0a 39 db
47 44 9e 5a 81 34 21 e1 e8
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key
G_Y (Raw Value) (32 bytes)
dc 88 d2 d5 1d a5 ed 67 fc 46 16 35 6b c8 ca 74 ef 9e be 8b 38 7e 62
3a 36 0b a4 80 b9 b2 9d 1c
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key
G_Y (CBOR Data Item) (34 bytes)
58 20 dc 88 d2 d5 1d a5 ed 67 fc 46 16 35 6b c8 ca 74 ef 9e be 8b 38
7e 62 3a 36 0b a4 80 b9 b2 9d 1c
]]></artwork>
        <t>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>
        <artwork><![CDATA[
C_R (Raw Value) (Connection identifier chosen by R) (1 byte)
18
]]></artwork>
        <artwork><![CDATA[
C_R (CBOR Data Item) (Connection identifier chosen by R) (2 bytes)
41 18
]]></artwork>
        <t>The transcript hash TH_2 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_2 = H( G_Y, C_R, H(message_1) )</t>
        <artwork><![CDATA[
H(message_1) (Raw Value) (32 bytes)
c1 65 d6 a9 9d 1b ca fa ac 8d bf 2b 35 2a 6f 7d 71 a3 0b 43 9c 9d 64
d3 49 a2 38 48 03 8e d1 6b
]]></artwork>
        <artwork><![CDATA[
H(message_1) (CBOR Data Item) (34 bytes)
58 20 c1 65 d6 a9 9d 1b ca fa ac 8d bf 2b 35 2a 6f 7d 71 a3 0b 43 9c
9d 64 d3 49 a2 38 48 03 8e d1 6b
]]></artwork>
        <t>The input to calculate TH_2 is the CBOR sequence:</t>
        <t>G_Y, C_R, H(message_1)</t>
        <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>
        <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>
        <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>
        <t>PRK_2e is specified in <xref section="4.1.1.1" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>First, the ECDH shared secret G_XY is computed from G_X and Y, or G_Y and X:</t>
        <artwork><![CDATA[
G_XY (Raw Value) (ECDH shared secret) (32 bytes)
e5 cd f3 a9 86 cd ac 5b 7b f0 46 91 e2 b0 7c 08 e7 1f 53 99 8d 8f 84
2b 7c 3f b4 d8 39 cf 7b 28
]]></artwork>
        <t>Then, PRK_2e is calculated using EDHOC_Extract() determined by the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_2e = EDHOC_Extract( salt, G_XY ) =
       = HMAC-SHA-256( salt, G_XY )
]]></artwork>
        <t>where salt is TH_2:</t>
        <artwork><![CDATA[
salt (Raw Value) (32 bytes)
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>
        <artwork><![CDATA[
PRK_2e (Raw Value) (32 bytes)
2a e2 42 1d e9 a7 2a 7a e6 71 5f b5 18 f3 ed 30 05 8f d9 ca 58 b6 25
68 ca fe 7c da a1 5a 41 f7
]]></artwork>
        <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>
        <artwork><![CDATA[
Responder's private authentication key
SK_R (Raw Value) (32 bytes)
ef 14 0f f9 00 b0 ab 03 f0 c0 8d 87 9c bb d4 b3 1e a7 1e 6e 7e e7 ff
cb 7e 79 55 77 7a 33 27 99
]]></artwork>
        <artwork><![CDATA[
Responder's public authentication key
PK_R (Raw Value) (32 bytes)
a1 db 47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62
c0 0b 3a c5 5d e9 2f 93 59
]]></artwork>
        <t>PRK_3e2m is specified in <xref section="4.1.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>Since R authenticates with signatures PRK_3e2m = PRK_2e.</t>
        <artwork><![CDATA[
PRK_3e2m (Raw Value) (32 bytes)
2a e2 42 1d e9 a7 2a 7a e6 71 5f b5 18 f3 ed 30 05 8f d9 ca 58 b6 25
68 ca fe 7c da a1 5a 41 f7
]]></artwork>
        <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 = &lt;&lt; ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <t>CRED_R is identified by a 64-bit hash:</t>
        <artwork><![CDATA[
ID_CRED_R =
{
  34 : [-15, h'79f2a41b510c1f9b']
}
]]></artwork>
        <t>where the COSE header value 34 ('x5t') indicates a hash of an X.509 certficate,
and the COSE algorithm -15 indicates the hash algorithm SHA-256 truncated to 64 bits.</t>
        <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>
        <artwork><![CDATA[
CRED_R (Raw Value) (241 bytes)
30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05 06 03 2b 65
70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f 6f
74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32 34
33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20 30
1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f 6e 64 65 72
20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 a1 db 47
b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62 c0 0b 3a
c5 5d e9 2f 93 59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc 01 ea b0 92
8e 8b 2b 6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f ec fa f1 45
37 a1 af 14 cc 8b e8 29 c6 b7 30 44 10 18 37 eb 4a bc 94 95 65 d8 6d
ce 51 cf ae 52 ab 82 c1 52 cb 02
]]></artwork>
        <artwork><![CDATA[
CRED_R (CBOR Data Item) (243 bytes)
58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05 06 03
2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52
6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38
32 34 33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31
20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f 6e 64
65 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 a1
db 47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62 c0
0b 3a c5 5d e9 2f 93 59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc 01 ea
b0 92 8e 8b 2b 6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f ec fa
f1 45 37 a1 af 14 cc 8b e8 29 c6 b7 30 44 10 18 37 eb 4a bc 94 95 65
d8 6d ce 51 cf ae 52 ab 82 c1 52 cb 02
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_2 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>context_2 = &lt;&lt; ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <artwork><![CDATA[
context_2 (CBOR Sequence) (291 bytes)
a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 20 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>
        <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>
        <t>MAC_2 is computed through EDHOC_Expand() using the EDHOC hash algorithm, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <t>MAC_2 = HKDF-Expand(PRK_3e2m, info, mac_length_2), where</t>
        <t>info = ( 2, context_2, mac_length_2 )</t>
        <t>Since METHOD = 0, mac_length_2 is given by the EDHOC hash algorithm.</t>
        <t>info for MAC_2 is:</t>
        <artwork><![CDATA[
info =
(
 2,
 h'a11822822e4879f2a41b510c1f9b58203ab11700841fce19
   3c323911edb317b046dcf24b9950fd624884f7f57cd98b07
   58f13081ee3081a1a003020102020462319ec4300506032b
   6570301d311b301906035504030c124544484f4320526f6f
   742045643235353139301e170d3232303331363038323433
   365a170d3239313233313233303030305a30223120301e06
   035504030c174544484f4320526573706f6e646572204564
   3235353139302a300506032b6570032100a1db47b9518485
   4ad12a0c1a354e418aace33aa0f2c662c00b3ac55de92f93
   59300506032b6570034100b723bc01eab0928e8b2b6c98de
   19cc3823d46e7d6987b032478fecfaf14537a1af14cc8be8
   29c6b73044101837eb4abc949565d86dce51cfae52ab82c1
   52cb02',
 32
)
]]></artwork>
        <t>where the last value is the output size of the EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for MAC_2 (CBOR Sequence) (297 bytes)
02 59 01 23 a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 20 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 18 20
]]></artwork>
        <artwork><![CDATA[
MAC_2 (Raw Value) (32 bytes)
7a b9 61 ac 76 30 26 9a 99 5a 72 9a 0f ce ad 31 f5 cd 97 fb 51 5b c5
db 9c 11 19 83 3e 4c 3b 4a
]]></artwork>
        <artwork><![CDATA[
MAC_2 (CBOR Data Item) (34 bytes)
58 20 7a b9 61 ac 76 30 26 9a 99 5a 72 9a 0f ce ad 31 f5 cd 97 fb 51
5b c5 db 9c 11 19 83 3e 4c 3b 4a
]]></artwork>
        <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>
        <artwork><![CDATA[
[ "Signature1", << ID_CRED_R >>,
 << TH_2, CRED_R, ? EAD_2 >>, MAC_2 ] =

[
 "Signature1",
 h'a11822822e4879f2a41b510c1f9b',
 h'58203ab11700841fce193c323911edb317b046dcf24b9950
   fd624884f7f57cd98b0758f13081ee3081a1a00302010202
   0462319ec4300506032b6570301d311b301906035504030c
   124544484f4320526f6f742045643235353139301e170d32
   32303331363038323433365a170d32393132333132333030
   30305a30223120301e06035504030c174544484f43205265
   73706f6e6465722045643235353139302a300506032b6570
   032100a1db47b95184854ad12a0c1a354e418aace33aa0f2
   c662c00b3ac55de92f9359300506032b6570034100b723bc
   01eab0928e8b2b6c98de19cc3823d46e7d6987b032478fec
   faf14537a1af14cc8be829c6b73044101837eb4abc949565
   d86dce51cfae52ab82c152cb02',
 h'7ab961ac7630269a995a729a0fcead31f5cd97fb515bc5db
   9c1119833e4c3b4a'
]
]]></artwork>
        <artwork><![CDATA[
Message to be signed 2 (CBOR Data Item) (341 bytes)
84 6a 53 69 67 6e 61 74 75 72 65 31 4e a1 18 22 82 2e 48 79 f2 a4 1b
51 0c 1f 9b 59 01 15 58 20 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 58 20 7a b9 61 ac 76 30 26 9a 99 5a 72 9a 0f
ce ad 31 f5 cd 97 fb 51 5b c5 db 9c 11 19 83 3e 4c 3b 4a
]]></artwork>
        <t>R signs using the private authentication key SK_R</t>
        <artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (64 bytes)
af 73 81 f1 9a e1 fe 0f 53 89 5b 18 e5 81 8b 1f e3 e3 46 30 72 c0 2a
d3 9f 20 2d 38 28 aa 62 37 c1 0b 08 66 8f c4 76 96 41 24 03 1f ed 9f
94 4e 6a 78 79 7f 5c 08 49 58 db 0f 20 89 c2 1c 52 02
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (66 bytes)
58 40 af 73 81 f1 9a e1 fe 0f 53 89 5b 18 e5 81 8b 1f e3 e3 46 30 72
c0 2a d3 9f 20 2d 38 28 aa 62 37 c1 0b 08 66 8f c4 76 96 41 24 03 1f
ed 9f 94 4e 6a 78 79 7f 5c 08 49 58 db 0f 20 89 c2 1c 52 02
]]></artwork>
        <t>R constructs PLAINTEXT_2:</t>
        <artwork><![CDATA[
PLAINTEXT_2 =
(
 ID_CRED_R / bstr / -24..23,
 Signature_or_MAC_2,
 ? EAD_2
)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_2 (CBOR Sequence) (80 bytes)
a1 18 22 82 2e 48 79 f2 a4 1b 51 0c 1f 9b 58 40 af 73 81 f1 9a e1 fe
0f 53 89 5b 18 e5 81 8b 1f e3 e3 46 30 72 c0 2a d3 9f 20 2d 38 28 aa
62 37 c1 0b 08 66 8f c4 76 96 41 24 03 1f ed 9f 94 4e 6a 78 79 7f 5c
08 49 58 db 0f 20 89 c2 1c 52 02
]]></artwork>
        <t>The input needed to calculate KEYSTREAM_2 is defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using EDHOC_Expand() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
KEYSTREAM_2 = EDHOC_KDF( PRK_2e, 0, TH_2, plaintext_length ) =
            = HKDF-Expand( PRK_2e, info, plaintext_length )
]]></artwork>
        <t>where plaintext_length is the length of PLAINTEXT_2, and info for KEYSTREAM_2 is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'3ab11700841fce193c323911edb317b046dcf24b9950fd62
   4884f7f57cd98b07',
 80
)
]]></artwork>
        <t>where the last value is the length of PLAINTEXT_2.</t>
        <artwork><![CDATA[
info for KEYSTREAM_2 (CBOR Sequence) (37 bytes)
00 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 18 50
]]></artwork>
        <artwork><![CDATA[
KEYSTREAM_2 (Raw Value) (80 bytes)
c6 a1 ed d7 c9 ff 34 20 38 c7 b7 82 43 e4 1a dc f0 84 6c 7e 80 22 05
4f 66 34 69 4c 57 ea e8 b7 b4 ca 1c cb 5d 1d 64 94 0e 14 0f 02 b4 73
fb 18 f1 64 a7 3a 04 13 57 4a 0e 96 d8 28 3e e9 2f aa 58 36 30 cf 47
ac 7d 9a 06 c3 83 cd f3 bb 4e 71
]]></artwork>
        <t>R calculates CIPHERTEXT_2 as XOR between PLAINTEXT_2 and KEYSTREAM_2:</t>
        <artwork><![CDATA[
CIPHERTEXT_2 (Raw Value) (80 bytes)
67 b9 cf 55 e7 b7 4d d2 9c dc e6 8e 5c 7f 42 9c 5f f7 ed 8f 1a c3 fb
40 35 bd 32 54 b2 6b 63 a8 57 29 5a fb 2f dd 4e 47 91 34 22 3a 9c d9
99 2f 30 6f af 5c 8b d7 21 dc 4f b2 db 37 d3 76 bb e4 32 4e 49 b0 1b
a4 34 c2 dd cc a3 44 31 a7 1c 73
]]></artwork>
        <t>R constructs message_2:</t>
        <artwork><![CDATA[
message_2 =
(
 G_Y_CIPHERTEXT_2,
 C_R
)
]]></artwork>
        <t>where G_Y_CIPHERTEXT_2 is the bstr encoding of the concatenation of
  the raw values of G_Y and CIPHERTEXT_2.</t>
        <artwork><![CDATA[
message_2 (CBOR Sequence) (116 bytes)
58 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 67 b9 cf 55 e7 b7 4d d2 9c dc e6 8e
5c 7f 42 9c 5f f7 ed 8f 1a c3 fb 40 35 bd 32 54 b2 6b 63 a8 57 29 5a
fb 2f dd 4e 47 91 34 22 3a 9c d9 99 2f 30 6f af 5c 8b d7 21 dc 4f b2
db 37 d3 76 bb e4 32 4e 49 b0 1b a4 34 c2 dd cc a3 44 31 a7 1c 73 41
18
]]></artwork>
      </section>
      <section anchor="message3">
        <name>message_3</name>
        <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>
        <artwork><![CDATA[
Initiator's private authentication key
SK_I (Raw Value) (32 bytes)
4c 5b 25 87 8f 50 7c 6b 9d ae 68 fb d4 fd 3f f9 97 53 3d b0 af 00 b2
5d 32 4e a2 8e 6c 21 3b c8
]]></artwork>
        <artwork><![CDATA[
Initiator's public authentication key
PK_I (Raw Value) (32 bytes)
ed 06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f
23 d8 cc 20 b7 30 85 14 1e
]]></artwork>
        <t>PRK_4e3m is specified in <xref section="4.1.1.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>Since I authenticates with signatures PRK_4e3m = PRK_3e2m.</t>
        <artwork><![CDATA[
PRK_4e3m (Raw Value) (32 bytes)
2a e2 42 1d e9 a7 2a 7a e6 71 5f b5 18 f3 ed 30 05 8f d9 ca 58 b6 25
68 ca fe 7c da a1 5a 41 f7
]]></artwork>
        <t>The transcript hash TH_3 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_3 = H(TH_2, PLAINTEXT_2, CRED_R)</t>
        <artwork><![CDATA[
Input to calculate TH_3 (CBOR Sequence) (357 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 af 73 81 f1 9a e1 fe 0f 53 89 5b 18 e5 81 8b 1f e3 e3 46
30 72 c0 2a d3 9f 20 2d 38 28 aa 62 37 c1 0b 08 66 8f c4 76 96 41 24
03 1f ed 9f 94 4e 6a 78 79 7f 5c 08 49 58 db 0f 20 89 c2 1c 52 02 58
f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e c4 30 05 06 03 2b
65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f
6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32
34 33 36 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20
30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 52 65 73 70 6f 6e 64 65
72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 a1 db
47 b9 51 84 85 4a d1 2a 0c 1a 35 4e 41 8a ac e3 3a a0 f2 c6 62 c0 0b
3a c5 5d e9 2f 93 59 30 05 06 03 2b 65 70 03 41 00 b7 23 bc 01 ea b0
92 8e 8b 2b 6c 98 de 19 cc 38 23 d4 6e 7d 69 87 b0 32 47 8f ec fa f1
45 37 a1 af 14 cc 8b e8 29 c6 b7 30 44 10 18 37 eb 4a bc 94 95 65 d8
6d ce 51 cf ae 52 ab 82 c1 52 cb 02
]]></artwork>
        <artwork><![CDATA[
TH_3 (Raw Value) (32 bytes)
03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8
55 04 5e 33 c0 21 d7 f6 91
]]></artwork>
        <artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8
40 d8 55 04 5e 33 c0 21 d7 f6 91
]]></artwork>
        <t>I constructs the remaining input needed to calculate MAC_3:</t>
        <artwork><![CDATA[
MAC_3 = EDHOC_KDF( PRK_4e3m, 6, context_3, mac_length_3 )
]]></artwork>
        <t>where</t>
        <artwork><![CDATA[
context_3 = << ID_CRED_I, TH_3, CRED_I, ? EAD_3 >>
]]></artwork>
        <t>CRED_I is identified by a 64-bit hash:</t>
        <artwork><![CDATA[
ID_CRED_I =
{
 34 : [-15, h'c24ab2fd7643c79f']
}
]]></artwork>
        <t>where the COSE header value 34 ('x5t') indicates a hash of an X.509 certficate,
and the COSE algorithm -15 indicates the hash algorithm SHA-256 truncated to 64 bits.</t>
        <artwork><![CDATA[
ID_CRED_I (CBOR Data Item) (14 bytes)
a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f
]]></artwork>
        <t>CRED_I is a CBOR byte string of the DER encoding of the X.509 certificate in <xref target="init-cer"/>:</t>
        <artwork><![CDATA[
CRED_I (Raw Value) (241 bytes)
30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05 06 03 2b 65
70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f 6f
74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32 34
30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20 30
1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69 61 74 6f 72
20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 ed 06 a8
ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f 23 d8 cc
20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41 d8 b3 a7 70
99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3 92 75 ae 48
b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05 ee ff 27 b9
e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <artwork><![CDATA[
CRED_I (CBOR Data Item) (243 bytes)
58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05 06 03
2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52
6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38
32 34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31
20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69 61 74
6f 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 ed
06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f 23
d8 cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41 d8 b3
a7 70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3 92 75
ae 48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05 ee ff
27 b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_3 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>context_3 = &lt;&lt; ID_CRED_I, TH_3, CRED_I, ? EAD_3 &gt;&gt;</t>
        <artwork><![CDATA[
context_3 (CBOR Sequence) (291 bytes)
a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f 58 20 03 12 56 1b 73 43 ce
af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8 55 04 5e 33 c0 21 d7
f6 91 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05
06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43
20 52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36
30 38 32 34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30
22 31 20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69
61 74 6f 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21
00 ed 06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e
0f 23 d8 cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41
d8 b3 a7 70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3
92 75 ae 48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05
ee ff 27 b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <artwork><![CDATA[
context_3 (CBOR byte string) (294 bytes)
59 01 23 a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f 58 20 03 12 56 1b
73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8 55 04 5e 33
c0 21 d7 f6 91 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e
a0 30 05 06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44
48 4f 43 20 52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30
33 31 36 30 38 32 34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30
30 5a 30 22 31 20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e
69 74 69 61 74 6f 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65
70 03 21 00 ed 06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3
02 f4 3e 0f 23 d8 cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00
52 12 41 d8 b3 a7 70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df
29 10 b3 92 75 ae 48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22
67 dd 05 ee ff 27 b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <t>MAC_3 is computed through EDHOC_Expand() using the EDHOC hash algorithm, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
MAC_3 = HKDF-Expand(PRK_4e3m, info, mac_length_3), where
]]></artwork>
        <t>info = ( 6, context_3, mac_length_3 )</t>
        <t>where context_3 = &lt;&lt; ID_CRED_I, TH_3, CRED_I, ? EAD_3 &gt;&gt;</t>
        <t>Since METHOD = 0, mac_length_3 is given by the EDHOC hash algorithm.</t>
        <t>info for MAC_3 is:</t>
        <artwork><![CDATA[
info =
(
 6,
 h'a11822822e48c24ab2fd7643c79f58200312561b7343ceaf
   659df50013e064e6b46dcb3fa840d855045e33c021d7f691
   58f13081ee3081a1a003020102020462319ea0300506032b
   6570301d311b301906035504030c124544484f4320526f6f
   742045643235353139301e170d3232303331363038323430
   305a170d3239313233313233303030305a30223120301e06
   035504030c174544484f4320496e69746961746f72204564
   3235353139302a300506032b6570032100ed06a8ae61a829
   ba5fa54525c9d07f48dd44a302f43e0f23d8cc20b7308514
   1e300506032b6570034100521241d8b3a770996bcfc9b9ea
   d4e7e0a1c0db353a3bdf2910b39275ae48b756015981850d
   27db6734e37f67212267dd05eeff27b9e7a813fa574b72a0
   0b430b',
 32
)
]]></artwork>
        <t>where the last value is the output size of the EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for MAC_3 (CBOR Sequence) (297 bytes)
06 59 01 23 a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f 58 20 03 12 56
1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8 55 04 5e
33 c0 21 d7 f6 91 58 f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31
9e a0 30 05 06 03 2b 65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45
44 48 4f 43 20 52 6f 6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32
30 33 31 36 30 38 32 34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30
30 30 5a 30 22 31 20 30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49
6e 69 74 69 61 74 6f 72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b
65 70 03 21 00 ed 06 a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44
a3 02 f4 3e 0f 23 d8 cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41
00 52 12 41 d8 b3 a7 70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b
df 29 10 b3 92 75 ae 48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21
22 67 dd 05 ee ff 27 b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b 18 20
]]></artwork>
        <artwork><![CDATA[
MAC_3 (Raw Value) (32 bytes)
cd d2 50 7b cf 66 2b 5d 9d 9c f2 3c 4b 31 a9 b6 66 c6 a1 9a 0a 44 dc
2a 7a 9c 90 45 22 b1 eb 3e
]]></artwork>
        <artwork><![CDATA[
MAC_3 (CBOR Data Item) (34 bytes)
58 20 cd d2 50 7b cf 66 2b 5d 9d 9c f2 3c 4b 31 a9 b6 66 c6 a1 9a 0a
44 dc 2a 7a 9c 90 45 22 b1 eb 3e
]]></artwork>
        <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>
        <artwork><![CDATA[
[ "Signature1", << ID_CRED_I >>,
 << TH_3, CRED_I, ? EAD_3 >>, MAC_3 ] =

[
 "Signature1",
 h'a11822822e48c24ab2fd7643c79f',
 h'58200312561b7343ceaf659df50013e064e6b46dcb3fa840
   d855045e33c021d7f69158f13081ee3081a1a00302010202
   0462319ea0300506032b6570301d311b301906035504030c
   124544484f4320526f6f742045643235353139301e170d32
   32303331363038323430305a170d32393132333132333030
   30305a30223120301e06035504030c174544484f4320496e
   69746961746f722045643235353139302a300506032b6570
   032100ed06a8ae61a829ba5fa54525c9d07f48dd44a302f4
   3e0f23d8cc20b73085141e300506032b6570034100521241
   d8b3a770996bcfc9b9ead4e7e0a1c0db353a3bdf2910b392
   75ae48b756015981850d27db6734e37f67212267dd05eeff
   27b9e7a813fa574b72a00b430b',
 h'cdd2507bcf662b5d9d9cf23c4b31a9b666c6a19a0a44dc2a
   7a9c904522b1eb3e'
]
]]></artwork>
        <artwork><![CDATA[
Message to be signed 3 (CBOR Data Item) (341 bytes)
84 6a 53 69 67 6e 61 74 75 72 65 31 4e a1 18 22 82 2e 48 c2 4a b2 fd
76 43 c7 9f 59 01 15 58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0
64 e6 b4 6d cb 3f a8 40 d8 55 04 5e 33 c0 21 d7 f6 91 58 f1 30 81 ee
30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05 06 03 2b 65 70 30 1d
31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f 6f 74 20 45
64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32 34 30 30 5a
17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20 30 1e 06 03
55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69 61 74 6f 72 20 45 64
32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 ed 06 a8 ae 61 a8
29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f 23 d8 cc 20 b7 30
85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41 d8 b3 a7 70 99 6b cf
c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3 92 75 ae 48 b7 56 01
59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05 ee ff 27 b9 e7 a8 13
fa 57 4b 72 a0 0b 43 0b 58 20 cd d2 50 7b cf 66 2b 5d 9d 9c f2 3c 4b
31 a9 b6 66 c6 a1 9a 0a 44 dc 2a 7a 9c 90 45 22 b1 eb 3e
]]></artwork>
        <t>I signs using the private authentication key SK_I:</t>
        <artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (64 bytes)
4f 99 22 77 bc be 5f ec 00 9f be 0b 31 34 91 65 2b d4 c8 02 18 07 32
75 c3 f1 66 99 af 9c d3 f4 c6 b6 61 ff 11 da 12 b3 fe 03 c5 df d2 ce
ee c0 6a dc ff 6a 76 a7 0e 31 56 a6 00 fb 61 ac d6 02
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (66 bytes)
58 40 4f 99 22 77 bc be 5f ec 00 9f be 0b 31 34 91 65 2b d4 c8 02 18
07 32 75 c3 f1 66 99 af 9c d3 f4 c6 b6 61 ff 11 da 12 b3 fe 03 c5 df
d2 ce ee c0 6a dc ff 6a 76 a7 0e 31 56 a6 00 fb 61 ac d6 02
]]></artwork>
        <t>I constructs PLAINTEXT_3:</t>
        <artwork><![CDATA[
PLAINTEXT_3 =
(
 ID_CRED_I / bstr / -24..23,
 Signature_or_MAC_3,
 ? EAD_3
)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_3 (CBOR Sequence) (80 bytes)
a1 18 22 82 2e 48 c2 4a b2 fd 76 43 c7 9f 58 40 4f 99 22 77 bc be 5f
ec 00 9f be 0b 31 34 91 65 2b d4 c8 02 18 07 32 75 c3 f1 66 99 af 9c
d3 f4 c6 b6 61 ff 11 da 12 b3 fe 03 c5 df d2 ce ee c0 6a dc ff 6a 76
a7 0e 31 56 a6 00 fb 61 ac d6 02
]]></artwork>
        <t>I constructs the associated data for message_3:</t>
        <artwork><![CDATA[
A_3 =
[
 "Encrypt0",
 h'',
 h'0312561b7343ceaf659df50013e064e6b46dcb3fa840d855
   045e33c021d7f691'
]
]]></artwork>
        <artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 03 12 56 1b 73 43 ce af 65 9d
f5 00 13 e0 64 e6 b4 6d cb 3f a8 40 d8 55 04 5e 33 c0 21 d7 f6 91
]]></artwork>
        <t>I constructs the input needed to derive the key K_3, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
K_3 = EDHOC_KDF( PRK_3e2m, 3, TH_3, key_length )
    = HKDF-Expand( PRK_3e2m, info, key_length ),
]]></artwork>
        <t>where key_length is the key length of EDHOC AEAD algorithm, and info for K_3 is:</t>
        <artwork><![CDATA[
info =
(
 3,
 h'0312561b7343ceaf659df50013e064e6b46dcb3fa840d855
   045e33c021d7f691',
 16
)
]]></artwork>
        <t>where the last value is the key length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_3 (CBOR Sequence) (36 bytes)
03 58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f
a8 40 d8 55 04 5e 33 c0 21 d7 f6 91 10
]]></artwork>
        <artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
50 b9 cb 0b ba 0c 75 88 0b 54 27 86 be 62 77 fa
]]></artwork>
        <t>I constructs the input needed to derive the nonce IV_3, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
IV_3 = EDHOC_KDF( PRK_3e2m, 4, TH_3, iv_length )
     = HKDF-Expand( PRK_3e2m, info, iv_length ),
]]></artwork>
        <t>where iv_length is the nonce length of EDHOC AEAD algorithm, and info for IV_3 is:</t>
        <artwork><![CDATA[
info =
(
 4,
 h'0312561b7343ceaf659df50013e064e6b46dcb3fa840d855
   045e33c021d7f691',
 13
)
]]></artwork>
        <t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_3 (CBOR Sequence) (36 bytes)
04 58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f
a8 40 d8 55 04 5e 33 c0 21 d7 f6 91 0d
]]></artwork>
        <artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
27 a3 b3 ba 30 14 ab 62 d9 a2 69 45 a3
]]></artwork>
        <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>
        <artwork><![CDATA[
CIPHERTEXT_3 (Raw Value) (88 bytes)
ba 5e 0e 74 5b fa 2a 87 1d 20 cb 02 c8 00 20 07 71 43 4b 6e 1a c9 89
77 ec 73 3e c9 4c 06 33 cb 3e c0 20 78 98 59 7f 2c 49 d3 a4 0f 4c 14
51 b4 3d 0b ca e4 84 7a 0d 6c d3 2d 5e 8a 35 54 f4 3f 7a 98 29 04 b0
77 c5 02 9b 3d c7 f0 5e ed ed e3 b0 21 57 c3 24 c0 db 3e
]]></artwork>
        <t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>
        <artwork><![CDATA[
message_3 (CBOR Sequence) (90 bytes)
58 58 ba 5e 0e 74 5b fa 2a 87 1d 20 cb 02 c8 00 20 07 71 43 4b 6e 1a
c9 89 77 ec 73 3e c9 4c 06 33 cb 3e c0 20 78 98 59 7f 2c 49 d3 a4 0f
4c 14 51 b4 3d 0b ca e4 84 7a 0d 6c d3 2d 5e 8a 35 54 f4 3f 7a 98 29
04 b0 77 c5 02 9b 3d c7 f0 5e ed ed e3 b0 21 57 c3 24 c0 db 3e
]]></artwork>
        <t>The transcript hash TH_4 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_4 = H( TH_3, PLAINTEXT_3, CRED_I )</t>
        <artwork><![CDATA[
Input to calculate TH_4 (CBOR Sequence) (357 bytes)
58 20 03 12 56 1b 73 43 ce af 65 9d f5 00 13 e0 64 e6 b4 6d cb 3f a8
40 d8 55 04 5e 33 c0 21 d7 f6 91 a1 18 22 82 2e 48 c2 4a b2 fd 76 43
c7 9f 58 40 4f 99 22 77 bc be 5f ec 00 9f be 0b 31 34 91 65 2b d4 c8
02 18 07 32 75 c3 f1 66 99 af 9c d3 f4 c6 b6 61 ff 11 da 12 b3 fe 03
c5 df d2 ce ee c0 6a dc ff 6a 76 a7 0e 31 56 a6 00 fb 61 ac d6 02 58
f1 30 81 ee 30 81 a1 a0 03 02 01 02 02 04 62 31 9e a0 30 05 06 03 2b
65 70 30 1d 31 1b 30 19 06 03 55 04 03 0c 12 45 44 48 4f 43 20 52 6f
6f 74 20 45 64 32 35 35 31 39 30 1e 17 0d 32 32 30 33 31 36 30 38 32
34 30 30 5a 17 0d 32 39 31 32 33 31 32 33 30 30 30 30 5a 30 22 31 20
30 1e 06 03 55 04 03 0c 17 45 44 48 4f 43 20 49 6e 69 74 69 61 74 6f
72 20 45 64 32 35 35 31 39 30 2a 30 05 06 03 2b 65 70 03 21 00 ed 06
a8 ae 61 a8 29 ba 5f a5 45 25 c9 d0 7f 48 dd 44 a3 02 f4 3e 0f 23 d8
cc 20 b7 30 85 14 1e 30 05 06 03 2b 65 70 03 41 00 52 12 41 d8 b3 a7
70 99 6b cf c9 b9 ea d4 e7 e0 a1 c0 db 35 3a 3b df 29 10 b3 92 75 ae
48 b7 56 01 59 81 85 0d 27 db 67 34 e3 7f 67 21 22 67 dd 05 ee ff 27
b9 e7 a8 13 fa 57 4b 72 a0 0b 43 0b
]]></artwork>
        <artwork><![CDATA[
TH_4 (Raw Value) (32 bytes)
38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36 07 4f 98
12 39 e6 47 4d 9c cc dd c8
]]></artwork>
        <artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36 07
4f 98 12 39 e6 47 4d 9c cc dd c8
]]></artwork>
      </section>
      <section anchor="message4">
        <name>message_4</name>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_4 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>R constructs PLAINTEXT_4:</t>
        <artwork><![CDATA[
PLAINTEXT_4 =
(
 ? EAD_4
)
]]></artwork>
        <artwork><![CDATA[
PLAINTEXT_4 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>R constructs the associated data for message_4:</t>
        <artwork><![CDATA[
A_4 =
[
 "Encrypt0",
 h'',
 h'38e2e6f4641e814b721814c05b51ef0aa38bdb36074f9812
   39e6474d9cccddc8'
]
]]></artwork>
        <artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 38 e2 e6 f4 64 1e 81 4b 72 18
14 c0 5b 51 ef 0a a3 8b db 36 07 4f 98 12 39 e6 47 4d 9c cc dd c8
]]></artwork>
        <t>R constructs the input needed to derive the EDHOC message_4 key, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
K_4   = EDHOC_KDF( PRK_4e3m, 8, TH_4, key_length )
      = HKDF-Expand( PRK_4x3m, info, key_length )
]]></artwork>
        <t>where key_length is the key length of the EDHOC AEAD algorithm,
  and info for EDHOC_K_4 is:</t>
        <artwork><![CDATA[
info =
(
 8,
 h'38e2e6f4641e814b721814c05b51ef0aa38bdb36074f9812
   39e6474d9cccddc8',
 16
)
]]></artwork>
        <t>where the last value is the key length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_4 (CBOR Sequence) (36 bytes)
08 58 20 38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36
07 4f 98 12 39 e6 47 4d 9c cc dd c8 10
]]></artwork>
        <artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
3d e5 c1 6f 9f 7e f0 0c 46 4b e8 d7 7b de f7 30
]]></artwork>
        <t>R constructs the input needed to derive the EDHOC message_4 nonce, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
      IV_4 = EDHOC_KDF( PRK_4e3m, 9, TH_4, iv_length )
           = HKDF-Expand( PRK_4x3m, info, iv_length )
]]></artwork>
        <t>where length is the nonce length of EDHOC AEAD algorithm,
  and info for EDHOC_IV_4 is:</t>
        <artwork><![CDATA[
info =
(
 9,
 h'38e2e6f4641e814b721814c05b51ef0aa38bdb36074f9812
   39e6474d9cccddc8',
 13
)
]]></artwork>
        <t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_4 (CBOR Sequence) (36 bytes)
09 58 20 38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36
07 4f 98 12 39 e6 47 4d 9c cc dd c8 0d
]]></artwork>
        <artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
26 35 c2 b3 6d 2b f8 af b6 c8 9b 0f af
]]></artwork>
        <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>
        <artwork><![CDATA[
CIPHERTEXT_4 (8 bytes)
d5 41 7c 47 4c b4 a3 02
]]></artwork>
        <t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>
        <artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 d5 41 7c 47 4c b4 a3 02
]]></artwork>
      </section>
      <section anchor="out-and-exporter1">
        <name>PRK_out and PRK_exporter</name>
        <t>PRK_out is specified in <xref section="4.1.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
PRK_out = EDHOC_KDF( PRK_4e3m, 7, TH_4, hash_length ) =
        = HKDF-Expand( PRK_4e3m, info,  hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for PRK_out is:</t>
        <artwork><![CDATA[
info =
(
 7,
 h'38e2e6f4641e814b721814c05b51ef0aa38bdb36074f9812
   39e6474d9cccddc8',
 32
)
]]></artwork>
        <t>where the last value is the length of EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_out (CBOR Sequence) (37 bytes)
07 58 20 38 e2 e6 f4 64 1e 81 4b 72 18 14 c0 5b 51 ef 0a a3 8b db 36
07 4f 98 12 39 e6 47 4d 9c cc dd c8 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
cf aa 94 87 37 c8 c7 5f 54 2a fb 6a 07 df da 67 3e 78 a1 04 ca cb d9
3f dc a3 c2 b0 e6 63 e9 44
]]></artwork>
        <t>The OSCORE Master Secret and OSCORE Master Salt are derived with the EDHOC_Exporter as specified in 4.2.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
EDHOC_Exporter( label, context, length )
= EDHOC_KDF( PRK_exporter, label, context, length )
]]></artwork>
        <t>where PRK_exporter is derived from PRK_out:</t>
        <artwork><![CDATA[
 PRK_exporter = EDHOC_KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for the PRK_exporter is:</t>
        <artwork><![CDATA[
info =
(
 10,
 h'',
 32
)
]]></artwork>
        <t>where the last value is the length of EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_exporter (CBOR Sequence) (4 bytes)
0a 40 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
55 15 9b 06 37 4e 4b 2b c2 a9 f5 82 4b 56 1f e1 66 d6 26 4a a6 da e8
97 7d 2e d5 37 90 b4 2b 2f
]]></artwork>
      </section>
      <section anchor="oscore-param">
        <name>OSCORE Parameters</name>
        <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>
        <artwork><![CDATA[
Application AEAD Algorithm (int)
10
]]></artwork>
        <artwork><![CDATA[
Application Hash Algorithm (int)
-16
]]></artwork>
        <t>The mapping from EDHOC connection identifiers to OSCORE Sender/Recipient IDs is defined in <xref section="3.3.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>C_R is mapped to the Recipient ID of the server, i.e., the Sender ID of the client. The byte string 0x18, which as C_R is encoded as the CBOR byte string 0x4118, is converted to the server Recipient ID 0x18.</t>
        <artwork><![CDATA[
Client's OSCORE Sender ID (Raw Value) (1 byte)
18
]]></artwork>
        <t>C_I is mapped to the Recipient ID of the client, i.e., the Sender ID of the server. The byte string 0x2d, which as C_I is encoded as the CBOR integer 0x2d is converted to the client Recipient ID 0x2d.</t>
        <artwork><![CDATA[
Server's OSCORE Sender ID (Raw Value) (1 byte)
2d
]]></artwork>
        <t>The OSCORE Master Secret is computed through EDHOC_Expand() using the
Application hash algorithm, see Appendix A.1 of <xref target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
OSCORE Master Secret = EDHOC_Exporter( 0, h'', oscore_key_length )
= EDHOC_KDF( PRK_exporter, 0, h'',  oscore_key_length )
= HKDF-Expand( PRK_exporter, info,  oscore_key_length )
]]></artwork>
        <t>where oscore_key_length is by default the key length of the Application AEAD
algorithm, and info for the OSCORE Master Secret is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'',
 16
)
]]></artwork>
        <t>where the last value is the key length of Application AEAD algorithm.</t>
        <artwork><![CDATA[
info for OSCORE Master Secret (CBOR Sequence) (3 bytes)
00 40 10
]]></artwork>
        <artwork><![CDATA[
OSCORE Master Secret (Raw Value) (16 bytes)
09 c3 66 61 cf 68 f8 c3 ad 21 64 43 cf 62 91 e6
]]></artwork>
        <t>The OSCORE Master Salt is computed through EDHOC_Expand() using the Application hash algorithm, see <xref section="4.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
OSCORE Master Salt = EDHOC_Exporter( 1, h'', oscore_salt_length )
= EDHOC_KDF( PRK_exporter, 1, h'', oscore_salt_length )
= HKDF-Expand( PRK_4x3m, info, oscore_salt_length )
]]></artwork>
        <t>where oscore_salt_length is the length of the OSCORE Master Salt, and info for the OSCORE Master Salt is:</t>
        <artwork><![CDATA[
info =
(
 1,
 h'',
 8
)
]]></artwork>
        <t>where the last value is the length of the OSCORE Master Salt.</t>
        <artwork><![CDATA[
info for OSCORE Master Salt (CBOR Sequence) (3 bytes)
01 40 08
]]></artwork>
        <artwork><![CDATA[
OSCORE Master Salt (Raw Value) (8 bytes)
13 82 bf 71 9e e6 5c 32
]]></artwork>
      </section>
      <section anchor="key-update">
        <name>Key Update</name>
        <t>Key update is defined in <xref section="J" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
EDHOC_KeyUpdate( context ):
PRK_out = EDHOC_KDF( PRK_out, 11, context, hash_length )
        = HKDF-Expand( PRK_out, info, hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash function, context for KeyUpdate is</t>
        <artwork><![CDATA[
context for KeyUpdate (Raw Value) (16 bytes)
d6 be 16 96 02 b8 bc ea a0 11 58 fd b8 20 89 0c
]]></artwork>
        <artwork><![CDATA[
context for KeyUpdate (CBOR Data Item) (17 bytes)
50 d6 be 16 96 02 b8 bc ea a0 11 58 fd b8 20 89 0c
]]></artwork>
        <t>and where info for key update is:</t>
        <artwork><![CDATA[
info =
(
 11,
 h'd6be169602b8bceaa01158fdb820890c',
 32
)
]]></artwork>
        <artwork><![CDATA[
PRK_out after KeyUpdate (Raw Value) (32 bytes)
2b 31 bf cf 9b 0b b2 a6 92 65 3a 08 40 02 73 59 c4 e6 7c c5 04 ff 65
7a 30 af d7 67 c5 a4 1e f9
]]></artwork>
        <t>After key update the PRK_exporter needs to be derived anew:</t>
        <artwork><![CDATA[
 PRK_exporter = EDHOC_KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork>
        <t>where info and hash_length as unchanged as in <xref target="out-and-exporter1"/>.</t>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
2c 62 c4 ac 76 c8 e1 e8 48 38 5b 07 fe 2a 58 ad 2a f7 4c ee 38 70 d5
2b 4d a1 ec 63 39 3d 0f ec
]]></artwork>
        <t>The OSCORE Master Secret is derived with the updated PRK_exporter:</t>
        <artwork><![CDATA[
OSCORE Master Secret =
= HKDF-Expand(PRK_exporter, info, oscore_key_length)
]]></artwork>
        <t>where info and key_length are unchanged as in <xref target="oscore-param"/>.</t>
        <artwork><![CDATA[
OSCORE Master Secret after KeyUpdate (Raw Value) (16 bytes)
f0 05 28 0c 94 8a 64 c4 6e 33 e9 ea 8d e9 31 15
]]></artwork>
        <t>The OSCORE Master Salt is derived with the updated PRK_exporter:</t>
        <artwork><![CDATA[
OSCORE Master Salt = HKDF-Expand(PRK_exporter, info, salt_length)
]]></artwork>
        <t>where info and salt_length are unchanged as in <xref target="oscore-param"/>.</t>
        <artwork><![CDATA[
OSCORE Master Salt after KeyUpdate (Raw Value) (8 bytes)
0b 0a f3 2a a4 9b 3c e3
]]></artwork>
      </section>
      <section anchor="certs">
        <name>Certificates</name>
        <section anchor="resp-cer">
          <name>Responder Certificate</name>
          <artwork><![CDATA[
        Version: 3 (0x2)
        Serial Number: 1647419076 (0x62319ec4)
        Signature Algorithm: ED25519
        Issuer: CN = EDHOC Root Ed25519
        Validity
            Not After : Dec 31 23:00:00 2029 GMT
        Subject: CN = EDHOC Responder Ed25519
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    a1:db:47:b9:51:84:85:4a:d1:2a:0c:1a:35:4e:41:
                    8a:ac:e3:3a:a0:f2:c6:62:c0:0b:3a:c5:5d:e9:2f:
                    93:59
    Signature Algorithm: ED25519
    Signature Value:
        b7:23:bc:01:ea:b0:92:8e:8b:2b:6c:98:de:19:cc:38:23:d4:
        6e:7d:69:87:b0:32:47:8f:ec:fa:f1:45:37:a1:af:14:cc:8b:
        e8:29:c6:b7:30:44:10:18:37:eb:4a:bc:94:95:65:d8:6d:ce:
        51:cf:ae:52:ab:82:c1:52:cb:02
]]></artwork>
        </section>
        <section anchor="init-cer">
          <name>Initiator Certificate</name>
          <artwork><![CDATA[
        Version: 3 (0x2)
        Serial Number: 1647419040 (0x62319ea0)
        Signature Algorithm: ED25519
        Issuer: CN = EDHOC Root Ed25519
        Validity
            Not Before: Mar 16 08:24:00 2022 GMT
            Not After : Dec 31 23:00:00 2029 GMT
        Subject: CN = EDHOC Initiator Ed25519
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    ed:06:a8:ae:61:a8:29:ba:5f:a5:45:25:c9:d0:7f:
                    48:dd:44:a3:02:f4:3e:0f:23:d8:cc:20:b7:30:85:
                    14:1e
    Signature Algorithm: ED25519
    Signature Value:
        52:12:41:d8:b3:a7:70:99:6b:cf:c9:b9:ea:d4:e7:e0:a1:c0:
        db:35:3a:3b:df:29:10:b3:92:75:ae:48:b7:56:01:59:81:85:
        0d:27:db:67:34:e3:7f:67:21:22:67:dd:05:ee:ff:27:b9:e7:
        a8:13:fa:57:4b:72:a0:0b:43:0b
]]></artwork>
        </section>
        <section anchor="root-cer">
          <name>Common Root Certificate</name>
          <artwork><![CDATA[
        Version: 3 (0x2)
        Serial Number: 1647418996 (0x62319e74)
        Signature Algorithm: ED25519
        Issuer: CN = EDHOC Root Ed25519
        Validity
            Not Before: Mar 16 08:23:16 2022 GMT
            Not After : Dec 31 23:00:00 2029 GMT
        Subject: CN = EDHOC Root Ed25519
        Subject Public Key Info:
            Public Key Algorithm: ED25519
                ED25519 Public-Key:
                pub:
                    2b:7b:3e:80:57:c8:64:29:44:d0:6a:fe:7a:71:d1:
                    c9:bf:96:1b:62:92:ba:c4:b0:4f:91:66:9b:bb:71:
                    3b:e4
    Signature Algorithm: ED25519
    Signature Value:
        4b:b5:2b:bf:15:39:b7:1a:4a:af:42:97:78:f2:9e:da:7e:81:
        46:80:69:8f:16:c4:8f:2a:6f:a4:db:e8:25:41:c5:82:07:ba:
        1b:c9:cd:b0:c2:fa:94:7f:fb:f0:f0:ec:0e:e9:1a:7f:f3:7a:
        94:d9:25:1f:a5:cd:f1:e6:7a:0f
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="sec-trace-2">
      <name>Authentication with static DH, CCS identified by 'kid'</name>
      <t>In this example 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>
      <ul spacing="normal">
        <li>EDHOC AEAD algorithm = AES-CCM-16-64-128</li>
        <li>EDHOC hash algorithm = SHA-256</li>
        <li>EDHOC MAC length in bytes (Static DH) = 8</li>
        <li>EDHOC key exchange algorithm (ECDH curve) = P-256</li>
        <li>EDHOC signature algorithm = ES256</li>
        <li>Application AEAD algorithm = AES-CCM-16-64-128</li>
        <li>Application hash algorithm = SHA-256</li>
      </ul>
      <t>The public keys are represented as raw public keys (RPK), encoded in a CWT Claims Set (CCS) and identified by the COSE header parameter 'kid'.</t>
      <section anchor="m1_1">
        <name>message_1 (first time)</name>
        <t>Both endpoints are authenticated with static DH, i.e., METHOD = 3:</t>
        <artwork><![CDATA[
METHOD (CBOR Data Item) (1 byte)
03
]]></artwork>
        <t>I selects its preferred cipher suite 6. A single cipher suite is encoded as an int:</t>
        <artwork><![CDATA[
SUITES_I (CBOR Data Item) (1 byte)
06
]]></artwork>
        <t>I creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Initiator's ephemeral private key
X (Raw Value) (32 bytes)
5c 41 72 ac a8 b8 2b 5a 62 e6 6f 72 22 16 f5 a1 0f 72 aa 69 f4 2c 1d
1c d3 cc d7 bf d2 9c a4 e9
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, 'x'-coordinate
G_X (Raw Value) (32 bytes)
74 1a 13 d7 ba 04 8f bb 61 5e 94 38 6a a3 b6 1b ea 5b 3d 8f 65 f3 26
20 b7 49 be e8 d2 78 ef a9
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, 'x'-coordinate
G_X (CBOR Data Item) (34 bytes)
58 20 74 1a 13 d7 ba 04 8f bb 61 5e 94 38 6a a3 b6 1b ea 5b 3d 8f 65
f3 26 20 b7 49 be e8 d2 78 ef a9
]]></artwork>
        <t>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>
        <artwork><![CDATA[
C_I (Raw Value) (Connection identifier chosen by I) (1 byte)
0e
]]></artwork>
        <artwork><![CDATA[
C_I (CBOR Data Item) (Connection identifier chosen by I) (1 byte)
0e
]]></artwork>
        <t>No external authorization data:</t>
        <t>EAD_1 (CBOR Sequence) (0 bytes)</t>
        <t>I constructs message_1:</t>
        <artwork><![CDATA[
message_1 =
(
 3,
 6,
 h'741a13d7ba048fbb615e94386aa3b61bea5b3d8f65f32620
   b749bee8d278efa9',
 14
)
]]></artwork>
        <artwork><![CDATA[
message_1 (CBOR Sequence) (37 bytes)
03 06 58 20 74 1a 13 d7 ba 04 8f bb 61 5e 94 38 6a a3 b6 1b ea 5b 3d
8f 65 f3 26 20 b7 49 be e8 d2 78 ef a9 0e
]]></artwork>
      </section>
      <section anchor="error">
        <name>error</name>
        <t>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>
        <artwork><![CDATA[
SUITES_R
02
]]></artwork>
        <artwork><![CDATA[
error (CBOR Sequence) (2 bytes)
02 02
]]></artwork>
      </section>
      <section anchor="message1-second-time">
        <name>message_1 (second time)</name>
        <t>Same steps are performed as 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>
        <artwork align="left"><![CDATA[
METHOD (CBOR Data Item) (1 byte)
03
]]></artwork>
        <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>
        <artwork><![CDATA[
SUITES_I (CBOR Data Item) (3 bytes)
82 06 02
]]></artwork>
        <t>I creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Initiator's ephemeral private key
X (Raw Value) (32 bytes)
36 8e c1 f6 9a eb 65 9b a3 7d 5a 8d 45 b2 1b dc 02 99 dc ea a8 ef 23
5f 3c a4 2c e3 53 0f 95 25
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, 'x'-coordinate
G_X (Raw Value) (32 bytes)
8a f6 f4 30 eb e1 8d 34 18 40 17 a9 a1 1b f5 11 c8 df f8 f8 34 73 0b
96 c1 b7 c8 db ca 2f c3 b6
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, one 'y'-coordinate
(Raw Value) (32 bytes)
51 e8 af 6c 6e db 78 16 01 ad 1d 9c 5f a8 bf 7a a1 57 16 c7 c0 6a 5d
03 85 03 c6 14 ff 80 c9 b3
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key, 'x'-coordinate
G_X (CBOR Data Item) (34 bytes)
58 20 8a f6 f4 30 eb e1 8d 34 18 40 17 a9 a1 1b f5 11 c8 df f8 f8 34
73 0b 96 c1 b7 c8 db ca 2f c3 b6
]]></artwork>
        <t>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>
        <artwork><![CDATA[
C_I (Raw Value) (Connection identifier chosen by I) (1 byte)
37
]]></artwork>
        <artwork><![CDATA[
C_I (CBOR Data Item) (Connection identifier chosen by I) (1 byte)
37
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_1 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>I constructs message_1:</t>
        <artwork><![CDATA[
message_1 =
(
 3,
 [6, 2],
 h'8af6f430ebe18d34184017a9a11bf511c8dff8f834730b96
   c1b7c8dbca2fc3b6',
 -24
)
]]></artwork>
        <artwork><![CDATA[
message_1 (CBOR Sequence) (39 bytes)
03 82 06 02 58 20 8a f6 f4 30 eb e1 8d 34 18 40 17 a9 a1 1b f5 11 c8
df f8 f8 34 73 0b 96 c1 b7 c8 db ca 2f c3 b6 37
]]></artwork>
      </section>
      <section anchor="message2-1">
        <name>message_2</name>
        <t>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>
        <artwork><![CDATA[
Responder's ephemeral private key
Y (Raw Value) (32 bytes)
e2 f4 12 67 77 20 5e 85 3b 43 7d 6e ac a1 e1 f7 53 cd cc 3e 2c 69 fa
88 4b 0a 1a 64 09 77 e4 18
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key, 'x'-coordinate
G_Y (Raw Value) (32 bytes)
41 97 01 d7 f0 0a 26 c2 dc 58 7a 36 dd 75 25 49 f3 37 63 c8 93 42 2c
8e a0 f9 55 a1 3a 4f f5 d5
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key, one 'y'-coordinate
(Raw Value) (32 bytes)
5e 4f 0d d8 a3 da 0b aa 16 b9 d3 ad 56 a0 c1 86 0a 94 0a f8 59 14 91
5e 25 01 9b 40 24 17 e9 9d
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key, 'x'-coordinate
G_Y (CBOR Data Item) (34 bytes)
58 20 41 97 01 d7 f0 0a 26 c2 dc 58 7a 36 dd 75 25 49 f3 37 63 c8 93
42 2c 8e a0 f9 55 a1 3a 4f f5 d5
]]></artwork>
        <t>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>
        <artwork><![CDATA[
C_R (raw value) (Connection identifier chosen by R) (1 byte)
27
]]></artwork>
        <artwork><![CDATA[
C_R (CBOR Data Item) (Connection identifier chosen by R) (1 byte)
27
]]></artwork>
        <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>
        <artwork><![CDATA[
H(message_1) (Raw Value) (32 bytes)
ca 02 ca bd a5 a8 90 27 49 b4 2f 71 10 50 bb 4d bd 52 15 3e 87 52 75
94 b3 9f 50 cd f0 19 88 8c
]]></artwork>
        <artwork><![CDATA[
H(message_1) (CBOR Data Item) (34 bytes)
58 20 ca 02 ca bd a5 a8 90 27 49 b4 2f 71 10 50 bb 4d bd 52 15 3e 87
52 75 94 b3 9f 50 cd f0 19 88 8c
]]></artwork>
        <t>The input to calculate TH_2 is the CBOR sequence:</t>
        <t>G_Y, C_R, H(message_1)</t>
        <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>
        <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>
        <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>
        <t>PRK_2e is specified in <xref section="4.1.1.1" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>First, the ECDH shared secret G_XY is computed from G_X and Y, or G_Y and X:</t>
        <artwork><![CDATA[
G_XY (Raw Value) (ECDH shared secret) (32 bytes)
2f 0c b7 e8 60 ba 53 8f bf 5c 8b de d0 09 f6 25 9b 4b 62 8f e1 eb 7d
be 93 78 e5 ec f7 a8 24 ba
]]></artwork>
        <t>Then, PRK_2e is calculated using EDHOC_Extract() determined by the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_2e = EDHOC_Extract( salt, G_XY ) =
       = HMAC-SHA-256( salt, G_XY )
]]></artwork>
        <t>where salt is TH_2:</t>
        <artwork><![CDATA[
salt (Raw Value) (32 bytes)
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>
        <artwork><![CDATA[
PRK_2e (Raw Value) (32 bytes)
e0 1f a1 4d d5 6e 30 82 67 a1 a8 12 a9 d0 b9 53 41 e3 94 ab c7 c5 c3
9d d7 18 85 f7 d4 cd 5b f3
]]></artwork>
        <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 P-256 key pair:</t>
        <artwork><![CDATA[
Responder's private authentication key
SK_R (Raw Value) (32 bytes)
72 cc 47 61 db d4 c7 8f 75 89 31 aa 58 9d 34 8d 1e f8 74 a7 e3 03 ed
e2 f1 40 dc f3 e6 aa 4a ac
]]></artwork>
        <artwork><![CDATA[
Responder's public authentication key, 'x'-coordinate
(Raw Value) (32 bytes)
bb c3 49 60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91 a1 2a fb
cb ac 93 62 20 46 dd 44 f0
]]></artwork>
        <artwork><![CDATA[
Responder's public authentication key, 'y'-coordinate
(Raw Value) (32 bytes)
45 19 e2 57 23 6b 2a 0c e2 02 3f 09 31 f1 f3 86 ca 7a fd a6 4f cd e0
10 8c 22 4c 51 ea bf 60 72
]]></artwork>
        <t>Since 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 <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using EDHOC_Expand() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
SALT_3e2m  = EDHOC_KDF( PRK_2e, 1, TH_2, hash_length ) =
           = HKDF-Expand( PRK_2e, info, hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for SALT_3e2m is:</t>
        <artwork><![CDATA[
info =
(
 1,
 h'9d2af3a3d3fc06aea8110f14ba12ad0b4fb7e5cdf59c7df1
   cf2dfe9c2024439c',
 32
)
]]></artwork>
        <artwork><![CDATA[
info for SALT_3e2m (CBOR Sequence) (37 bytes)
01 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 18 20
]]></artwork>
        <artwork><![CDATA[
SALT_3e2m (Raw Value) (32 bytes)
a4 f7 67 b3 46 9a 6e 6a e5 fc bf 27 38 39 fa 87 c4 1f 46 2b 03 ad 1c
a7 ce 8f 37 c9 53 66 d8 d1
]]></artwork>
        <t>PRK_3e2m is specified in <xref section="4.1.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>PRK_3e2m is derived from G_RX using EDHOC_Extract() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_3e2m = EDHOC_Extract( SALT_3e2m, G_RX ) =
         = HMAC-SHA-256( SALT_3e2m, G_RX )
]]></artwork>
        <t>where G_RX is the ECDH shared secret calculated from G_X and R, or G_R and X.</t>
        <artwork><![CDATA[
G_RX (Raw Value) (ECDH shared secret) (32 bytes)
f2 b6 ee a0 22 20 b9 5e ee 5a 0b c7 01 f0 74 e0 0a 84 3e a0 24 22 f6
08 25 fb 26 9b 3e 16 14 23
]]></artwork>
        <artwork><![CDATA[
PRK_3e2m (Raw Value) (32 bytes)
41 2d 60 cd f9 9d c7 49 07 54 c9 69 ad 4c 46 b1 35 0b 90 84 33 eb f3
fe 06 3b e8 62 7f b3 5b 3b
]]></artwork>
        <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 = &lt;&lt; ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <t>CRED_R is identified by a 'kid' with byte string value 0x32:</t>
        <artwork><![CDATA[
ID_CRED_R =
{
 4 : h'32'
}
]]></artwork>
        <artwork><![CDATA[
ID_CRED_R (CBOR Data Item) (4 bytes)
a1 04 41 32
]]></artwork>
        <t>CRED_R is an RPK encoded as a CCS:</t>
        <artwork><![CDATA[
{                                              /CCS/
  2 : "example.edu",                           /sub/
  8 : {                                        /cnf/
    1 : {                                      /COSE_Key/
      1 : 2,                                   /kty/
      2 : h'32',                               /kid/
     -1 : 1,                                   /crv/
     -2 : h'BBC34960526EA4D32E940CAD2A234148
            DDC21791A12AFBCBAC93622046DD44F0', /x/
     -3 : h'4519E257236B2A0CE2023F0931F1F386
            CA7AFDA64FCDE0108C224C51EABF6072'  /y/
    }
  }
}
]]></artwork>
        <artwork><![CDATA[
CRED_R (CBOR Data Item) (95 bytes)
a2 02 6b 65 78 61 6d 70 6c 65 2e 65 64 75 08 a1 01 a5 01 02 02 41 32
20 01 21 58 20 bb c3 49 60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2
17 91 a1 2a fb cb ac 93 62 20 46 dd 44 f0 22 58 20 45 19 e2 57 23 6b
2a 0c e2 02 3f 09 31 f1 f3 86 ca 7a fd a6 4f cd e0 10 8c 22 4c 51 ea
bf 60 72
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_2 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>context_2 = &lt;&lt; ID_CRED_R, TH_2, CRED_R, ? EAD_2 &gt;&gt;</t>
        <artwork><![CDATA[
context_2 (CBOR Sequence) (133 bytes)
a1 04 41 32 58 20 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>
        <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>
        <t>MAC_2 is computed through EDHOC_Expand() using the EDHOC hash algorithm, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <t>MAC_2 = HKDF-Expand(PRK_3e2m, info, mac_length_2), where</t>
        <t>info = ( 2, context_2, mac_length_2 )</t>
        <t>Since METHOD = 3, mac_length_2 is given by the EDHOC MAC length.</t>
        <t>info for MAC_2 is:</t>
        <artwork><![CDATA[
info =
(
 2,
 h'a104413258209d2af3a3d3fc06aea8110f14ba12ad0b4fb7
   e5cdf59c7df1cf2dfe9c2024439ca2026b6578616d706c65
   2e65647508a101a501020241322001215820bbc34960526e
   a4d32e940cad2a234148ddc21791a12afbcbac93622046dd
   44f02258204519e257236b2a0ce2023f0931f1f386ca7afd
   a64fcde0108c224c51eabf6072',
 8
)
]]></artwork>
        <t>where the last value is the EDHOC MAC length.</t>
        <artwork><![CDATA[
info for MAC_2 (CBOR Sequence) (137 bytes)
02 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 08
]]></artwork>
        <artwork><![CDATA[
MAC_2 (Raw Value) (8 bytes)
d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <artwork><![CDATA[
MAC_2 (CBOR Data Item) (9 bytes)
48 d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <t>Since METHOD = 3, Signature_or_MAC_2 is MAC_2:</t>
        <artwork><![CDATA[
Signature_or_MAC_2 (Raw Value) (8 bytes)
d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_2 (CBOR Data Item) (9 bytes)
48 d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <t>R constructs PLAINTEXT_2:</t>
        <artwork><![CDATA[
PLAINTEXT_2 =
(
 ID_CRED_R / bstr / -24..23,
 Signature_or_MAC_2,
 ? EAD_2
)
]]></artwork>
        <t>Since ID_CRED_R contains a single 'kid' parameter, only the byte string value is included in the plaintext, represented as described in <xref section="3.3.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>. The CBOR map { 4 : h'32' } is thus replaced, not by the CBOR byte string 0x4132, but by the CBOR int 0x32, since that is a one byte encoding of a CBOR integer (-19).</t>
        <artwork><![CDATA[
PLAINTEXT_2 (CBOR Sequence) (10 bytes)
32 48 d0 d1 a5 94 79 7d 0a af
]]></artwork>
        <t>The input needed to calculate KEYSTREAM_2 is defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using EDHOC_Expand() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
KEYSTREAM_2 = EDHOC_KDF( PRK_2e, 0, TH_2, plaintext_length ) =
            = HKDF-Expand( PRK_2e, info, plaintext_length )
]]></artwork>
        <t>where plaintext_length is the length of PLAINTEXT_2, and info for KEYSTREAM_2 is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'9d2af3a3d3fc06aea8110f14ba12ad0b4fb7e5cdf59c7df1
   cf2dfe9c2024439c',
 10
)
]]></artwork>
        <t>where the last value is the length of PLAINTEXT_2.</t>
        <artwork><![CDATA[
info for KEYSTREAM_2 (CBOR Sequence) (36 bytes)
00 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 0a
]]></artwork>
        <artwork><![CDATA[
KEYSTREAM_2 (Raw Value) (10 bytes)
36 6c 89 33 7f f8 0c 69 35 9a
]]></artwork>
        <t>R calculates CIPHERTEXT_2 as XOR between PLAINTEXT_2 and KEYSTREAM_2:</t>
        <artwork><![CDATA[
CIPHERTEXT_2 (Raw Value) (10 bytes)
04 24 59 e2 da 6c 75 14 3f 35
]]></artwork>
        <t>R constructs message_2:</t>
        <artwork><![CDATA[
message_2 =
(
 G_Y_CIPHERTEXT_2,
 C_R
)
]]></artwork>
        <t>where G_Y_CIPHERTEXT_2 is the bstr encoding of the concatenation of
the raw values of G_Y and CIPHERTEXT_2.</t>
        <artwork><![CDATA[
message_2 (CBOR Sequence) (45 bytes)
58 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 04 24 59 e2 da 6c 75 14 3f 35 27
]]></artwork>
      </section>
      <section anchor="message3-1">
        <name>message_3</name>
        <t>The transcript hash TH_3 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_3 = H( TH_2, PLAINTEXT_2, CRED_R )</t>
        <artwork><![CDATA[
Input to calculate TH_3 (CBOR Sequence) (139 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 d0 d1 a5 94 79 7d 0a af a2 02
6b 65 78 61 6d 70 6c 65 2e 65 64 75 08 a1 01 a5 01 02 02 41 32 20 01
21 58 20 bb c3 49 60 52 6e a4 d3 2e 94 0c ad 2a 23 41 48 dd c2 17 91
a1 2a fb cb ac 93 62 20 46 dd 44 f0 22 58 20 45 19 e2 57 23 6b 2a 0c
e2 02 3f 09 31 f1 f3 86 ca 7a fd a6 4f cd e0 10 8c 22 4c 51 ea bf 60
72
]]></artwork>
        <artwork><![CDATA[
TH_3 (Raw Value) (32 bytes)
b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab 3e 9e d1
2d fe 22 a5 3e ed a7 de 48
]]></artwork>
        <artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab 3e
9e d1 2d fe 22 a5 3e ed a7 de 48
]]></artwork>
        <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 P-256 key pair:</t>
        <artwork><![CDATA[
Initiator's private authentication key
SK_I (Raw Value) (32 bytes)
fb 13 ad eb 65 18 ce e5 f8 84 17 66 08 41 14 2e 83 0a 81 fe 33 43 80
a9 53 40 6a 13 05 e8 70 6b
]]></artwork>
        <artwork><![CDATA[
Initiator's public authentication key, 'x'-coordinate
(Raw Value) (32 bytes)
ac 75 e9 ec e3 e5 0b fc 8e d6 03 99 88 95 22 40 5c 47 bf 16 df 96 66
0a 41 29 8c b4 30 7f 7e b6
]]></artwork>
        <artwork><![CDATA[
Initiator's public authentication key, 'y'-coordinate
(Raw Value) (32 bytes)
6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87 d2 57 e6 db
3c 2a 93 df 21 ff 3a ff c8
]]></artwork>
        <t>Since I authenticates with static DH (METHOD = 3), PRK_4e3m is derived
from SALT_4e3m and G_IY.</t>
        <t>The input needed to calculate SALT_4e3m is defined in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using EDHOC_Expand() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
SALT_4e3m  = EDHOC_KDF( PRK_3e2m, 5, TH_3, hash_length ) =
           = HKDF-Expand( PRK_3e2m, info, hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for SALT_4e3m is:</t>
        <artwork><![CDATA[
info =
(
 5,
 h'b778f602331ff68ac402a6511b9de285bedf6eab3e9ed12d
   fe22a53eeda7de48',
 32
)
]]></artwork>
        <artwork><![CDATA[
info for SALT_4e3m (CBOR Sequence) (37 bytes)
05 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab
3e 9e d1 2d fe 22 a5 3e ed a7 de 48 18 20
]]></artwork>
        <artwork><![CDATA[
SALT_4e3m (Raw Value) (32 bytes)
8c 60 d4 35 7f ba 5f 69 4a 81 48 2c 4d 38 a1 00 0b c3 e3 e2 a2 94 06
d1 81 53 ff c3 59 5c 17 ba
]]></artwork>
        <t>PRK_4e3m is specified in <xref section="4.1.1.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>Since I authenticates with static DH (METHOD = 3), PRK_4e3m is derived
from G_IY using EDHOC_Extract() with the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
PRK_4e3m = EDHOC_Extract(SALT_4e3m, G_IY) =
         = HMAC-SHA-256(SALT_4e3m, G_IY)
]]></artwork>
        <t>where G_IY is the ECDH shared secret calculated from G_I and Y, or G_Y and I.</t>
        <artwork><![CDATA[
G_IY (Raw Value) (ECDH shared secret) (32 bytes)
08 0f 42 50 85 bc 62 49 08 9e ac 8f 10 8e a6 23 26 85 7e 12 ab 07 d7
20 28 ca 1b 5f 36 e0 04 b3
]]></artwork>
        <artwork><![CDATA[
PRK_4e3m (Raw Value) (32 bytes)
7d 01 59 bb e4 54 73 c9 40 2e 0d 42 db ce b4 5d ca 05 b7 44 ca e1 e0
83 e5 83 15 b8 aa 47 ce ec
]]></artwork>
        <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 = &lt;&lt; ID_CRED_I, TH_3, CRED_I, ? EAD_3 &gt;&gt;</t>
        <t>CRED_I is identified by a 'kid' with byte string value 0x2b:</t>
        <artwork><![CDATA[
ID_CRED_I =
{
 4 : h'2b'
}
]]></artwork>
        <artwork><![CDATA[
ID_CRED_I (CBOR Data Item) (4 bytes)
a1 04 41 2b
]]></artwork>
        <t>CRED_I is an RPK encoded as a CCS:</t>
        <artwork><![CDATA[
{                                              /CCS/
  2 : "42-50-31-FF-EF-37-32-39",               /sub/
  8 : {                                        /cnf/
    1 : {                                      /COSE_Key/
      1 : 2,                                   /kty/
      2 : h'2b',                               /kid/
     -1 : 1,                                   /crv/
     -2 : h'AC75E9ECE3E50BFC8ED6039988952240
            5C47BF16DF96660A41298CB4307F7EB6'  /x/
     -3 : h'6E5DE611388A4B8A8211334AC7D37ECB
            52A387D257E6DB3C2A93DF21FF3AFFC8'  /y/
    }
  }
}
]]></artwork>
        <artwork><![CDATA[
CRED_I (CBOR Data Item) (107 bytes)
a2 02 77 34 32 2d 35 30 2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32
2d 33 39 08 a1 01 a5 01 02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5
0b fc 8e d6 03 99 88 95 22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30
7f 7e b6 22 58 20 6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52
a3 87 d2 57 e6 db 3c 2a 93 df 21 ff 3a ff c8
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_3 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>context_3 = &lt;&lt; ID_CRED_I, TH_3, CRED_I, ? EAD_3 &gt;&gt;</t>
        <artwork><![CDATA[
context_3 (CBOR Sequence) (145 bytes)
a1 04 41 2b 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be
df 6e ab 3e 9e d1 2d fe 22 a5 3e ed a7 de 48 a2 02 77 34 32 2d 35 30
2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32 2d 33 39 08 a1 01 a5 01
02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5 0b fc 8e d6 03 99 88 95
22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30 7f 7e b6 22 58 20 6e 5d
e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87 d2 57 e6 db 3c 2a
93 df 21 ff 3a ff c8
]]></artwork>
        <artwork><![CDATA[
context_3 (CBOR byte string) (147 bytes)
58 91 a1 04 41 2b 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2
85 be df 6e ab 3e 9e d1 2d fe 22 a5 3e ed a7 de 48 a2 02 77 34 32 2d
35 30 2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32 2d 33 39 08 a1 01
a5 01 02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5 0b fc 8e d6 03 99
88 95 22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30 7f 7e b6 22 58 20
6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87 d2 57 e6 db
3c 2a 93 df 21 ff 3a ff c8
]]></artwork>
        <t>MAC_3 is computed through EDHOC_Expand() using the EDHOC hash algorithm, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
MAC_3 = HKDF-Expand(PRK_4e3m, info, mac_length_3), where
]]></artwork>
        <t>info = ( 6, context_3, mac_length_3 )</t>
        <t>Since METHOD = 3, mac_length_3 is given by the EDHOC MAC length.</t>
        <t>info for MAC_3 is:</t>
        <artwork><![CDATA[
info =
(
 6,
 h'a104412b5820b778f602331ff68ac402a6511b9de285bedf
   6eab3e9ed12dfe22a53eeda7de48a2027734322d35302d33
   312d46462d45462d33372d33322d333908a101a501020241
   2b2001215820ac75e9ece3e50bfc8ed60399889522405c47
   bf16df96660a41298cb4307f7eb62258206e5de611388a4b
   8a8211334ac7d37ecb52a387d257e6db3c2a93df21ff3aff
   c8',
 8
)
]]></artwork>
        <t>where the last value is the EDHOC MAC length.</t>
        <artwork><![CDATA[
info for MAC_3 (CBOR Sequence) (149 bytes)
06 58 91 a1 04 41 2b 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d
e2 85 be df 6e ab 3e 9e d1 2d fe 22 a5 3e ed a7 de 48 a2 02 77 34 32
2d 35 30 2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32 2d 33 39 08 a1
01 a5 01 02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5 0b fc 8e d6 03
99 88 95 22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30 7f 7e b6 22 58
20 6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87 d2 57 e6
db 3c 2a 93 df 21 ff 3a ff c8 08
]]></artwork>
        <artwork><![CDATA[
MAC_3 (Raw Value) (8 bytes)
dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <artwork><![CDATA[
MAC_3 (CBOR Data Item) (9 bytes)
48 dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <t>Since METHOD = 3, Signature_or_MAC_3 is MAC_3:</t>
        <artwork><![CDATA[
Signature_or_MAC_3 (Raw Value) (8 bytes)
dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <artwork><![CDATA[
Signature_or_MAC_3 (CBOR Data Item) (9 bytes)
48 dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <t>I constructs PLAINTEXT_3:</t>
        <artwork><![CDATA[
PLAINTEXT_3 =
(
 ID_CRED_I / bstr / -24..23,
 Signature_or_MAC_3,
 ? EAD_3
)
]]></artwork>
        <t>Since ID_CRED_I contains a single 'kid' parameter, only the byte string value is included in the plaintext, represented as described in <xref section="3.3.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>. The CBOR map { 4 : h'2b' } is thus replaced, not by the CBOR byte string 0x412b, but by the CBOR int 0x2b, since that is a one byte encoding of a CBOR integer (-12).</t>
        <artwork><![CDATA[
PLAINTEXT_3 (CBOR Sequence) (10 bytes)
2b 48 dd f1 06 b8 6f d2 2f e4
]]></artwork>
        <t>I constructs the associated data for message_3:</t>
        <artwork><![CDATA[
A_3 =
[
 "Encrypt0",
 h'',
 h'b778f602331ff68ac402a6511b9de285bedf6eab3e9ed12d
   fe22a53eeda7de48'
]
]]></artwork>
        <artwork><![CDATA[
A_3 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 b7 78 f6 02 33 1f f6 8a c4 02
a6 51 1b 9d e2 85 be df 6e ab 3e 9e d1 2d fe 22 a5 3e ed a7 de 48
]]></artwork>
        <t>I constructs the input needed to derive the key K_3, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
K_3 = EDHOC_KDF( PRK_3e2m, 3, TH_3, key_length )
    = HKDF-Expand( PRK_3e2m, info, key_length ),
]]></artwork>
        <t>where key_length is the key length of EDHOC AEAD algorithm, and info for K_3 is:</t>
        <artwork><![CDATA[
info =
(
 3,
 h'b778f602331ff68ac402a6511b9de285bedf6eab3e9ed12d
   fe22a53eeda7de48',
 16
)
]]></artwork>
        <t>where the last value is the key length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_3 (CBOR Sequence) (36 bytes)
03 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab
3e 9e d1 2d fe 22 a5 3e ed a7 de 48 10
]]></artwork>
        <artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
2f 10 8b ef ff 80 6f 5f c8 1b f0 a2 d5 f4 24 1f
]]></artwork>
        <t>I constructs the input needed to derive the nonce IV_3, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
IV_3 = EDHOC_KDF( PRK_3e2m, 4, TH_3, iv_length )
     = HKDF-Expand( PRK_3e2m, info, iv_length ),
]]></artwork>
        <t>where iv_length is the nonce length of EDHOC AEAD algorithm, and info for IV_3 is:</t>
        <artwork><![CDATA[
info =
(
 4,
 h'b778f602331ff68ac402a6511b9de285bedf6eab3e9ed12d
   fe22a53eeda7de48',
 13
)
]]></artwork>
        <t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_3 (CBOR Sequence) (36 bytes)
04 58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab
3e 9e d1 2d fe 22 a5 3e ed a7 de 48 0d
]]></artwork>
        <artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
e3 ff 26 46 33 25 8e 49 46 2d 35 56 6d
]]></artwork>
        <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>
        <artwork><![CDATA[
CIPHERTEXT_3 (Raw Value) (18 bytes)
c2 b6 28 35 dc 9b 1f 53 41 9c 1d 3a 22 61 ee ed 35 05
]]></artwork>
        <t>message_3 is the CBOR bstr encoding of CIPHERTEXT_3:</t>
        <artwork><![CDATA[
message_3 (CBOR Sequence) (19 bytes)
52 c2 b6 28 35 dc 9b 1f 53 41 9c 1d 3a 22 61 ee ed 35 05
]]></artwork>
        <t>The transcript hash TH_4 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_4 = H( TH_3, PLAINTEXT_3, CRED_I )</t>
        <artwork><![CDATA[
Input to calculate TH_4 (CBOR Sequence) (151 bytes)
58 20 b7 78 f6 02 33 1f f6 8a c4 02 a6 51 1b 9d e2 85 be df 6e ab 3e
9e d1 2d fe 22 a5 3e ed a7 de 48 2b 48 dd f1 06 b8 6f d2 2f e4 a2 02
77 34 32 2d 35 30 2d 33 31 2d 46 46 2d 45 46 2d 33 37 2d 33 32 2d 33
39 08 a1 01 a5 01 02 02 41 2b 20 01 21 58 20 ac 75 e9 ec e3 e5 0b fc
8e d6 03 99 88 95 22 40 5c 47 bf 16 df 96 66 0a 41 29 8c b4 30 7f 7e
b6 22 58 20 6e 5d e6 11 38 8a 4b 8a 82 11 33 4a c7 d3 7e cb 52 a3 87
d2 57 e6 db 3c 2a 93 df 21 ff 3a ff c8
]]></artwork>
        <artwork><![CDATA[
TH_4 (Raw Value) (32 bytes)
1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2 43 a8 b4
13 60 a9 8e c4 cb 70 6b 70
]]></artwork>
        <artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2 43
a8 b4 13 60 a9 8e c4 cb 70 6b 70
]]></artwork>
      </section>
      <section anchor="message4-1">
        <name>message_4</name>
        <t>No external authorization data:</t>
        <t>EAD_4 (CBOR Sequence) (0 bytes)</t>
        <t>R constructs PLAINTEXT_4:</t>
        <artwork><![CDATA[
PLAINTEXT_4 =
(
 ? EAD_4
)
]]></artwork>
        <t>PLAINTEXT_4 (CBOR Sequence) (0 bytes)</t>
        <t>R constructs the associated data for message_4:</t>
        <artwork><![CDATA[
A_4 =
[
 "Encrypt0",
 h'',
 h'1f57dabf8f26da0657d9840c9b1077c1d4c47db243a8b413
   60a98ec4cb706b70'
]
]]></artwork>
        <artwork><![CDATA[
A_4 (CBOR Data Item) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 1f 57 da bf 8f 26 da 06 57 d9
84 0c 9b 10 77 c1 d4 c4 7d b2 43 a8 b4 13 60 a9 8e c4 cb 70 6b 70
]]></artwork>
        <t>R constructs the input needed to derive the EDHOC message_4 key, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
K_4   = EDHOC_KDF( PRK_4e3m, 8, TH_4, key_length )
      = HKDF-Expand( PRK_4e3m, info, key_length )
]]></artwork>
        <t>where key_length is the key length of the EDHOC AEAD algorithm,
and info for EDHOC_K_4 is:</t>
        <artwork><![CDATA[
info =
(
 8,
 h'1f57dabf8f26da0657d9840c9b1077c1d4c47db243a8b413
   60a98ec4cb706b70',
 16
)
]]></artwork>
        <t>where the last value is the key length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for K_4 (CBOR Sequence) (36 bytes)
08 58 20 1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2
43 a8 b4 13 60 a9 8e c4 cb 70 6b 70 10
]]></artwork>
        <artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
de 02 dc 03 6c b6 81 cd 53 80 d7 83 e8 53 14 2f
]]></artwork>
        <t>R constructs the input needed to derive the EDHOC message_4 nonce, see <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, using the EDHOC hash algorithm:</t>
        <artwork><![CDATA[
      IV_4 = EDHOC_KDF( PRK_4e3m, 9, TH_4, iv_length )
           = HKDF-Expand( PRK_4e3m, info, iv_length )
]]></artwork>
        <t>where iv_length is the nonce length of EDHOC AEAD algorithm,
and info for EDHOC_IV_4 is:</t>
        <artwork><![CDATA[
info =
(
 9,
 h'1f57dabf8f26da0657d9840c9b1077c1d4c47db243a8b413
   60a98ec4cb706b70',
 13
)
]]></artwork>
        <t>where the last value is the nonce length of EDHOC AEAD algorithm.</t>
        <artwork><![CDATA[
info for IV_4 (CBOR Sequence) (36 bytes)
09 58 20 1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2
43 a8 b4 13 60 a9 8e c4 cb 70 6b 70 0d
]]></artwork>
        <artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
c2 93 2c 74 55 f5 6c 82 57 59 23 39 59
]]></artwork>
        <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>
        <artwork><![CDATA[
CIPHERTEXT_4 (8 bytes)
63 59 ad 21 f0 77 a9 d1
]]></artwork>
        <t>message_4 is the CBOR bstr encoding of CIPHERTEXT_4:</t>
        <artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 63 59 ad 21 f0 77 a9 d1
]]></artwork>
      </section>
      <section anchor="out-and-exporter2">
        <name>PRK_out and PRK_exporter</name>
        <t>PRK_out is specified in <xref section="4.1.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
PRK_out = EDHOC_KDF( PRK_4e3m, 7, TH_4, hash_length ) =
        = HKDF-Expand( PRK_4e3m, info,  hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for PRK_out is:</t>
        <artwork><![CDATA[
info =
(
 7,
 h'1f57dabf8f26da0657d9840c9b1077c1d4c47db243a8b413
   60a98ec4cb706b70',
 32
)
]]></artwork>
        <t>where the last value is the length of EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_out (CBOR Sequence) (37 bytes)
07 58 20 1f 57 da bf 8f 26 da 06 57 d9 84 0c 9b 10 77 c1 d4 c4 7d b2
43 a8 b4 13 60 a9 8e c4 cb 70 6b 70 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
7d 0a 64 61 d8 38 48 ed d5 23 4c 5f 97 f4 b7 7c 1d 24 a7 12 09 29 29
20 cb 49 74 e5 59 f5 41 3d
]]></artwork>
        <t>The OSCORE Master Secret and OSCORE Master Salt are derived with the EDHOC_Exporter as specified in 4.2.1 of <xref target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
EDHOC_Exporter( label, context, length )
= EDHOC_KDF( PRK_exporter, label, context, length )
]]></artwork>
        <t>where PRK_exporter is derived from PRK_out:</t>
        <artwork><![CDATA[
 PRK_exporter = EDHOC_KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash algorithm, and info for the PRK_exporter is:</t>
        <artwork><![CDATA[
info =
(
 10,
 h'',
 32
)
]]></artwork>
        <t>where the last value is the length of EDHOC hash algorithm.</t>
        <artwork><![CDATA[
info for PRK_exporter (CBOR Sequence) (4 bytes)
0a 40 18 20
]]></artwork>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
52 d1 2a 79 52 00 96 b6 c4 be 60 cf a9 9e ad 2f d6 2a ba 58 aa fb 5c
c2 df 2e 04 52 ef 6c 0d d9
]]></artwork>
      </section>
      <section anchor="oscore-parameters">
        <name>OSCORE Parameters</name>
        <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>
        <artwork><![CDATA[
Application AEAD Algorithm (int)
10
]]></artwork>
        <artwork><![CDATA[
Application Hash Algorithm (int)
-16
]]></artwork>
        <t>The mapping from EDHOC connection identifiers to OSCORE Sender/Recipient IDs
is defined in <xref section="3.3.3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <t>C_R is mapped to the Recipient ID of the server, i.e., the Sender ID of the client. The byte string 0x27, which as C_R is encoded as the CBOR integer 0x27, is converted to the server Recipient ID 0x27.</t>
        <artwork><![CDATA[
Client's OSCORE Sender ID (Raw Value) (1 byte)
27
]]></artwork>
        <t>C_I is mapped to the Recipient ID of the client, i.e., the Sender ID of the server. The byte string 0x37, which as C_I is encoded as the CBOR integer 0x0e is converted to the client Recipient ID 0x37.</t>
        <artwork><![CDATA[
Server's OSCORE Sender ID (Raw Value) (1 byte)
37
]]></artwork>
        <t>The OSCORE Master Secret is computed through EDHOC_Expand() using the
Application hash algorithm, see Appendix A.1 of <xref target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
OSCORE Master Secret = EDHOC_Exporter( 0, h'', oscore_key_length )
= EDHOC_KDF( PRK_exporter, 0, h'',  oscore_key_length )
= HKDF-Expand( PRK_exporter, info,  oscore_key_length )
]]></artwork>
        <t>where oscore_key_length is by default the key length of the Application AEAD
algorithm, and info for the OSCORE Master Secret is:</t>
        <artwork><![CDATA[
info =
(
 0,
 h'',
 16
)
]]></artwork>
        <t>where the last value is the key length of Application AEAD algorithm.</t>
        <artwork><![CDATA[
info for OSCORE Master Secret (CBOR Sequence) (3 bytes)
00 40 10
]]></artwork>
        <artwork><![CDATA[
OSCORE Master Secret (Raw Value) (16 bytes)
07 ce 22 f2 63 8f ca 40 4d de d7 2a 25 fa 45 f4
]]></artwork>
        <t>The OSCORE Master Salt is computed through EDHOC_Expand() using the Application hash algorithm, see <xref section="4.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <artwork><![CDATA[
OSCORE Master Salt = EDHOC_Exporter( 1, h'', oscore_salt_length )
= EDHOC_KDF( PRK_exporter, 1, h'', oscore_salt_length )
= HKDF-Expand( PRK_4x3m, info, oscore_salt_length )
]]></artwork>
        <t>where oscore_salt_length is the length of the OSCORE Master Salt, and info for the OSCORE Master Salt is:</t>
        <artwork><![CDATA[
info =
(
 1,
 h'',
 8
)
]]></artwork>
        <t>where the last value is the length of the OSCORE Master Salt.</t>
        <artwork><![CDATA[
info for OSCORE Master Salt (CBOR Sequence) (3 bytes)
01 40 08
]]></artwork>
        <artwork><![CDATA[
OSCORE Master Salt (Raw Value) (8 bytes)
5b e3 82 5f 5a 52 84 b7
]]></artwork>
      </section>
      <section anchor="key-update-1">
        <name>Key Update</name>
        <t>Key update is defined in <xref section="J" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <artwork><![CDATA[
EDHOC_KeyUpdate( context ):
PRK_out = EDHOC_KDF( PRK_out, 11, context, hash_length )
        = HKDF-Expand( PRK_out, info, hash_length )
]]></artwork>
        <t>where hash_length is the length of the output of the EDHOC hash function, context for KeyUpdate is</t>
        <artwork><![CDATA[
context for KeyUpdate (Raw Value) (16 bytes)
a0 11 58 fd b8 20 89 0c d6 be 16 96 02 b8 bc ea
]]></artwork>
        <artwork><![CDATA[
context for KeyUpdate (CBOR Data Item) (17 bytes)
50 a0 11 58 fd b8 20 89 0c d6 be 16 96 02 b8 bc ea
]]></artwork>
        <t>and where info for key update is:</t>
        <artwork><![CDATA[
info =
(
 11,
 h'a01158fdb820890cd6be169602b8bcea',
 32
)
]]></artwork>
        <artwork><![CDATA[
PRK_out after KeyUpdate (Raw Value) (32 bytes)
cb ae fc 6c fe 8c 9d 65 09 0c 34 2e 4e 4f cd d6 07 98 19 85 db 6f 57
67 e9 06 55 14 0e 3a 09 b1
]]></artwork>
        <t>After key update the PRK_exporter needs to be derived anew:</t>
        <artwork><![CDATA[
 PRK_exporter = EDHOC_KDF( PRK_out, 10, h'', hash_length ) =
              = HKDF-Expand( PRK_out, info,  hash_length )
]]></artwork>
        <t>where info and hash_length as unchanged as in <xref target="out-and-exporter2"/>.</t>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
10 c3 69 11 e0 8a e5 25 13 b9 a8 a2 84 85 bf 3c eb 79 18 e4 c8 4e 5b
ca ad 7a 21 1c 42 f0 13 3a
]]></artwork>
        <t>The OSCORE Master Secret is derived with the updated PRK_exporter:</t>
        <artwork><![CDATA[
OSCORE Master Secret =
= HKDF-Expand(PRK_exporter, info, oscore_key_length)
]]></artwork>
        <t>where info and key_length are unchanged as in <xref target="oscore-param"/>.</t>
        <artwork><![CDATA[
OSCORE Master Secret after KeyUpdate (Raw Value) (16 bytes)
4c 75 69 6c ba 17 9c a9 f6 87  07 ee dc de 76 e0
]]></artwork>
        <t>The OSCORE Master Salt is derived with the updated PRK_exporter:</t>
        <artwork><![CDATA[
OSCORE Master Salt = HKDF-Expand(PRK_exporter, info, salt_length)
]]></artwork>
        <t>where info and salt_length are unchanged as in <xref target="oscore-param"/>.</t>
        <artwork><![CDATA[
OSCORE Master Salt after KeyUpdate (Raw Value) (8 bytes)
9d 95 4f c2 e7 ab b4 d0
]]></artwork>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>This document contains examples of EDHOC <xref target="I-D.ietf-lake-edhoc"/> whose security considerations apply. The keys printed in these examples cannot be considered secret and must not be used.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>There are no IANA considerations.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Informative References</name>
      <reference anchor="I-D.ietf-lake-edhoc">
        <front>
          <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
          <author fullname="Göran Selander" initials="G." surname="Selander">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="Francesca Palombini" initials="F." surname="Palombini">
            <organization>Ericsson AB</organization>
          </author>
          <date day="3" month="February" year="2023"/>
          <abstract>
            <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-19"/>
      </reference>
      <reference anchor="RFC7748">
        <front>
          <title>Elliptic Curves for Security</title>
          <author fullname="A. Langley" initials="A." surname="Langley">
            <organization/>
          </author>
          <author fullname="M. Hamburg" initials="M." surname="Hamburg">
            <organization/>
          </author>
          <author fullname="S. Turner" initials="S." surname="Turner">
            <organization/>
          </author>
          <date month="January" year="2016"/>
          <abstract>
            <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS).  These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7748"/>
        <seriesInfo name="DOI" value="10.17487/RFC7748"/>
      </reference>
      <reference anchor="RFC8032">
        <front>
          <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
          <author fullname="S. Josefsson" initials="S." surname="Josefsson">
            <organization/>
          </author>
          <author fullname="I. Liusvaara" initials="I." surname="Liusvaara">
            <organization/>
          </author>
          <date month="January" year="2017"/>
          <abstract>
            <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA).  The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves.  An example implementation and test vectors are provided.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8032"/>
        <seriesInfo name="DOI" value="10.17487/RFC8032"/>
      </reference>
      <reference anchor="RFC8392">
        <front>
          <title>CBOR Web Token (CWT)</title>
          <author fullname="M. Jones" initials="M." surname="Jones">
            <organization/>
          </author>
          <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem">
            <organization/>
          </author>
          <author fullname="S. Erdtman" initials="S." surname="Erdtman">
            <organization/>
          </author>
          <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
            <organization/>
          </author>
          <date month="May" year="2018"/>
          <abstract>
            <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8392"/>
        <seriesInfo name="DOI" value="10.17487/RFC8392"/>
      </reference>
      <reference anchor="RFC8949">
        <front>
          <title>Concise Binary Object Representation (CBOR)</title>
          <author fullname="C. Bormann" initials="C." surname="Bormann">
            <organization/>
          </author>
          <author fullname="P. Hoffman" initials="P." surname="Hoffman">
            <organization/>
          </author>
          <date month="December" year="2020"/>
          <abstract>
            <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
            <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="94"/>
        <seriesInfo name="RFC" value="8949"/>
        <seriesInfo name="DOI" value="10.17487/RFC8949"/>
      </reference>
      <reference anchor="CborMe" target="http://cbor.me/">
        <front>
          <title>CBOR Playground</title>
          <author initials="C." surname="Bormann">
            <organization/>
          </author>
          <date year="2018" month="May"/>
        </front>
      </reference>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors want to thank all people verifying EDHOC test vectors and/or contributing to the interoperability testing including: <contact fullname="Christian Amsüss"/>, <contact fullname="Timothy Claeys"/>, <contact fullname="Stefan Hristozov"/>, <contact fullname="Rikard Höglund"/>, <contact fullname="Christos Koulamas"/>, <contact fullname="Francesca Palombini"/>, <contact fullname="Lidia Pocero"/>, <contact fullname="Peter van der Stok"/>, <contact fullname="Michel Veillette"/> and <contact fullname="Mališa Vučinić"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA929W3MbSbIm+B6/IqzqQdQYycq45A02dfZQJNXiUatKRqr7
VO2ZNllkZqSEEQhwAFCXI9O+7tP+hrX5DWM2T/vWs/9r3T3vyMgEQEjqOqtS
UWAiMzIufvncw93j5OSEvZ9wxdh6up7ZCX+1NKld8UXOLy+e/XrOskU6N7fw
RbY0+fpkatf5ycy8sydruvHE85lJkqV9P2Fserec8PXyfrWWnhd7kpmlNRN+
Y9P75XT9iX14M+F/Pnt+yf91sXw3nb/hf1ou7u/Yuw8TfjVf2+Xcrk8u8DUs
NesJn87zBVvdJ7fT1Wq6mK8/3UE3ri5fPWUsXWTw/ITfQ28idjed8B95aub8
fmW5WS7NJ340zbmZzfgnu3rMF0v+1qze8rd2aRnn60U6wS/g42qxXC9tvqp/
/3Tb/hXuzOzd+u2ES8bM/frtYjlhJ7yYkT/9/X8u4Z03dmbmmV3i0/fL4qvW
tcUS+nm5nKar1WIOv5ez1b60gi5YGPDN5YkINNcev4EXv3u7mN3Ct+nifr5e
foKvP9jM4v321kxnE/5mAa8/XZWv+mdbNniaLm7rPv7L4u2cv1za+7//3/yF
Wa/LN07n0/XUzGCc/9Ludv/Gb9f7/wo9O70t3+Tu/Augn3cwl0AS026vX3Qn
u7qBent2c3PGz578+dffW/3tXKx6rOSJF3n8fzfJ1C7//e//40O7vy8XOK9N
f2+xMzDb9K5/NquVMcls8Wmzw+mCv5rOFqkZ7m/9PXX3+urmstXR8tcHTuot
duB0TS/45+UUusvYfLGEaZ6+t8ihwFLNb5xfnVycNixts7fAGXD5+ul5GOqo
/Bh5SlYfVVx/jHVMbZwni+ULi1eBX8zyDXb77Xp9N/nppxS+Or21PxXfFQLm
/Mmv1/zlzHx6A8xPEwyDLzmL05+T8l+cQJi781P+BDs9n9P1zKxppj9x6YmI
sZOTE5i8FYqjNWOv3k5XHGTW/a2dr2Ge5msDjQCb31puP5rbu5nl60bE3b21
t7CiM34xzfOpPXlmZzN4E//1vV3y819vLvkRicHHp8WLbqdZNoM5/REF1nKR
3adrkEyM0U3882fHfH75wqFLhs+mb96uP1j8SeOF/k1BzNmMv7OfoG/pWzN/
Y/ndcgELvZjxzK6mb+bwdY7SCx6bfcLx4ECneHll12uQgatTPjBmmLDFml6w
7sr05h3L+/nqmH+Yrt/CVN/dr4/54n5N/wLpwyWQybc2m0Ij+Ay0sUKpvbSr
+9l6BcKRr6Ywo9P8E1/bFfYG34GXLHbF4NysTnFRrKN/6w+LsmdARv8JJm9l
00KrnAiYtBN+1swSNFR0E+fErO+XFmdtxacZ3gArl/EEOgHvITn/3szuLfYF
r/x26nsxT+0Sb8QZX/EjGM17eBbHCC/G71ZfvjzGqQQymWd3Cxj7irTJZXYB
kuPz55IPoGO4HqbbNZyt36Tvi7i4E5mnvNNWJHZih4itvf6nm1Mhh6cCJzh1
NLY5LSvgrTW9pb6+XPGZSeARXLPzf33Fz2dmeguSFEZ9dH5+AzqzGDLw+5cv
rnn55ermFX95Iv2AHz29ennDX/7lCRdRcKIf07iTBXTRNXicq6LrO85IQd80
G6DRVws+nc3ukQ1wJXGB0ym0swT5OgU6nds3CxC6OE0FFZdLjfxQSwCgjNni
Q8MHC2D3t9ZkJS/cAqGbN/DIavrvBd8cqfiYa/+Yi/gxTCm8uSTrkrWAjNbE
hYheAIFYJMFpwbvQNsIXfgLUAU0NCAloD6QKLAAAolKcQHvAoDyxIDYsEhkI
HVQoa2j06Ooxjc7wa7u6WyAA4EfXJQXfLafvYXZ+urtPZkAhOJt3Zrpc0RPp
0hIVwFRid67o4jUw9X+7ny5RWCxwXkCyWZrceo7qScHRAUl9mBejrufgA1Ao
TL/NSplFS2Nm6f2sFgTFuJqWNoVMJVnwFXYOIK/gUFIZBT2C0gGGoHEYejug
tQXcnYCEma7uQK20HoFG38wXK+QSEoW4Cvcowo65PX1zekxdpDvvan0E7ykU
2pcvQA1vpymQAywTUdott2b1iWbILIEHSDLfA8Hi2H759dUlF8UCrEDPEyTA
NQRuKYU4kF9m0+ktEDzSECp5lOA0HGh+uiw6QyOvRHs9vaXcLBgLO740H5zN
wJ3LZUEUxN11k9ANUJ6GA5vc1j2Wp/wqx+nh6cyaJc+Xi9uyFViZj6AKlsCj
t4nFBTXrorkVEAs0WS4hXSLUDb+vViDmh14KX3NbKIe6A+qU/ytSTofYYMxz
GMGSdMoG1WQL+IEdns5x+edrUIwlkxdDn5VCOV0uVisyAqpnj0ELv4PeLc5e
0uLPC2BQNw0mBojYGTSIFHi3tHcg9GAEJBVgQuaW9H1HjpKMWawLlsInq+Ze
C+hhhiIb+XVlLZDWTdHACkatTwU9e3YqiQ9dQoH4eQGURiKHOlUMPJ3dl7yx
dgihUtUWImVUi8KMONRjV308+uivH4F99fnHtoJm7Kp8XQ2roCd9AdURTzSC
Lvih/mTTN9M1cEXTL3704vLVs18v+M/ce4wAEO6qRNXq/g5Joyv3vYpbM4sC
BSBSoRzMDMwkeMdtgTIKWjq7PLtovoF3nF3enJyfvwCsfRLoEyGj+lbCE+1b
b56dodarb3hxds5ndv6GMFS5UEc3pW5+9hieaBrrIL2m0aPL84tnHIzk9xbv
L5BE/VADedrdIFwC95zdAQAr13anYbUfGBxcodwa/VHQHvADLA2sXbVuW2mH
BCzCaNSusFYgN0EqwgIVVAUU+uOPDb8wRuvcAI0BcmmT7/TUgiBviAVW+f8o
/7Dy6hFJowuUQlcghR7zI0Hr9Jh5XnPz5wm8DjDp8t0JqO43859/mNl8/QMS
Osi7GTDuaoPiTvkZR20y24AgyBOl6DMEO2As7W7d/OXq1eXN66sdOwbvB51N
k4sQpsZMlVon3YKQjOYGZ3yM2Nodqbn10arVboke8Hn2G3AtqJm/Ip6G7ilZ
EPhjFsVcwrAljyz3U54EPAh4LLgXcR1yz+cq5r7HvYSHHvctDzyeefhtpvCG
1OeRYCFo+ZjnCgxxHqY8MjwKeZJwT7VGv623NY2yP70e7K4SPI+4THmYcD/h
cYqvyT2eCx5rnsVcKJ6mXEhucy587BB0VEb4K3wO4LNhOoJOcyN46uGohOVS
8TDnnm46uWdvewSgdNVlH/rr8cM6zqjjfJeOt8l8ul65tR0/B6oF+JMU0r6F
Prj3UWaVCAamAPQ4XROCbcmMUiCIE3qQxg6sAcBYb/AMNtYmVHxtZ2XPnb1L
UVeiDOZXLV6SmWN5zp3s99Bm2S8LYDX0YKKBQ86M6b8XIhbBT3soIKIBGBSv
vilhFLTqVcveYXsy9+9xSWoZSS4X3sIYP9PvR4XPxDvu/vv2kRJ5JNMw8ZM4
TZLcy0Wss1ioNBXS5sJXMlMysrmSgZJGR5XvJRJGpF7oCStVmHv6UdkiLBZ9
eNwaU9OZ3rhUWA3MA/YHUXAQVbMWO45QNe+sTUvDSMZq+FDAg1swDxDo5XaJ
xg8Zp8QF8MsmvgDTsxbd6NJJU3u3NskMjfbrbyWja/w0KKN/HxJ6NsCZhUnJ
E5xukfBUc+XjFEvNdcAjmi8LKwGrlOPCBCCFc5xTz6AEzxIGwlprHoOUNzjd
IJ+k4Bb+Rg6uGuhsW+gN9jaDV4N6gJX2uYCV8DksQRDyPMWuigB7HsAQIrD8
eKiRMmKy+6KEq4iDLgkkU9DtALWO0TwCnop5InmccZE+uLdbRfRhHWfUcb5L
x4l4dxDR14MiWkQuEY0mRVtMI2jpCemugH77SESPEG591EJEXVF9vZ+ovm7J
VOEiKmpxb1GNzda0pQVvN115buardDm9Wxcw+NWz1xJHWbksYKDkK2hxaxcu
w6jpmZ/5syMOpHKMU38Mv9Ti8HFHSna+GGCCVPDA51nATUyrnyDN5AZkDY8y
4tEEyQmkX5DzMOMhCECFZKMV8jo8EmiGECvmRiJbgJD0FIK0DFpOXLCq262t
1H5YDxn1kO/UQ1wk8kojOderUq9T7bupnBGwHu5V6GBId3s9vRV635XJOVEo
H51itg8RDE0xcxNBMQkD2NnwBHoXovqONBc5GHxcxFylqItBSwiBk5EovCfx
cD5gtnLJNWh2sgLyjMHoUV9rnsOc+Yj2QcvD3HjhcHe2g+ODesaoZ3ynnrGX
189fSzLtVnc2Lexb2jsoPTpcnwr8b9CVAxjh6XS5WhdORzL4V2/NkjZyADqs
QYL89jvJn8Ut0Ci6DNETh1YCghKga0AQqJBor6EtcenBztr1W+/iAp+nGZpd
QF9RgJ+BsgCGhYTBNNlxVuKEwWSAyWZDnFpf4WoCAQJAiDQDGoRvVc4ToLUI
JzvNsQW5IWfnx7yZu55sJbn6+vIj7d4dPW6cN7WxMCB5EYKW7f680QpfmRlM
M03L4xIel39AVL84Oz8pvRzdOxn7gO5EuoZ9RRpsTzNd/+OwSDn4gQ6BbIAV
1BJlFZjYJkRpEcLFAKWFD6vmo7wBGoBuKQ8NdlhWeB9IGuAtMOelzwISZrml
rhhEhYABQVDl7Q7dEJBo/C/H/LrjslmVK934bE558Qyurhtrw+x7x63Vd3nA
4B5ygSH2frTq7gsWkLukMLxpCFBXMHpjOw+x383zTSDTYiAwSjT3cp7HuOKw
oAadFsg9YIsgi4SlTZNpWnSLKwA/A4s4Ffgpz1ma4OcQVh/WOsTFUQqBOAim
PgbqdLoAqI4+vxzpM6xelqDrBbSOL5DMIp9rg1oXSMMDY8ugUtEWVzgifW4V
SljjIaGmAcLrlDw6cDH1uU+UJUHPKe63+kyUqay83Sosh/3epxVdbdLShvuP
1+/6uZQGpxssQl/+w5kEzcPGlqfNGwzYmCOBFhCn3DfrIBMQVSSC6N9azD2/
eHpUj/uYy+Nqp+Y1fLw16evCGQ1PPMY4qfIrePw//2d+dfH6/PryAgESijfA
SuVv/xtHv4Tk//RPjBXXcPW6vlyAG/okmRZwuRTBdYOlnP1cSlvQ1BP+byfC
PwZTIYxzabRIfOGlIo+TR3+ju75UEnfTSVzs3kMTR+Qkflxto6BxXWgCoBsw
sxvvc+F8PmbVDhi11sgK6EerjTpKoLmhVAgYuzYv/MywEACiYLS4T9WM0uGx
1S0OA2qRkkcSfaMgy4G5gXUA7AGEA55DJgN2SdpTbAoM2zbTyrCFi8tmJ3Aw
lKFgK9ztO4GrX750LLGyy23il1rUOstDe95aXnyA3gOngxDzJPcE/ZToSkHY
KhDLou+AeMAL8DbQ/4HPACbDReAfuAcGiZ/j8gYQa/A4NkiOHO2jHwEmReeI
UwG9+RLxa5AzgMvwK9wAM47q0qe/AvWmIr8OKtaMvpJ4BeQkfhvQ54guaoYX
A+S95uaYbpPV/cUHr/kLN8NPSQNENOkxeJej8+FA50FuK/Q84Sgsdh6vSDYy
Fmn6c4gt4GeBqqSS0uwAKc0rKc16Unrw7ZrenoToLUpSJABrUK/FkkVkw+DN
YFqACUTAJk1x5uFmUHCo1ABGx+S893DUoGVAUNoU7cJcwGwwFRKBkd6EZ6FB
9DrF2GF4KfQKpld4yD9wp01wyNCNWPPYJ1so4kHGQB/AnADMNBbnH3QucBoY
S/AZlKknXTBpkG8lrGNjTEAvD+MHVs/mAfzAiB/4YfzAiB/4YfzApFe+6wB+
YMQPY2PZgR/YwagF+IENoJa9+IERP/DD+IERP/DD+IERP/A9+GG//QmHP8Sx
P/EQbFE/3Tzce5WMxd4qlQ87BNiedpjTIcDIDuOHSQq2QWcPkhSspTkfLClY
S3M+WFKwluZ8sKRgLc35YEnBWprzwZKCtTTngyUFa2nOB0sK1tKcD5YUrKU5
95EUwyzawqjEpY0zLka6hyEdwK7soW6TNruyrtvkYezKXEB3X3ZlLqC7L7sy
F9Ddl12ZC+juy67MBXT3ZVfmArr7sitzAd192ZW5gO6+7MpcQHdfdmUuoLsX
uxbOgbbfeP12ubh/87b2it6BVXz0eMtm1jHvBCiSh2bYP9NySjx7fvH0pHxJ
45XAPJOuN+Ix7jxi+hXloMCDR1tcF33HYucOGPGb6ftir29oUKfly3DzvZqn
0nFRdKIdOiHrkAkjRCQl/LU62vRd+JH0lEmECD0v0iJPrYgrD7NKlVSxEDZL
lAgTTwdZmkudxLHv5VkgdRTpPMz9MM3iKPHC6jk/yoXyImEt/jTCeJ7ypCfg
fwmNSCVim2rleb4XeEom1XOBH8KNIlNCJPBvjN/6vqfhYiqk9rXW8EKtpOfL
IAddWz4XamjWD+AL5cN/QsXwtIURZXBFKk8puBbAvxH8ppWqxxf4prwrhjsk
3Yc/veI/30C3obcSe2W9oHqu1atwo1d+qEIP+mYDDZ9l0a/6fa3+SdOMH8cN
/wrPMyJLdJjEvoh05FfPaZMJaeBtRvnaahEZk1qljPFymQaBTD0vUSb1/czG
Mo/r8fnx5js0vCMJpUpSGJBJvFhGNkrg2zSOMls9J+I0VZFUmQ5smAVxBGuv
pA6j3Ka5yYX2VQirCh/SNEpsHWIj4zRIQuVpeI2IVGgTbZI01rEf+FkExGN9
AQ1YX5okkqmo+ynTxJNVQI6SVTxO402bmdW6dKOVO6VFXg8lNFTOpAGOqWXL
Bus4cHoT2yP5wSCAHbB3UoMA1ts7eQAIYAPerr1AABvwdu0FAtiAt2svEMAG
vF17gQA24O3aCwSwAW/XXiCADXi79gIBbMDbtRcIYAPerr1AABvwdm0FAcRl
nsvnVfKre9MjNDjbgcDJDImoZMBjQ6xkcEHhs0c8aIjOc9osBlbPiXn9BOYZ
fTJxiowJkxMBmcECwRThQEb6s3U7/7CuMeoa36lrLnRxU+0qvV4sX9eoCgXl
o3rD6VElO3GD4TU+Ifgi+a+AmU4dezxlBEoZjVVkc5bw49/4D/X7xA/HHf8J
/6d/KkU7XB1ypRyXUvlvAGKKFotHOs3uAmge1Xe5oM0YpKnUkQvajEGaGhY4
oM0YpKnVrQPajEGaFpzoQZsxSFM/54A2Y5CmhlkOaDMGaRq41Ic2Y5Cmes4F
bcYgTf0+B7QZgzT1ujugzRikqZ5zQZsupHn7KDRJHAiThrBWMogN0JsJZQzD
Ta0B6sh9ILQwByr2k9TPakgcp0KIOFLK6lTBux/RF39rCyMHU3K3dKrdkKCY
AoMBMCD2g5DUn0A9HpIGDEjlgZIaRT6sg3wILAl/xG3phEBsT7elEwKxAzb8
agjEDtjwqyEQO2DDr4ZA7IANvxoCsQM2/GoIxA7Y8KshEDtgw6+GQOyADb8a
ArEDNvxqCMQO2PCrIRAbgkD74AY2Cml2ww3XJDBWLV/KcAQRxwiidtZXH190
IFrQBBLkSGfAopgOYTDYPrcIfEAARTF2F2bNYgIVTisICyAI+Ktp5CFRgzQY
BBxTSL/MaOUibgzxdogzCOTiRZiyBcsGfA6zFgdIE5J4ANuECcoZrAdQHsi+
kGRZmGOuF6Z4xTj1MGUevQJ6lUqMYvVlxzs1OvaewIXeNHBQe/ywaWA0Dfyw
aWA0DfzAadiAhi//fHb1y6vL315RcA/qp9aVrk+qwYQ/cSxxAv+cSH16KlWp
KfsTW35RIsVeqk77VT2LPvIetPE2sFZsT5J1rhXbk2Sda8X2WKsm6twVkvX8
8vebV9eXZy8K6yCzOcWq9oLbhl2nxxuRr6V3diMvyBnv2n55LxpM2mO0Ygp7
4W5mpoVjtcxM3oiDpT9d323dSOG67bdQ+Zd635RWUvkbjLtFY1UhmdKT1J2+
QVdsK3ttD3sE7ZDaBbhhj1TIMvJ2cZY5h+J0jbUHNJ77dnDEOtsF6WEOgdMn
0OloW+00PA+q2dDbM+A34Packr0IcaUham2QBYCFrEZMgr2iIQBICC1mM4Cw
8HwGeAlYFB4EeAAK1A8RV4Dqh8cTjZGSwHKguwGlCEpTAHb1bBlNCwod7gkV
y0legCiBG0yIkwbYTChsDXAC3A+cn5GAULZ0+BgKySwgYppjBBWCgYxUf8BT
hTq9CHpPEhQQoeio9ZrDV/z86uWzy+tSRJoV/w23PssSLG3piYTdmtVO5F27
iYHZDgjyQVcBeVqaXp1hfgmAEJhbG5SJ1SC/NF30c1xuS+H3MP8pZvUxkLwA
DhNCv77GbJIgwexIE+FcScI/MJkwP1lGGDLE2H5cVkpGiSm0IaYJVARrDak2
oCWgAQCo0BNYUGgW5CZQMwhoELswgZZwOzYYI5WCdQOKAZoFkQovArxnFAI8
wFoY95zimnZmu5/XKjfyWjcU4Z9e//66PaslO58Dwir5mRfbS707K54m9bkZ
TwkdwSjKeQHaFrhDUlVWIYFAFXKqpIt2q6eO7FeHBBCijWnCb59GtANVsW1U
xXegKraNqvgOVMW2URXfRlXoye0k9rWTfZXLy3f1vZMTrvZKTmhXDRhPTrga
cvBqyuWRPlpnsKo+ZfHAAgKBgBkVRLjCYMSBHlGUwAB2EKA0lVEaQ05WoWR+
Vi6FIXsQhDysm0LC3FaZYTQ7YbDTMMkgpoHADPlWDNmKiUH6BB4BexLGAzop
84h0IyI8TVlvkuca1QAYeGidRkgn0iuNTLClQbUIu5GdoK3anp2gtmcnbBKT
KzuB3vVzHbC/mZ9AX//D8xMG8mHVA/JhFeXDFjC0AwQLQ2Z7MqZyACk/5N8z
8W+XPUy2zfzZxVRl28yfXUxVts382Wqqwlfs4AjoZn/vsIwAdnAENG2cHhoB
jXtrB0dAU9TToRHQZRWGgzMC2MER0Bj1dHAENPAIOzgCGgQ92y9Qqv5UiBi3
xEVOAm4IkHIRXSjabMzxhaA+QUjAlIAdYj1cTBDDYK5gLxJUpYYkAfSroBTf
InEhZwuEPTlm1Q53Z+ve6GE9Y9QzvlPPrh6aqqZKCE+f+w4K1HTHPGhivlQn
okvVRnnRSn1XN7r8ilwcqlQnV9WWqGoy1672y1y76maudRLXUqlNIvMsDLRK
wzj/D5e41qjaerT7ZbCBkkDGk6gvQeUg2YXoGG7IpZnzr5LKhiWzB1LZrr5a
Kpvx3NGphymur5fKVumi75PKBtAAlVWMWjeIy61NVMKHpbJVkJ4dAOl5BelZ
D9JvUVywIrhSAh8HGAjYOfTQ04HGdY7vBXUKCg2UFZjJ1ivLSGVUWAPta7CR
cuwwqCB4HJRe6KOS0RHGDgPDAV2B8kRA5+MayRCfBesbmN9SVaWATF1YEfgA
Q4OuAn3mOZVaihm8FCYEBDboQ/RqJQgDjVcW8fCcNToGGfjgVLYuP/zxUtkO
4oe9U9lc/ECg9DAgZzN2sIkL/MAGTNy9+IERP/DD+IERP/DD+IERP/A9+GG/
VDaHNTmSyrYP2Kifbh7eL5VtQLfyYcDH9oSiTsDHCPA9MJWtkhR/1FS2B0qK
B6aydSUFa2nOg1LZDnaGsZbmfLCkYC3N+WBJwVqa88GSgrU05z6SYpBDH5LJ
tjO3socajm1uZV3z7IGZbC6c+0fKZNuPWw/NZCNuZS6ce1Am20O5lblw7r7c
ylw4d19uZS6cuy+3MhfO3YdbC7fB909ka7ssNpPZCp9FL5lNOZLZdnBsPMin
MZ4Hpx6UB6fGgi8CZ9j4pisEg8U9JaQfiCRUcM2aOr8s8OMs9z1PKOsF2gYJ
RmkkKjeR9rIIA6d9q1TqSZGFeRA3eU075MEZ7x+WB9cKCP+6eXA6DmwQhzqI
A/giyPfPg7OZF5jI2ECYSNb5iInxc+NrX/ppnHlhrqMs0xo7B6+1Xi5VFqWp
9DBgO/JF/T5hXUHjvoS5FFmUKBOGXhwHSZqncQJLUgd2axtaD8tGZwn016gk
ywEBe4mKZegboKIk9ANP+HEkIt/L6jy4MEsCICKrgBxCeI0MwizzfGvzXIbw
htBEAsjHD3USStMEyiewKMn3zYNzgvwmzicYy4PbDUKwA3zPNYRgPQ/vA/Pg
DoYQ3zgPbg8I8RXy4HTMBlxlB+XBPQhCsAFX2V4Qgg24yvaCEGzAVbYXhGAD
rrKtEGI8D25wqyeluBiMjqBhBgHOjJ8hr8W0VaxSfBcGm8Tl8RZFgBxGlBkk
jCxlxX481tyl1YchJAI3q5Qd6c/2EssHdY1R1/hOXdshC04NZ8ExVxZcb/vo
YVlwV5tZcE54dFzK5L2z4Ho7O50suE1gMwZomqymPrDZJwuuDWy+cxacNwZo
HpIFh4CmBmcOYLN7FlwX2IwBmrqfDmAzBmia9esDmzFAU4NIB7AZAzQN6OkD
my6gefsozTLpeyH0Jwhk4mdxFqcwuFQnSpg4CYIgDYyIjWe0zlJZA7HQxGkM
My1lImyi7I5ZcG7ZdHgWXAv3sA7u6WbB7bzFzfb0eDoB0K5ZcKMA6A+QBVdi
mu+UBTe8V3hQFlwPALED9gprAMQO2CusARA7YK+wBkDsgL3CGgCxIQC0D2pg
o4BmN9RwtWcW3NVkLA1ODaXBAdFhELHE6thJinLKpxAiWDEQHvCrRxgIZjGm
AxMkxbWmUVkbwQvRcIClwKBmQceTxShOMDxZIdVgpFGA5AYzLQQGRwIVwAJi
6J6ilMAcZzS16H+GBQ+KrIecousCJBPPYgdghU2AvcqTMgkxCwZij1yD35oH
d9g8MJoHftg8MJoHfug8dMFhEx2qenlwyp0Hd7VzHpzq5MGpkTw4h0U/lgc3
YsQPrBXbk2ada8X2pFnnWrE91qqH481qtUinFGNEB7qiR6QOtS8X8KxeuAqI
X87T5ae7tdfA8Abe7AOzEV43kLkLs/vw5szJWCDQKiijMBAe1ZXFxAaQpxgr
66Eyw8hDbxdEwg7Yg90edLcZapdZELGFUwul6nO0h/ZxdB9vD97GSXzuitwr
SrqpyksN72+SAsslcSUTtivBtZ85rjx0rYuljYlDa5LvXGe1biYUjvuy1den
tbJFEezibdw+nlPmTCt0RsEHrTDVg6NC2S6QWbT9Kq1kwk2l3UpzonwkDL5N
EMABjgRpFkUEUzQCmihAMRiQhMzNA1lgvqD0i79+Iy7AhofYQFdsMH3f54Jt
bNB6puaC5lpJNMXg9mID6vAIH+hvxwdqFz7YZUhOlzsNbIwT9HfiBC9z4bmi
ex1OqEPxgNbBQAHdnJD1A4aISZDuMzqVC9NjfdwF7jCAMwtVYRbqoyIHDbcP
yf1GrrdKuXKDZzrbjG1S98aB0JSfVOdvt+EW0FOWTZGDzIzUO6rQ40rVELE1
PHfqTnXdmAlg+nIm0JCzCDxAvfoJ+nElnfQrMrJbqJIHQiCPFjLE5CZYP7Bz
QDtjUiLYTjEDcWEp5Q+MvZRyi8Gcw3VK6Ao9G0aYj+BT2otM0VgF1GQotxju
Fxpr8MDCqwzFUWow4TDSaPCAVRYQHJYZdjWilAqQV2hb5mQRkUseiCPxsCcA
tKDPcYJNAfzL6YhjkFL4V2HKA5AOmGqA4qSubMW2BVXjps5Bdr0U1fbkThwZ
pw7WiNvn1mES2EFzz2ju+WFzz2ju+WFzz2ju+VeY+4FcN/2AXDddnP1Y6IMO
N5XWyvZsN71Dtts3zv3YZaeSbTNydjFI2TYjZxeDlG0zcrYapA/Mdus5Av9g
2W6HJg3sl+024Ag8NNuNHIHs4CBpTMM6OEgaCIkdHCQNA2EHB0nDneyBoY+F
iBk4tTDC/GIQGDBzAU0PdK1oFdhUkPT0Kd3V5ugihGnGHP6Eqg+EJAYiJojQ
oBFNtQaAiWHiMV3fmSneknijB3se1DPyHEZ8p561CwbofYPLHcLbEVw+UPxJ
95xeugvaC9dV/7T19gN7v3+bJ0fXnhy9hydHRVbaINeBFjYSuJkl4J/U8xNf
2NwzRkVJlqjAC3UeR6LZjIxtoEOdxWmaZlkauTw5LnrZ25MzSlBsN1LfjaB6
sz1ixhbIop56hNvfyKujyTZ1ZmRGZNDqAb+O06TVH5XTs9NUYdnm2hkyUZCi
OpZt2WWCZ4PmbfT1CfHru3n6xu1zJ/prbNtoF+Idl4ZsB+LtennqT883FUfj
5AHkjWcIC9z5A8QXWkThHpWw0ZTHDdAyTDAxPKd9uK/DHWSAfhP+KP6AaauH
mCSumMTp9dmJUdpP1nzyAM+Pm0Oo8yMsEn87FvnmHqBxLom/E5cMeoA22aTx
AFE5p5RsFzDIAG/mERo6YNxAezHV4jB5lzucHiD97T1A2uUB0pUHSHc9QLrj
te509Kj2+mQ+IukwpalM0SglmO7wguidvSDa5QVxkEdc7yFHfHs/AAIisy5A
EOEw8bP9eLeAqV7yzz/C5RO4fFJdEl+KIkJ4+3gNodEKQgT9ymYGhE5YCR0U
WkOVHF1Sp5W10H224tH2xV7Nw1aY9EiE9IYHupmRQREUfjMRtFvo96bw2SHi
uxrVWGnH8Htp6aEw17qTA4GuVBwx1uj1w1JCVM0R7GncjqHqgIFBiIs+FUPG
qEVfHpi2HtVrTBOsEahydLFAl1GaedhBANs2xjDkpkfkWvv15vzX60v+AqYf
2AfYYWkLttr4wszgMqxVofCzjQKomO1TMKDZYDF9Kk8FLuLnz2Os1W3lCMgh
sbM6ReeYd5R4j/8qXj8efq4ktY6woIqwxXDy5eK2Ip8KZXTu7b0TbjwGKHZM
htUoyw8yPjXxffkeb9uYg0EBILye6fhNObfuU499a3cDBj5546zVtOLmL9/H
EEbU5gHyFxZiouJIwCkmRu9sRGXH0H2bY2WwIEA3JGADbdA9mWF5VBaHWDFJ
WtRW0Ah68TU2IvMNX0XJRS/N0txa6NUKNdQqXSztyR1e+1JwIZFhVdWyeuiu
eWhTcZ3d3dl5Nv3Iz7YxF7ZegAogg2edhVghgL9fUSWX8pXI4Z30NGdNxbZW
P0MgU8aP0XvOavByBKjlMXNbK+3HqFebj52AKdc8h6O4BcyEEINYtSAsYPN5
qcDrCkJLGlY5nhuYJbv86Rqm7m4KN/Cri9VgIWh1qsYxwHlxBjx2pLB+cIba
bVeMuLLL9yiNpqf2tKg9WXSkdUs6w2dOOY6sXYLH+ygizFacpm9RlpavJHwF
7zRt4NV5Sgt8jtIx5+8RdtYdLDrT7Se+pbMtSL15tOrOG97Zxcr00sfdGp7n
RTmh7bNSDHl0Voq+umZFZp1ZuRqaFUTKb6BNfMI5HUUvNqdDZh2MfEP92Hk+
ZLaTWt0nWbbDIa6U2R1FQCndnf35uad2K3VWiKjXPRfTiOatHh15tqcAm6dL
Leh6llXKpv8lTCjIKWBmcw/wxO222hRQbEw1DizbDpXPD/FA9WTouK50drIP
eVvFzFFnOsWwuym3FwnLfylUhwGV8MPKtBFeMRluggCExo3OHDfgYsDMm9Lb
ASf3yh3fxg5tU25r/rijM31eEF1eWMFdOzPDDs+OOp+cz3XZoP2dExv2B7md
4ItlGUaEPXKP9sOD7lfuQuXYsxEaF0jjnnMPy9VQJ/ClakQoxH5JjkEVsUWj
ycf6tBuI7jmw7l/uMrO2jOHne/o8CCr+ZZtToaQh+6lo9KiyXfjjybjToTBA
RMvY6doQuxsfX9n2yO/nNPa6Z4X3vBohtNav9bJxy4AIyigYUVAtXTx9IMJ4
Bku1U0WRMJThxaJgrpc6TrYZeF2/yGIT0+HxB7+WUaHIMm6wIux3baIZZrWG
17IgsSKIA08mUZJaYzyBqYpZEkkvir20b5z1nQ0mR+IfmOBWCWuKBAEWSKla
MgaFSrR64iJhzFBpYg8nIaRqtCkFsIQpRfloiunw8chKRTWWsxAdFPCVIf9K
Hrdm5ow61JqLnmWKmwyrMuOtMtPN3H6AKfuj2Oe0bLjE7W8BjQIDvDXzNwU0
JXHQ90p+Od1cp22Wq0ypNrAuz81KIzRPbYRxFSpCX5UXYsyNpGriqJUN7ufo
lIJmiuMMfFxhndHBISn6hDDOI0PHtk13hbA9D1CxgF1H7CjsdGhAFxrs4b3+
vLewIJqujnlv29pfTrdBn1E2aeRQTmEpMsJNNPTUYcFaXJiAwrUsRZ1EVLcZ
44z8naDQAdNa4Jdt09kCDP2JbKOJA2eSPIVj81grXKyRbrAePlAqiAiMEaQT
g7sK97ypOYveEyxBu/rC6LsfwYxb3S3INmvdBnct4TrVpW31s+L0v9rlCtTT
BBNowfJrNCVYfVMz47/c3yYw1SDwdahF7AGvwX3V4aet2+tjImrnxQSkkPT9
5ox5frVa3WNj579UIopfLxZrfpl174PJmWbT9aeOZPoFbiwE5YRfAMNi4Jea
eN6E4j9lzP/04lXTnXvK6e++qp6ezfeVd/OXxfkPiGSugBgmnfe3vhwZYvWn
vF4+dQJPTXr33N0n/Yv4x4hJlkx0OEniiS8mkZ5E/kSbSSYm0ky8dCLMRMEV
O9HC3UJkJiadWDVR8MGb5HKSBpMAfsJ0JXgx9Sd+NrHxRObuFmI18YthbV3a
5gai6qa9JJzAEiXpxBMTayaJN4nlJLKTKJnIZBKkkziaZHYi4kmaTlSEN2e6
eTywkzCbBPEkCvFZJXFKonxi00luJrmYaH+iwgnMlsknQmMjUWtGLTQY47ih
G8qbaD0R3kRE+IhNcDqhY7GexP4k8CdZNAmySdrqPEx8mk+MnfhyYpJJBJMn
8HOaTDZ24H7k9SEiG5xXV4T+CpwHUKPmPON9b857YgGu2QkItiWCPw/mVpec
JzucVz1wEKs28/lHZ1WbTbxgYiIklEDgB6C5xEx8IB0fCVT6kzSeZN4kHGA0
DTyQIXUamCI5yfVE2YmXEzNESNPSKykYhICzBSB9YQ9kVSBsIVGcwDsTNTHh
JARujSdBglwAIwBRBCwM7GmBfTxkOpAl9eMgrkAggVxRySTLcQ6A16Ad4PfQ
x7mBUcIg/ABFgQ8cLTqj8bKJDFHmBTBQjXILZgs+SxB4Ej/ADHn+xNpJnuOd
2JmweRxmXSiUCX440ckklCjzQM5pmNGkq0FBhS5ub8EWJfLf0JNw6etwaxTH
LT0Zfnc96eBWNYEP34ZbnX37ozEqKJwwQdaKPCSTFOS9RjoFxgPmDECfgLYx
k1CglnW2gEyQT+JgIhJUpUDawOepRtWk4bqYBMEkTiZJgo04WwDmsPpARgX6
TnxUn9AXASwXI18BHgB9BlpQQ7+AdSPU+LGdZDAgi8zWPB7gBKBOhccD7D58
AFARgLzSyIGoNX0UBIAQQOd5IY6yfhyGDtOQZjjoVCLLgQYFXs2TSe7hX9DN
nkVcAV3C6wontX4cbs5ibF+QeIR2QIvbAO/xOruF7Ed+1q3HUJxPtYZfUn7x
7Jifn99snJTx6N00e8R/BEZe2fRkvTSpPZHAy1dzMCFwh+Sjub2b0clXAPKv
Cdq3z8AqzQ1799be2qWZnVRvm+bwipNndja7NXN+VJecUo9PobHV/R3aFqvO
ruCKB/QWiTt4fLFE1LnI+d3S5mBqkMOu6MRiPvvkboLL05It4aVTUogzPrdv
FqgZcUaq4lT2Y2GebDyNdtT9ytZbRRnunt5O5+VhHM3OJ9hR/8kdcfUzXLg5
OT9/cSKCk0CfCBnVt24c5vFzdZxHfcOLs/M6RHBeWDn86KZawMfwRNMYuj7q
YTSNHl2eXzzj6f3yvcX7X3bad51dBxLpprhneBthYFTDPvXW2MhkLU+Jgz6v
iIaWFpZ1BVRUGIh4AGP7lqPrl88fH9f7czAXhp//6yt+PjPT2xXoD/Tlnt8U
BNGl6M0zWupN8ILWT1k3B0Dwo3y6XK35enoLE/b5x1vxGiO+niyQrOfZ3WI6
X6+G6L7FW8WmZEPn7T3u8qrDS1ju/3ndvNBi0xzs5vWqJP/l5qmEARA6x82N
me0dV9ja1iQ2WHfqsfzl6tXljftgmKo3Qac36dIWR9rMGz5vDjZEjyTGAGwc
aOymzqGjD5t2q8oyeIDgb4MhGCmF+El0ZJmIXKcJZjcFFI9VlieSqMVznyKb
6AqerhZjtJZMsZSToPQzDLcK0WFZHJppNLexw+070NmaZI/5o4+PTtIFSK3p
HF37f3o92PuQDtQVil5MR91GOR6HGQhM14s1+toCihdLKAXQGvTNKTqzM/DJ
3RGU56PgwZmWArAlBnHZnJuv1/utWTuHDYTRQPguA9lgCWfUBu3pF87edW/z
37OVRF9RBcQpeczaQqiUHOKEHqwiATCMr8tQ2FbnpKLNY4rOnZ1L3y5WRVDM
VZvRrGOxzp28+dBmt2c4YdKRGEks6hZqqOXmxvm9wl2IoykuDQjfCJWFifF0
lCdJIHwbaxUFxij4JbHGT1QW5YGfKxnIui5gEuo4sTbKZBjZ3MT1Pnk/Uaol
00fiNxUGbh1GwKzFiSMEzDsLgVoHBPliiXHf2QIE6hxMgBLGbAj3wqUK6qeQ
uvhUIWAvr69fn/96cQlQBXeiynPaSpl+jQSKd1z98vTXUwBKd8vFHRDIJkY6
Bm3qUh3rt/cO5XHaVx7XzF3uquhov2ByPfdyoz7UpioGELrAk9FQFzN2A4ob
eNjeFfr3zi5B2dwWfWseatT3Mf/8mdT3l2Oe3K+LGau84JXeO/1H6vbPE3jb
+sNi+e4EzNA3859/mNl8/cOXtoTbQKTFjnv7SLjbBU6GExYcrR6jt77A7qkB
tRzAYs9mm5FOZrk0n/h/+Tf4Vv6Xv+0ID+rN8khSRq38g6MERWeqp4Ky3g1W
tQsobhPYOcwQLkQZJhImElk7S6nKQEzHZhtEFZZOX/Jz3FMwBBqswmqYACZi
zEt2Zod8RZgQGex4TnmN0HcrsL+gggXtoIoQBYyhLHQAOULgdl6WY0gN/IXb
QsoQjgOcgITCwDOqwyBzjLlJggfBhMXc8kefOiMYgmi0s4hFC1Lc1YJ3g1QU
lBJtMkygLw4jR/RGRR8MFXGAG9KwTPH3M5TVmDmtsEKAoN3hyKO0bPX1Jn8r
yjlsHRitA99lHQ5GOSp8IMo5kX2Yo8KvBnNU+E1gTrvZPRO5x/BOR6g9GPiQ
aP1bjX4ikwe5Vp5NrIgypUWkPRGa2AiR5L4QaZTleZRHSofKS+L6CIlUJCF8
l6RG5ingpAr9wIrtBX/iFvypxDd/KH2znpwZoW/eWaaWupeIg2ovzmCseKkC
ESsVFM+vtmhA1HmrRa3w6ajSNLV3a5PM7Cll3X0bXVVvlg7qqt+HhL2lchaC
CkGEIVULsSj7FJV6wMOVLRm7gs4aD1EPpRmdwWxRM6Fda1gUYeKBZxDUBpp7
RSEfXEmXuBzo7Zi4HOw+WONxiLI9owI90AUAxqlEZQpEhvE8AWY1hVTPA6Ay
IGdA5IGivEiFR97LlEVUcyWPsRgJDFQZzJECmst8h/jY3vs9dJXFN3kZlgEB
cJAZpGhjUBslRVmjjGrLeEjjUYDDA9sAIw+oAJLAujfYCIwNpgAQBvANSFRg
HRtj4ciH9N4191tV1WHLwGgZ+C7LQKy7g666HtRV8sG6KuqpKrmhqq75EToU
3++oqq7bgfhuVXX9AFU11OxQQSr5gIJUsihIBdRxjLN9DL/UWuBxRzl0vhjK
HDRUHczwJMPqO4DNYg+L1qBtq1Ggh1ghEktOJxQEBrdhBR0fhVAU4ufQZ3i4
nqLaUVSiOqcKSSCZIlc0ZbdX2w/KOKiDjDrId+kgrdHUWcBLdpKXV6WOheVw
L8LWgmCyr62D+LuyNc7gtvllOxPATvNbfygmwE2OcRGBqEgmK55TFTpjqSYS
+XTxIHOqFWaoyByMBwAIFqqgImlgYIQZFv5Kcyw1l1u8Ikkyg0qNh3uzlQwP
6xijjvFdOlYknku7Je9cFAk8Q0HiT9FBUuRL0d7Q6q1B1LQqIhbBCPq9k0lB
6XFoGiHsApIGNITaB3/7rS1n6cHO0vVb74af5hjuiDMR8cCjKl+KHG45xslH
VD8k8xC2AB6VZKprqqAZUR4lYFNYT1AmABjQw+ZjBGpOJbIkzneXe+fHvJm7
nlStUjVww3N99LjZ56vVzkj1kLLdnzdaoRDI42I+NyKEQUi/ODs/KXfEundW
kZSrMowTabA9zatevsE/gEO6ccZyMPzbepj0CuIFhENGNZqwGBuhWkPV3QQl
yWZUNNinMmxWocQwCRn+WCMQRwWCDswPwL+wvlhKMKNalm2rf+MkI3WMm9Mt
J151WkHtxStyAke3TjEbzKyABhbzwh5B/yPtpCLOqDJeOhbDqkIx8CxttR6X
eGbYnoE7JVohAP3cm+XUTm2ODBkYw0cwsJvnCFgGNp8kWg06RB93VtRpDJHB
sGozRRsbiv6OyQQEQxDD7iN0lJsQlwrMR5uRtUIJM1iGUeGeGzyF6c1Okun0
uoC4/U73EO9A/0HxgFmJ1QiLgooWfXNYTJT89SBfirh1SbRVFAwETQlQvKh7
SRUQWJqgMQVyJCiqFwZlXcHcmeO2a/93sjW0j+oQJtAPsZNBgl2CbluqP6ly
FH+wCjC9MLFga6R0QEeeYRIFsC9wgvUY6OAoxR1OnVJ9CYMyFCYklD0O2eSK
rmu7E5hxXJevboWTM1IHN2d/flV8g2rgT6+vfzttY6SmnFMDbZpHhjKbdivl
tJHQt2GUOwV08+p+Voe0lFyHUnZrUocjowMf/yY5T0NJpe1prBJXxvLq4kya
XBmVqTz1AmNNJISXC50YIU3mJTpPQuunWe7HaZjl9XFYaS6z3Map9KTWKh7N
CXJ0bmzDTfCDYROrtNUIbNqs6lB/aPXSzZMgQXLKNALcqmmvAIsLGnw1dDKh
c3mw7io6WRDnphq1nKYDdzzyDogUj9oAdgNJijVXSLlh4QcQQGITz1VMMYro
hhnjtNtKpwAJcuYAxNmFcep2e9imnsPj4h09btmEOL0HKhah30recMDRFlTr
ANHrEoheF0D0tANEr3/bC4jmEv2SlgwiSRoA0QhVF/bJ95OStZXTBrElgyui
WrOGqA0eyQOs1gcYNU/QFoupLragTQqpHCRYT+yw/wxIOigMJvQZYRdAyWGx
IY3kBCYhkJmmknuJwDJj6HT1qF8KoTGAo5yK+SoqyIfnLeRIz7hf3Qnn7Zfk
W9rbch95WJrjETsIS+nfoaMSZHMktuycWi1x+euvuodhX1fCuPqtKIMq6TDs
4hqSSzfIy5SBi0TUbcdSkTbsfVSyOtqhek1JsJ8LstV8gnWpZFGAtB283Dzg
KEPaOibI04gwOtm9TW8BxV2/fN7ZS8fgy7JPn/lef36CJ38quU1Cv38ogzJP
bXb/w/HYg6v7pHowggd3fu9P6Tz/qeZvsfujP1GRuuf2008t6YDPy7F+1k+/
W3celNUibXv4JyCG1oMn+Eax0xvT5fv2g8Ubnzw5VzoO8JDNyzN9oeRlrL3z
swt5JpUWOurFKV9cnEsRxuJMyLOnT86fnJ3HKsCzL4OLC62fejCAnz6236Po
PdoX8aX0Q6mCJ/LMO78E5aueerEST8VTFQW995yfhWdPL84C/fT84tITXnQu
pT73xeXZk6eBF8pHMKLWDH5h7X/bRD5I4XFdaNcQIA2KmtkRmgtBhimguJ/r
I9wOqOY32A1eUT1MoMuorqRe8AYWsxdUoJ8QwIPAO+uCdz4M3lEylx6zTZTN
9kfZvIeymQNl77fv6HD2OfYdHyIp66ebh3uvEko5BNiD0Rnr+RLG0NkAPbF9
6IkP0BM7wBis6YntQ09DVhvbh55cVtvgOra0HC2l3/JJRj4/bEHZgHNorwVl
+wuI/oKyg617WFC2v4DoLyjbX0C4FrTCTHsVq3EbhvtUQm5htc287vYBVW2Q
9vi4qDTBCgPvZ360BdH1fXCdO2DEnVJwmykOp6yxJKs5GixnIVvHentaCyXx
4O5drN1KHbat3k1r18CHAI+KjgIRZKEXpEF9Epa0gR/o0PcieLMwfnGcN/ZA
ep6QAvuRJGmFGOqDsI3OlLSAHFIDvSyQQ5alBBSwe3mSJiatgEKWVc9pnXuS
Rof4wBb4IJHGSy3igxzxQS5ywAepCU1eP2cCnaeZRViQAixIfWFNkhMs2KfW
jmOV+oZ/sVwOBdNY/cRphwkmNuy13l0wsQchlw3B9K3djrsLJvYg5FILpoES
R+V6OossZB7PaIZgoHjWQkbFbPORZvqosl2eeWtzfbHSO+2VhEtlk9ZPOm47
eEiuNg8c38D5IJXF2rriPhT3eudDcSuhWQLFiv2LCW6aKyPJV01YeGFd16lT
x0XK3WYURy03oL3ZfZmohTfVBcePNxO9MotRD4mrcuaIx4u2bmjWb80d2KK1
9c6/FGLrnkJHZibF1D0MFasSwVx1LpUswsPb92BkCXoNmu0bQ7txhsKIqIV2
iXLTrRV5dCLix91yPK1F7IvJGvODoNmJZMZd7c8vf795dX159qLgi+/rbG+/
3Olt9yqzpaaKsTpKoz73fgt1bcfeVz33e2tJNg+V7czfDrUav7aTXXi1k323
MnitsbhPGmmNaOwsBe87ueY943CKdjrZqZPU8EeAWhs3Jum4rJwKJgUx+j9j
0xWpzoMUJMqc31AG2PUHC1C0zZdIA60+dGLI2k0M9A1QDYzPJ2WNldTp5FtB
hxgqf0jc18GvG1HEG6L+T69/f93uQ0kn56+vuxBu876KUnpnKlDh2sUc9wDn
VZloRs7fKlBuhbdVgR7tNk8dIcYOqtJtgxSI6VsHLY1OP+8E3LWjjhUbDMBT
DwjAU/WJkPK4K2FK3bo9AMxxqKdQGxFg3zjiiI/qoQJQs8NcgQWgZoe5AgtA
zQ5zBRaAmh3mCiwANXO7bopFHYhfCHEKc4q/B6EmcvwcGdxT9KhSok+h9rDg
0EEwn7B2YU7TQ3tMscUNxWINoTuGQu8QWoUYPaUjh5htkdhYUNthHWPUMb5L
x1wA/+o/VuzO1QNid9rZSeOxO1dDtAMUL2i7uUhlExEdieqjWowo3DwIqL6m
oH1IyyNFW5cC10TRObKRx0wReEUpVtAaHjlJpR0D53GSnV4fGrtjSEZjdUPK
pbO0iZmTlM/ohM6YAkUxu07SUX4UqAScJgKktRjAQEAnOAg8dDOis30UnQwa
2m4m1d793yl2B4jdzzDaCWSuipA5dII/I0lXFIZApSFKMegPyCaQa3joS4g5
wSB94MEsYSpFAQQyC48OpSNvQavBz9TBIptssTV4B08Ccgfv0DdF8M7V77sF
7zSNfffgHXr10Dazf1yewLx/+E7b9fk9A3jKqRw0LfzatEjCMMoDTyol8jyI
TKo9aQJfiCTOrIx8MJ3zwJpE2dhmQtbev9xKaXwFa2nCzGrHUUlD8TvUt7H4
HZ8frCFYpbpGNMR4/E7Ry4FM2RRRRKYR+GHUAx0fDFaCJuEHLeP55BmyrKFj
fz3CHiiBJGIbxBsBg77BzSAac0pcA2Dp01HIncBi1may0fid0XNAviZ3Iz8f
GPJD7W6G/NSzfkyv2Bbws3l7Y6Fc/b5XuM+VI+78qhvuc7Vf3DmoREDIYFD4
dDB0QlWQMbgmomO+UwzaQoBnkYYl1XSA20CEI5ymoshZiDvZMkJwCBSOOeEB
BQbpTipy/aGe1KEg3Kw8GhpQsNUY4hMqjPLBvDGLiWjQWcyitKjhQOVgXoZP
VSboiC4MhvfwJFzQoPBT+FgBByNwKQStW4j56qHRPqrcQVJDp9UFzd5Qd+dH
taN9VHcP+6qS3dVvhWtSNdE+Vw+I9pHJRrTPlSvaRyZ1tE8/3MeVjNwP95Ft
kNR099uG+2h54nsnSpw8BWX29ESFJ0qeqLgX+vP/j3AfWKXvHO5zdh76l/Hl
+aW69L0nT8+jy4vAU3EcRbEvpfY2cQX3z3X45KkILp7GQRB4Z1rIODp/opUX
Pg0vnwQYhuMI9wku/YvLQAgVRWf6SXQWSfisNLz+QoWX50/675FnKgovpB9e
BhdP1Lk8i9XFUymePlVnT6Gf28J9NuJ9nCW/vFrPF9tmIZ1Oj/Z6Rqfce/RB
UYHLjA78DeiDX35Q5LYpP0hWfogHPQF4xll3z79nFbD9rQLeswpYZRU0noD9
4TvrwXe+E3zfLyjI4QAaCQraR6DWTzcP931NjeOuJeYeDPlYz1sxBvkGaI7t
Q3N8gObYPjQ3ZImyfWiOD9AcO8xkLGiObaG5wbXeCBzSYcvvU+xOH7DobMBF
tdeis/0FTX/R2f6Cpr/obH9B01/07+knKBDa948tIhVTwcPNAKP2ecRtXNgE
GDURRuMocjTCSO0dYaTGbPBgI8JIJhTZs4M9Xmngtl2+aY9jhFEYKq2kzJSv
PPipqucU3K8DHcBPH38qpUL6KelnvBl5VEcmJU0EkklDH16dWmV9L8nTyGYd
EOOnuo6ESnIRZDlhF0PYJU0Qu+ShTYIi8iiwfmYLqGJ0Uj0XmRKywMsyFdo0
8aUBhJIBQrFBlqhUmlhluYSpUiav56U5uPnrRiA5tVlT6Yaq/B0m4diwE353
CcceBKU2JBx7EJTakHDsQVBqQ8KxB0GpDQnHRqHUSJSSGgrpof0tWHMwhQOq
5ipzsK1HmhmP4tna3A5RSqqKUlKjUUpfYUiuNg8cX9dz0Gxtql6YknKHKV3t
HKakOmFKyh2mdPUfNUwJDNoHhSnJZChMCb95YJiSHApTcsnS2grBM792oZme
s8msVot0Su49tHxIctc78SUhndUE9G8FGfxwOU+Xn+7W3g+90yK/on+cvvhb
+0RpJ9M01lGk8MhSTVUNAoWxlLhHTjmCik5I3UG3sN02eHfbR+3N9qZDr/AT
1+fFPkeEtQ/OO94eAoGT+NzlIyx2WlRlnfYO88U/WzZo2s8cV5Che3hv/yhc
V03+zXCvcRyovtleTHO0L+e7H+7rGpE76MvFxK1gL/W99nFcmzjPN9Vccxie
LNzvCVZcLUp8gnTxCQdg0UEP4VTmU+F2TLx+IAfMF6RN/vqNmAAbHuICXXHB
9L3jdNUtXNB6pmaC5lpJMcXg9uIC6vAIG+hvxwZqFytglyE52YAGNsYH+jvx
gZe5oFrRvQ4n1Fl5lnYfJVkG0CPpI3IHi6a0D3ysQhhkXQZwxj0qBDGPitAV
BDiPcAbJWV/pVm7w7A6bsU3q3jj4g/ZcaqDURn1AT1k2RQ4yM9LuqEGPK01T
Fu2seO7UHVy5ORM19k0pRV9GOOgsxQR7WJ6iYBBWesjQVIBJDwQm7VuaG68d
dFmDjE61tl5YZLsrE0ecowsVNaF5kh/azYFIRP2ASERdRyKq4+4ylfB5eySi
dozWF981TIyPQs0yEvGwPYriAztsj6IwrNlhexSFYc0O26MoDGu29x5F/alY
ePdGNVJziOG1MJSIJBMWRw3oYoxBZ15B9B46O1JB5aQ0Bo4mEsPNsLq3xmPR
Aw/LfmE1do29pnAzTP4d7M7WcMXDesaoZ3ynnrWjh/WO52k4OKk5T2Mg/0f3
DGvd1ciFeVzXfW7ft+vbttlkurbJ9B42mcj9MDNJHuUyyIwXwG9xpL00ToQX
hqnIdKrDLJFamSjRovZ7Bp6JI5vqNAm9AP532WQuWtjbJhslFrYbGe9GLL3Z
HkGkhSyvp76IRPwm9pnmjmC6wksfETbVAxaaE5223fudp3Y00YawxjHrANSy
u6QMB1Fq9PWJsGesfRNTzcGzLYga7UK441KO7UC4Q6aaHjLVQEd7lMIBKi9I
EftEgqozYmgxZnpgUFKEv2IE8mDS456MQTDym7BG8QcAqh7ij7jiD6ftthOP
tJ88yIBz8Qf1fYRB4m/HIN/cjBvnkfg78YjnKuBe9M5txYFRANhLpqiFfB/T
lTCHjfCZH2OAIUBPv326GedD+Wt6dzuO9yh+V0tO9y05QgCVLae7tpwesOV0
a+sioABaTOEpyqjRIRKdSngNd+9qoGmXgeYgkfY2x/Z+ELxDjl2ANMJx4mf7
EQ+lsEv++Ue4fAKXT6pLeDhqdft4DPBoBDABvbKZAckTVpJnLMx9i+j5XkHu
zYwMCqLwmwmiJsR9t+RZ13icIqga1VhwfPi9NHU3OL4ba0ydHA41ptNAsN5v
hDYlsIWl6syYW0eHMMUhOlfRsiefhaRiv0JiZpzEv7jjC33RMdVD9JGlQKhh
Wl/bF0XOjF9vzn+9vuQvYPqBfW6KIG8klY0vsKg1nrtWVa/shqpj2ErBgGaD
xfSpLIqdf/48xlrdVo6AHBI7qyNNjnlHk/f4r+L14+HnSlLrCIvNYpzlylRQ
o3Nv751w4zFQxzEZVtsyW9yMT018X77H2zbmYFAACK9nOn5Tzq371E9VrrnX
0BFHY6zVtDJwdowkh5ZBwxM+ex46ewAXA/smlip60kmQmGiQoRMrC/DmhIps
G0pi9VNEDOiqsRinAo1YOjUNz6OJO5oKVVXJRy+rPe9VwXdEeFVid3VTvTG+
6qmqs7s7O8+mH/kZsRMbZidsvUASsPDPOlO/QtyOJyVBg+Urkac7IVnOPMq2
Ju8dOl0f7o7HgK8fM+Fcm/Zj1KvNx05EsOFovQWohLCCmLMgJee5NTSscjw3
Fgt//3QNU3c3hRv41cWKDeXEYXjAqNY/L6qDYkcKowdnqN12xXoru3yP8qc4
eBKvFB1p3ZLO8Jki5mDoaB2QnuUrN85/7IQFFE9QDOH8PeLMumtFN7o9xLs7
CJD68WjVnTG8swuPXSfhnBfpE9vnoxjs6HwUfXXNh+rOx9X2+fCsczqKXmxO
h+pMxw11Y+fp6ByONqxB9wnwZMOnshc29AbvD6nSUpA7+/NzT8NWmmuxShdL
+7rnTRpRstWjI8/2dF3zdKnwXM/W5VT6X2K6+CfkYnM/Ww/4qDYlExvTggPL
tkMxmUMcTj3hOa4WnZ3so9tWeRjd9RE1n9xNub1GHuWlYdlsiRYZwOOUFC8e
EmLRa4SFHnwsrq5xm39DbDuQ417xztvYoW21jcY8O7gBO9PnBdHlBTzBZWdm
2OHZvsX3sbH4nM912aD9nRMG9ge5neCLZRkGfz1yr0OBd8R+7neeOvOaHX0b
oXI6ycQdcepqyBmr6Se4L4hOnhxryAOIi9Ci2thGeg7M+xc6j5ox/FycTT2Y
Y/8v2zwIJRXZT0WjR5Whwh9Pxj0MhbUhWpZN12DY3dL4yoZGfj+nsdc9K9zl
1QihtX6my8YtA0LIeLiDCqg7z3BXGQ8+jdEoB0CeUO3+mPa04asET4B2+PwG
XtfPqWsybDz+4Ncy8vaW7uKKsN+1iWaY2RpuM54QfpRnSSS9KPbSLEisCOLA
k0mUpNb0LbG6A7VTLEfaH5jf1uGBCRYkylM0XXKLe9xxhlVKPBquooIk2pYl
dXDTPORxREfD+bhnjSFfIQvoyEx0m1AtJ8BhymALSdtld0Ydak1FzwrFXYVV
efRkZZKbuf1QJa78AWxxWjVc4fa3gEaB/qm0DUFTkgZ9D+SXbgzvDlaq8LCm
QRAjLVo68tdS3S10WsfofDIksDBeg847x7PWYjSMrcYwPFg3P8HjIcGGDQ06
U0WKOep4tp+CJdoVw/a8PcUCdp2uo7jToQJdcLAH+Prz3gKDaLQ65p3aOCEj
mqZ8HPuMskkjhjRFksBK4PaZoYJWKToIMIom5MgVAEmyFIFRiDUGdgJDB8xr
gWC2zWcLMvRnso0nDpxKcguOTWStcEG4xD5JE8ltiNFFieZZN24Dl+YekN4n
fr6Yr8DAXxIKXPHPP67Kb77gtOIMLtL7WzTp6iSD8pCNVeN3GrCTQEYvVmh/
lu9Ku+/C/ZlPhVmKNaew9hNlGRQ5CPBg/aLUzCknwNZNNHUycJ5v7wEdlXfc
r2x2ikO8OvvlrD+8qZkbGhouFK7JfFHc2e0ctHBycgJ0mL6j+TpL380XH2Y2
e4NzsWKfJ3x+f5tgR37+Yb74oWiyDHtZ8Q9mvi5sYzN/B7B6xu/sAobCwQKe
5p/qkiQcVgxwHaAafAqG8hOoMpzo5TS5XxNOX5R7wrD0izvoXjKd4Vzig0Wp
CszcgE8TWIXP52+XU7huwOa5Xf39/1mtvuCGL3zxanq7WL+F5Z4ZmOrq6s0a
zLw5f4YPLf598b66fj19Z5YZf/b3//lmdj/PqstF64sVf764n5lbU7fzdGkA
Oq5ADL40s8VtMp1Pq6/+PM2mcHmRQveray/R8wZodo7syW/Wi3fVNy+m6Vs7
43+109nMrtcWrtMC41dmNv1//7vhf73/X/8XtP+//s8vxC+4SvnsPs/Z/wdC
vPDowE8BAA==

-->

</rfc>
