Skip to content

Commit

Permalink
pySim-read.py: Enabled reading P-CSCF address from ISIM
Browse files Browse the repository at this point in the history
As per 3GPP TS 31.103 version 14.2.0 Release 14, this EF can found under ADF.ISIM at File Id 6f09.

This EF contains one or more Proxy Call Session Control Function addresses.
The first record in the EF shall be considered to be of the highest priority
If ISIM service n°1 and/or service n°5 is available, this file shall be present.

Change-Id: I7a701212c84d3dc5d4c8ccbcf638c97ceda33654
  • Loading branch information
herlesupreeth committed Jan 5, 2021
1 parent 75c14c0 commit 5ad9aec
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
12 changes: 11 additions & 1 deletion pySim-read.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import sys
from pySim.ts_51_011 import EF, DF, EF_SST_map, EF_AD_mode_map
from pySim.ts_31_102 import EF_UST_map, EF_USIM_ADF_map
from pySim.ts_31_103 import EF_IST_map
from pySim.ts_31_103 import EF_IST_map, EF_ISIM_ADF_map

from pySim.commands import SimCardCommands
from pySim.cards import card_detect, Card
Expand Down Expand Up @@ -294,6 +294,16 @@ def parse_options():
except Exception as e:
print("ePDGSelection: Can't read file -- " + str(e))

# Select ISIM application by its AID
if '9000' == card.select_adf_by_aid(adf="isim"):
#EF.P-CSCF - P-CSCF Address
try:
if card.file_exists(EF_ISIM_ADF_map['PCSCF']):
res = card.read_pcscf()
print("P-CSCF:\n%s" % (len(res) and res or '\tNot available\n',))
except Exception as e:
print("P-CSCF: Can't read file -- " + str(e))

# Check whether we have th AID of ISIM, if so select it by its AID
# EF.IST - File Id in ADF ISIM : 6f07
if '9000' == card.select_adf_by_aid(adf="isim"):
Expand Down
13 changes: 13 additions & 0 deletions pySim/cards.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

from pySim.ts_51_011 import EF, DF
from pySim.ts_31_102 import EF_USIM_ADF_map
from pySim.ts_31_103 import EF_ISIM_ADF_map
from pySim.utils import *
from smartcard.util import toBytes

Expand Down Expand Up @@ -313,6 +314,18 @@ class IsimCard(Card):
def __init__(self, ssc):
super(IsimCard, self).__init__(ssc)

def read_pcscf(self):
rec_cnt = self._scc.record_count(EF_ISIM_ADF_map['PCSCF'])
pcscf_recs = ""
for i in range(0, rec_cnt):
(res, sw) = self._scc.read_record(EF_ISIM_ADF_map['PCSCF'], i + 1)
if sw == '9000':
content = dec_addr_tlv(res)
pcscf_recs += "%s" % (len(content) and content or '\tNot available\n')
else:
pcscf_recs += "\tP-CSCF: Can't read, response code = %s\n" % (sw)
return pcscf_recs


class _MagicSimBase(Card):
"""
Expand Down
10 changes: 10 additions & 0 deletions pysim-testdata/sysmoISIM-SJA2.ok
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,16 @@ ePDGSelection:
ffffffffffff # unused
ffffffffffff # unused

P-CSCF:
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available

ISIM Service Table: 190200
Service 1 - P-CSCF address
Service 4 - GBA-based Local Key Establishment Mechanism
Expand Down

0 comments on commit 5ad9aec

Please sign in to comment.