<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>2</buildableDurationMillis><buildableTimeMillis>2</buildableTimeMillis><buildingDurationMillis>476076</buildingDurationMillis><executingTimeMillis>476076</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>545</buildNumber><marked><SHA1>8c81e2cdf9bb1f8d831e817379cb0d03347df46b</SHA1><branch><SHA1>8c81e2cdf9bb1f8d831e817379cb0d03347df46b</SHA1><name>origin/master</name></branch></marked><revision><SHA1>8c81e2cdf9bb1f8d831e817379cb0d03347df46b</SHA1><branch><SHA1>8c81e2cdf9bb1f8d831e817379cb0d03347df46b</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>5</buildNumber><marked><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><branch><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><branch><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>253</buildNumber><marked><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><branch><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><branch><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>8c81e2cdf9bb1f8d831e817379cb0d03347df46b</SHA1><branch><SHA1>8c81e2cdf9bb1f8d831e817379cb0d03347df46b</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#545</displayName><duration>476076</duration><estimatedDuration>473668</estimatedDuration><fullDisplayName>simtester-sanitize #545</fullDisplayName><id>545</id><inProgress>false</inProgress><keepLog>false</keepLog><number>545</number><queueId>71269</queueId><result>SUCCESS</result><timestamp>1774485780440</timestamp><url>https://jenkins.osmocom.org/jenkins/job/simtester-sanitize/545/</url><builtOn>simtester</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/ts_51_011.py</affectedPath><commitId>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</commitId><timestamp>1774449296000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim/EF.SMSP: fix encoding of TP-Destination Address

The TP-Destination Address in EF.SMSP uses the same encoding as the
TS-Service Centre Address field. However, even though the encoding
of both fields looks almost identical, it actually isn't.

The TS-Service Centre Address field encodes the length field as
octets required for the call_number + one octet for ton_npi.
(see also: 3GPP TS 24.011, section 8.2.5.2)

The TP-Destination Address uses the number of digits of the
call_number directly in the length field.
(see also: 3GPP TS 23.040, section 9.1.2.5)

Related: SYS#7765
Change-Id: I55c123c9e244e5a6e71a0348f5d476ef03e618e8
</comment><date>2026-03-25 15:34:56 +0100</date><id>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</id><msg>pySim/EF.SMSP: fix encoding of TP-Destination Address</msg><path><editType>edit</editType><file>pySim/ts_51_011.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/global_platform/__init__.py</affectedPath><commitId>c7e68e1281db0fbf0e456e7807e642cb5ee49c3a</commitId><timestamp>1774461930000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</authorEmail><comment>global_platform: install_cap_parser: argument groups cannot be nested

pySim-shell currently does not work on systems with Python 3.14+:

  File ".../pysim/pySim/global_platform/__init__.py", line 868, in AddlShellCommands
    install_cap_parser_inst_prm_g_grp = install_cap_parser_inst_prm_g.add_argument_group()
  File "/usr/lib/python3.14/argparse.py", line 1794, in add_argument_group
    raise ValueError('argument groups cannot be nested')
  ValueError('argument groups cannot be nested')

The problem is that install_cap_parser creates a nested group inside
of mutually exclusive group.  argparse never supported group nesting
properly, so it has been deprecated since Python 3.11, and eventually
got removed in Python 3.14.

Remove group nesting, adjust the usage string, and implement the
mutual exclusiveness enforcement manually in do_install_cap().

Change-Id: Idddf72d5a745345e134b23f2f01e0257d0667579
</comment><date>2026-03-25 18:05:30 +0000</date><id>c7e68e1281db0fbf0e456e7807e642cb5ee49c3a</id><msg>global_platform: install_cap_parser: argument groups cannot be nested</msg><path><editType>edit</editType><file>pySim/global_platform/__init__.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tests/unittests/test_globalplatform.py</affectedPath><affectedPath>pySim/global_platform/install_param.py</affectedPath><commitId>d9d62ee72929fca356fd3e751e2a3284e84475ac</commitId><timestamp>1774461930000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</authorEmail><comment>global_platform: refactor gen_install_parameters()

gen_install_parameters() had contradictory logic: the outer guard
required all three arguments to be non-None/non-empty (making them
mutually inclusive), while the inner checks then treated each one
as optional.

Make each parameter independently optional (defaulting to None) and
remove the all-or-nothing check.  Simplify the function body to a
straightforward single-pass construction of system_specific_params.

Change-Id: I8756fb38016cdf0527fe2e21edb44381d1dc557f
</comment><date>2026-03-25 18:05:30 +0000</date><id>d9d62ee72929fca356fd3e751e2a3284e84475ac</id><msg>global_platform: refactor gen_install_parameters()</msg><path><editType>edit</editType><file>pySim/global_platform/install_param.py</file></path><path><editType>edit</editType><file>tests/unittests/test_globalplatform.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/put_key-tutorial.rst</affectedPath><affectedPath>docs/shell.rst</affectedPath><commitId>8c81e2cdf9bb1f8d831e817379cb0d03347df46b</commitId><timestamp>1774462052000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</authorEmail><comment>docs/put_key: add tutorial that explains how to manage global platform keys

With the increased interest in using GlobalPlatform features of
UICC and eUICCs (OTA-SMS, applets, etc.), also comes an increased
interest in how the related GlobalPlatform keys can be managed
(key rotation, adding/removing keysets from/to a Security Domain).

Unfortunately, many aspects of this topic are not immediately
obvious for the average user. Let's add a tutorial that contains
some practical examples to shine some light on the topic.

Related: SYS#7881
Change-Id: I163dfedca3df572cb8442e9a4a280e6c5b00327e
</comment><date>2026-03-25 18:07:32 +0000</date><id>8c81e2cdf9bb1f8d831e817379cb0d03347df46b</id><msg>docs/put_key: add tutorial that explains how to manage global platform</msg><path><editType>edit</editType><file>docs/shell.rst</file></path><path><editType>add</editType><file>docs/put_key-tutorial.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></culprit></freeStyleBuild>