jolly has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/onomondo-ipa/+/43056?usp=email )


Change subject: V1.2: Add eimTransactionId to InitiateAuthenticationRequestEsipa
......................................................................

V1.2: Add eimTransactionId to InitiateAuthenticationRequestEsipa

Add new eimTransactionId field to InitiateAuthenticationRequestEsipa.

The eimTransactionId walks through the IPA process like this:

 * The eimTransactionId is retrieved from ProfileDownloadTriggerRequest
   at proc_eim_pkg_retr.c.
 * Then it is handed to the Common Mutual Authentication Procedure at
   proc_indirect_prfle_dwnld.c.
 * There it is handed to the InitiateAuthentication function at
   proc_cmn_mtl_auth.c.
 * There it is stored in initiateAuthenticationRequestEsipa at
   esipa_init_auth.c.

Reference: SGP.32 Section 5.14.1

Related: SYS#8101
Change-Id: I1c8ef6fc0a3f7ab5735e401597fc8c6b2021fc09
---
M asn1/SGP32Definitions.asn
M src/ipa/libasn/InitiateAuthenticationRequestEsipa.c
M src/ipa/libasn/InitiateAuthenticationRequestEsipa.h
M src/ipa/libipa/esipa_init_auth.c
M src/ipa/libipa/esipa_init_auth.h
M src/ipa/libipa/proc_cmn_mtl_auth.c
M src/ipa/libipa/proc_cmn_mtl_auth.h
M src/ipa/libipa/proc_eim_pkg_retr.c
M src/ipa/libipa/proc_indirect_prfle_dwnld.c
M src/ipa/libipa/proc_indirect_prfle_dwnld.h
10 files changed, 31 insertions(+), 9 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/onomondo-ipa refs/changes/56/43056/1

diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn
index 14ee3cb..b99168b 100644
--- a/asn1/SGP32Definitions.asn
+++ b/asn1/SGP32Definitions.asn
@@ -870,7 +870,8 @@
 InitiateAuthenticationRequestEsipa ::= [57] SEQUENCE { -- Tag 'BF39'
   euiccChallenge [1] Octet16, -- random eUICC challenge
   smdpAddress [3] UTF8String OPTIONAL,
-  euiccInfo1 EUICCInfo1 OPTIONAL
+  euiccInfo1 EUICCInfo1 OPTIONAL,
+  eimTransactionId [2] TransactionId OPTIONAL
 }
 InitiateAuthenticationResponseEsipa ::= [57] CHOICE { -- Tag 'BF39'
   initiateAuthenticationOkEsipa InitiateAuthenticationOkEsipa,
diff --git a/src/ipa/libasn/InitiateAuthenticationRequestEsipa.c 
b/src/ipa/libasn/InitiateAuthenticationRequestEsipa.c
index 1366a8d..f148fca 100644
--- a/src/ipa/libasn/InitiateAuthenticationRequestEsipa.c
+++ b/src/ipa/libasn/InitiateAuthenticationRequestEsipa.c
@@ -17,7 +17,7 @@
                0, 0, /* No default value */
                "euiccChallenge"
                },
