lists.osmocom.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2026
August
July
June
May
April
March
February
January
2025
December
November
October
September
August
July
June
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
List overview
Download
gerrit-log
August 2026
----- 2026 -----
August 2026
July 2026
June 2026
May 2026
April 2026
March 2026
February 2026
January 2026
----- 2025 -----
December 2025
November 2025
October 2025
September 2025
August 2025
July 2025
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
gerrit-log@lists.osmocom.org
1 participants
1495 discussions
Start a n
N
ew thread
[L] Change in onomondo-ipa[master]: V1.2: Add function ES10b.ExecuteFallbackMechanism
by laforge
06 Aug '26
06 Aug '26
Attention is currently required from: dexter, jolly. laforge has posted comments on this change by jolly. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43041?usp=email
) Change subject: V1.2: Add function ES10b.ExecuteFallbackMechanism ...................................................................... Patch Set 3: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43041?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: Ia751f0888c36f39ddfadf7f8bb923a8ee50178dc Gerrit-Change-Number: 43041 Gerrit-PatchSet: 3 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: jolly <andreas(a)eversberg.eu> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Wed, 05 Aug 2026 16:12:38 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1
0
0
0
[S] Change in onomondo-ipa[master]: V1.2: Add size constraint to EimConfigurationData.eimId
by laforge
06 Aug '26
06 Aug '26
laforge has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43028?usp=email
) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: V1.2: Add size constraint to EimConfigurationData.eimId ...................................................................... V1.2: Add size constraint to EimConfigurationData.eimId The size constraint has no impact on the existing code, because it only reads string data from structure. Reference: SGP.32 Section 2.11.1.1.1 Related: SYS#8101 Change-Id: Iafe940876763215a28b9f9067eda090f25ad836c --- M asn1/SGP32Definitions.asn M src/ipa/libasn/EimConfigurationData.c 2 files changed, 42 insertions(+), 2 deletions(-) Approvals: Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index dc09a83..a9d18b4 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -46,7 +46,7 @@ -- Section 2.11.1.1.1 -- ASN1START EimConfigurationData ::= SEQUENCE { - eimId [0] UTF8String, -- eimId of eIM + eimId [0] UTF8String (SIZE(1..128)), -- eimId of eIM eimFqdn [1] UTF8String OPTIONAL, -- FQDN of eIM eimIdType [2] EimIdType OPTIONAL, counterValue [3] INTEGER OPTIONAL, -- initial counterValue for the eIM diff --git a/src/ipa/libasn/EimConfigurationData.c b/src/ipa/libasn/EimConfigurationData.c index d01e003..2ca5ed5 100644 --- a/src/ipa/libasn/EimConfigurationData.c +++ b/src/ipa/libasn/EimConfigurationData.c @@ -7,6 +7,38 @@ #include "EimConfigurationData.h" +static int +memb_eimId_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const UTF8String_t *st = (const UTF8String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = UTF8String_length(st); + if((ssize_t)size < 0) { + ASN__CTFAIL(app_key, td, sptr, + "%s: UTF-8: broken encoding (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((size >= 1 && size <= 128)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + static asn_oer_constraints_t asn_OER_type_eimPublicKeyData_constr_7 CC_NOTUSED = { { 0, 0 }, -1}; @@ -23,6 +55,14 @@ { APC_UNCONSTRAINED, -1, -1, 0, 0 }, 0, 0 /* No PER value map */ }; +static asn_oer_constraints_t asn_OER_memb_eimId_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +static asn_per_constraints_t asn_PER_memb_eimId_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; static asn_TYPE_member_t asn_MBR_eimPublicKeyData_7[] = { { ATF_NOFLAGS, 0, offsetof(struct EimConfigurationData__eimPublicKeyData, choice.eimPublicKey), (ASN_TAG_CLASS_CONTEXT | (0 << 2)), @@ -127,7 +167,7 @@ -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, 0, - { 0, 0, 0 }, + { &asn_OER_memb_eimId_constr_2, &asn_PER_memb_eimId_constr_2, memb_eimId_constraint_1 }, 0, 0, /* No default value */ "eimId" }, -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43028?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: Iafe940876763215a28b9f9067eda090f25ad836c Gerrit-Change-Number: 43028 Gerrit-PatchSet: 2 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[M] Change in onomondo-ipa[master]: V1.2: Add EimConfigurationData.indirectProfileDownload
by laforge
06 Aug '26
06 Aug '26
laforge has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43029?usp=email
) Change subject: V1.2: Add EimConfigurationData.indirectProfileDownload ...................................................................... V1.2: Add EimConfigurationData.indirectProfileDownload The flag indicates, if eIM supports indirect download. As the current version of IPA only supports indirect download, this flag is checked. If it is not supported, profile download is rejected. get_euicc_ci_pkid() is renamed to get_euicc_ci_pkid_ipd(), to indicate that it also gets this flag. This also requires an update of contrib/sample_eim_cfg.ber, which is a BER encoded EimConfigurationData. Reference: SGP.32 Section 2.11.1.1.1 Related: SYS#8101 Change-Id: Ic40111531e6f35d5ea7f3789de6cae0f1c0d5ba7 --- M asn1/SGP32Definitions.asn M contrib/sample_eim_cfg.ber M src/ipa/libasn/EimConfigurationData.c M src/ipa/libasn/EimConfigurationData.h M src/ipa/libipa/proc_eim_pkg_retr.c 5 files changed, 42 insertions(+), 18 deletions(-) Approvals: dexter: Looks good to me, approved Jenkins Builder: Verified diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index a9d18b4..3b91400 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -60,7 +60,8 @@ trustedCertificateTls Certificate -- either the certificate of eIM, used for (D)TLS, or the certificate of the CA, where the encoding follows X.509 standard } OPTIONAL, eimSupportedProtocol [7] EimSupportedProtocol OPTIONAL, - euiccCiPKId [8] SubjectKeyIdentifier OPTIONAL -- CI Public Key Identifier supported on the eUICC for signature creation + euiccCiPKId [8] SubjectKeyIdentifier OPTIONAL, -- CI Public Key Identifier supported on the eUICC for signature creation + indirectProfileDownload[9] NULL OPTIONAL -- support of Indirect Profile download with indicated EimSupportedProtocol } EimIdType ::= INTEGER { eimIdTypeOid(1), diff --git a/contrib/sample_eim_cfg.ber b/contrib/sample_eim_cfg.ber index ba48514..0c0d00f 100644 --- a/contrib/sample_eim_cfg.ber +++ b/contrib/sample_eim_cfg.ber Binary files differ diff --git a/src/ipa/libasn/EimConfigurationData.c b/src/ipa/libasn/EimConfigurationData.c index 2ca5ed5..90bb101 100644 --- a/src/ipa/libasn/EimConfigurationData.c +++ b/src/ipa/libasn/EimConfigurationData.c @@ -171,7 +171,7 @@ 0, 0, /* No default value */ "eimId" }, - { ATF_POINTER, 8, offsetof(struct EimConfigurationData, eimFqdn), + { ATF_POINTER, 9, offsetof(struct EimConfigurationData, eimFqdn), (ASN_TAG_CLASS_CONTEXT | (1 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, @@ -180,7 +180,7 @@ 0, 0, /* No default value */ "eimFqdn" }, - { ATF_POINTER, 7, offsetof(struct EimConfigurationData, eimIdType), + { ATF_POINTER, 8, offsetof(struct EimConfigurationData, eimIdType), (ASN_TAG_CLASS_CONTEXT | (2 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_EimIdType, @@ -189,7 +189,7 @@ 0, 0, /* No default value */ "eimIdType" }, - { ATF_POINTER, 6, offsetof(struct EimConfigurationData, counterValue), + { ATF_POINTER, 7, offsetof(struct EimConfigurationData, counterValue), (ASN_TAG_CLASS_CONTEXT | (3 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_NativeInteger, @@ -198,7 +198,7 @@ 0, 0, /* No default value */ "counterValue" }, - { ATF_POINTER, 5, offsetof(struct EimConfigurationData, associationToken), + { ATF_POINTER, 6, offsetof(struct EimConfigurationData, associationToken), (ASN_TAG_CLASS_CONTEXT | (4 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_NativeInteger, @@ -207,7 +207,7 @@ 0, 0, /* No default value */ "associationToken" }, - { ATF_POINTER, 4, offsetof(struct EimConfigurationData, eimPublicKeyData), + { ATF_POINTER, 5, offsetof(struct EimConfigurationData, eimPublicKeyData), (ASN_TAG_CLASS_CONTEXT | (5 << 2)), +1, /* EXPLICIT tag at current level */ &asn_DEF_eimPublicKeyData_7, @@ -216,7 +216,7 @@ 0, 0, /* No default value */ "eimPublicKeyData" }, - { ATF_POINTER, 3, offsetof(struct EimConfigurationData, trustedPublicKeyDataTls), + { ATF_POINTER, 4, offsetof(struct EimConfigurationData, trustedPublicKeyDataTls), (ASN_TAG_CLASS_CONTEXT | (6 << 2)), +1, /* EXPLICIT tag at current level */ &asn_DEF_trustedPublicKeyDataTls_11, @@ -225,7 +225,7 @@ 0, 0, /* No default value */ "trustedPublicKeyDataTls" }, - { ATF_POINTER, 2, offsetof(struct EimConfigurationData, eimSupportedProtocol), + { ATF_POINTER, 3, offsetof(struct EimConfigurationData, eimSupportedProtocol), (ASN_TAG_CLASS_CONTEXT | (7 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_EimSupportedProtocol, @@ -234,7 +234,7 @@ 0, 0, /* No default value */ "eimSupportedProtocol" }, - { ATF_POINTER, 1, offsetof(struct EimConfigurationData, euiccCiPKId), + { ATF_POINTER, 2, offsetof(struct EimConfigurationData, euiccCiPKId), (ASN_TAG_CLASS_CONTEXT | (8 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_SubjectKeyIdentifier, @@ -243,8 +243,17 @@ 0, 0, /* No default value */ "euiccCiPKId" }, + { ATF_POINTER, 1, offsetof(struct EimConfigurationData, indirectProfileDownload), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "indirectProfileDownload" + }, }; -static const int asn_MAP_EimConfigurationData_oms_1[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; +static const int asn_MAP_EimConfigurationData_oms_1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; static const ber_tlv_tag_t asn_DEF_EimConfigurationData_tags_1[] = { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) }; @@ -257,16 +266,17 @@ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* eimPublicKeyData */ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* trustedPublicKeyDataTls */ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* eimSupportedProtocol */ - { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* euiccCiPKId */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* euiccCiPKId */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* indirectProfileDownload */ }; asn_SEQUENCE_specifics_t asn_SPC_EimConfigurationData_specs_1 = { sizeof(struct EimConfigurationData), offsetof(struct EimConfigurationData, _asn_ctx), asn_MAP_EimConfigurationData_tag2el_1, - 9, /* Count of tags in the map */ + 10, /* Count of tags in the map */ asn_MAP_EimConfigurationData_oms_1, /* Optional members */ - 8, 0, /* Root/Additions */ - 9, /* First extension addition */ + 9, 0, /* Root/Additions */ + 10, /* First extension addition */ }; asn_TYPE_descriptor_t asn_DEF_EimConfigurationData = { "EimConfigurationData", @@ -280,7 +290,7 @@ /sizeof(asn_DEF_EimConfigurationData_tags_1[0]), /* 1 */ { 0, 0, SEQUENCE_constraint }, asn_MBR_EimConfigurationData_1, - 9, /* Elements count */ + 10, /* Elements count */ &asn_SPC_EimConfigurationData_specs_1 /* Additional specs */ }; diff --git a/src/ipa/libasn/EimConfigurationData.h b/src/ipa/libasn/EimConfigurationData.h index a5ffc79..73f7218 100644 --- a/src/ipa/libasn/EimConfigurationData.h +++ b/src/ipa/libasn/EimConfigurationData.h @@ -17,6 +17,7 @@ #include <NativeInteger.h> #include "EimSupportedProtocol.h" #include "SubjectKeyIdentifier.h" +#include <NULL.h> #include "SubjectPublicKeyInfo.h" #include "Certificate.h" #include <constr_CHOICE.h> @@ -79,6 +80,7 @@ } *trustedPublicKeyDataTls; EimSupportedProtocol_t *eimSupportedProtocol /* OPTIONAL */; SubjectKeyIdentifier_t *euiccCiPKId /* OPTIONAL */; + NULL_t *indirectProfileDownload /* OPTIONAL */; /* * This type is extensible, * possible extensions are below. @@ -91,7 +93,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_EimConfigurationData; extern asn_SEQUENCE_specifics_t asn_SPC_EimConfigurationData_specs_1; -extern asn_TYPE_member_t asn_MBR_EimConfigurationData_1[9]; +extern asn_TYPE_member_t asn_MBR_EimConfigurationData_1[10]; #ifdef __cplusplus } diff --git a/src/ipa/libipa/proc_eim_pkg_retr.c b/src/ipa/libipa/proc_eim_pkg_retr.c index 3fe289c..6795cad 100644 --- a/src/ipa/libipa/proc_eim_pkg_retr.c +++ b/src/ipa/libipa/proc_eim_pkg_retr.c @@ -28,7 +28,7 @@ #include "proc_euicc_data_req.h" #include "proc_eim_pkg_retr.h" -static int get_euicc_ci_pkid(struct ipa_context *ctx, struct ipa_buf **pkid) +static int get_euicc_ci_pkid_ipd(struct ipa_context *ctx, struct ipa_buf **pkid, bool *idp) { struct ipa_es10b_eim_cfg_data *eim_cfg_data = NULL; struct EimConfigurationData *eim_cfg_data_item = NULL; @@ -50,6 +50,9 @@ if (eim_cfg_data_item->euiccCiPKId) *pkid = IPA_BUF_FROM_ASN(eim_cfg_data_item->euiccCiPKId); + if (eim_cfg_data_item->indirectProfileDownload) + *idp = true; + ipa_es10b_get_eim_cfg_data_free(eim_cfg_data); return 0; error: @@ -62,6 +65,7 @@ int eim_pkg_exec(struct ipa_context *ctx, const struct ipa_esipa_get_eim_pkg_res *get_eim_pkg_res) { struct ipa_buf *allowed_ca_pkid = NULL; + bool indirect_profile_download = false; int rc; if (get_eim_pkg_res->euicc_package_request) { @@ -107,12 +111,19 @@ goto error; } - rc = get_euicc_ci_pkid(ctx, &allowed_ca_pkid); + rc = get_euicc_ci_pkid_ipd(ctx, &allowed_ca_pkid, &indirect_profile_download); if (rc < 0) { rc = -EINVAL; goto error; } + if (!indirect_profile_download) { + IPA_LOGP(SIPA, LERROR, + "Indirect profile download is not supported by eIM and this IPAd does not support direct profile download, -- cannot continue!\n"); + rc = -ENOTSUP; + goto error; + } + indirect_prfle_dwnlod_pars.allowed_ca = allowed_ca_pkid; indirect_prfle_dwnlod_pars.tac = ctx->cfg->tac; indirect_prfle_dwnlod_pars.ac = -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43029?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: Ic40111531e6f35d5ea7f3789de6cae0f1c0d5ba7 Gerrit-Change-Number: 43029 Gerrit-PatchSet: 3 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[L] Change in onomondo-ipa[master]: V1.2: EuiccResultData.setFallbackAttribute / unsetFallbackAttribute
by laforge
06 Aug '26
06 Aug '26
laforge has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43030?usp=email
) Change subject: V1.2: EuiccResultData.setFallbackAttribute / unsetFallbackAttribute ...................................................................... V1.2: EuiccResultData.setFallbackAttribute / unsetFallbackAttribute Add setFallbackAttribute and unsetFallbackAttribute to EuiccResultData. The IoT eUICC emulation just acknowledges the operation with a log message and does nothing. A non IoT eUICC does not support fallback. Reference: SGP.32 Section 2.11.1.1.3 Related: SYS#8101 Change-Id: I59fba32cb12de22f71b3238adcbab5fc7f66e991 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/CMakeLists.txt M src/ipa/libasn/EuiccResultData.c M src/ipa/libasn/EuiccResultData.h M src/ipa/libasn/Psmo.c M src/ipa/libasn/Psmo.h A src/ipa/libasn/SetFallbackAttributeResult.c A src/ipa/libasn/SetFallbackAttributeResult.h A src/ipa/libasn/UnsetFallbackAttributeResult.c A src/ipa/libasn/UnsetFallbackAttributeResult.h M src/ipa/libipa/es10b_load_euicc_pkg.c 11 files changed, 377 insertions(+), 17 deletions(-) Approvals: Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index 3b91400..c37ac17 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -102,7 +102,9 @@ immediateEnableFlag [0] NULL OPTIONAL, smdpOid [1] OBJECT IDENTIFIER OPTIONAL, smdpAddress [2] UTF8String OPTIONAL - } + }, + setFallbackAttribute [8] SEQUENCE {iccid [APPLICATION 26] Iccid}, + unsetFallbackAttribute [9] SEQUENCE {} } -- ASN1STOP @@ -172,6 +174,8 @@ updateEimResult [10] UpdateEimResult, listEimResult [11] ListEimResult, rollbackResult [12] RollbackProfileResult, + setFallbackAttributeResult [13] SetFallbackAttributeResult, + unsetFallbackAttributeResult [14] UnsetFallbackAttributeResult, processingTerminated INTEGER { resultSizeOverflow(1), unknownOrDamagedCommand(2), @@ -231,6 +235,20 @@ ok(0), undefinedError(127) } +SetFallbackAttributeResult ::= INTEGER { + ok(0), + iccidOrAidNotFound (1), + fallbackNotAllowed (2), + fallbackProfileEnabled (3), + undefinedError (127) +} +UnsetFallbackAttributeResult ::= INTEGER { + ok(0), + noFallbackAttribute(2), + fallbackProfileEnabled (3), + commandError(7), + undefinedError (127) +} AddEimResult ::= CHOICE { associationToken [4] INTEGER, addEimResultCode INTEGER { diff --git a/src/ipa/libasn/CMakeLists.txt b/src/ipa/libasn/CMakeLists.txt index 90d7b42..68338fb 100644 --- a/src/ipa/libasn/CMakeLists.txt +++ b/src/ipa/libasn/CMakeLists.txt @@ -786,6 +786,8 @@ SetDefaultDpAddressRequest.h SetDefaultDpAddressResponse.c SetDefaultDpAddressResponse.h +SetFallbackAttributeResult.c +SetFallbackAttributeResult.h SetNicknameRequest.c SetNicknameRequest.h SetNicknameResponse.c @@ -892,6 +894,8 @@ UniquePostalName.h UniversalString.c UniversalString.h +UnsetFallbackAttributeResult.c +UnsetFallbackAttributeResult.h UpdateEimResult.c UpdateEimResult.h UpdateMetadataRequest.c diff --git a/src/ipa/libasn/EuiccResultData.c b/src/ipa/libasn/EuiccResultData.c index 08f4119..15fc272 100644 --- a/src/ipa/libasn/EuiccResultData.c +++ b/src/ipa/libasn/EuiccResultData.c @@ -11,7 +11,7 @@ { 0, 0 }, -1}; asn_per_constraints_t asn_PER_type_EuiccResultData_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 11 } /* (0..11,...) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 13 } /* (0..13,...) */, { APC_UNCONSTRAINED, -1, -1, 0, 0 }, 0, 0 /* No PER value map */ }; @@ -115,6 +115,24 @@ 0, 0, /* No default value */ "rollbackResult" }, + { ATF_NOFLAGS, 0, offsetof(struct EuiccResultData, choice.setFallbackAttributeResult), + (ASN_TAG_CLASS_CONTEXT | (13 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SetFallbackAttributeResult, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "setFallbackAttributeResult" + }, + { ATF_NOFLAGS, 0, offsetof(struct EuiccResultData, choice.unsetFallbackAttributeResult), + (ASN_TAG_CLASS_CONTEXT | (14 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UnsetFallbackAttributeResult, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unsetFallbackAttributeResult" + }, { ATF_NOFLAGS, 0, offsetof(struct EuiccResultData, choice.processingTerminated), (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, @@ -125,10 +143,10 @@ "processingTerminated" }, }; -static const unsigned asn_MAP_EuiccResultData_to_canonical_1[] = { 11, 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 3 }; -static const unsigned asn_MAP_EuiccResultData_from_canonical_1[] = { 1, 2, 3, 11, 4, 5, 6, 7, 8, 9, 10, 0 }; +static const unsigned asn_MAP_EuiccResultData_to_canonical_1[] = { 13, 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3 }; +static const unsigned asn_MAP_EuiccResultData_from_canonical_1[] = { 1, 2, 3, 13, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0 }; static const asn_TYPE_tag2member_t asn_MAP_EuiccResultData_tag2el_1[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 11, 0, 0 }, /* processingTerminated */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 13, 0, 0 }, /* processingTerminated */ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* enableResult */ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* disableResult */ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 }, /* deleteResult */ @@ -139,6 +157,8 @@ { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 8, 0, 0 }, /* updateEimResult */ { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 9, 0, 0 }, /* listEimResult */ { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 10, 0, 0 }, /* rollbackResult */ + { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 11, 0, 0 }, /* setFallbackAttributeResult */ + { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 12, 0, 0 }, /* unsetFallbackAttributeResult */ { (ASN_TAG_CLASS_CONTEXT | (45 << 2)), 3, 0, 0 } /* listProfileInfoResult */ }; asn_CHOICE_specifics_t asn_SPC_EuiccResultData_specs_1 = { @@ -147,10 +167,10 @@ offsetof(struct EuiccResultData, present), sizeof(((struct EuiccResultData *)0)->present), asn_MAP_EuiccResultData_tag2el_1, - 12, /* Count of tags in the map */ + 14, /* Count of tags in the map */ asn_MAP_EuiccResultData_to_canonical_1, asn_MAP_EuiccResultData_from_canonical_1, - 12 /* Extensions start */ + 14 /* Extensions start */ }; asn_TYPE_descriptor_t asn_DEF_EuiccResultData = { "EuiccResultData", @@ -162,7 +182,7 @@ 0, /* No tags (count) */ { &asn_OER_type_EuiccResultData_constr_1, &asn_PER_type_EuiccResultData_constr_1, CHOICE_constraint }, asn_MBR_EuiccResultData_1, - 12, /* Elements count */ + 14, /* Elements count */ &asn_SPC_EuiccResultData_specs_1 /* Additional specs */ }; diff --git a/src/ipa/libasn/EuiccResultData.h b/src/ipa/libasn/EuiccResultData.h index 82ee724..79197a6 100644 --- a/src/ipa/libasn/EuiccResultData.h +++ b/src/ipa/libasn/EuiccResultData.h @@ -23,6 +23,8 @@ #include "UpdateEimResult.h" #include "ListEimResult.h" #include "RollbackProfileResult.h" +#include "SetFallbackAttributeResult.h" +#include "UnsetFallbackAttributeResult.h" #include <NativeInteger.h> #include <constr_CHOICE.h> @@ -44,6 +46,8 @@ EuiccResultData_PR_updateEimResult, EuiccResultData_PR_listEimResult, EuiccResultData_PR_rollbackResult, + EuiccResultData_PR_setFallbackAttributeResult, + EuiccResultData_PR_unsetFallbackAttributeResult, EuiccResultData_PR_processingTerminated /* Extensions may appear below */ @@ -70,6 +74,8 @@ UpdateEimResult_t updateEimResult; ListEimResult_t listEimResult; RollbackProfileResult_t rollbackResult; + SetFallbackAttributeResult_t setFallbackAttributeResult; + UnsetFallbackAttributeResult_t unsetFallbackAttributeResult; long processingTerminated; /* * This type is extensible, @@ -84,7 +90,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_EuiccResultData; extern asn_CHOICE_specifics_t asn_SPC_EuiccResultData_specs_1; -extern asn_TYPE_member_t asn_MBR_EuiccResultData_1[12]; +extern asn_TYPE_member_t asn_MBR_EuiccResultData_1[14]; extern asn_per_constraints_t asn_PER_type_EuiccResultData_constr_1; #ifdef __cplusplus diff --git a/src/ipa/libasn/Psmo.c b/src/ipa/libasn/Psmo.c index 6b8d207..144a95a 100644 --- a/src/ipa/libasn/Psmo.c +++ b/src/ipa/libasn/Psmo.c @@ -11,7 +11,7 @@ { 0, 0 }, -1}; asn_per_constraints_t asn_PER_type_Psmo_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, { APC_UNCONSTRAINED, -1, -1, 0, 0 }, 0, 0 /* No PER value map */ }; @@ -249,6 +249,77 @@ &asn_SPC_configureImmediateEnable_specs_15 /* Additional specs */ }; +static asn_TYPE_member_t asn_MBR_setFallbackAttribute_20[] = { + { ATF_NOFLAGS, 0, offsetof(struct Psmo__setFallbackAttribute, iccid), + (ASN_TAG_CLASS_APPLICATION | (26 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Iccid, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iccid" + }, +}; +static const ber_tlv_tag_t asn_DEF_setFallbackAttribute_tags_20[] = { + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_setFallbackAttribute_tag2el_20[] = { + { (ASN_TAG_CLASS_APPLICATION | (26 << 2)), 0, 0, 0 } /* iccid */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_setFallbackAttribute_specs_20 = { + sizeof(struct Psmo__setFallbackAttribute), + offsetof(struct Psmo__setFallbackAttribute, _asn_ctx), + asn_MAP_setFallbackAttribute_tag2el_20, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_setFallbackAttribute_20 = { + "setFallbackAttribute", + "setFallbackAttribute", + &asn_OP_SEQUENCE, + asn_DEF_setFallbackAttribute_tags_20, + sizeof(asn_DEF_setFallbackAttribute_tags_20) + /sizeof(asn_DEF_setFallbackAttribute_tags_20[0]) - 1, /* 1 */ + asn_DEF_setFallbackAttribute_tags_20, /* Same as above */ + sizeof(asn_DEF_setFallbackAttribute_tags_20) + /sizeof(asn_DEF_setFallbackAttribute_tags_20[0]), /* 2 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_setFallbackAttribute_20, + 1, /* Elements count */ + &asn_SPC_setFallbackAttribute_specs_20 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_unsetFallbackAttribute_tags_23[] = { + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SEQUENCE_specifics_t asn_SPC_unsetFallbackAttribute_specs_23 = { + sizeof(struct Psmo__unsetFallbackAttribute), + offsetof(struct Psmo__unsetFallbackAttribute, _asn_ctx), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_unsetFallbackAttribute_23 = { + "unsetFallbackAttribute", + "unsetFallbackAttribute", + &asn_OP_SEQUENCE, + asn_DEF_unsetFallbackAttribute_tags_23, + sizeof(asn_DEF_unsetFallbackAttribute_tags_23) + /sizeof(asn_DEF_unsetFallbackAttribute_tags_23[0]) - 1, /* 1 */ + asn_DEF_unsetFallbackAttribute_tags_23, /* Same as above */ + sizeof(asn_DEF_unsetFallbackAttribute_tags_23) + /sizeof(asn_DEF_unsetFallbackAttribute_tags_23[0]), /* 2 */ + { 0, 0, SEQUENCE_constraint }, + 0, 0, /* No members */ + &asn_SPC_unsetFallbackAttribute_specs_23 /* Additional specs */ +}; + asn_TYPE_member_t asn_MBR_Psmo_1[] = { { ATF_NOFLAGS, 0, offsetof(struct Psmo, choice.enable), (ASN_TAG_CLASS_CONTEXT | (3 << 2)), @@ -304,15 +375,35 @@ 0, 0, /* No default value */ "configureImmediateEnable" }, + { ATF_NOFLAGS, 0, offsetof(struct Psmo, choice.setFallbackAttribute), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + 0, + &asn_DEF_setFallbackAttribute_20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "setFallbackAttribute" + }, + { ATF_NOFLAGS, 0, offsetof(struct Psmo, choice.unsetFallbackAttribute), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + 0, + &asn_DEF_unsetFallbackAttribute_23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unsetFallbackAttribute" + }, }; -static const unsigned asn_MAP_Psmo_to_canonical_1[] = { 0, 1, 2, 4, 5, 3 }; -static const unsigned asn_MAP_Psmo_from_canonical_1[] = { 0, 1, 2, 5, 3, 4 }; +static const unsigned asn_MAP_Psmo_to_canonical_1[] = { 0, 1, 2, 4, 5, 6, 7, 3 }; +static const unsigned asn_MAP_Psmo_from_canonical_1[] = { 0, 1, 2, 7, 3, 4, 5, 6 }; static const asn_TYPE_tag2member_t asn_MAP_Psmo_tag2el_1[] = { { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* enable */ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* disable */ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 }, /* delete */ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 4, 0, 0 }, /* getRAT */ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 5, 0, 0 }, /* configureImmediateEnable */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 6, 0, 0 }, /* setFallbackAttribute */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 7, 0, 0 }, /* unsetFallbackAttribute */ { (ASN_TAG_CLASS_CONTEXT | (45 << 2)), 3, 0, 0 } /* listProfileInfo */ }; asn_CHOICE_specifics_t asn_SPC_Psmo_specs_1 = { @@ -321,10 +412,10 @@ offsetof(struct Psmo, present), sizeof(((struct Psmo *)0)->present), asn_MAP_Psmo_tag2el_1, - 6, /* Count of tags in the map */ + 8, /* Count of tags in the map */ asn_MAP_Psmo_to_canonical_1, asn_MAP_Psmo_from_canonical_1, - 6 /* Extensions start */ + 8 /* Extensions start */ }; asn_TYPE_descriptor_t asn_DEF_Psmo = { "Psmo", @@ -336,7 +427,7 @@ 0, /* No tags (count) */ { &asn_OER_type_Psmo_constr_1, &asn_PER_type_Psmo_constr_1, CHOICE_constraint }, asn_MBR_Psmo_1, - 6, /* Elements count */ + 8, /* Elements count */ &asn_SPC_Psmo_specs_1 /* Additional specs */ }; diff --git a/src/ipa/libasn/Psmo.h b/src/ipa/libasn/Psmo.h index 9e9c22f..c5e3e10 100644 --- a/src/ipa/libasn/Psmo.h +++ b/src/ipa/libasn/Psmo.h @@ -32,7 +32,9 @@ Psmo_PR_delete, Psmo_PR_listProfileInfo, Psmo_PR_getRAT, - Psmo_PR_configureImmediateEnable + Psmo_PR_configureImmediateEnable, + Psmo_PR_setFallbackAttribute, + Psmo_PR_unsetFallbackAttribute /* Extensions may appear below */ } Psmo_PR; @@ -94,6 +96,25 @@ /* Context for parsing across buffer boundaries */ asn_struct_ctx_t _asn_ctx; } configureImmediateEnable; + struct Psmo__setFallbackAttribute { + Iccid_t iccid; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } setFallbackAttribute; + struct Psmo__unsetFallbackAttribute { + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } unsetFallbackAttribute; /* * This type is extensible, * possible extensions are below. @@ -107,7 +128,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_Psmo; extern asn_CHOICE_specifics_t asn_SPC_Psmo_specs_1; -extern asn_TYPE_member_t asn_MBR_Psmo_1[6]; +extern asn_TYPE_member_t asn_MBR_Psmo_1[8]; extern asn_per_constraints_t asn_PER_type_Psmo_constr_1; #ifdef __cplusplus diff --git a/src/ipa/libasn/SetFallbackAttributeResult.c b/src/ipa/libasn/SetFallbackAttributeResult.c new file mode 100644 index 0000000..8996ca7 --- /dev/null +++ b/src/ipa/libasn/SetFallbackAttributeResult.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "SetFallbackAttributeResult.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_SetFallbackAttributeResult_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SetFallbackAttributeResult = { + "SetFallbackAttributeResult", + "SetFallbackAttributeResult", + &asn_OP_NativeInteger, + asn_DEF_SetFallbackAttributeResult_tags_1, + sizeof(asn_DEF_SetFallbackAttributeResult_tags_1) + /sizeof(asn_DEF_SetFallbackAttributeResult_tags_1[0]), /* 1 */ + asn_DEF_SetFallbackAttributeResult_tags_1, /* Same as above */ + sizeof(asn_DEF_SetFallbackAttributeResult_tags_1) + /sizeof(asn_DEF_SetFallbackAttributeResult_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/src/ipa/libasn/SetFallbackAttributeResult.h b/src/ipa/libasn/SetFallbackAttributeResult.h new file mode 100644 index 0000000..a8b708e --- /dev/null +++ b/src/ipa/libasn/SetFallbackAttributeResult.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _SetFallbackAttributeResult_H_ +#define _SetFallbackAttributeResult_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SetFallbackAttributeResult { + SetFallbackAttributeResult_ok = 0, + SetFallbackAttributeResult_iccidOrAidNotFound = 1, + SetFallbackAttributeResult_fallbackNotAllowed = 2, + SetFallbackAttributeResult_fallbackProfileEnabled = 3, + SetFallbackAttributeResult_undefinedError = 127 +} e_SetFallbackAttributeResult; + +/* SetFallbackAttributeResult */ +typedef long SetFallbackAttributeResult_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SetFallbackAttributeResult; +asn_struct_free_f SetFallbackAttributeResult_free; +asn_struct_print_f SetFallbackAttributeResult_print; +asn_constr_check_f SetFallbackAttributeResult_constraint; +ber_type_decoder_f SetFallbackAttributeResult_decode_ber; +der_type_encoder_f SetFallbackAttributeResult_encode_der; +xer_type_decoder_f SetFallbackAttributeResult_decode_xer; +xer_type_encoder_f SetFallbackAttributeResult_encode_xer; +oer_type_decoder_f SetFallbackAttributeResult_decode_oer; +oer_type_encoder_f SetFallbackAttributeResult_encode_oer; +per_type_decoder_f SetFallbackAttributeResult_decode_uper; +per_type_encoder_f SetFallbackAttributeResult_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SetFallbackAttributeResult_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libasn/UnsetFallbackAttributeResult.c b/src/ipa/libasn/UnsetFallbackAttributeResult.c new file mode 100644 index 0000000..910a723 --- /dev/null +++ b/src/ipa/libasn/UnsetFallbackAttributeResult.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "UnsetFallbackAttributeResult.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_UnsetFallbackAttributeResult_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UnsetFallbackAttributeResult = { + "UnsetFallbackAttributeResult", + "UnsetFallbackAttributeResult", + &asn_OP_NativeInteger, + asn_DEF_UnsetFallbackAttributeResult_tags_1, + sizeof(asn_DEF_UnsetFallbackAttributeResult_tags_1) + /sizeof(asn_DEF_UnsetFallbackAttributeResult_tags_1[0]), /* 1 */ + asn_DEF_UnsetFallbackAttributeResult_tags_1, /* Same as above */ + sizeof(asn_DEF_UnsetFallbackAttributeResult_tags_1) + /sizeof(asn_DEF_UnsetFallbackAttributeResult_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/src/ipa/libasn/UnsetFallbackAttributeResult.h b/src/ipa/libasn/UnsetFallbackAttributeResult.h new file mode 100644 index 0000000..6aede02 --- /dev/null +++ b/src/ipa/libasn/UnsetFallbackAttributeResult.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _UnsetFallbackAttributeResult_H_ +#define _UnsetFallbackAttributeResult_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UnsetFallbackAttributeResult { + UnsetFallbackAttributeResult_ok = 0, + UnsetFallbackAttributeResult_noFallbackAttribute = 2, + UnsetFallbackAttributeResult_fallbackProfileEnabled = 3, + UnsetFallbackAttributeResult_commandError = 7, + UnsetFallbackAttributeResult_undefinedError = 127 +} e_UnsetFallbackAttributeResult; + +/* UnsetFallbackAttributeResult */ +typedef long UnsetFallbackAttributeResult_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UnsetFallbackAttributeResult; +asn_struct_free_f UnsetFallbackAttributeResult_free; +asn_struct_print_f UnsetFallbackAttributeResult_print; +asn_constr_check_f UnsetFallbackAttributeResult_constraint; +ber_type_decoder_f UnsetFallbackAttributeResult_decode_ber; +der_type_encoder_f UnsetFallbackAttributeResult_encode_der; +xer_type_decoder_f UnsetFallbackAttributeResult_decode_xer; +xer_type_encoder_f UnsetFallbackAttributeResult_encode_xer; +oer_type_decoder_f UnsetFallbackAttributeResult_decode_oer; +oer_type_encoder_f UnsetFallbackAttributeResult_encode_oer; +per_type_decoder_f UnsetFallbackAttributeResult_decode_uper; +per_type_encoder_f UnsetFallbackAttributeResult_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UnsetFallbackAttributeResult_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libipa/es10b_load_euicc_pkg.c b/src/ipa/libipa/es10b_load_euicc_pkg.c index 03ac65a..cf17513 100644 --- a/src/ipa/libipa/es10b_load_euicc_pkg.c +++ b/src/ipa/libipa/es10b_load_euicc_pkg.c @@ -264,6 +264,34 @@ return euicc_result_data; } +struct EuiccResultData *iot_emo_do_setFallbackAttribute_psmo(struct ipa_context *ctx, + const struct Psmo__setFallbackAttribute *setFallbackAttribute_psmo) +{ + struct EuiccResultData *euicc_result_data = IPA_ALLOC_ZERO(struct EuiccResultData); + + IPA_LOGP_ES10X("LoadEuiccPackage", LINFO, + "IoT eUICC emulation active, setFallbackAttribute not supported by eUICC!\n"); + + euicc_result_data->present = EuiccResultData_PR_processingTerminated; + euicc_result_data->choice.processingTerminated = EuiccResultData__processingTerminated_unknownOrDamagedCommand; + + return euicc_result_data; +} + +struct EuiccResultData *iot_emo_do_unsetFallbackAttribute_psmo(struct ipa_context *ctx, + const struct Psmo__unsetFallbackAttribute *unsetFallbackAttribute_psmo) +{ + struct EuiccResultData *euicc_result_data = IPA_ALLOC_ZERO(struct EuiccResultData); + + IPA_LOGP_ES10X("LoadEuiccPackage", LINFO, + "IoT eUICC emulation active, unsetFallbackAttribute not supported by eUICC!\n"); + + euicc_result_data->present = EuiccResultData_PR_unsetFallbackAttributeResult; + euicc_result_data->choice.setFallbackAttributeResult = UnsetFallbackAttributeResult_noFallbackAttribute; + + return euicc_result_data; +} + struct EuiccResultData *iot_emo_do_addEim_eco(struct ipa_context *ctx, const struct EimConfigurationData *addEim_eco) { struct EuiccResultData *euicc_result_data = IPA_ALLOC_ZERO(struct EuiccResultData); @@ -598,6 +626,12 @@ psmo_result = iot_emo_do_configureImmediateEnable_psmo(ctx, &psmo->choice.configureImmediateEnable); break; + case Psmo_PR_setFallbackAttribute: + psmo_result = iot_emo_do_setFallbackAttribute_psmo(ctx, &psmo->choice.setFallbackAttribute); + break; + case Psmo_PR_unsetFallbackAttribute: + psmo_result = iot_emo_do_unsetFallbackAttribute_psmo(ctx, &psmo->choice.unsetFallbackAttribute); + break; default: IPA_LOGP_ES10X("LoadEuiccPackage", LERROR, "ignoring invalid or unsupported PSMO!\n"); break; -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43030?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: I59fba32cb12de22f71b3238adcbab5fc7f66e991 Gerrit-Change-Number: 43030 Gerrit-PatchSet: 3 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[L] Change in onomondo-ipa[master]: V1.2: Add setDefaultDpAddress function
by laforge
06 Aug '26
06 Aug '26
laforge has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43031?usp=email
) Change subject: V1.2: Add setDefaultDpAddress function ...................................................................... V1.2: Add setDefaultDpAddress function Add setDefaultDpAddress to EuiccResultData. Implement the SGP.32 function SetDefaultDpAddress and handle the setDefaultDpAddress PSMO. The IoT eUICC emulation uses the non-IoT eUICC SGP.22 function SetDefaultDpAddress. Reference: SGP.32 Section 2.11.1.1.3 Related: SYS#8101 Change-Id: I514b03240289469142e6a41a7290a4afce199318 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/CMakeLists.txt M src/ipa/libasn/EuiccResultData.c M src/ipa/libasn/EuiccResultData.h M src/ipa/libasn/Psmo.c M src/ipa/libasn/Psmo.h A src/ipa/libasn/SGP32-SetDefaultDpAddressRequest.c A src/ipa/libasn/SGP32-SetDefaultDpAddressRequest.h A src/ipa/libasn/SGP32-SetDefaultDpAddressResponse.c A src/ipa/libasn/SGP32-SetDefaultDpAddressResponse.h M src/ipa/libipa/CMakeLists.txt M src/ipa/libipa/es10b_load_euicc_pkg.c A src/ipa/libipa/es10c_set_def_dp_addr.c A src/ipa/libipa/es10c_set_def_dp_addr.h 14 files changed, 383 insertions(+), 20 deletions(-) Approvals: Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index c37ac17..233f40c 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -104,7 +104,8 @@ smdpAddress [2] UTF8String OPTIONAL }, setFallbackAttribute [8] SEQUENCE {iccid [APPLICATION 26] Iccid}, - unsetFallbackAttribute [9] SEQUENCE {} + unsetFallbackAttribute [9] SEQUENCE {}, + setDefaultDpAddress [101] SGP32-SetDefaultDpAddressRequest -- Tag 'BF65' } -- ASN1STOP @@ -181,7 +182,8 @@ unknownOrDamagedCommand(2), interruption(3), undefinedError(127) - } + }, + setDefaultDpAddressResult [101] SGP32-SetDefaultDpAddressResponse } EuiccPackageErrorSigned ::= SEQUENCE { euiccPackageErrorDataSigned EuiccPackageErrorDataSigned, @@ -542,6 +544,16 @@ } -- ASN1STOP +-- Section 5.9.25 +-- ASN1START +SGP32-SetDefaultDpAddressRequest ::= [101] SEQUENCE { -- Tag 'BF65' + defaultDpAddress UTF8String -- Default SM-DP+ address as an FQDN +} +SGP32-SetDefaultDpAddressResponse ::= [101] SEQUENCE { -- Tag 'BF65' + setDefaultDpAddressResult INTEGER { ok (0), undefinedError (127)} +} +-- ASN1STOP + -- Section 5.14.2 -- ASN1START SGP32-PrepareDownloadResponse ::= [33] CHOICE { -- Tag 'BF21' diff --git a/src/ipa/libasn/CMakeLists.txt b/src/ipa/libasn/CMakeLists.txt index 68338fb..bd8ed73 100644 --- a/src/ipa/libasn/CMakeLists.txt +++ b/src/ipa/libasn/CMakeLists.txt @@ -818,6 +818,10 @@ SGP32-RetrieveNotificationsListRequest.h SGP32-RetrieveNotificationsListResponse.c SGP32-RetrieveNotificationsListResponse.h +SGP32-SetDefaultDpAddressRequest.c +SGP32-SetDefaultDpAddressRequest.h +SGP32-SetDefaultDpAddressResponse.c +SGP32-SetDefaultDpAddressResponse.h SkipCerts.c SkipCerts.h SmdpSigned2.c diff --git a/src/ipa/libasn/EuiccResultData.c b/src/ipa/libasn/EuiccResultData.c index 15fc272..e01dc14 100644 --- a/src/ipa/libasn/EuiccResultData.c +++ b/src/ipa/libasn/EuiccResultData.c @@ -11,7 +11,7 @@ { 0, 0 }, -1}; asn_per_constraints_t asn_PER_type_EuiccResultData_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 13 } /* (0..13,...) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 14 } /* (0..14,...) */, { APC_UNCONSTRAINED, -1, -1, 0, 0 }, 0, 0 /* No PER value map */ }; @@ -142,9 +142,18 @@ 0, 0, /* No default value */ "processingTerminated" }, + { ATF_NOFLAGS, 0, offsetof(struct EuiccResultData, choice.setDefaultDpAddressResult), + (ASN_TAG_CLASS_CONTEXT | (101 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SGP32_SetDefaultDpAddressResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "setDefaultDpAddressResult" + }, }; -static const unsigned asn_MAP_EuiccResultData_to_canonical_1[] = { 13, 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3 }; -static const unsigned asn_MAP_EuiccResultData_from_canonical_1[] = { 1, 2, 3, 13, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0 }; +static const unsigned asn_MAP_EuiccResultData_to_canonical_1[] = { 13, 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, 14 }; +static const unsigned asn_MAP_EuiccResultData_from_canonical_1[] = { 1, 2, 3, 13, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 14 }; static const asn_TYPE_tag2member_t asn_MAP_EuiccResultData_tag2el_1[] = { { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 13, 0, 0 }, /* processingTerminated */ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* enableResult */ @@ -159,7 +168,8 @@ { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 10, 0, 0 }, /* rollbackResult */ { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 11, 0, 0 }, /* setFallbackAttributeResult */ { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 12, 0, 0 }, /* unsetFallbackAttributeResult */ - { (ASN_TAG_CLASS_CONTEXT | (45 << 2)), 3, 0, 0 } /* listProfileInfoResult */ + { (ASN_TAG_CLASS_CONTEXT | (45 << 2)), 3, 0, 0 }, /* listProfileInfoResult */ + { (ASN_TAG_CLASS_CONTEXT | (101 << 2)), 14, 0, 0 } /* setDefaultDpAddressResult */ }; asn_CHOICE_specifics_t asn_SPC_EuiccResultData_specs_1 = { sizeof(struct EuiccResultData), @@ -167,10 +177,10 @@ offsetof(struct EuiccResultData, present), sizeof(((struct EuiccResultData *)0)->present), asn_MAP_EuiccResultData_tag2el_1, - 14, /* Count of tags in the map */ + 15, /* Count of tags in the map */ asn_MAP_EuiccResultData_to_canonical_1, asn_MAP_EuiccResultData_from_canonical_1, - 14 /* Extensions start */ + 15 /* Extensions start */ }; asn_TYPE_descriptor_t asn_DEF_EuiccResultData = { "EuiccResultData", @@ -182,7 +192,7 @@ 0, /* No tags (count) */ { &asn_OER_type_EuiccResultData_constr_1, &asn_PER_type_EuiccResultData_constr_1, CHOICE_constraint }, asn_MBR_EuiccResultData_1, - 14, /* Elements count */ + 15, /* Elements count */ &asn_SPC_EuiccResultData_specs_1 /* Additional specs */ }; diff --git a/src/ipa/libasn/EuiccResultData.h b/src/ipa/libasn/EuiccResultData.h index 79197a6..eb2c522 100644 --- a/src/ipa/libasn/EuiccResultData.h +++ b/src/ipa/libasn/EuiccResultData.h @@ -26,6 +26,7 @@ #include "SetFallbackAttributeResult.h" #include "UnsetFallbackAttributeResult.h" #include <NativeInteger.h> +#include "SGP32-SetDefaultDpAddressResponse.h" #include <constr_CHOICE.h> #ifdef __cplusplus @@ -48,7 +49,8 @@ EuiccResultData_PR_rollbackResult, EuiccResultData_PR_setFallbackAttributeResult, EuiccResultData_PR_unsetFallbackAttributeResult, - EuiccResultData_PR_processingTerminated + EuiccResultData_PR_processingTerminated, + EuiccResultData_PR_setDefaultDpAddressResult /* Extensions may appear below */ } EuiccResultData_PR; @@ -77,6 +79,7 @@ SetFallbackAttributeResult_t setFallbackAttributeResult; UnsetFallbackAttributeResult_t unsetFallbackAttributeResult; long processingTerminated; + SGP32_SetDefaultDpAddressResponse_t setDefaultDpAddressResult; /* * This type is extensible, * possible extensions are below. @@ -90,7 +93,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_EuiccResultData; extern asn_CHOICE_specifics_t asn_SPC_EuiccResultData_specs_1; -extern asn_TYPE_member_t asn_MBR_EuiccResultData_1[14]; +extern asn_TYPE_member_t asn_MBR_EuiccResultData_1[15]; extern asn_per_constraints_t asn_PER_type_EuiccResultData_constr_1; #ifdef __cplusplus diff --git a/src/ipa/libasn/Psmo.c b/src/ipa/libasn/Psmo.c index 144a95a..e6bb849 100644 --- a/src/ipa/libasn/Psmo.c +++ b/src/ipa/libasn/Psmo.c @@ -11,7 +11,7 @@ { 0, 0 }, -1}; asn_per_constraints_t asn_PER_type_Psmo_constr_1 CC_NOTUSED = { - { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 8 } /* (0..8,...) */, { APC_UNCONSTRAINED, -1, -1, 0, 0 }, 0, 0 /* No PER value map */ }; @@ -393,9 +393,18 @@ 0, 0, /* No default value */ "unsetFallbackAttribute" }, + { ATF_NOFLAGS, 0, offsetof(struct Psmo, choice.setDefaultDpAddress), + (ASN_TAG_CLASS_CONTEXT | (101 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SGP32_SetDefaultDpAddressRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "setDefaultDpAddress" + }, }; -static const unsigned asn_MAP_Psmo_to_canonical_1[] = { 0, 1, 2, 4, 5, 6, 7, 3 }; -static const unsigned asn_MAP_Psmo_from_canonical_1[] = { 0, 1, 2, 7, 3, 4, 5, 6 }; +static const unsigned asn_MAP_Psmo_to_canonical_1[] = { 0, 1, 2, 4, 5, 6, 7, 3, 8 }; +static const unsigned asn_MAP_Psmo_from_canonical_1[] = { 0, 1, 2, 7, 3, 4, 5, 6, 8 }; static const asn_TYPE_tag2member_t asn_MAP_Psmo_tag2el_1[] = { { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* enable */ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* disable */ @@ -404,7 +413,8 @@ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 5, 0, 0 }, /* configureImmediateEnable */ { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 6, 0, 0 }, /* setFallbackAttribute */ { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 7, 0, 0 }, /* unsetFallbackAttribute */ - { (ASN_TAG_CLASS_CONTEXT | (45 << 2)), 3, 0, 0 } /* listProfileInfo */ + { (ASN_TAG_CLASS_CONTEXT | (45 << 2)), 3, 0, 0 }, /* listProfileInfo */ + { (ASN_TAG_CLASS_CONTEXT | (101 << 2)), 8, 0, 0 } /* setDefaultDpAddress */ }; asn_CHOICE_specifics_t asn_SPC_Psmo_specs_1 = { sizeof(struct Psmo), @@ -412,10 +422,10 @@ offsetof(struct Psmo, present), sizeof(((struct Psmo *)0)->present), asn_MAP_Psmo_tag2el_1, - 8, /* Count of tags in the map */ + 9, /* Count of tags in the map */ asn_MAP_Psmo_to_canonical_1, asn_MAP_Psmo_from_canonical_1, - 8 /* Extensions start */ + 9 /* Extensions start */ }; asn_TYPE_descriptor_t asn_DEF_Psmo = { "Psmo", @@ -427,7 +437,7 @@ 0, /* No tags (count) */ { &asn_OER_type_Psmo_constr_1, &asn_PER_type_Psmo_constr_1, CHOICE_constraint }, asn_MBR_Psmo_1, - 8, /* Elements count */ + 9, /* Elements count */ &asn_SPC_Psmo_specs_1 /* Additional specs */ }; diff --git a/src/ipa/libasn/Psmo.h b/src/ipa/libasn/Psmo.h index c5e3e10..e00f820 100644 --- a/src/ipa/libasn/Psmo.h +++ b/src/ipa/libasn/Psmo.h @@ -13,6 +13,7 @@ /* Including external dependencies */ #include "ProfileInfoListRequest.h" +#include "SGP32-SetDefaultDpAddressRequest.h" #include "Iccid.h" #include <NULL.h> #include <constr_SEQUENCE.h> @@ -34,7 +35,8 @@ Psmo_PR_getRAT, Psmo_PR_configureImmediateEnable, Psmo_PR_setFallbackAttribute, - Psmo_PR_unsetFallbackAttribute + Psmo_PR_unsetFallbackAttribute, + Psmo_PR_setDefaultDpAddress /* Extensions may appear below */ } Psmo_PR; @@ -115,6 +117,7 @@ /* Context for parsing across buffer boundaries */ asn_struct_ctx_t _asn_ctx; } unsetFallbackAttribute; + SGP32_SetDefaultDpAddressRequest_t setDefaultDpAddress; /* * This type is extensible, * possible extensions are below. @@ -128,7 +131,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_Psmo; extern asn_CHOICE_specifics_t asn_SPC_Psmo_specs_1; -extern asn_TYPE_member_t asn_MBR_Psmo_1[8]; +extern asn_TYPE_member_t asn_MBR_Psmo_1[9]; extern asn_per_constraints_t asn_PER_type_Psmo_constr_1; #ifdef __cplusplus diff --git a/src/ipa/libasn/SGP32-SetDefaultDpAddressRequest.c b/src/ipa/libasn/SGP32-SetDefaultDpAddressRequest.c new file mode 100644 index 0000000..471f70d --- /dev/null +++ b/src/ipa/libasn/SGP32-SetDefaultDpAddressRequest.c @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "SGP32-SetDefaultDpAddressRequest.h" + +asn_TYPE_member_t asn_MBR_SGP32_SetDefaultDpAddressRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SGP32_SetDefaultDpAddressRequest, defaultDpAddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UTF8String, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "defaultDpAddress" + }, +}; +static const ber_tlv_tag_t asn_DEF_SGP32_SetDefaultDpAddressRequest_tags_1[] = { + (ASN_TAG_CLASS_CONTEXT | (101 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SGP32_SetDefaultDpAddressRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* defaultDpAddress */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SGP32_SetDefaultDpAddressRequest_specs_1 = { + sizeof(struct SGP32_SetDefaultDpAddressRequest), + offsetof(struct SGP32_SetDefaultDpAddressRequest, _asn_ctx), + asn_MAP_SGP32_SetDefaultDpAddressRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SGP32_SetDefaultDpAddressRequest = { + "SGP32-SetDefaultDpAddressRequest", + "SGP32-SetDefaultDpAddressRequest", + &asn_OP_SEQUENCE, + asn_DEF_SGP32_SetDefaultDpAddressRequest_tags_1, + sizeof(asn_DEF_SGP32_SetDefaultDpAddressRequest_tags_1) + /sizeof(asn_DEF_SGP32_SetDefaultDpAddressRequest_tags_1[0]) - 1, /* 1 */ + asn_DEF_SGP32_SetDefaultDpAddressRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SGP32_SetDefaultDpAddressRequest_tags_1) + /sizeof(asn_DEF_SGP32_SetDefaultDpAddressRequest_tags_1[0]), /* 2 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SGP32_SetDefaultDpAddressRequest_1, + 1, /* Elements count */ + &asn_SPC_SGP32_SetDefaultDpAddressRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/SGP32-SetDefaultDpAddressRequest.h b/src/ipa/libasn/SGP32-SetDefaultDpAddressRequest.h new file mode 100644 index 0000000..137b5e9 --- /dev/null +++ b/src/ipa/libasn/SGP32-SetDefaultDpAddressRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _SGP32_SetDefaultDpAddressRequest_H_ +#define _SGP32_SetDefaultDpAddressRequest_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <UTF8String.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* SGP32-SetDefaultDpAddressRequest */ +typedef struct SGP32_SetDefaultDpAddressRequest { + UTF8String_t defaultDpAddress; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SGP32_SetDefaultDpAddressRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SGP32_SetDefaultDpAddressRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_SGP32_SetDefaultDpAddressRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_SGP32_SetDefaultDpAddressRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SGP32_SetDefaultDpAddressRequest_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libasn/SGP32-SetDefaultDpAddressResponse.c b/src/ipa/libasn/SGP32-SetDefaultDpAddressResponse.c new file mode 100644 index 0000000..4516df6 --- /dev/null +++ b/src/ipa/libasn/SGP32-SetDefaultDpAddressResponse.c @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "SGP32-SetDefaultDpAddressResponse.h" + +asn_TYPE_member_t asn_MBR_SGP32_SetDefaultDpAddressResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SGP32_SetDefaultDpAddressResponse, setDefaultDpAddressResult), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "setDefaultDpAddressResult" + }, +}; +static const ber_tlv_tag_t asn_DEF_SGP32_SetDefaultDpAddressResponse_tags_1[] = { + (ASN_TAG_CLASS_CONTEXT | (101 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SGP32_SetDefaultDpAddressResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* setDefaultDpAddressResult */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SGP32_SetDefaultDpAddressResponse_specs_1 = { + sizeof(struct SGP32_SetDefaultDpAddressResponse), + offsetof(struct SGP32_SetDefaultDpAddressResponse, _asn_ctx), + asn_MAP_SGP32_SetDefaultDpAddressResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SGP32_SetDefaultDpAddressResponse = { + "SGP32-SetDefaultDpAddressResponse", + "SGP32-SetDefaultDpAddressResponse", + &asn_OP_SEQUENCE, + asn_DEF_SGP32_SetDefaultDpAddressResponse_tags_1, + sizeof(asn_DEF_SGP32_SetDefaultDpAddressResponse_tags_1) + /sizeof(asn_DEF_SGP32_SetDefaultDpAddressResponse_tags_1[0]) - 1, /* 1 */ + asn_DEF_SGP32_SetDefaultDpAddressResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_SGP32_SetDefaultDpAddressResponse_tags_1) + /sizeof(asn_DEF_SGP32_SetDefaultDpAddressResponse_tags_1[0]), /* 2 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SGP32_SetDefaultDpAddressResponse_1, + 1, /* Elements count */ + &asn_SPC_SGP32_SetDefaultDpAddressResponse_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/SGP32-SetDefaultDpAddressResponse.h b/src/ipa/libasn/SGP32-SetDefaultDpAddressResponse.h new file mode 100644 index 0000000..ef8a7eb --- /dev/null +++ b/src/ipa/libasn/SGP32-SetDefaultDpAddressResponse.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _SGP32_SetDefaultDpAddressResponse_H_ +#define _SGP32_SetDefaultDpAddressResponse_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SGP32_SetDefaultDpAddressResponse__setDefaultDpAddressResult { + SGP32_SetDefaultDpAddressResponse__setDefaultDpAddressResult_ok = 0, + SGP32_SetDefaultDpAddressResponse__setDefaultDpAddressResult_undefinedError = 127 +} e_SGP32_SetDefaultDpAddressResponse__setDefaultDpAddressResult; + +/* SGP32-SetDefaultDpAddressResponse */ +typedef struct SGP32_SetDefaultDpAddressResponse { + long setDefaultDpAddressResult; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SGP32_SetDefaultDpAddressResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SGP32_SetDefaultDpAddressResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_SGP32_SetDefaultDpAddressResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_SGP32_SetDefaultDpAddressResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SGP32_SetDefaultDpAddressResponse_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libipa/CMakeLists.txt b/src/ipa/libipa/CMakeLists.txt index e6bed87..7a6ac28 100644 --- a/src/ipa/libipa/CMakeLists.txt +++ b/src/ipa/libipa/CMakeLists.txt @@ -23,6 +23,7 @@ es10c_delete_prfle.c es10c_disable_prfle.c es10c_enable_prfle.c + es10c_set_def_dp_addr.c es10b_immediate_enable.c es10c_get_eid.c es10c_get_prfle_info.c diff --git a/src/ipa/libipa/es10b_load_euicc_pkg.c b/src/ipa/libipa/es10b_load_euicc_pkg.c index cf17513..553afb9 100644 --- a/src/ipa/libipa/es10b_load_euicc_pkg.c +++ b/src/ipa/libipa/es10b_load_euicc_pkg.c @@ -25,6 +25,7 @@ #include "es10c_disable_prfle.h" #include "es10c_delete_prfle.h" #include "es10c_get_prfle_info.h" +#include "es10c_set_def_dp_addr.h" #include "es10b_get_eim_cfg_data.h" #include "es10b_add_init_eim.h" #include "es10b_get_rat.h" @@ -292,6 +293,25 @@ return euicc_result_data; } +struct EuiccResultData *iot_emo_do_setDefaultDpAddress_psmo(struct ipa_context *ctx, + const SGP32_SetDefaultDpAddressRequest_t *setDefaultDpAddress_psmo) +{ + struct EuiccResultData *euicc_result_data = IPA_ALLOC_ZERO(struct EuiccResultData); + int rc; + + euicc_result_data->present = EuiccResultData_PR_setDefaultDpAddressResult; + + rc = ipa_es10c_set_def_dp_addr(ctx, &setDefaultDpAddress_psmo->defaultDpAddress); + if (rc >= 0) { + euicc_result_data->choice.setDefaultDpAddressResult.setDefaultDpAddressResult = rc; + } else { + euicc_result_data->choice.setDefaultDpAddressResult.setDefaultDpAddressResult = + SetDefaultDpAddressResponse__setDefaultDpAddressResult_undefinedError; + } + + return euicc_result_data; +} + struct EuiccResultData *iot_emo_do_addEim_eco(struct ipa_context *ctx, const struct EimConfigurationData *addEim_eco) { struct EuiccResultData *euicc_result_data = IPA_ALLOC_ZERO(struct EuiccResultData); @@ -632,6 +652,9 @@ case Psmo_PR_unsetFallbackAttribute: psmo_result = iot_emo_do_unsetFallbackAttribute_psmo(ctx, &psmo->choice.unsetFallbackAttribute); break; + case Psmo_PR_setDefaultDpAddress: + psmo_result = iot_emo_do_setDefaultDpAddress_psmo(ctx, &psmo->choice.setDefaultDpAddress); + break; default: IPA_LOGP_ES10X("LoadEuiccPackage", LERROR, "ignoring invalid or unsupported PSMO!\n"); break; diff --git a/src/ipa/libipa/es10c_set_def_dp_addr.c b/src/ipa/libipa/es10c_set_def_dp_addr.c new file mode 100644 index 0000000..7bcc17c --- /dev/null +++ b/src/ipa/libipa/es10c_set_def_dp_addr.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2026 sysmocom - s.f.m.c. GmbH. All rights reserved. + * + * SPDX-License-Identifier: AGPL-3.0-only + * + * Author: Philipp Maier <pmaier(a)sysmocom.de> / sysmocom - s.f.m.c. GmbH + * Andreas Eversberg <aeversberg(a)sysmocom.de> / sysmocom - s.f.m.c. GmbH + * + * See also: GSMA SGP.22, 5.7.4: Function (ES10c): SetDefaultDpAddress + */ + +#include <stdio.h> +#include <assert.h> +#include <onomondo/ipa/utils.h> +#include "context.h" +#include "utils.h" +#include "euicc.h" +#include "es10x.h" +#include "es10c_set_def_dp_addr.h" + +static const struct num_str_map error_code_strings[] = { + { SetDefaultDpAddressResponse__setDefaultDpAddressResult_ok, "ok" }, + { SetDefaultDpAddressResponse__setDefaultDpAddressResult_undefinedError, "undefinedError" }, + { 0, NULL } +}; + +static int dec_set_def_dp_addr_res(struct SetDefaultDpAddressResponse **res, const struct ipa_buf *es10c_res) +{ + struct SetDefaultDpAddressResponse *asn = NULL; + + asn = ipa_es10x_res_dec(&asn_DEF_SetDefaultDpAddressResponse, es10c_res, "SetDefaultDpAddress"); + if (!asn) + return -EINVAL; + + if (asn->setDefaultDpAddressResult != SetDefaultDpAddressResponse__setDefaultDpAddressResult_ok) { + IPA_LOGP_ES10X("SetDefaultDpAddress", LERROR, "function failed with error code %ld=%s!\n", + asn->setDefaultDpAddressResult, + ipa_str_from_num(error_code_strings, asn->setDefaultDpAddressResult, "(unknown)")); + } else { + IPA_LOGP_ES10X("SetDefaultDpAddress", LERROR, "function succeeded with status code %ld=%s!\n", + asn->setDefaultDpAddressResult, + ipa_str_from_num(error_code_strings, asn->setDefaultDpAddressResult, "(unknown)")); + } + + *res = asn; + return 0; +} + +/*! Function (Es10c): SetDefaultDpAddress. + * \param[inout] ctx pointer to ipa_context. + * \param[in] default_dp_address pointer to UTF-8 string of default DP address. + * \returns result code, -1 on error. */ +int ipa_es10c_set_def_dp_addr(struct ipa_context *ctx, const UTF8String_t *default_dp_address) +{ + struct ipa_buf *es10c_req = NULL; + struct ipa_buf *es10c_res = NULL; + struct SetDefaultDpAddressRequest req = { 0 }; + struct SetDefaultDpAddressResponse *res; + int rc; + + req.defaultDpAddress = *default_dp_address; + + es10c_req = ipa_es10x_req_enc(&asn_DEF_SetDefaultDpAddressRequest, &req, "SetDefaultDpAddress"); + if (!es10c_req) { + IPA_LOGP_ES10X("SetDefaultDpAddress", LERROR, "unable to encode Es10c request\n"); + goto error; + } + + es10c_res = ipa_euicc_transceive_es10x(ctx, es10c_req); + if (!es10c_res) { + IPA_LOGP_ES10X("SetDefaultDpAddress", LERROR, "no Es10c response\n"); + goto error; + } + + rc = dec_set_def_dp_addr_res(&res, es10c_res); + if (rc < 0) + goto error; + + IPA_FREE(es10c_req); + IPA_FREE(es10c_res); + rc = res->setDefaultDpAddressResult; + ASN_STRUCT_FREE(asn_DEF_SetDefaultDpAddressResponse, res); + return rc; +error: + IPA_FREE(es10c_req); + IPA_FREE(es10c_res); + return -1; +} diff --git a/src/ipa/libipa/es10c_set_def_dp_addr.h b/src/ipa/libipa/es10c_set_def_dp_addr.h new file mode 100644 index 0000000..0784635 --- /dev/null +++ b/src/ipa/libipa/es10c_set_def_dp_addr.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2026 sysmocom - s.f.m.c. GmbH. All rights reserved. + * + * SPDX-License-Identifier: AGPL-3.0-only + */ + +#pragma once + +#include <SetDefaultDpAddressRequest.h> +#include <SetDefaultDpAddressResponse.h> +struct ipa_context; + +int ipa_es10c_set_def_dp_addr(struct ipa_context *ctx, const UTF8String_t *default_dp_address); -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43031?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: I514b03240289469142e6a41a7290a4afce199318 Gerrit-Change-Number: 43031 Gerrit-PatchSet: 3 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[M] Change in onomondo-ipa[master]: V1.2: Rename searchCriteria of IpaEuiccDataRequest to searchCriteriaN...
by laforge
06 Aug '26
06 Aug '26
laforge has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43034?usp=email
) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: V1.2: Rename searchCriteria of IpaEuiccDataRequest to searchCriteriaNotification ...................................................................... V1.2: Rename searchCriteria of IpaEuiccDataRequest to searchCriteriaNotification Reference: SGP.32 Section 2.11.1.2 Related: SYS#8101 Change-Id: I245c2c1c1c5cdd2be387d515d1bf51d0bf82ef41 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/IpaEuiccDataRequest.c M src/ipa/libasn/IpaEuiccDataRequest.h M src/ipa/libipa/es10b_retr_notif_from_lst.c M src/ipa/libipa/es10b_retr_notif_from_lst.h M src/ipa/libipa/proc_euicc_data_req.c 6 files changed, 42 insertions(+), 42 deletions(-) Approvals: dexter: Looks good to me, approved Jenkins Builder: Verified diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index 87b480d..be1e37a 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -115,7 +115,7 @@ IpaEuiccDataRequest ::= [82] SEQUENCE { -- Tag BF52 tagList [APPLICATION 28] OCTET STRING, -- Tag '5C' euiccCiPKIdentifierToBeUsed OCTET STRING OPTIONAL, -- CI Public Key Identifier (possibly truncated) supported on the eUICC for signature creation - searchCriteria [1] CHOICE { + searchCriteriaNotification [1] CHOICE { seqNumber [0] INTEGER, profileManagementOperation [1] NotificationEvent, euiccPackageResults [2] NULL diff --git a/src/ipa/libasn/IpaEuiccDataRequest.c b/src/ipa/libasn/IpaEuiccDataRequest.c index e382a58..a790d61 100644 --- a/src/ipa/libasn/IpaEuiccDataRequest.c +++ b/src/ipa/libasn/IpaEuiccDataRequest.c @@ -7,16 +7,16 @@ #include "IpaEuiccDataRequest.h" -static asn_oer_constraints_t asn_OER_type_searchCriteria_constr_4 CC_NOTUSED = { +static asn_oer_constraints_t asn_OER_type_searchCriteriaNotification_constr_4 CC_NOTUSED = { { 0, 0 }, -1}; -static asn_per_constraints_t asn_PER_type_searchCriteria_constr_4 CC_NOTUSED = { +static asn_per_constraints_t asn_PER_type_searchCriteriaNotification_constr_4 CC_NOTUSED = { { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, { APC_UNCONSTRAINED, -1, -1, 0, 0 }, 0, 0 /* No PER value map */ }; -static asn_TYPE_member_t asn_MBR_searchCriteria_4[] = { - { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataRequest__searchCriteria, choice.seqNumber), +static asn_TYPE_member_t asn_MBR_searchCriteriaNotification_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataRequest__searchCriteriaNotification, choice.seqNumber), (ASN_TAG_CLASS_CONTEXT | (0 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_NativeInteger, @@ -25,7 +25,7 @@ 0, 0, /* No default value */ "seqNumber" }, - { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataRequest__searchCriteria, choice.profileManagementOperation), + { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataRequest__searchCriteriaNotification, choice.profileManagementOperation), (ASN_TAG_CLASS_CONTEXT | (1 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_NotificationEvent, @@ -34,7 +34,7 @@ 0, 0, /* No default value */ "profileManagementOperation" }, - { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataRequest__searchCriteria, choice.euiccPackageResults), + { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataRequest__searchCriteriaNotification, choice.euiccPackageResults), (ASN_TAG_CLASS_CONTEXT | (2 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_NULL, @@ -44,34 +44,34 @@ "euiccPackageResults" }, }; -static const asn_TYPE_tag2member_t asn_MAP_searchCriteria_tag2el_4[] = { +static const asn_TYPE_tag2member_t asn_MAP_searchCriteriaNotification_tag2el_4[] = { { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* seqNumber */ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* profileManagementOperation */ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* euiccPackageResults */ }; -static asn_CHOICE_specifics_t asn_SPC_searchCriteria_specs_4 = { - sizeof(struct IpaEuiccDataRequest__searchCriteria), - offsetof(struct IpaEuiccDataRequest__searchCriteria, _asn_ctx), - offsetof(struct IpaEuiccDataRequest__searchCriteria, present), - sizeof(((struct IpaEuiccDataRequest__searchCriteria *)0)->present), - asn_MAP_searchCriteria_tag2el_4, +static asn_CHOICE_specifics_t asn_SPC_searchCriteriaNotification_specs_4 = { + sizeof(struct IpaEuiccDataRequest__searchCriteriaNotification), + offsetof(struct IpaEuiccDataRequest__searchCriteriaNotification, _asn_ctx), + offsetof(struct IpaEuiccDataRequest__searchCriteriaNotification, present), + sizeof(((struct IpaEuiccDataRequest__searchCriteriaNotification *)0)->present), + asn_MAP_searchCriteriaNotification_tag2el_4, 3, /* Count of tags in the map */ 0, 0, 3 /* Extensions start */ }; static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_searchCriteria_4 = { - "searchCriteria", - "searchCriteria", +asn_TYPE_descriptor_t asn_DEF_searchCriteriaNotification_4 = { + "searchCriteriaNotification", + "searchCriteriaNotification", &asn_OP_CHOICE, 0, /* No effective tags (pointer) */ 0, /* No effective tags (count) */ 0, /* No tags (pointer) */ 0, /* No tags (count) */ - { &asn_OER_type_searchCriteria_constr_4, &asn_PER_type_searchCriteria_constr_4, CHOICE_constraint }, - asn_MBR_searchCriteria_4, + { &asn_OER_type_searchCriteriaNotification_constr_4, &asn_PER_type_searchCriteriaNotification_constr_4, CHOICE_constraint }, + asn_MBR_searchCriteriaNotification_4, 3, /* Elements count */ - &asn_SPC_searchCriteria_specs_4 /* Additional specs */ + &asn_SPC_searchCriteriaNotification_specs_4 /* Additional specs */ }; asn_TYPE_member_t asn_MBR_IpaEuiccDataRequest_1[] = { @@ -93,14 +93,14 @@ 0, 0, /* No default value */ "euiccCiPKIdentifierToBeUsed" }, - { ATF_POINTER, 1, offsetof(struct IpaEuiccDataRequest, searchCriteria), + { ATF_POINTER, 1, offsetof(struct IpaEuiccDataRequest, searchCriteriaNotification), (ASN_TAG_CLASS_CONTEXT | (1 << 2)), +1, /* EXPLICIT tag at current level */ - &asn_DEF_searchCriteria_4, + &asn_DEF_searchCriteriaNotification_4, 0, { 0, 0, 0 }, 0, 0, /* No default value */ - "searchCriteria" + "searchCriteriaNotification" }, }; static const int asn_MAP_IpaEuiccDataRequest_oms_1[] = { 1, 2 }; @@ -111,7 +111,7 @@ static const asn_TYPE_tag2member_t asn_MAP_IpaEuiccDataRequest_tag2el_1[] = { { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* euiccCiPKIdentifierToBeUsed */ { (ASN_TAG_CLASS_APPLICATION | (28 << 2)), 0, 0, 0 }, /* tagList */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 } /* searchCriteria */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 } /* searchCriteriaNotification */ }; asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccDataRequest_specs_1 = { sizeof(struct IpaEuiccDataRequest), diff --git a/src/ipa/libasn/IpaEuiccDataRequest.h b/src/ipa/libasn/IpaEuiccDataRequest.h index b2deef4..d40dfaf 100644 --- a/src/ipa/libasn/IpaEuiccDataRequest.h +++ b/src/ipa/libasn/IpaEuiccDataRequest.h @@ -24,22 +24,22 @@ #endif /* Dependencies */ -typedef enum IpaEuiccDataRequest__searchCriteria_PR { - IpaEuiccDataRequest__searchCriteria_PR_NOTHING, /* No components present */ - IpaEuiccDataRequest__searchCriteria_PR_seqNumber, - IpaEuiccDataRequest__searchCriteria_PR_profileManagementOperation, - IpaEuiccDataRequest__searchCriteria_PR_euiccPackageResults +typedef enum IpaEuiccDataRequest__searchCriteriaNotification_PR { + IpaEuiccDataRequest__searchCriteriaNotification_PR_NOTHING, /* No components present */ + IpaEuiccDataRequest__searchCriteriaNotification_PR_seqNumber, + IpaEuiccDataRequest__searchCriteriaNotification_PR_profileManagementOperation, + IpaEuiccDataRequest__searchCriteriaNotification_PR_euiccPackageResults /* Extensions may appear below */ -} IpaEuiccDataRequest__searchCriteria_PR; +} IpaEuiccDataRequest__searchCriteriaNotification_PR; /* IpaEuiccDataRequest */ typedef struct IpaEuiccDataRequest { OCTET_STRING_t tagList; OCTET_STRING_t *euiccCiPKIdentifierToBeUsed /* OPTIONAL */; - struct IpaEuiccDataRequest__searchCriteria { - IpaEuiccDataRequest__searchCriteria_PR present; - union IpaEuiccDataRequest__searchCriteria_u { + struct IpaEuiccDataRequest__searchCriteriaNotification { + IpaEuiccDataRequest__searchCriteriaNotification_PR present; + union IpaEuiccDataRequest__searchCriteriaNotification_u { long seqNumber; NotificationEvent_t profileManagementOperation; NULL_t euiccPackageResults; @@ -51,7 +51,7 @@ /* Context for parsing across buffer boundaries */ asn_struct_ctx_t _asn_ctx; - } *searchCriteria; + } *searchCriteriaNotification; /* * This type is extensible, * possible extensions are below. diff --git a/src/ipa/libipa/es10b_retr_notif_from_lst.c b/src/ipa/libipa/es10b_retr_notif_from_lst.c index e8b444e..170f59a 100644 --- a/src/ipa/libipa/es10b_retr_notif_from_lst.c +++ b/src/ipa/libipa/es10b_retr_notif_from_lst.c @@ -159,17 +159,17 @@ if (req->dr_search_criteria) { /* Convert from foreigen searchCriteria (see comment in header file) */ switch (req->dr_search_criteria->present) { - case IpaEuiccDataRequest__searchCriteria_PR_seqNumber: + case IpaEuiccDataRequest__searchCriteriaNotification_PR_seqNumber: search_criteria.present = RetrieveNotificationsListRequest__searchCriteria_PR_seqNumber; search_criteria.choice.seqNumber = req->dr_search_criteria->choice.seqNumber; break; - case IpaEuiccDataRequest__searchCriteria_PR_profileManagementOperation: + case IpaEuiccDataRequest__searchCriteriaNotification_PR_profileManagementOperation: search_criteria.present = RetrieveNotificationsListRequest__searchCriteria_PR_profileManagementOperation; search_criteria.choice.profileManagementOperation = req->dr_search_criteria->choice.profileManagementOperation; break; - case IpaEuiccDataRequest__searchCriteria_PR_euiccPackageResults: + case IpaEuiccDataRequest__searchCriteriaNotification_PR_euiccPackageResults: IPA_LOGP_ES10X("RetrieveNotificationsList", LERROR, "unsupported euiccPackageResults searchCriteria in IpaEuiccDataRequest!\n"); search_criteria.present = RetrieveNotificationsListRequest__searchCriteria_PR_NOTHING; @@ -219,17 +219,17 @@ if (req->dr_search_criteria) { /* Convert from foreigen searchCriteria (see comment in header file) */ switch (req->dr_search_criteria->present) { - case IpaEuiccDataRequest__searchCriteria_PR_seqNumber: + case IpaEuiccDataRequest__searchCriteriaNotification_PR_seqNumber: search_criteria.present = SGP32_RetrieveNotificationsListRequest__searchCriteria_PR_seqNumber; search_criteria.choice.seqNumber = req->dr_search_criteria->choice.seqNumber; break; - case IpaEuiccDataRequest__searchCriteria_PR_profileManagementOperation: + case IpaEuiccDataRequest__searchCriteriaNotification_PR_profileManagementOperation: search_criteria.present = SGP32_RetrieveNotificationsListRequest__searchCriteria_PR_profileManagementOperation; search_criteria.choice.profileManagementOperation = req->dr_search_criteria->choice.profileManagementOperation; break; - case IpaEuiccDataRequest__searchCriteria_PR_euiccPackageResults: + case IpaEuiccDataRequest__searchCriteriaNotification_PR_euiccPackageResults: search_criteria.present = SGP32_RetrieveNotificationsListRequest__searchCriteria_PR_euiccPackageResults; search_criteria.choice.euiccPackageResults = diff --git a/src/ipa/libipa/es10b_retr_notif_from_lst.h b/src/ipa/libipa/es10b_retr_notif_from_lst.h index 84f3706..2773356 100644 --- a/src/ipa/libipa/es10b_retr_notif_from_lst.h +++ b/src/ipa/libipa/es10b_retr_notif_from_lst.h @@ -19,7 +19,7 @@ /* When the caller has access to a search searchCriteria that originates from an IpaEuiccDataRequest, the * pointer to it may be passed here. The function will then atomatically convert the searchCriteria into * the native RetrieveNotificationsListRequest format. */ - const struct IpaEuiccDataRequest__searchCriteria *dr_search_criteria; + const struct IpaEuiccDataRequest__searchCriteriaNotification *dr_search_criteria; }; struct ipa_es10b_retr_notif_from_lst_res { diff --git a/src/ipa/libipa/proc_euicc_data_req.c b/src/ipa/libipa/proc_euicc_data_req.c index 2e2ebc1..ebfbf1d 100644 --- a/src/ipa/libipa/proc_euicc_data_req.c +++ b/src/ipa/libipa/proc_euicc_data_req.c @@ -197,7 +197,7 @@ if (ipa_tag_in_taglist(0xBF2B, tag_list)) { IPA_LOGP(SIPA, LINFO, "eIM asks for List of Notifications and/or eUICC Package Results\n"); - retr_notif_from_lst_req.dr_search_criteria = pars->ipa_euicc_data_request->searchCriteria; + retr_notif_from_lst_req.dr_search_criteria = pars->ipa_euicc_data_request->searchCriteriaNotification; retr_notif_from_lst_res = ipa_es10b_retr_notif_from_lst(ctx, &retr_notif_from_lst_req); if (retr_notif_from_lst_res && retr_notif_from_lst_res->sgp32_res) ipa_euicc_data_response.choice.ipaEuiccData.notificationsList = retr_notif_from_lst_res->sgp32_res; -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43034?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: I245c2c1c1c5cdd2be387d515d1bf51d0bf82ef41 Gerrit-Change-Number: 43034 Gerrit-PatchSet: 2 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[S] Change in onomondo-ipa[master]: V1.2: Rename euiccCiPKId of IpaEuiccDataRequest to euiccCiPKIdentifie...
by laforge
06 Aug '26
06 Aug '26
laforge has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43033?usp=email
) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: V1.2: Rename euiccCiPKId of IpaEuiccDataRequest to euiccCiPKIdentifierToBeUsed ...................................................................... V1.2: Rename euiccCiPKId of IpaEuiccDataRequest to euiccCiPKIdentifierToBeUsed Reference: SGP.32 Section 2.11.1.2 Related: SYS#8101 Change-Id: Id397206316721962cd534e8131fe2a3b6979d828 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/IpaEuiccDataRequest.c M src/ipa/libasn/IpaEuiccDataRequest.h M src/ipa/libipa/proc_euicc_data_req.c 4 files changed, 8 insertions(+), 9 deletions(-) Approvals: Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index a5ada72..87b480d 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -114,7 +114,7 @@ -- ASN1START IpaEuiccDataRequest ::= [82] SEQUENCE { -- Tag BF52 tagList [APPLICATION 28] OCTET STRING, -- Tag '5C' - euiccCiPKId SubjectKeyIdentifier OPTIONAL, -- CI Public Key Identifier supported on the eUICC for signature creation + euiccCiPKIdentifierToBeUsed OCTET STRING OPTIONAL, -- CI Public Key Identifier (possibly truncated) supported on the eUICC for signature creation searchCriteria [1] CHOICE { seqNumber [0] INTEGER, profileManagementOperation [1] NotificationEvent, diff --git a/src/ipa/libasn/IpaEuiccDataRequest.c b/src/ipa/libasn/IpaEuiccDataRequest.c index 1f471b9..e382a58 100644 --- a/src/ipa/libasn/IpaEuiccDataRequest.c +++ b/src/ipa/libasn/IpaEuiccDataRequest.c @@ -84,14 +84,14 @@ 0, 0, /* No default value */ "tagList" }, - { ATF_POINTER, 2, offsetof(struct IpaEuiccDataRequest, euiccCiPKId), + { ATF_POINTER, 2, offsetof(struct IpaEuiccDataRequest, euiccCiPKIdentifierToBeUsed), (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, - &asn_DEF_SubjectKeyIdentifier, + &asn_DEF_OCTET_STRING, 0, { 0, 0, 0 }, 0, 0, /* No default value */ - "euiccCiPKId" + "euiccCiPKIdentifierToBeUsed" }, { ATF_POINTER, 1, offsetof(struct IpaEuiccDataRequest, searchCriteria), (ASN_TAG_CLASS_CONTEXT | (1 << 2)), @@ -109,7 +109,7 @@ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) }; static const asn_TYPE_tag2member_t asn_MAP_IpaEuiccDataRequest_tag2el_1[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* euiccCiPKId */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* euiccCiPKIdentifierToBeUsed */ { (ASN_TAG_CLASS_APPLICATION | (28 << 2)), 0, 0, 0 }, /* tagList */ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 } /* searchCriteria */ }; diff --git a/src/ipa/libasn/IpaEuiccDataRequest.h b/src/ipa/libasn/IpaEuiccDataRequest.h index 0a06183..b2deef4 100644 --- a/src/ipa/libasn/IpaEuiccDataRequest.h +++ b/src/ipa/libasn/IpaEuiccDataRequest.h @@ -13,7 +13,6 @@ /* Including external dependencies */ #include <OCTET_STRING.h> -#include "SubjectKeyIdentifier.h" #include <NativeInteger.h> #include "NotificationEvent.h" #include <NULL.h> @@ -37,7 +36,7 @@ /* IpaEuiccDataRequest */ typedef struct IpaEuiccDataRequest { OCTET_STRING_t tagList; - SubjectKeyIdentifier_t *euiccCiPKId /* OPTIONAL */; + OCTET_STRING_t *euiccCiPKIdentifierToBeUsed /* OPTIONAL */; struct IpaEuiccDataRequest__searchCriteria { IpaEuiccDataRequest__searchCriteria_PR present; union IpaEuiccDataRequest__searchCriteria_u { diff --git a/src/ipa/libipa/proc_euicc_data_req.c b/src/ipa/libipa/proc_euicc_data_req.c index 4cc5682..2e2ebc1 100644 --- a/src/ipa/libipa/proc_euicc_data_req.c +++ b/src/ipa/libipa/proc_euicc_data_req.c @@ -160,7 +160,7 @@ if (ipa_tag_in_taglist(0xA5, tag_list)) { IPA_LOGP(SIPA, LINFO, "eIM asks for EUM certificate\n"); - get_certs_req.req.euiccCiPKId = pars->ipa_euicc_data_request->euiccCiPKId; + get_certs_req.req.euiccCiPKId = pars->ipa_euicc_data_request->euiccCiPKIdentifierToBeUsed; get_certs_res = ipa_es10b_get_certs(ctx, &get_certs_req); if (get_certs_res && get_certs_res->eum_certificate && get_certs_res->euicc_certificate) ipa_euicc_data_response.choice.ipaEuiccData.eumCertificate = get_certs_res->eum_certificate; @@ -173,7 +173,7 @@ ipa_euicc_data_response.choice.ipaEuiccData.euiccCertificate = get_certs_res->euicc_certificate; } else { IPA_LOGP(SIPA, LINFO, "eIM asks for eUICC certificate\n"); - get_certs_req.req.euiccCiPKId = pars->ipa_euicc_data_request->euiccCiPKId; + get_certs_req.req.euiccCiPKId = pars->ipa_euicc_data_request->euiccCiPKIdentifierToBeUsed; get_certs_res = ipa_es10b_get_certs(ctx, &get_certs_req); if (get_certs_res && get_certs_res->eum_certificate && get_certs_res->euicc_certificate) ipa_euicc_data_response.choice.ipaEuiccData.euiccCertificate = get_certs_res->euicc_certificate; -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43033?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: Id397206316721962cd534e8131fe2a3b6979d828 Gerrit-Change-Number: 43033 Gerrit-PatchSet: 2 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[L] Change in onomondo-ipa[master]: V1.2: Add eimTransactionId to IpaEuiccDataRequest and IpaEuiccDataRes...
by laforge
06 Aug '26
06 Aug '26
laforge has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43035?usp=email
) Change subject: V1.2: Add eimTransactionId to IpaEuiccDataRequest and IpaEuiccDataResponse ...................................................................... V1.2: Add eimTransactionId to IpaEuiccDataRequest and IpaEuiccDataResponse Add eimTransactionId to IpaEuiccDataRequest and to IpaEuiccDataResponseError or IpaEuiccData of IpaEuiccDataResponse. The IPA takes the transaction ID from the request, if exists, and sets it in the response. The eIM can use it to match the request with the successful or unsuccessful outcome. Note that there is no error handling if the requested data fails to be received from eUICC. This means that there is no transaction ID set at IpaEuiccDataResponseError. Reference: SGP.32 Section 2.11.1.2 Related: SYS#8101 Change-Id: I34db78c4eb8461c154459204ec13a2184085e96a --- M asn1/SGP32Definitions.asn M src/ipa/libasn/CMakeLists.txt M src/ipa/libasn/IpaEuiccData.c M src/ipa/libasn/IpaEuiccData.h A src/ipa/libasn/IpaEuiccDataErrorCode.c A src/ipa/libasn/IpaEuiccDataErrorCode.h M src/ipa/libasn/IpaEuiccDataRequest.c M src/ipa/libasn/IpaEuiccDataRequest.h M src/ipa/libasn/IpaEuiccDataResponse.c M src/ipa/libasn/IpaEuiccDataResponse.h A src/ipa/libasn/IpaEuiccDataResponseError.c A src/ipa/libasn/IpaEuiccDataResponseError.h M src/ipa/libipa/proc_euicc_data_req.c 13 files changed, 267 insertions(+), 44 deletions(-) Approvals: dexter: Looks good to me, approved Jenkins Builder: Verified diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index be1e37a..1b14803 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -119,7 +119,8 @@ seqNumber [0] INTEGER, profileManagementOperation [1] NotificationEvent, euiccPackageResults [2] NULL - } OPTIONAL + } OPTIONAL, + eimTransactionId [3] TransactionId OPTIONAL -- Tag '83' } -- ASN1STOP @@ -293,13 +294,19 @@ -- Section 2.11.2.2 -- ASN1START +IpaEuiccDataErrorCode ::= INTEGER { + incorrectTagList (1), + euiccCiPKIdNotFound(5), + ecallActive(104), + undefinedError(127) +} +IpaEuiccDataResponseError ::= SEQUENCE { + eimTransactionId [0] TransactionId OPTIONAL, + ipaEuiccDataErrorCode IpaEuiccDataErrorCode +} IpaEuiccDataResponse ::= [82] CHOICE { -- Tag 'BF52' ipaEuiccData IpaEuiccData, - ipaEuiccDataError INTEGER { - incorrectTagList (1), - euiccCiPKIdNotFound(5), - undefinedError(127) - } + ipaEuiccDataResponseError IpaEuiccDataResponseError } IpaEuiccData ::= SEQUENCE { defaultSmdpAddress [0] UTF8String OPTIONAL, -- Tag '80' @@ -309,6 +316,7 @@ associationToken [4] INTEGER OPTIONAL, -- Tag '84' eumCertificate [5] Certificate OPTIONAL, -- Tag 'A5' euiccCertificate [6] Certificate OPTIONAL, -- Tag 'A6' + eimTransactionId [7] TransactionId OPTIONAL, -- Tag '87' ipaCapabilities [8] IpaCapabilities OPTIONAL, -- Tag '88' deviceInfo [9] DeviceInfo OPTIONAL, -- Tag 'A9' notificationsList [43] SGP32-RetrieveNotificationsListResponse OPTIONAL -- Tag 'BF2B'. diff --git a/src/ipa/libasn/CMakeLists.txt b/src/ipa/libasn/CMakeLists.txt index 5ca748e..f9166bd 100644 --- a/src/ipa/libasn/CMakeLists.txt +++ b/src/ipa/libasn/CMakeLists.txt @@ -465,10 +465,14 @@ IpaCapabilities.c IpaCapabilities.h IpaEuiccData.c +IpaEuiccDataErrorCode.c +IpaEuiccDataErrorCode.h IpaEuiccData.h IpaEuiccDataRequest.c IpaEuiccDataRequest.h IpaEuiccDataResponse.c +IpaEuiccDataResponseError.c +IpaEuiccDataResponseError.h IpaEuiccDataResponse.h IpaMode.c IpaMode.h diff --git a/src/ipa/libasn/IpaEuiccData.c b/src/ipa/libasn/IpaEuiccData.c index 0b7d59c..3f44929 100644 --- a/src/ipa/libasn/IpaEuiccData.c +++ b/src/ipa/libasn/IpaEuiccData.c @@ -8,7 +8,7 @@ #include "IpaEuiccData.h" asn_TYPE_member_t asn_MBR_IpaEuiccData_1[] = { - { ATF_POINTER, 10, offsetof(struct IpaEuiccData, defaultSmdpAddress), + { ATF_POINTER, 11, offsetof(struct IpaEuiccData, defaultSmdpAddress), (ASN_TAG_CLASS_CONTEXT | (0 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, @@ -17,7 +17,7 @@ 0, 0, /* No default value */ "defaultSmdpAddress" }, - { ATF_POINTER, 9, offsetof(struct IpaEuiccData, euiccInfo1), + { ATF_POINTER, 10, offsetof(struct IpaEuiccData, euiccInfo1), (ASN_TAG_CLASS_CONTEXT | (32 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_EUICCInfo1, @@ -26,7 +26,7 @@ 0, 0, /* No default value */ "euiccInfo1" }, - { ATF_POINTER, 8, offsetof(struct IpaEuiccData, euiccInfo2), + { ATF_POINTER, 9, offsetof(struct IpaEuiccData, euiccInfo2), (ASN_TAG_CLASS_CONTEXT | (34 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_SGP32_EUICCInfo2, @@ -35,7 +35,7 @@ 0, 0, /* No default value */ "euiccInfo2" }, - { ATF_POINTER, 7, offsetof(struct IpaEuiccData, rootSmdsAddress), + { ATF_POINTER, 8, offsetof(struct IpaEuiccData, rootSmdsAddress), (ASN_TAG_CLASS_CONTEXT | (3 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, @@ -44,7 +44,7 @@ 0, 0, /* No default value */ "rootSmdsAddress" }, - { ATF_POINTER, 6, offsetof(struct IpaEuiccData, associationToken), + { ATF_POINTER, 7, offsetof(struct IpaEuiccData, associationToken), (ASN_TAG_CLASS_CONTEXT | (4 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_NativeInteger, @@ -53,7 +53,7 @@ 0, 0, /* No default value */ "associationToken" }, - { ATF_POINTER, 5, offsetof(struct IpaEuiccData, eumCertificate), + { ATF_POINTER, 6, offsetof(struct IpaEuiccData, eumCertificate), (ASN_TAG_CLASS_CONTEXT | (5 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_Certificate, @@ -62,7 +62,7 @@ 0, 0, /* No default value */ "eumCertificate" }, - { ATF_POINTER, 4, offsetof(struct IpaEuiccData, euiccCertificate), + { ATF_POINTER, 5, offsetof(struct IpaEuiccData, euiccCertificate), (ASN_TAG_CLASS_CONTEXT | (6 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_Certificate, @@ -71,6 +71,15 @@ 0, 0, /* No default value */ "euiccCertificate" }, + { ATF_POINTER, 4, offsetof(struct IpaEuiccData, eimTransactionId), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransactionId, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eimTransactionId" + }, { ATF_POINTER, 3, offsetof(struct IpaEuiccData, ipaCapabilities), (ASN_TAG_CLASS_CONTEXT | (8 << 2)), -1, /* IMPLICIT tag at current level */ @@ -99,7 +108,7 @@ "notificationsList" }, }; -static const int asn_MAP_IpaEuiccData_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +static const int asn_MAP_IpaEuiccData_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; static const ber_tlv_tag_t asn_DEF_IpaEuiccData_tags_1[] = { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) }; @@ -109,20 +118,21 @@ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* associationToken */ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* eumCertificate */ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* euiccCertificate */ - { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 7, 0, 0 }, /* ipaCapabilities */ - { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 8, 0, 0 }, /* deviceInfo */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* eimTransactionId */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* ipaCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* deviceInfo */ { (ASN_TAG_CLASS_CONTEXT | (32 << 2)), 1, 0, 0 }, /* euiccInfo1 */ { (ASN_TAG_CLASS_CONTEXT | (34 << 2)), 2, 0, 0 }, /* euiccInfo2 */ - { (ASN_TAG_CLASS_CONTEXT | (43 << 2)), 9, 0, 0 } /* notificationsList */ + { (ASN_TAG_CLASS_CONTEXT | (43 << 2)), 10, 0, 0 } /* notificationsList */ }; asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccData_specs_1 = { sizeof(struct IpaEuiccData), offsetof(struct IpaEuiccData, _asn_ctx), asn_MAP_IpaEuiccData_tag2el_1, - 10, /* Count of tags in the map */ + 11, /* Count of tags in the map */ asn_MAP_IpaEuiccData_oms_1, /* Optional members */ - 10, 0, /* Root/Additions */ - 10, /* First extension addition */ + 11, 0, /* Root/Additions */ + 11, /* First extension addition */ }; asn_TYPE_descriptor_t asn_DEF_IpaEuiccData = { "IpaEuiccData", @@ -136,7 +146,7 @@ /sizeof(asn_DEF_IpaEuiccData_tags_1[0]), /* 1 */ { 0, 0, SEQUENCE_constraint }, asn_MBR_IpaEuiccData_1, - 10, /* Elements count */ + 11, /* Elements count */ &asn_SPC_IpaEuiccData_specs_1 /* Additional specs */ }; diff --git a/src/ipa/libasn/IpaEuiccData.h b/src/ipa/libasn/IpaEuiccData.h index 755e6de..bf8dc38 100644 --- a/src/ipa/libasn/IpaEuiccData.h +++ b/src/ipa/libasn/IpaEuiccData.h @@ -14,6 +14,7 @@ /* Including external dependencies */ #include <UTF8String.h> #include <NativeInteger.h> +#include "TransactionId.h" #include <constr_SEQUENCE.h> #ifdef __cplusplus @@ -37,6 +38,7 @@ long *associationToken /* OPTIONAL */; struct Certificate *eumCertificate /* OPTIONAL */; struct Certificate *euiccCertificate /* OPTIONAL */; + TransactionId_t *eimTransactionId /* OPTIONAL */; struct IpaCapabilities *ipaCapabilities /* OPTIONAL */; struct DeviceInfo *deviceInfo /* OPTIONAL */; struct SGP32_RetrieveNotificationsListResponse *notificationsList /* OPTIONAL */; @@ -52,7 +54,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_IpaEuiccData; extern asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccData_specs_1; -extern asn_TYPE_member_t asn_MBR_IpaEuiccData_1[10]; +extern asn_TYPE_member_t asn_MBR_IpaEuiccData_1[11]; #ifdef __cplusplus } diff --git a/src/ipa/libasn/IpaEuiccDataErrorCode.c b/src/ipa/libasn/IpaEuiccDataErrorCode.c new file mode 100644 index 0000000..731ed27 --- /dev/null +++ b/src/ipa/libasn/IpaEuiccDataErrorCode.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "IpaEuiccDataErrorCode.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_IpaEuiccDataErrorCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataErrorCode = { + "IpaEuiccDataErrorCode", + "IpaEuiccDataErrorCode", + &asn_OP_NativeInteger, + asn_DEF_IpaEuiccDataErrorCode_tags_1, + sizeof(asn_DEF_IpaEuiccDataErrorCode_tags_1) + /sizeof(asn_DEF_IpaEuiccDataErrorCode_tags_1[0]), /* 1 */ + asn_DEF_IpaEuiccDataErrorCode_tags_1, /* Same as above */ + sizeof(asn_DEF_IpaEuiccDataErrorCode_tags_1) + /sizeof(asn_DEF_IpaEuiccDataErrorCode_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/src/ipa/libasn/IpaEuiccDataErrorCode.h b/src/ipa/libasn/IpaEuiccDataErrorCode.h new file mode 100644 index 0000000..78aa1e2 --- /dev/null +++ b/src/ipa/libasn/IpaEuiccDataErrorCode.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _IpaEuiccDataErrorCode_H_ +#define _IpaEuiccDataErrorCode_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum IpaEuiccDataErrorCode { + IpaEuiccDataErrorCode_incorrectTagList = 1, + IpaEuiccDataErrorCode_euiccCiPKIdNotFound = 5, + IpaEuiccDataErrorCode_ecallActive = 104, + IpaEuiccDataErrorCode_undefinedError = 127 +} e_IpaEuiccDataErrorCode; + +/* IpaEuiccDataErrorCode */ +typedef long IpaEuiccDataErrorCode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataErrorCode; +asn_struct_free_f IpaEuiccDataErrorCode_free; +asn_struct_print_f IpaEuiccDataErrorCode_print; +asn_constr_check_f IpaEuiccDataErrorCode_constraint; +ber_type_decoder_f IpaEuiccDataErrorCode_decode_ber; +der_type_encoder_f IpaEuiccDataErrorCode_encode_der; +xer_type_decoder_f IpaEuiccDataErrorCode_decode_xer; +xer_type_encoder_f IpaEuiccDataErrorCode_encode_xer; +oer_type_decoder_f IpaEuiccDataErrorCode_decode_oer; +oer_type_encoder_f IpaEuiccDataErrorCode_encode_oer; +per_type_decoder_f IpaEuiccDataErrorCode_decode_uper; +per_type_encoder_f IpaEuiccDataErrorCode_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IpaEuiccDataErrorCode_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libasn/IpaEuiccDataRequest.c b/src/ipa/libasn/IpaEuiccDataRequest.c index a790d61..fa1924d 100644 --- a/src/ipa/libasn/IpaEuiccDataRequest.c +++ b/src/ipa/libasn/IpaEuiccDataRequest.c @@ -84,7 +84,7 @@ 0, 0, /* No default value */ "tagList" }, - { ATF_POINTER, 2, offsetof(struct IpaEuiccDataRequest, euiccCiPKIdentifierToBeUsed), + { ATF_POINTER, 3, offsetof(struct IpaEuiccDataRequest, euiccCiPKIdentifierToBeUsed), (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, &asn_DEF_OCTET_STRING, @@ -93,7 +93,7 @@ 0, 0, /* No default value */ "euiccCiPKIdentifierToBeUsed" }, - { ATF_POINTER, 1, offsetof(struct IpaEuiccDataRequest, searchCriteriaNotification), + { ATF_POINTER, 2, offsetof(struct IpaEuiccDataRequest, searchCriteriaNotification), (ASN_TAG_CLASS_CONTEXT | (1 << 2)), +1, /* EXPLICIT tag at current level */ &asn_DEF_searchCriteriaNotification_4, @@ -102,8 +102,17 @@ 0, 0, /* No default value */ "searchCriteriaNotification" }, + { ATF_POINTER, 1, offsetof(struct IpaEuiccDataRequest, eimTransactionId), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransactionId, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eimTransactionId" + }, }; -static const int asn_MAP_IpaEuiccDataRequest_oms_1[] = { 1, 2 }; +static const int asn_MAP_IpaEuiccDataRequest_oms_1[] = { 1, 2, 3 }; static const ber_tlv_tag_t asn_DEF_IpaEuiccDataRequest_tags_1[] = { (ASN_TAG_CLASS_CONTEXT | (82 << 2)), (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) @@ -111,16 +120,17 @@ static const asn_TYPE_tag2member_t asn_MAP_IpaEuiccDataRequest_tag2el_1[] = { { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* euiccCiPKIdentifierToBeUsed */ { (ASN_TAG_CLASS_APPLICATION | (28 << 2)), 0, 0, 0 }, /* tagList */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 } /* searchCriteriaNotification */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* searchCriteriaNotification */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eimTransactionId */ }; asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccDataRequest_specs_1 = { sizeof(struct IpaEuiccDataRequest), offsetof(struct IpaEuiccDataRequest, _asn_ctx), asn_MAP_IpaEuiccDataRequest_tag2el_1, - 3, /* Count of tags in the map */ + 4, /* Count of tags in the map */ asn_MAP_IpaEuiccDataRequest_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ }; asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataRequest = { "IpaEuiccDataRequest", @@ -134,7 +144,7 @@ /sizeof(asn_DEF_IpaEuiccDataRequest_tags_1[0]), /* 2 */ { 0, 0, SEQUENCE_constraint }, asn_MBR_IpaEuiccDataRequest_1, - 3, /* Elements count */ + 4, /* Elements count */ &asn_SPC_IpaEuiccDataRequest_specs_1 /* Additional specs */ }; diff --git a/src/ipa/libasn/IpaEuiccDataRequest.h b/src/ipa/libasn/IpaEuiccDataRequest.h index d40dfaf..c4f0a87 100644 --- a/src/ipa/libasn/IpaEuiccDataRequest.h +++ b/src/ipa/libasn/IpaEuiccDataRequest.h @@ -13,6 +13,7 @@ /* Including external dependencies */ #include <OCTET_STRING.h> +#include "TransactionId.h" #include <NativeInteger.h> #include "NotificationEvent.h" #include <NULL.h> @@ -52,6 +53,7 @@ /* Context for parsing across buffer boundaries */ asn_struct_ctx_t _asn_ctx; } *searchCriteriaNotification; + TransactionId_t *eimTransactionId /* OPTIONAL */; /* * This type is extensible, * possible extensions are below. @@ -64,7 +66,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataRequest; extern asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccDataRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_IpaEuiccDataRequest_1[3]; +extern asn_TYPE_member_t asn_MBR_IpaEuiccDataRequest_1[4]; #ifdef __cplusplus } diff --git a/src/ipa/libasn/IpaEuiccDataResponse.c b/src/ipa/libasn/IpaEuiccDataResponse.c index ae935e7..8b0f8c7 100644 --- a/src/ipa/libasn/IpaEuiccDataResponse.c +++ b/src/ipa/libasn/IpaEuiccDataResponse.c @@ -25,14 +25,14 @@ 0, 0, /* No default value */ "ipaEuiccData" }, - { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataResponse, choice.ipaEuiccDataError), + { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataResponse, choice.ipaEuiccDataResponseError), (ASN_TAG_CLASS_CONTEXT | (1 << 2)), -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, + &asn_DEF_IpaEuiccDataResponseError, 0, { 0, 0, 0 }, 0, 0, /* No default value */ - "ipaEuiccDataError" + "ipaEuiccDataResponseError" }, }; static const ber_tlv_tag_t asn_DEF_IpaEuiccDataResponse_tags_1[] = { @@ -40,7 +40,7 @@ }; static const asn_TYPE_tag2member_t asn_MAP_IpaEuiccDataResponse_tag2el_1[] = { { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ipaEuiccData */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ipaEuiccDataError */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ipaEuiccDataResponseError */ }; asn_CHOICE_specifics_t asn_SPC_IpaEuiccDataResponse_specs_1 = { sizeof(struct IpaEuiccDataResponse), diff --git a/src/ipa/libasn/IpaEuiccDataResponse.h b/src/ipa/libasn/IpaEuiccDataResponse.h index 0e1ae58..b0f1143 100644 --- a/src/ipa/libasn/IpaEuiccDataResponse.h +++ b/src/ipa/libasn/IpaEuiccDataResponse.h @@ -13,7 +13,7 @@ /* Including external dependencies */ #include "IpaEuiccData.h" -#include <NativeInteger.h> +#include "IpaEuiccDataResponseError.h" #include <constr_CHOICE.h> #ifdef __cplusplus @@ -24,22 +24,17 @@ typedef enum IpaEuiccDataResponse_PR { IpaEuiccDataResponse_PR_NOTHING, /* No components present */ IpaEuiccDataResponse_PR_ipaEuiccData, - IpaEuiccDataResponse_PR_ipaEuiccDataError + IpaEuiccDataResponse_PR_ipaEuiccDataResponseError /* Extensions may appear below */ } IpaEuiccDataResponse_PR; -typedef enum IpaEuiccDataResponse__ipaEuiccDataError { - IpaEuiccDataResponse__ipaEuiccDataError_incorrectTagList = 1, - IpaEuiccDataResponse__ipaEuiccDataError_euiccCiPKIdNotFound = 5, - IpaEuiccDataResponse__ipaEuiccDataError_undefinedError = 127 -} e_IpaEuiccDataResponse__ipaEuiccDataError; /* IpaEuiccDataResponse */ typedef struct IpaEuiccDataResponse { IpaEuiccDataResponse_PR present; union IpaEuiccDataResponse_u { IpaEuiccData_t ipaEuiccData; - long ipaEuiccDataError; + IpaEuiccDataResponseError_t ipaEuiccDataResponseError; /* * This type is extensible, * possible extensions are below. diff --git a/src/ipa/libasn/IpaEuiccDataResponseError.c b/src/ipa/libasn/IpaEuiccDataResponseError.c new file mode 100644 index 0000000..045bed2 --- /dev/null +++ b/src/ipa/libasn/IpaEuiccDataResponseError.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "IpaEuiccDataResponseError.h" + +asn_TYPE_member_t asn_MBR_IpaEuiccDataResponseError_1[] = { + { ATF_POINTER, 1, offsetof(struct IpaEuiccDataResponseError, eimTransactionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransactionId, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eimTransactionId" + }, + { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataResponseError, ipaEuiccDataErrorCode), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_IpaEuiccDataErrorCode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ipaEuiccDataErrorCode" + }, +}; +static const int asn_MAP_IpaEuiccDataResponseError_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_IpaEuiccDataResponseError_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IpaEuiccDataResponseError_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* ipaEuiccDataErrorCode */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eimTransactionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccDataResponseError_specs_1 = { + sizeof(struct IpaEuiccDataResponseError), + offsetof(struct IpaEuiccDataResponseError, _asn_ctx), + asn_MAP_IpaEuiccDataResponseError_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_IpaEuiccDataResponseError_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataResponseError = { + "IpaEuiccDataResponseError", + "IpaEuiccDataResponseError", + &asn_OP_SEQUENCE, + asn_DEF_IpaEuiccDataResponseError_tags_1, + sizeof(asn_DEF_IpaEuiccDataResponseError_tags_1) + /sizeof(asn_DEF_IpaEuiccDataResponseError_tags_1[0]), /* 1 */ + asn_DEF_IpaEuiccDataResponseError_tags_1, /* Same as above */ + sizeof(asn_DEF_IpaEuiccDataResponseError_tags_1) + /sizeof(asn_DEF_IpaEuiccDataResponseError_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_IpaEuiccDataResponseError_1, + 2, /* Elements count */ + &asn_SPC_IpaEuiccDataResponseError_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/IpaEuiccDataResponseError.h b/src/ipa/libasn/IpaEuiccDataResponseError.h new file mode 100644 index 0000000..0069679 --- /dev/null +++ b/src/ipa/libasn/IpaEuiccDataResponseError.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (
http://lionet.info/asn1c
) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _IpaEuiccDataResponseError_H_ +#define _IpaEuiccDataResponseError_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "TransactionId.h" +#include "IpaEuiccDataErrorCode.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* IpaEuiccDataResponseError */ +typedef struct IpaEuiccDataResponseError { + TransactionId_t *eimTransactionId /* OPTIONAL */; + IpaEuiccDataErrorCode_t ipaEuiccDataErrorCode; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IpaEuiccDataResponseError_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataResponseError; +extern asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccDataResponseError_specs_1; +extern asn_TYPE_member_t asn_MBR_IpaEuiccDataResponseError_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _IpaEuiccDataResponseError_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libipa/proc_euicc_data_req.c b/src/ipa/libipa/proc_euicc_data_req.c index ebfbf1d..f9c0d92 100644 --- a/src/ipa/libipa/proc_euicc_data_req.c +++ b/src/ipa/libipa/proc_euicc_data_req.c @@ -204,12 +204,14 @@ } ipa_euicc_data_response.present = IpaEuiccDataResponse_PR_ipaEuiccData; + ipa_euicc_data_response.choice.ipaEuiccData.eimTransactionId = pars->ipa_euicc_data_request->eimTransactionId; + prvde_eim_pkg_rslt_req.ipa_euicc_data_resp = &ipa_euicc_data_response; prvde_eim_pkg_rslt_res = ipa_esipa_prvde_eim_pkg_rslt(ctx, &prvde_eim_pkg_rslt_req); if (!prvde_eim_pkg_rslt_res) goto error; - if (ipa_euicc_data_response.present == IpaEuiccDataResponse_PR_ipaEuiccDataError) + if (ipa_euicc_data_response.present == IpaEuiccDataResponse_PR_ipaEuiccDataResponseError) IPA_LOGP(SIPA, LINFO, "IPA get EUICC data failed, eIM is informed about the failure!\n"); else IPA_LOGP(SIPA, LINFO, "IPA get EUICC data succeeded!\n"); -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43035?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: I34db78c4eb8461c154459204ec13a2184085e96a Gerrit-Change-Number: 43035 Gerrit-PatchSet: 2 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[S] Change in onomondo-ipa[master]: V1.2: Rename TransactionId in EuiccPackageResultDataSigned
by laforge
06 Aug '26
06 Aug '26
laforge has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43036?usp=email
) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: V1.2: Rename TransactionId in EuiccPackageResultDataSigned ...................................................................... V1.2: Rename TransactionId in EuiccPackageResultDataSigned Reference: SGP.32 Section 2.11.2 Related: SYS#8101 Change-Id: I5515bfbff91c1fb4ecd90bb151b499b223f7d673 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/EuiccPackageResultDataSigned.c M src/ipa/libasn/EuiccPackageResultDataSigned.h M src/ipa/libipa/es10b_load_euicc_pkg.c 4 files changed, 6 insertions(+), 6 deletions(-) Approvals: Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index 1b14803..8953eb3 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -160,7 +160,7 @@ EuiccPackageResultDataSigned ::= SEQUENCE { -- #SupportedForPsmoV1.0.0# eimId [0] UTF8String, counterValue [1] INTEGER, - transactionId[2] TransactionId OPTIONAL, + eimTransactionId[2] TransactionId OPTIONAL, seqNumber [3] INTEGER, euiccResult SEQUENCE OF EuiccResultData } diff --git a/src/ipa/libasn/EuiccPackageResultDataSigned.c b/src/ipa/libasn/EuiccPackageResultDataSigned.c index b8ef57a..f1e6b3a 100644 --- a/src/ipa/libasn/EuiccPackageResultDataSigned.c +++ b/src/ipa/libasn/EuiccPackageResultDataSigned.c @@ -62,14 +62,14 @@ 0, 0, /* No default value */ "counterValue" }, - { ATF_POINTER, 1, offsetof(struct EuiccPackageResultDataSigned, transactionId), + { ATF_POINTER, 1, offsetof(struct EuiccPackageResultDataSigned, eimTransactionId), (ASN_TAG_CLASS_CONTEXT | (2 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_TransactionId, 0, { 0, 0, 0 }, 0, 0, /* No default value */ - "transactionId" + "eimTransactionId" }, { ATF_NOFLAGS, 0, offsetof(struct EuiccPackageResultDataSigned, seqNumber), (ASN_TAG_CLASS_CONTEXT | (3 << 2)), @@ -98,7 +98,7 @@ { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 0 }, /* euiccResult */ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eimId */ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* counterValue */ - { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transactionId */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* eimTransactionId */ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* seqNumber */ }; asn_SEQUENCE_specifics_t asn_SPC_EuiccPackageResultDataSigned_specs_1 = { diff --git a/src/ipa/libasn/EuiccPackageResultDataSigned.h b/src/ipa/libasn/EuiccPackageResultDataSigned.h index 63a4593..32616a5 100644 --- a/src/ipa/libasn/EuiccPackageResultDataSigned.h +++ b/src/ipa/libasn/EuiccPackageResultDataSigned.h @@ -30,7 +30,7 @@ typedef struct EuiccPackageResultDataSigned { UTF8String_t eimId; long counterValue; - TransactionId_t *transactionId /* OPTIONAL */; + TransactionId_t *eimTransactionId /* OPTIONAL */; long seqNumber; struct EuiccPackageResultDataSigned__euiccResult { A_SEQUENCE_OF(struct EuiccResultData) list; diff --git a/src/ipa/libipa/es10b_load_euicc_pkg.c b/src/ipa/libipa/es10b_load_euicc_pkg.c index 553afb9..dc09612 100644 --- a/src/ipa/libipa/es10b_load_euicc_pkg.c +++ b/src/ipa/libipa/es10b_load_euicc_pkg.c @@ -613,7 +613,7 @@ asn->choice.euiccPackageResultSigned.euiccPackageResultDataSigned.counterValue = req->req.euiccPackageSigned.counterValue; if (req->req.euiccPackageSigned.eimTransactionId) { - asn->choice.euiccPackageResultSigned.euiccPackageResultDataSigned.transactionId = + asn->choice.euiccPackageResultSigned.euiccPackageResultDataSigned.eimTransactionId = ipa_asn1c_dup(&asn_DEF_TransactionId, req->req.euiccPackageSigned.eimTransactionId); } asn->choice.euiccPackageResultSigned.euiccPackageResultDataSigned.seqNumber = 0; -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43036?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: I5515bfbff91c1fb4ecd90bb151b499b223f7d673 Gerrit-Change-Number: 43036 Gerrit-PatchSet: 2 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[M] Change in onomondo-ipa[master]: V1.2: Add size constraints to eimId
by laforge
06 Aug '26
06 Aug '26
laforge has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43037?usp=email
) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: V1.2: Add size constraints to eimId ...................................................................... V1.2: Add size constraints to eimId The remaining eimId in EuiccPackageResultDataSigned, EuiccPackageErrorDataSigned, EuiccPackageErrorUnsigned and EimIdInfo are now limited to 128 characters. The limit has no impact on the process. Assignments are made from other eimID of other structures that are also limited to 128. At some location the eimId is set from 'eim_id' of context structure, which is received by EimConfigurationData which is also limited to 128. Reference: SGP.32 Section 2.11.2 Related: SYS#8101 Change-Id: I5a0f52c0aa4851e802909f98d5a5677e596c4d7f --- M asn1/SGP32Definitions.asn M src/ipa/libasn/EimIdInfo.c M src/ipa/libasn/EuiccPackageErrorDataSigned.c M src/ipa/libasn/EuiccPackageErrorUnsigned.c M src/ipa/libasn/EuiccPackageResultDataSigned.c 5 files changed, 168 insertions(+), 8 deletions(-) Approvals: Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index 8953eb3..c793453 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -158,7 +158,7 @@ euiccSignEPR [APPLICATION 55] OCTET STRING -- Tag '5F37' } EuiccPackageResultDataSigned ::= SEQUENCE { -- #SupportedForPsmoV1.0.0# - eimId [0] UTF8String, + eimId [0] UTF8String (SIZE(1..128)), counterValue [1] INTEGER, eimTransactionId[2] TransactionId OPTIONAL, seqNumber [3] INTEGER, @@ -191,14 +191,14 @@ euiccSignEPE [APPLICATION 55] OCTET STRING -- Tag '5F37' } EuiccPackageErrorDataSigned ::= SEQUENCE { - eimId [0] UTF8String, + eimId [0] UTF8String (SIZE(1..128)), counterValue [1] INTEGER, transactionId [2] TransactionId OPTIONAL, euiccPackageErrorCode EuiccPackageErrorCode } EuiccPackageErrorCode ::= INTEGER { invalidEid(3), replayError(4), counterValueOutOfRange(6), sizeOverflow(15), undefinedError(127)} EuiccPackageErrorUnsigned ::= SEQUENCE { - eimId [0] UTF8String, + eimId [0] UTF8String (SIZE(1..128)), associationToken [4] INTEGER OPTIONAL } ConfigureImmediateEnableResult ::= INTEGER { @@ -287,7 +287,7 @@ } } EimIdInfo ::= SEQUENCE { - eimId [0] UTF8String, + eimId [0] UTF8String (SIZE(1..128)), eimIdType [4] EimIdType OPTIONAL -- present in case of eimIdTypeOid and eimIdTypeFqdn } -- ASN1STOP diff --git a/src/ipa/libasn/EimIdInfo.c b/src/ipa/libasn/EimIdInfo.c index d914e95..9dc4d68 100644 --- a/src/ipa/libasn/EimIdInfo.c +++ b/src/ipa/libasn/EimIdInfo.c @@ -7,13 +7,53 @@ #include "EimIdInfo.h" +static int +memb_eimId_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const UTF8String_t *st = (const UTF8String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = UTF8String_length(st); + if((ssize_t)size < 0) { + ASN__CTFAIL(app_key, td, sptr, + "%s: UTF-8: broken encoding (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((size >= 1 && size <= 128)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_eimId_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +static asn_per_constraints_t asn_PER_memb_eimId_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; asn_TYPE_member_t asn_MBR_EimIdInfo_1[] = { { ATF_NOFLAGS, 0, offsetof(struct EimIdInfo, eimId), (ASN_TAG_CLASS_CONTEXT | (0 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, 0, - { 0, 0, 0 }, + { &asn_OER_memb_eimId_constr_2, &asn_PER_memb_eimId_constr_2, memb_eimId_constraint_1 }, 0, 0, /* No default value */ "eimId" }, diff --git a/src/ipa/libasn/EuiccPackageErrorDataSigned.c b/src/ipa/libasn/EuiccPackageErrorDataSigned.c index 6f69d84..59a6925 100644 --- a/src/ipa/libasn/EuiccPackageErrorDataSigned.c +++ b/src/ipa/libasn/EuiccPackageErrorDataSigned.c @@ -7,13 +7,53 @@ #include "EuiccPackageErrorDataSigned.h" +static int +memb_eimId_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const UTF8String_t *st = (const UTF8String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = UTF8String_length(st); + if((ssize_t)size < 0) { + ASN__CTFAIL(app_key, td, sptr, + "%s: UTF-8: broken encoding (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((size >= 1 && size <= 128)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_eimId_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +static asn_per_constraints_t asn_PER_memb_eimId_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; asn_TYPE_member_t asn_MBR_EuiccPackageErrorDataSigned_1[] = { { ATF_NOFLAGS, 0, offsetof(struct EuiccPackageErrorDataSigned, eimId), (ASN_TAG_CLASS_CONTEXT | (0 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, 0, - { 0, 0, 0 }, + { &asn_OER_memb_eimId_constr_2, &asn_PER_memb_eimId_constr_2, memb_eimId_constraint_1 }, 0, 0, /* No default value */ "eimId" }, diff --git a/src/ipa/libasn/EuiccPackageErrorUnsigned.c b/src/ipa/libasn/EuiccPackageErrorUnsigned.c index e42a5cf..bf168e3 100644 --- a/src/ipa/libasn/EuiccPackageErrorUnsigned.c +++ b/src/ipa/libasn/EuiccPackageErrorUnsigned.c @@ -7,13 +7,53 @@ #include "EuiccPackageErrorUnsigned.h" +static int +memb_eimId_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const UTF8String_t *st = (const UTF8String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = UTF8String_length(st); + if((ssize_t)size < 0) { + ASN__CTFAIL(app_key, td, sptr, + "%s: UTF-8: broken encoding (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((size >= 1 && size <= 128)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_eimId_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +static asn_per_constraints_t asn_PER_memb_eimId_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; asn_TYPE_member_t asn_MBR_EuiccPackageErrorUnsigned_1[] = { { ATF_NOFLAGS, 0, offsetof(struct EuiccPackageErrorUnsigned, eimId), (ASN_TAG_CLASS_CONTEXT | (0 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, 0, - { 0, 0, 0 }, + { &asn_OER_memb_eimId_constr_2, &asn_PER_memb_eimId_constr_2, memb_eimId_constraint_1 }, 0, 0, /* No default value */ "eimId" }, diff --git a/src/ipa/libasn/EuiccPackageResultDataSigned.c b/src/ipa/libasn/EuiccPackageResultDataSigned.c index f1e6b3a..b155424 100644 --- a/src/ipa/libasn/EuiccPackageResultDataSigned.c +++ b/src/ipa/libasn/EuiccPackageResultDataSigned.c @@ -7,6 +7,46 @@ #include "EuiccPackageResultDataSigned.h" +static int +memb_eimId_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const UTF8String_t *st = (const UTF8String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = UTF8String_length(st); + if((ssize_t)size < 0) { + ASN__CTFAIL(app_key, td, sptr, + "%s: UTF-8: broken encoding (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((size >= 1 && size <= 128)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_eimId_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +static asn_per_constraints_t asn_PER_memb_eimId_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; static asn_TYPE_member_t asn_MBR_euiccResult_6[] = { { ATF_POINTER, 0, 0, -1 /* Ambiguous tag (CHOICE?) */, @@ -49,7 +89,7 @@ -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, 0, - { 0, 0, 0 }, + { &asn_OER_memb_eimId_constr_2, &asn_PER_memb_eimId_constr_2, memb_eimId_constraint_1 }, 0, 0, /* No default value */ "eimId" }, -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43037?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: onomondo-ipa Gerrit-Branch: master Gerrit-Change-Id: I5a0f52c0aa4851e802909f98d5a5677e596c4d7f Gerrit-Change-Number: 43037 Gerrit-PatchSet: 2 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
← Newer
1
...
127
128
129
130
131
132
133
...
150
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
Results per page:
10
25
50
100
200