mirror of
https://github.com/espressif/openthread.git
synced 2026-06-05 21:14:49 +00:00
[cert-test] support parsing multiple keys (#11618)
This commit is contained in:
@@ -65,12 +65,12 @@ class Cert_8_1_01_Commissioning(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
COMMISSIONER: {
|
||||
'name': 'COMMISSIONER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
JOINER: {
|
||||
'name': 'JOINER',
|
||||
'networkkey': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'network_key': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -44,12 +44,12 @@ class Cert_8_1_02_Commissioning(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
COMMISSIONER: {
|
||||
'name': 'COMMISSIONER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
JOINER: {
|
||||
'name': 'JOINER',
|
||||
'networkkey': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'network_key': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -65,11 +65,11 @@ class Cert_8_1_06_Commissioning(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
COMMISSIONER: {
|
||||
'name': 'COMMISSIONER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
JOINER: {
|
||||
'networkkey': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'network_key': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -45,17 +45,17 @@ class Cert_8_2_01_JoinerRouter(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
COMMISSIONER: {
|
||||
'name': 'COMMISSIONER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
JOINER_ROUTER: {
|
||||
'name': 'JOINER_ROUTER',
|
||||
'networkkey': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'network_key': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
JOINER: {
|
||||
'name': 'JOINER',
|
||||
'networkkey': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'network_key': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -45,17 +45,17 @@ class Cert_8_2_02_JoinerRouter(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
COMMISSIONER: {
|
||||
'name': 'COMMISSIONER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
JOINER_ROUTER: {
|
||||
'name': 'JOINER_ROUTER',
|
||||
'networkkey': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'network_key': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
JOINER: {
|
||||
'name': 'JOINER',
|
||||
'networkkey': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'network_key': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -71,17 +71,17 @@ class Cert_8_2_05_JoinerRouter(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
COMMISSIONER: {
|
||||
'name': 'COMMISSIONER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
JOINER_ROUTER: {
|
||||
'name': 'JOINER_ROUTER',
|
||||
'networkkey': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'network_key': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
JOINER: {
|
||||
'name': 'JOINER',
|
||||
'networkkey': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'network_key': 'deadbeefdeadbeefdeadbeefdeadbeef',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -66,12 +66,12 @@ class Cert_8_3_01_CommissionerPetition(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
LEADER: {
|
||||
'name': 'LEADER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
COMMISSIONER: {
|
||||
'name': 'COMMISSIONER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ class Cert_9_2_11_NetworkKey(thread_cert.TestCase):
|
||||
'name': 'ED',
|
||||
'channel': CHANNEL_INIT,
|
||||
'is_mtd': True,
|
||||
'networkkey': KEY1,
|
||||
'network_key': KEY1,
|
||||
'mode': 'rn',
|
||||
'panid': PANID_INIT,
|
||||
'allowlist': [ROUTER1]
|
||||
@@ -125,7 +125,7 @@ class Cert_9_2_11_NetworkKey(thread_cert.TestCase):
|
||||
'name': 'SED',
|
||||
'channel': CHANNEL_INIT,
|
||||
'is_mtd': True,
|
||||
'networkkey': KEY1,
|
||||
'network_key': KEY1,
|
||||
'mode': '-',
|
||||
'panid': PANID_INIT,
|
||||
'timeout': config.DEFAULT_CHILD_TIMEOUT,
|
||||
|
||||
@@ -92,7 +92,7 @@ class Cert_9_2_18_RollBackActiveTimestamp(thread_cert.TestCase):
|
||||
'name': 'ED',
|
||||
'channel': CHANNEL_INIT,
|
||||
'is_mtd': True,
|
||||
'networkkey': KEY1,
|
||||
'network_key': KEY1,
|
||||
'mode': 'rn',
|
||||
'panid': PANID_INIT,
|
||||
'allowlist': [ROUTER1]
|
||||
@@ -101,7 +101,7 @@ class Cert_9_2_18_RollBackActiveTimestamp(thread_cert.TestCase):
|
||||
'name': 'SED',
|
||||
'channel': CHANNEL_INIT,
|
||||
'is_mtd': True,
|
||||
'networkkey': KEY1,
|
||||
'network_key': KEY1,
|
||||
'mode': '-',
|
||||
'panid': PANID_INIT,
|
||||
'timeout': config.DEFAULT_CHILD_TIMEOUT,
|
||||
|
||||
@@ -183,7 +183,7 @@ class PublishMeshCopService(thread_cert.TestCase):
|
||||
'channel_mask': config.CHANNEL_MASK,
|
||||
'extended_panid': config.EXTENDED_PANID,
|
||||
'mesh_local_prefix': config.MESH_LOCAL_PREFIX.split('/')[0],
|
||||
'network_key': binascii.hexlify(config.DEFAULT_NETWORK_KEY).decode(),
|
||||
'network_key': config.DEFAULT_NETWORK_KEY,
|
||||
'network_name': 'ot-br-1-3',
|
||||
'panid': config.PANID,
|
||||
'pskc': config.PSKC,
|
||||
|
||||
@@ -85,24 +85,7 @@ ONLINK_GUA_PREFIX = '2021::/64'
|
||||
# Any address starts with 'fd' are considered on-link address.
|
||||
ONLINK_PREFIX_REGEX_PATTERN = '^fd'
|
||||
|
||||
DEFAULT_NETWORK_KEY = bytearray([
|
||||
0x00,
|
||||
0x11,
|
||||
0x22,
|
||||
0x33,
|
||||
0x44,
|
||||
0x55,
|
||||
0x66,
|
||||
0x77,
|
||||
0x88,
|
||||
0x99,
|
||||
0xaa,
|
||||
0xbb,
|
||||
0xcc,
|
||||
0xdd,
|
||||
0xee,
|
||||
0xff,
|
||||
])
|
||||
DEFAULT_NETWORK_KEY = '00112233445566778899aabbccddeeff'
|
||||
|
||||
|
||||
class ADDRESS_TYPE(Enum):
|
||||
@@ -309,15 +292,13 @@ def create_default_mle_tlvs_factories():
|
||||
}
|
||||
|
||||
|
||||
def create_default_mle_crypto_engine(network_key):
|
||||
return net_crypto.CryptoEngine(crypto_material_creator=net_crypto.MleCryptoMaterialCreator(network_key))
|
||||
|
||||
|
||||
def create_default_mle_message_factory(network_key):
|
||||
def create_default_mle_message_factory(key_manager=None):
|
||||
key_manager = key_manager or create_default_thread_key_manager()
|
||||
key_manager.add_key(bytes.fromhex(DEFAULT_NETWORK_KEY))
|
||||
return mle.MleMessageFactory(
|
||||
aux_sec_hdr_factory=net_crypto.AuxiliarySecurityHeaderFactory(),
|
||||
mle_command_factory=mle.MleCommandFactory(tlvs_factories=create_default_mle_tlvs_factories()),
|
||||
crypto_engine=create_default_mle_crypto_engine(network_key),
|
||||
crypto_engines=key_manager.mle_crypto_engines,
|
||||
)
|
||||
|
||||
|
||||
@@ -469,8 +450,8 @@ def create_default_ipv6_hop_by_hop_options_factory():
|
||||
return ipv6.HopByHopOptionsFactory(options_factories=create_default_ipv6_hop_by_hop_options_factories())
|
||||
|
||||
|
||||
def create_default_based_on_src_dst_ports_udp_payload_factory(network_key):
|
||||
mle_message_factory = create_default_mle_message_factory(network_key)
|
||||
def create_default_based_on_src_dst_ports_udp_payload_factory(key_manager):
|
||||
mle_message_factory = create_default_mle_message_factory(key_manager)
|
||||
coap_message_factory = create_default_coap_message_factory()
|
||||
dtls_message_factory = create_default_dtls_message_factory()
|
||||
|
||||
@@ -497,12 +478,12 @@ def create_default_ipv6_icmp_body_factories():
|
||||
}
|
||||
|
||||
|
||||
def create_default_ipv6_upper_layer_factories(network_key):
|
||||
def create_default_ipv6_upper_layer_factories(key_manager):
|
||||
return {
|
||||
ipv6.IPV6_NEXT_HEADER_UDP:
|
||||
ipv6.UDPDatagramFactory(
|
||||
udp_header_factory=ipv6.UDPHeaderFactory(),
|
||||
udp_payload_factory=create_default_based_on_src_dst_ports_udp_payload_factory(network_key),
|
||||
udp_payload_factory=create_default_based_on_src_dst_ports_udp_payload_factory(key_manager),
|
||||
),
|
||||
ipv6.IPV6_NEXT_HEADER_ICMP:
|
||||
ipv6.ICMPv6Factory(body_factories=create_default_ipv6_icmp_body_factories()),
|
||||
@@ -523,10 +504,10 @@ def create_default_ipv6_extension_headers_factories():
|
||||
}
|
||||
|
||||
|
||||
def create_default_ipv6_packet_factory(network_key):
|
||||
def create_default_ipv6_packet_factory(key_manager):
|
||||
return ipv6.IPv6PacketFactory(
|
||||
ehf=create_default_ipv6_extension_headers_factories(),
|
||||
ulpf=create_default_ipv6_upper_layer_factories(network_key),
|
||||
ulpf=create_default_ipv6_upper_layer_factories(key_manager),
|
||||
)
|
||||
|
||||
|
||||
@@ -546,27 +527,31 @@ def create_default_thread_context_manager():
|
||||
return context_manager
|
||||
|
||||
|
||||
def create_default_lowpan_parser(context_manager, network_key=DEFAULT_NETWORK_KEY):
|
||||
def create_default_lowpan_parser(context_manager, key_manager):
|
||||
return lowpan.LowpanParser(
|
||||
lowpan_mesh_header_factory=lowpan.LowpanMeshHeaderFactory(),
|
||||
lowpan_decompressor=create_default_lowpan_decompressor(context_manager),
|
||||
lowpan_fragements_buffers_manager=lowpan.LowpanFragmentsBuffersManager(),
|
||||
ipv6_packet_factory=create_default_ipv6_packet_factory(network_key),
|
||||
ipv6_packet_factory=create_default_ipv6_packet_factory(key_manager),
|
||||
)
|
||||
|
||||
|
||||
def create_default_thread_message_factory(network_key=DEFAULT_NETWORK_KEY):
|
||||
def create_default_thread_key_manager():
|
||||
return message.KeyManager()
|
||||
|
||||
|
||||
def create_default_thread_message_factory(key_manager):
|
||||
context_manager = create_default_thread_context_manager()
|
||||
lowpan_parser = create_default_lowpan_parser(context_manager, network_key)
|
||||
lowpan_parser = create_default_lowpan_parser(context_manager, key_manager)
|
||||
|
||||
return message.MessageFactory(lowpan_parser=lowpan_parser)
|
||||
return message.MessageFactory(lowpan_parser, key_manager)
|
||||
|
||||
|
||||
def create_default_thread_sniffer(use_message_factory=True):
|
||||
return sniffer.Sniffer(create_default_thread_message_factory() if use_message_factory else None)
|
||||
def create_default_thread_sniffer(message_factory=None):
|
||||
return sniffer.Sniffer(message_factory)
|
||||
|
||||
|
||||
def create_default_simulator(use_message_factory=True):
|
||||
def create_default_simulator(message_factory=None):
|
||||
if VIRTUAL_TIME:
|
||||
return simulator.VirtualTime(use_message_factory=use_message_factory)
|
||||
return simulator.RealTime(use_message_factory=use_message_factory)
|
||||
return simulator.VirtualTime(message_factory)
|
||||
return simulator.RealTime(message_factory)
|
||||
|
||||
@@ -165,7 +165,7 @@ class MacFrame:
|
||||
|
||||
IEEE802154_VERSION_2015 = 0x02
|
||||
|
||||
def parse(self, data):
|
||||
def parse(self, data, mac_crypto_engines=set()):
|
||||
"""Parse a MAC 802.15.4 frame
|
||||
|
||||
Format of MAC 802.15.4 Frame:
|
||||
@@ -346,8 +346,20 @@ class MacFrame:
|
||||
else:
|
||||
message_info.source_mac_address = src_address.mac_address
|
||||
|
||||
sec_obj = CryptoEngine(MacCryptoMaterialCreator(config.DEFAULT_NETWORK_KEY))
|
||||
self.payload = MacPayload(bytearray(open_payload) + sec_obj.decrypt(private_payload, mic, message_info))
|
||||
if len(mac_crypto_engines) == 0:
|
||||
mac_crypto_engines.add(
|
||||
CryptoEngine(MacCryptoMaterialCreator(bytes.fromhex(config.DEFAULT_NETWORK_KEY))))
|
||||
|
||||
error = None
|
||||
for engine in mac_crypto_engines:
|
||||
try:
|
||||
self.payload = MacPayload(
|
||||
bytearray(open_payload) + engine.decrypt(private_payload, mic, message_info))
|
||||
break
|
||||
except ValueError as e:
|
||||
error = e
|
||||
else:
|
||||
raise ValueError("Unable to decrypt MAC payload") from error
|
||||
|
||||
else:
|
||||
self.payload = MacPayload(payload)
|
||||
|
||||
@@ -38,6 +38,12 @@ import ipv6
|
||||
import mac802154
|
||||
import mle
|
||||
|
||||
from net_crypto import (
|
||||
CryptoEngine,
|
||||
MacCryptoMaterialCreator,
|
||||
MleCryptoMaterialCreator,
|
||||
)
|
||||
|
||||
from enum import IntEnum
|
||||
|
||||
|
||||
@@ -554,10 +560,22 @@ class MessagesSet(object):
|
||||
return str(self.messages)
|
||||
|
||||
|
||||
class KeyManager:
|
||||
|
||||
def __init__(self):
|
||||
self.mac_crypto_engines = set()
|
||||
self.mle_crypto_engines = set()
|
||||
|
||||
def add_key(self, key):
|
||||
self.mac_crypto_engines.add(CryptoEngine(MacCryptoMaterialCreator(key)))
|
||||
self.mle_crypto_engines.add(CryptoEngine(MleCryptoMaterialCreator(key)))
|
||||
|
||||
|
||||
class MessageFactory:
|
||||
|
||||
def __init__(self, lowpan_parser):
|
||||
def __init__(self, lowpan_parser, key_manager):
|
||||
self._lowpan_parser = lowpan_parser
|
||||
self.key_manager = key_manager
|
||||
|
||||
def _add_device_descriptors(self, message):
|
||||
for tlv in message.mle.command.tlvs:
|
||||
@@ -570,7 +588,7 @@ class MessageFactory:
|
||||
|
||||
def _parse_mac_frame(self, data):
|
||||
mac_frame = mac802154.MacFrame()
|
||||
mac_frame.parse(data)
|
||||
mac_frame.parse(data, self.key_manager.mac_crypto_engines)
|
||||
return mac_frame
|
||||
|
||||
def set_lowpan_context(self, cid, prefix):
|
||||
|
||||
@@ -1281,20 +1281,30 @@ class MleMessageSecured(MleMessage):
|
||||
|
||||
class MleMessageFactory:
|
||||
|
||||
def __init__(self, aux_sec_hdr_factory, mle_command_factory, crypto_engine):
|
||||
def __init__(self, aux_sec_hdr_factory, mle_command_factory, crypto_engines):
|
||||
self._aux_sec_hdr_factory = aux_sec_hdr_factory
|
||||
self._mle_command_factory = mle_command_factory
|
||||
self._crypto_engine = crypto_engine
|
||||
self._crypto_engines = crypto_engines
|
||||
|
||||
def _create_mle_secured_message(self, data, message_info):
|
||||
aux_sec_hdr = self._aux_sec_hdr_factory.parse(data, message_info)
|
||||
|
||||
enc_data_length = len(data.getvalue())
|
||||
|
||||
enc_data = bytearray(data.read(enc_data_length - data.tell() - self._crypto_engine.mic_length))
|
||||
mic = bytearray(data.read())
|
||||
raw = data.read(enc_data_length - data.tell())
|
||||
|
||||
dec_data = self._crypto_engine.decrypt(enc_data, mic, message_info)
|
||||
error = None
|
||||
for crypto_engine in self._crypto_engines:
|
||||
enc_data = bytearray(raw[0:-crypto_engine.mic_length])
|
||||
mic = bytearray(raw[-crypto_engine.mic_length:])
|
||||
|
||||
try:
|
||||
dec_data = crypto_engine.decrypt(enc_data, mic, message_info)
|
||||
break
|
||||
except ValueError as e:
|
||||
error = e
|
||||
else:
|
||||
raise ValueError("Failed to parse MLE message") from error
|
||||
|
||||
command = self._mle_command_factory.parse(io.BytesIO(dec_data), message_info)
|
||||
|
||||
|
||||
@@ -45,6 +45,10 @@ class CryptoEngine:
|
||||
"""
|
||||
self._crypto_material_creator = crypto_material_creator
|
||||
|
||||
@property
|
||||
def key(self):
|
||||
return self._crypto_material_creator.network_key
|
||||
|
||||
@property
|
||||
def mic_length(self):
|
||||
return self._crypto_material_creator.mic_length
|
||||
|
||||
@@ -1737,6 +1737,7 @@ class NodeImpl:
|
||||
cmd = 'networkkey %s' % networkkey
|
||||
self.send_command(cmd)
|
||||
self._expect_done()
|
||||
self.simulator.add_network_key(network_key)
|
||||
|
||||
def get_key_sequence_counter(self):
|
||||
self.send_command('keysequence counter')
|
||||
@@ -2728,6 +2729,7 @@ class NodeImpl:
|
||||
cmd = 'dataset networkkey %s' % network_key
|
||||
self.send_command(cmd, go=False)
|
||||
self._expect_done()
|
||||
self.simulator.add_network_key(network_key)
|
||||
|
||||
if network_name is not None:
|
||||
cmd = 'dataset networkname %s' % network_name
|
||||
@@ -2863,6 +2865,7 @@ class NodeImpl:
|
||||
|
||||
if network_key is not None:
|
||||
cmd += 'networkkey %s ' % network_key
|
||||
self.simulator.add_network_key(network_key)
|
||||
|
||||
if mesh_local is not None:
|
||||
cmd += 'localprefix %s ' % mesh_local
|
||||
@@ -2940,6 +2943,7 @@ class NodeImpl:
|
||||
|
||||
if network_key is not None:
|
||||
cmd += 'networkkey %s ' % network_key
|
||||
self.simulator.add_network_key(network_key)
|
||||
|
||||
if mesh_local is not None:
|
||||
cmd += 'localprefix %s ' % mesh_local
|
||||
|
||||
@@ -52,15 +52,20 @@ def dbg_print(*args):
|
||||
|
||||
class BaseSimulator(object):
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, message_factory):
|
||||
self._nodes = {}
|
||||
self.commissioning_messages = {}
|
||||
self._payload_parse_factory = mesh_cop.MeshCopCommandFactory(mesh_cop.create_default_mesh_cop_tlv_factories())
|
||||
self._mesh_cop_msg_set = mesh_cop.create_mesh_cop_message_type_set()
|
||||
self._message_factory = message_factory
|
||||
|
||||
def __del__(self):
|
||||
self._nodes = None
|
||||
|
||||
def add_network_key(self, network_key):
|
||||
if self._message_factory:
|
||||
self._message_factory.key_manager.add_key(bytes.fromhex(network_key))
|
||||
|
||||
def add_node(self, node):
|
||||
self._nodes[node.nodeid] = node
|
||||
self.commissioning_messages[node.nodeid] = []
|
||||
@@ -93,9 +98,9 @@ class BaseSimulator(object):
|
||||
|
||||
class RealTime(BaseSimulator):
|
||||
|
||||
def __init__(self, use_message_factory=True):
|
||||
super(RealTime, self).__init__()
|
||||
self._sniffer = config.create_default_thread_sniffer(use_message_factory=use_message_factory)
|
||||
def __init__(self, message_factory=None):
|
||||
super().__init__(message_factory)
|
||||
self._sniffer = config.create_default_thread_sniffer(message_factory)
|
||||
self._sniffer.start()
|
||||
|
||||
def set_lowpan_context(self, cid, prefix):
|
||||
@@ -158,8 +163,8 @@ class VirtualTime(BaseSimulator):
|
||||
|
||||
_message_factory = None
|
||||
|
||||
def __init__(self, use_message_factory=True):
|
||||
super().__init__()
|
||||
def __init__(self, message_factory=None):
|
||||
super().__init__(message_factory)
|
||||
|
||||
self.port = self.BASE_PORT + (self.PORT_OFFSET * (self.MAX_NODES + 1))
|
||||
|
||||
@@ -203,10 +208,7 @@ class VirtualTime(BaseSimulator):
|
||||
self.current_nodeid = None
|
||||
self._pause_time = 0
|
||||
|
||||
if use_message_factory:
|
||||
self._message_factory = config.create_default_thread_message_factory()
|
||||
else:
|
||||
self._message_factory = None
|
||||
self._message_factory = message_factory
|
||||
|
||||
def __del__(self):
|
||||
if self.sock:
|
||||
|
||||
@@ -36,7 +36,7 @@ import thread_cert
|
||||
class TestDiag(thread_cert.TestCase):
|
||||
SUPPORT_NCP = False
|
||||
|
||||
TOPOLOGY = {1: None}
|
||||
TOPOLOGY = {1: {}}
|
||||
|
||||
def test(self):
|
||||
node = self.nodes[1]
|
||||
|
||||
@@ -1723,7 +1723,7 @@ class TestMleMessageFactory(unittest.TestCase):
|
||||
0x27, 0xc2, 0x96, 0xf4, 0x9c, 0x65, 0x82, 0x97, 0xcf, 0x97, 0x35, 0x89, 0xc2
|
||||
])
|
||||
|
||||
factory = config.create_default_mle_message_factory(network_key=config.DEFAULT_NETWORK_KEY)
|
||||
factory = config.create_default_mle_message_factory()
|
||||
|
||||
# WHEN
|
||||
actual_mle_message = factory.parse(io.BytesIO(data), message_info)
|
||||
@@ -1773,7 +1773,7 @@ class TestMleMessageFactory(unittest.TestCase):
|
||||
0x94, 0x01, 0x6d, 0x20, 0xdf, 0x30, 0x82, 0xf8, 0xbb, 0x34, 0x47, 0x42, 0x50, 0xe9, 0x41, 0xa7, 0x33, 0xa5
|
||||
])
|
||||
|
||||
factory = config.create_default_mle_message_factory(network_key=config.DEFAULT_NETWORK_KEY)
|
||||
factory = config.create_default_mle_message_factory()
|
||||
|
||||
# WHEN
|
||||
actual_mle_message = factory.parse(io.BytesIO(data), message_info)
|
||||
|
||||
@@ -64,12 +64,12 @@ class SrpClientChangeLeaseTime(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
SERVER: {
|
||||
'name': 'SRP_SERVER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
CLIENT: {
|
||||
'name': 'SRP_CLIENT',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -59,22 +59,22 @@ class SrpAutoStartMode(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
CLIENT: {
|
||||
'name': 'SRP_CLIENT',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
SERVER1: {
|
||||
'name': 'SRP_SERVER1',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rn',
|
||||
},
|
||||
SERVER2: {
|
||||
'name': 'SRP_SERVER2',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rn',
|
||||
},
|
||||
SERVER3: {
|
||||
'name': 'SRP_SERVER3',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -58,12 +58,12 @@ class SrpRegisterSingleService(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
SERVER: {
|
||||
'name': 'SRP_SERVER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
CLIENT: {
|
||||
'name': 'SRP_CLIENT',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -57,17 +57,17 @@ class SrpNameConflicts(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
SERVER: {
|
||||
'name': 'SRP_SERVER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
CLIENT1: {
|
||||
'name': 'SRP_CLIENT1',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
CLIENT2: {
|
||||
'name': 'SRP_CLIENT2',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -56,12 +56,12 @@ class SrpRegisterSingleService(thread_cert.TestCase):
|
||||
TOPOLOGY = {
|
||||
SERVER: {
|
||||
'name': 'SRP_SERVER',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
CLIENT: {
|
||||
'name': 'SRP_CLIENT',
|
||||
'networkkey': '00112233445566778899aabbccddeeff',
|
||||
'network_key': '00112233445566778899aabbccddeeff',
|
||||
'mode': 'rdn',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ class TestCase(NcpSupportMixin, unittest.TestCase):
|
||||
"""
|
||||
|
||||
USE_MESSAGE_FACTORY = True
|
||||
TOPOLOGY = None
|
||||
TOPOLOGY = {}
|
||||
CASE_WIRESHARK_PREFS = None
|
||||
SUPPORT_THREAD_1_1 = True
|
||||
PACKET_VERIFICATION = config.PACKET_VERIFICATION_DEFAULT
|
||||
@@ -142,7 +142,10 @@ class TestCase(NcpSupportMixin, unittest.TestCase):
|
||||
"""
|
||||
self._clean_up_tmp()
|
||||
|
||||
self.simulator = config.create_default_simulator(use_message_factory=self.USE_MESSAGE_FACTORY)
|
||||
key_manager = config.create_default_thread_key_manager()
|
||||
|
||||
self.simulator = config.create_default_simulator(
|
||||
config.create_default_thread_message_factory(key_manager) if self.USE_MESSAGE_FACTORY else None)
|
||||
self.nodes = {}
|
||||
|
||||
os.environ['LD_LIBRARY_PATH'] = '/tmp/thread-wireshark'
|
||||
@@ -255,7 +258,7 @@ class TestCase(NcpSupportMixin, unittest.TestCase):
|
||||
'channel_mask': config.CHANNEL_MASK,
|
||||
'extended_panid': config.EXTENDED_PANID,
|
||||
'mesh_local_prefix': config.MESH_LOCAL_PREFIX.split('/')[0],
|
||||
'network_key': binascii.hexlify(config.DEFAULT_NETWORK_KEY).decode(),
|
||||
'network_key': config.DEFAULT_NETWORK_KEY,
|
||||
'network_name': config.NETWORK_NAME,
|
||||
'panid': config.PANID,
|
||||
'pskc': config.PSKC,
|
||||
@@ -264,8 +267,8 @@ class TestCase(NcpSupportMixin, unittest.TestCase):
|
||||
|
||||
if 'channel' in params:
|
||||
dataset['channel'] = params['channel']
|
||||
if 'networkkey' in params:
|
||||
dataset['network_key'] = params['networkkey']
|
||||
if 'network_key' in params:
|
||||
dataset['network_key'] = params['network_key']
|
||||
if 'network_name' in params:
|
||||
dataset['network_name'] = params['network_name']
|
||||
if 'panid' in params:
|
||||
|
||||
@@ -82,7 +82,7 @@ class TestOTCI(unittest.TestCase):
|
||||
import simulator
|
||||
|
||||
if VIRTUAL_TIME:
|
||||
sim = simulator.VirtualTime(use_message_factory=False)
|
||||
sim = simulator.VirtualTime()
|
||||
else:
|
||||
sim = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user