ItsRSUsSimulator_Functions.ttcn 112 KB
Newer Older
                                                                                             mw_binary_body_ieee1609dot2_data(
                                                                                                                              mw_enrolmentResponseMessage(
                                                                                                                                                          mw_encryptedData(
                                                                                                                                                                           -,
                                                                                                                                                                           mw_SymmetricCiphertext_aes128ccm
                                                                                                                                                                           ))))))) -> value v_response {
          v_t.stop;
          
          log("f_trigger_authorization_request_await_response: v_response=", v_response);
          if (f_verify_pki_response_message(v_private_key_at, v_aes_sym_key, v_authentication_vector, v_request_hash, v_response.response.body.binary_body.ieee1609dot2_data, false, -, v_etsi_ts_102941_data) == false) {
            log("f_trigger_authorization_request_await_response: Failed to verify PKI message");
          } else {
            log("f_trigger_authorization_request_await_response: v_etsi_ts_102941_data=", v_etsi_ts_102941_data);
            // Verify the received AT certificate
            log(match(v_etsi_ts_102941_data.content, mw_authorizationResponse(mw_innerAtResponse_ok(substr(v_request_hash, 0, 16), mw_etsiTs103097Certificate(-, mw_toBeSignedCertificate_at, -))))); // TODO In TITAN, this is the only way to get the unmatching in log
            if (match(v_etsi_ts_102941_data.content, mw_authorizationResponse(mw_innerAtResponse_ok(substr(v_request_hash, 0, 16), mw_etsiTs103097Certificate(-, mw_toBeSignedCertificate_at, -)))) == true) {
              var InnerAtResponse v_inner_at_response := v_etsi_ts_102941_data.content.authorizationResponse;
              var AtData v_at_data;
                
              log("f_trigger_enrolment_request_await_response: p_inner_at_response= ", v_inner_at_response);
              // Send the new certificate for storing
              v_at_data.private_key := v_private_key_at;
YannGarcia's avatar
YannGarcia committed
              v_at_data.private_enc_key := v_private_enc_key_at;
              v_at_data.aes_sym_key := v_aes_sym_key;
              v_at_data.certificate := v_inner_at_response.certificate;
              log("f_trigger_enrolment_request_await_response: send v_at_data=", v_at_data);
              resultPort.send(v_at_data);
              // TODO Provide the new certificate to the Test System
              // TODO Start CAM emission
            } else {
              log("f_trigger_authorization_request_await_response: Cannot verify AT certificate signature ***");
        [] v_t.timeout {
          log("*** " & testcasename() & ": INCONC: Expected message not received ***");
        }
      } // End of 'alt' statement

      f_cfHttpDown();
      log("<<< f_trigger_authorization_request_await_response");
} // End of module ItsRSUsSimulator_Functions