From cbc31b3f595dc4ae5607ffbd8599c5b097cde5aa Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Wed, 27 Jan 2021 21:58:42 -0800 Subject: [PATCH] check cbor recursively to test all cbor --- tests/standard/fido2/__init__.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/standard/fido2/__init__.py b/tests/standard/fido2/__init__.py index e1b9e65..5b1cca8 100644 --- a/tests/standard/fido2/__init__.py +++ b/tests/standard/fido2/__init__.py @@ -4,6 +4,7 @@ from functools import cmp_to_key import tests from fido2 import cbor + def cbor_key_to_representative(key): if isinstance(key, int): if key >= 0: @@ -58,12 +59,24 @@ def TestCborKeysSorted(cbor_obj): for i in range(len(l)): - if not isinstance(l[i], (str, int)): + if isinstance(cbor_obj, dict) and not isinstance(l[i], (str, int)): raise ValueError(f"Cbor map key {l[i]} must be int or str for CTAP2") if l[i] != l_sorted[i]: raise ValueError(f"Cbor map item {i}: {l[i]} is out of order") + # value = None + if isinstance(cbor_obj, dict): + value = cbor_obj[l[i]] + else: + value = l[i] + + if isinstance(value, dict): + TestCborKeysSorted(cbor_obj[l[i]]) + + elif isinstance(value, list): + TestCborKeysSorted(cbor_obj[l[i]]) + return l