Commits (15)
This diff is collapsed.
module ItsPkiItss_TestControl {
// LibItsPki
import from LibItsPki_Pics all;
// AtsPki
import from ItsPkiItss_TestCases all;
control {
if (PICS_IUT_ITS_S_ROLE) {
if (PICS_SECPKI_ENROLMENT) {
execute(TC_SECPKI_ITSS_ENR_01_BV());
execute(TC_SECPKI_ITSS_ENR_02_BV());
if (PICS_SECPKI_REENROLMENT) {
execute(TC_SECPKI_ITSS_ENR_03_BV());
execute(TC_SECPKI_ITSS_ENR_06_BV_1());
execute(TC_SECPKI_ITSS_ENR_06_BV_2());
execute(TC_SECPKI_ITSS_ENR_12_BV());
}
if (PICS_SECPKI_CRL) {
execute(TC_SECPKI_ITSS_ENR_04_BV())
}
if (PICS_SECPKI_ENROLLMENT_RETRY) {
execute(TC_SECPKI_ITSS_ENR_REP_01_BV());
execute(TC_SECPKI_ITSS_ENR_REP_02_BV());
execute(TC_SECPKI_ITSS_ENR_REP_03_BV());
execute(TC_SECPKI_ITSS_ENR_REP_04_BV());
execute(TC_SECPKI_ITSS_ENR_REP_05_BV());
}
execute(TC_SECPKI_ITSS_ENR_05_BV());
execute(TC_SECPKI_ITSS_ENR_07_BV());
execute(TC_SECPKI_ITSS_ENR_08_BV_1());
execute(TC_SECPKI_ITSS_ENR_08_BV_2());
execute(TC_SECPKI_ITSS_ENR_09_BV_1());
execute(TC_SECPKI_ITSS_ENR_09_BV_2());
execute(TC_SECPKI_ITSS_ENR_10_BV_1());
execute(TC_SECPKI_ITSS_ENR_10_BV_2());
execute(TC_SECPKI_ITSS_ENR_11_BV());
execute(TC_SECPKI_ITSS_ENR_RECV_01_BV());
execute(TC_SECPKI_ITSS_ENR_RECV_02_BV());
}
if (PICS_SECPKI_AUTHORIZATION) {
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());
}
}
}
} // End of 'control' statement
} // End of module module ItsPkiItss_TestControl
...@@ -17,5 +17,7 @@ module ItsPki_Pixits { ...@@ -17,5 +17,7 @@ module ItsPki_Pixits {
modulepar float PX_EC_REPETITION_TIMEOUT := 120.0; modulepar float PX_EC_REPETITION_TIMEOUT := 120.0;
modulepar float PX_EC_REPETITION_TIMEOUT_TH2 := 150.0; modulepar float PX_EC_REPETITION_TIMEOUT_TH2 := 150.0;
modulepar float PX_AT_REPETITION_TIMEOUT_TH2 := 150.0;
} // End of module ItsPki_Pixits } // End of module ItsPki_Pixits
This diff is collapsed.
...@@ -8,45 +8,6 @@ module ItsPki_TestControl { ...@@ -8,45 +8,6 @@ module ItsPki_TestControl {
control { control {
if (PICS_IUT_ITS_S_ROLE) {
if (PICS_SECPKI_ENROLMENT) {
execute(TC_SECPKI_ITSS_ENR_01_BV());
execute(TC_SECPKI_ITSS_ENR_02_BV());
if (PICS_SECPKI_REENROLMENT) {
execute(TC_SECPKI_ITSS_ENR_03_BV());
execute(TC_SECPKI_ITSS_ENR_06_BV_1());
execute(TC_SECPKI_ITSS_ENR_06_BV_2());
execute(TC_SECPKI_ITSS_ENR_12_BV());
}
if (PICS_SECPKI_CRL) {
execute(TC_SECPKI_ITSS_ENR_04_BV())
}
if (PICS_SECPKI_ENROLLMENT_RETRY) {
execute(TC_SECPKI_ITSS_ENR_REP_01_BV());
execute(TC_SECPKI_ITSS_ENR_REP_02_BV());
execute(TC_SECPKI_ITSS_ENR_REP_03_BV());
execute(TC_SECPKI_ITSS_ENR_REP_04_BV());
execute(TC_SECPKI_ITSS_ENR_REP_05_BV());
}
execute(TC_SECPKI_ITSS_ENR_05_BV());
execute(TC_SECPKI_ITSS_ENR_07_BV());
execute(TC_SECPKI_ITSS_ENR_08_BV_1());
execute(TC_SECPKI_ITSS_ENR_08_BV_2());
execute(TC_SECPKI_ITSS_ENR_09_BV_1());
execute(TC_SECPKI_ITSS_ENR_09_BV_2());
execute(TC_SECPKI_ITSS_ENR_10_BV_1());
execute(TC_SECPKI_ITSS_ENR_10_BV_2());
execute(TC_SECPKI_ITSS_ENR_11_BV());
execute(TC_SECPKI_ITSS_ENR_RECV_01_BV());
execute(TC_SECPKI_ITSS_ENR_RECV_02_BV());
}
if (PICS_SECPKI_AUTHORIZATION) {
// TODO
}
}
if (PICS_IUT_CA_ROLE) { if (PICS_IUT_CA_ROLE) {
execute(TC_SECPKI_CA_CERTGEN_01_BV()); execute(TC_SECPKI_CA_CERTGEN_01_BV());
execute(TC_SECPKI_CA_CERTGEN_02_BV_01()); execute(TC_SECPKI_CA_CERTGEN_02_BV_01());
......
...@@ -39,6 +39,16 @@ module LibItsPki_Pics { ...@@ -39,6 +39,16 @@ module LibItsPki_Pics {
* @desc Does the IUT support enrolment repetition? * @desc Does the IUT support enrolment repetition?
*/ */
modulepar boolean PICS_SECPKI_ENROLLMENT_RETRY := true; 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? * @desc Does the IUT support autorization?
......
...@@ -161,6 +161,15 @@ module LibItsPki_Templates { ...@@ -161,6 +161,15 @@ module LibItsPki_Templates {
} }
} // End of template m_etsiTs102941Data_authorization_request } // End of template m_etsiTs102941Data_authorization_request
template (present) EtsiTs102941Data mw_etsiTs102941Data_authorization_request(
in template (present) InnerAtRequest p_inner_at_request := ?
) := {
version := PkiProtocolVersion,
content := {
authorizationRequest := p_inner_at_request
}
} // End of template m_etsiTs102941Data_authorization_request
template (value) EtsiTs102941Data m_etsiTs102941Data_authorization_response( template (value) EtsiTs102941Data m_etsiTs102941Data_authorization_response(
in template (value) InnerAtResponse p_inner_at_response in template (value) InnerAtResponse p_inner_at_response
) := { ) := {
...@@ -1380,4 +1389,11 @@ module LibItsPki_Templates { ...@@ -1380,4 +1389,11 @@ module LibItsPki_Templates {
} }
} }
template (present) HeaderInfo mw_headerInfo_ecSignature (
template (present) Psid p_psid := c_its_aid_SCR
) modifies mw_ieee1609Dot2_headerInfo := {
expiryTime := omit,
generationLocation := omit
} // End of template mw_ecSignature_headerInfo
} // End of module LibItsPki_Templates } // End of module LibItsPki_Templates
...@@ -167,6 +167,7 @@ module LibItsPki_TypesAndValues { ...@@ -167,6 +167,7 @@ module LibItsPki_TypesAndValues {
type record of octetstring PrivateEcKeys; type record of octetstring PrivateEcKeys;
type record of octetstring PublicCompressedEcKeys; type record of octetstring PublicCompressedEcKeys;
type set of octetstring OctSet;
type record of integer EcCompressedModes; type record of integer EcCompressedModes;
type record of HashedId8 EcHashedId8; type record of HashedId8 EcHashedId8;
type record of EtsiTs103097Certificate EcCertificates; type record of EtsiTs103097Certificate EcCertificates;
......
...@@ -87,6 +87,8 @@ module LibItsPki_Functions { ...@@ -87,6 +87,8 @@ module LibItsPki_Functions {
connect(p_pki:syncPort, self:syncPort); connect(p_pki:syncPort, self:syncPort);
connect(p_pki:infoPort, p_itss:infoPort); connect(p_pki:infoPort, p_itss:infoPort);
activate(a_default_mtc());
} // End of function f_cfMtcUp01 } // End of function f_cfMtcUp01
function f_cfMtcUp02( function f_cfMtcUp02(
...@@ -99,6 +101,7 @@ module LibItsPki_Functions { ...@@ -99,6 +101,7 @@ module LibItsPki_Functions {
connect(self:syncPort, mtc:syncPort); connect(self:syncPort, mtc:syncPort);
connect(p_itss:syncPort, self:syncPort); connect(p_itss:syncPort, self:syncPort);
connect(p_ea:syncPort, self:syncPort); connect(p_ea:syncPort, self:syncPort);
activate(a_default_mtc());
} // End of function f_cfMtcUp02 } // End of function f_cfMtcUp02
function f_cfMtcUp03( function f_cfMtcUp03(
...@@ -111,6 +114,7 @@ module LibItsPki_Functions { ...@@ -111,6 +114,7 @@ module LibItsPki_Functions {
connect(self:syncPort, mtc:syncPort); connect(self:syncPort, mtc:syncPort);
connect(p_itss:syncPort, self:syncPort); connect(p_itss:syncPort, self:syncPort);
connect(p_tlm:syncPort, self:syncPort); connect(p_tlm:syncPort, self:syncPort);
activate(a_default_mtc());
} // End of function f_cfMtcUp03 } // End of function f_cfMtcUp03
function f_cfMtcUp04( function f_cfMtcUp04(
...@@ -123,6 +127,7 @@ module LibItsPki_Functions { ...@@ -123,6 +127,7 @@ module LibItsPki_Functions {
connect(self:syncPort, mtc:syncPort); connect(self:syncPort, mtc:syncPort);
connect(p_itss:syncPort, self:syncPort); connect(p_itss:syncPort, self:syncPort);
connect(p_dc:syncPort, self:syncPort); connect(p_dc:syncPort, self:syncPort);
activate(a_default_mtc());
} // End of function f_cfMtcUp04 } // End of function f_cfMtcUp04
/** /**
...@@ -357,12 +362,16 @@ module LibItsPki_Functions { ...@@ -357,12 +362,16 @@ module LibItsPki_Functions {
} }
} // End of function f_cfHttpUp_ea } // End of function f_cfHttpUp_ea
function f_cfUp_itss() runs on ItsPkiItss system ItsPkiItssSystem { function f_cfUp_itss(
in charstring p_cert_id := ""
) runs on ItsPkiItss system ItsPkiItssSystem {
map(self:geoNetworkingPort, system:geoNetworkingPort); map(self:geoNetworkingPort, system:geoNetworkingPort);
map(self:utPort, system:utPort); map(self:utPort, system:utPort);
//map(self:acPort, system:acPort); activate(a_default_itss());
//map(self:acPort, system:acPort);
vc_hashedId8ToBeUsed := p_cert_id;
f_initializeState(); f_initializeState();
// activate(a_default_pki()); TOTO Defualt from geoNet // activate(a_default_pki()); TOTO Defualt from geoNet
...@@ -846,6 +855,10 @@ module LibItsPki_Functions { ...@@ -846,6 +855,10 @@ module LibItsPki_Functions {
httpAtVPort.stop; httpAtVPort.stop;
httpAtVPort.start; httpAtVPort.start;
} }
case ("inner_at_request"){
httpAtPort.stop;
httpAtPort.start;
}
} }
} }
} // End of function f_http_restart } // End of function f_http_restart
...@@ -1619,6 +1632,66 @@ module LibItsPki_Functions { ...@@ -1619,6 +1632,66 @@ module LibItsPki_Functions {
return true; return true;
} // End of function f_http_build_authorization_request_with_wrong_parameters } // End of function f_http_build_authorization_request_with_wrong_parameters
function f_http_build_common_authorization_response(
inout InnerAtResponse p_inner_at_response,
in Oct16 p_request_hash,
in octetstring p_private_key := ''O,
in octetstring p_digest := ''O,
in Oct16 p_aes_sym_key,
out Ieee1609Dot2Data p_ieee1609dot2_signed_and_encrypted_data
) return boolean {
var octetstring v_msg;
var Oct12 v_nonce;
var boolean v_result := false;
// Secure the response
log("f_http_build_common_authorization_response: p_inner_at_response= ", p_inner_at_response);
v_msg := bit2oct(encvalue(m_etsiTs102941Data_inner_at_response(p_inner_at_response)));
v_nonce := substr(f_hashWithSha256(int2oct((f_getCurrentTimeUtc() * 1000), 16)), 0, 12); // Random value
// TODO Consider Sha384: m_signerIdentifier_digest(f_hashedId8FromSha384(p_digest))
if (f_build_pki_secured_response_message(p_private_key,
valueof(m_signerIdentifier_digest(f_hashedId8FromSha256(p_digest))),// in SignerIdentifier p_signer_identifier,
v_msg,
p_aes_sym_key,
v_nonce,
p_ieee1609dot2_signed_and_encrypted_data
) == false) {
log("f_http_build_common_authorization_response: Failed to generate the certificate");
p_inner_at_response := valueof(
m_innerAtResponse_ko(
p_request_hash,
its_aa_deniedpermissions
)
);
} else {
v_result := true;
}
log("<<< f_http_build_common_authorization_response: v_result= ", v_result);
log("<<< f_http_build_common_authorization_response: p_inner_at_response= ", p_inner_at_response);
return v_result;
}
function f_http_build_error_authorization_response(
in AuthorizationResponseCode p_responseCode := unknownits,
in Oct16 p_request_hash,
in octetstring p_private_key := ''O,
in octetstring p_digest := ''O,
in Oct16 p_aes_sym_key,
out Ieee1609Dot2Data p_ieee1609dot2_signed_and_encrypted_data
) return boolean {
var InnerAtResponse v_inner_at_response;
v_inner_at_response := valueof(
m_innerAtResponse_ko(
p_request_hash,
p_responseCode
)
);
return f_http_build_common_authorization_response ( v_inner_at_response, p_request_hash,
p_private_key, p_digest, p_aes_sym_key,
p_ieee1609dot2_signed_and_encrypted_data );
}
function f_http_build_authorization_response( function f_http_build_authorization_response(
in template (omit) InnerAtRequest p_inner_at_request := omit, in template (omit) InnerAtRequest p_inner_at_request := omit,
in AuthorizationResponseCode p_responseCode := ok, in AuthorizationResponseCode p_responseCode := ok,
...@@ -1630,10 +1703,6 @@ module LibItsPki_Functions { ...@@ -1630,10 +1703,6 @@ module LibItsPki_Functions {
out Ieee1609Dot2Data p_ieee1609dot2_signed_and_encrypted_data out Ieee1609Dot2Data p_ieee1609dot2_signed_and_encrypted_data
) return boolean { ) return boolean {
// Local variables // Local variables
var bitstring v_msg_bit;
var octetstring v_msg;
var Oct12 v_nonce;
var Ieee1609Dot2Data v_ieee1609dot2_signed_data;
var EtsiTs103097Certificate v_at_certificate; var EtsiTs103097Certificate v_at_certificate;
var boolean v_result := false; var boolean v_result := false;
...@@ -1673,32 +1742,9 @@ module LibItsPki_Functions { ...@@ -1673,32 +1742,9 @@ module LibItsPki_Functions {
} }
} }
// Secure the response return f_http_build_common_authorization_response ( p_inner_at_response, p_request_hash,
log("f_http_build_authorization_response: p_inner_at_response= ", p_inner_at_response); p_private_key, p_digest, p_aes_sym_key,
v_msg := bit2oct(encvalue(m_etsiTs102941Data_inner_at_response(p_inner_at_response))); p_ieee1609dot2_signed_and_encrypted_data );
v_nonce := substr(f_hashWithSha256(int2oct((f_getCurrentTimeUtc() * 1000), 16)), 0, 12); // Random value
// TODO Consider Sha384: m_signerIdentifier_digest(f_hashedId8FromSha384(p_digest))
if (f_build_pki_secured_response_message(p_private_key,
valueof(m_signerIdentifier_digest(f_hashedId8FromSha256(p_digest))),// in SignerIdentifier p_signer_identifier,
v_msg,
p_aes_sym_key,
v_nonce,
p_ieee1609dot2_signed_and_encrypted_data
) == false) {
log("f_http_build_authorization_response: Failed to generate the certificate");
p_inner_at_response := valueof(
m_innerAtResponse_ko(
p_request_hash,
its_aa_deniedpermissions
)
);
} else {
v_result := true;
}
log("<<< f_http_build_authorization_response: v_result= ", v_result);
log("<<< f_http_build_authorization_response: p_inner_at_response= ", p_inner_at_response);
return v_result;
} // End of function f_http_build_authorization_response } // End of function f_http_build_authorization_response
function f_http_build_authorization_validation_request( function f_http_build_authorization_validation_request(
...@@ -2094,14 +2140,14 @@ module LibItsPki_Functions { ...@@ -2094,14 +2140,14 @@ module LibItsPki_Functions {
// Generate EeRaDownloadRequest // Generate EeRaDownloadRequest
if (f_generate_ee_ra_download_request(p_filename, v_ee_ra_download_request) == false) { if (f_generate_ee_ra_download_request(p_filename, v_ee_ra_download_request) == false) {
log("*** f_http_build_butterfly_at_download_request_message: ERROR: Failed to generate InnerEcRequest ***"); log("f_http_build_butterfly_at_download_request_message: ERROR: Failed to generate InnerEcRequest");
return false; return false;
} }
log ("f_http_build_butterfly_at_download_request_message: v_ee_ra_download_request: ", v_ee_ra_download_request); log ("f_http_build_butterfly_at_download_request_message: v_ee_ra_download_request: ", v_ee_ra_download_request);
// Secure EeRaDownloadRequest // Secure EeRaDownloadRequest
if (f_extract_enc_key(vc_eaCertificate, v_public_enc_key, v_compressed_enc_key_mode) == false) { if (f_extract_enc_key(vc_eaCertificate, v_public_enc_key, v_compressed_enc_key_mode) == false) {
log("*** f_http_build_butterfly_at_download_request_message: ERROR: Non canonical EA certificate ***"); log("f_http_build_butterfly_at_download_request_message: ERROR: Non canonical EA certificate");
return false; return false;
} }
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: ", v_public_enc_key);
...@@ -2113,7 +2159,7 @@ module LibItsPki_Functions { ...@@ -2113,7 +2159,7 @@ module LibItsPki_Functions {
log("f_http_build_butterfly_at_download_request_message: vc_ec_cert_hashed_id8: ", vc_ec_hashed_id8); 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); 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) { if (v_result == false) {
log("*** f_http_build_butterfly_at_download_request_message: ERROR: Failed to generate InnerEcRequestSignedForPop ***"); log("f_http_build_butterfly_at_download_request_message: ERROR: Failed to generate InnerEcRequestSignedForPop");
return false; return false;
} else { } else {
log("f_http_build_butterfly_at_download_request_message: p_ieee1609dot2_signed_and_encrypted_data= ", p_ieee1609dot2_signed_and_encrypted_data); log("f_http_build_butterfly_at_download_request_message: p_ieee1609dot2_signed_and_encrypted_data= ", p_ieee1609dot2_signed_and_encrypted_data);
...@@ -3791,7 +3837,7 @@ module LibItsPki_Functions { ...@@ -3791,7 +3837,7 @@ module LibItsPki_Functions {
), ),
m_validityPeriod( m_validityPeriod(
f_getCurrentTime() / 1000, f_getCurrentTime() / 1000,
m_duration_in_hours(PX_GENERATED_CERTIFICATE_DURATION - 1) m_duration_in_hours(PX_GENERATED_CERTIFICATE_DURATION)
), ),
m_geographicRegion_identifiedRegion( m_geographicRegion_identifiedRegion(
{ {
...@@ -5368,6 +5414,18 @@ module LibItsPki_Functions { ...@@ -5368,6 +5414,18 @@ module LibItsPki_Functions {
mw_binary_body_ieee1609dot2_data( p_ieee1609dot2_data) 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 } // End of predefined requests
function f_await_ec_request_send_response( function f_await_ec_request_send_response(
...@@ -5399,8 +5457,8 @@ module LibItsPki_Functions { ...@@ -5399,8 +5457,8 @@ module LibItsPki_Functions {
v_etsi_ts_102941_data, v_etsi_ts_102941_data,
p_inner_ec_request p_inner_ec_request
)){ )){
var EtsiTs103097Certificate v_ec_certificate; var EtsiTs103097Certificate v_ec_certificate;
var HashedId8 v_ec_certificate_hashed_id8; var HashedId8 v_ec_certificate_hashed_id8;
var Ieee1609Dot2Data v_response_message; var Ieee1609Dot2Data v_response_message;
log(">>>>>> f_await_ec_request_send_response v_inner_ec_request=", p_inner_ec_request); log(">>>>>> f_await_ec_request_send_response v_inner_ec_request=", p_inner_ec_request);
...@@ -5428,18 +5486,22 @@ module LibItsPki_Functions { ...@@ -5428,18 +5486,22 @@ module LibItsPki_Functions {
f_http_build_inner_ec_response(p_inner_ec_request, p_response_code, v_request_hash, vc_eaPrivateKey, vc_eaWholeHash, v_aes_enc_key, f_http_build_inner_ec_response(p_inner_ec_request, p_response_code, v_request_hash, vc_eaPrivateKey, vc_eaWholeHash, v_aes_enc_key,
v_ec_certificate, v_ec_certificate_hashed_id8, p_inner_ec_response, v_response_message); v_ec_certificate, v_ec_certificate_hashed_id8, p_inner_ec_response, v_response_message);
vc_ec_hashed_id8[vc_ec_counter] := v_ec_certificate_hashed_id8;
vc_ec_certificates[vc_ec_counter] := v_ec_certificate;
vc_ec_counter := vc_ec_counter + 1;
v_response := m_http_response( v_response := m_http_response(
m_http_response_ok( m_http_response_ok(
m_http_message_body_binary( m_http_message_body_binary(
m_binary_body_ieee1609dot2_data(v_response_message) m_binary_body_ieee1609dot2_data(v_response_message)
), v_headers)); ), v_headers));
} else { } else {
v_response := m_http_response(m_http_response_500_internal_error(v_headers)); v_response := m_http_response(m_http_response_500_internal_error(v_headers));
}
f_http_send(v_headers, v_response);
v_result := true;
} }
f_http_send(v_headers, v_response);
v_result := true;
}
[] a_await_ec_http_request_from_iut( mw_http_request(), v_wrong_request) { [] a_await_ec_http_request_from_iut( mw_http_request(), v_wrong_request) {
log(">>>>>> f_await_ec_request_send_response: Wrong message received ", v_wrong_request); log(">>>>>> f_await_ec_request_send_response: Wrong message received ", v_wrong_request);
...@@ -5474,6 +5536,27 @@ module LibItsPki_Functions { ...@@ -5474,6 +5536,27 @@ module LibItsPki_Functions {
} // End of function f_await_ec_request_send_no_response } // 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( function f_await_ec_request_send_error_response(
out HttpMessage p_request out HttpMessage p_request
) runs on ItsPkiHttp { ) runs on ItsPkiHttp {
...@@ -6567,6 +6650,22 @@ module LibItsPki_Functions { ...@@ -6567,6 +6650,22 @@ module LibItsPki_Functions {
} // End of group inner_ec_xxx } // End of group inner_ec_xxx
group altsteps { group altsteps {
altstep a_default_mtc() runs on ServerSyncComp {
[] a_shutdown() {
log("*** a_default_mtc: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
all component . done;
stop;
}
}
altstep a_default_itss() runs on ItsPkiItss {
[] a_shutdown() {
log("*** a_default_itss: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
f_cfDown_itss();
stop;
}
}
altstep a_default_pki_http() runs on ItsPkiHttp { altstep a_default_pki_http() runs on ItsPkiHttp {
[not(PICS_MULTIPLE_END_POINT)] httpPort.receive( [not(PICS_MULTIPLE_END_POINT)] httpPort.receive(
......
suite := AtsPki suite := $(AtsBTP)$(SUB_ATS)
pdu := EtsiTs103097Data EtsiTs102941Data pdu := EtsiTs103097Data EtsiTs102941Data
sources := ItsPki_Pixits.ttcn \ sources := ItsPki_Pixits.ttcn
ItsPki_TestCases.ttcn \ ifeq (pki,$(SUB_ATS))
ItsPki_TestControl.ttcn \ sources += ItsPki_TestCases.ttcn ItsPki_TestControl.ttcn
# ../AtsCAM/lib/asn1/CAM_PDU_Descriptions.asn \ else
# ../AtsDENM/lib/asn1/DENM_PDU_Descriptions.asn \ ifeq (itss,$(SUB_ATS))
sources += ItsPkiItss_TestCases.ttcn ItsPkiItss_TestControl.ttcn
else
sources += ItsPki_TestCases.ttcn ItsPki_TestControl.ttcn ItsPkiItss_TestCases.ttcn ItsPkiItss_TestControl.ttcn
endif
endif
modules := lib \ modules := lib \
lib_system \ lib_system \
......