<p>herlesupreeth has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/pysim/+/17883">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">utils.py: Add helper method to parse ePDG Identifier from hex string<br><br>The hex string consists of contains zero or more ePDG identifier data objects.<br>Each ePDG Identifier TLV data object consists of tag value of '80', length of identifier, address type.<br><br>TS 31.102 version 13.4.0 Release 13. The same parsing method applies for both EF.ePDGId and EF.ePDGIdEm<br><br>Change-Id: I96fb129d178cfd7ec037989526da77899ae8d344<br>---<br>M pySim/utils.py<br>1 file changed, 31 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/83/17883/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pySim/utils.py b/pySim/utils.py</span><br><span>index 51f2954..aeba2c1 100644</span><br><span>--- a/pySim/utils.py</span><br><span>+++ b/pySim/utils.py</span><br><span>@@ -347,3 +347,34 @@</span><br><span>                           avail_srvc.append((8*i) + j)</span><br><span>                         byte = byte >> 1</span><br><span>       return avail_srvc</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def dec_epdgid(hexstr):</span><br><span style="color: hsl(120, 100%, 40%);">+  """</span><br><span style="color: hsl(120, 100%, 40%);">+    Decode ePDG Id to get 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.102 and 4.2.104.</span><br><span style="color: hsl(120, 100%, 40%);">+    """</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  # Convert from hex str to (kind of) 'bytes'</span><br><span style="color: hsl(120, 100%, 40%);">+   epdgid_bytes = h2b(hexstr)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  s = ""</span><br><span style="color: hsl(120, 100%, 40%);">+      l = 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       while l < len(epdgid_bytes):</span><br><span style="color: hsl(120, 100%, 40%);">+               # Tag value of this TLV data object: '80'</span><br><span style="color: hsl(120, 100%, 40%);">+             if ord(epdgid_bytes[l]) != 0x80:</span><br><span style="color: hsl(120, 100%, 40%);">+                      break</span><br><span style="color: hsl(120, 100%, 40%);">+         l += 1</span><br><span style="color: hsl(120, 100%, 40%);">+                # Then, extract length of ePDGId from first byte after tag</span><br><span style="color: hsl(120, 100%, 40%);">+            con_len = ord(epdgid_bytes[l])</span><br><span style="color: hsl(120, 100%, 40%);">+                l += 1</span><br><span style="color: hsl(120, 100%, 40%);">+                # Address Type: 0x00 (FQDN), 0x01 (IPv4), 0x02 (IPv6), other (Reserved)</span><br><span style="color: hsl(120, 100%, 40%);">+               addr_type = ord(epdgid_bytes[l])</span><br><span style="color: hsl(120, 100%, 40%);">+              l += 1</span><br><span style="color: hsl(120, 100%, 40%);">+                # ePDG Identifier</span><br><span style="color: hsl(120, 100%, 40%);">+             # TODO: Support parsing of IPv4 and IPv6</span><br><span style="color: hsl(120, 100%, 40%);">+              if addr_type == 0x00:</span><br><span style="color: hsl(120, 100%, 40%);">+                 content = epdgid_bytes[l:l+con_len]</span><br><span style="color: hsl(120, 100%, 40%);">+                   s = "\t%s # %s\n" % (b2h(content), content)</span><br><span style="color: hsl(120, 100%, 40%);">+         l += con_len</span><br><span style="color: hsl(120, 100%, 40%);">+  return s</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/pysim/+/17883">change 17883</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/+/17883"/><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: I96fb129d178cfd7ec037989526da77899ae8d344 </div>
<div style="display:none"> Gerrit-Change-Number: 17883 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: herlesupreeth <herlesupreeth@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>