From 05cf68a4a4206c7a76f7012dc04498ea506a3850 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Tue, 5 Aug 2025 03:19:30 +0200 Subject: [PATCH] param_source: allow plugging a random implementation (for testing) Change-Id: Idce2b18af70c17844d6f09f7704efc869456ac39 --- pySim/esim/saip/param_source.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pySim/esim/saip/param_source.py b/pySim/esim/saip/param_source.py index bcbe55d5..79424fd1 100644 --- a/pySim/esim/saip/param_source.py +++ b/pySim/esim/saip/param_source.py @@ -123,15 +123,18 @@ class DecimalRangeSource(InputExpandingParamSource): def val_to_digit(self, val:int): return "%0*d" % (self.num_digits, val) # pylint: disable=consider-using-f-string -class RandomDigitSource(DecimalRangeSource): +class RandomSourceMixin: + random_impl = random # TODO secure random source? + +class RandomDigitSource(DecimalRangeSource, RandomSourceMixin): """return a different sequence of random decimal digits each""" name = "random decimal digits" def get_next(self, csv_row:dict=None): - val = random.randint(*self.val_first_last) # TODO secure random source? + val = self.random_impl.randint(*self.val_first_last) return self.val_to_digit(val) -class RandomHexDigitSource(InputExpandingParamSource): +class RandomHexDigitSource(InputExpandingParamSource, RandomSourceMixin): """return a different sequence of random hexadecimal digits each""" name = "random hexadecimal digits" numeric_base = 16 @@ -149,7 +152,7 @@ class RandomHexDigitSource(InputExpandingParamSource): self.num_digits = num_digits def get_next(self, csv_row:dict=None): - val = random.randbytes(self.num_digits // 2) # TODO secure random source? + val = self.random_impl.randbytes(self.num_digits // 2) return b2h(val) class IncDigitSource(DecimalRangeSource):