feat: support 64-byte identity keys in identity validation and tests

This commit is contained in:
Lloyd
2026-05-28 10:29:35 +01:00
parent 723e912d48
commit 0f6a7dc053
2 changed files with 6 additions and 5 deletions
+2 -2
View File
@@ -438,9 +438,9 @@ class RepeaterDaemon:
elif isinstance(identity_key, str):
try:
identity_key_bytes = bytes.fromhex(identity_key)
if len(identity_key_bytes) != 32:
if len(identity_key_bytes) not in (32, 64):
logger.error(
f"Identity key for '{name}' is invalid length: {len(identity_key_bytes)} bytes (expected 32)"
f"Identity key for '{name}' is invalid length: {len(identity_key_bytes)} bytes (expected 32 or 64)"
)
continue
except ValueError as e:
+4 -3
View File
@@ -38,6 +38,7 @@ async def test_load_additional_identities_valid_and_invalid_entries():
{"name": "bad-type", "identity_key": 12345},
{"name": "good-bytes", "identity_key": b"\x10" * 32},
{"name": "good-hex", "identity_key": ("11" * 32)},
{"name": "good-hex-64", "identity_key": ("22" * 64)},
]
}
@@ -48,10 +49,10 @@ async def test_load_additional_identities_valid_and_invalid_entries():
with patch("pymc_core.LocalIdentity", _FakeLocalIdentity):
await daemon._load_additional_identities()
# Only the two valid entries should be registered.
assert daemon._register_identity_everywhere.call_count == 2
# Only valid entries should be registered (including 64-byte firmware keys).
assert daemon._register_identity_everywhere.call_count == 3
names = [c.kwargs["name"] for c in daemon._register_identity_everywhere.call_args_list]
assert names == ["good-bytes", "good-hex"]
assert names == ["good-bytes", "good-hex", "good-hex-64"]
@pytest.mark.asyncio