Commit 750ede89 authored by Yann Garcia's avatar Yann Garcia
Browse files

Rework TC_SECPKI_ITSS_ENR_REP_01_BV

parent 468a91ac
Loading
Loading
Loading
Loading
+105 −45
Original line number Diff line number Diff line
@@ -2083,6 +2083,9 @@ module ItsPki_TestCases {
          var HttpMessage v_initial_request;
          var HttpMessage v_request;
          var InnerEcResponse v_inner_ec_response;
          timer tc_repetition_interval_min := PX_RE_AUTHORIZATION_DELAY * 0.95; // Lower bound of the repetition interval
          timer tc_repetition_interval_max := PX_RE_AUTHORIZATION_DELAY * 1.05; // Upper bound of the repetition interval
          var integer v_count := 0;
          // Test component configuration
          f_cfHttpUp(PICS_TS_EA_CERTIFICATE_ID, PICS_TS_AA_CERTIFICATE_ID);
@@ -2091,15 +2094,18 @@ module ItsPki_TestCases {
          // Preamble
          f_init_default_headers_list(-, "inner_ec_response", v_headers);
          f_await_ec_request_send_no_response(v_initial_request);
            log("*** " & testcasename() & ": INFO: Reply with no response error message ***");
          if (f_await_ec_request_send_no_response(v_initial_request)) {
            log("*** " & testcasename() & ": INFO: Receive InnerEcRequest, no response sent ***");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
          } else {
            log("*** " & testcasename() & ": INCONC: Invalid InnerEcRequest received ***");
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);         
          }
  
          // Test Body
          var integer i;
          var boolean v_loop := true;
          for (i := 0; i < PX_ENR_MAX_N1; i := i + 1) {
            tc_ac.start;
          tc_wait.start; // tc_wait >> tc_repetition_interval_max
          tc_repetition_interval_min.start;
          tc_repetition_interval_max.start;
          alt {
            [] a_await_ec_http_request_from_iut(
                                                mw_http_request(
@@ -2119,39 +2125,93 @@ module ItsPki_TestCases {
              var integer v_result;
              var InnerEcRequest v_inner_ec_request;
                tc_ac.stop;
              tc_repetition_interval_max.stop;
              if (not(tc_repetition_interval_min.running)) { // Receive repetition within the delay
                // Verify IUT response
                f_verify_http_ec_request_from_iut_itss(v_request.request, v_headers, v_inner_ec_request, v_inner_ec_response, v_response, v_result);
                // Send response
                if (isvalue(v_response)) {
                  httpPort.send(v_response);
                } else { // Send HTTP error 500
                  f_send_500_Internal_Error(v_headers);
                }
                // Set verdict
                if (v_result == 0) {
                  log("*** " & testcasename() & ": PASS: InnerEcRequest received ***");
                // TODO In the other TC_SECPKI_ITSS_ENR_REP_0x, check the v_inner_ec_request
                v_count := v_count + 1; 
                if (v_count < PX_ENR_MAX_N1) {
                  tc_repetition_interval_min.start;
                  tc_repetition_interval_max.start;
                  repeat;
                } else { // Terminate the loop
                  log("*** " & testcasename() & ": PASS: Repetitions received in the expected time limits ***");
                  tc_wait.stop;
                  f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
              } else {
                  log("*** " & testcasename() & ": FAIL: Failed to verify EA an EnrolmentRequestMessage ***");
                tc_repetition_interval_min.stop;
                log("*** " & testcasename() & ": FAIL: Repetition received too early ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
              }
              // // Send response
              // if (isvalue(v_response)) {
              //   httpPort.send(v_response);
              // } else { // Send HTTP error 500
              //   f_send_500_Internal_Error(v_headers);
              // }
              // // Set verdict
              // if (v_result == 0) {
              //   log("*** " & testcasename() & ": PASS: InnerEcRequest received ***");
              //   f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
              // } else {
              //   log("*** " & testcasename() & ": FAIL: Failed to verify EA an EnrolmentRequestMessage ***");
              //   f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
              // }
            }
            [] tc_repetition_interval_max.timeout {
              log("*** " & testcasename() & ": FAIL: No repetition received in the expected time limits ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
              [] tc_ac.timeout {
            [] tc_wait.timeout {
              log("*** " & testcasename() & ": INCONC: Response received on the IUT ***");
                 v_loop := false;
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
              f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
              //break;
            }
          } // End of 'alt' statement
            if (v_loop == false){
              break;
            }
          } // End of 'loop' statement
          // Postamble
          tc_ac.start; // Finalyze the enrolment
          alt {
            [] a_await_ec_http_request_from_iut(
                                                mw_http_request(
                                                                mw_http_request_post(
                                                                                     PICS_HTTP_POST_URI_EC,
                                                                                     -,
                                                                                     mw_http_message_body_binary(
                                                                                                                 mw_binary_body_ieee1609dot2_data(
                                                                                                                                                  mw_enrolmentRequestMessage(
                                                                                                                                                                            mw_encryptedData(
                                                                                                                                                                                             { *, mw_recipientInfo_certRecipInfo(mw_pKRecipientInfo(vc_eaHashedId8)), * },
                                                                                                                                                                                             mw_symmetricCiphertext_aes128ccm
                                                                                                                                                                                             )))))),
                                                v_request
                                                ) {
              var HttpMessage v_response;
              var integer v_result;
              var InnerEcRequest v_inner_ec_request;
              tc_ac.stop;
              // Verify IUT response
              f_verify_http_ec_request_from_iut_itss(v_request.request, v_headers, v_inner_ec_request, v_inner_ec_response, v_response, v_result);
              // Send response
              if (isvalue(v_response)) {
                httpPort.send(v_response);
              } else { // Send HTTP error 500
                f_send_500_Internal_Error(v_headers);
              }
            }
            [] tc_ac.timeout {
              log("*** " & testcasename() & ": Postamble: Expected message not received ***");
            }
          } // End of 'alt' statement
          f_cfHttpDown();
        } // End of function f_TC_SECPKI_ITSS_ENR_REP_01_BV_pki
+22 −4
Original line number Diff line number Diff line
@@ -5264,8 +5264,8 @@ module LibItsPki_Functions {

    function f_await_ec_request_send_no_response(
                                                 out HttpMessage p_request
                                                    ) runs on ItsPkiHttp {
      var Ieee1609Dot2Data v_ieee1609dot2_signed_and_encrypted_data;
                                                 ) runs on ItsPkiHttp return boolean {
      var boolean v_result := false;

      log(">>> f_await_ec_request_send_no_response");

@@ -5285,19 +5285,37 @@ module LibItsPki_Functions {
                                                                                                                                                                                          )))))),
                                            p_request
                                            ) {
          var Ieee1609Dot2Data v_ieee1609dot2_signed_and_encrypted_data;
          var EtsiTs102941Data v_etsi_ts_102941_data;
          var Oct16 v_request_hash;
          var HashedId8 v_bfk_hashed_id8;
          var Oct16 v_aes_enc_key;
          var InnerEcRequest v_inner_ec_request;
          var template (value) HttpMessage v_response;
          var Headers v_headers;
          var EtsiTs103097Certificate v_ec_certificate;
          var HashedId8 v_ec_certificate_hashed_id8;

          tc_ac.stop;

          f_init_default_headers_list(-, "inner_ec_response", v_headers);

          if (f_verify_pki_request_message(vc_eaPrivateEncKey, vc_eaWholeHash/*salt*/, ''O, p_request.request.body.binary_body.ieee1609dot2_data, false, v_request_hash, v_bfk_hashed_id8, v_etsi_ts_102941_data, v_aes_enc_key) == false) { // Cannot decrypt the message
            log("f_await_ec_request_send_no_response: Failed to verify PKI message ***");
            // Send error message
            v_response := m_http_response(m_http_response_ko(m_http_message_body_binary(m_binary_body_ieee1609dot2_data(v_ieee1609dot2_signed_and_encrypted_data)), v_headers, 400, "Bad request")); // Initialize v_reponse with an error message
            f_http_send(v_headers, v_response);
          } else {
            log("f_await_ec_request_send_no_response: Receive ", v_etsi_ts_102941_data, ", no response sent ***");
            v_result := true;
          }
        }
        [] tc_ac.timeout {
          log("f_await_ec_request_send_no_response: Expected message not received ***");
        }
      } // End of 'alt' statement

      return v_result;
    } // End of function f_await_ec_request_send_no_response

    function f_await_ec_request_send_error_response(