laforge has uploaded this change for review. (
https://gerrit.osmocom.org/c/pysim/+/33692
)
Change subject: pySim/cards: Add type annotations
......................................................................
pySim/cards: Add type annotations
Change-Id: Id5752a64b59097584301c860ebf74d858ed3d240
---
M pySim/cards.py
1 file changed, 22 insertions(+), 11 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/92/33692/1
diff --git a/pySim/cards.py b/pySim/cards.py
index 07966d0..a9f2e59 100644
--- a/pySim/cards.py
+++ b/pySim/cards.py
@@ -24,13 +24,15 @@
from typing import Optional, Dict, Tuple
from pySim.ts_102_221 import EF_DIR, EF_ICCID
+from pySim.transport import LinkBase
import abc
from pySim.utils import *
+from pySim.commands import Path
class CardBase:
"""General base class for some kind of telecommunications
card."""
- def __init__(self, scc):
+ def __init__(self, scc: LinkBase):
self._scc = scc
def reset(self):
@@ -41,12 +43,12 @@
return None
self._aids = []
- def set_apdu_parameter(self, cla, sel_ctrl):
+ def set_apdu_parameter(self, cla: Hexstr, sel_ctrl: Hexstr):
"""Set apdu parameters (class byte and selection control
bytes)"""
self._scc.cla_byte = cla
self._scc.sel_ctrl = sel_ctrl
- def get_apdu_parameter(self):
+ def get_apdu_parameter(self) -> Tuple[Hexstr, Hexstr]:
"""Get apdu parameters (class byte and selection control
bytes)"""
return (self._scc.cla_byte, self._scc.sel_ctrl)
@@ -54,14 +56,14 @@
print("warning: erasing is not supported for specified card type!")
return
- def file_exists(self, fid):
+ def file_exists(self, fid: Path) -> bool:
res_arr = self._scc.try_select_path(fid)
for res in res_arr:
if res[1] != '9000':
return False
return True
- def read_iccid(self):
+ def read_iccid(self) -> Tuple[Optional[Hexstr], SwHexstr]:
ef_iccid = EF_ICCID()
(res, sw) = self._scc.read_binary(ef_iccid.fid)
if sw == '9000':
@@ -80,12 +82,12 @@
class UiccCardBase(SimCardBase):
name = 'UICC'
- def __init__(self, ssc):
+ def __init__(self, ssc: LinkBase):
super(UiccCardBase, self).__init__(ssc)
# See also: ETSI TS 102 221, Table 9.3
self._adm_chv_num = 0xA0
- def read_aids(self):
+ def read_aids(self) -> List[Hexstr]:
"""Fetch all the AIDs present on UICC"""
self._aids = []
try:
@@ -104,7 +106,7 @@
return self._aids
@staticmethod
- def _get_aid(adf="usim") -> str:
+ def _get_aid(adf="usim") -> Hexstr:
aid_map = {}
# First (known) halves of the U/ISIM AID
aid_map["usim"] = "a0000000871002"
@@ -114,7 +116,7 @@
return aid_map[adf]
return None
- def _complete_aid(self, aid) -> str:
+ def _complete_aid(self, aid) -> Hexstr:
"""find the complete version of an ADF.U/ISIM
AID"""
# Find full AID by partial AID:
if is_hex(aid):
@@ -123,7 +125,7 @@
return aid_known
return None
- def adf_present(self, adf="usim") -> bool:
+ def adf_present(self, adf: str = "usim") -> bool:
"""Check if the AID of the specified ADF is present in EF.DIR
(call read_aids before use)"""
aid = self._get_aid(adf)
if aid:
@@ -132,7 +134,7 @@
return True
return False
- def select_adf_by_aid(self, adf="usim"):
+ def select_adf_by_aid(self, adf: str = "usim") ->
Tuple[Optional[Hexstr], Optional[SwHexstr]]:
"""Select ADF.U/ISIM in the Card using its full
AID"""
if is_hex(adf):
aid = adf
--
To view, visit
https://gerrit.osmocom.org/c/pysim/+/33692
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Id5752a64b59097584301c860ebf74d858ed3d240
Gerrit-Change-Number: 33692
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: newchange