dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/41464?usp=email )
Change subject: card_key_provider: use case-insensitive field names ......................................................................
card_key_provider: use case-insensitive field names
It is common in CSV files that the columns have uppercase names, so we have adopted this scheme when we started using the card_key_provider.
This also means that the API of the card_key_provider_get() and card_key_provider_get_field() function now implicitly requires uppercase field names like 'ICCID', 'ADM1', etc.
Unfortunately this may be unreliable, so let's convert the field names to uppercase as soon as we receive them. This makes the API case-insensitive and gives us the assurance that all field names we ever work with are in uppercase.
Related: SYS#7725 Change-Id: I9d80752587e2ccff0963c10abd5a2f42f5868d79 --- M pySim/card_key_provider.py M tests/unittests/test_card_key_provider.py 2 files changed, 13 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/64/41464/1
diff --git a/pySim/card_key_provider.py b/pySim/card_key_provider.py index 76c1fd6..6292f93 100644 --- a/pySim/card_key_provider.py +++ b/pySim/card_key_provider.py @@ -231,6 +231,8 @@ Returns: dictionary of {field, value} strings for each requested field from 'fields' """ + key = key.upper() + fields = [f.upper() for f in fields] for p in provider_list: if not isinstance(p, CardKeyProvider): raise ValueError( @@ -252,6 +254,8 @@ Returns: dictionary of {field, value} strings for the requested field """ + key = key.upper() + field = field.upper() for p in provider_list: if not isinstance(p, CardKeyProvider): raise ValueError( diff --git a/tests/unittests/test_card_key_provider.py b/tests/unittests/test_card_key_provider.py index bbe76e8..121998c 100644 --- a/tests/unittests/test_card_key_provider.py +++ b/tests/unittests/test_card_key_provider.py @@ -66,6 +66,11 @@ "KIC2","KIC3","KID1","KID2","KID3","KIK1","KIK2","KIK3","OPC"], "ICCID", t.get('ICCID')) self.assertEqual(result, t.get('EXPECTED')) + result = card_key_provider_get(["PIN1","puk1","PIN2","PUK2","KI","adm1","ADM2","KIC1", + "KIC2","kic3","KID1","KID2","KID3","kik1","KIK2","KIK3","OPC"], + "iccid", t.get('ICCID')) + self.assertEqual(result, t.get('EXPECTED')) +
def test_card_key_provider_get_field(self): test_data = [{'EXPECTED' : "3eb8567fa0b4b1e63bcab13bff5f2702", 'ICCID' :"8988211000000000001"}, @@ -75,6 +80,10 @@ for t in test_data: result = card_key_provider_get_field("KIC1", "ICCID", t.get('ICCID')) self.assertEqual(result, t.get('EXPECTED')) + for t in test_data: + result = card_key_provider_get_field("kic1", "iccid", t.get('ICCID')) + self.assertEqual(result, t.get('EXPECTED')) +
class TestCardKeyFieldCryptor(unittest.TestCase):