<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/pysim/+/21852">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Re-purpose helper method to be used for parsing Address TLV Object in general<br><br>The Address TLV object is used in EF.P-CSCF Address, EF.ePDGId and EF.ePDGIdEm.<br>See 3GPP TS 31.102 version 13.4.0 Release 13, section 4.2.8, 4.2.102 and 4.2.104.<br><br>Address TLV Object format<br>Tag (1 Byte) - '80'<br>Length (1 Byte)<br>Address Type (1 Byte) - '00' (FQDN), '01' (IPv4), '02' (IPv6)<br>Address (Address Length Bytes)<br><br>Change-Id: Ifd8a240f6b5c7736e58a8151295c30ec5b32ed5f<br>---<br>M pySim-read.py<br>M pySim/cards.py<br>M pySim/utils.py<br>3 files changed, 14 insertions(+), 13 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pySim-read.py b/pySim-read.py</span><br><span>index 2be34bd..c8b1a5d 100755</span><br><span>--- a/pySim-read.py</span><br><span>+++ b/pySim-read.py</span><br><span>@@ -35,7 +35,7 @@</span><br><span> from pySim.commands import SimCardCommands</span><br><span> from pySim.cards import card_detect, Card</span><br><span> from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid, dec_msisdn</span><br><span style="color: hsl(0, 100%, 40%);">-from pySim.utils import format_xplmn_w_act, dec_spn, dec_st, init_reader, dec_epdgid</span><br><span style="color: hsl(120, 100%, 40%);">+from pySim.utils import format_xplmn_w_act, dec_spn, dec_st, init_reader, dec_addr_tlv</span><br><span> from pySim.utils import h2s, format_ePDGSelection</span><br><span> </span><br><span> def parse_options():</span><br><span>diff --git a/pySim/cards.py b/pySim/cards.py</span><br><span>index 1036717..1662fc5 100644</span><br><span>--- a/pySim/cards.py</span><br><span>+++ b/pySim/cards.py</span><br><span>@@ -267,12 +267,12 @@</span><br><span>   def read_epdgid(self):</span><br><span>               (res, sw) = self._scc.read_binary(EF_USIM_ADF_map['ePDGId'])</span><br><span>                 if sw == '9000':</span><br><span style="color: hsl(0, 100%, 40%);">-                        return (dec_epdgid(res), sw)</span><br><span style="color: hsl(120, 100%, 40%);">+                  return (dec_addr_tlv(res), sw)</span><br><span>               else:</span><br><span>                        return (None, sw)</span><br><span> </span><br><span>        def update_epdgid(self, epdgid):</span><br><span style="color: hsl(0, 100%, 40%);">-                epdgid_tlv = enc_epdgid(epdgid)</span><br><span style="color: hsl(120, 100%, 40%);">+               epdgid_tlv = enc_addr_tlv(epdgid)</span><br><span>            data, sw = self._scc.update_binary(</span><br><span>                                          EF_USIM_ADF_map['ePDGId'], epdgid_tlv)</span><br><span>               return sw</span><br><span>diff --git a/pySim/utils.py b/pySim/utils.py</span><br><span>index cdb2926..38cc580 100644</span><br><span>--- a/pySim/utils.py</span><br><span>+++ b/pySim/utils.py</span><br><span>@@ -500,19 +500,19 @@</span><br><span> </span><br><span>   return s</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-def dec_epdgid(hexstr):</span><br><span style="color: hsl(120, 100%, 40%);">+def dec_addr_tlv(hexstr):</span><br><span>       """</span><br><span style="color: hsl(0, 100%, 40%);">-      Decode ePDG Id to get EF.ePDGId or EF.ePDGIdEm.</span><br><span style="color: hsl(0, 100%, 40%);">- See 3GPP TS 31.102 version 13.4.0 Release 13, section 4.2.102 and 4.2.104.</span><br><span style="color: hsl(120, 100%, 40%);">+    Decode hex string to get EF.P-CSCF Address or EF.ePDGId or EF.ePDGIdEm.</span><br><span style="color: hsl(120, 100%, 40%);">+       See 3GPP TS 31.102 version 13.4.0 Release 13, section 4.2.8, 4.2.102 and 4.2.104.</span><br><span>    """</span><br><span> </span><br><span>       # Convert from hex str to int bytes list</span><br><span style="color: hsl(0, 100%, 40%);">-        epdgid_bytes = h2i(hexstr)</span><br><span style="color: hsl(120, 100%, 40%);">+    addr_tlv_bytes = h2i(hexstr)</span><br><span> </span><br><span>     s = ""</span><br><span> </span><br><span>         # Get list of tuples containing parsed TLVs</span><br><span style="color: hsl(0, 100%, 40%);">-     tlvs = TLV_parser(epdgid_bytes)</span><br><span style="color: hsl(120, 100%, 40%);">+       tlvs = TLV_parser(addr_tlv_bytes)</span><br><span> </span><br><span>        for tlv in tlvs:</span><br><span>             # tlv = (T, L, [V])</span><br><span>@@ -531,6 +531,7 @@</span><br><span>            # First byte in the value has the address type</span><br><span>               addr_type = tlv[2][0]</span><br><span>                # TODO: Support parsing of IPv4 and IPv6</span><br><span style="color: hsl(120, 100%, 40%);">+              # Address Type: 0x00 (FQDN), 0x01 (IPv4), 0x02 (IPv6), other (Reserved)</span><br><span>              if addr_type == 0x00: #FQDN</span><br><span>                  # Skip address tye byte i.e. first byte in value list</span><br><span>                        content = tlv[2][1:]</span><br><span>@@ -538,20 +539,20 @@</span><br><span> </span><br><span>     return s</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-def enc_epdgid(epdg_addr, addr_type='00'):</span><br><span style="color: hsl(120, 100%, 40%);">+def enc_addr_tlv(addr, addr_type='00'):</span><br><span>      """</span><br><span style="color: hsl(0, 100%, 40%);">-      Encode ePDG Id so it can be stored to EF.ePDGId or EF.ePDGIdEm.</span><br><span style="color: hsl(0, 100%, 40%);">- See 3GPP TS 31.102 version 13.4.0 Release 13, section 4.2.102 and 4.2.104.</span><br><span style="color: hsl(120, 100%, 40%);">+    Encode address TLV object used in EF.P-CSCF Address, EF.ePDGId and EF.ePDGIdEm.</span><br><span style="color: hsl(120, 100%, 40%);">+       See 3GPP TS 31.102 version 13.4.0 Release 13, section 4.2.8, 4.2.102 and 4.2.104.</span><br><span> </span><br><span>        Default values:</span><br><span style="color: hsl(0, 100%, 40%);">-   - addr_type: 00 - FQDN format of ePDG Address</span><br><span style="color: hsl(120, 100%, 40%);">+         - addr_type: 00 - FQDN format of Address</span><br><span>   """</span><br><span> </span><br><span>       s = ""</span><br><span> </span><br><span>         # TODO: Encoding of IPv4 and IPv6 address</span><br><span>    if addr_type == '00':</span><br><span style="color: hsl(0, 100%, 40%);">-           hex_str = s2h(epdg_addr)</span><br><span style="color: hsl(120, 100%, 40%);">+              hex_str = s2h(addr)</span><br><span>          s += '80' + ('%02x' % ((len(hex_str)//2)+1)) + '00' + hex_str</span><br><span> </span><br><span>    return s</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/pysim/+/21852">change 21852</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/pysim/+/21852"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: pysim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ifd8a240f6b5c7736e58a8151295c30ec5b32ed5f </div>
<div style="display:none"> Gerrit-Change-Number: 21852 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: herlesupreeth <herlesupreeth@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>