jolly has uploaded this change for review. ( https://gerrit.osmocom.org/c/onomondo-ipa/+/43063?usp=email )
Change subject: V1.2: Add eimTransactionId to EuiccPackageErrorUnsigned ......................................................................
V1.2: Add eimTransactionId to EuiccPackageErrorUnsigned
Add new field eimTransactionId to EuiccPackageErrorUnsigned. The IoT eUICC emulation set this field, if found in EuiccPackageSigned of EuiccPackageRequest.
Reference: SGP.23 Section 2.11.2.1
Related: SYS#8101 Change-Id: Idfd596c56ef8cfe745f96cbaa6b8a5537927a919 --- M asn1/SGP32Definitions.asn M src/ipa/libasn/EuiccPackageErrorUnsigned.c M src/ipa/libasn/EuiccPackageErrorUnsigned.h M src/ipa/libipa/es10b_load_euicc_pkg.c 4 files changed, 24 insertions(+), 7 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/onomondo-ipa refs/changes/63/43063/1
diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index b6cd8a5..ef3bc90 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -201,6 +201,7 @@ EuiccPackageErrorCode ::= INTEGER { invalidEid(3), replayError(4), counterValueOutOfRange(6), sizeOverflow(15), undefinedError(127)} EuiccPackageErrorUnsigned ::= SEQUENCE { eimId [0] UTF8String (SIZE(1..128)), + eimTransactionId [2] TransactionId OPTIONAL, associationToken [4] INTEGER OPTIONAL } ConfigureImmediateEnableResult ::= INTEGER { diff --git a/src/ipa/libasn/EuiccPackageErrorUnsigned.c b/src/ipa/libasn/EuiccPackageErrorUnsigned.c index bf168e3..e3c5131 100644 --- a/src/ipa/libasn/EuiccPackageErrorUnsigned.c +++ b/src/ipa/libasn/EuiccPackageErrorUnsigned.c @@ -57,6 +57,15 @@ 0, 0, /* No default value */ "eimId" }, + { ATF_POINTER, 2, offsetof(struct EuiccPackageErrorUnsigned, 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 */ + "eimTransactionId" + }, { ATF_POINTER, 1, offsetof(struct EuiccPackageErrorUnsigned, associationToken), (ASN_TAG_CLASS_CONTEXT | (4 << 2)), -1, /* IMPLICIT tag at current level */ @@ -67,22 +76,23 @@ "associationToken" }, }; -static const int asn_MAP_EuiccPackageErrorUnsigned_oms_1[] = { 1 }; +static const int asn_MAP_EuiccPackageErrorUnsigned_oms_1[] = { 1, 2 }; static const ber_tlv_tag_t asn_DEF_EuiccPackageErrorUnsigned_tags_1[] = { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) }; static const asn_TYPE_tag2member_t asn_MAP_EuiccPackageErrorUnsigned_tag2el_1[] = { { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eimId */ - { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 } /* associationToken */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* eimTransactionId */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* associationToken */ }; asn_SEQUENCE_specifics_t asn_SPC_EuiccPackageErrorUnsigned_specs_1 = { sizeof(struct EuiccPackageErrorUnsigned), offsetof(struct EuiccPackageErrorUnsigned, _asn_ctx), asn_MAP_EuiccPackageErrorUnsigned_tag2el_1, - 2, /* Count of tags in the map */ + 3, /* Count of tags in the map */ asn_MAP_EuiccPackageErrorUnsigned_oms_1, /* Optional members */ - 1, 0, /* Root/Additions */ - 2, /* First extension addition */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ }; asn_TYPE_descriptor_t asn_DEF_EuiccPackageErrorUnsigned = { "EuiccPackageErrorUnsigned", @@ -96,7 +106,7 @@ /sizeof(asn_DEF_EuiccPackageErrorUnsigned_tags_1[0]), /* 1 */ { 0, 0, SEQUENCE_constraint }, asn_MBR_EuiccPackageErrorUnsigned_1, - 2, /* Elements count */ + 3, /* Elements count */ &asn_SPC_EuiccPackageErrorUnsigned_specs_1 /* Additional specs */ };
diff --git a/src/ipa/libasn/EuiccPackageErrorUnsigned.h b/src/ipa/libasn/EuiccPackageErrorUnsigned.h index 5ec7d7b..f25e9cc 100644 --- a/src/ipa/libasn/EuiccPackageErrorUnsigned.h +++ b/src/ipa/libasn/EuiccPackageErrorUnsigned.h @@ -13,6 +13,7 @@
/* Including external dependencies */ #include <UTF8String.h> +#include "TransactionId.h" #include <NativeInteger.h> #include <constr_SEQUENCE.h>
@@ -23,6 +24,7 @@ /* EuiccPackageErrorUnsigned */ typedef struct EuiccPackageErrorUnsigned { UTF8String_t eimId; + TransactionId_t *eimTransactionId /* OPTIONAL */; long *associationToken /* OPTIONAL */; /* * This type is extensible, @@ -36,7 +38,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_EuiccPackageErrorUnsigned; extern asn_SEQUENCE_specifics_t asn_SPC_EuiccPackageErrorUnsigned_specs_1; -extern asn_TYPE_member_t asn_MBR_EuiccPackageErrorUnsigned_1[2]; +extern asn_TYPE_member_t asn_MBR_EuiccPackageErrorUnsigned_1[3];
#ifdef __cplusplus } diff --git a/src/ipa/libipa/es10b_load_euicc_pkg.c b/src/ipa/libipa/es10b_load_euicc_pkg.c index abed9f6..6f3e91c 100644 --- a/src/ipa/libipa/es10b_load_euicc_pkg.c +++ b/src/ipa/libipa/es10b_load_euicc_pkg.c @@ -710,6 +710,10 @@ asn->present = EuiccPackageResult_PR_euiccPackageErrorUnsigned; ipa_buf_assign(&eim_id, (uint8_t *) ctx->eim_id, strlen(ctx->eim_id)); IPA_COPY_IPA_BUF_TO_ASN(&asn->choice.euiccPackageErrorUnsigned.eimId, &eim_id); + if (req->req.euiccPackageSigned.eimTransactionId) { + asn->choice.euiccPackageErrorUnsigned.eimTransactionId = + ipa_asn1c_dup(&asn_DEF_TransactionId, req->req.euiccPackageSigned.eimTransactionId); + } return res; }