Commit 04228d0b authored by Ayesha Ayub's avatar Ayesha Ayub
Browse files

Revise authorization TP SECPKI_ITSS_AUTH_REP_05_BV

parent 9f90de02
Loading
Loading
Loading
Loading
+29 −74
Original line number Diff line number Diff line
@@ -5749,8 +5749,8 @@ module ItsPkiItss_TestCases {
        var ItsPkiHttp v_ea;

        // Test control
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION) {
          log("*** " & testcasename() & ": PICS_IUT_ITS_S_ROLE and PICS_SECPKI_AUTHORIZATION required for executing the TC ***");
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION or not PICS_SECPKI_AUTH_PRIVACY) {
          log("*** " & testcasename() & ": PICS_IUT_ITS_S_ROLE, PICS_SECPKI_AUTHORIZATION and PICS_SECPKI_AUTH_PRIVACY are required for executing the TC ***");
          setverdict(inconc);
          stop;
        }
@@ -5866,7 +5866,7 @@ module ItsPkiItss_TestCases {
      /**
       * @desc Check that the ecSignature of the Authorization request is not encrypted
       * <pre>
       * Pics Selection: PICS_IUT_ITS_S_ROLE and PICS_SECPKI_AUTHORIZATION
       * Pics Selection: PICS_IUT_ITS_S_ROLE, PICS_SECPKI_AUTHORIZATION and not PICS_SECPKI_AUTH_PRIVACY
       * Initial conditions: 
       *     with {
       *         the IUT in 'enrolled' state
@@ -5896,7 +5896,7 @@ module ItsPkiItss_TestCases {
        var ItsPkiHttp v_ea;

        // Test control
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION) {
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION or PICS_SECPKI_AUTH_PRIVACY) {
          log("*** " & testcasename() & ": PICS_IUT_ITS_S_ROLE and PICS_SECPKI_AUTHORIZATION required for executing the TC ***");
          setverdict(inconc);
          stop;
@@ -6049,7 +6049,7 @@ module ItsPkiItss_TestCases {
        var ItsPkiHttp v_ea;

        // Test control
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION) {
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION or not PICS_SECPKI_AUTHORIZATION_RETRY) {
          log("*** " & testcasename() & ": PICS_IUT_ITS_S_ROLE and PICS_SECPKI_AUTHORIZATION required for executing the TC ***");
          setverdict(inconc);
          stop;
@@ -6251,7 +6251,7 @@ module ItsPkiItss_TestCases {
        var ItsPkiHttp v_ea;

        // Test control
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION) {
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION or not PICS_SECPKI_AUTHORIZATION_RETRY) {
          log("*** " & testcasename() & ": PICS_IUT_ITS_S_ROLE and PICS_SECPKI_AUTHORIZATION required for executing the TC ***");
          setverdict(inconc);
          stop;
@@ -6461,7 +6461,7 @@ module ItsPkiItss_TestCases {
        var ItsPkiHttp v_ea;

        // Test control
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION) {
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION or not PICS_SECPKI_AUTHORIZATION_RETRY) {
          log("*** " & testcasename() & ": PICS_IUT_ITS_S_ROLE and PICS_SECPKI_AUTHORIZATION required for executing the TC ***");
          setverdict(inconc);
          stop;
@@ -6668,7 +6668,7 @@ module ItsPkiItss_TestCases {
        var ItsPkiHttp v_ea;

        // Test control
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION) {
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION or not PICS_SECPKI_AUTHORIZATION_RETRY) {
          log("*** " & testcasename() & ": PICS_IUT_ITS_S_ROLE and PICS_SECPKI_AUTHORIZATION required for executing the TC ***");
          setverdict(inconc);
          stop;
@@ -6807,7 +6807,7 @@ module ItsPkiItss_TestCases {
        var ItsPkiHttp v_ea;

        // Test control
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION) {
        if (not PICS_IUT_ITS_S_ROLE or not PICS_SECPKI_AUTHORIZATION or not PICS_SECPKI_AUTHORIZATION_RETRY) {
          log("*** " & testcasename() & ": PICS_IUT_ITS_S_ROLE and PICS_SECPKI_AUTHORIZATION required for executing the TC ***");
          setverdict(inconc);
          stop;
@@ -6859,29 +6859,18 @@ module ItsPkiItss_TestCases {
            } // End of 'alt' statement

          // Test Body
          f_sendUtTriggerAuthorizationRequestPrimitive();
          geoNetworkingPort.clear;
          tc_ac.start;
          alt {
            [v_start_awaiting == true] a_await_cam_with_current_cert(
                                                                     v_info_port_data.at_certificate
            ) {
              log("*** " & testcasename() & ": PASS: IUT started to send CA message using new AT certificate ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            }
            [] geoNetworkingPort.receive {
              log("*** " & testcasename() & ": FAIL: IUT started to send CA message using wrong AT certificate ***");
              log("No CA message expected");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            [] infoPort.receive(InfoPortData:?) -> value v_info_port_data {
              log("*** " & testcasename() & ": INFO: Received new AT certificate ***");
              v_start_awaiting := true;
              repeat;
            }
            [] tc_ac.timeout {
              log("*** " & testcasename() & "_itss: : PASS: No CA message received ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
              log("*** " & testcasename() & "_itss: : INFO: No CA message received ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            }
          }
          } // End of 'alt' statement 

          // Postamble
          f_cfDown_itss();
@@ -6891,6 +6880,7 @@ module ItsPkiItss_TestCases {
          // Local variable
          var Headers v_headers;
          var HttpMessage v_request;
          var HttpMessage v_at_request;
          var InnerEcResponse v_inner_ec_response;
          var InnerEcRequest v_inner_ec_request;

@@ -6920,58 +6910,23 @@ module ItsPkiItss_TestCases {
          }

          // Test Body
          tc_ac.start(PX_TAC * 1.1); // for different timer PIXIT_AUTH_TIMEOUT_TH2
          tc_wait.start(PX_AT_REPETITION_TIMEOUT_TH2); // PX_AT_REPETITION_TIMEOUT
          alt {
            [] a_await_at_http_request_from_iut(
                                                 mw_http_request(
                                                                 mw_http_request_post(
                                                                                      PICS_HTTP_POST_URI_AT,
                                                                                      -,
                                                                                      mw_http_message_body_binary(
                                                                                                                  mw_binary_body_ieee1609dot2_data(
                                                                                                                                                   mw_authorizationRequestMessage(
                                                                                                                                                                              mw_encryptedData(
                                                                                                                                                                                               { *, mw_recipientInfo_pskRecipInfo(vc_aaHashedId8), * },
                                                                                                                                                                                               mw_symmetricCiphertext_aes128ccm
                                                                                                                                                                                               )))))),
                                                 v_request
                                                 ) {
              var HttpMessage v_response;
              var integer v_result;
              var InnerAtRequest v_inner_at_request;
              var InnerAtResponse v_inner_at_response;

              tc_ac.stop;

              // Verify IUT response
              f_verify_http_at_request_from_iut_itss(v_request.request, v_headers, v_inner_ec_response.certificate, v_inner_at_request, v_inner_at_response, v_response, v_result);
              // Send response
              if (isvalue(v_response)) {
                httpPort.send(v_response);
            [] a_await_at_http_request_from_iut(mw_http_at_request_generic, v_request) {
              log("*** " & testcasename() & ": FAIL: AT repetition has been received after a ", tc_wait.read, " ***"); //fails in  TC5
              tc_wait.stop;
              f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
              // Set verdict
              if (v_result == 0) {
                var octetstring v_msg;
                var octetstring v_hashed_id8;
                log("*** " & testcasename() & ": PASS: InnerAtRequest received ***");
                v_msg := bit2oct(encvalue(v_inner_at_response.certificate));
                if (ischosen(v_inner_at_response.certificate.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP384r1)) {
                  v_hashed_id8 := f_hashedId8FromSha384(f_hashWithSha384(v_msg));
            [] tc_wait.timeout {
              if (f_await_at_request_send_no_response(v_at_request) == true) {
                log("*** " & testcasename() & ": FAIL: AT repetition was received ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
              } else {
                  v_hashed_id8 := f_hashedId8FromSha256(f_hashWithSha256(v_msg));
                }
                infoPort.send(InfoPortData : { hashed_id8 := v_hashed_id8, at_certificate := v_inner_at_response.certificate });
                log("*** " & testcasename() & ": PASS: AT repetition was not received ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
              } else {
                log("*** " & testcasename() & ": FAIL: Failed to verify AA an AuthorizationRequestMessage ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
              }
            }
            [] tc_ac.timeout {
              log("*** " & testcasename() & ": PASS: Expected no AuthorizationRequestMessage ***");
              f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
          }
          } // End of 'alt' statement

          // Postamble
          f_cfHttpDown();
+27 −1
Original line number Diff line number Diff line
@@ -43,7 +43,33 @@ module ItsPkiItss_TestControl {
      }

      if (PICS_SECPKI_AUTHORIZATION) {
        // TODO
        execute(TC_SECPKI_ITSS_AUTH_01_BV());
        execute(TC_SECPKI_ITSS_AUTH_02_BV());
        execute(TC_SECPKI_ITSS_AUTH_03_BV());
        execute(TC_SECPKI_ITSS_AUTH_04_BV());
        execute(TC_SECPKI_ITSS_AUTH_05_BV());
        execute(TC_SECPKI_ITSS_AUTH_06_BV());
        execute(TC_SECPKI_ITSS_AUTH_07_BV());
        execute(TC_SECPKI_ITSS_AUTH_08_BV());
        execute(TC_SECPKI_ITSS_AUTH_09_BV());
        execute(TC_SECPKI_ITSS_AUTH_10_BV());
        execute(TC_SECPKI_ITSS_AUTH_11_BV());
        execute(TC_SECPKI_ITSS_AUTH_12_BV());
        execute(TC_SECPKI_ITSS_AUTH_13_BV());
        execute(TC_SECPKI_ITSS_AUTH_14_BV());
        if (PICS_SECPKI_AUTH_PRIVACY) {
          execute(TC_SECPKI_ITSS_AUTH_15_BV());
        }
        if (not PICS_SECPKI_AUTH_PRIVACY) {
          execute(TC_SECPKI_ITSS_AUTH_16_BV());
        }
        if (PICS_SECPKI_AUTHORIZATION_RETRY) {
          execute(TC_SECPKI_ITSS_AUTH_REP_01_BV());
          execute(TC_SECPKI_ITSS_AUTH_REP_02_BV());
          execute(TC_SECPKI_ITSS_AUTH_REP_03_BV());
          execute(TC_SECPKI_ITSS_AUTH_REP_04_BV());
          execute(TC_SECPKI_ITSS_AUTH_REP_05_BV());
        }
      }
    }

+2 −0
Original line number Diff line number Diff line
@@ -18,4 +18,6 @@ module ItsPki_Pixits {

  modulepar float PX_EC_REPETITION_TIMEOUT_TH2 := 150.0;

  modulepar float PX_AT_REPETITION_TIMEOUT_TH2 := 150.0;
  
} // End of module ItsPki_Pixits
+10 −0
Original line number Diff line number Diff line
@@ -40,6 +40,16 @@ module LibItsPki_Pics {
   */
  modulepar boolean PICS_SECPKI_ENROLLMENT_RETRY := true;

    /**
   * @desc Does the IUT support authorization repetition?
   */
  modulepar boolean PICS_SECPKI_AUTHORIZATION_RETRY := true;

    /**
   * @desc Does the IUT support authorization repetition?
   */
  modulepar boolean PICS_SECPKI_AUTH_PRIVACY := true; 
  
  /**
   * @desc Does the IUT support autorization?
   */
+37 −0
Original line number Diff line number Diff line
@@ -846,6 +846,10 @@ module LibItsPki_Functions {
            httpAtVPort.stop;
            httpAtVPort.start;
          }
          case ("inner_at_request"){
            httpAtPort.stop;
            httpAtPort.start;
          }
        }
      }
    } // End of function f_http_restart
