<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/pysim/+/18207">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pysim-prog: move ADM sanitation to utils.py<br><br>The lower part of gen_parameters() in pySim-prog.py contains some code<br>that checks whether the ADM pin supplied in its hexadecimal or in its<br>string form and generates a sanitised pin_adm from that. Lets separate<br>this part as it may become useful elsewhere too.<br><br>Change-Id: Ifead29724cc13a91de9e2e89314d7fb23c063d50<br>---<br>M pySim-prog.py<br>M pySim/utils.py<br>2 files changed, 31 insertions(+), 21 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/07/18207/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pySim-prog.py b/pySim-prog.py</span><br><span>index e3045a6..8bc474a 100755</span><br><span>--- a/pySim-prog.py</span><br><span>+++ b/pySim-prog.py</span><br><span>@@ -405,27 +405,7 @@</span><br><span> else:</span><br><span> opc = ''.join(['%02x' % random.randrange(0,256) for i in range(16)])</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- pin_adm = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if opts.pin_adm is not None:</span><br><span style="color: hsl(0, 100%, 40%);">- if len(opts.pin_adm) <= 8:</span><br><span style="color: hsl(0, 100%, 40%);">- pin_adm = ''.join(['%02x'%(ord(x)) for x in opts.pin_adm])</span><br><span style="color: hsl(0, 100%, 40%);">- pin_adm = rpad(pin_adm, 16)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- else:</span><br><span style="color: hsl(0, 100%, 40%);">- raise ValueError("PIN-ADM needs to be <=8 digits (ascii)")</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if opts.pin_adm_hex is not None:</span><br><span style="color: hsl(0, 100%, 40%);">- if len(opts.pin_adm_hex) == 16:</span><br><span style="color: hsl(0, 100%, 40%);">- pin_adm = opts.pin_adm_hex</span><br><span style="color: hsl(0, 100%, 40%);">- # Ensure that it's hex-encoded</span><br><span style="color: hsl(0, 100%, 40%);">- try:</span><br><span style="color: hsl(0, 100%, 40%);">- try_encode = h2b(pin_adm)</span><br><span style="color: hsl(0, 100%, 40%);">- except ValueError:</span><br><span style="color: hsl(0, 100%, 40%);">- raise ValueError("PIN-ADM needs to be hex encoded using this option")</span><br><span style="color: hsl(0, 100%, 40%);">- else:</span><br><span style="color: hsl(0, 100%, 40%);">- raise ValueError("PIN-ADM needs to be exactly 16 digits (hex encoded)")</span><br><span style="color: hsl(120, 100%, 40%);">+ pin_adm = sanitize_pin_adm(opts)</span><br><span> </span><br><span> # Return that</span><br><span> return {</span><br><span>diff --git a/pySim/utils.py b/pySim/utils.py</span><br><span>index 1980685..aab5d02 100644</span><br><span>--- a/pySim/utils.py</span><br><span>+++ b/pySim/utils.py</span><br><span>@@ -359,3 +359,33 @@</span><br><span> avail_st += '\tService %d - %s\n' % ((8*i) + j, lookup_map[(8*i) + j])</span><br><span> byte = byte >> 1</span><br><span> return avail_st</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%);">+def sanitize_pin_adm(opts):</span><br><span style="color: hsl(120, 100%, 40%);">+ """The ADM pin can be supplied either in its hexadecimal form or as</span><br><span style="color: hsl(120, 100%, 40%);">+ ascii string. This function checks the supplied opts parameter and</span><br><span style="color: hsl(120, 100%, 40%);">+ returns the pin_adm as hex encoded string, regardles in which form</span><br><span style="color: hsl(120, 100%, 40%);">+ it was originally supplied by the user"""</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ pin_adm = None</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if opts.pin_adm is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+ if len(opts.pin_adm) <= 8:</span><br><span style="color: hsl(120, 100%, 40%);">+ pin_adm = ''.join(['%02x'%(ord(x)) for x in opts.pin_adm])</span><br><span style="color: hsl(120, 100%, 40%);">+ pin_adm = rpad(pin_adm, 16)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ else:</span><br><span style="color: hsl(120, 100%, 40%);">+ raise ValueError("PIN-ADM needs to be <=8 digits (ascii)")</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if opts.pin_adm_hex is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+ if len(opts.pin_adm_hex) == 16:</span><br><span style="color: hsl(120, 100%, 40%);">+ pin_adm = opts.pin_adm_hex</span><br><span style="color: hsl(120, 100%, 40%);">+ # Ensure that it's hex-encoded</span><br><span style="color: hsl(120, 100%, 40%);">+ try:</span><br><span style="color: hsl(120, 100%, 40%);">+ try_encode = h2b(pin_adm)</span><br><span style="color: hsl(120, 100%, 40%);">+ except ValueError:</span><br><span style="color: hsl(120, 100%, 40%);">+ raise ValueError("PIN-ADM needs to be hex encoded using this option")</span><br><span style="color: hsl(120, 100%, 40%);">+ else:</span><br><span style="color: hsl(120, 100%, 40%);">+ raise ValueError("PIN-ADM needs to be exactly 16 digits (hex encoded)")</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return pin_adm</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/pysim/+/18207">change 18207</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/+/18207"/><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: Ifead29724cc13a91de9e2e89314d7fb23c063d50 </div>
<div style="display:none"> Gerrit-Change-Number: 18207 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>