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
1504 discussions
Start a n
N
ew thread
[L] Change in onomondo-ipa[master]: V1.2: Add SGP.32-custom StoreMetadata
by jolly
19 Aug '26
19 Aug '26
jolly has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43049?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 SGP.32-custom StoreMetadata ...................................................................... V1.2: Add SGP.32-custom StoreMetadata Add new StoreMetadata, which overrides and expands StoreMetadata from SGP.22. There is no impact on IPA process, because it is optional and not used. Reference: SGP.32 Section 5.5 Related: SYS#8101 Change-Id: Icfbc141dda82f091bcc9a1d7177e9fdb5b424750 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/AuthenticateClientOkDPEsipa.c M src/ipa/libasn/AuthenticateClientOkDPEsipa.h M src/ipa/libasn/CMakeLists.txt A src/ipa/libasn/SGP32-StoreMetadataRequest.c A src/ipa/libasn/SGP32-StoreMetadataRequest.h 6 files changed, 452 insertions(+), 5 deletions(-) Approvals: Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index 0a53e06..5444640 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -419,6 +419,25 @@ } -- ASN1STOP +-- Section 5.5 +-- ASN1START +SGP32-StoreMetadataRequest ::= [37] SEQUENCE { -- Tag 'BF25' + iccid Iccid, + serviceProviderName [17] UTF8String (SIZE(0..32)), -- Tag '91' + profileName [18] UTF8String (SIZE(0..64)), -- Tag '92' (corresponds to 'Short Description' defined in SGP.21 [2]) + iconType [19] IconType OPTIONAL, -- Tag '93' (JPG or PNG) + icon [20] OCTET STRING (SIZE(0..1024)) OPTIONAL, -- Tag '94' (Data of the icon. Size 64 x 64 pixel. This field SHALL only be present if iconType is present) + profileClass [21] ProfileClass DEFAULT operational, -- Tag '95' + notificationConfigurationInfo [22] SEQUENCE OF NotificationConfigurationInformation OPTIONAL, + profileOwner [23] OperatorId OPTIONAL, -- Tag 'B7' + profilePolicyRules [25] PprIds OPTIONAL, -- Tag '99' + serviceSpecificDataStoredInEuicc [34] VendorSpecificExtension OPTIONAL, -- Tag 'BF22' + serviceSpecificDataNotStoredInEuicc [35] VendorSpecificExtension OPTIONAL, -- Tag ‘BF23’ + ecallIndication [123] BOOLEAN OPTIONAL, -- Tag '9F7B' + fallbackAllowed [103] BOOLEAN OPTIONAL -- Tag '9F67' +} +-- ASN1STOP + -- Section 5.9.2 -- ASN1START SGP32-EUICCInfo2 ::= [34] SEQUENCE { -- Tag 'BF22' @@ -869,7 +888,7 @@ } AuthenticateClientOkDPEsipa ::= SEQUENCE { transactionId [0] TransactionId OPTIONAL, - profileMetaData [37] StoreMetadataRequest OPTIONAL, + profileMetaData [37] SGP32-StoreMetadataRequest OPTIONAL, smdpSigned2 SmdpSigned2, -- Signed information smdpSignature2 [APPLICATION 55] OCTET STRING, -- Tag '5F37' smdpCertificate Certificate, -- CERT.DPpb.ECDSA diff --git a/src/ipa/libasn/AuthenticateClientOkDPEsipa.c b/src/ipa/libasn/AuthenticateClientOkDPEsipa.c index 9ec34be..0b9b281 100644 --- a/src/ipa/libasn/AuthenticateClientOkDPEsipa.c +++ b/src/ipa/libasn/AuthenticateClientOkDPEsipa.c @@ -20,7 +20,7 @@ { ATF_POINTER, 1, offsetof(struct AuthenticateClientOkDPEsipa, profileMetaData), (ASN_TAG_CLASS_CONTEXT | (37 << 2)), -1, /* IMPLICIT tag at current level */ - &asn_DEF_StoreMetadataRequest, + &asn_DEF_SGP32_StoreMetadataRequest, 0, { 0, 0, 0 }, 0, 0, /* No default value */ diff --git a/src/ipa/libasn/AuthenticateClientOkDPEsipa.h b/src/ipa/libasn/AuthenticateClientOkDPEsipa.h index 3094af8..5d8e656 100644 --- a/src/ipa/libasn/AuthenticateClientOkDPEsipa.h +++ b/src/ipa/libasn/AuthenticateClientOkDPEsipa.h @@ -24,12 +24,12 @@ #endif /* Forward declarations */ -struct StoreMetadataRequest; +struct SGP32_StoreMetadataRequest; /* AuthenticateClientOkDPEsipa */ typedef struct AuthenticateClientOkDPEsipa { TransactionId_t *transactionId /* OPTIONAL */; - struct StoreMetadataRequest *profileMetaData /* OPTIONAL */; + struct SGP32_StoreMetadataRequest *profileMetaData /* OPTIONAL */; SmdpSigned2_t smdpSigned2; OCTET_STRING_t smdpSignature2; Certificate_t smdpCertificate; @@ -53,7 +53,7 @@ #endif /* Referred external types */ -#include "StoreMetadataRequest.h" +#include "SGP32-StoreMetadataRequest.h" #endif /* _AuthenticateClientOkDPEsipa_H_ */ #include <asn_internal.h> diff --git a/src/ipa/libasn/CMakeLists.txt b/src/ipa/libasn/CMakeLists.txt index 0eb5264..cb1999c 100644 --- a/src/ipa/libasn/CMakeLists.txt +++ b/src/ipa/libasn/CMakeLists.txt @@ -854,6 +854,8 @@ SGP32-SetDefaultDpAddressRequest.h SGP32-SetDefaultDpAddressResponse.c SGP32-SetDefaultDpAddressResponse.h +SGP32-StoreMetadataRequest.c +SGP32-StoreMetadataRequest.h SkipCerts.c SkipCerts.h SmdpSigned2.c diff --git a/src/ipa/libasn/SGP32-StoreMetadataRequest.c b/src/ipa/libasn/SGP32-StoreMetadataRequest.c new file mode 100644 index 0000000..e42d4a8 --- /dev/null +++ b/src/ipa/libasn/SGP32-StoreMetadataRequest.c @@ -0,0 +1,347 @@ +/* + * 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-StoreMetadataRequest.h" + +static int +memb_serviceProviderName_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 <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_profileName_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 <= 64)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_icon_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_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 = st->size; + + if((size <= 1024)) { + /* 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_serviceProviderName_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +static asn_per_constraints_t asn_PER_memb_serviceProviderName_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_profileName_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +static asn_per_constraints_t asn_PER_memb_profileName_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_icon_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..1024)) */}; +static asn_per_constraints_t asn_PER_memb_icon_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 11, 11, 0, 1024 } /* (SIZE(0..1024)) */, + 0, 0 /* No PER value map */ +}; +static int asn_DFL_7_cmp_2(const void *sptr) { + const ProfileClass_t *st = sptr; + + if(!st) { + return -1; /* No value is not a default value */ + } + + /* Test default value 2 */ + return (*st != 2); +} +static int asn_DFL_7_set_2(void **sptr) { + ProfileClass_t *st = *sptr; + + if(!st) { + st = (*sptr = CALLOC(1, sizeof(*st))); + if(!st) return -1; + } + + /* Install default value 2 */ + *st = 2; + return 0; +} +static asn_TYPE_member_t asn_MBR_notificationConfigurationInfo_8[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NotificationConfigurationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_notificationConfigurationInfo_tags_8[] = { + (ASN_TAG_CLASS_CONTEXT | (22 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_notificationConfigurationInfo_specs_8 = { + sizeof(struct SGP32_StoreMetadataRequest__notificationConfigurationInfo), + offsetof(struct SGP32_StoreMetadataRequest__notificationConfigurationInfo, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_notificationConfigurationInfo_8 = { + "notificationConfigurationInfo", + "notificationConfigurationInfo", + &asn_OP_SEQUENCE_OF, + asn_DEF_notificationConfigurationInfo_tags_8, + sizeof(asn_DEF_notificationConfigurationInfo_tags_8) + /sizeof(asn_DEF_notificationConfigurationInfo_tags_8[0]) - 1, /* 1 */ + asn_DEF_notificationConfigurationInfo_tags_8, /* Same as above */ + sizeof(asn_DEF_notificationConfigurationInfo_tags_8) + /sizeof(asn_DEF_notificationConfigurationInfo_tags_8[0]), /* 2 */ + { 0, 0, SEQUENCE_OF_constraint }, + asn_MBR_notificationConfigurationInfo_8, + 1, /* Single element */ + &asn_SPC_notificationConfigurationInfo_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SGP32_StoreMetadataRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SGP32_StoreMetadataRequest, iccid), + (ASN_TAG_CLASS_APPLICATION | (26 << 2)), + 0, + &asn_DEF_Iccid, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iccid" + }, + { ATF_NOFLAGS, 0, offsetof(struct SGP32_StoreMetadataRequest, serviceProviderName), + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UTF8String, + 0, + { &asn_OER_memb_serviceProviderName_constr_3, &asn_PER_memb_serviceProviderName_constr_3, memb_serviceProviderName_constraint_1 }, + 0, 0, /* No default value */ + "serviceProviderName" + }, + { ATF_NOFLAGS, 0, offsetof(struct SGP32_StoreMetadataRequest, profileName), + (ASN_TAG_CLASS_CONTEXT | (18 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UTF8String, + 0, + { &asn_OER_memb_profileName_constr_4, &asn_PER_memb_profileName_constr_4, memb_profileName_constraint_1 }, + 0, 0, /* No default value */ + "profileName" + }, + { ATF_POINTER, 10, offsetof(struct SGP32_StoreMetadataRequest, iconType), + (ASN_TAG_CLASS_CONTEXT | (19 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IconType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iconType" + }, + { ATF_POINTER, 9, offsetof(struct SGP32_StoreMetadataRequest, icon), + (ASN_TAG_CLASS_CONTEXT | (20 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { &asn_OER_memb_icon_constr_6, &asn_PER_memb_icon_constr_6, memb_icon_constraint_1 }, + 0, 0, /* No default value */ + "icon" + }, + { ATF_POINTER, 8, offsetof(struct SGP32_StoreMetadataRequest, profileClass), + (ASN_TAG_CLASS_CONTEXT | (21 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProfileClass, + 0, + { 0, 0, 0 }, + &asn_DFL_7_cmp_2, /* Compare DEFAULT 2 */ + &asn_DFL_7_set_2, /* Set DEFAULT 2 */ + "profileClass" + }, + { ATF_POINTER, 7, offsetof(struct SGP32_StoreMetadataRequest, notificationConfigurationInfo), + (ASN_TAG_CLASS_CONTEXT | (22 << 2)), + 0, + &asn_DEF_notificationConfigurationInfo_8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "notificationConfigurationInfo" + }, + { ATF_POINTER, 6, offsetof(struct SGP32_StoreMetadataRequest, profileOwner), + (ASN_TAG_CLASS_CONTEXT | (23 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OperatorId, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "profileOwner" + }, + { ATF_POINTER, 5, offsetof(struct SGP32_StoreMetadataRequest, profilePolicyRules), + (ASN_TAG_CLASS_CONTEXT | (25 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PprIds, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "profilePolicyRules" + }, + { ATF_POINTER, 4, offsetof(struct SGP32_StoreMetadataRequest, serviceSpecificDataStoredInEuicc), + (ASN_TAG_CLASS_CONTEXT | (34 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VendorSpecificExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "serviceSpecificDataStoredInEuicc" + }, + { ATF_POINTER, 3, offsetof(struct SGP32_StoreMetadataRequest, serviceSpecificDataNotStoredInEuicc), + (ASN_TAG_CLASS_CONTEXT | (35 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VendorSpecificExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "serviceSpecificDataNotStoredInEuicc" + }, + { ATF_POINTER, 2, offsetof(struct SGP32_StoreMetadataRequest, ecallIndication), + (ASN_TAG_CLASS_CONTEXT | (123 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ecallIndication" + }, + { ATF_POINTER, 1, offsetof(struct SGP32_StoreMetadataRequest, fallbackAllowed), + (ASN_TAG_CLASS_CONTEXT | (103 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fallbackAllowed" + }, +}; +static const int asn_MAP_SGP32_StoreMetadataRequest_oms_1[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; +static const ber_tlv_tag_t asn_DEF_SGP32_StoreMetadataRequest_tags_1[] = { + (ASN_TAG_CLASS_CONTEXT | (37 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SGP32_StoreMetadataRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_APPLICATION | (26 << 2)), 0, 0, 0 }, /* iccid */ + { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 1, 0, 0 }, /* serviceProviderName */ + { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 2, 0, 0 }, /* profileName */ + { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 3, 0, 0 }, /* iconType */ + { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 4, 0, 0 }, /* icon */ + { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 5, 0, 0 }, /* profileClass */ + { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 6, 0, 0 }, /* notificationConfigurationInfo */ + { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 7, 0, 0 }, /* profileOwner */ + { (ASN_TAG_CLASS_CONTEXT | (25 << 2)), 8, 0, 0 }, /* profilePolicyRules */ + { (ASN_TAG_CLASS_CONTEXT | (34 << 2)), 9, 0, 0 }, /* serviceSpecificDataStoredInEuicc */ + { (ASN_TAG_CLASS_CONTEXT | (35 << 2)), 10, 0, 0 }, /* serviceSpecificDataNotStoredInEuicc */ + { (ASN_TAG_CLASS_CONTEXT | (103 << 2)), 12, 0, 0 }, /* fallbackAllowed */ + { (ASN_TAG_CLASS_CONTEXT | (123 << 2)), 11, 0, 0 } /* ecallIndication */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SGP32_StoreMetadataRequest_specs_1 = { + sizeof(struct SGP32_StoreMetadataRequest), + offsetof(struct SGP32_StoreMetadataRequest, _asn_ctx), + asn_MAP_SGP32_StoreMetadataRequest_tag2el_1, + 13, /* Count of tags in the map */ + asn_MAP_SGP32_StoreMetadataRequest_oms_1, /* Optional members */ + 10, 0, /* Root/Additions */ + 13, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SGP32_StoreMetadataRequest = { + "SGP32-StoreMetadataRequest", + "SGP32-StoreMetadataRequest", + &asn_OP_SEQUENCE, + asn_DEF_SGP32_StoreMetadataRequest_tags_1, + sizeof(asn_DEF_SGP32_StoreMetadataRequest_tags_1) + /sizeof(asn_DEF_SGP32_StoreMetadataRequest_tags_1[0]) - 1, /* 1 */ + asn_DEF_SGP32_StoreMetadataRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SGP32_StoreMetadataRequest_tags_1) + /sizeof(asn_DEF_SGP32_StoreMetadataRequest_tags_1[0]), /* 2 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SGP32_StoreMetadataRequest_1, + 13, /* Elements count */ + &asn_SPC_SGP32_StoreMetadataRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/SGP32-StoreMetadataRequest.h b/src/ipa/libasn/SGP32-StoreMetadataRequest.h new file mode 100644 index 0000000..8f4e536 --- /dev/null +++ b/src/ipa/libasn/SGP32-StoreMetadataRequest.h @@ -0,0 +1,79 @@ +/* + * 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_StoreMetadataRequest_H_ +#define _SGP32_StoreMetadataRequest_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "Iccid.h" +#include <UTF8String.h> +#include "IconType.h" +#include <OCTET_STRING.h> +#include "ProfileClass.h" +#include "PprIds.h" +#include <BOOLEAN.h> +#include <asn_SEQUENCE_OF.h> +#include <constr_SEQUENCE_OF.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct OperatorId; +struct VendorSpecificExtension; +struct NotificationConfigurationInformation; + +/* SGP32-StoreMetadataRequest */ +typedef struct SGP32_StoreMetadataRequest { + Iccid_t iccid; + UTF8String_t serviceProviderName; + UTF8String_t profileName; + IconType_t *iconType /* OPTIONAL */; + OCTET_STRING_t *icon /* OPTIONAL */; + ProfileClass_t *profileClass /* DEFAULT 2 */; + struct SGP32_StoreMetadataRequest__notificationConfigurationInfo { + A_SEQUENCE_OF(struct NotificationConfigurationInformation) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *notificationConfigurationInfo; + struct OperatorId *profileOwner /* OPTIONAL */; + PprIds_t *profilePolicyRules /* OPTIONAL */; + struct VendorSpecificExtension *serviceSpecificDataStoredInEuicc /* OPTIONAL */; + struct VendorSpecificExtension *serviceSpecificDataNotStoredInEuicc /* OPTIONAL */; + BOOLEAN_t *ecallIndication /* OPTIONAL */; + BOOLEAN_t *fallbackAllowed /* OPTIONAL */; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SGP32_StoreMetadataRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SGP32_StoreMetadataRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_SGP32_StoreMetadataRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_SGP32_StoreMetadataRequest_1[13]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "OperatorId.h" +#include "VendorSpecificExtension.h" +#include "NotificationConfigurationInformation.h" + +#endif /* _SGP32_StoreMetadataRequest_H_ */ +#include <asn_internal.h> -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43049?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: Icfbc141dda82f091bcc9a1d7177e9fdb5b424750 Gerrit-Change-Number: 43049 Gerrit-PatchSet: 6 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: jolly <andreas(a)eversberg.eu>
1
0
0
0
[L] Change in onomondo-ipa[master]: V1.2: Add IPAe related ASN.1 templates
by jolly
19 Aug '26
19 Aug '26
jolly has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43048?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 IPAe related ASN.1 templates ...................................................................... V1.2: Add IPAe related ASN.1 templates There is no use of these templates, as beeing IPAe is not supported. Reference: SGP.32 Section 3.8.4 Related: SYS#8101 Change-Id: I7d659734bfac44da4f1f3d5bca80314b2f20c299 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/CMakeLists.txt A src/ipa/libasn/ISDRProprietaryApplicationTemplateIoT.c A src/ipa/libasn/ISDRProprietaryApplicationTemplateIoT.h A src/ipa/libasn/IpaeActivationRequest.c A src/ipa/libasn/IpaeActivationRequest.h A src/ipa/libasn/IpaeActivationResponse.c A src/ipa/libasn/IpaeActivationResponse.h 8 files changed, 324 insertions(+), 0 deletions(-) Approvals: Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index 87ea24f..0a53e06 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -352,6 +352,28 @@ } -- ASN1STOP +-- Section 3.8.4 +-- ASN1START +ISDRProprietaryApplicationTemplateIoT ::= [PRIVATE 1] SEQUENCE { -- Tag 'E1' + euiccConfiguration BIT STRING { + ipaeSupported(0), -- IPA in the eUICC (IPAe) supported + enabledProfile(1) -- eUICC contains an Enabled Profile + } +} +-- ASN1STOP +-- ASN1START +IpaeActivationRequest ::= [66] SEQUENCE { -- Tag 'BF42' + ipaeOption BIT STRING { + activateIpae(0) -- IPAe activation + } +} +-- ASN1START +-- ASN1STOP +IpaeActivationResponse ::= [66] SEQUENCE { -- Tag 'BF42' + ipaeActivationResult INTEGER {ok(0), notSupported(1)} +} +-- ASN1STOP + -- Section 4.1 -- ASN1START IpaCapabilities ::= SEQUENCE { diff --git a/src/ipa/libasn/CMakeLists.txt b/src/ipa/libasn/CMakeLists.txt index 209a5f3..0eb5264 100644 --- a/src/ipa/libasn/CMakeLists.txt +++ b/src/ipa/libasn/CMakeLists.txt @@ -478,6 +478,10 @@ IoTSpecificInfo.h IpaCapabilities.c IpaCapabilities.h +IpaeActivationRequest.c +IpaeActivationRequest.h +IpaeActivationResponse.c +IpaeActivationResponse.h IpaEuiccData.c IpaEuiccDataErrorCode.c IpaEuiccDataErrorCode.h @@ -492,6 +496,8 @@ IpaMode.h ISDRProprietaryApplicationTemplate.c ISDRProprietaryApplicationTemplate.h +ISDRProprietaryApplicationTemplateIoT.c +ISDRProprietaryApplicationTemplateIoT.h IssuerAltName.c IssuerAltName.h IssuingDistributionPoint.c diff --git a/src/ipa/libasn/ISDRProprietaryApplicationTemplateIoT.c b/src/ipa/libasn/ISDRProprietaryApplicationTemplateIoT.c new file mode 100644 index 0000000..01c6819 --- /dev/null +++ b/src/ipa/libasn/ISDRProprietaryApplicationTemplateIoT.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 "ISDRProprietaryApplicationTemplateIoT.h" + +static asn_TYPE_member_t asn_MBR_ISDRProprietaryApplicationTemplateIoT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ISDRProprietaryApplicationTemplateIoT, euiccConfiguration), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "euiccConfiguration" + }, +}; +static const ber_tlv_tag_t asn_DEF_ISDRProprietaryApplicationTemplateIoT_tags_1[] = { + (ASN_TAG_CLASS_PRIVATE | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ISDRProprietaryApplicationTemplateIoT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* euiccConfiguration */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ISDRProprietaryApplicationTemplateIoT_specs_1 = { + sizeof(struct ISDRProprietaryApplicationTemplateIoT), + offsetof(struct ISDRProprietaryApplicationTemplateIoT, _asn_ctx), + asn_MAP_ISDRProprietaryApplicationTemplateIoT_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_ISDRProprietaryApplicationTemplateIoT = { + "ISDRProprietaryApplicationTemplateIoT", + "ISDRProprietaryApplicationTemplateIoT", + &asn_OP_SEQUENCE, + asn_DEF_ISDRProprietaryApplicationTemplateIoT_tags_1, + sizeof(asn_DEF_ISDRProprietaryApplicationTemplateIoT_tags_1) + /sizeof(asn_DEF_ISDRProprietaryApplicationTemplateIoT_tags_1[0]) - 1, /* 1 */ + asn_DEF_ISDRProprietaryApplicationTemplateIoT_tags_1, /* Same as above */ + sizeof(asn_DEF_ISDRProprietaryApplicationTemplateIoT_tags_1) + /sizeof(asn_DEF_ISDRProprietaryApplicationTemplateIoT_tags_1[0]), /* 2 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ISDRProprietaryApplicationTemplateIoT_1, + 1, /* Elements count */ + &asn_SPC_ISDRProprietaryApplicationTemplateIoT_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/ISDRProprietaryApplicationTemplateIoT.h b/src/ipa/libasn/ISDRProprietaryApplicationTemplateIoT.h new file mode 100644 index 0000000..f651ce6 --- /dev/null +++ b/src/ipa/libasn/ISDRProprietaryApplicationTemplateIoT.h @@ -0,0 +1,48 @@ +/* + * 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 _ISDRProprietaryApplicationTemplateIoT_H_ +#define _ISDRProprietaryApplicationTemplateIoT_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ISDRProprietaryApplicationTemplateIoT__euiccConfiguration { + ISDRProprietaryApplicationTemplateIoT__euiccConfiguration_ipaeSupported = 0, + ISDRProprietaryApplicationTemplateIoT__euiccConfiguration_enabledProfile = 1 +} e_ISDRProprietaryApplicationTemplateIoT__euiccConfiguration; + +/* ISDRProprietaryApplicationTemplateIoT */ +typedef struct ISDRProprietaryApplicationTemplateIoT { + BIT_STRING_t euiccConfiguration; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ISDRProprietaryApplicationTemplateIoT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ISDRProprietaryApplicationTemplateIoT; + +#ifdef __cplusplus +} +#endif + +#endif /* _ISDRProprietaryApplicationTemplateIoT_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libasn/IpaeActivationRequest.c b/src/ipa/libasn/IpaeActivationRequest.c new file mode 100644 index 0000000..13165c2 --- /dev/null +++ b/src/ipa/libasn/IpaeActivationRequest.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 "IpaeActivationRequest.h" + +static asn_TYPE_member_t asn_MBR_IpaeActivationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct IpaeActivationRequest, ipaeOption), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ipaeOption" + }, +}; +static const ber_tlv_tag_t asn_DEF_IpaeActivationRequest_tags_1[] = { + (ASN_TAG_CLASS_CONTEXT | (66 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IpaeActivationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ipaeOption */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_IpaeActivationRequest_specs_1 = { + sizeof(struct IpaeActivationRequest), + offsetof(struct IpaeActivationRequest, _asn_ctx), + asn_MAP_IpaeActivationRequest_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_IpaeActivationRequest = { + "IpaeActivationRequest", + "IpaeActivationRequest", + &asn_OP_SEQUENCE, + asn_DEF_IpaeActivationRequest_tags_1, + sizeof(asn_DEF_IpaeActivationRequest_tags_1) + /sizeof(asn_DEF_IpaeActivationRequest_tags_1[0]) - 1, /* 1 */ + asn_DEF_IpaeActivationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_IpaeActivationRequest_tags_1) + /sizeof(asn_DEF_IpaeActivationRequest_tags_1[0]), /* 2 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_IpaeActivationRequest_1, + 1, /* Elements count */ + &asn_SPC_IpaeActivationRequest_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/IpaeActivationRequest.h b/src/ipa/libasn/IpaeActivationRequest.h new file mode 100644 index 0000000..0bf6857 --- /dev/null +++ b/src/ipa/libasn/IpaeActivationRequest.h @@ -0,0 +1,47 @@ +/* + * 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 _IpaeActivationRequest_H_ +#define _IpaeActivationRequest_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <BIT_STRING.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum IpaeActivationRequest__ipaeOption { + IpaeActivationRequest__ipaeOption_activateIpae = 0 +} e_IpaeActivationRequest__ipaeOption; + +/* IpaeActivationRequest */ +typedef struct IpaeActivationRequest { + BIT_STRING_t ipaeOption; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IpaeActivationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IpaeActivationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _IpaeActivationRequest_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libasn/IpaeActivationResponse.c b/src/ipa/libasn/IpaeActivationResponse.c new file mode 100644 index 0000000..2ba8ae7 --- /dev/null +++ b/src/ipa/libasn/IpaeActivationResponse.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 "IpaeActivationResponse.h" + +static asn_TYPE_member_t asn_MBR_IpaeActivationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct IpaeActivationResponse, ipaeActivationResult), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ipaeActivationResult" + }, +}; +static const ber_tlv_tag_t asn_DEF_IpaeActivationResponse_tags_1[] = { + (ASN_TAG_CLASS_CONTEXT | (66 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IpaeActivationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ipaeActivationResult */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_IpaeActivationResponse_specs_1 = { + sizeof(struct IpaeActivationResponse), + offsetof(struct IpaeActivationResponse, _asn_ctx), + asn_MAP_IpaeActivationResponse_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_IpaeActivationResponse = { + "IpaeActivationResponse", + "IpaeActivationResponse", + &asn_OP_SEQUENCE, + asn_DEF_IpaeActivationResponse_tags_1, + sizeof(asn_DEF_IpaeActivationResponse_tags_1) + /sizeof(asn_DEF_IpaeActivationResponse_tags_1[0]) - 1, /* 1 */ + asn_DEF_IpaeActivationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_IpaeActivationResponse_tags_1) + /sizeof(asn_DEF_IpaeActivationResponse_tags_1[0]), /* 2 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_IpaeActivationResponse_1, + 1, /* Elements count */ + &asn_SPC_IpaeActivationResponse_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/IpaeActivationResponse.h b/src/ipa/libasn/IpaeActivationResponse.h new file mode 100644 index 0000000..ab981f2 --- /dev/null +++ b/src/ipa/libasn/IpaeActivationResponse.h @@ -0,0 +1,48 @@ +/* + * 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 _IpaeActivationResponse_H_ +#define _IpaeActivationResponse_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum IpaeActivationResponse__ipaeActivationResult { + IpaeActivationResponse__ipaeActivationResult_ok = 0, + IpaeActivationResponse__ipaeActivationResult_notSupported = 1 +} e_IpaeActivationResponse__ipaeActivationResult; + +/* IpaeActivationResponse */ +typedef struct IpaeActivationResponse { + long ipaeActivationResult; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IpaeActivationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IpaeActivationResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _IpaeActivationResponse_H_ */ +#include <asn_internal.h> -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43048?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: I7d659734bfac44da4f1f3d5bca80314b2f20c299 Gerrit-Change-Number: 43048 Gerrit-PatchSet: 6 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: jolly <andreas(a)eversberg.eu>
1
0
0
0
[S] Change in onomondo-ipa[master]: V1.2: Add TERMINAL CAPABILITY for IoT support
by jolly
19 Aug '26
19 Aug '26
jolly has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43047?usp=email
) Change subject: V1.2: Add TERMINAL CAPABILITY for IoT support ...................................................................... V1.2: Add TERMINAL CAPABILITY for IoT support Also enable support for IoT function by setting the TERMINAL CAPABILITY. If not set, eUICC may not support IoT specific functions. With IoT eUICC emulation it is disabled. Reference: SGP.32 Section 3.8.2 Related: SYS#8101 Change-Id: I1116bee93b31ee4a159125d840d7c5866be6fdb4 --- M src/ipa/libipa/euicc.c 1 file changed, 14 insertions(+), 6 deletions(-) Approvals: laforge: Looks good to me, but someone else must approve dexter: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/ipa/libipa/euicc.c b/src/ipa/libipa/euicc.c index d14855a..cfeda30 100644 --- a/src/ipa/libipa/euicc.c +++ b/src/ipa/libipa/euicc.c @@ -357,10 +357,9 @@ return es10x_res; } -/* Send terminal capablilities, see also 3gpp TS 102.221 V16.2.0, section 11.1.19.2.4 */ -static int send_termcap(struct ipa_context *ctx) +/* Send terminal capablilities, see also 3gpp TS 102.221 V16.2.0, section 11.1.19 */ +static int send_termcap(struct ipa_context *ctx, const uint8_t *termcap, size_t termcap_size) { - const uint8_t termcap[] = { 0xA9, 0x03, 0x83, 0x01, 0x07 }; int rc; struct req_apdu req_apdu = { 0 }; struct res_apdu res_apdu = { 0 }; @@ -375,8 +374,8 @@ req_apdu.ins = 0xAA; req_apdu.p1 = 0x00; req_apdu.p2 = 0x00; - req_apdu.lc = sizeof(termcap); - memcpy(req_apdu.data, termcap, sizeof(termcap)); + req_apdu.lc = termcap_size; + memcpy(req_apdu.data, termcap, termcap_size); buf_req = format_req_apdu(&req_apdu); rc = ipa_scard_transceive(ctx->scard_ctx, buf_res, buf_req); @@ -533,9 +532,18 @@ * \returns 0 on success, negative on error. */ int ipa_euicc_init_es10x(struct ipa_context *ctx) { + /* Capabilities according to 3GPP TS 102.221, section 11.1.19.2.4 and GSMA SGP.32, section 3.8.2 */ + uint8_t termcap[] = { 0xA9, 0x06, 0x83, 0x01, 0x07, 0x84, 0x01, 0x01 }; + size_t termcap_size = sizeof(termcap); int rc; - rc = send_termcap(ctx); + /* Set capabilities to enable support for eUICC and IoT functions. */ + /* A non-IoT eUICC does not have IoT capabilities. */ + if (ctx->cfg->iot_euicc_emu_enabled) { + termcap[1] -= 3; + termcap_size -= 3; + } + rc = send_termcap(ctx, termcap, termcap_size); if (rc < 0) return rc; -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43047?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: I1116bee93b31ee4a159125d840d7c5866be6fdb4 Gerrit-Change-Number: 43047 Gerrit-PatchSet: 6 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[M] Change in onomondo-ipa[master]: V1.2: Add new flags to eUICCMemoryReset
by jolly
19 Aug '26
19 Aug '26
jolly has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43046?usp=email
) Change subject: V1.2: Add new flags to eUICCMemoryReset ...................................................................... V1.2: Add new flags to eUICCMemoryReset Introduce flags to reset pre-installed test profiles and provisioning profiles. The IoT eUICC emulation forwards these flags. The eUICC with V3.0 of SGP.22 will delete these profiles. Reference: SGP.32 Section 5.9.5, SGP.22 Section 5.7.19 Related: SYS#8101 Change-Id: I8c683e93c2a10ff64c3ef14767000c59f81be090 --- M asn1/RSPDefinitions.asn M asn1/SGP32Definitions.asn M include/onomondo/ipa/ipad.h M src/ipa/libasn/EuiccMemoryResetRequest.h M src/ipa/libasn/SGP32-EuiccMemoryResetRequest.h M src/ipa/libasn/SGP32-EuiccMemoryResetResponse.c M src/ipa/libasn/SGP32-EuiccMemoryResetResponse.h M src/ipa/libipa/es10b_euicc_mem_rst.c M src/ipa/libipa/es10b_euicc_mem_rst.h M src/ipa/libipa/ipad.c M src/ipa/main.c 11 files changed, 52 insertions(+), 27 deletions(-) Approvals: Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/RSPDefinitions.asn b/asn1/RSPDefinitions.asn index f46100c..5427515 100644 --- a/asn1/RSPDefinitions.asn +++ b/asn1/RSPDefinitions.asn @@ -586,7 +586,10 @@ resetOptions [2] BIT STRING { deleteOperationalProfiles(0), deleteFieldLoadedTestProfiles(1), - resetDefaultSmdpAddress(2)} + resetDefaultSmdpAddress(2), + deletePreLoadedTestProfiles(3), -- #SupportedFromV3.0.0# + deleteProvisioningProfiles(4)} -- #SupportedFromV3.0.0# + -- setting bits 0, 1, 3 and 4 wipes all Profiles } EuiccMemoryResetResponse ::= [52] SEQUENCE { -- Tag 'BF34' diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index e34cae0..87ea24f 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -479,14 +479,16 @@ deleteOperationalProfiles(0), deleteFieldLoadedTestProfiles(1), resetDefaultSmdpAddress(2), - resetEimConfigData(3), - resetImmediateEnableConfig(4) + deletePreLoadedTestProfiles(3), + deleteProvisioningProfiles(4), + resetEimConfigData(5), + resetImmediateEnableConfig (6) } } -SGP32-EuiccMemoryResetResponse ::= [52] SEQUENCE { -- Tag 'BF34' - resetResult INTEGER {ok(0), nothingToDelete(1), catBusy(5), undefinedError(127)}, - resetEimResult [1] INTEGER {ok(0), nothingToDelete(1), eimResetNotSupported(2), undefinedError(127)} OPTIONAL, - resetImmediateEnableConfigResult [2] INTEGER {ok(0), resetAECNotSupported(1), undefinedError(127)} OPTIONAL +SGP32-EuiccMemoryResetResponse ::= [100] SEQUENCE { -- Tag 'BF64' + resetResult INTEGER {ok(0), nothingToDelete(1), catBusy(5), ecallActive(104), undefinedError(127)}, + resetEimResult INTEGER {ok(0), nothingToDelete(1), eimResetNotSupported(2), undefinedError(127)} OPTIONAL, + resetImmediateEnableConfigResult INTEGER {ok(0), resetIECNotSupported (1), undefinedError(127)} OPTIONAL } -- Section 5.9.10 diff --git a/include/onomondo/ipa/ipad.h b/include/onomondo/ipa/ipad.h index 29bbd27..e356f45 100644 --- a/include/onomondo/ipa/ipad.h +++ b/include/onomondo/ipa/ipad.h @@ -92,8 +92,8 @@ int ipa_init(struct ipa_context *ctx); int eim_init(struct ipa_context *ctx); int ipa_add_init_eim_cfg(struct ipa_context *ctx, struct ipa_buf *cfg); -int ipa_euicc_mem_rst(struct ipa_context *ctx, bool operatnl_profiles, bool test_profiles, bool default_smdp_addr, - bool eim_cfg_data, bool immediate_enable_cfg); +int ipa_euicc_mem_rst(struct ipa_context *ctx, bool operatnl_profiles, bool field_test_profiles, bool default_smdp_addr, + bool pre_test_profiles, bool provisioning_profiles, bool eim_cfg_data, bool immediate_enable_cfg); int ipa_execute_fallback_mechanism(struct ipa_context *ctx); int ipa_return_from_fallback(struct ipa_context *ctx); int ipa_enable_emerg_prfle(struct ipa_context *ctx); diff --git a/src/ipa/libasn/EuiccMemoryResetRequest.h b/src/ipa/libasn/EuiccMemoryResetRequest.h index 8ff519a..cf550e5 100644 --- a/src/ipa/libasn/EuiccMemoryResetRequest.h +++ b/src/ipa/libasn/EuiccMemoryResetRequest.h @@ -23,7 +23,9 @@ typedef enum EuiccMemoryResetRequest__resetOptions { EuiccMemoryResetRequest__resetOptions_deleteOperationalProfiles = 0, EuiccMemoryResetRequest__resetOptions_deleteFieldLoadedTestProfiles = 1, - EuiccMemoryResetRequest__resetOptions_resetDefaultSmdpAddress = 2 + EuiccMemoryResetRequest__resetOptions_resetDefaultSmdpAddress = 2, + EuiccMemoryResetRequest__resetOptions_deletePreLoadedTestProfiles = 3, + EuiccMemoryResetRequest__resetOptions_deleteProvisioningProfiles = 4 } e_EuiccMemoryResetRequest__resetOptions; /* EuiccMemoryResetRequest */ diff --git a/src/ipa/libasn/SGP32-EuiccMemoryResetRequest.h b/src/ipa/libasn/SGP32-EuiccMemoryResetRequest.h index 0761f51..3ab6e00 100644 --- a/src/ipa/libasn/SGP32-EuiccMemoryResetRequest.h +++ b/src/ipa/libasn/SGP32-EuiccMemoryResetRequest.h @@ -24,8 +24,10 @@ SGP32_EuiccMemoryResetRequest__resetOptions_deleteOperationalProfiles = 0, SGP32_EuiccMemoryResetRequest__resetOptions_deleteFieldLoadedTestProfiles = 1, SGP32_EuiccMemoryResetRequest__resetOptions_resetDefaultSmdpAddress = 2, - SGP32_EuiccMemoryResetRequest__resetOptions_resetEimConfigData = 3, - SGP32_EuiccMemoryResetRequest__resetOptions_resetImmediateEnableConfig = 4 + SGP32_EuiccMemoryResetRequest__resetOptions_deletePreLoadedTestProfiles = 3, + SGP32_EuiccMemoryResetRequest__resetOptions_deleteProvisioningProfiles = 4, + SGP32_EuiccMemoryResetRequest__resetOptions_resetEimConfigData = 5, + SGP32_EuiccMemoryResetRequest__resetOptions_resetImmediateEnableConfig = 6 } e_SGP32_EuiccMemoryResetRequest__resetOptions; /* SGP32-EuiccMemoryResetRequest */ diff --git a/src/ipa/libasn/SGP32-EuiccMemoryResetResponse.c b/src/ipa/libasn/SGP32-EuiccMemoryResetResponse.c index cc66531..6fa2b83 100644 --- a/src/ipa/libasn/SGP32-EuiccMemoryResetResponse.c +++ b/src/ipa/libasn/SGP32-EuiccMemoryResetResponse.c @@ -9,8 +9,8 @@ static asn_TYPE_member_t asn_MBR_SGP32_EuiccMemoryResetResponse_1[] = { { ATF_NOFLAGS, 0, offsetof(struct SGP32_EuiccMemoryResetResponse, resetResult), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ &asn_DEF_NativeInteger, 0, { 0, 0, 0 }, @@ -38,11 +38,11 @@ }; static const int asn_MAP_SGP32_EuiccMemoryResetResponse_oms_1[] = { 1, 2 }; static const ber_tlv_tag_t asn_DEF_SGP32_EuiccMemoryResetResponse_tags_1[] = { - (ASN_TAG_CLASS_CONTEXT | (52 << 2)), + (ASN_TAG_CLASS_CONTEXT | (100 << 2)), (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) }; static const asn_TYPE_tag2member_t asn_MAP_SGP32_EuiccMemoryResetResponse_tag2el_1[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* resetResult */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resetResult */ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* resetEimResult */ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* resetImmediateEnableConfigResult */ }; diff --git a/src/ipa/libasn/SGP32-EuiccMemoryResetResponse.h b/src/ipa/libasn/SGP32-EuiccMemoryResetResponse.h index da8bcb6..89b4b1a 100644 --- a/src/ipa/libasn/SGP32-EuiccMemoryResetResponse.h +++ b/src/ipa/libasn/SGP32-EuiccMemoryResetResponse.h @@ -24,6 +24,7 @@ SGP32_EuiccMemoryResetResponse__resetResult_ok = 0, SGP32_EuiccMemoryResetResponse__resetResult_nothingToDelete = 1, SGP32_EuiccMemoryResetResponse__resetResult_catBusy = 5, + SGP32_EuiccMemoryResetResponse__resetResult_ecallActive = 104, SGP32_EuiccMemoryResetResponse__resetResult_undefinedError = 127 } e_SGP32_EuiccMemoryResetResponse__resetResult; typedef enum SGP32_EuiccMemoryResetResponse__resetEimResult { @@ -34,7 +35,7 @@ } e_SGP32_EuiccMemoryResetResponse__resetEimResult; typedef enum SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult { SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult_ok = 0, - SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult_resetAECNotSupported = 1, + SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult_resetIECNotSupported = 1, SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult_undefinedError = 127 } e_SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult; diff --git a/src/ipa/libipa/es10b_euicc_mem_rst.c b/src/ipa/libipa/es10b_euicc_mem_rst.c index 5b2040f..5c9d6d2 100644 --- a/src/ipa/libipa/es10b_euicc_mem_rst.c +++ b/src/ipa/libipa/es10b_euicc_mem_rst.c @@ -38,6 +38,7 @@ { SGP32_EuiccMemoryResetResponse__resetResult_ok, "ok" }, { SGP32_EuiccMemoryResetResponse__resetResult_nothingToDelete, "nothingToDelete" }, { SGP32_EuiccMemoryResetResponse__resetResult_catBusy, "catBusy" }, + { SGP32_EuiccMemoryResetResponse__resetResult_ecallActive, "ecallActive" }, { SGP32_EuiccMemoryResetResponse__resetResult_undefinedError, "undefinedError" }, { 0, NULL } }; @@ -52,8 +53,8 @@ static const struct num_str_map sgp32_error_code_strings_resetImmediateEnableConfigResult[] = { { SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult_ok, "ok" }, - { SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult_resetAECNotSupported, "nothingToDelete" }, - { SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult_undefinedError, "eimResetNotSupported" }, + { SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult_resetIECNotSupported, "resetIECNotSupported" }, + { SGP32_EuiccMemoryResetResponse__resetImmediateEnableConfigResult_undefinedError, "undefinedError" }, { 0, NULL } }; @@ -144,10 +145,14 @@ if (req->operatnl_profiles) rst_opt[0] |= (1 << (7 - SGP32_EuiccMemoryResetRequest__resetOptions_deleteOperationalProfiles)); - if (req->test_profiles) + if (req->field_test_profiles) rst_opt[0] |= (1 << (7 - SGP32_EuiccMemoryResetRequest__resetOptions_deleteFieldLoadedTestProfiles)); if (req->default_smdp_addr) rst_opt[0] |= (1 << (7 - SGP32_EuiccMemoryResetRequest__resetOptions_resetDefaultSmdpAddress)); + if (req->pre_test_profiles) + rst_opt[0] |= (1 << (7 - SGP32_EuiccMemoryResetRequest__resetOptions_deletePreLoadedTestProfiles)); + if (req->provisioning_profiles) + rst_opt[0] |= (1 << (7 - SGP32_EuiccMemoryResetRequest__resetOptions_deleteProvisioningProfiles)); if (req->eim_cfg_data) rst_opt[0] |= (1 << (7 - SGP32_EuiccMemoryResetRequest__resetOptions_resetEimConfigData)); if (req->immediate_enable_cfg) @@ -189,10 +194,14 @@ if (req->operatnl_profiles) rst_opt[0] |= (1 << (7 - EuiccMemoryResetRequest__resetOptions_deleteOperationalProfiles)); - if (req->test_profiles) + if (req->field_test_profiles) rst_opt[0] |= (1 << (7 - EuiccMemoryResetRequest__resetOptions_deleteFieldLoadedTestProfiles)); if (req->default_smdp_addr) rst_opt[0] |= (1 << (7 - EuiccMemoryResetRequest__resetOptions_resetDefaultSmdpAddress)); + if (req->pre_test_profiles) + rst_opt[0] |= (1 << (7 - EuiccMemoryResetRequest__resetOptions_deletePreLoadedTestProfiles)); + if (req->provisioning_profiles) + rst_opt[0] |= (1 << (7 - EuiccMemoryResetRequest__resetOptions_deleteProvisioningProfiles)); if (req->eim_cfg_data) { IPA_LOGP_ES10X("eUICCMemoryReset", LINFO, diff --git a/src/ipa/libipa/es10b_euicc_mem_rst.h b/src/ipa/libipa/es10b_euicc_mem_rst.h index 8f4d304..f8974f8 100644 --- a/src/ipa/libipa/es10b_euicc_mem_rst.h +++ b/src/ipa/libipa/es10b_euicc_mem_rst.h @@ -12,8 +12,10 @@ /* GSMA SGP.22, section 5.7.13 */ struct ipa_es10b_euicc_mem_rst { bool operatnl_profiles; - bool test_profiles; + bool field_test_profiles; bool default_smdp_addr; + bool pre_test_profiles; + bool provisioning_profiles; bool eim_cfg_data; bool immediate_enable_cfg; }; diff --git a/src/ipa/libipa/ipad.c b/src/ipa/libipa/ipad.c index a465444..730ff50 100644 --- a/src/ipa/libipa/ipad.c +++ b/src/ipa/libipa/ipad.c @@ -252,18 +252,22 @@ /*! reset memory of the eUICC (eUICCMemoryReset). * \param[inout] ctx pointer to ipa_context. * \param[inout] operatnl_profiles apply reset option "deleteOperationalProfiles". - * \param[inout] test_profiles apply reset option "deleteFieldLoadedTestProfiles". + * \param[inout] field_test_profiles apply reset option "deleteFieldLoadedTestProfiles". * \param[inout] default_smdp_addr apply reset option "resetDefaultSmdpAddress". + * \param[inout] pre_test_profiles apply reset option "deletePreLoadedTestProfiles". + * \param[inout] provisioning_profiles apply reset option "deleteProvisioningProfiles". * \param[inout] eim_cfg_data apply reset option "resetEimConfigData". * \param[inout] immediate_enable_cfg apply reset option "resetImmediateEnableConfig". * \returns 0 on success, negative on error. */ -int ipa_euicc_mem_rst(struct ipa_context *ctx, bool operatnl_profiles, bool test_profiles, bool default_smdp_addr, - bool eim_cfg_data, bool immediate_enable_cfg) +int ipa_euicc_mem_rst(struct ipa_context *ctx, bool operatnl_profiles, bool field_test_profiles, bool default_smdp_addr, + bool pre_test_profiles, bool provisioning_profiles, bool eim_cfg_data, bool immediate_enable_cfg) { struct ipa_es10b_euicc_mem_rst euicc_mem_rst = { 0 }; euicc_mem_rst.operatnl_profiles = operatnl_profiles; - euicc_mem_rst.test_profiles = test_profiles; + euicc_mem_rst.field_test_profiles = field_test_profiles; euicc_mem_rst.default_smdp_addr = default_smdp_addr; + euicc_mem_rst.pre_test_profiles = pre_test_profiles; + euicc_mem_rst.provisioning_profiles = provisioning_profiles; euicc_mem_rst.eim_cfg_data = eim_cfg_data; euicc_mem_rst.immediate_enable_cfg = immediate_enable_cfg; return ipa_es10b_euicc_mem_rst(ctx, &euicc_mem_rst); diff --git a/src/ipa/main.c b/src/ipa/main.c index d5ec942..4312a25 100644 --- a/src/ipa/main.c +++ b/src/ipa/main.c @@ -361,7 +361,7 @@ break; case OPER_EUICC_MEMORY_RESET: /* Perform an eUICC memory reset */ - ipa_euicc_mem_rst(ctx, true, true, true, true, true); + ipa_euicc_mem_rst(ctx, true, true, true, true, true, true, true); break; case OPER_EXEC_FALLBACK_MECH: /* Trigger enabling of fallback profile */ -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43046?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: I8c683e93c2a10ff64c3ef14767000c59f81be090 Gerrit-Change-Number: 43046 Gerrit-PatchSet: 5 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[XS] Change in onomondo-ipa[master]: V1.2: Add more error codes to AddInitialEimResponse
by jolly
19 Aug '26
19 Aug '26
jolly has submitted this change. (
https://gerrit.osmocom.org/c/onomondo-ipa/+/43045?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 more error codes to AddInitialEimResponse ...................................................................... V1.2: Add more error codes to AddInitialEimResponse Reference: SGP.32 Section 3.5.2 Related: SYS#8101 Change-Id: Ib4bc1e06b6571d18ff46080f5e5ba1fe3bc0be70 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/AddInitialEimResponse.h M src/ipa/libipa/es10b_add_init_eim.c 3 files changed, 6 insertions(+), 3 deletions(-) Approvals: laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified dexter: Looks good to me, approved diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index e691ba7..e34cae0 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -461,10 +461,11 @@ }, addInitialEimError INTEGER { insufficientMemory(1), - unsignedEimConfigDisallowed(2), + associatedEimAlreadyExists (2), ciPKUnknown(3), invalidAssociationToken(5), counterValueOutOfRange(6), + commandError(7), undefinedError(127) } } diff --git a/src/ipa/libasn/AddInitialEimResponse.h b/src/ipa/libasn/AddInitialEimResponse.h index 72902ad..8cf1756 100644 --- a/src/ipa/libasn/AddInitialEimResponse.h +++ b/src/ipa/libasn/AddInitialEimResponse.h @@ -39,10 +39,11 @@ } AddInitialEimResponse__addInitialEimOk__Member_PR; typedef enum AddInitialEimResponse__addInitialEimError { AddInitialEimResponse__addInitialEimError_insufficientMemory = 1, - AddInitialEimResponse__addInitialEimError_unsignedEimConfigDisallowed = 2, + AddInitialEimResponse__addInitialEimError_associatedEimAlreadyExists = 2, AddInitialEimResponse__addInitialEimError_ciPKUnknown = 3, AddInitialEimResponse__addInitialEimError_invalidAssociationToken = 5, AddInitialEimResponse__addInitialEimError_counterValueOutOfRange = 6, + AddInitialEimResponse__addInitialEimError_commandError = 7, AddInitialEimResponse__addInitialEimError_undefinedError = 127 } e_AddInitialEimResponse__addInitialEimError; diff --git a/src/ipa/libipa/es10b_add_init_eim.c b/src/ipa/libipa/es10b_add_init_eim.c index ae3c80a..0b9fd5e 100644 --- a/src/ipa/libipa/es10b_add_init_eim.c +++ b/src/ipa/libipa/es10b_add_init_eim.c @@ -24,10 +24,11 @@ static const struct num_str_map error_code_strings[] = { { AddInitialEimResponse__addInitialEimError_insufficientMemory, "insufficientMemory" }, - { AddInitialEimResponse__addInitialEimError_unsignedEimConfigDisallowed, "unsignedEimConfigDisallowed" }, + { AddInitialEimResponse__addInitialEimError_associatedEimAlreadyExists, "associatedEimAlreadyExists" }, { AddInitialEimResponse__addInitialEimError_ciPKUnknown, "ciPKUnknown" }, { AddInitialEimResponse__addInitialEimError_invalidAssociationToken, "invalidAssociationToken" }, { AddInitialEimResponse__addInitialEimError_counterValueOutOfRange, "counterValueOutOfRange" }, + { AddInitialEimResponse__addInitialEimError_commandError, "commandError" }, { AddInitialEimResponse__addInitialEimError_undefinedError, "undefinedError" }, { 0, NULL } }; -- To view, visit
https://gerrit.osmocom.org/c/onomondo-ipa/+/43045?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: Ib4bc1e06b6571d18ff46080f5e5ba1fe3bc0be70 Gerrit-Change-Number: 43045 Gerrit-PatchSet: 5 Gerrit-Owner: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
1
0
0
0
[XS] Change in osmo-msc[master]: smpp: Remove unnecessary printf
by pespin
19 Aug '26
19 Aug '26
pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-msc/+/43292?usp=email
) Change subject: smpp: Remove unnecessary printf ...................................................................... smpp: Remove unnecessary printf This is probably a debug leftover, remove it. Related: OS#7059 Reported-By: Adam Bedard <adam.bedard(a)gmail.com> Change-Id: I183a49f70697859c625803478847d02176eea75d --- M src/libsmpputil/smpp_msc.c 1 file changed, 0 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified osmith: Looks good to me, approved diff --git a/src/libsmpputil/smpp_msc.c b/src/libsmpputil/smpp_msc.c index 5fdba36..69b86bd 100644 --- a/src/libsmpputil/smpp_msc.c +++ b/src/libsmpputil/smpp_msc.c @@ -258,7 +258,6 @@ sms_msg_len, sizeof(sms->user_data)); return ESME_RINVPARLEN; } - printf("copying %u bytes user data...\n", ud_len); memcpy(sms->user_data, sms_msg, ud_len); sms_msg += ud_len; sms_msg_len -= ud_len; -- To view, visit
https://gerrit.osmocom.org/c/osmo-msc/+/43292?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Change-Id: I183a49f70697859c625803478847d02176eea75d Gerrit-Change-Number: 43292 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1
0
0
0
[S] Change in osmo-bsc[master]: OM2K: Check bounds of OM2K Negotiation Request
by jolly
19 Aug '26
19 Aug '26
jolly has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-bsc/+/43293?usp=email
) Change subject: OM2K: Check bounds of OM2K Negotiation Request ...................................................................... OM2K: Check bounds of OM2K Negotiation Request Check if message length and array sizes are large enough to read and store IWD versions while parsing OM2K Negotiation Request. This prevents out-of-bounds read and write, if message is corrupted. Related: OS#7057 Change-Id: I2de0db1b717a97ab07964d49509a8242c7e4c3ed --- M src/osmo-bsc/abis_om2000.c 1 file changed, 28 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/93/43293/1 diff --git a/src/osmo-bsc/abis_om2000.c b/src/osmo-bsc/abis_om2000.c index 69a86b5..825c68a 100644 --- a/src/osmo-bsc/abis_om2000.c +++ b/src/osmo-bsc/abis_om2000.c @@ -2773,7 +2773,7 @@ struct gsm_bts *bts = sign_link->trx->bts; struct abis_om2k_hdr *o2h = msgb_l2(msg); struct iwd_type iwd_types[16]; - uint8_t num_iwd_types = o2h->data[2]; + uint8_t num_iwd_types; uint8_t *cur = o2h->data+3; unsigned int i; int v; @@ -2782,18 +2782,43 @@ uint8_t *out_cur = out_buf+1; uint8_t out_num_types = 0; + if (msgb_l2len(msg) < sizeof(*o2h) + 3) { + LOGP(DNM, LOGL_ERROR, "Message too short\n"); + return -EINVAL; + } + num_iwd_types = o2h->data[2]; + memset(iwd_types, 0, sizeof(iwd_types)); /* Parse the RBS-supported IWD versions into iwd_types array */ for (i = 0; i < num_iwd_types; i++) { - uint8_t num_versions = *cur++; - uint8_t iwd_type = *cur++; + uint8_t num_versions, iwd_type; + + if (cur + 2 > (uint8_t *)msgb_l2(msg) + msgb_l2len(msg)) { + LOGP(DNM, LOGL_ERROR, "Message too short\n"); + return -EINVAL; + } + num_versions = *cur++; + iwd_type = *cur++; + + if (num_versions > ARRAY_SIZE(iwd_types[0].v)) { + LOGP(DNM, LOGL_ERROR, "Num versions %u out of range\n", num_versions); + return -EINVAL; + } + if (iwd_type >= ARRAY_SIZE(iwd_types)) { + LOGP(DNM, LOGL_ERROR, "IWD Type %u out of range\n", iwd_type); + return -EINVAL; + } iwd_types[iwd_type].num_vers = num_versions; for (v = 0; v < num_versions; v++) { struct iwd_version *iwd_v = &iwd_types[iwd_type].v[v]; + if (cur + 6 > (uint8_t *)msgb_l2(msg) + msgb_l2len(msg)) { + LOGP(DNM, LOGL_ERROR, "Message too short\n"); + return -EINVAL; + } memcpy(iwd_v->gen_char, cur, 3); cur += 3; memcpy(iwd_v->rev_char, cur, 3); -- To view, visit
https://gerrit.osmocom.org/c/osmo-bsc/+/43293?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I2de0db1b717a97ab07964d49509a8242c7e4c3ed Gerrit-Change-Number: 43293 Gerrit-PatchSet: 1 Gerrit-Owner: jolly <andreas(a)eversberg.eu>
1
0
0
0
[XS] Change in osmo-msc[master]: smpp: Remove unnecessary printf
by osmith
19 Aug '26
19 Aug '26
Attention is currently required from: fixeria, pespin. osmith has posted comments on this change by pespin. (
https://gerrit.osmocom.org/c/osmo-msc/+/43292?usp=email
) Change subject: smpp: Remove unnecessary printf ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-msc/+/43292?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Change-Id: I183a49f70697859c625803478847d02176eea75d Gerrit-Change-Number: 43292 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 19 Aug 2026 08:16:09 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1
0
0
0
[S] Change in osmo-msc[master]: sgs_iface: clean up code in function decode_mme_name
by pespin
19 Aug '26
19 Aug '26
Attention is currently required from: dexter, laforge. pespin has posted comments on this change by dexter. (
https://gerrit.osmocom.org/c/osmo-msc/+/43237?usp=email
) Change subject: sgs_iface: clean up code in function decode_mme_name ...................................................................... Patch Set 6: Code-Review+1 (1 comment) File src/libmsc/sgs_iface.c:
https://gerrit.osmocom.org/c/osmo-msc/+/43237/comment/5e08c959_b888b659?usp…
: PS6, Line 192: osmo_apn_to_str(mme_name, mme_name_enc, mme_name_enc_len); > The check in line 176 is still valid. […] Done -- To view, visit
https://gerrit.osmocom.org/c/osmo-msc/+/43237?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Change-Id: I9aec8300f15264b68ac8e7805e93e621b12cafb2 Gerrit-Change-Number: 43237 Gerrit-PatchSet: 6 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Wed, 19 Aug 2026 08:10:56 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Comment-In-Reply-To: dexter <pmaier(a)sysmocom.de>
1
0
0
0
[XS] Change in libosmocore[master]: tests/sms: Validate gsm_septet_pack2() succeeds
by pespin
19 Aug '26
19 Aug '26
pespin has submitted this change. (
https://gerrit.osmocom.org/c/libosmocore/+/43265?usp=email
) Change subject: tests/sms: Validate gsm_septet_pack2() succeeds ...................................................................... tests/sms: Validate gsm_septet_pack2() succeeds Related: Coverity CID#562694 Change-Id: I12583ce07e7885974225ce0118f737c4a5f9bcfd --- M tests/sms/sms_test.c 1 file changed, 2 insertions(+), 0 deletions(-) Approvals: osmith: Looks good to me, approved fixeria: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/tests/sms/sms_test.c b/tests/sms/sms_test.c index dda3c56..d9c1c8f 100644 --- a/tests/sms/sms_test.c +++ b/tests/sms/sms_test.c @@ -381,6 +381,7 @@ /* In our case: test_multiple_decode[0].ud_hdr_ind equals number of padding bits*/ octet_length = gsm_septet_pack2(coded, sizeof(coded), tmp, concatenated_part1_septet_length, test_multiple_encode[0].ud_hdr_ind); + OSMO_ASSERT(octet_length == 134); /* copy header */ memset(tmp, 0x42, sizeof(tmp)); @@ -399,6 +400,7 @@ /* In our case: test_multiple_decode[1].ud_hdr_ind equals number of padding bits*/ octet_length = gsm_septet_pack2(coded, sizeof(coded), tmp, concatenated_part2_septet_length, test_multiple_encode[1].ud_hdr_ind); + OSMO_ASSERT(octet_length == 36); /* copy header */ memset(tmp, 0x42, sizeof(tmp)); -- To view, visit
https://gerrit.osmocom.org/c/libosmocore/+/43265?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I12583ce07e7885974225ce0118f737c4a5f9bcfd Gerrit-Change-Number: 43265 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1
0
0
0
← Newer
1
...
42
43
44
45
46
47
48
...
151
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
151
Results per page:
10
25
50
100
200