neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/42268?usp=email )
Change subject: saip: add numeric_base indicator to ConfigurableParameter and ParamSource
......................................................................
saip: add numeric_base indicator to ConfigurableParameter and ParamSource
By default, numeric_base = None, to indicate that there are no explicit
limitations on the number space.
For parameters that are definitely decimal, set numeric_base = 10.
For definitely hexadecimal, set numeric_base = 16.
Do the same for ConfigurableParameter as well as ParamSource, so callers
can match them up: if a parameter is numeric_base = 10, then omit
sources that are numeric_base = 16, and vice versa.
Change-Id: Ib0977bbdd9a85167be7eb46dd331fedd529dae01
---
M pySim/esim/saip/param_source.py
M pySim/esim/saip/personalization.py
2 files changed, 10 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/68/42268/1
diff --git a/pySim/esim/saip/param_source.py b/pySim/esim/saip/param_source.py
index c460375..366d6dd 100644
--- a/pySim/esim/saip/param_source.py
+++ b/pySim/esim/saip/param_source.py
@@ -35,6 +35,7 @@
# This name should be short but descriptive, useful for a user interface, like 'random decimal digits'.
name = "none"
+ numeric_base = None # or 10 or 16
@classmethod
def from_str(cls, s:str):
@@ -85,6 +86,8 @@
class DecimalRangeSource(InputExpandingParamSource):
"""abstract: decimal numbers with a value range"""
+ numeric_base = 10
+
def __init__(self, num_digits, first_value, last_value):
"""
See also from_str().
@@ -144,6 +147,7 @@
class RandomHexDigitSource(InputExpandingParamSource, RandomSourceMixin):
"""return a different sequence of random hexadecimal digits each"""
name = "random hexadecimal digits"
+ numeric_base = 16
used_keys = set()
def __init__(self, num_digits):
diff --git a/pySim/esim/saip/personalization.py b/pySim/esim/saip/personalization.py
index 327dbe6..b783177 100644
--- a/pySim/esim/saip/personalization.py
+++ b/pySim/esim/saip/personalization.py
@@ -72,6 +72,7 @@
min_len: minimum length of an input str; min_len = 4
max_len: maximum length of an input str; max_len = 8
allow_len: permit only specific lengths; allow_len = (8, 16, 32)
+ numeric_base: indicate hex / decimal, if any; numeric_base = None; numeric_base = 10; numeric_base = 16
Subclasses may change the meaning of these by overriding validate_val(), for example that the length counts
resulting bytes instead of a hexstring length. Most subclasses will be covered by the default validate_val().
@@ -127,6 +128,7 @@
allow_len = None # a list of specific lengths
example_input = None
default_source = None # a param_source.ParamSource subclass
+ numeric_base = None # or 10 or 16
def __init__(self, input_value=None):
self.input_value = input_value # the raw input value as given by caller
@@ -302,6 +304,7 @@
"""
allow_types = (str, int)
allow_chars = '0123456789'
+ numeric_base = 10
@classmethod
def validate_val(cls, val):
@@ -346,6 +349,7 @@
class IntegerParam(ConfigurableParameter):
allow_types = (str, int)
allow_chars = '0123456789'
+ numeric_base = 10
# two integers, if the resulting int should be range limited
min_val = None
@@ -378,6 +382,7 @@
allow_types = (str, io.BytesIO, bytes, bytearray, int)
allow_chars = '0123456789abcdefABCDEF'
strip_chars = ' \t\r\n'
+ numeric_base = 16
default_source = param_source.RandomHexDigitSource
@classmethod
@@ -549,6 +554,7 @@
name = 'SMSP-TP-SC-ADDR'
allow_chars = '+0123456789'
strip_chars = ' \t\r\n'
+ numeric_base = 10
max_len = 21 # '+' and 20 digits
min_len = 1
example_input = '+49301234567'
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42268?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ib0977bbdd9a85167be7eb46dd331fedd529dae01
Gerrit-Change-Number: 42268
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Attention is currently required from: laforge, neels.
Hello Jenkins Builder, laforge,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/pysim/+/40209?usp=email
to look at the new patch set (#8).
The following approvals got outdated and were removed:
Verified-1 by Jenkins Builder
Change subject: personalization audit: optionally audit all (unknown) SD keys
......................................................................
personalization audit: optionally audit all (unknown) SD keys
By a flag, allow to audit also all Security Domain KVN that we have
*not* created ConfigurableParameter subclasses for.
For example, SCP80 has reserved kvn 0x01..0x0f, but we offer only
Scp80Kvn01, Scp80Kvn02, Scp80Kvn03. So we would not show kvn
0x03..0x0f in an audit.
This patch includes audits of all SD key kvn there may be in the UPP.
This will help to spot SD keys that may already be present in a UPP
template, with unexpected / unusual kvn.
Change-Id: Icaf6f7b589f117868633c0968a99f2f0252cf612
---
M pySim/esim/saip/batch.py
1 file changed, 27 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/09/40209/8
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/40209?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newpatchset
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Icaf6f7b589f117868633c0968a99f2f0252cf612
Gerrit-Change-Number: 40209
Gerrit-PatchSet: 8
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Attention is currently required from: neels.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/pysim/+/40830?usp=email
to look at the new patch set (#5).
The following approvals got outdated and were removed:
Verified-1 by Jenkins Builder
Change subject: use secrets.SystemRandom as secure random nr source
......................................................................
use secrets.SystemRandom as secure random nr source
secrets.SystemRandom is defined as the most secure random source
available on the given operating system.
Change-Id: I8049cd1292674b3ced82b0926569128535af6efe
---
M pySim/esim/saip/param_source.py
1 file changed, 2 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/30/40830/5
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/40830?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newpatchset
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I8049cd1292674b3ced82b0926569128535af6efe
Gerrit-Change-Number: 40830
Gerrit-PatchSet: 5
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Attention is currently required from: neels.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/pysim/+/41919?usp=email
to look at the new patch set (#2).
The following approvals got outdated and were removed:
Verified-1 by Jenkins Builder
Change subject: transitional name mapping
......................................................................
transitional name mapping
To help existing applications transition to a common naming scheme for
the SdKey classes, offer this intermediate result, where the SdKey
classes' .name are still unchanged as before generating them.
Change-Id: I974cb6c393a2ed2248a6240c2722d157e9235c33
---
M pySim/esim/saip/personalization.py
1 file changed, 26 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/19/41919/2
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/41919?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newpatchset
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I974cb6c393a2ed2248a6240c2722d157e9235c33
Gerrit-Change-Number: 41919
Gerrit-PatchSet: 2
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/42259?usp=email )
Change subject: UppAudit: better indicate exception cause
......................................................................
UppAudit: better indicate exception cause
Change-Id: I4d986b89a473a5b12ed56b4710263b034876a33e
---
M pySim/esim/saip/batch.py
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/59/42259/1
diff --git a/pySim/esim/saip/batch.py b/pySim/esim/saip/batch.py
index 48e2d05..5b17e59 100644
--- a/pySim/esim/saip/batch.py
+++ b/pySim/esim/saip/batch.py
@@ -164,7 +164,7 @@
try:
for valdict in param.get_values_from_pes(pes):
upp_audit.add_values(valdict)
- except (TypeError, ValueError) as e:
+ except Exception as e:
raise ValueError(f'Error during audit for parameter {param}: {e}') from e
if not additional_sd_keys:
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42259?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I4d986b89a473a5b12ed56b4710263b034876a33e
Gerrit-Change-Number: 42259
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/42260?usp=email )
Change subject: ConfigurableParameter: safer val length check
......................................................................
ConfigurableParameter: safer val length check
Change-Id: Ibe91722ed1477b00d20ef5e4e7abd9068ff2f3e4
---
M pySim/esim/saip/personalization.py
1 file changed, 12 insertions(+), 6 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/60/42260/1
diff --git a/pySim/esim/saip/personalization.py b/pySim/esim/saip/personalization.py
index b28d88e..7d24453 100644
--- a/pySim/esim/saip/personalization.py
+++ b/pySim/esim/saip/personalization.py
@@ -191,19 +191,25 @@
elif isinstance(val, io.BytesIO):
val = val.getvalue()
+ if hasattr(val, '__len__'):
+ val_len = len(val)
+ else:
+ # e.g. int length
+ val_len = len(str(val))
+
if cls.allow_len is not None:
l = cls.allow_len
# cls.allow_len could be one int, or a tuple of ints. Wrap a single int also in a tuple.
if not isinstance(l, (tuple, list)):
l = (l,)
- if len(val) not in l:
- raise ValueError(f'length must be one of {cls.allow_len}, not {len(val)}: {val!r}')
+ if val_len not in l:
+ raise ValueError(f'length must be one of {cls.allow_len}, not {val_len}: {val!r}')
if cls.min_len is not None:
- if len(val) < cls.min_len:
- raise ValueError(f'length must be at least {cls.min_len}, not {len(val)}: {val!r}')
+ if val_len < cls.min_len:
+ raise ValueError(f'length must be at least {cls.min_len}, not {val_len}: {val!r}')
if cls.max_len is not None:
- if len(val) > cls.max_len:
- raise ValueError(f'length must be at most {cls.max_len}, not {len(val)}: {val!r}')
+ if val_len > cls.max_len:
+ raise ValueError(f'length must be at most {cls.max_len}, not {val_len}: {val!r}')
return val
@classmethod
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42260?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ibe91722ed1477b00d20ef5e4e7abd9068ff2f3e4
Gerrit-Change-Number: 42260
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>