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
This commit is contained in:
Harald Welte
2025-01-29 12:08:03 +01:00
committed by Philipp Maier
parent d871e4696f
commit 08ba187fd4
6 changed files with 19 additions and 21 deletions

View File

@@ -294,7 +294,7 @@ Online manual available at https://downloads.osmocom.org/docs/pysim/master/html/
if self.rs is None: if self.rs is None:
# In case no runtime state is available we go the direct route # In case no runtime state is available we go the direct route
self.card._scc.reset_card() self.card._scc.reset_card()
atr = b2h(self.card._scc.get_atr()) atr = self.card._scc.get_atr()
else: else:
atr = self.rs.reset(self) atr = self.rs.reset(self)
self.poutput('Card ATR: %s' % atr) self.poutput('Card ATR: %s' % atr)

View File

@@ -1530,8 +1530,7 @@ class CardModel(abc.ABC):
"""Test if given card matches this model.""" """Test if given card matches this model."""
card_atr = scc.get_atr() card_atr = scc.get_atr()
for atr in cls._atrs: for atr in cls._atrs:
atr_bin = toBytes(atr) if atr == card_atr:
if atr_bin == card_atr:
print("Detected CardModel:", cls.__name__) print("Detected CardModel:", cls.__name__)
return True return True
return False return False

View File

@@ -3,7 +3,6 @@
################################################################################ ################################################################################
import abc import abc
from smartcard.util import toBytes
from pytlv.TLV import * from pytlv.TLV import *
from pySim.cards import SimCardBase, UiccCardBase from pySim.cards import SimCardBase, UiccCardBase
@@ -781,7 +780,7 @@ class SysmoSIMgr1(GrcardSim):
def autodetect(kls, scc): def autodetect(kls, scc):
try: try:
# Look for ATR # Look for ATR
if scc.get_atr() == toBytes("3b991800118822334455667760"): if scc.get_atr() == "3b991800118822334455667760":
return kls(scc) return kls(scc)
except: except:
return None return None
@@ -826,7 +825,7 @@ class SysmoSIMgr2(SimCard):
def autodetect(kls, scc): def autodetect(kls, scc):
try: try:
# Look for ATR # Look for ATR
if scc.get_atr() == toBytes("3b7d9400005555530a7486930b247c4d5468"): if scc.get_atr() == "3b7d9400005555530a7486930b247c4d5468":
return kls(scc) return kls(scc)
except: except:
return None return None
@@ -904,7 +903,7 @@ class SysmoUSIMSJS1(UsimCard):
def autodetect(kls, scc): def autodetect(kls, scc):
try: try:
# Look for ATR # Look for ATR
if scc.get_atr() == toBytes("3b9f96801fc78031a073be21136743200718000001a5"): if scc.get_atr() == "3b9f96801fc78031a073be21136743200718000001a5":
return kls(scc) return kls(scc)
except: except:
return None return None
@@ -1032,7 +1031,7 @@ class FairwavesSIM(UsimCard):
def autodetect(kls, scc): def autodetect(kls, scc):
try: try:
# Look for ATR # Look for ATR
if scc.get_atr() == toBytes("3b9f96801fc78031a073be21136744220610000001a9"): if scc.get_atr() == "3b9f96801fc78031a073be21136744220610000001a9":
return kls(scc) return kls(scc)
except: except:
return None return None
@@ -1166,7 +1165,7 @@ class OpenCellsSim(SimCard):
def autodetect(kls, scc): def autodetect(kls, scc):
try: try:
# Look for ATR # Look for ATR
if scc.get_atr() == toBytes("3b9f95801fc38031e073fe21135786810286984418a8"): if scc.get_atr() == "3b9f95801fc38031e073fe21135786810286984418a8":
return kls(scc) return kls(scc)
except: except:
return None return None
@@ -1215,7 +1214,7 @@ class WavemobileSim(UsimCard):
def autodetect(kls, scc): def autodetect(kls, scc):
try: try:
# Look for ATR # Look for ATR
if scc.get_atr() == toBytes("3b9f95801fc78031e073f62113674d4516004301008f"): if scc.get_atr() == "3b9f95801fc78031e073f62113674d4516004301008f":
return kls(scc) return kls(scc)
except: except:
return None return None
@@ -1306,17 +1305,17 @@ class SysmoISIMSJA2(UsimCard, IsimCard):
try: try:
# Try card model #1 # Try card model #1
atr = "3b9f96801f878031e073fe211b674a4c753034054ba9" atr = "3b9f96801f878031e073fe211b674a4c753034054ba9"
if scc.get_atr() == toBytes(atr): if scc.get_atr() == atr:
return kls(scc) return kls(scc)
# Try card model #2 # Try card model #2
atr = "3b9f96801f878031e073fe211b674a4c7531330251b2" atr = "3b9f96801f878031e073fe211b674a4c7531330251b2"
if scc.get_atr() == toBytes(atr): if scc.get_atr() == atr:
return kls(scc) return kls(scc)
# Try card model #3 # Try card model #3
atr = "3b9f96801f878031e073fe211b674a4c5275310451d5" atr = "3b9f96801f878031e073fe211b674a4c5275310451d5"
if scc.get_atr() == toBytes(atr): if scc.get_atr() == atr:
return kls(scc) return kls(scc)
except: except:
return None return None
@@ -1555,15 +1554,15 @@ class SysmoISIMSJA5(SysmoISIMSJA2):
try: try:
# Try card model #1 (9FJ) # Try card model #1 (9FJ)
atr = "3b9f96801f878031e073fe211b674a357530350251cc" atr = "3b9f96801f878031e073fe211b674a357530350251cc"
if scc.get_atr() == toBytes(atr): if scc.get_atr() == atr:
return kls(scc) return kls(scc)
# Try card model #2 (SLM17) # Try card model #2 (SLM17)
atr = "3b9f96801f878031e073fe211b674a357530350265f8" atr = "3b9f96801f878031e073fe211b674a357530350265f8"
if scc.get_atr() == toBytes(atr): if scc.get_atr() == atr:
return kls(scc) return kls(scc)
# Try card model #3 (9FV) # Try card model #3 (9FV)
atr = "3b9f96801f878031e073fe211b674a357530350259c4" atr = "3b9f96801f878031e073fe211b674a357530350259c4"
if scc.get_atr() == toBytes(atr): if scc.get_atr() == atr:
return kls(scc) return kls(scc)
except: except:
return None return None
@@ -1592,7 +1591,7 @@ class GialerSim(UsimCard):
def autodetect(cls, scc): def autodetect(cls, scc):
try: try:
# Look for ATR # Look for ATR
if scc.get_atr() == toBytes('3b9f95801fc78031a073b6a10067cf3215ca9cd70920'): if scc.get_atr() == '3b9f95801fc78031a073b6a10067cf3215ca9cd70920':
return cls(scc) return cls(scc)
except: except:
return None return None

View File

@@ -141,7 +141,7 @@ class RuntimeState:
continue continue
del self.lchan[lchan_nr] del self.lchan[lchan_nr]
self.adm_verified = False self.adm_verified = False
atr = i2h(self.card.reset()) atr = self.card.reset()
if cmd_app: if cmd_app:
cmd_app.lchan = self.lchan[0] cmd_app.lchan = self.lchan[0]
# select MF to reset internal state and to verify card really works # select MF to reset internal state and to verify card really works

View File

@@ -103,7 +103,7 @@ class PcscSimLink(LinkBaseTpdu):
raise NoCardError() from exc raise NoCardError() from exc
def get_atr(self) -> Hexstr: def get_atr(self) -> Hexstr:
return self._con.getATR() return i2h(self._con.getATR())
def disconnect(self): def disconnect(self):
self._con.disconnect() self._con.disconnect()

View File

@@ -21,7 +21,7 @@ import os
import argparse import argparse
from typing import Optional from typing import Optional
import serial 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.exceptions import NoCardError, ProtocolError
from pySim.transport import LinkBaseTpdu from pySim.transport import LinkBaseTpdu
@@ -96,7 +96,7 @@ class SerialSimLink(LinkBaseTpdu):
self.reset_card() self.reset_card()
def get_atr(self) -> Hexstr: def get_atr(self) -> Hexstr:
return self._atr return i2h(self._atr)
def disconnect(self): def disconnect(self):
pass # Nothing to do really ... pass # Nothing to do really ...