laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/40830?usp=email )
Change subject: param_source: use secrets.SystemRandom as secure random nr source
......................................................................
param_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
Jenkins: skip-card-test
---
M pySim/esim/saip/param_source.py
1 file changed, 2 insertions(+), 2 deletions(-)
Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/pySim/esim/saip/param_source.py b/pySim/esim/saip/param_source.py
index d3c98a6..7caf848 100644
--- a/pySim/esim/saip/param_source.py
+++ b/pySim/esim/saip/param_source.py
@@ -17,7 +17,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import random
+import secrets
import re
from osmocom.utils import b2h
@@ -124,7 +124,7 @@
return "%0*d" % (self.num_digits, val) # pylint: disable=consider-using-f-string
class RandomSourceMixin:
- random_impl = random.SystemRandom()
+ random_impl = secrets.SystemRandom()
class RandomDigitSource(DecimalRangeSource, RandomSourceMixin):
"""return a different sequence of random decimal digits each"""
--
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: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I8049cd1292674b3ced82b0926569128535af6efe
Gerrit-Change-Number: 40830
Gerrit-PatchSet: 10
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/41770?usp=email )
(
8 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: saip/param_source: try to not repeat random values
......................................................................
saip/param_source: try to not repeat random values
Change-Id: I4fa743ef5677580f94b9df16a5051d1d178edeb0
Jenkins: skip-card-test
---
M pySim/esim/saip/param_source.py
1 file changed, 18 insertions(+), 3 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/pySim/esim/saip/param_source.py b/pySim/esim/saip/param_source.py
index 7caf848..af00bb7 100644
--- a/pySim/esim/saip/param_source.py
+++ b/pySim/esim/saip/param_source.py
@@ -130,15 +130,23 @@
"""return a different sequence of random decimal digits each"""
name = "random decimal digits"
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.used_keys = set()
+
def get_next(self, csv_row:dict=None):
- val = self.random_impl.randint(self.first_value, self.last_value)
+ # try to generate random digits that are always different from previously produced random digits
+ for _ in range(10):
+ val = self.random_impl.randint(self.first_value, self.last_value)
+ if val not in self.used_keys:
+ break
+ self.used_keys.add(val)
return self.val_to_digit(val)
class RandomHexDigitSource(InputExpandingParamSource, RandomSourceMixin):
"""return a different sequence of random hexadecimal digits each"""
name = "random hexadecimal digits"
numeric_base = 16
-
def __init__(self, input_str:str):
super().__init__(input_str)
input_str = self.input_str
@@ -150,9 +158,16 @@
if (num_digits & 1) != 0:
raise ValueError(f"hexadecimal value should have even number of digits, not {num_digits}")
self.num_digits = num_digits
+ self.used_keys = set()
def get_next(self, csv_row:dict=None):
- val = self.random_impl.randbytes(self.num_digits // 2)
+ # try to generate random bytes that are always different from previously produced random bytes
+ for _ in range(10):
+ val = self.random_impl.randbytes(self.num_digits // 2)
+ if val not in self.used_keys:
+ break
+ self.used_keys.add(val)
+
return b2h(val)
class IncDigitSource(DecimalRangeSource):
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/41770?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I4fa743ef5677580f94b9df16a5051d1d178edeb0
Gerrit-Change-Number: 41770
Gerrit-PatchSet: 9
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/42259?usp=email )
(
6 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: UppAudit: better indicate exception cause
......................................................................
UppAudit: better indicate exception cause
Change-Id: I4d986b89a473a5b12ed56b4710263b034876a33e
Jenkins: skip-card-test
---
M pySim/esim/saip/batch.py
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/pySim/esim/saip/batch.py b/pySim/esim/saip/batch.py
index 1a2b72e..6d3ded1 100644
--- a/pySim/esim/saip/batch.py
+++ b/pySim/esim/saip/batch.py
@@ -170,7 +170,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: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I4d986b89a473a5b12ed56b4710263b034876a33e
Gerrit-Change-Number: 42259
Gerrit-PatchSet: 7
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/42260?usp=email )
(
6 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: ConfigurableParameter: safer val length check
......................................................................
ConfigurableParameter: safer val length check
validate_val() calls len() to check the value against allow_len,
min_len and max_len. len() requires the object to have a __len__()
method, which integers do not — calling len() on an int raises
TypeError.
Fix this by checking for __len__ first: if present, use len(val) as
usual; otherwise fall back to len(str(val)), which gives the number
of decimal digits for integer values.
Change-Id: Ibe91722ed1477b00d20ef5e4e7abd9068ff2f3e4
Jenkins: skip-card-test
---
M pySim/esim/saip/personalization.py
1 file changed, 12 insertions(+), 6 deletions(-)
Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/pySim/esim/saip/personalization.py b/pySim/esim/saip/personalization.py
index a9d8dd8..86c71f5 100644
--- a/pySim/esim/saip/personalization.py
+++ b/pySim/esim/saip/personalization.py
@@ -190,19 +190,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: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ibe91722ed1477b00d20ef5e4e7abd9068ff2f3e4
Gerrit-Change-Number: 42260
Gerrit-PatchSet: 7
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Attention is currently required from: fixeria, neels.
laforge has posted comments on this change by neels. ( https://gerrit.osmocom.org/c/pysim/+/41771?usp=email )
Change subject: personalization: generate sdkey classes from a list
......................................................................
Patch Set 10: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/41771?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ic92ddea6e1fad8167ea75baf78ffc3eb419838c4
Gerrit-Change-Number: 41771
Gerrit-PatchSet: 10
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 22 Jun 2026 08:05:10 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Attention is currently required from: fixeria, neels.
laforge has posted comments on this change by neels. ( https://gerrit.osmocom.org/c/pysim/+/40830?usp=email )
Change subject: param_source: use secrets.SystemRandom as secure random nr source
......................................................................
Patch Set 10: Code-Review+2
--
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: comment
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I8049cd1292674b3ced82b0926569128535af6efe
Gerrit-Change-Number: 40830
Gerrit-PatchSet: 10
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: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 22 Jun 2026 08:04:43 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Attention is currently required from: fixeria, neels.
laforge has posted comments on this change by neels. ( https://gerrit.osmocom.org/c/pysim/+/40829?usp=email )
Change subject: param_source: use random.SystemRandom as random nr source
......................................................................
Patch Set 10: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/40829?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I6de38c14ac6dd55bc84d53974192509c18d02bfa
Gerrit-Change-Number: 40829
Gerrit-PatchSet: 10
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 22 Jun 2026 08:04:23 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes