laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/39293?usp=email )
Change subject: align get_atr() return value type ......................................................................
align get_atr() return value type
type annotations claimed the return type was Hexstr, but in reality it was a list of integers. Let's fix that.
Change-Id: I01b247dad40ec986cf199302f8e92d16848bd499 Closes: OS#6322 --- M pySim/filesystem.py M pySim/legacy/cards.py M pySim/runtime.py M pySim/transport/pcsc.py M pySim/transport/serial.py 5 files changed, 21 insertions(+), 21 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/93/39293/1
diff --git a/pySim/filesystem.py b/pySim/filesystem.py index 6e8852a..5c60968 100644 --- a/pySim/filesystem.py +++ b/pySim/filesystem.py @@ -35,7 +35,7 @@ from cmd2 import CommandSet, with_default_category from smartcard.util import toBytes
-from osmocom.utils import h2b, b2h, is_hex, auto_int, auto_uint8, auto_uint16, is_hexstr, JsonEncoder +from osmocom.utils import h2b, b2h, is_hex, auto_int, auto_uint8, auto_uint16, is_hexstr, JsonEncoder, hexstr from osmocom.tlv import bertlv_parse_one from osmocom.construct import filter_dict, parse_construct, build_construct
@@ -1528,10 +1528,9 @@ @classmethod def match(cls, scc: SimCardCommands) -> bool: """Test if given card matches this model.""" - card_atr = scc.get_atr() + card_atr = hexstr(scc.get_atr()) for atr in cls._atrs: - atr_bin = toBytes(atr) - if atr_bin == card_atr: + if hexstr(atr) == card_atr: print("Detected CardModel:", cls.__name__) return True return False diff --git a/pySim/legacy/cards.py b/pySim/legacy/cards.py index 1f5db8a..414bcdc 100644 --- a/pySim/legacy/cards.py +++ b/pySim/legacy/cards.py @@ -5,6 +5,7 @@ import abc from smartcard.util import toBytes from pytlv.TLV import * +from osmocom.utils import hexstr
from pySim.cards import SimCardBase, UiccCardBase from pySim.utils import dec_iccid, enc_iccid, dec_imsi, enc_imsi @@ -781,7 +782,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3B 99 18 00 11 88 22 33 44 55 66 77 60"): + if scc.get_atr() == hexstr("3B 99 18 00 11 88 22 33 44 55 66 77 60"): return kls(scc) except: return None @@ -826,7 +827,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3B 7D 94 00 00 55 55 53 0A 74 86 93 0B 24 7C 4D 54 68"): + if scc.get_atr() == hexstr("3B 7D 94 00 00 55 55 53 0A 74 86 93 0B 24 7C 4D 54 68"): return kls(scc) except: return None @@ -904,7 +905,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01 A5"): + if scc.get_atr() == hexstr("3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 43 20 07 18 00 00 01 A5"): return kls(scc) except: return None @@ -1032,7 +1033,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 44 22 06 10 00 00 01 A9"): + if scc.get_atr() == hexstr("3B 9F 96 80 1F C7 80 31 A0 73 BE 21 13 67 44 22 06 10 00 00 01 A9"): return kls(scc) except: return None @@ -1166,7 +1167,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3B 9F 95 80 1F C3 80 31 E0 73 FE 21 13 57 86 81 02 86 98 44 18 A8"): + if scc.get_atr() == hexstr("3B 9F 95 80 1F C3 80 31 E0 73 FE 21 13 57 86 81 02 86 98 44 18 A8"): return kls(scc) except: return None @@ -1215,7 +1216,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3B 9F 95 80 1F C7 80 31 E0 73 F6 21 13 67 4D 45 16 00 43 01 00 8F"): + if scc.get_atr() == hexstr("3B 9F 95 80 1F C7 80 31 E0 73 F6 21 13 67 4D 45 16 00 43 01 00 8F"): return kls(scc) except: return None @@ -1305,18 +1306,18 @@ def autodetect(kls, scc): try: # Try card model #1 - atr = "3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9" - if scc.get_atr() == toBytes(atr): + atr = hexstr("3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 30 34 05 4B A9") + if scc.get_atr() == atr: return kls(scc)
# Try card model #2 - atr = "3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 31 33 02 51 B2" - if scc.get_atr() == toBytes(atr): + atr = hexstr("3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 75 31 33 02 51 B2") + if scc.get_atr() == atr: return kls(scc)
# Try card model #3 - atr = "3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 52 75 31 04 51 D5" - if scc.get_atr() == toBytes(atr): + atr = hexstr("3B 9F 96 80 1F 87 80 31 E0 73 FE 21 1B 67 4A 4C 52 75 31 04 51 D5") + if scc.get_atr() == atr: return kls(scc) except: return None diff --git a/pySim/runtime.py b/pySim/runtime.py index 3e48f75..0eaa98a 100644 --- a/pySim/runtime.py +++ b/pySim/runtime.py @@ -18,7 +18,7 @@ # along with this program. If not, see http://www.gnu.org/licenses/.
from typing import Optional, Tuple -from osmocom.utils import h2b, i2h, is_hex, Hexstr +from osmocom.utils import h2b, i2h, is_hex, Hexstr, hexstr from osmocom.tlv import bertlv_parse_one
from pySim.exceptions import * @@ -141,7 +141,7 @@ continue del self.lchan[lchan_nr] self.adm_verified = False - atr = i2h(self.card.reset()) + atr = hexstr(self.card.reset()) if cmd_app: cmd_app.lchan = self.lchan[0] # select MF to reset internal state and to verify card really works diff --git a/pySim/transport/pcsc.py b/pySim/transport/pcsc.py index bb820ed..adac6ee 100644 --- a/pySim/transport/pcsc.py +++ b/pySim/transport/pcsc.py @@ -103,7 +103,7 @@ raise NoCardError() from exc
def get_atr(self) -> Hexstr: - return self._con.getATR() + return i2h(self._con.getATR())
def disconnect(self): self._con.disconnect() diff --git a/pySim/transport/serial.py b/pySim/transport/serial.py index 938c319..658943b 100644 --- a/pySim/transport/serial.py +++ b/pySim/transport/serial.py @@ -21,7 +21,7 @@ import argparse from typing import Optional import serial -from osmocom.utils import h2b, b2h, Hexstr +from osmocom.utils import h2b, b2h, i2h, Hexstr
from pySim.exceptions import NoCardError, ProtocolError from pySim.transport import LinkBaseTpdu @@ -96,7 +96,7 @@ self.reset_card()
def get_atr(self) -> Hexstr: - return self._atr + return i2h(self._atr)
def disconnect(self): pass # Nothing to do really ...