laforge submitted this change.

View Change

Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve laforge: Looks good to me, approved
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(-)

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 ...

To view, visit change 39293. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I01b247dad40ec986cf199302f8e92d16848bd499
Gerrit-Change-Number: 39293
Gerrit-PatchSet: 5
Gerrit-Owner: laforge <laforge@osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-CC: dexter <pmaier@sysmocom.de>