diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2021-04-20 22:38:21 +0200 |
---|---|---|
committer | Philipp Maier <pmaier@sysmocom.de> | 2021-04-23 15:52:10 +0200 |
commit | b46cb3ffa2381a8181599a89ab82ffce5c8ecf6d (patch) | |
tree | 94322d43b20429a562c85da52cd775ed6545924e /tests | |
parent | 977035c429f4f4a1aa61e82129f6a1cffe1d6339 (diff) |
utils: fix encoding of EF.MSISDN
The encoding of EF.MSISDN is a bit unstrutured. The encoder function
does not return a valid result since it lacks the parameters
Capability/Configuration2 Record Identifier and Extension5 Record
Identifier, which are mandatory but can be set to 0xFF. Also the
encoder gets its input from pySim-shell, so it should have some
more input validation, especially when the user encodes an empty
string. The encoder and decoder function also do not have unit-tests.
Since the encoder now adds the missing two bytes by isself this does
not have to be done manually anymore, so cards.py needs to be
re-aligned.
For pySim-shell.py the encoder is used from ts_51_011.py. Unfortunately
it is used wrongly there. The optional Alpha Identifier is required
here as well.
Related: OS#4963
Change-Id: Iee5369b3e3ba7fa1155facc8fa824bc60e33b55b
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/test_utils.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/test_utils.py b/tests/test_utils.py index badde55..71c0eb0 100755 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -109,5 +109,33 @@ class DecTestCase(unittest.TestCase): encoded = suci_calc_info._encode_hex(self.decoded_testfile_suci) self.assertEqual(encoded.lower(), self.testfile_suci_calc_info.lower()) + def testEnc_msisdn(self): + msisdn_encoded = utils.enc_msisdn("+4916012345678", npi=0x01, ton=0x03) + self.assertEqual(msisdn_encoded, "0891946110325476f8ffffffffff") + msisdn_encoded = utils.enc_msisdn("123456", npi=0x01, ton=0x03) + self.assertEqual(msisdn_encoded, "04b1214365ffffffffffffffffff") + msisdn_encoded = utils.enc_msisdn("12345678901234567890", npi=0x01, ton=0x03) + self.assertEqual(msisdn_encoded, "0bb121436587092143658709ffff") + msisdn_encoded = utils.enc_msisdn("+12345678901234567890", npi=0x01, ton=0x03) + self.assertEqual(msisdn_encoded, "0b9121436587092143658709ffff") + msisdn_encoded = utils.enc_msisdn("", npi=0x01, ton=0x03) + self.assertEqual(msisdn_encoded, "ffffffffffffffffffffffffffff") + msisdn_encoded = utils.enc_msisdn("+", npi=0x01, ton=0x03) + self.assertEqual(msisdn_encoded, "ffffffffffffffffffffffffffff") + + def testDec_msisdn(self): + msisdn_decoded = utils.dec_msisdn("0891946110325476f8ffffffffff") + self.assertEqual(msisdn_decoded, (1, 1, "+4916012345678")) + msisdn_decoded = utils.dec_msisdn("04b1214365ffffffffffffffffff") + self.assertEqual(msisdn_decoded, (1, 3, "123456")) + msisdn_decoded = utils.dec_msisdn("0bb121436587092143658709ffff") + self.assertEqual(msisdn_decoded, (1, 3, "12345678901234567890")) + msisdn_decoded = utils.dec_msisdn("ffffffffffffffffffffffffffff") + self.assertEqual(msisdn_decoded, None) + msisdn_decoded = utils.dec_msisdn("00112233445566778899AABBCCDDEEFF001122330bb121436587092143658709ffff") + self.assertEqual(msisdn_decoded, (1, 3, "12345678901234567890")) + msisdn_decoded = utils.dec_msisdn("ffffffffffffffffffffffffffffffffffffffff0bb121436587092143658709ffff") + self.assertEqual(msisdn_decoded, (1, 3, "12345678901234567890")) + if __name__ == "__main__": unittest.main() |