Loading ccsrc/EncDec/LibItsPki_Encdec.cc +28 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ #include "etsi_ts102941_types_authorization_inner_request.hh" #include "etsi_ts102941_types_authorization_inner_response.hh" #include "etsi_ts102941_types_authorization_shared_at_request.hh" #include "etsi_ts102941_types_authorization_validation_request.hh" #include "loggers.hh" Loading Loading @@ -172,4 +173,31 @@ namespace LibItsPki__EncdecDeclarations { return 0; } BITSTRING fx__enc__AuthorizationValidationRequest(EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest const& p_shared_at) { loggers::get_instance().log_msg(">>> fx__enc__AuthorizationValidationRequest: ", p_shared_at); etsi_ts102941_types_authorization_validation_request codec; OCTETSTRING os; if (codec.encode(p_shared_at, os) == -1) { loggers::get_instance().warning("fx__enc__AuthorizationValidationRequest: -1 result code was returned"); return int2bit(0, 1); } return oct2bit(os); } INTEGER fx__dec__AuthorizationValidationRequest(BITSTRING& b, EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_shared_at) { loggers::get_instance().log_msg(">>> fx__dec__AuthorizationValidationRequest: ", b); etsi_ts102941_types_authorization_validation_request codec; OCTETSTRING is = bit2oct(b); if (codec.decode(is, p_shared_at) == -1) { loggers::get_instance().warning("fx__dec__AuthorizationValidationRequest: -1 result code was returned"); return -1; } loggers::get_instance().log_msg("<<< fx__dec__AuthorizationValidationRequest: ", p_shared_at); return 0; } } // End of namespace LibItsPki__EncdecDeclarations ccsrc/Externals/LibItsSecurity_externals.cc +1 −1 Original line number Diff line number Diff line Loading @@ -595,7 +595,7 @@ namespace LibItsSecurity__Functions // TODO Use common function for both fx__encryptWithEciesxxx and fx__decryptWithEciesxxx function OCTETSTRING fx__encryptWithEciesNistp256WithSha256(const OCTETSTRING& p__toBeEncryptedSecuredMessage, const OCTETSTRING& p__recipientsPublicKeyCompressed, const INTEGER& p__compressedMode, OCTETSTRING& p__publicEphemeralKeyCompressed, INTEGER& p__ephemeralCompressedMode, OCTETSTRING& p__encrypted__sym__key, OCTETSTRING& p__authentication__vector, OCTETSTRING& p__nonce) { loggers::get_instance().log_msg(">>> fx__encryptWithEciesNistp256WithSha256: p__toBeEncryptedSecuredMessage: ", p__toBeEncryptedSecuredMessage); loggers::get_instance().log_msg(">>> fx__encryptWithEciesNistp256WithSha256: p__recipientsPublicKeyX: ", p__recipientsPublicKeyCompressed); loggers::get_instance().log_msg(">>> fx__encryptWithEciesNistp256WithSha256: p__recipientsPublicKeyCompressed", p__recipientsPublicKeyCompressed); loggers::get_instance().log(">>> fx__encryptWithEciesNistp256WithSha256: p__compressedMode: %d", static_cast<int>(p__compressedMode)); // 1. Generate new Private/Public key Loading ccsrc/Protocols/Pki/pki_layer.cc +19 −6 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ void pki_layer::sendMsg(const EtsiTs102941TypesEnrolment::InnerEcRequest& p_inne return; } loggers::get_instance().log_msg("<<< pki_layer::generate_inner_ec_request_signed_for_pop: ", etsi_ts_102941_data); loggers::get_instance().log_msg("<<< pki_layer::sendMsg: ", etsi_ts_102941_data); send_data(etsi_ts_102941_data, _params); } Loading @@ -75,11 +75,22 @@ void pki_layer::sendMsg(const EtsiTs102941TypesEnrolment::InnerEcRequest& p_inne void pki_layer::sendMsg(const EtsiTs102941TypesEnrolment::InnerEcResponse& p_inner_ec_response, params& p_param) { loggers::get_instance().log_msg(">>> pki_layer::sendMsg: ", p_inner_ec_response); OCTETSTRING inner_ec_response; _etsi_ts102941_types_enrolment_inner_response.encode(p_inner_ec_response, inner_ec_response); // Create the EtsiTs102941Data layer EtsiTs102941MessagesItss::EtsiTs102941Data etsi_ts_102941_data; etsi_ts_102941_data.content().enrolmentResponse() = p_inner_ec_response; loggers::get_instance().log_msg("pki_layer::sendMsg: InnerEcResponse: ", etsi_ts_102941_data); // Encode it OCTETSTRING etsi_ts_103097_data_enc; _codec_etsi_ts102941_data.encode(etsi_ts_102941_data, etsi_ts_103097_data_enc); if (!etsi_ts_103097_data_enc.is_bound()) { loggers::get_instance().warning("pki_layer::sendMsg: Failed to encode InnerEcResponse"); } loggers::get_instance().log_msg("pki_layer::sendMsg: etsi_ts_103097_data_enc: ", etsi_ts_103097_data_enc); // Secured the EtsiTs102941Data layer OCTETSTRING secured_inner_ec_response; if (sign_and_encrypt_payload(inner_ec_response, secured_inner_ec_response, p_param) == 0) { if (sign_and_encrypt_payload(etsi_ts_103097_data_enc, secured_inner_ec_response, p_param) == 0) { send_data(secured_inner_ec_response, _params); } } Loading @@ -93,6 +104,8 @@ void pki_layer::sendMsg(const EtsiTs102941TypesAuthorizationValidation::Authoriz return; } // FIXME Encapsulate p_authorization_validation_request into EtsiTs102941Data first OCTETSTRING authorization_validation_request; _etsi_ts102941_types_authorization_validation_request.encode(p_authorization_validation_request, authorization_validation_request); // Secured the EtsiTs102941Data layer Loading ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_request.hh +2 −2 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ public: explicit etsi_ts102941_types_authorization_validation_request() : codec<EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest, EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest>() { }; virtual ~etsi_ts102941_types_authorization_validation_request() { }; virtual int encode (const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_validation_request, OCTETSTRING& p_data); virtual int decode (const OCTETSTRING& p_data, EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_validation_request, params* p_params = NULL); virtual int encode (const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_authorization_validation_request, OCTETSTRING& p_data); virtual int decode (const OCTETSTRING& p_data, EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_authorization_validation_request, params* p_params = NULL); }; // End of class etsi_ts102941_types_authorization_validation_request etc/AtsPki/AtsPki.cfg +1 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,7 @@ system.utPort.params := "UT_PKI/UDP(dst_ip=172.23.0.1,dst_port=8000)" #ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_09 #ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_10 ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_11 #ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_12 [MAIN_CONTROLLER] # The options herein control the behavior of MC. Loading Loading
ccsrc/EncDec/LibItsPki_Encdec.cc +28 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ #include "etsi_ts102941_types_authorization_inner_request.hh" #include "etsi_ts102941_types_authorization_inner_response.hh" #include "etsi_ts102941_types_authorization_shared_at_request.hh" #include "etsi_ts102941_types_authorization_validation_request.hh" #include "loggers.hh" Loading Loading @@ -172,4 +173,31 @@ namespace LibItsPki__EncdecDeclarations { return 0; } BITSTRING fx__enc__AuthorizationValidationRequest(EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest const& p_shared_at) { loggers::get_instance().log_msg(">>> fx__enc__AuthorizationValidationRequest: ", p_shared_at); etsi_ts102941_types_authorization_validation_request codec; OCTETSTRING os; if (codec.encode(p_shared_at, os) == -1) { loggers::get_instance().warning("fx__enc__AuthorizationValidationRequest: -1 result code was returned"); return int2bit(0, 1); } return oct2bit(os); } INTEGER fx__dec__AuthorizationValidationRequest(BITSTRING& b, EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_shared_at) { loggers::get_instance().log_msg(">>> fx__dec__AuthorizationValidationRequest: ", b); etsi_ts102941_types_authorization_validation_request codec; OCTETSTRING is = bit2oct(b); if (codec.decode(is, p_shared_at) == -1) { loggers::get_instance().warning("fx__dec__AuthorizationValidationRequest: -1 result code was returned"); return -1; } loggers::get_instance().log_msg("<<< fx__dec__AuthorizationValidationRequest: ", p_shared_at); return 0; } } // End of namespace LibItsPki__EncdecDeclarations
ccsrc/Externals/LibItsSecurity_externals.cc +1 −1 Original line number Diff line number Diff line Loading @@ -595,7 +595,7 @@ namespace LibItsSecurity__Functions // TODO Use common function for both fx__encryptWithEciesxxx and fx__decryptWithEciesxxx function OCTETSTRING fx__encryptWithEciesNistp256WithSha256(const OCTETSTRING& p__toBeEncryptedSecuredMessage, const OCTETSTRING& p__recipientsPublicKeyCompressed, const INTEGER& p__compressedMode, OCTETSTRING& p__publicEphemeralKeyCompressed, INTEGER& p__ephemeralCompressedMode, OCTETSTRING& p__encrypted__sym__key, OCTETSTRING& p__authentication__vector, OCTETSTRING& p__nonce) { loggers::get_instance().log_msg(">>> fx__encryptWithEciesNistp256WithSha256: p__toBeEncryptedSecuredMessage: ", p__toBeEncryptedSecuredMessage); loggers::get_instance().log_msg(">>> fx__encryptWithEciesNistp256WithSha256: p__recipientsPublicKeyX: ", p__recipientsPublicKeyCompressed); loggers::get_instance().log_msg(">>> fx__encryptWithEciesNistp256WithSha256: p__recipientsPublicKeyCompressed", p__recipientsPublicKeyCompressed); loggers::get_instance().log(">>> fx__encryptWithEciesNistp256WithSha256: p__compressedMode: %d", static_cast<int>(p__compressedMode)); // 1. Generate new Private/Public key Loading
ccsrc/Protocols/Pki/pki_layer.cc +19 −6 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ void pki_layer::sendMsg(const EtsiTs102941TypesEnrolment::InnerEcRequest& p_inne return; } loggers::get_instance().log_msg("<<< pki_layer::generate_inner_ec_request_signed_for_pop: ", etsi_ts_102941_data); loggers::get_instance().log_msg("<<< pki_layer::sendMsg: ", etsi_ts_102941_data); send_data(etsi_ts_102941_data, _params); } Loading @@ -75,11 +75,22 @@ void pki_layer::sendMsg(const EtsiTs102941TypesEnrolment::InnerEcRequest& p_inne void pki_layer::sendMsg(const EtsiTs102941TypesEnrolment::InnerEcResponse& p_inner_ec_response, params& p_param) { loggers::get_instance().log_msg(">>> pki_layer::sendMsg: ", p_inner_ec_response); OCTETSTRING inner_ec_response; _etsi_ts102941_types_enrolment_inner_response.encode(p_inner_ec_response, inner_ec_response); // Create the EtsiTs102941Data layer EtsiTs102941MessagesItss::EtsiTs102941Data etsi_ts_102941_data; etsi_ts_102941_data.content().enrolmentResponse() = p_inner_ec_response; loggers::get_instance().log_msg("pki_layer::sendMsg: InnerEcResponse: ", etsi_ts_102941_data); // Encode it OCTETSTRING etsi_ts_103097_data_enc; _codec_etsi_ts102941_data.encode(etsi_ts_102941_data, etsi_ts_103097_data_enc); if (!etsi_ts_103097_data_enc.is_bound()) { loggers::get_instance().warning("pki_layer::sendMsg: Failed to encode InnerEcResponse"); } loggers::get_instance().log_msg("pki_layer::sendMsg: etsi_ts_103097_data_enc: ", etsi_ts_103097_data_enc); // Secured the EtsiTs102941Data layer OCTETSTRING secured_inner_ec_response; if (sign_and_encrypt_payload(inner_ec_response, secured_inner_ec_response, p_param) == 0) { if (sign_and_encrypt_payload(etsi_ts_103097_data_enc, secured_inner_ec_response, p_param) == 0) { send_data(secured_inner_ec_response, _params); } } Loading @@ -93,6 +104,8 @@ void pki_layer::sendMsg(const EtsiTs102941TypesAuthorizationValidation::Authoriz return; } // FIXME Encapsulate p_authorization_validation_request into EtsiTs102941Data first OCTETSTRING authorization_validation_request; _etsi_ts102941_types_authorization_validation_request.encode(p_authorization_validation_request, authorization_validation_request); // Secured the EtsiTs102941Data layer Loading
ccsrc/Protocols/Security/etsi_ts102941_types_authorization_validation_request.hh +2 −2 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ public: explicit etsi_ts102941_types_authorization_validation_request() : codec<EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest, EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest>() { }; virtual ~etsi_ts102941_types_authorization_validation_request() { }; virtual int encode (const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_validation_request, OCTETSTRING& p_data); virtual int decode (const OCTETSTRING& p_data, EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_validation_request, params* p_params = NULL); virtual int encode (const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_authorization_validation_request, OCTETSTRING& p_data); virtual int decode (const OCTETSTRING& p_data, EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_authorization_validation_request, params* p_params = NULL); }; // End of class etsi_ts102941_types_authorization_validation_request
etc/AtsPki/AtsPki.cfg +1 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,7 @@ system.utPort.params := "UT_PKI/UDP(dst_ip=172.23.0.1,dst_port=8000)" #ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_09 #ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_10 ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_11 #ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_12 [MAIN_CONTROLLER] # The options herein control the behavior of MC. Loading