laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/pysim/+/40825?usp=email )

 (

10 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted 
one.
 )Change subject: personalization: add int as input type for BinaryParameter
......................................................................

personalization: add int as input type for BinaryParameter

Change-Id: I31d8142cb0847a8b291f8dc614d57cb4734f0190
Jenkins: skip-card-test
---
M pySim/esim/saip/personalization.py
M tests/unittests/test_configurable_parameters.py
M tests/unittests/xo/test_configurable_parameters
3 files changed, 186 insertions(+), 1 deletion(-)

Approvals:
  laforge: Looks good to me, approved
  Jenkins Builder: Verified




diff --git a/pySim/esim/saip/personalization.py 
b/pySim/esim/saip/personalization.py
index c60a7c2..8df99e8 100644
--- a/pySim/esim/saip/personalization.py
+++ b/pySim/esim/saip/personalization.py
@@ -369,7 +369,7 @@
             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 @@
     @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)
diff --git a/tests/unittests/test_configurable_parameters.py 
b/tests/unittests/test_configurable_parameters.py
index 5a8f9d3..5381702 100755
--- a/tests/unittests/test_configurable_parameters.py
+++ b/tests/unittests/test_configurable_parameters.py
@@ -87,6 +87,10 @@
                       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 @@
                       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 @@
                       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 @@
                       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 @@
                       
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',
diff --git a/tests/unittests/xo/test_configurable_parameters 
b/tests/unittests/xo/test_configurable_parameters
index c16a2c8..4e772c0 100644
--- a/tests/unittests/xo/test_configurable_parameters
+++ b/tests/unittests/xo/test_configurable_parameters
@@ -19,6 +19,10 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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}

--
To view, visit https://gerrit.osmocom.org/c/pysim/+/40825?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I31d8142cb0847a8b291f8dc614d57cb4734f0190
Gerrit-Change-Number: 40825
Gerrit-PatchSet: 11
Gerrit-Owner: neels <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>

Reply via email to