personalization: add int as input type for BinaryParameter

Change-Id: I31d8142cb0847a8b291f8dc614d57cb4734f0190
This commit is contained in:
Neels Hofmeyr
2025-08-04 18:50:44 +02:00
parent 913e8d12d4
commit 9e33ae0486
3 changed files with 186 additions and 1 deletions

View File

@@ -369,7 +369,7 @@ class IntegerParam(ConfigurableParameter):
yield valdict
class BinaryParam(ConfigurableParameter):
allow_types = (str, io.BytesIO, bytes, bytearray)
allow_types = (str, io.BytesIO, bytes, bytearray, int)
allow_chars = '0123456789abcdefABCDEF'
strip_chars = ' \t\r\n'
default_source = param_source.RandomHexDigitSource
@@ -377,6 +377,10 @@ class BinaryParam(ConfigurableParameter):
@classmethod
def validate_val(cls, val):
# take care that min_len and max_len are applied to the binary length by converting to bytes first
if isinstance(val, int):
min_len, _max_len = cls.get_len_range()
val = '%0*d' % (min_len, val)
if isinstance(val, str):
if cls.strip_chars is not None:
val = ''.join(c for c in val if c not in cls.strip_chars)

View File

@@ -87,6 +87,10 @@ class ConfigurableParameterTest(unittest.TestCase):
val='12345678',
expect_clean_val=b'12345678',
expect_val='12345678'),
Paramtest(param_cls=p13n.Puk1,
val=int(12345678),
expect_clean_val=b'12345678',
expect_val='12345678'),
Paramtest(param_cls=p13n.Puk2,
val='12345678',
@@ -105,6 +109,18 @@ class ConfigurableParameterTest(unittest.TestCase):
val='12345678',
expect_clean_val=b'12345678',
expect_val='12345678'),
Paramtest(param_cls=p13n.Pin1,
val=int(1234),
expect_clean_val=b'1234\xff\xff\xff\xff',
expect_val='1234'),
Paramtest(param_cls=p13n.Pin1,
val=int(123456),
expect_clean_val=b'123456\xff\xff',
expect_val='123456'),
Paramtest(param_cls=p13n.Pin1,
val=int(12345678),
expect_clean_val=b'12345678',
expect_val='12345678'),
Paramtest(param_cls=p13n.Adm1,
val='1234',
@@ -118,6 +134,10 @@ class ConfigurableParameterTest(unittest.TestCase):
val='12345678',
expect_clean_val=b'12345678',
expect_val='12345678'),
Paramtest(param_cls=p13n.Adm1,
val=int(123456),
expect_clean_val=b'123456\xff\xff',
expect_val='123456'),
Paramtest(param_cls=p13n.AlgorithmID,
val='Milenage',
@@ -132,6 +152,19 @@ class ConfigurableParameterTest(unittest.TestCase):
expect_clean_val=3,
expect_val='usim-test'),
Paramtest(param_cls=p13n.AlgorithmID,
val=1,
expect_clean_val=1,
expect_val='Milenage'),
Paramtest(param_cls=p13n.AlgorithmID,
val=2,
expect_clean_val=2,
expect_val='TUAK'),
Paramtest(param_cls=p13n.AlgorithmID,
val=3,
expect_clean_val=3,
expect_val='usim-test'),
Paramtest(param_cls=p13n.K,
val='01020304050607080910111213141516',
expect_clean_val=b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15\x16',
@@ -148,6 +181,10 @@ class ConfigurableParameterTest(unittest.TestCase):
val=io.BytesIO(b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15\x16'),
expect_clean_val=b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15\x16',
expect_val='01020304050607080910111213141516'),
Paramtest(param_cls=p13n.K,
val=int(11020304050607080910111213141516),
expect_clean_val=b'\x11\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15\x16',
expect_val='11020304050607080910111213141516'),
Paramtest(param_cls=p13n.Opc,
val='01020304050607080910111213141516',

View File

@@ -19,6 +19,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der Puk1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Puk1(val= 12345678:int)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Puk2(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK2': '12345678'}:{str}
@@ -35,6 +39,18 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der Pin1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Pin1(val= 1234:int)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'PIN1': '1234'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Pin1(val= 123456:int)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'PIN1': '123456'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Pin1(val= 12345678:int)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Adm1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'ADM1': '1234'}:{str}
@@ -47,6 +63,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der Adm1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'ADM1': '12345678'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Adm1(val= 123456:int)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'ADM1': '123456'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der AlgorithmID(val= 'Milenage':str)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
@@ -59,6 +79,18 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der AlgorithmID(val= 'usim-test':str)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim-test'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der AlgorithmID(val= 1:int)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der AlgorithmID(val= 2:int)
clean_val= 2:int
read_back_val= {'Algorithm': 'TUAK'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der AlgorithmID(val= 3:int)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim-test'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der K(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
@@ -75,6 +107,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der K(val= 11020304050607080910111213141516:int)
clean_val= b'\x11\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '11020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Opc(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
@@ -111,6 +147,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Puk1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Puk1(val= 12345678:int)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Puk2(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK2': '12345678'}:{str}
@@ -127,6 +167,18 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Pin1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Pin1(val= 1234:int)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'PIN1': '1234'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Pin1(val= 123456:int)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'PIN1': '123456'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Pin1(val= 12345678:int)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Adm1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'ADM1': '1234'}:{str}
@@ -139,6 +191,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Adm1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'ADM1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Adm1(val= 123456:int)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'ADM1': '123456'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der AlgorithmID(val= 'Milenage':str)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
@@ -151,6 +207,18 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der AlgorithmID(val= 'usim-test':str)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim-test'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der AlgorithmID(val= 1:int)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der AlgorithmID(val= 2:int)
clean_val= 2:int
read_back_val= {'Algorithm': 'TUAK'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der AlgorithmID(val= 3:int)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim-test'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der K(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
@@ -167,6 +235,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der K(val= 11020304050607080910111213141516:int)
clean_val= b'\x11\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '11020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Opc(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
@@ -203,6 +275,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der Puk1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Puk1(val= 12345678:int)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Puk2(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK2': '12345678'}:{str}
@@ -219,6 +295,18 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der Pin1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Pin1(val= 1234:int)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'PIN1': '1234'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Pin1(val= 123456:int)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'PIN1': '123456'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Pin1(val= 12345678:int)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Adm1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'ADM1': '1234'}:{str}
@@ -231,6 +319,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der Adm1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'ADM1': '12345678'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Adm1(val= 123456:int)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'ADM1': '123456'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der AlgorithmID(val= 'Milenage':str)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
@@ -243,6 +335,18 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der AlgorithmID(val= 'usim-test':str)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim-test'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der AlgorithmID(val= 1:int)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der AlgorithmID(val= 2:int)
clean_val= 2:int
read_back_val= {'Algorithm': 'TUAK'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der AlgorithmID(val= 3:int)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim-test'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der K(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
@@ -259,6 +363,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der K(val= 11020304050607080910111213141516:int)
clean_val= b'\x11\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '11020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Opc(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
@@ -295,6 +403,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der Puk1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Puk1(val= 12345678:int)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Puk2(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK2': '12345678'}:{str}
@@ -311,6 +423,18 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der Pin1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Pin1(val= 1234:int)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'PIN1': '1234'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Pin1(val= 123456:int)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'PIN1': '123456'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Pin1(val= 12345678:int)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Adm1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'ADM1': '1234'}:{str}
@@ -323,6 +447,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der Adm1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'ADM1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Adm1(val= 123456:int)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'ADM1': '123456'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der AlgorithmID(val= 'Milenage':str)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
@@ -335,6 +463,18 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der AlgorithmID(val= 'usim-test':str)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim-test'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der AlgorithmID(val= 1:int)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der AlgorithmID(val= 2:int)
clean_val= 2:int
read_back_val= {'Algorithm': 'TUAK'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der AlgorithmID(val= 3:int)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim-test'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der K(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
@@ -351,6 +491,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der K(val= 11020304050607080910111213141516:int)
clean_val= b'\x11\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '11020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Opc(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}