-       { ATF_POINTER, 2, offsetof(struct InitiateAuthenticationRequestEsipa, 
smdpAddress),
+       { ATF_POINTER, 3, offsetof(struct InitiateAuthenticationRequestEsipa, 
smdpAddress),
                (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
                -1,     /* IMPLICIT tag at current level */
                &asn_DEF_UTF8String,
@@ -26,7 +26,7 @@
                0, 0, /* No default value */
                "smdpAddress"
                },
-       { ATF_POINTER, 1, offsetof(struct InitiateAuthenticationRequestEsipa, 
euiccInfo1),
+       { ATF_POINTER, 2, offsetof(struct InitiateAuthenticationRequestEsipa, 
euiccInfo1),
                (ASN_TAG_CLASS_CONTEXT | (32 << 2)),
                0,
                &asn_DEF_EUICCInfo1,
@@ -35,14 +35,24 @@
                0, 0, /* No default value */
                "euiccInfo1"
                },
+       { ATF_POINTER, 1, offsetof(struct InitiateAuthenticationRequestEsipa, 
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"
+               },
 };
-static const int asn_MAP_InitiateAuthenticationRequestEsipa_oms_1[] = { 1, 2 };
+static const int asn_MAP_InitiateAuthenticationRequestEsipa_oms_1[] = { 1, 2, 
3 };
 static const ber_tlv_tag_t asn_DEF_InitiateAuthenticationRequestEsipa_tags_1[] 
= {
        (ASN_TAG_CLASS_CONTEXT | (57 << 2)),
        (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t 
asn_MAP_InitiateAuthenticationRequestEsipa_tag2el_1[] = {
     { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* euiccChallenge */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* eimTransactionId */
     { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* smdpAddress */
     { (ASN_TAG_CLASS_CONTEXT | (32 << 2)), 2, 0, 0 } /* euiccInfo1 */
 };
@@ -50,10 +60,10 @@
        sizeof(struct InitiateAuthenticationRequestEsipa),
        offsetof(struct InitiateAuthenticationRequestEsipa, _asn_ctx),
        asn_MAP_InitiateAuthenticationRequestEsipa_tag2el_1,
-       3,      /* Count of tags in the map */
+       4,      /* Count of tags in the map */
        asn_MAP_InitiateAuthenticationRequestEsipa_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_InitiateAuthenticationRequestEsipa = {
        "InitiateAuthenticationRequestEsipa",
@@ -67,7 +77,7 @@
                /sizeof(asn_DEF_InitiateAuthenticationRequestEsipa_tags_1[0]), 
/* 2 */
        { 0, 0, SEQUENCE_constraint },
        asn_MBR_InitiateAuthenticationRequestEsipa_1,
-       3,      /* Elements count */
+       4,      /* Elements count */
        &asn_SPC_InitiateAuthenticationRequestEsipa_specs_1     /* Additional 
specs */
 };

diff --git a/src/ipa/libasn/InitiateAuthenticationRequestEsipa.h 
b/src/ipa/libasn/InitiateAuthenticationRequestEsipa.h
index e043267..886081a 100644
--- a/src/ipa/libasn/InitiateAuthenticationRequestEsipa.h
+++ b/src/ipa/libasn/InitiateAuthenticationRequestEsipa.h
@@ -14,6 +14,7 @@
 /* Including external dependencies */
 #include "Octet16.h"
 #include <UTF8String.h>
+#include "TransactionId.h"
 #include <constr_SEQUENCE.h>

 #ifdef __cplusplus
@@ -28,6 +29,7 @@
        Octet16_t        euiccChallenge;
        UTF8String_t    *smdpAddress    /* OPTIONAL */;
        struct EUICCInfo1       *euiccInfo1     /* OPTIONAL */;
+       TransactionId_t *eimTransactionId       /* OPTIONAL */;
        /*
         * This type is extensible,
         * possible extensions are below.
@@ -40,7 +42,7 @@
 /* Implementation */
 extern asn_TYPE_descriptor_t asn_DEF_InitiateAuthenticationRequestEsipa;
 extern asn_SEQUENCE_specifics_t 
asn_SPC_InitiateAuthenticationRequestEsipa_specs_1;
-extern asn_TYPE_member_t asn_MBR_InitiateAuthenticationRequestEsipa_1[3];
+extern asn_TYPE_member_t asn_MBR_InitiateAuthenticationRequestEsipa_1[4];

 #ifdef __cplusplus
 }
diff --git a/src/ipa/libipa/esipa_init_auth.c b/src/ipa/libipa/esipa_init_auth.c
index 89a3e58..2e8532c 100644
--- a/src/ipa/libipa/esipa_init_auth.c
+++ b/src/ipa/libipa/esipa_init_auth.c
@@ -55,6 +55,9 @@
        /* eUICC info */
        msg_to_eim.choice.initiateAuthenticationRequestEsipa.euiccInfo1 = 
(EUICCInfo1_t *) req->euicc_info_1;

+       /* eIM transaction ID */
+       msg_to_eim.choice.initiateAuthenticationRequestEsipa.eimTransactionId = 
req->eim_transaction_id;
+
        /* Encode */
        return ipa_esipa_msg_to_eim_enc(&msg_to_eim, "InitiateAuthentication");
 }
diff --git a/src/ipa/libipa/esipa_init_auth.h b/src/ipa/libipa/esipa_init_auth.h
index 1f91c1c..06147bf 100644
--- a/src/ipa/libipa/esipa_init_auth.h
+++ b/src/ipa/libipa/esipa_init_auth.h
@@ -16,6 +16,7 @@
        const uint8_t *euicc_challenge;
        const char *smdp_addr;
        const EUICCInfo1_t *euicc_info_1;
+       TransactionId_t *eim_transaction_id;
 };

 struct ipa_esipa_init_auth_res {
diff --git a/src/ipa/libipa/proc_cmn_mtl_auth.c 
b/src/ipa/libipa/proc_cmn_mtl_auth.c
index df9fcc9..a8670ae 100644
--- a/src/ipa/libipa/proc_cmn_mtl_auth.c
+++ b/src/ipa/libipa/proc_cmn_mtl_auth.c
@@ -176,6 +176,7 @@
        init_auth_req.euicc_challenge = euicc_challenge;
        init_auth_req.smdp_addr = (char *)pars->smdp_addr;
        init_auth_req.euicc_info_1 = euicc_info->euicc_info_1;
+       init_auth_req.eim_transaction_id = pars->eim_transaction_id;
        init_auth_res = ipa_esipa_init_auth(ctx, &init_auth_req);
        if (!init_auth_res)
                goto error;
diff --git a/src/ipa/libipa/proc_cmn_mtl_auth.h 
b/src/ipa/libipa/proc_cmn_mtl_auth.h
index a74fb69..a806735 100644
--- a/src/ipa/libipa/proc_cmn_mtl_auth.h
+++ b/src/ipa/libipa/proc_cmn_mtl_auth.h
@@ -16,6 +16,7 @@
        const struct ipa_buf *allowed_ca;
        const char *smdp_addr;
        const char *ac_token;
+       TransactionId_t *eim_transaction_id;
 };

 struct ipa_esipa_auth_clnt_res *ipa_proc_cmn_mtl_auth(struct ipa_context *ctx,
diff --git a/src/ipa/libipa/proc_eim_pkg_retr.c 
b/src/ipa/libipa/proc_eim_pkg_retr.c
index 59b6f99..b95eb4e 100644
--- a/src/ipa/libipa/proc_eim_pkg_retr.c
+++ b/src/ipa/libipa/proc_eim_pkg_retr.c
@@ -129,6 +129,7 @@
                indirect_prfle_dwnlod_pars.ac =
                    
IPA_STR_FROM_ASN(&get_eim_pkg_res->dwnld_trigger_request->profileDownloadData->
                                     choice.activationCode);
+               indirect_prfle_dwnlod_pars.eim_transaction_id = 
get_eim_pkg_res->dwnld_trigger_request->eimTransactionId;
                rc = ipa_proc_indirect_prfle_dwnlod(ctx, 
&indirect_prfle_dwnlod_pars);
                IPA_FREE((void *)indirect_prfle_dwnlod_pars.ac);
                if (rc < 0)
diff --git a/src/ipa/libipa/proc_indirect_prfle_dwnld.c 
b/src/ipa/libipa/proc_indirect_prfle_dwnld.c
index 045796a..9bc1467 100644
--- a/src/ipa/libipa/proc_indirect_prfle_dwnld.c
+++ b/src/ipa/libipa/proc_indirect_prfle_dwnld.c
@@ -55,6 +55,7 @@
        cmn_mtl_auth_pars.allowed_ca = pars->allowed_ca;
        cmn_mtl_auth_pars.smdp_addr = activation_code->sm_dp_plus_address;
        cmn_mtl_auth_pars.ac_token = activation_code->ac_token;
+       cmn_mtl_auth_pars.eim_transaction_id = pars->eim_transaction_id;
        auth_clnt_res = ipa_proc_cmn_mtl_auth(ctx, &cmn_mtl_auth_pars);
        if (!auth_clnt_res) {
                IPA_LOGP(SIPA, LERROR, "cannot continue, mutual authentication 
failed!\n");
diff --git a/src/ipa/libipa/proc_indirect_prfle_dwnld.h 
b/src/ipa/libipa/proc_indirect_prfle_dwnld.h
index a856b3d..15fb91c 100644
--- a/src/ipa/libipa/proc_indirect_prfle_dwnld.h
+++ b/src/ipa/libipa/proc_indirect_prfle_dwnld.h
@@ -15,6 +15,7 @@
        const char *ac;
        const uint8_t *tac;
        const struct ipa_buf *allowed_ca;
+       TransactionId_t *eim_transaction_id;
 };

 int ipa_proc_indirect_prfle_dwnlod(struct ipa_context *ctx, const struct 
ipa_proc_indirect_prfle_dwnlod_pars *pars);

--
To view, visit https://gerrit.osmocom.org/c/onomondo-ipa/+/43056?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: onomondo-ipa
Gerrit-Branch: master
Gerrit-Change-Id: I1c8ef6fc0a3f7ab5735e401597fc8c6b2021fc09
Gerrit-Change-Number: 43056
Gerrit-PatchSet: 1
Gerrit-Owner: jolly <[email protected]>

Reply via email to