mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
99 lines
3.5 KiB
Python
Executable File
99 lines
3.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# Copyright (C) 2021 Inria
|
|
#
|
|
# This file is subject to the terms and conditions of the GNU Lesser
|
|
# General Public License v2.1. See the file LICENSE in the top level
|
|
# directory for more details.
|
|
|
|
import os
|
|
import sys
|
|
|
|
from testrunner import run
|
|
|
|
# Default COAP port on which the edhoc responder is running
|
|
COAP_PORT = int(os.getenv("COAP_PORT", "5683"))
|
|
|
|
LAKE_WG_EDHOC_TV_34900_MSG1 = \
|
|
"0x0d 0x00 0x58 0x20 0x8d 0x3e 0xf5 0x6d\n" + \
|
|
"0x1b 0x75 0x0a 0x43 0x51 0xd6 0x8a 0xc2\n" + \
|
|
"0x50 0xa0 0xe8 0x83 0x79 0x0e 0xfc 0x80\n" + \
|
|
"0xa5 0x38 0xa4 0x44 0xee 0x9e 0x2b 0x57\n" + \
|
|
"0xe2 0x44 0x1a 0x7c 0x21"
|
|
|
|
LAKE_WG_EDHOC_TV_34900_MSG2 = \
|
|
"0x58 0x20 0x52 0xfb 0xa0 0xbd 0xc8 0xd9\n" + \
|
|
"0x53 0xdd 0x86 0xce 0x1a 0xb2 0xfd 0x7c\n" + \
|
|
"0x05 0xa4 0x65 0x8c 0x7c 0x30 0xaf 0xdb\n" + \
|
|
"0xfc 0x33 0x01 0x04 0x70 0x69 0x45 0x1b\n" + \
|
|
"0xaf 0x35 0x37 0x4a 0xa3 0xf1 0xbd 0x5d\n" + \
|
|
"0x02 0x8d 0x19 0xcf 0x3c 0x99"
|
|
|
|
LAKE_WG_EDHOC_TV_34900_MSG3 = \
|
|
"0x37 0x52 0xd5 0x53 0x5f 0x31 0x47 0xe8\n" + \
|
|
"0x5f 0x1c 0xfa 0xcd 0x9e 0x78 0xab 0xf9\n" + \
|
|
"0xe0 0xa8 0x1b 0xbf"
|
|
|
|
LAKE_WG_EDHOC_TV_34900_TH4 = \
|
|
"0x7c 0xcf 0xde 0xdc 0x2c 0x10 0xca 0x03\n" + \
|
|
"0x56 0xe9 0x57 0xb9 0xf6 0xa5 0x92 0xe0\n" + \
|
|
"0xfa 0x74 0xdb 0x2a 0xb5 0x4f 0x59 0x24\n" + \
|
|
"0x40 0x96 0xf9 0xa2 0xac 0x56 0xd2 0x07"
|
|
|
|
LAKE_WG_EDHOC_TV_34900_OSCORE_SECRET = \
|
|
"0x5b 0xb2 0xae 0xe2 0x5b 0x16 0x0e 0x7c\n" + \
|
|
"0x6d 0x26 0x12 0xb0 0xa6 0x01 0x09 0x16"
|
|
|
|
LAKE_WG_EDHOC_TV_34900_OSCORE_SALT = \
|
|
"0x8e 0x44 0x92 0x10 0xe0 0x3b 0xc2 0x9d"
|
|
|
|
|
|
def get_ipv6_addr(child):
|
|
child.expect_exact('>')
|
|
child.sendline('ifconfig')
|
|
# Get device local address
|
|
child.expect(
|
|
r"inet6\s+addr:\s+(?P<lladdr>[0-9a-fA-F:]+:[A-Fa-f:0-9]+)"
|
|
" scope: link VAL"
|
|
)
|
|
|
|
return child.match.group("lladdr").lower()
|
|
|
|
|
|
def testfunc(child):
|
|
child.sendline("init handshake {} {}".format(
|
|
get_ipv6_addr(child), COAP_PORT))
|
|
child.expect_exact("[initiator]: sending msg1 (37 bytes):")
|
|
for line in LAKE_WG_EDHOC_TV_34900_MSG1.split('\n'):
|
|
child.expect_exact(line)
|
|
child.expect_exact("[responder]: received an EDHOC message (len 37):")
|
|
child.expect_exact("[responder]: sending msg2 (46 bytes):")
|
|
for line in LAKE_WG_EDHOC_TV_34900_MSG2.split('\n'):
|
|
child.expect_exact(line)
|
|
child.expect_exact("[initiator]: received a message (46 bytes):")
|
|
child.expect_exact("[initiator]: sending msg3 (20 bytes)")
|
|
for line in LAKE_WG_EDHOC_TV_34900_MSG3.split('\n'):
|
|
child.expect_exact(line)
|
|
child.expect_exact("[responder]: finalize exchange")
|
|
child.expect_exact("[responder]: handshake successfully completed")
|
|
child.expect_exact("[initiator]: handshake successfully completed")
|
|
child.expect_exact("[initiator]: Transcript hash 4 (32 bytes):")
|
|
for line in LAKE_WG_EDHOC_TV_34900_TH4.split('\n'):
|
|
child.expect_exact(line)
|
|
child.sendline("init oscore")
|
|
child.expect_exact("OSCORE secret:")
|
|
for line in LAKE_WG_EDHOC_TV_34900_OSCORE_SECRET.split('\n'):
|
|
child.expect_exact(line)
|
|
child.expect_exact("OSCORE salt:")
|
|
child.expect_exact(LAKE_WG_EDHOC_TV_34900_OSCORE_SALT)
|
|
child.sendline("resp oscore")
|
|
child.expect_exact("OSCORE secret:")
|
|
for line in LAKE_WG_EDHOC_TV_34900_OSCORE_SECRET.split('\n'):
|
|
child.expect_exact(line)
|
|
child.expect_exact("OSCORE salt:")
|
|
child.expect_exact(LAKE_WG_EDHOC_TV_34900_OSCORE_SALT)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(run(testfunc))
|