mirror of
https://gitea.osmocom.org/sim-card/pysim.git
synced 2026-03-17 02:48:34 +03:00
utils: add is_hex function to check hex strings
since we have added pySim-shell.py that has a lot of locations where the user can enter hexadecimal data there is an increased need for input validation. Lets add a central is_hex function that verifies hex strings. Change-Id: Ia29a13c9215357dd2adf141f2ef222c823f8456d Related: OS#4963
This commit is contained in:
@@ -577,6 +577,28 @@ def enc_addr_tlv(addr, addr_type='00'):
|
||||
|
||||
return s
|
||||
|
||||
def is_hex(string, minlen=2, maxlen=None) -> bool:
|
||||
"""
|
||||
Check if a string is a valid hexstring
|
||||
"""
|
||||
|
||||
# Filter obviously bad strings
|
||||
if not string:
|
||||
return False
|
||||
if len(string) < minlen or minlen < 2:
|
||||
return False
|
||||
if len(string) % 2:
|
||||
return False
|
||||
if maxlen and len(string) > maxlen:
|
||||
return False
|
||||
|
||||
# Try actual encoding to be sure
|
||||
try:
|
||||
try_encode = h2b(string)
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
def sanitize_pin_adm(pin_adm, pin_adm_hex = None):
|
||||
"""
|
||||
The ADM pin can be supplied either in its hexadecimal form or as
|
||||
|
||||
Reference in New Issue
Block a user