jolly has uploaded this change for review. ( https://gerrit.osmocom.org/c/onomondo-ipa/+/43051?usp=email )
Change subject: V1.2: Add new fields to EUICCInfo2 ......................................................................
V1.2: Add new fields to EUICCInfo2
Add fields euiccCiPKIdListForSigningV3, additionalEuiccInfo and highestSvn to EUICCInfo2. Also add fields to SGP.22 version of EUICCInfo2.
The IoT eUICC emulation converts the fields that are now supported in both versions. These fields are only available if eUICC supports SGP.22 V3.0.
Reference: SGP.32 Section 5.9.2
Related: SYS#8101 Change-Id: I808139f1b2bfde5fba5320bf7582afa5d8fe6019 --- M asn1/RSPDefinitions.asn M asn1/SGP32Definitions.asn M src/ipa/libasn/CMakeLists.txt M src/ipa/libasn/EUICCInfo2.c M src/ipa/libasn/EUICCInfo2.h A src/ipa/libasn/LpaMode.c A src/ipa/libasn/LpaMode.h M src/ipa/libasn/SGP32-EUICCInfo2.c M src/ipa/libasn/SGP32-EUICCInfo2.h M src/ipa/libipa/es10b_get_euicc_info.c 10 files changed, 269 insertions(+), 49 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/onomondo-ipa refs/changes/51/43051/1
diff --git a/asn1/RSPDefinitions.asn b/asn1/RSPDefinitions.asn index 5427515..2245831 100644 --- a/asn1/RSPDefinitions.asn +++ b/asn1/RSPDefinitions.asn @@ -70,7 +70,11 @@ usesRemoteMemory(2) -- refers to the usage of remote memory protected by the Remote Memory Protection Function described in SGP.21 [4] } OPTIONAL, treProductReference [14] UTF8String OPTIONAL, -- Platform_Label as defined in GlobalPlatform DLOA specification [57] - additionalEuiccProfilePackageVersions [15] SEQUENCE OF VersionType OPTIONAL + additionalEuiccProfilePackageVersions [15] SEQUENCE OF VersionType OPTIONAL, + lpaMode [16] LpaMode OPTIONAL, -- #MandatoryFromV3.0.0# active LPA + euiccCiPKIdListForSigningV3 [17] SEQUENCE OF SubjectKeyIdentifier OPTIONAL, -- #SupportedFromV3.0.0# List of eSIM CA RootCA Public Key Identifiers supported on the eUICC for signature creation that can be verified by a certificate chain different from Variant O. + additionalEuiccInfo [18] OCTET STRING (SIZE(0..32)) OPTIONAL, -- #SupportedFromV3.0.0# EUM specific eUICC information + highestSvn [19] VersionType OPTIONAL -- #SupportedFromV3.0.0# }
-- Definition of RspCapability @@ -83,6 +87,12 @@ serviceSpecificDataSupport (5) -- support for Service Specific Data in the Profile Metadata }
+-- Definition of LpaMode +LpaMode ::= INTEGER { + lpad (0), -- LPAd is active + lpae (1) -- LPAe is active +} + -- Definition of CertificationDataObject CertificationDataObject ::= SEQUENCE { platformLabel UTF8String, -- Platform_Label as defined in GlobalPlatform DLOA specification [57] diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index e4e193c..ee6478e 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -486,10 +486,9 @@ treProductReference [14] UTF8String OPTIONAL, -- Platform_Label as defined in GlobalPlatform DLOA specification [57] additionalEuiccProfilePackageVersions [15] SEQUENCE OF VersionType OPTIONAL, ipaMode [16] IpaMode OPTIONAL, -- active IPA, mandatory within SGP.32 - rfu2 [17] SEQUENCE OF SubjectKeyIdentifier OPTIONAL, -- not used by this version of SGP.32. - rfu3 [18] OCTET STRING (SIZE(0..32)) OPTIONAL, - -- not used by this version of SGP.32 - rfu4 [19] VersionType OPTIONAL, -- not used by this version of SGP.32 + euiccCiPKIdListForSigningV3 [17] SEQUENCE OF SubjectKeyIdentifier OPTIONAL, -- not used by this version of SGP.32. + additionalEuiccInfo [18] OCTET STRING (SIZE(0..32)) OPTIONAL, -- not used by this version of SGP.32 + highestSvn [19] VersionType OPTIONAL, -- not used by this version of SGP.32 iotSpecificInfo [20] IoTSpecificInfo OPTIONAL -- mandatory within SGP.32 } -- Definition of IoTSpecificInfo diff --git a/src/ipa/libasn/CMakeLists.txt b/src/ipa/libasn/CMakeLists.txt index 5a3dad1..82328de 100644 --- a/src/ipa/libasn/CMakeLists.txt +++ b/src/ipa/libasn/CMakeLists.txt @@ -530,6 +530,8 @@ LpaeActivationRequest.h LpaeActivationResponse.c LpaeActivationResponse.h +LpaMode.c +LpaMode.h MappingParameter.c MappingParameter.h Name.c diff --git a/src/ipa/libasn/EUICCInfo2.c b/src/ipa/libasn/EUICCInfo2.c index 298a973..76bb23a 100644 --- a/src/ipa/libasn/EUICCInfo2.c +++ b/src/ipa/libasn/EUICCInfo2.c @@ -39,6 +39,32 @@ } }
+static int +memb_additionalEuiccInfo_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 <= 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 asn_oer_constraints_t asn_OER_memb_sasAcreditationNumber_constr_21 CC_NOTUSED = { { 0, 0 }, -1 /* (SIZE(0..MAX)) */}; @@ -47,6 +73,14 @@ { APC_UNCONSTRAINED, -1, -1, 0, 0 }, 0, 0 /* No PER value map */ }; +static asn_oer_constraints_t asn_OER_memb_additionalEuiccInfo_constr_33 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..32)) */}; +static asn_per_constraints_t asn_PER_memb_additionalEuiccInfo_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, + 0, 0 /* No PER value map */ +}; static asn_TYPE_member_t asn_MBR_euiccCiPKIdListForVerification_10[] = { { ATF_POINTER, 0, 0, (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), @@ -158,6 +192,43 @@ &asn_SPC_additionalEuiccProfilePackageVersions_specs_28 /* Additional specs */ };
+static asn_TYPE_member_t asn_MBR_euiccCiPKIdListForSigningV3_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SubjectKeyIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_euiccCiPKIdListForSigningV3_tags_31[] = { + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_euiccCiPKIdListForSigningV3_specs_31 = { + sizeof(struct EUICCInfo2__euiccCiPKIdListForSigningV3), + offsetof(struct EUICCInfo2__euiccCiPKIdListForSigningV3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_euiccCiPKIdListForSigningV3_31 = { + "euiccCiPKIdListForSigningV3", + "euiccCiPKIdListForSigningV3", + &asn_OP_SEQUENCE_OF, + asn_DEF_euiccCiPKIdListForSigningV3_tags_31, + sizeof(asn_DEF_euiccCiPKIdListForSigningV3_tags_31) + /sizeof(asn_DEF_euiccCiPKIdListForSigningV3_tags_31[0]) - 1, /* 1 */ + asn_DEF_euiccCiPKIdListForSigningV3_tags_31, /* Same as above */ + sizeof(asn_DEF_euiccCiPKIdListForSigningV3_tags_31) + /sizeof(asn_DEF_euiccCiPKIdListForSigningV3_tags_31[0]), /* 2 */ + { 0, 0, SEQUENCE_OF_constraint }, + asn_MBR_euiccCiPKIdListForSigningV3_31, + 1, /* Single element */ + &asn_SPC_euiccCiPKIdListForSigningV3_specs_31 /* Additional specs */ +}; + asn_TYPE_member_t asn_MBR_EUICCInfo2_1[] = { { ATF_NOFLAGS, 0, offsetof(struct EUICCInfo2, profileVersion), (ASN_TAG_CLASS_CONTEXT | (1 << 2)), @@ -285,7 +356,7 @@ 0, 0, /* No default value */ "sasAcreditationNumber" }, - { ATF_POINTER, 4, offsetof(struct EUICCInfo2, certificationDataObject), + { ATF_POINTER, 8, offsetof(struct EUICCInfo2, certificationDataObject), (ASN_TAG_CLASS_CONTEXT | (12 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_CertificationDataObject, @@ -294,7 +365,7 @@ 0, 0, /* No default value */ "certificationDataObject" }, - { ATF_POINTER, 3, offsetof(struct EUICCInfo2, treProperties), + { ATF_POINTER, 7, offsetof(struct EUICCInfo2, treProperties), (ASN_TAG_CLASS_CONTEXT | (13 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_BIT_STRING, @@ -303,7 +374,7 @@ 0, 0, /* No default value */ "treProperties" }, - { ATF_POINTER, 2, offsetof(struct EUICCInfo2, treProductReference), + { ATF_POINTER, 6, offsetof(struct EUICCInfo2, treProductReference), (ASN_TAG_CLASS_CONTEXT | (14 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, @@ -312,7 +383,7 @@ 0, 0, /* No default value */ "treProductReference" }, - { ATF_POINTER, 1, offsetof(struct EUICCInfo2, additionalEuiccProfilePackageVersions), + { ATF_POINTER, 5, offsetof(struct EUICCInfo2, additionalEuiccProfilePackageVersions), (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 0, &asn_DEF_additionalEuiccProfilePackageVersions_28, @@ -321,8 +392,44 @@ 0, 0, /* No default value */ "additionalEuiccProfilePackageVersions" }, + { ATF_POINTER, 4, offsetof(struct EUICCInfo2, lpaMode), + (ASN_TAG_CLASS_CONTEXT | (16 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LpaMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "lpaMode" + }, + { ATF_POINTER, 3, offsetof(struct EUICCInfo2, euiccCiPKIdListForSigningV3), + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + 0, + &asn_DEF_euiccCiPKIdListForSigningV3_31, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "euiccCiPKIdListForSigningV3" + }, + { ATF_POINTER, 2, offsetof(struct EUICCInfo2, additionalEuiccInfo), + (ASN_TAG_CLASS_CONTEXT | (18 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { &asn_OER_memb_additionalEuiccInfo_constr_33, &asn_PER_memb_additionalEuiccInfo_constr_33, memb_additionalEuiccInfo_constraint_1 }, + 0, 0, /* No default value */ + "additionalEuiccInfo" + }, + { ATF_POINTER, 1, offsetof(struct EUICCInfo2, highestSvn), + (ASN_TAG_CLASS_CONTEXT | (19 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VersionType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "highestSvn" + }, }; -static const int asn_MAP_EUICCInfo2_oms_1[] = { 5, 6, 10, 11, 14, 15, 16, 17 }; +static const int asn_MAP_EUICCInfo2_oms_1[] = { 5, 6, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21 }; static const ber_tlv_tag_t asn_DEF_EUICCInfo2_tags_1[] = { (ASN_TAG_CLASS_CONTEXT | (34 << 2)), (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) @@ -345,16 +452,20 @@ { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 15, 0, 0 }, /* treProperties */ { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 16, 0, 0 }, /* treProductReference */ { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 17, 0, 0 }, /* additionalEuiccProfilePackageVersions */ + { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 18, 0, 0 }, /* lpaMode */ + { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 19, 0, 0 }, /* euiccCiPKIdListForSigningV3 */ + { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 20, 0, 0 }, /* additionalEuiccInfo */ + { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 21, 0, 0 }, /* highestSvn */ { (ASN_TAG_CLASS_CONTEXT | (25 << 2)), 11, 0, 0 } /* forbiddenProfilePolicyRules */ }; asn_SEQUENCE_specifics_t asn_SPC_EUICCInfo2_specs_1 = { sizeof(struct EUICCInfo2), offsetof(struct EUICCInfo2, _asn_ctx), asn_MAP_EUICCInfo2_tag2el_1, - 18, /* Count of tags in the map */ + 22, /* Count of tags in the map */ asn_MAP_EUICCInfo2_oms_1, /* Optional members */ - 8, 0, /* Root/Additions */ - 18, /* First extension addition */ + 12, 0, /* Root/Additions */ + 22, /* First extension addition */ }; asn_TYPE_descriptor_t asn_DEF_EUICCInfo2 = { "EUICCInfo2", @@ -368,7 +479,7 @@ /sizeof(asn_DEF_EUICCInfo2_tags_1[0]), /* 2 */ { 0, 0, SEQUENCE_constraint }, asn_MBR_EUICCInfo2_1, - 18, /* Elements count */ + 22, /* Elements count */ &asn_SPC_EUICCInfo2_specs_1 /* Additional specs */ };
diff --git a/src/ipa/libasn/EUICCInfo2.h b/src/ipa/libasn/EUICCInfo2.h index 79f1f07..0a0e801 100644 --- a/src/ipa/libasn/EUICCInfo2.h +++ b/src/ipa/libasn/EUICCInfo2.h @@ -20,6 +20,7 @@ #include "PprIds.h" #include <UTF8String.h> #include <BIT_STRING.h> +#include "LpaMode.h" #include "SubjectKeyIdentifier.h" #include <asn_SEQUENCE_OF.h> #include <constr_SEQUENCE_OF.h> @@ -80,6 +81,15 @@ /* Context for parsing across buffer boundaries */ asn_struct_ctx_t _asn_ctx; } *additionalEuiccProfilePackageVersions; + LpaMode_t *lpaMode /* OPTIONAL */; + struct EUICCInfo2__euiccCiPKIdListForSigningV3 { + A_SEQUENCE_OF(SubjectKeyIdentifier_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *euiccCiPKIdListForSigningV3; + OCTET_STRING_t *additionalEuiccInfo /* OPTIONAL */; + VersionType_t *highestSvn /* OPTIONAL */; /* * This type is extensible, * possible extensions are below. @@ -92,7 +102,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_EUICCInfo2; extern asn_SEQUENCE_specifics_t asn_SPC_EUICCInfo2_specs_1; -extern asn_TYPE_member_t asn_MBR_EUICCInfo2_1[18]; +extern asn_TYPE_member_t asn_MBR_EUICCInfo2_1[22];
#ifdef __cplusplus } diff --git a/src/ipa/libasn/LpaMode.c b/src/ipa/libasn/LpaMode.c new file mode 100644 index 0000000..56ec505 --- /dev/null +++ b/src/ipa/libasn/LpaMode.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "RSPDefinitions" + * found in "../../../asn1/RSPDefinitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "LpaMode.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_LpaMode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LpaMode = { + "LpaMode", + "LpaMode", + &asn_OP_NativeInteger, + asn_DEF_LpaMode_tags_1, + sizeof(asn_DEF_LpaMode_tags_1) + /sizeof(asn_DEF_LpaMode_tags_1[0]), /* 1 */ + asn_DEF_LpaMode_tags_1, /* Same as above */ + sizeof(asn_DEF_LpaMode_tags_1) + /sizeof(asn_DEF_LpaMode_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/src/ipa/libasn/LpaMode.h b/src/ipa/libasn/LpaMode.h new file mode 100644 index 0000000..ade9101 --- /dev/null +++ b/src/ipa/libasn/LpaMode.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "RSPDefinitions" + * found in "../../../asn1/RSPDefinitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _LpaMode_H_ +#define _LpaMode_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LpaMode { + LpaMode_lpad = 0, + LpaMode_lpae = 1 +} e_LpaMode; + +/* LpaMode */ +typedef long LpaMode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LpaMode; +asn_struct_free_f LpaMode_free; +asn_struct_print_f LpaMode_print; +asn_constr_check_f LpaMode_constraint; +ber_type_decoder_f LpaMode_decode_ber; +der_type_encoder_f LpaMode_encode_der; +xer_type_decoder_f LpaMode_decode_xer; +xer_type_encoder_f LpaMode_encode_xer; +oer_type_decoder_f LpaMode_decode_oer; +oer_type_encoder_f LpaMode_encode_oer; +per_type_decoder_f LpaMode_decode_uper; +per_type_encoder_f LpaMode_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LpaMode_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libasn/SGP32-EUICCInfo2.c b/src/ipa/libasn/SGP32-EUICCInfo2.c index cc5a6e4..d0b896b 100644 --- a/src/ipa/libasn/SGP32-EUICCInfo2.c +++ b/src/ipa/libasn/SGP32-EUICCInfo2.c @@ -40,7 +40,7 @@ }
static int -memb_rfu3_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, +memb_additionalEuiccInfo_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; @@ -73,10 +73,10 @@ { APC_UNCONSTRAINED, -1, -1, 0, 0 }, 0, 0 /* No PER value map */ }; -static asn_oer_constraints_t asn_OER_memb_rfu3_constr_33 CC_NOTUSED = { +static asn_oer_constraints_t asn_OER_memb_additionalEuiccInfo_constr_33 CC_NOTUSED = { { 0, 0 }, -1 /* (SIZE(0..32)) */}; -static asn_per_constraints_t asn_PER_memb_rfu3_constr_33 CC_NOTUSED = { +static asn_per_constraints_t asn_PER_memb_additionalEuiccInfo_constr_33 CC_NOTUSED = { { APC_UNCONSTRAINED, -1, -1, 0, 0 }, { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, 0, 0 /* No PER value map */ @@ -192,7 +192,7 @@ &asn_SPC_additionalEuiccProfilePackageVersions_specs_28 /* Additional specs */ };
-static asn_TYPE_member_t asn_MBR_rfu2_31[] = { +static asn_TYPE_member_t asn_MBR_euiccCiPKIdListForSigningV3_31[] = { { ATF_POINTER, 0, 0, (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, @@ -203,30 +203,30 @@ "" }, }; -static const ber_tlv_tag_t asn_DEF_rfu2_tags_31[] = { +static const ber_tlv_tag_t asn_DEF_euiccCiPKIdListForSigningV3_tags_31[] = { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) }; -static asn_SET_OF_specifics_t asn_SPC_rfu2_specs_31 = { - sizeof(struct SGP32_EUICCInfo2__rfu2), - offsetof(struct SGP32_EUICCInfo2__rfu2, _asn_ctx), +static asn_SET_OF_specifics_t asn_SPC_euiccCiPKIdListForSigningV3_specs_31 = { + sizeof(struct SGP32_EUICCInfo2__euiccCiPKIdListForSigningV3), + offsetof(struct SGP32_EUICCInfo2__euiccCiPKIdListForSigningV3, _asn_ctx), 0, /* XER encoding is XMLDelimitedItemList */ }; static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_rfu2_31 = { - "rfu2", - "rfu2", +asn_TYPE_descriptor_t asn_DEF_euiccCiPKIdListForSigningV3_31 = { + "euiccCiPKIdListForSigningV3", + "euiccCiPKIdListForSigningV3", &asn_OP_SEQUENCE_OF, - asn_DEF_rfu2_tags_31, - sizeof(asn_DEF_rfu2_tags_31) - /sizeof(asn_DEF_rfu2_tags_31[0]) - 1, /* 1 */ - asn_DEF_rfu2_tags_31, /* Same as above */ - sizeof(asn_DEF_rfu2_tags_31) - /sizeof(asn_DEF_rfu2_tags_31[0]), /* 2 */ + asn_DEF_euiccCiPKIdListForSigningV3_tags_31, + sizeof(asn_DEF_euiccCiPKIdListForSigningV3_tags_31) + /sizeof(asn_DEF_euiccCiPKIdListForSigningV3_tags_31[0]) - 1, /* 1 */ + asn_DEF_euiccCiPKIdListForSigningV3_tags_31, /* Same as above */ + sizeof(asn_DEF_euiccCiPKIdListForSigningV3_tags_31) + /sizeof(asn_DEF_euiccCiPKIdListForSigningV3_tags_31[0]), /* 2 */ { 0, 0, SEQUENCE_OF_constraint }, - asn_MBR_rfu2_31, + asn_MBR_euiccCiPKIdListForSigningV3_31, 1, /* Single element */ - &asn_SPC_rfu2_specs_31 /* Additional specs */ + &asn_SPC_euiccCiPKIdListForSigningV3_specs_31 /* Additional specs */ };
asn_TYPE_member_t asn_MBR_SGP32_EUICCInfo2_1[] = { @@ -401,32 +401,32 @@ 0, 0, /* No default value */ "ipaMode" }, - { ATF_POINTER, 4, offsetof(struct SGP32_EUICCInfo2, rfu2), + { ATF_POINTER, 4, offsetof(struct SGP32_EUICCInfo2, euiccCiPKIdListForSigningV3), (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 0, - &asn_DEF_rfu2_31, + &asn_DEF_euiccCiPKIdListForSigningV3_31, 0, { 0, 0, 0 }, 0, 0, /* No default value */ - "rfu2" + "euiccCiPKIdListForSigningV3" }, - { ATF_POINTER, 3, offsetof(struct SGP32_EUICCInfo2, rfu3), + { ATF_POINTER, 3, offsetof(struct SGP32_EUICCInfo2, additionalEuiccInfo), (ASN_TAG_CLASS_CONTEXT | (18 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_OCTET_STRING, 0, - { &asn_OER_memb_rfu3_constr_33, &asn_PER_memb_rfu3_constr_33, memb_rfu3_constraint_1 }, + { &asn_OER_memb_additionalEuiccInfo_constr_33, &asn_PER_memb_additionalEuiccInfo_constr_33, memb_additionalEuiccInfo_constraint_1 }, 0, 0, /* No default value */ - "rfu3" + "additionalEuiccInfo" }, - { ATF_POINTER, 2, offsetof(struct SGP32_EUICCInfo2, rfu4), + { ATF_POINTER, 2, offsetof(struct SGP32_EUICCInfo2, highestSvn), (ASN_TAG_CLASS_CONTEXT | (19 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_VersionType, 0, { 0, 0, 0 }, 0, 0, /* No default value */ - "rfu4" + "highestSvn" }, { ATF_POINTER, 1, offsetof(struct SGP32_EUICCInfo2, iotSpecificInfo), (ASN_TAG_CLASS_CONTEXT | (20 << 2)), @@ -462,9 +462,9 @@ { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 16, 0, 0 }, /* treProductReference */ { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 17, 0, 0 }, /* additionalEuiccProfilePackageVersions */ { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 18, 0, 0 }, /* ipaMode */ - { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 19, 0, 0 }, /* rfu2 */ - { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 20, 0, 0 }, /* rfu3 */ - { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 21, 0, 0 }, /* rfu4 */ + { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 19, 0, 0 }, /* euiccCiPKIdListForSigningV3 */ + { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 20, 0, 0 }, /* additionalEuiccInfo */ + { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 21, 0, 0 }, /* highestSvn */ { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 22, 0, 0 }, /* iotSpecificInfo */ { (ASN_TAG_CLASS_CONTEXT | (25 << 2)), 11, 0, 0 } /* forbiddenProfilePolicyRules */ }; diff --git a/src/ipa/libasn/SGP32-EUICCInfo2.h b/src/ipa/libasn/SGP32-EUICCInfo2.h index 55ff927..6c7c9d4 100644 --- a/src/ipa/libasn/SGP32-EUICCInfo2.h +++ b/src/ipa/libasn/SGP32-EUICCInfo2.h @@ -83,14 +83,14 @@ asn_struct_ctx_t _asn_ctx; } *additionalEuiccProfilePackageVersions; IpaMode_t *ipaMode /* OPTIONAL */; - struct SGP32_EUICCInfo2__rfu2 { + struct SGP32_EUICCInfo2__euiccCiPKIdListForSigningV3 { A_SEQUENCE_OF(SubjectKeyIdentifier_t) list; /* Context for parsing across buffer boundaries */ asn_struct_ctx_t _asn_ctx; - } *rfu2; - OCTET_STRING_t *rfu3 /* OPTIONAL */; - VersionType_t *rfu4 /* OPTIONAL */; + } *euiccCiPKIdListForSigningV3; + OCTET_STRING_t *additionalEuiccInfo /* OPTIONAL */; + VersionType_t *highestSvn /* OPTIONAL */; struct IoTSpecificInfo *iotSpecificInfo /* OPTIONAL */; /* * This type is extensible, diff --git a/src/ipa/libipa/es10b_get_euicc_info.c b/src/ipa/libipa/es10b_get_euicc_info.c index db9c541..c795b6c 100644 --- a/src/ipa/libipa/es10b_get_euicc_info.c +++ b/src/ipa/libipa/es10b_get_euicc_info.c @@ -95,6 +95,14 @@ euicc_info_out->ppVersion = euicc_info_in->ppVersion; euicc_info_out->sasAcreditationNumber = euicc_info_in->sasAcreditationNumber; euicc_info_out->certificationDataObject = euicc_info_in->certificationDataObject; + euicc_info_out->treProperties = euicc_info_in->treProperties; + euicc_info_out->treProductReference = euicc_info_in->treProductReference; + euicc_info_out->additionalEuiccProfilePackageVersions = + (void *)euicc_info_in->additionalEuiccProfilePackageVersions; + euicc_info_out->ipaMode = euicc_info_in->lpaMode; + euicc_info_out->euiccCiPKIdListForSigningV3 = (void *)euicc_info_in->euiccCiPKIdListForSigningV3; + euicc_info_out->additionalEuiccInfo = euicc_info_in->additionalEuiccInfo; + euicc_info_out->highestSvn = euicc_info_in->highestSvn; }
static int dec_get_euicc_info2(struct ipa_es10b_euicc_info *euicc_info, const struct ipa_buf *es10b_res)