laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/39293?usp=email )
Change subject: ATR: align get_atr() return value type ......................................................................
ATR: 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-shell.py M pySim/filesystem.py M pySim/legacy/cards.py M pySim/runtime.py M pySim/transport/pcsc.py M pySim/transport/serial.py 6 files changed, 19 insertions(+), 21 deletions(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve laforge: Looks good to me, approved
diff --git a/pySim-shell.py b/pySim-shell.py index d08dc21..9733b22 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -294,7 +294,7 @@ if self.rs is None: # In case no runtime state is available we go the direct route self.card._scc.reset_card() - atr = b2h(self.card._scc.get_atr()) + atr = self.card._scc.get_atr() else: atr = self.rs.reset(self) self.poutput('Card ATR: %s' % atr) diff --git a/pySim/filesystem.py b/pySim/filesystem.py index 6e8852a..246afb0 100644 --- a/pySim/filesystem.py +++ b/pySim/filesystem.py @@ -1530,8 +1530,7 @@ """Test if given card matches this model.""" card_atr = scc.get_atr() for atr in cls._atrs: - atr_bin = toBytes(atr) - if atr_bin == card_atr: + if 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 ab69eed..3a68e18 100644 --- a/pySim/legacy/cards.py +++ b/pySim/legacy/cards.py @@ -3,7 +3,6 @@ ################################################################################
import abc -from smartcard.util import toBytes from pytlv.TLV import *
from pySim.cards import SimCardBase, UiccCardBase @@ -781,7 +780,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3b991800118822334455667760"): + if scc.get_atr() == "3b991800118822334455667760": return kls(scc) except: return None @@ -826,7 +825,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3b7d9400005555530a7486930b247c4d5468"): + if scc.get_atr() == "3b7d9400005555530a7486930b247c4d5468": return kls(scc) except: return None @@ -904,7 +903,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3b9f96801fc78031a073be21136743200718000001a5"): + if scc.get_atr() == "3b9f96801fc78031a073be21136743200718000001a5": return kls(scc) except: return None @@ -1032,7 +1031,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3b9f96801fc78031a073be21136744220610000001a9"): + if scc.get_atr() == "3b9f96801fc78031a073be21136744220610000001a9": return kls(scc) except: return None @@ -1166,7 +1165,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3b9f95801fc38031e073fe21135786810286984418a8"): + if scc.get_atr() == "3b9f95801fc38031e073fe21135786810286984418a8": return kls(scc) except: return None @@ -1215,7 +1214,7 @@ def autodetect(kls, scc): try: # Look for ATR - if scc.get_atr() == toBytes("3b9f95801fc78031e073f62113674d4516004301008f"): + if scc.get_atr() == "3b9f95801fc78031e073f62113674d4516004301008f": return kls(scc) except: return None @@ -1306,17 +1305,17 @@ try: # Try card model #1 atr = "3b9f96801f878031e073fe211b674a4c753034054ba9" - if scc.get_atr() == toBytes(atr): + if scc.get_atr() == atr: return kls(scc)
# Try card model #2 atr = "3b9f96801f878031e073fe211b674a4c7531330251b2" - if scc.get_atr() == toBytes(atr): + if scc.get_atr() == atr: return kls(scc)
# Try card model #3 atr = "3b9f96801f878031e073fe211b674a4c5275310451d5" - if scc.get_atr() == toBytes(atr): + if scc.get_atr() == atr: return kls(scc) except: return None @@ -1555,15 +1554,15 @@ try: # Try card model #1 (9FJ) atr = "3b9f96801f878031e073fe211b674a357530350251cc" - if scc.get_atr() == toBytes(atr): + if scc.get_atr() == atr: return kls(scc) # Try card model #2 (SLM17) atr = "3b9f96801f878031e073fe211b674a357530350265f8" - if scc.get_atr() == toBytes(atr): + if scc.get_atr() == atr: return kls(scc) # Try card model #3 (9FV) atr = "3b9f96801f878031e073fe211b674a357530350259c4" - if scc.get_atr() == toBytes(atr): + if scc.get_atr() == atr: return kls(scc) except: return None @@ -1592,7 +1591,7 @@ def autodetect(cls, scc): try: # Look for ATR - if scc.get_atr() == toBytes('3b9f95801fc78031a073b6a10067cf3215ca9cd70920'): + if scc.get_atr() == '3b9f95801fc78031a073b6a10067cf3215ca9cd70920': return cls(scc) except: return None diff --git a/pySim/runtime.py b/pySim/runtime.py index 3e48f75..ec19cb4 100644 --- a/pySim/runtime.py +++ b/pySim/runtime.py @@ -141,7 +141,7 @@ continue del self.lchan[lchan_nr] self.adm_verified = False - atr = i2h(self.card.reset()) + atr = 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 ...