Commit 0002988e authored by Yann Garcia's avatar Yann Garcia
Browse files

Add clause references for ITS-S part

parent d4cb4c5a
Loading
Loading
Loading
Loading
+133 −45
Original line number Diff line number Diff line
@@ -485,6 +485,7 @@ module ItsPki_TestCases {
    } // End of group itss_helpers
    // ETSI TS 103 525-2 V2.0.2 (2023-07) Clause 5.2.2.1	Enrollment request
    group itss_enrolment_request {
      /**
@@ -1606,6 +1607,7 @@ module ItsPki_TestCases {
    } // End of group itss_enrolment_request
    // ETSI TS 103 525-2 V2.0.2 (2023-07) Clause 5.2.2.2	Enrollment response handling
    group itss_enrolment_response {
      /**
@@ -1966,6 +1968,12 @@ module ItsPki_TestCases {
    } // End of group itss_enrolment_response
    // ETSI TS 103 525-2 V2.0.2 (2023-07) Clause 5.2.2.3	Enrollment request repetition
    group itss_enrollment_request_repetition {
      // TODO
    } // End of group itss_enrollment_request_repetition
    // ETSI TS 103 525-2 V2.0.2 (2023-07) Clause 5.2.3.1	Authorization request
    group itss_authorization_request {
      /**
@@ -2562,12 +2570,16 @@ module ItsPki_TestCases {
      } // End of testcase TC_SECPKI_ITSS_AUTH_05_BV
      // TODO Missing TPs TC_SECPKI_ITSS_AUTH_06..19
    } // End of group itss_authorization_request
    // ETSI TS 103 525-2 V2.0.2 (2023-07) Clause 5.2.3.2	Authorization response handling
    group itss_authorization_response {
      // Void
    } // End of group itss_authorization_response
    // ETSI TS 103 525-2 V2.0.2 (2023-07) Clause 5.2.3.3	Authorization request repetition
    group itss_authorization_request_repetition {
      /**
@@ -3330,6 +3342,7 @@ module ItsPki_TestCases {
    } // End of group itss_authorization_request_repetition
    // ETSI TS 103 525-2 V2.0.2 (2023-07) Clause 5.2.3.4	Authorization using butterfly key expansion mechanism
    group itss_authorization_request_bfk {
      /**
@@ -3965,6 +3978,7 @@ module ItsPki_TestCases {
      } // End of group f_TC_SECPKI_ITSS_BFK_CERTDNL_01_BV
    } // End of group itss_authorization_request_bfk
    // ETSI TS 103 525-2 V2.0.2 (2023-07) Clause 5.2.4	CTL handling
    group itss_ctl_handling {
      /**
@@ -5001,6 +5015,7 @@ module ItsPki_TestCases {
    } // End of group itss_ctl_handling
    // ETSI TS 103 525-2 V2.0.2 (2023-07) Clause 5.2.5	CTL distribution
    group itss_ctl_distribution {
      /**
@@ -5958,23 +5973,7 @@ module ItsPki_TestCases {
      } // End of group f_TC_SECPKI_ITSS_CTLDIST_04_BV
      // TODO
    } // End of group itss_ctl_distribution
@@ -11966,7 +11965,6 @@ module ItsPki_TestCases {
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
          } else {
            log("*** " & testcasename() & ": INFO: Enrolment succeed ***");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
          }
          log("*** " & testcasename() & ": DEBUG: v_inner_ec_response= ", v_inner_ec_response);
          log("*** " & testcasename() & ": DEBUG: = ", v_private_key_ec);
@@ -12098,7 +12096,6 @@ module ItsPki_TestCases {
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
          } else {
            log("*** " & testcasename() & ": INFO: Enrolment succeed ***");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
          }
          log("*** " & testcasename() & ": DEBUG: v_inner_ec_response= ", v_inner_ec_response);
          log("*** " & testcasename() & ": DEBUG: = ", v_private_key_ec);
@@ -12181,12 +12178,14 @@ module ItsPki_TestCases {
          function f_trigger_butterfly_authorization_request(
                                                             out HashedId8 p_aes_sym_key_hashed_id8,
                                                             out EeRaCertRequest p_ee_ra_cert_request
                                                             ) runs on ItsPkiHttp {
                                                             out EeRaCertRequest p_ee_ra_cert_request,
                                                             out RaEeCertInfo p_ra_ee_cert_info
                                                             ) runs on ItsPkiHttp return boolean {
            // Local variables
            var Oct32 v_private_key_ec;
            var Oct32 v_public_compressed_key_ec;
            var octetstring v_private_key_ec;
            var octetstring v_public_compressed_key_ec;
            var integer v_compressed_key_mode_ec;
            var HashedId8 v_ec_cert_hashed_id8;
            var InnerEcResponse v_inner_ec_response;
            var octetstring v_caterpillar_private_key;
            var octetstring v_caterpillar_public_key_compressed;
@@ -12194,31 +12193,37 @@ module ItsPki_TestCases {
            var octetstring v_caterpillar_enc_private_key;
            var octetstring v_caterpillar_enc_public_key_compressed;
            var integer v_caterpillar_enc_compressed_mode;
            var octetstring v_private_key;
            var EeRaCertRequest v_ee_ra_cert_request;
            var Oct32 v_request_hash;
            var Oct16 v_encrypted_sym_key;
            var Oct16 v_aes_sym_key;
            var HashedId8 v_aes_sym_key_hashed_id8;
            var Oct16 v_authentication_vector;
            var Oct12 v_nonce;
            var octetstring v_salt;
            var Ieee1609Dot2Data v_ieee1609dot2_signed_and_encrypted_data;
            var Headers v_headers;
            var HttpMessage v_response;
            var EtsiTs102941Data v_etsi_ts_102941_data;
            // Trigger an enrolment request
            /*if (f_await_http_inner_ec_request_response(v_private_key_ec, v_public_compressed_key_ec, v_compressed_key_mode_ec, v_inner_ec_response) == false) {
            // Trigger an enrolment request
            if (f_await_http_inner_ec_request_response(v_private_key_ec, v_public_compressed_key_ec, v_compressed_key_mode_ec, v_ec_cert_hashed_id8, v_inner_ec_response, -, true) == false) {
              log("*** " & testcasename() & ": INCONC: Enrolment failed ***");
              f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
              return false;
            } else {
              log("*** " & testcasename() & ": INFO: Enrolment succeed ***");
              f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            }
            log("*** " & testcasename() & ": DEBUG: v_inner_ec_response= ", v_inner_ec_response);
            log("*** " & testcasename() & ": DEBUG: v_private_key_ec= ", v_private_key_ec);
            f_http_build_butterfly_authorization_request_message(v_private_key_ec, v_ec_cert_hash_256, v_caterpillar_private_key, v_caterpillar_public_key_compressed, v_caterpillar_compressed_mode, v_caterpillar_enc_private_key, v_caterpillar_enc_public_key_compressed, v_caterpillar_enc_compressed_mode, v_aes_sym_key, v_encrypted_sym_key, v_authentication_vector, v_nonce, v_salt, v_ieee1609dot2_signed_and_encrypted_data, v_request_hash, p_ee_ra_cert_request);
            p_aes_sym_key_hashed_id8 := f_hashedId8FromSha256(f_hashWithSha256('80'O & v_aes_sym_key)); // Used to match the response
            log("*** " & testcasename() & ": DEBUG: = ", v_private_key_ec);
            // Generate an ButterflyAutorizationRequest
            f_http_build_butterfly_authorization_request_message(v_private_key_ec, v_ec_cert_hashed_id8, v_caterpillar_private_key, v_caterpillar_public_key_compressed, v_caterpillar_compressed_mode, v_caterpillar_enc_private_key, v_caterpillar_enc_public_key_compressed, v_caterpillar_enc_compressed_mode, v_aes_sym_key, v_encrypted_sym_key, v_authentication_vector, v_nonce, v_salt, v_ieee1609dot2_signed_and_encrypted_data, v_request_hash, v_ee_ra_cert_request);
            log("*** " & testcasename() & ": DEBUG: v_ee_ra_cert_request= ", v_ee_ra_cert_request);
            log("*** " & testcasename() & ": DEBUG: v_caterpillar_private_key= ", v_caterpillar_private_key);
            v_aes_sym_key_hashed_id8 := f_hashedId8FromSha256(f_hashWithSha256('80'O & v_aes_sym_key)); // Used to match the response
            f_init_default_headers_list(-, "bfk_auth_request", v_headers);
            // Test Body
            f_http_send(
                        v_headers,
                        m_http_request(
@@ -12228,7 +12233,78 @@ module ItsPki_TestCases {
                                                           m_http_message_body_binary(
                                                                                      m_binary_body_ieee1609dot2_data(
                                                                                                                      v_ieee1609dot2_signed_and_encrypted_data
                                                                                                                    )))));*/
                                                                                                                      )))));
            tc_ac.start;
            alt {
              [] a_await_ec_http_response_from_iut(
                                                   mw_http_response(
                                                                    mw_http_response_ok(
                                                                                        mw_http_message_body_binary(
                                                                                                                    mw_binary_body_ieee1609dot2_data(
                                                                                                                                                     mw_butterflyAuthorizationResponseMessage(
                                                                                                                                                                                              mw_signedData(
                                                                                                                                                                                                            sha256,
                                                                                                                                                                                                            mw_toBeSignedData,
                                                                                                                                                                                                            m_signerIdentifier_digest(vc_eaHashedId8)
                                                                    )))))),
                                                  v_response
                                                  ) {
                tc_ac.stop;
                var octetstring v_tbs := bit2oct(encvalue(v_response.response.body.binary_body.ieee1609dot2_data.content.signedData.tbsData));
                if (f_verifyEcdsa(v_tbs, vc_eaWholeHash256, v_response.response.body.binary_body.ieee1609dot2_data.content.signedData.signature_, vc_eaCertificate.toBeSigned.verifyKeyIndicator.verificationKey) == false) {
                  log("*** " & testcasename() & ": INCONC: Failed to verify signature message ***");
                  return false;
                } else {
                  var bitstring v_etsi_ts_102941_data_content_msg := oct2bit(v_response.response.body.binary_body.ieee1609dot2_data.content.signedData.tbsData.payload.data.content.unsecuredData);
                  /** 
                  TITIAN BUG
                  https://www.eclipse.org/forums/index.php/t/1113606/
                  var EtsiTs102941MessagesCa.EtsiTs102941Data v_etsi_ts_102941_data;
                  if (decvalue(v_etsi_ts_102941_data_content_msg, v_etsi_ts_102941_data) != 0) {
                    log("*** " & testcasename() & ": INCONC: Failed to decode message ***");
                    return false;
                  } else {
                    log("*** " & testcasename() & ": DBG: v_etsi_ts_102941_data: ", v_etsi_ts_102941_data);
                    log("*** " & testcasename() & ": INFO: match ", match(v_etsi_ts_102941_data.content, mw_butterflyAuthorizationResponse(mw_ra_ee_cert_info)), " ***"); // TODO In TITAN, this is the only way to get the unmatching in log
                    if (not(match(v_etsi_ts_102941_data.content, mw_butterflyAuthorizationResponse(mw_ra_ee_cert_info)))) {
                      log("*** " & testcasename() & ": FAIL: Unexpected message ***");
                      return false;
                    } else {
                      log("*** " & testcasename() & ": INFO: ButterflyAuthorizationResponseMessage received ***");
                      p_ra_ee_cert_info := v_etsi_ts_102941_data.content.butterflyAuthorizationResponse;
                    }
                  }
                  **/
                  // Extract currentI, request hash && nextDlTime
                  var integer v_len := lengthof(v_response.response.body.binary_body.ieee1609dot2_data.content.signedData.tbsData.payload.data.content.unsecuredData);
                  var IValue v_currentI := oct2int(substr(v_response.response.body.binary_body.ieee1609dot2_data.content.signedData.tbsData.payload.data.content.unsecuredData, v_len - 4 - 8 - 2, 2));
                  var HashedId8 v_requestHash := substr(v_response.response.body.binary_body.ieee1609dot2_data.content.signedData.tbsData.payload.data.content.unsecuredData, v_len - 4 - 8, 8);
                  var Time32 v_nextDlTime := oct2int(substr(v_response.response.body.binary_body.ieee1609dot2_data.content.signedData.tbsData.payload.data.content.unsecuredData, v_len - 4, 4));
                  log("*** " & testcasename() & ": DBG: nextDlTime: ", v_nextDlTime);
                  log("*** " & testcasename() & ": DBG: request hash: ", v_requestHash);
                  log("*** " & testcasename() & ": DBG: currentI: ", v_currentI);
                  log("*** " & testcasename() & ": DBG: v_nextDlTime - f_getCurrentTime/100: ", f_getCurrentTime() / 1000);
                  log("*** " & testcasename() & ": DBG: v_nextDlTime - CurrentTime: ", v_nextDlTime - f_getCurrentTime() / 1000);
                  log("*** " & testcasename() & ": INFO: ButterflyAuthorizationResponseMessage received ***");
                  p_ra_ee_cert_info := valueof(
                                               m_ra_ee_cert_info(
                                                                 f_getCurrentTime() / 1000,
                                                                 v_currentI,
                                                                 v_requestHash,
                                                                 v_nextDlTime
                                               ));
                }
                log("*** " & testcasename() & ": INFO: p_ra_ee_cert_info: ", p_ra_ee_cert_info, " ***");
              }
              [] tc_ac.timeout {
                log("*** " & testcasename() & ": INCONC: Expected message not received ***");
                return false;
              }
            } // End of 'alt' statement
            return true;
          } // End of function f_trigger_butterfly_authorization_request
          function f_verify_http_butterfly_cert_request_message_from_aa(
@@ -12351,6 +12427,7 @@ module ItsPki_TestCases {
          var HttpMessage v_response;
          var integer v_result;
          var EeRaCertRequest v_ee_ra_cert_request;
          var RaEeCertInfo p_ra_ee_cert_info;
          var RaAcaCertRequest v_butterflyCertificateRequest;
          // Test control
@@ -12366,7 +12443,8 @@ module ItsPki_TestCases {
          // Test adapter configuration
          // Preamble
          f_trigger_butterfly_authorization_request(v_aes_sym_key_hashed_id8, v_ee_ra_cert_request);
          f_trigger_butterfly_authorization_request(v_aes_sym_key_hashed_id8, v_ee_ra_cert_request, p_ra_ee_cert_info);
          log("*** " & testcasename() & ": INFO: p_ra_ee_cert_info:", p_ra_ee_cert_info, " ***");
          f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
          // Test Body
@@ -12491,6 +12569,7 @@ module ItsPki_TestCases {
          var HttpMessage v_response;
          var integer v_result;
          var EeRaCertRequest v_ee_ra_cert_request;
          var RaEeCertInfo p_ra_ee_cert_info;
          var RaAcaCertRequest v_butterflyCertificateRequest;
          // Test control
@@ -12506,7 +12585,7 @@ module ItsPki_TestCases {
          // Test adapter configuration
          // Preamble
          f_trigger_butterfly_authorization_request(v_aes_sym_key_hashed_id8, v_ee_ra_cert_request);
          f_trigger_butterfly_authorization_request(v_aes_sym_key_hashed_id8, v_ee_ra_cert_request, p_ra_ee_cert_info);
          f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
          // Test Body
@@ -12628,6 +12707,7 @@ module ItsPki_TestCases {
          var HttpMessage v_response;
          var integer v_result;
          var EeRaCertRequest v_ee_ra_cert_request;
          var RaEeCertInfo p_ra_ee_cert_info;
          var RaAcaCertRequest v_butterflyCertificateRequest;
          // Test control
@@ -12643,7 +12723,7 @@ module ItsPki_TestCases {
          // Test adapter configuration
          // Preamble
          f_trigger_butterfly_authorization_request(v_aes_sym_key_hashed_id8, v_ee_ra_cert_request);
          f_trigger_butterfly_authorization_request(v_aes_sym_key_hashed_id8, v_ee_ra_cert_request, p_ra_ee_cert_info);
          f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
          // Test Body
@@ -12773,6 +12853,7 @@ module ItsPki_TestCases {
          var Headers v_headers;
          var HttpMessage v_response;
          var EeRaCertRequest v_ee_ra_cert_request;
          var RaEeCertInfo p_ra_ee_cert_info;
          var EtsiTs102941Data v_etsi_ts_102941_data;
          // Test control
@@ -12788,8 +12869,15 @@ module ItsPki_TestCases {
          // Test adapter configuration
          // Preamble
          f_trigger_butterfly_authorization_request(v_aes_sym_key_hashed_id8, v_ee_ra_cert_request);
          f_http_build_butterfly_at_download_request_message(""/*FIXME FSCOM*/, v_aes_sym_key, v_encrypted_sym_key, v_authentication_vector, v_nonce, v_salt, v_ieee1609dot2_signed_and_encrypted_data, v_request_hash);
          f_trigger_butterfly_authorization_request(v_aes_sym_key_hashed_id8, v_ee_ra_cert_request, p_ra_ee_cert_info);
          // Wait for v_ee_ra_cert_request.nextDlTime
          var float v_timer := int2float(p_ra_ee_cert_info.nextDlTime - p_ra_ee_cert_info.generationTime + 2);
          log("*** " & testcasename() & ": INFO: Start wailting for " & float2str(v_timer) & " seconds ***");
          f_sleepIgnoreDef(v_timer);
          log("*** " & testcasename() & ": INFO: timer of " & float2str(v_timer) & " seconds expierd message ***");
          f_http_build_butterfly_at_download_request_message(oct2str(p_ra_ee_cert_info.requestHash) & "_" & int2str(p_ra_ee_cert_info.currentI) & ".zip", v_aes_sym_key, v_encrypted_sym_key, v_authentication_vector, v_nonce, v_salt, v_ieee1609dot2_signed_and_encrypted_data, v_request_hash);
          v_aes_sym_key_hashed_id8 := f_hashedId8FromSha256(f_hashWithSha256('80'O & v_aes_sym_key)); // Used to match the response
          f_init_default_headers_list(-, "bfk_at_download_request", v_headers);
          f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
@@ -12799,7 +12887,7 @@ module ItsPki_TestCases {
                      v_headers,
                      m_http_request(
                                    m_http_request_post(
                                                        PICS_HTTP_POST_URI_EC,
                                                        PICS_HTTP_POST_URI_BFK_AT_DOWNLOAD,
                                                        v_headers,
                                                        m_http_message_body_binary(
                                                                                   m_binary_body_ieee1609dot2_data(
+8 −26
Original line number Diff line number Diff line
@@ -1735,7 +1735,6 @@ module LibItsPki_Functions {

      var Ieee1609Dot2Data v_ee_ra_cert_request_signed;
      var octetstring v_public_enc_key;
      var octetstring v_private_key;
      var integer v_compressed_enc_key_mode;
      var boolean v_result;

@@ -1757,17 +1756,6 @@ module LibItsPki_Functions {
      log("f_http_build_butterfly_authorization_request_message: Public encryption key: ", v_public_enc_key);
      log("f_http_build_butterfly_authorization_request_message: Public encryption key comp: ", v_compressed_enc_key_mode);
      p_salt := vc_eaWholeHash256; // IEEE 1609.2: If the encryption key was obtained from a certificate c, P1 is SHA-256 (c), where c is the COER encoding of the certificate, canonicalized per 6.4.3.
      if (PX_VE_ALG == e_nist_p256) {
        v_private_key := PICS_ITS_S_SIGN_NITSP256_PRIVATE_KEY;
      } else if (PX_VE_ALG == e_brainpool_p256_r1) {
        v_private_key := PICS_ITS_S_SIGN_BRAINPOOLP256r1_PRIVATE_KEY;
      } else if (PX_VE_ALG == e_sm2_p256) {
        v_private_key := PICS_ITS_S_SIGN_SM2P256_PRIVATE_KEY;
      } else if (PX_VE_ALG == e_nist_p384) {
        v_private_key := PICS_ITS_S_SIGN_NISTP384_PRIVATE_KEY;
      } else {
        v_private_key := PICS_ITS_S_SIGN_BRAINPOOLP384r1_PRIVATE_KEY;
      }
      v_result := f_build_pki_secured_request_message_signed_with_pop(p_private_key_ec, valueof(m_signerIdentifier_digest(p_ec_cert_hashed_id8)), vc_eaHashedId8/*recipientId*/, v_public_enc_key, v_compressed_enc_key_mode, p_salt, bit2oct(encvalue(m_etsiTs102941Data_ee_ra_cert_request(p_ee_ra_cert_request))), PX_EC_ALG_FOR_EC, -, p_ieee1609dot2_signed_and_encrypted_data, p_aes_sym_key, p_encrypted_sym_key, p_authentication_vector, p_nonce, p_request_hash);
      if (v_result == false) {
        log("*** f_http_build_butterfly_authorization_request_message: ERROR: Failed to generate InnerEcRequestSignedForPop ***");
@@ -1949,7 +1937,7 @@ module LibItsPki_Functions {
      var octetstring v_private_key;
      var boolean v_result;

      log(">>> f_http_build_butterfly_at_download_request_message");
      log(">>> f_http_build_butterfly_at_download_request_message: p_filename: ", p_filename);

      // Generate EeRaDownloadRequest
      if (f_generate_ee_ra_download_request(p_filename, v_ee_ra_download_request) == false) {
@@ -1966,18 +1954,11 @@ module LibItsPki_Functions {
      log("f_http_build_butterfly_at_download_request_message: Public encryption key: ", v_public_enc_key);
      log("f_http_build_butterfly_at_download_request_message: Public encryption key comp: ", v_compressed_enc_key_mode);
      p_salt := vc_eaWholeHash256; // IEEE 1609.2: If the encryption key was obtained from a certificate c, P1 is SHA-256 (c), where c is the COER encoding of the certificate, canonicalized per 6.4.3.
      if (PX_VE_ALG == e_nist_p256) {
        v_private_key := PICS_ITS_S_SIGN_NITSP256_PRIVATE_KEY;
      } else if (PX_VE_ALG == e_brainpool_p256_r1) {
        v_private_key := PICS_ITS_S_SIGN_BRAINPOOLP256r1_PRIVATE_KEY;
      } else if (PX_VE_ALG == e_sm2_p256) {
        v_private_key := PICS_ITS_S_SIGN_SM2P256_PRIVATE_KEY;
      } else if (PX_VE_ALG == e_nist_p384) {
        v_private_key := PICS_ITS_S_SIGN_NISTP384_PRIVATE_KEY;
      } else {
        v_private_key := PICS_ITS_S_SIGN_BRAINPOOLP384r1_PRIVATE_KEY;
      }
      v_result := f_build_pki_secured_request_message_signed_with_pop(v_private_key, valueof(m_signerIdentifier_self), vc_eaHashedId8/*recipientId*/, v_public_enc_key, v_compressed_enc_key_mode, p_salt, bit2oct(encvalue(m_etsiTs102941Data_ee_ra_download_request(v_ee_ra_download_request))), PX_EC_ALG_FOR_EC, -, p_ieee1609dot2_signed_and_encrypted_data, p_aes_sym_key, p_encrypted_sym_key, p_authentication_vector, p_nonce, p_request_hash);

      log("f_http_build_butterfly_at_download_request_message: vc_ec_keys_counter: ", vc_ec_keys_counter);
      log("f_http_build_butterfly_at_download_request_message: vc_ec_private_keys: ", vc_ec_private_keys);
      log("f_http_build_butterfly_at_download_request_message: vc_ec_cert_hashed_id8: ", vc_ec_hashed_id8);
      v_result := f_build_pki_secured_request_message_signed_with_pop(vc_ec_private_keys[vc_ec_keys_counter - 1], valueof(m_signerIdentifier_digest(vc_ec_hashed_id8[vc_ec_keys_counter - 1])), vc_eaHashedId8/*recipientId*/, v_public_enc_key, v_compressed_enc_key_mode, p_salt, bit2oct(encvalue(m_etsiTs102941Data_ee_ra_download_request(v_ee_ra_download_request))), PX_EC_ALG_FOR_EC, -, p_ieee1609dot2_signed_and_encrypted_data, p_aes_sym_key, p_encrypted_sym_key, p_authentication_vector, p_nonce, p_request_hash);
      if (v_result == false) {
        log("*** f_http_build_butterfly_at_download_request_message: ERROR: Failed to generate InnerEcRequestSignedForPop ***");
        return false;
@@ -3891,7 +3872,7 @@ module LibItsPki_Functions {
                                               in charstring p_filename,
                                               out EeRaDownloadRequest p_ee_ra_download_request
                                               ) runs on ItsPkiHttp return boolean {
      var UInt32 v_current_time := f_getCurrentTimeUtc() / 1000; // In seconds
      var UInt32 v_current_time := f_getCurrentTime() / 1000; // In seconds
      p_ee_ra_download_request := valueof(m_ee_ra_download_request(v_current_time, p_filename));

      log("f_generate_ee_ra_download_request: p_ee_ra_download_request: ", p_ee_ra_download_request);
@@ -5096,6 +5077,7 @@ module LibItsPki_Functions {
                return false;
              }
            }
            vc_ec_hashed_id8[vc_ec_keys_counter - 1] := p_ec_cert_hashed_id8;
            p_inner_ec_response := v_etsi_ts_102941_data.content.enrolmentResponse;
            log("f_await_http_inner_ec_request_response: Well-secured EA certificate received ***");
            log("f_await_http_inner_ec_request_response: p_inner_ec_response= ", p_inner_ec_response);