Commit efe265b2 authored by garciay's avatar garciay
Browse files

Add support of AuthorizarionRequest/Response

parent 633a23d0
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -113,6 +113,19 @@ namespace LibItsPki__TestSystem {

  }

  void PkiPort::outgoing_send(const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& send_par) {
    loggers::get_instance().log_msg(">>> PkiPort::outgoing_send: payload=", send_par);
    
    float duration;
    loggers::get_instance().set_start_time(_time_key);
    params params;
    static_cast<pki_layer *>(_layer)->sendMsg(send_par, params);
    loggers::get_instance().set_stop_time(_time_key, duration);
  }
  
  void PkiPort::outgoing_send(const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationResponse& send_par) {
  }
  
  void PkiPort::receiveMsg (const EtsiTs102941TypesEnrolment::InnerEcRequest& p_ind, const params& p_params) {
    loggers::get_instance().log_msg(">>> PkiPort::receive_msg: ", p_ind);
    // Sanity check
@@ -133,5 +146,25 @@ namespace LibItsPki__TestSystem {
    incoming_message(p_ind);
  }
  
  void PkiPort::receiveMsg (const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_ind, const params& p_params) {
    loggers::get_instance().log_msg(">>> PkiPort::receive_msg: ", p_ind);
    // Sanity check
    if (!p_ind.is_bound()) {
      return;
    }

    incoming_message(p_ind);
  }

  void PkiPort::receiveMsg (const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationResponse& p_ind, const params& p_params) {
    loggers::get_instance().log_msg(">>> PkiPort::receive_msg: ", p_ind);
    // Sanity check
    if (!p_ind.is_bound()) {
      return;
    }

    incoming_message(p_ind);
  }
  
} /* end of namespace */
+4 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ public:
	void set_parameter(const char *parameter_name, const char *parameter_value);
	void receiveMsg (const EtsiTs102941TypesEnrolment::InnerEcRequest& p_ind, const params& p_params);
	void receiveMsg (const EtsiTs102941TypesEnrolment::InnerEcResponse& p_ind, const params& p_params);
	void receiveMsg (const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_ind, const params& p_params);
	void receiveMsg (const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationResponse& p_ind, const params& p_params);

private:
	/* void Handle_Fd_Event(int fd, boolean is_readable,
@@ -46,6 +48,8 @@ protected:

	void outgoing_send(const EtsiTs102941TypesEnrolment::InnerEcRequest& send_par);
	void outgoing_send(const EtsiTs102941TypesEnrolment::InnerEcResponse& send_par);
  void outgoing_send(const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& send_par);
  void outgoing_send(const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationResponse& send_par);
};

} /* end of namespace */
+31 −8
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ using namespace std; // Required for isnan()
#include "LibItsPki_TypesAndValues.hh"
#include "LibItsPki_TestSystem.hh"

