personalization.ConfigurableParameter: fix BytesIO() input

Change-Id: I0ad160eef9015e76eef10baee7c6b606fe249123
This commit is contained in:
Neels Hofmeyr
2025-08-04 00:40:13 +02:00
parent 58aafe36c7
commit 6b68e7b54d
3 changed files with 193 additions and 0 deletions

View File

@@ -198,6 +198,9 @@ class ConfigurableParameter:
if cls.allow_chars is not None:
if any(c not in cls.allow_chars for c in val):
raise ValueError(f"invalid characters in input value {val!r}, valid chars are {cls.allow_chars}")
elif isinstance(val, io.BytesIO):
val = val.getvalue()
if cls.allow_len is not None:
l = cls.allow_len
# cls.allow_len could be one int, or a tuple of ints. Wrap a single int also in a tuple.

View File

@@ -20,6 +20,7 @@
import io
import sys
import unittest
import io
from importlib import resources
from osmocom.utils import hexstr
from pySim.esim.saip import ProfileElementSequence
@@ -160,6 +161,10 @@ class ConfigurableParameterTest(unittest.TestCase):
val=bytearray(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=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.Opc,
val='01020304050607080910111213141516',
@@ -173,6 +178,10 @@ class ConfigurableParameterTest(unittest.TestCase):
val=bytearray(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.Opc,
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'),
]
for sdkey_cls in (
@@ -243,6 +252,11 @@ class ConfigurableParameterTest(unittest.TestCase):
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=sdkey_cls,
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',
),
])
outputs = []

View File

@@ -71,6 +71,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= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
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 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}
@@ -83,6 +87,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der Opc(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= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
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}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp80Kvn01Enc(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= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -103,6 +111,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp80Kvn01Enc(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp80Kvn01Enc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp80Kvn02Dek(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= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -123,6 +135,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp80Kvn02Dek(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp80Kvn02Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp81Kvn81Mac(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= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -143,6 +159,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp81Kvn81Mac(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp81Kvn81Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp81Kvn83Enc(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= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -163,6 +183,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp81Kvn83Enc(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp81Kvn83Enc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp02Kvn20Dek(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= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -183,6 +207,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp02Kvn20Dek(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp02Kvn20Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp02Kvn21Mac(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= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -203,6 +231,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp02Kvn21Mac(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp02Kvn21Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp02KvnffEnc(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= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -223,6 +255,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp02KvnffEnc(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp02KvnffEnc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp03Kvn30Dek(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= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -243,6 +279,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp03Kvn30Dek(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp03Kvn30Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp03Kvn31Mac(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= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -263,6 +303,10 @@ ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp03Kvn31Mac(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der SdKeyScp03Kvn31Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Imsi(val= '123456':str)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
@@ -335,6 +379,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= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
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 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}
@@ -347,6 +395,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t
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}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
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}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp80Kvn01Enc(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= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -367,6 +419,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp80Kvn01Enc(val= b'\x01\x02\x03\x04\x0
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp80Kvn01Enc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp80Kvn02Dek(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= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -387,6 +443,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp80Kvn02Dek(val= b'\x01\x02\x03\x04\x0
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp80Kvn02Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp81Kvn81Mac(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= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -407,6 +467,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp81Kvn81Mac(val= b'\x01\x02\x03\x04\x0
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp81Kvn81Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp81Kvn83Enc(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= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -427,6 +491,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp81Kvn83Enc(val= b'\x01\x02\x03\x04\x0
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp81Kvn83Enc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp02Kvn20Dek(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= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -447,6 +515,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp02Kvn20Dek(val= b'\x01\x02\x03\x04\x0
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp02Kvn20Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp02Kvn21Mac(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= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -467,6 +539,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp02Kvn21Mac(val= b'\x01\x02\x03\x04\x0
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp02Kvn21Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp02KvnffEnc(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= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -487,6 +563,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp02KvnffEnc(val= b'\x01\x02\x03\x04\x0
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp02KvnffEnc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp03Kvn30Dek(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= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -507,6 +587,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp03Kvn30Dek(val= b'\x01\x02\x03\x04\x0
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp03Kvn30Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp03Kvn31Mac(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= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -527,6 +611,10 @@ ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp03Kvn31Mac(val= b'\x01\x02\x03\x04\x0
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der SdKeyScp03Kvn31Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Imsi(val= '123456':str)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
@@ -599,6 +687,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= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
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 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}
@@ -611,6 +703,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der Opc(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= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
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}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp80Kvn01Enc(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= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -631,6 +727,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp80Kvn01Enc(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp80Kvn01Enc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp80Kvn02Dek(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= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -651,6 +751,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp80Kvn02Dek(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp80Kvn02Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp81Kvn81Mac(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= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -671,6 +775,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp81Kvn81Mac(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp81Kvn81Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp81Kvn83Enc(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= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -691,6 +799,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp81Kvn83Enc(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp81Kvn83Enc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp02Kvn20Dek(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= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -711,6 +823,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp02Kvn20Dek(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp02Kvn20Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp02Kvn21Mac(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= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -731,6 +847,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp02Kvn21Mac(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp02Kvn21Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp02KvnffEnc(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= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -751,6 +871,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp02KvnffEnc(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp02KvnffEnc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp03Kvn30Dek(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= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -771,6 +895,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp03Kvn30Dek(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp03Kvn30Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp03Kvn31Mac(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= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -791,6 +919,10 @@ ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp03Kvn31Mac(val= b'\x01\x02\x03\x04\x05\
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der SdKeyScp03Kvn31Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Imsi(val= '123456':str)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
@@ -863,6 +995,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= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
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 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}
@@ -875,6 +1011,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x1
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}
ok: TS48v5_SAIP2.3_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
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}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp80Kvn01Enc(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= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -895,6 +1035,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp80Kvn01Enc(val= b'\x01\x02\x03\x04\x05\x
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp80Kvn01Enc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN01 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp80Kvn02Dek(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= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -915,6 +1059,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp80Kvn02Dek(val= b'\x01\x02\x03\x04\x05\x
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp80Kvn02Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP80 KVN02 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp81Kvn81Mac(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= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -935,6 +1083,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp81Kvn81Mac(val= b'\x01\x02\x03\x04\x05\x
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp81Kvn81Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN81 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp81Kvn83Enc(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= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -955,6 +1107,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp81Kvn83Enc(val= b'\x01\x02\x03\x04\x05\x
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp81Kvn83Enc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP81 KVN83 ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp02Kvn20Dek(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= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -975,6 +1131,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp02Kvn20Dek(val= b'\x01\x02\x03\x04\x05\x
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp02Kvn20Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 20 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp02Kvn21Mac(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= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -995,6 +1155,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp02Kvn21Mac(val= b'\x01\x02\x03\x04\x05\x
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp02Kvn21Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 21 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp02KvnffEnc(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= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
@@ -1015,6 +1179,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp02KvnffEnc(val= b'\x01\x02\x03\x04\x05\x
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp02KvnffEnc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP02 ff ENC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp03Kvn30Dek(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= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
@@ -1035,6 +1203,10 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp03Kvn30Dek(val= b'\x01\x02\x03\x04\x05\x
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp03Kvn30Dek(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 30 DEK': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp03Kvn31Mac(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= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
@@ -1054,3 +1226,7 @@ ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp03Kvn31Mac(val= b'\x01\x02\x03\x04\x05\x
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp03Kvn31Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytearray)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der SdKeyScp03Kvn31Mac(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':BytesIO)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'SCP03 31 MAC': '01020304050607080910111213141516'}:{hexstr}