@@ -172,13 +172,14 @@ static int es10b_load_bound_profile_package_tx(struct euicc_ctx *ctx,
172172 result -> seqNumber = 0 ;
173173 result -> bppCommandId = ES10B_BPP_COMMAND_ID_UNDEFINED ;
174174 result -> errorReason = ES10B_ERROR_REASON_UNDEFINED ;
175+ result -> iccid = NULL ;
175176
176177 if (es10x_command (ctx , & respbuf , & resplen , reqbuf , reqbuf_len ) < 0 ) {
177178 goto err ;
178179 }
179180
180181 if (resplen > 0 ) {
181- struct euicc_derutil_node tmpnode , n_notificationMetadata , n_sequenceNumber , n_finalResult ;
182+ struct euicc_derutil_node tmpnode , n_notificationMetadata , n_sequenceNumber , n_iccid , n_finalResult ;
182183
183184 if (euicc_derutil_unpack_find_tag (& tmpnode , 0xBF37 , respbuf , resplen ) < 0 ) // ProfileInstallationResult
184185 {
@@ -213,6 +214,18 @@ static int es10b_load_bound_profile_package_tx(struct euicc_ctx *ctx,
213214 result -> seqNumber = euicc_derutil_convert_bin2long (n_sequenceNumber .value , n_sequenceNumber .length );
214215 }
215216
217+ if (euicc_derutil_unpack_find_tag (& n_iccid , 0x5A , n_notificationMetadata .value , n_notificationMetadata .length )
218+ == 0 ) {
219+ result -> iccid = malloc ((n_iccid .length * 2 ) + 1 );
220+ if (result -> iccid ) {
221+ if (euicc_hexutil_bin2gsmbcd (result -> iccid , (n_iccid .length * 2 ) + 1 , n_iccid .value , n_iccid .length )
222+ < 0 ) {
223+ free (result -> iccid );
224+ result -> iccid = NULL ;
225+ }
226+ }
227+ }
228+
216229 switch (n_finalResult .tag ) {
217230 case 0xA0 : // SuccessResult
218231 break ;
0 commit comments