This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/26085 )
Change subject: sim-rest-server: Add capability to obtain IMSI + ICCID of card
......................................................................
sim-rest-server: Add capability to obtain IMSI + ICCID of card
$ curl http://localhost:8000/sim-info-api/v1/slot/0
{
"imsi": "262011500776110",
"iccid": "89490240001879910128"
}
Change-Id: I9df8854f6a962e7f86f62b2d44ec7696271c58c8
---
M contrib/sim-rest-server.py
1 file changed, 50 insertions(+), 8 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/85/26085/1
diff --git a/contrib/sim-rest-server.py b/contrib/sim-rest-server.py
index 0f77dfe..fb73ef8 100755
--- a/contrib/sim-rest-server.py
+++ b/contrib/sim-rest-server.py
@@ -34,6 +34,23 @@
#print("CMD: %s -> RSP: %s %s" % (cmd, sw, resp))
pass
+def connect_to_card(slot_nr:int):
+ tp = PcscSimLink(slot_nr, apdu_tracer=ApduPrintTracer())
+ tp.connect()
+
+ scc = SimCardCommands(tp)
+ card = UsimCard(scc)
+
+ # this should be part of UsimCard, but FairewavesSIM breaks with that :/
+ scc.cla_byte = "00"
+ scc.sel_ctrl = "0004"
+
+ card.read_aids()
+ card.select_adf_by_aid(adf='usim')
+
+ return tp, scc, card
+
+
@route('/sim-auth-api/v1/slot/<int:slot>')
def auth(request, slot):
"""REST API endpoint for performing authentication against a USIM.
@@ -49,8 +66,7 @@
return "Malformed Request"
try:
- tp = PcscSimLink(slot, apdu_tracer=ApduPrintTracer())
- tp.connect()
+ tp, scc, card = connect_to_card(slot)
except ReaderError:
request.setResponseCode(404)
return "Specified SIM Slot doesn't exist"
@@ -61,13 +77,7 @@
request.setResponseCode(410)
return "No SIM card inserted in slot"
- scc = SimCardCommands(tp)
- card = UsimCard(scc)
- # this should be part of UsimCard, but FairewavesSIM breaks with that :/
- scc.cla_byte = "00"
- scc.sel_ctrl = "0004"
try:
- card.read_aids()
card.select_adf_by_aid(adf='usim')
res, sw = scc.authenticate(rand, autn)
except SwMatchError as e:
@@ -78,6 +88,38 @@
return json.dumps(res, indent=4)
+ at route('/sim-info-api/v1/slot/<int:slot>')
+def info(request, slot):
+ """REST API endpoint for obtaining information about an USIM.
+ Expects empty body in request.
+ Returns a JSON body containing ICCID, IMSI."""
+
+ try:
+ tp, scc, card = connect_to_card(slot)
+ except ReaderError:
+ request.setResponseCode(404)
+ return "Specified SIM Slot doesn't exist"
+ except ProtocolError:
+ request.setResponseCode(500)
+ return "Error"
+ except NoCardError:
+ request.setResponseCode(410)
+ return "No SIM card inserted in slot"
+
+ try:
+ card.select_adf_by_aid(adf='usim')
+ iccid, sw = card.read_iccid()
+ imsi, sw = card.read_imsi()
+ res = {"imsi": imsi, "iccid": iccid }
+ except SwMatchError as e:
+ request.setResponseCode(500)
+ return "Communication Error %s" % e
+
+ tp.disconnect()
+
+ return json.dumps(res, indent=4)
+
+
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument("-H", "--host", help="Host/IP to bind HTTP to", default="localhost")
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/26085
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I9df8854f6a962e7f86f62b2d44ec7696271c58c8
Gerrit-Change-Number: 26085
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20211103/d9e4d9a5/attachment.htm>