Loading ItsPki_TestCases.ttcn +198 −0 Original line number Diff line number Diff line Loading @@ -4160,6 +4160,204 @@ module ItsPki_TestCases { } // End of group f_TC_SECPKI_ITSS_AUTH_REP_04_BV /** * @desc Check that IUT stops sending the Authorization Request message if timeout has been reached * <pre> * Pics Selection: PICS_SECPKI_AUTHORIZATION_RETRY * Initial conditions: { * the IUT being in the 'enrolled' state * and the IUT has started sending the Authorization Request at the time T1 * } * Expected behaviour: * ensure that { * when { * the IUT local time is reached the T1 + PIXIT_AUTH_TIMEOUT_TH2 * } * then { * the IUT stops sending an Authorization Request messages * } * } * </pre> * * @see ETSI TS 103 525-2 TP SECPKI_ITSS_AUTH_REP_05_BV * @reference ETSI TS 103 601, clause 5.1.2 */ testcase TC_SECPKI_ITSS_AUTH_REP_05_BV() runs on ItsMtc system ItsPkiItssSystem { // Local variables var ItsPkiItss v_itss; 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 ***"); setverdict(inconc); stop; } // Test component configuration f_cfMtcUp01(v_itss, v_ea); // Start component v_itss.start(f_TC_SECPKI_ITSS_AUTH_REP_05_BV_itss()); v_ea.start(f_TC_SECPKI_ITSS_AUTH_REP_05_BV_pki()); // Synchronization f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Cleanup f_cfMtcDown01(v_itss, v_ea); } group f_TC_SECPKI_ITSS_AUTH_REP_05_BV { function f_TC_SECPKI_ITSS_AUTH_REP_05_BV_itss() runs on ItsPkiItss system ItsPkiItssSystem { // Local variables var HashedId8 v_certificate_digest; var EtsiTs103097Certificate v_certificate; var InfoPortData v_info_port_data; var boolean v_start_awaiting := false; // Test component configuration vc_hashedId8ToBeUsed := PX_IUT_DEFAULT_CERTIFICATE; f_cfUp_itss(); // Test adapter configuration // Preamble // Initial state: No CAM shall be emitted geoNetworkingPort.clear; tc_noac.start; alt { [] geoNetworkingPort.receive { log("No CA message expected"); f_selfOrClientSyncAndVerdict(c_prDone, e_error); } [] tc_noac.timeout { f_sendUtTriggerEnrolmentRequestPrimitive(); log("*** " & testcasename() & "_itss: : INFO: No CA message received ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } } // End of 'alt' statement // Test Body f_sendUtTriggerAuthorizationRequestPrimitive(); 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 ***"); 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); } } // End of 'alt' statement // Postamble f_cfDown_itss(); } // End of function f_TC_SECPKI_ITSS_AUTH_REP_05_BV_itss function f_TC_SECPKI_ITSS_AUTH_REP_05_BV_pki() runs on ItsPkiHttp system ItsPkiItssSystem { // Local variable var Headers v_headers; var HttpMessage v_request; var InnerEcResponse v_inner_ec_response; // Test component configuration f_cfHttpUp(PICS_TS_EA_CERTIFICATE_ID, PICS_TS_AA_CERTIFICATE_ID); // Test adapter configuration // Preamble f_init_default_headers_list(-, "inner_at_response", v_headers); if (PX_TRIGGER_EC_BEFORE_AT) { f_await_ec_request_send_error_response(v_request); log("*** " & testcasename() & ": INFO: Reply with 400 Bad Request error message ***"); } else { f_selfOrClientSyncAndVerdict(c_prDone, e_success); } // Do not expect any repetition if (PX_TRIGGER_EC_BEFORE_AT) { if (f_await_ec_request_send_response(v_inner_ec_response, v_request) == true) { log("*** " & testcasename() & ": INFO: Enrolment succeed ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": INCONC: Enrolment failed ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Test Body tc_ac.start(PX_TAC * 1.1); // for different timer PIXIT_AUTH_TIMEOUT_TH2 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); } // 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)); } 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 }); 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(); } // End of function f_TC_SECPKI_ITSS_AUTH_REP_05_BV_pki } } // 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 Loading Loading
ItsPki_TestCases.ttcn +198 −0 Original line number Diff line number Diff line Loading @@ -4160,6 +4160,204 @@ module ItsPki_TestCases { } // End of group f_TC_SECPKI_ITSS_AUTH_REP_04_BV /** * @desc Check that IUT stops sending the Authorization Request message if timeout has been reached * <pre> * Pics Selection: PICS_SECPKI_AUTHORIZATION_RETRY * Initial conditions: { * the IUT being in the 'enrolled' state * and the IUT has started sending the Authorization Request at the time T1 * } * Expected behaviour: * ensure that { * when { * the IUT local time is reached the T1 + PIXIT_AUTH_TIMEOUT_TH2 * } * then { * the IUT stops sending an Authorization Request messages * } * } * </pre> * * @see ETSI TS 103 525-2 TP SECPKI_ITSS_AUTH_REP_05_BV * @reference ETSI TS 103 601, clause 5.1.2 */ testcase TC_SECPKI_ITSS_AUTH_REP_05_BV() runs on ItsMtc system ItsPkiItssSystem { // Local variables var ItsPkiItss v_itss; 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 ***"); setverdict(inconc); stop; } // Test component configuration f_cfMtcUp01(v_itss, v_ea); // Start component v_itss.start(f_TC_SECPKI_ITSS_AUTH_REP_05_BV_itss()); v_ea.start(f_TC_SECPKI_ITSS_AUTH_REP_05_BV_pki()); // Synchronization f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Cleanup f_cfMtcDown01(v_itss, v_ea); } group f_TC_SECPKI_ITSS_AUTH_REP_05_BV { function f_TC_SECPKI_ITSS_AUTH_REP_05_BV_itss() runs on ItsPkiItss system ItsPkiItssSystem { // Local variables var HashedId8 v_certificate_digest; var EtsiTs103097Certificate v_certificate; var InfoPortData v_info_port_data; var boolean v_start_awaiting := false; // Test component configuration vc_hashedId8ToBeUsed := PX_IUT_DEFAULT_CERTIFICATE; f_cfUp_itss(); // Test adapter configuration // Preamble // Initial state: No CAM shall be emitted geoNetworkingPort.clear; tc_noac.start; alt { [] geoNetworkingPort.receive { log("No CA message expected"); f_selfOrClientSyncAndVerdict(c_prDone, e_error); } [] tc_noac.timeout { f_sendUtTriggerEnrolmentRequestPrimitive(); log("*** " & testcasename() & "_itss: : INFO: No CA message received ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } } // End of 'alt' statement // Test Body f_sendUtTriggerAuthorizationRequestPrimitive(); 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 ***"); 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); } } // End of 'alt' statement // Postamble f_cfDown_itss(); } // End of function f_TC_SECPKI_ITSS_AUTH_REP_05_BV_itss function f_TC_SECPKI_ITSS_AUTH_REP_05_BV_pki() runs on ItsPkiHttp system ItsPkiItssSystem { // Local variable var Headers v_headers; var HttpMessage v_request; var InnerEcResponse v_inner_ec_response; // Test component configuration f_cfHttpUp(PICS_TS_EA_CERTIFICATE_ID, PICS_TS_AA_CERTIFICATE_ID); // Test adapter configuration // Preamble f_init_default_headers_list(-, "inner_at_response", v_headers); if (PX_TRIGGER_EC_BEFORE_AT) { f_await_ec_request_send_error_response(v_request); log("*** " & testcasename() & ": INFO: Reply with 400 Bad Request error message ***"); } else { f_selfOrClientSyncAndVerdict(c_prDone, e_success); } // Do not expect any repetition if (PX_TRIGGER_EC_BEFORE_AT) { if (f_await_ec_request_send_response(v_inner_ec_response, v_request) == true) { log("*** " & testcasename() & ": INFO: Enrolment succeed ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": INCONC: Enrolment failed ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Test Body tc_ac.start(PX_TAC * 1.1); // for different timer PIXIT_AUTH_TIMEOUT_TH2 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); } // 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)); } 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 }); 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(); } // End of function f_TC_SECPKI_ITSS_AUTH_REP_05_BV_pki } } // 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 Loading