@@ -5368,6 +5372,18 @@ module LibItsPki_Functions {
                                  mw_binary_body_ieee1609dot2_data( p_ieee1609dot2_data)
                                            
      )));

      template (present) HttpMessage mw_http_at_request_generic (
                                                                  template (present) Ieee1609Dot2Data p_ieee1609dot2_data := mw_authorizationRequestMessage(mw_encryptedData())
                                                                ) := 
        mw_http_request(
                  mw_http_request_post(
                          PICS_HTTP_POST_URI_AT,
                          -,
                          mw_http_message_body_binary(
                                  mw_binary_body_ieee1609dot2_data( p_ieee1609dot2_data)
                                            
      )));
    } // End of predefined requests

    function f_await_ec_request_send_response(
@@ -5474,6 +5490,27 @@ module LibItsPki_Functions {

    } // End of function f_await_ec_request_send_no_response

    function f_await_at_request_send_no_response(
                                                 out HttpMessage p_request
                                                 ) runs on ItsPkiHttp return boolean {
      log(">>> f_await_at_request_send_no_response");
      var boolean v_result := false;

      tc_ac.start;
      alt {
        [] a_await_at_http_request_from_iut(mw_http_at_request_generic, p_request) {
          tc_ac.stop;
          log("f_await_at_request_send_no_response: Restart HTTP connection ***");
          v_result := true;
          f_http_restart("inner_at_request");
        }
        [] tc_ac.timeout {
          log("f_await_at_request_send_no_response: Expected message not received ***");
        }
      } // End of 'alt' statement
      return v_result;
    } // End of function f_await_at_request_send_no_response

    function f_await_ec_request_send_error_response(
                                                    out HttpMessage p_request
                                                    ) runs on ItsPkiHttp {