personalization: set example input values

For all ConfigurableParameter subclasses, provide an example_input.

This may be useful for downstream projects' user interaction, to suggest
a value or prefill an input field, as appropriate.

Related: SYS#6768
Change-Id: I2672fedcbc32cb7a6cb0c233a4a22112bd9aae03
This commit is contained in:
Neels Hofmeyr
2025-03-01 03:58:31 +01:00
committed by laforge
parent db17529136
commit ccc1a047ab

View File

@@ -115,6 +115,7 @@ class ConfigurableParameter(abc.ABC, metaclass=ClassVarMeta):
min_len = None min_len = None
max_len = None max_len = None
allow_len = None # a list of specific lengths allow_len = None # a list of specific lengths
example_input = None
def __init__(self, input_value=None): def __init__(self, input_value=None):
self.input_value = input_value # the raw input value as given by caller self.input_value = input_value # the raw input value as given by caller
@@ -306,6 +307,7 @@ class Iccid(DecimalParam):
name = 'ICCID' name = 'ICCID'
min_len = 18 min_len = 18
max_len = 20 max_len = 20
example_input = '998877665544332211'
@classmethod @classmethod
def validate_val(cls, val): def validate_val(cls, val):
@@ -326,6 +328,7 @@ class Imsi(DecimalParam):
name = 'IMSI' name = 'IMSI'
min_len = 6 min_len = 6
max_len = 15 max_len = 15
example_input = '00101' + ('0' * 10)
@classmethod @classmethod
def apply_val(cls, pes: ProfileElementSequence, val): def apply_val(cls, pes: ProfileElementSequence, val):
@@ -497,6 +500,7 @@ class Puk(DecimalHexParam):
allow_len = 8 allow_len = 8
rpad = 16 rpad = 16
keyReference = None keyReference = None
example_input = '0' * allow_len
@classmethod @classmethod
def apply_val(cls, pes: ProfileElementSequence, val): def apply_val(cls, pes: ProfileElementSequence, val):
@@ -523,6 +527,7 @@ class Pin(DecimalHexParam):
rpad = 16 rpad = 16
min_len = 4 min_len = 4
max_len = 8 max_len = 8
example_input = '0' * max_len
keyReference = None keyReference = None
@staticmethod @staticmethod
@@ -546,9 +551,10 @@ class Pin(DecimalHexParam):
class Pin1(Pin): class Pin1(Pin):
name = 'PIN1' name = 'PIN1'
example_input = '0' * 4 # PIN are usually 4 digits
keyReference = 0x01 keyReference = 0x01
class Pin2(Pin): class Pin2(Pin1):
name = 'PIN2' name = 'PIN2'
keyReference = 0x81 keyReference = 0x81
@@ -568,7 +574,7 @@ class Adm1(Pin):
name = 'ADM1' name = 'ADM1'
keyReference = 0x0A keyReference = 0x0A
class Adm2(Pin): class Adm2(Adm1):
name = 'ADM2' name = 'ADM2'
keyReference = 0x0B keyReference = 0x0B
@@ -591,6 +597,7 @@ class AlgoConfig(ConfigurableParameter):
class AlgorithmID(DecimalParam, AlgoConfig): class AlgorithmID(DecimalParam, AlgoConfig):
algo_config_key = 'algorithmID' algo_config_key = 'algorithmID'
allow_len = 1 allow_len = 1
example_input = 1 # Milenage
@classmethod @classmethod
def validate_val(cls, val): def validate_val(cls, val):
@@ -606,6 +613,7 @@ class K(BinaryParam, AlgoConfig):
name = 'K' name = 'K'
algo_config_key = 'key' algo_config_key = 'key'
allow_len = (128 // 8, 256 // 8) # length in bytes (from BinaryParam); TUAK also allows 256 bit allow_len = (128 // 8, 256 // 8) # length in bytes (from BinaryParam); TUAK also allows 256 bit
example_input = '00' * allow_len[0]
class Opc(K): class Opc(K):
name = 'OPc' name = 'OPc'
@@ -618,6 +626,7 @@ class MilenageRotationConstants(BinaryParam, AlgoConfig):
name = 'MilenageRotation' name = 'MilenageRotation'
algo_config_key = 'rotationConstants' algo_config_key = 'rotationConstants'
allow_len = 5 # length in bytes (from BinaryParam) allow_len = 5 # length in bytes (from BinaryParam)
example_input = '0a 0b 0c 0d 0e'
@classmethod @classmethod
def validate_val(cls, val): def validate_val(cls, val):
@@ -641,6 +650,11 @@ class MilenageXoringConstants(BinaryParam, AlgoConfig):
name = 'MilenageXOR' name = 'MilenageXOR'
algo_config_key = 'xoringConstants' algo_config_key = 'xoringConstants'
allow_len = 80 # length in bytes (from BinaryParam) allow_len = 80 # length in bytes (from BinaryParam)
example_input = ('00000000000000000000000000000000'
' 00000000000000000000000000000001'
' 00000000000000000000000000000002'
' 00000000000000000000000000000004'
' 00000000000000000000000000000008')
class TuakNumberOfKeccak(IntegerParam, AlgoConfig): class TuakNumberOfKeccak(IntegerParam, AlgoConfig):
"""Number of iterations of Keccak-f[1600] permutation as recomended by Section 7.2 of 3GPP TS 35.231""" """Number of iterations of Keccak-f[1600] permutation as recomended by Section 7.2 of 3GPP TS 35.231"""
@@ -648,3 +662,4 @@ class TuakNumberOfKeccak(IntegerParam, AlgoConfig):
algo_config_key = 'numberOfKeccak' algo_config_key = 'numberOfKeccak'
min_val = 1 min_val = 1
max_val = 255 max_val = 255
example_input = '1'