jolly has uploaded this change for review. ( https://gerrit.osmocom.org/c/onomondo-ipa/+/43035?usp=email )
Change subject: V1.2: Add eimTransactionId to IpaEuiccDataRequest and IpaEuiccDataResponse ......................................................................
V1.2: Add eimTransactionId to IpaEuiccDataRequest and IpaEuiccDataResponse
Add eimTransactionId to IpaEuiccDataRequest and to IpaEuiccDataResponseError or IpaEuiccData of IpaEuiccDataResponse. The IPA takes the transaction ID from the request, if exists, and sets it in the response. The eIM can use it to match the request with the successful or unsuccessful outcome.
Reference: SGP.32 Section 2.11.1.2
Related: SYS#8101 Change-Id: I34db78c4eb8461c154459204ec13a2184085e96a --- M asn1/SGP32Definitions.asn M src/ipa/libasn/CMakeLists.txt M src/ipa/libasn/IpaEuiccData.c M src/ipa/libasn/IpaEuiccData.h A src/ipa/libasn/IpaEuiccDataErrorCode.c A src/ipa/libasn/IpaEuiccDataErrorCode.h M src/ipa/libasn/IpaEuiccDataRequest.c M src/ipa/libasn/IpaEuiccDataRequest.h M src/ipa/libasn/IpaEuiccDataResponse.c M src/ipa/libasn/IpaEuiccDataResponse.h A src/ipa/libasn/IpaEuiccDataResponseError.c A src/ipa/libasn/IpaEuiccDataResponseError.h M src/ipa/libipa/proc_euicc_data_req.c 13 files changed, 269 insertions(+), 45 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/onomondo-ipa refs/changes/35/43035/1
diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn index 69175e1..efe2e18 100644 --- a/asn1/SGP32Definitions.asn +++ b/asn1/SGP32Definitions.asn @@ -119,7 +119,8 @@ seqNumber [0] INTEGER, profileManagementOperation [1] NotificationEvent, euiccPackageResults [2] NULL - } OPTIONAL + } OPTIONAL, + eimTransactionId [3] TransactionId OPTIONAL -- Tag '83' } -- ASN1STOP
@@ -293,13 +294,19 @@
-- Section 2.11.2.2 -- ASN1START +IpaEuiccDataErrorCode ::= INTEGER { + incorrectTagList (1), + euiccCiPKIdNotFound(5), + ecallActive(104), + undefinedError(127) +} +IpaEuiccDataResponseError ::= SEQUENCE { + eimTransactionId [0] TransactionId OPTIONAL, + ipaEuiccDataErrorCode IpaEuiccDataErrorCode +} IpaEuiccDataResponse ::= [82] CHOICE { -- Tag 'BF52' ipaEuiccData IpaEuiccData, - ipaEuiccDataError INTEGER { - incorrectTagList (1), - euiccCiPKIdNotFound(5), - undefinedError(127) - } + ipaEuiccDataResponseError IpaEuiccDataResponseError } IpaEuiccData ::= SEQUENCE { defaultSmdpAddress [0] UTF8String OPTIONAL, -- Tag '80' @@ -309,6 +316,7 @@ associationToken [4] INTEGER OPTIONAL, -- Tag '84' eumCertificate [5] Certificate OPTIONAL, -- Tag 'A5' euiccCertificate [6] Certificate OPTIONAL, -- Tag 'A6' + eimTransactionId [7] TransactionId OPTIONAL, -- Tag '87' ipaCapabilities [8] IpaCapabilities OPTIONAL, -- Tag '88' deviceInfo [9] DeviceInfo OPTIONAL, -- Tag 'A9' notificationsList [43] SGP32-RetrieveNotificationsListResponse OPTIONAL -- Tag 'BF2B'. diff --git a/src/ipa/libasn/CMakeLists.txt b/src/ipa/libasn/CMakeLists.txt index 5ca748e..f9166bd 100644 --- a/src/ipa/libasn/CMakeLists.txt +++ b/src/ipa/libasn/CMakeLists.txt @@ -465,10 +465,14 @@ IpaCapabilities.c IpaCapabilities.h IpaEuiccData.c +IpaEuiccDataErrorCode.c +IpaEuiccDataErrorCode.h IpaEuiccData.h IpaEuiccDataRequest.c IpaEuiccDataRequest.h IpaEuiccDataResponse.c +IpaEuiccDataResponseError.c +IpaEuiccDataResponseError.h IpaEuiccDataResponse.h IpaMode.c IpaMode.h diff --git a/src/ipa/libasn/IpaEuiccData.c b/src/ipa/libasn/IpaEuiccData.c index 0b7d59c..3f44929 100644 --- a/src/ipa/libasn/IpaEuiccData.c +++ b/src/ipa/libasn/IpaEuiccData.c @@ -8,7 +8,7 @@ #include "IpaEuiccData.h"
asn_TYPE_member_t asn_MBR_IpaEuiccData_1[] = { - { ATF_POINTER, 10, offsetof(struct IpaEuiccData, defaultSmdpAddress), + { ATF_POINTER, 11, offsetof(struct IpaEuiccData, defaultSmdpAddress), (ASN_TAG_CLASS_CONTEXT | (0 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, @@ -17,7 +17,7 @@ 0, 0, /* No default value */ "defaultSmdpAddress" }, - { ATF_POINTER, 9, offsetof(struct IpaEuiccData, euiccInfo1), + { ATF_POINTER, 10, offsetof(struct IpaEuiccData, euiccInfo1), (ASN_TAG_CLASS_CONTEXT | (32 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_EUICCInfo1, @@ -26,7 +26,7 @@ 0, 0, /* No default value */ "euiccInfo1" }, - { ATF_POINTER, 8, offsetof(struct IpaEuiccData, euiccInfo2), + { ATF_POINTER, 9, offsetof(struct IpaEuiccData, euiccInfo2), (ASN_TAG_CLASS_CONTEXT | (34 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_SGP32_EUICCInfo2, @@ -35,7 +35,7 @@ 0, 0, /* No default value */ "euiccInfo2" }, - { ATF_POINTER, 7, offsetof(struct IpaEuiccData, rootSmdsAddress), + { ATF_POINTER, 8, offsetof(struct IpaEuiccData, rootSmdsAddress), (ASN_TAG_CLASS_CONTEXT | (3 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_UTF8String, @@ -44,7 +44,7 @@ 0, 0, /* No default value */ "rootSmdsAddress" }, - { ATF_POINTER, 6, offsetof(struct IpaEuiccData, associationToken), + { ATF_POINTER, 7, offsetof(struct IpaEuiccData, associationToken), (ASN_TAG_CLASS_CONTEXT | (4 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_NativeInteger, @@ -53,7 +53,7 @@ 0, 0, /* No default value */ "associationToken" }, - { ATF_POINTER, 5, offsetof(struct IpaEuiccData, eumCertificate), + { ATF_POINTER, 6, offsetof(struct IpaEuiccData, eumCertificate), (ASN_TAG_CLASS_CONTEXT | (5 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_Certificate, @@ -62,7 +62,7 @@ 0, 0, /* No default value */ "eumCertificate" }, - { ATF_POINTER, 4, offsetof(struct IpaEuiccData, euiccCertificate), + { ATF_POINTER, 5, offsetof(struct IpaEuiccData, euiccCertificate), (ASN_TAG_CLASS_CONTEXT | (6 << 2)), -1, /* IMPLICIT tag at current level */ &asn_DEF_Certificate, @@ -71,6 +71,15 @@ 0, 0, /* No default value */ "euiccCertificate" }, + { ATF_POINTER, 4, offsetof(struct IpaEuiccData, eimTransactionId), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransactionId, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eimTransactionId" + }, { ATF_POINTER, 3, offsetof(struct IpaEuiccData, ipaCapabilities), (ASN_TAG_CLASS_CONTEXT | (8 << 2)), -1, /* IMPLICIT tag at current level */ @@ -99,7 +108,7 @@ "notificationsList" }, }; -static const int asn_MAP_IpaEuiccData_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +static const int asn_MAP_IpaEuiccData_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; static const ber_tlv_tag_t asn_DEF_IpaEuiccData_tags_1[] = { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) }; @@ -109,20 +118,21 @@ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* associationToken */ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* eumCertificate */ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* euiccCertificate */ - { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 7, 0, 0 }, /* ipaCapabilities */ - { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 8, 0, 0 }, /* deviceInfo */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* eimTransactionId */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* ipaCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* deviceInfo */ { (ASN_TAG_CLASS_CONTEXT | (32 << 2)), 1, 0, 0 }, /* euiccInfo1 */ { (ASN_TAG_CLASS_CONTEXT | (34 << 2)), 2, 0, 0 }, /* euiccInfo2 */ - { (ASN_TAG_CLASS_CONTEXT | (43 << 2)), 9, 0, 0 } /* notificationsList */ + { (ASN_TAG_CLASS_CONTEXT | (43 << 2)), 10, 0, 0 } /* notificationsList */ }; asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccData_specs_1 = { sizeof(struct IpaEuiccData), offsetof(struct IpaEuiccData, _asn_ctx), asn_MAP_IpaEuiccData_tag2el_1, - 10, /* Count of tags in the map */ + 11, /* Count of tags in the map */ asn_MAP_IpaEuiccData_oms_1, /* Optional members */ - 10, 0, /* Root/Additions */ - 10, /* First extension addition */ + 11, 0, /* Root/Additions */ + 11, /* First extension addition */ }; asn_TYPE_descriptor_t asn_DEF_IpaEuiccData = { "IpaEuiccData", @@ -136,7 +146,7 @@ /sizeof(asn_DEF_IpaEuiccData_tags_1[0]), /* 1 */ { 0, 0, SEQUENCE_constraint }, asn_MBR_IpaEuiccData_1, - 10, /* Elements count */ + 11, /* Elements count */ &asn_SPC_IpaEuiccData_specs_1 /* Additional specs */ };
diff --git a/src/ipa/libasn/IpaEuiccData.h b/src/ipa/libasn/IpaEuiccData.h index 755e6de..bf8dc38 100644 --- a/src/ipa/libasn/IpaEuiccData.h +++ b/src/ipa/libasn/IpaEuiccData.h @@ -14,6 +14,7 @@ /* Including external dependencies */ #include <UTF8String.h> #include <NativeInteger.h> +#include "TransactionId.h" #include <constr_SEQUENCE.h>
#ifdef __cplusplus @@ -37,6 +38,7 @@ long *associationToken /* OPTIONAL */; struct Certificate *eumCertificate /* OPTIONAL */; struct Certificate *euiccCertificate /* OPTIONAL */; + TransactionId_t *eimTransactionId /* OPTIONAL */; struct IpaCapabilities *ipaCapabilities /* OPTIONAL */; struct DeviceInfo *deviceInfo /* OPTIONAL */; struct SGP32_RetrieveNotificationsListResponse *notificationsList /* OPTIONAL */; @@ -52,7 +54,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_IpaEuiccData; extern asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccData_specs_1; -extern asn_TYPE_member_t asn_MBR_IpaEuiccData_1[10]; +extern asn_TYPE_member_t asn_MBR_IpaEuiccData_1[11];
#ifdef __cplusplus } diff --git a/src/ipa/libasn/IpaEuiccDataErrorCode.c b/src/ipa/libasn/IpaEuiccDataErrorCode.c new file mode 100644 index 0000000..731ed27 --- /dev/null +++ b/src/ipa/libasn/IpaEuiccDataErrorCode.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "IpaEuiccDataErrorCode.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_IpaEuiccDataErrorCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataErrorCode = { + "IpaEuiccDataErrorCode", + "IpaEuiccDataErrorCode", + &asn_OP_NativeInteger, + asn_DEF_IpaEuiccDataErrorCode_tags_1, + sizeof(asn_DEF_IpaEuiccDataErrorCode_tags_1) + /sizeof(asn_DEF_IpaEuiccDataErrorCode_tags_1[0]), /* 1 */ + asn_DEF_IpaEuiccDataErrorCode_tags_1, /* Same as above */ + sizeof(asn_DEF_IpaEuiccDataErrorCode_tags_1) + /sizeof(asn_DEF_IpaEuiccDataErrorCode_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/src/ipa/libasn/IpaEuiccDataErrorCode.h b/src/ipa/libasn/IpaEuiccDataErrorCode.h new file mode 100644 index 0000000..78aa1e2 --- /dev/null +++ b/src/ipa/libasn/IpaEuiccDataErrorCode.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _IpaEuiccDataErrorCode_H_ +#define _IpaEuiccDataErrorCode_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include <NativeInteger.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum IpaEuiccDataErrorCode { + IpaEuiccDataErrorCode_incorrectTagList = 1, + IpaEuiccDataErrorCode_euiccCiPKIdNotFound = 5, + IpaEuiccDataErrorCode_ecallActive = 104, + IpaEuiccDataErrorCode_undefinedError = 127 +} e_IpaEuiccDataErrorCode; + +/* IpaEuiccDataErrorCode */ +typedef long IpaEuiccDataErrorCode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataErrorCode; +asn_struct_free_f IpaEuiccDataErrorCode_free; +asn_struct_print_f IpaEuiccDataErrorCode_print; +asn_constr_check_f IpaEuiccDataErrorCode_constraint; +ber_type_decoder_f IpaEuiccDataErrorCode_decode_ber; +der_type_encoder_f IpaEuiccDataErrorCode_encode_der; +xer_type_decoder_f IpaEuiccDataErrorCode_decode_xer; +xer_type_encoder_f IpaEuiccDataErrorCode_encode_xer; +oer_type_decoder_f IpaEuiccDataErrorCode_decode_oer; +oer_type_encoder_f IpaEuiccDataErrorCode_encode_oer; +per_type_decoder_f IpaEuiccDataErrorCode_decode_uper; +per_type_encoder_f IpaEuiccDataErrorCode_encode_uper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IpaEuiccDataErrorCode_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libasn/IpaEuiccDataRequest.c b/src/ipa/libasn/IpaEuiccDataRequest.c index a790d61..fa1924d 100644 --- a/src/ipa/libasn/IpaEuiccDataRequest.c +++ b/src/ipa/libasn/IpaEuiccDataRequest.c @@ -84,7 +84,7 @@ 0, 0, /* No default value */ "tagList" }, - { ATF_POINTER, 2, offsetof(struct IpaEuiccDataRequest, euiccCiPKIdentifierToBeUsed), + { ATF_POINTER, 3, offsetof(struct IpaEuiccDataRequest, euiccCiPKIdentifierToBeUsed), (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, &asn_DEF_OCTET_STRING, @@ -93,7 +93,7 @@ 0, 0, /* No default value */ "euiccCiPKIdentifierToBeUsed" }, - { ATF_POINTER, 1, offsetof(struct IpaEuiccDataRequest, searchCriteriaNotification), + { ATF_POINTER, 2, offsetof(struct IpaEuiccDataRequest, searchCriteriaNotification), (ASN_TAG_CLASS_CONTEXT | (1 << 2)), +1, /* EXPLICIT tag at current level */ &asn_DEF_searchCriteriaNotification_4, @@ -102,8 +102,17 @@ 0, 0, /* No default value */ "searchCriteriaNotification" }, + { ATF_POINTER, 1, offsetof(struct IpaEuiccDataRequest, eimTransactionId), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransactionId, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eimTransactionId" + }, }; -static const int asn_MAP_IpaEuiccDataRequest_oms_1[] = { 1, 2 }; +static const int asn_MAP_IpaEuiccDataRequest_oms_1[] = { 1, 2, 3 }; static const ber_tlv_tag_t asn_DEF_IpaEuiccDataRequest_tags_1[] = { (ASN_TAG_CLASS_CONTEXT | (82 << 2)), (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) @@ -111,16 +120,17 @@ static const asn_TYPE_tag2member_t asn_MAP_IpaEuiccDataRequest_tag2el_1[] = { { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* euiccCiPKIdentifierToBeUsed */ { (ASN_TAG_CLASS_APPLICATION | (28 << 2)), 0, 0, 0 }, /* tagList */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 } /* searchCriteriaNotification */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* searchCriteriaNotification */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eimTransactionId */ }; asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccDataRequest_specs_1 = { sizeof(struct IpaEuiccDataRequest), offsetof(struct IpaEuiccDataRequest, _asn_ctx), asn_MAP_IpaEuiccDataRequest_tag2el_1, - 3, /* Count of tags in the map */ + 4, /* Count of tags in the map */ asn_MAP_IpaEuiccDataRequest_oms_1, /* Optional members */ - 2, 0, /* Root/Additions */ - 3, /* First extension addition */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ }; asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataRequest = { "IpaEuiccDataRequest", @@ -134,7 +144,7 @@ /sizeof(asn_DEF_IpaEuiccDataRequest_tags_1[0]), /* 2 */ { 0, 0, SEQUENCE_constraint }, asn_MBR_IpaEuiccDataRequest_1, - 3, /* Elements count */ + 4, /* Elements count */ &asn_SPC_IpaEuiccDataRequest_specs_1 /* Additional specs */ };
diff --git a/src/ipa/libasn/IpaEuiccDataRequest.h b/src/ipa/libasn/IpaEuiccDataRequest.h index d40dfaf..c4f0a87 100644 --- a/src/ipa/libasn/IpaEuiccDataRequest.h +++ b/src/ipa/libasn/IpaEuiccDataRequest.h @@ -13,6 +13,7 @@
/* Including external dependencies */ #include <OCTET_STRING.h> +#include "TransactionId.h" #include <NativeInteger.h> #include "NotificationEvent.h" #include <NULL.h> @@ -52,6 +53,7 @@ /* Context for parsing across buffer boundaries */ asn_struct_ctx_t _asn_ctx; } *searchCriteriaNotification; + TransactionId_t *eimTransactionId /* OPTIONAL */; /* * This type is extensible, * possible extensions are below. @@ -64,7 +66,7 @@ /* Implementation */ extern asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataRequest; extern asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccDataRequest_specs_1; -extern asn_TYPE_member_t asn_MBR_IpaEuiccDataRequest_1[3]; +extern asn_TYPE_member_t asn_MBR_IpaEuiccDataRequest_1[4];
#ifdef __cplusplus } diff --git a/src/ipa/libasn/IpaEuiccDataResponse.c b/src/ipa/libasn/IpaEuiccDataResponse.c index ae935e7..8b0f8c7 100644 --- a/src/ipa/libasn/IpaEuiccDataResponse.c +++ b/src/ipa/libasn/IpaEuiccDataResponse.c @@ -25,14 +25,14 @@ 0, 0, /* No default value */ "ipaEuiccData" }, - { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataResponse, choice.ipaEuiccDataError), + { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataResponse, choice.ipaEuiccDataResponseError), (ASN_TAG_CLASS_CONTEXT | (1 << 2)), -1, /* IMPLICIT tag at current level */ - &asn_DEF_NativeInteger, + &asn_DEF_IpaEuiccDataResponseError, 0, { 0, 0, 0 }, 0, 0, /* No default value */ - "ipaEuiccDataError" + "ipaEuiccDataResponseError" }, }; static const ber_tlv_tag_t asn_DEF_IpaEuiccDataResponse_tags_1[] = { @@ -40,7 +40,7 @@ }; static const asn_TYPE_tag2member_t asn_MAP_IpaEuiccDataResponse_tag2el_1[] = { { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ipaEuiccData */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ipaEuiccDataError */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ipaEuiccDataResponseError */ }; asn_CHOICE_specifics_t asn_SPC_IpaEuiccDataResponse_specs_1 = { sizeof(struct IpaEuiccDataResponse), diff --git a/src/ipa/libasn/IpaEuiccDataResponse.h b/src/ipa/libasn/IpaEuiccDataResponse.h index 0e1ae58..b0f1143 100644 --- a/src/ipa/libasn/IpaEuiccDataResponse.h +++ b/src/ipa/libasn/IpaEuiccDataResponse.h @@ -13,7 +13,7 @@
/* Including external dependencies */ #include "IpaEuiccData.h" -#include <NativeInteger.h> +#include "IpaEuiccDataResponseError.h" #include <constr_CHOICE.h>
#ifdef __cplusplus @@ -24,22 +24,17 @@ typedef enum IpaEuiccDataResponse_PR { IpaEuiccDataResponse_PR_NOTHING, /* No components present */ IpaEuiccDataResponse_PR_ipaEuiccData, - IpaEuiccDataResponse_PR_ipaEuiccDataError + IpaEuiccDataResponse_PR_ipaEuiccDataResponseError /* Extensions may appear below */ } IpaEuiccDataResponse_PR; -typedef enum IpaEuiccDataResponse__ipaEuiccDataError { - IpaEuiccDataResponse__ipaEuiccDataError_incorrectTagList = 1, - IpaEuiccDataResponse__ipaEuiccDataError_euiccCiPKIdNotFound = 5, - IpaEuiccDataResponse__ipaEuiccDataError_undefinedError = 127 -} e_IpaEuiccDataResponse__ipaEuiccDataError;
/* IpaEuiccDataResponse */ typedef struct IpaEuiccDataResponse { IpaEuiccDataResponse_PR present; union IpaEuiccDataResponse_u { IpaEuiccData_t ipaEuiccData; - long ipaEuiccDataError; + IpaEuiccDataResponseError_t ipaEuiccDataResponseError; /* * This type is extensible, * possible extensions are below. diff --git a/src/ipa/libasn/IpaEuiccDataResponseError.c b/src/ipa/libasn/IpaEuiccDataResponseError.c new file mode 100644 index 0000000..045bed2 --- /dev/null +++ b/src/ipa/libasn/IpaEuiccDataResponseError.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#include "IpaEuiccDataResponseError.h" + +asn_TYPE_member_t asn_MBR_IpaEuiccDataResponseError_1[] = { + { ATF_POINTER, 1, offsetof(struct IpaEuiccDataResponseError, eimTransactionId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransactionId, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eimTransactionId" + }, + { ATF_NOFLAGS, 0, offsetof(struct IpaEuiccDataResponseError, ipaEuiccDataErrorCode), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_IpaEuiccDataErrorCode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ipaEuiccDataErrorCode" + }, +}; +static const int asn_MAP_IpaEuiccDataResponseError_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_IpaEuiccDataResponseError_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IpaEuiccDataResponseError_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* ipaEuiccDataErrorCode */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eimTransactionId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccDataResponseError_specs_1 = { + sizeof(struct IpaEuiccDataResponseError), + offsetof(struct IpaEuiccDataResponseError, _asn_ctx), + asn_MAP_IpaEuiccDataResponseError_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_IpaEuiccDataResponseError_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataResponseError = { + "IpaEuiccDataResponseError", + "IpaEuiccDataResponseError", + &asn_OP_SEQUENCE, + asn_DEF_IpaEuiccDataResponseError_tags_1, + sizeof(asn_DEF_IpaEuiccDataResponseError_tags_1) + /sizeof(asn_DEF_IpaEuiccDataResponseError_tags_1[0]), /* 1 */ + asn_DEF_IpaEuiccDataResponseError_tags_1, /* Same as above */ + sizeof(asn_DEF_IpaEuiccDataResponseError_tags_1) + /sizeof(asn_DEF_IpaEuiccDataResponseError_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_IpaEuiccDataResponseError_1, + 2, /* Elements count */ + &asn_SPC_IpaEuiccDataResponseError_specs_1 /* Additional specs */ +}; + diff --git a/src/ipa/libasn/IpaEuiccDataResponseError.h b/src/ipa/libasn/IpaEuiccDataResponseError.h new file mode 100644 index 0000000..0069679 --- /dev/null +++ b/src/ipa/libasn/IpaEuiccDataResponseError.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "SGP32Definitions" + * found in "../../../asn1/SGP32Definitions.asn" + * `asn1c -fcompound-names -no-gen-example` + */ + +#ifndef _IpaEuiccDataResponseError_H_ +#define _IpaEuiccDataResponseError_H_ + + +#include <asn_application.h> + +/* Including external dependencies */ +#include "TransactionId.h" +#include "IpaEuiccDataErrorCode.h" +#include <constr_SEQUENCE.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* IpaEuiccDataResponseError */ +typedef struct IpaEuiccDataResponseError { + TransactionId_t *eimTransactionId /* OPTIONAL */; + IpaEuiccDataErrorCode_t ipaEuiccDataErrorCode; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IpaEuiccDataResponseError_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IpaEuiccDataResponseError; +extern asn_SEQUENCE_specifics_t asn_SPC_IpaEuiccDataResponseError_specs_1; +extern asn_TYPE_member_t asn_MBR_IpaEuiccDataResponseError_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _IpaEuiccDataResponseError_H_ */ +#include <asn_internal.h> diff --git a/src/ipa/libipa/proc_euicc_data_req.c b/src/ipa/libipa/proc_euicc_data_req.c index ebfbf1d..2db088b 100644 --- a/src/ipa/libipa/proc_euicc_data_req.c +++ b/src/ipa/libipa/proc_euicc_data_req.c @@ -209,10 +209,13 @@ if (!prvde_eim_pkg_rslt_res) goto error;
- if (ipa_euicc_data_response.present == IpaEuiccDataResponse_PR_ipaEuiccDataError) + if (ipa_euicc_data_response.present == IpaEuiccDataResponse_PR_ipaEuiccDataResponseError) { IPA_LOGP(SIPA, LINFO, "IPA get EUICC data failed, eIM is informed about the failure!\n"); - else + ipa_euicc_data_response.choice.ipaEuiccDataResponseError.eimTransactionId = pars->ipa_euicc_data_request->eimTransactionId; + } else { IPA_LOGP(SIPA, LINFO, "IPA get EUICC data succeeded!\n"); + ipa_euicc_data_response.choice.ipaEuiccData.eimTransactionId = pars->ipa_euicc_data_request->eimTransactionId; + }
IPA_FREE(tag_list); ipa_es10a_get_euicc_cfg_addr_free(euicc_cfg_addr);