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:
Philipp Maier
2021-03-09 21:28:25 +01:00
committed by laforge
parent 786f781a5f
commit 47236500fe

View File

@@ -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