pki_layer::pki_layer(const std::string & p_type, const std::string & param) : t_layer<LibItsPki__TestSystem::PkiPort>(p_type), _params(), _etsi_ts102941_types_enrolment_inner_request(), _etsi_ts102941_types_enrolment_inner_response(), _codec(), _codec_etsi_ts102941_data(), _ac_set_security_data(nullptr)
pki_layer::pki_layer(const std::string & p_type, const std::string & param) : t_layer<LibItsPki__TestSystem::PkiPort>(p_type), _params(), _etsi_ts102941_types_enrolment_inner_request(), _etsi_ts102941_types_enrolment_inner_response(), _etsi_ts102941_types_authorization_validation_request(), _etsi_ts102941_types_authorization_validation_response(), _codec(), _ac_set_security_data(nullptr)
{
  loggers::get_instance().log(">>> pki_layer::pki_layer: %s, %s", to_string().c_str(), param.c_str());

@@ -54,7 +54,7 @@ void pki_layer::sendMsg(const EtsiTs102941TypesEnrolment::InnerEcRequest& p_inne

  OCTETSTRING inner_ec_request;
  _etsi_ts102941_types_enrolment_inner_request.encode(p_inner_ec_request, inner_ec_request);
  // Build the EtsiTs103097Data-Encrypted
  // Build the EtsiTs103097Data-Signed
  OCTETSTRING etsi_ts_103097_data;
  if (generate_inner_ec_request_signed_for_pop(inner_ec_request, etsi_ts_103097_data, _params) == -1) {
    loggers::get_instance().warning("pki_layer::sendMsg: Failed to generate InnerExRequestSignedForPop");
@@ -75,13 +75,36 @@ 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 data;
  _etsi_ts102941_types_enrolment_inner_response.encode(p_inner_ec_response, data);
  // Add security
  OCTETSTRING secured_data;
  if (sign_and_encrypt_payload(data, secured_data, p_param) == 0) {
    send_data(data, _params);
  OCTETSTRING inner_ec_response;
  _etsi_ts102941_types_enrolment_inner_response.encode(p_inner_ec_response, inner_ec_response);
  // Secured the EtsiTs102941Data layer
  OCTETSTRING secured_inner_ec_response;
  if (sign_and_encrypt_payload(inner_ec_response, secured_inner_ec_response, p_param) == 0) {
    send_data(secured_inner_ec_response, _params);
  }
}

void pki_layer::sendMsg(const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_authorization_validation_request, params& p_param) {
  loggers::get_instance().log_msg(">>> pki_layer::sendMsg: ", p_authorization_validation_request);

  // Sanity checks
  if (_ac_set_security_data.get() == nullptr) {
    loggers::get_instance().error("pki_layer::sendMsg: Security data missing");
    return;
  }

  OCTETSTRING authorization_validation_request;
  _etsi_ts102941_types_authorization_validation_request.encode(p_authorization_validation_request, authorization_validation_request);
  // Secured the EtsiTs102941Data layer
  OCTETSTRING etsi_ts_102941_data;
  if (sign_and_encrypt_payload(authorization_validation_request, etsi_ts_102941_data, _params) == -1) {
    loggers::get_instance().warning("pki_layer::sendMsg: Failed to secure Pki message");
    return;
  }
  
  loggers::get_instance().log_msg("<<< pki_layer::generate_authorization_validation_request: ", etsi_ts_102941_data);
  
  send_data(etsi_ts_102941_data, _params);
}

void pki_layer::send_data(OCTETSTRING& data, params& params) {
+18 −6
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

#include "etsi_ts102941_types_enrolment_inner_request.hh"
#include "etsi_ts102941_types_enrolment_inner_response.hh"
#include "etsi_ts102941_types_authorization_validation_request.hh"
#include "etsi_ts102941_types_authorization_validation_response.hh"
#include "etsi_ts103097_data_codec.hh"
#include "etsi_ts102941_data.hh"

@@ -40,6 +42,8 @@ class pki_layer : public t_layer<LibItsPki__TestSystem::PkiPort> {
  params _params;
  etsi_ts102941_types_enrolment_inner_request _etsi_ts102941_types_enrolment_inner_request; // TODO Rename _codec_etsi_ts102941_types_enrolment_inner_request
  etsi_ts102941_types_enrolment_inner_response _etsi_ts102941_types_enrolment_inner_response; // TODO Rename _codec_etsi_ts102941_types_enrolment_inner_response
  etsi_ts102941_types_authorization_validation_request _etsi_ts102941_types_authorization_validation_request; // TODO Rename _codec_etsi_ts102941_types_authorization_validation_request
  etsi_ts102941_types_authorization_validation_response _etsi_ts102941_types_authorization_validation_response; // TODO Rename _codec_etsi_ts102941_types_authorization_validation_response
  etsi_ts103097_data_codec _codec; // TODO Rename _codec_etsi_ts103097_data_codec
  etsi_ts102941_data _codec_etsi_ts102941_data;

@@ -52,7 +56,7 @@ public: //! \publicsection
   * \param[in] p_type \todo
   * \param[in] p_param \todo
   */
  pki_layer() : t_layer(), _params(), _etsi_ts102941_types_enrolment_inner_request(), _etsi_ts102941_types_enrolment_inner_response(), _codec(), _codec_etsi_ts102941_data(), _ac_set_security_data(nullptr) { };
  pki_layer() : t_layer(), _params(), _etsi_ts102941_types_enrolment_inner_request(), _etsi_ts102941_types_enrolment_inner_response(), _etsi_ts102941_types_authorization_validation_request(), _etsi_ts102941_types_authorization_validation_response(), _codec(), _codec_etsi_ts102941_data(), _ac_set_security_data(nullptr) { };
  /*!
   * \brief Specialised constructor
   *        Create a new instance of the pki_layer class
@@ -67,19 +71,27 @@ public: //! \publicsection

  /*!
   * \fn void sendMsg(const EtsiTs102941TypesEnrolment::InnerEcRequest& p_inner_ec_request, params& p_param);
   * \brief Send HTTP message to the lower layers
   * \brief Send PKI message to the lower layers
   * \param[in] p_inner_ec_request The InnerEcRequest message to be sent
   * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters
   */
  void sendMsg(const EtsiTs102941TypesEnrolment::InnerEcRequest& p_inner_ec_request, params& p_param);
  
  /*!
   * \fn void sendMsg(const EtsiTs102941TypesEnrolment::InnerEcResponse& p_inner_ec_request, params& p_param);
   * \brief Send HTTP message to the lower layers
   * \param[in] p_inner_ec_request The InnerEcResponse message to be sent
   * \fn void sendMsg(const EtsiTs102941TypesEnrolment::InnerEcResponse& p_inner_ec_response, params& p_param);
   * \brief Send PKI message to the lower layers
   * \param[in] p_inner_ec_response The InnerEcResponse message to be sent
   * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters
   */
  void sendMsg(const EtsiTs102941TypesEnrolment::InnerEcResponse& p_inner_ec_request, params& p_param);
  void sendMsg(const EtsiTs102941TypesEnrolment::InnerEcResponse& p_inner_ec_response, params& p_param);
  
  /*!
   * \fn void sendMsg(const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_authorization_validation_request, params& p_param);
   * \brief Send PKI message to the lower layers
   * \param[in] p_authorization_validation_request The AuthorizationValidationRequest message to be sent
   * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters
   */
  void sendMsg(const EtsiTs102941TypesAuthorizationValidation::AuthorizationValidationRequest& p_authorization_validation_request, params& p_param);

  /*!
   * \virtual
+2 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ system.utPort.params := "UT_PKI/UDP(dst_ip=172.23.0.1,dst_port=8000)"
#ItsPki_TestCases.TC_SEC_PKI_ITSS_ENR_BV_01
#ItsPki_TestCases.TC_SEC_PKI_ITSS_ENR_BV_02
#ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_01
ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_02
#ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_02
#ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_03
#ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_04
#ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_05
@@ -134,6 +134,7 @@ ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_02
#ItsPki_TestCases.TC_SEC_PKI_SND_EA_BV_08
#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

[MAIN_CONTROLLER]
# The options herein control the behavior of MC.
Loading