Commit 493000b8 authored by vagrant's avatar vagrant
Browse files

Add PKI support to RSU simumlator

parent 6a8275a7
Loading
Loading
Loading
Loading
+33 −1
Original line number Original line Diff line number Diff line
@@ -103,7 +103,7 @@ void ConfigRsuSimulatorLayer::sendMsg(const LibItsPki__TypesAndValues::UtPkiResu
    encoding_buffer.put_c(0x01/*static_cast<const unsigned char>(uppertester_pki_codec::c_utPkiInitializeResult)*/);
    encoding_buffer.put_c(0x01/*static_cast<const unsigned char>(uppertester_pki_codec::c_utPkiInitializeResult)*/);
    encoding_buffer.put_c((unsigned char)static_cast<const boolean>(send_par.utPkiInitializeResult()));
    encoding_buffer.put_c((unsigned char)static_cast<const boolean>(send_par.utPkiInitializeResult()));
  } else if (send_par.ischosen(LibItsPki__TypesAndValues::UtPkiResults::ALT_utPkiTriggerResult)) {
  } else if (send_par.ischosen(LibItsPki__TypesAndValues::UtPkiResults::ALT_utPkiTriggerResult)) {
    encoding_buffer.put_c(0x11/*static_cast<const unsigned char>(uppertester_pki_codec::c_utPkiTriggerResult)*/);
    encoding_buffer.put_c(0xBC/*static_cast<const unsigned char>(uppertester_pki_codec::c_utPkiTriggerResult)*/);
    encoding_buffer.put_c((unsigned char)static_cast<const boolean>(send_par.utPkiTriggerResult()));
    encoding_buffer.put_c((unsigned char)static_cast<const boolean>(send_par.utPkiTriggerResult()));
  } else {
  } else {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::sendMsg: Unsupported UtPkiResults variant");
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::sendMsg: Unsupported UtPkiResults variant");
@@ -135,6 +135,8 @@ void ConfigRsuSimulatorLayer::receive_data(OCTETSTRING& data, params& params)
    process_ut_cam_changeheading_data(data, params);
    process_ut_cam_changeheading_data(data, params);
  } else if ((id >= 0x50) && (id <= 0x54)) { // Receive an UtGnTrigger
  } else if ((id >= 0x50) && (id <= 0x54)) { // Receive an UtGnTrigger
    process_ut_geonetworking_trigger(data, params);
    process_ut_geonetworking_trigger(data, params);
  } else if ((id >= 0xBB) && (id <= 0xBF)) { // Receive an UtPkiTrigger
    process_ut_pki_trigger(data, params);
  } else {
  } else {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::receive_data: Unsupported tag %02x", id);
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::receive_data: Unsupported tag %02x", id);
  }
  }
@@ -165,6 +167,11 @@ int ConfigRsuSimulatorLayer::process_utinitialize_data(const OCTETSTRING& data,
    LibItsDenm__TypesAndValues::UtDenmInitialize p(hashedId);
    LibItsDenm__TypesAndValues::UtDenmInitialize p(hashedId);
    // Pass it to the ports if any
    // Pass it to the ports if any
    to_all_upper_ports(p, params);
    to_all_upper_ports(p, params);
  } else if (_params[std::string("ut")].compare("pki") == 0) {
    OCTETSTRING hashedId(data.lengthof() - 1,  1 + static_cast<const unsigned char*>(data));
    LibItsPki__TypesAndValues::UtPkiInitialize p(hashedId);
    // Pass it to the ports if any
    to_all_upper_ports(p, params);
  } else {
  } else {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_utinitialize_data: Unsupported protocol");
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_utinitialize_data: Unsupported protocol");
    return -1;
    return -1;
@@ -281,4 +288,29 @@ int ConfigRsuSimulatorLayer::process_ut_geonetworking_trigger(const OCTETSTRING&
  return 0;
  return 0;
}
}


int ConfigRsuSimulatorLayer::process_ut_pki_trigger(const OCTETSTRING& data, params& params) {
  loggers::get_instance().log(">>> ConfigRsuSimulatorLayer::process_ut_pki_trigger");

  params::const_iterator it = _params.find("ut");
  if (it == _params.cend()) {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_ut_pki_trigger: CF layer's ut parameter is missing");
    return -1;
  }

  if (_params[std::string("ut")].compare("pki") == 0) {
    LibItsPki__TypesAndValues::UtPkiTrigger p;
    p.triggerEnrolmentRequest().cannonicalId() = OCTETSTRING(0, nullptr); // No parameter used
    p.triggerEnrolmentRequest().encAlgorithm() = OCTETSTRING(0, nullptr); // No parameter used
    p.triggerEnrolmentRequest().privateKey() = OCTETSTRING(0, nullptr); // No parameter used
    p.triggerEnrolmentRequest().compressedPublickey() = OCTETSTRING(0, nullptr); // No parameter used
    // Pass it to the ports if any
    to_all_upper_ports(p, params);
  } else {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_ut_pki_trigger: Unsupported protocol");
    return -1;
  }

  return 0;
}

ConfigRsuSimulatorLayerFactory ConfigRsuSimulatorLayerFactory::_f;
ConfigRsuSimulatorLayerFactory ConfigRsuSimulatorLayerFactory::_f;
+1 −0
Original line number Original line Diff line number Diff line
@@ -48,5 +48,6 @@ private:
  int process_ut_cam_changecurvature_data(const OCTETSTRING& data, params& params);
  int process_ut_cam_changecurvature_data(const OCTETSTRING& data, params& params);
  int process_ut_cam_changeheading_data(const OCTETSTRING& data, params& params);
  int process_ut_cam_changeheading_data(const OCTETSTRING& data, params& params);
  int process_ut_geonetworking_trigger(const OCTETSTRING& data, params& params);
  int process_ut_geonetworking_trigger(const OCTETSTRING& data, params& params);
  int process_ut_pki_trigger(const OCTETSTRING& data, params& params);


}; // End of class ConfigRsuSimulatorLayer
}; // End of class ConfigRsuSimulatorLayer
+10 −0
Original line number Original line Diff line number Diff line
@@ -211,6 +211,16 @@ namespace ItsRSUsSimulator__TestSystem {
    incoming_message(p_ind);
    incoming_message(p_ind);
  }
  }
  
  
  void ConfigRsuSimulatorPort::receiveMsg (const LibItsPki__TypesAndValues::UtPkiInitialize& p_ind, const params& p_params) {
    loggers::get_instance().log_msg(">>> ConfigRsuSimulatorPort::receive_msg: ", p_ind);
    // Sanity check
    if (!p_ind.is_bound()) {
      return;
    }

    incoming_message(p_ind);
  }
  
  void ConfigRsuSimulatorPort::receiveMsg (const LibItsPki__TypesAndValues::UtPkiTrigger& p_ind, const params& p_params) {
  void ConfigRsuSimulatorPort::receiveMsg (const LibItsPki__TypesAndValues::UtPkiTrigger& p_ind, const params& p_params) {
    loggers::get_instance().log_msg(">>> ConfigRsuSimulatorPort::receive_msg: ", p_ind);
    loggers::get_instance().log_msg(">>> ConfigRsuSimulatorPort::receive_msg: ", p_ind);
    // Sanity check
    // Sanity check
+22 −2
Original line number Original line Diff line number Diff line
@@ -21,6 +21,11 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la
  } else if (it->second.compare("1") == 0) {
  } else if (it->second.compare("1") == 0) {
    set_socket_debugging(true);
    set_socket_debugging(true);
  }
  }
  bool server_mode = false;
  it = _params.find(params::server_mode);
  if (it != _params.cend()) {
    server_mode = (1 == std::stoi(it->second));
  }
  it = _params.find(params::server);
  it = _params.find(params::server);
  if (it == _params.cend()) {
  if (it == _params.cend()) {
    _params.insert(std::pair<std::string, std::string>(std::string("server"), "127.0.0.1"));
    _params.insert(std::pair<std::string, std::string>(std::string("server"), "127.0.0.1"));
@@ -46,10 +51,25 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la
  if (!parameter_set(params::port.c_str(), _params[params::port].c_str())) {
  if (!parameter_set(params::port.c_str(), _params[params::port].c_str())) {
    loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str());
    loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str());
  }
  }
  it = _params.find(params::local_port);
  if (it == _params.cend()) {
    if (_params[params::use_ssl].compare("0") == 0) { // Use standard HTTP local_port
      _params.insert(std::pair<std::string, std::string>(std::string("local_port"), "80"));
    } else { // Use standard HTTPS local_port
      _params.insert(std::pair<std::string, std::string>(std::string("local_port"), "443"));
    }
  }
  if (!parameter_set(params::local_port.c_str(), _params[params::local_port].c_str())) {
    loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::local_port.c_str());
  }


  parameter_set(use_connection_ASPs_name(), "yes");
  parameter_set(use_connection_ASPs_name(), (!server_mode) ? "yes" : "no");
  parameter_set(server_backlog_name(), "1024");
  parameter_set(server_backlog_name(), "1024");
  set_server_mode(false);
  loggers::get_instance().log("tcp_layer::tcp_layer: server_mode=%x", server_mode);
  set_server_mode(server_mode);
  if (server_mode) {
    parameter_set("serverPort", _params[params::local_port].c_str());
  }
  set_ttcn_buffer_usercontrol(false);
  set_ttcn_buffer_usercontrol(false);
  set_handle_half_close(true);
  set_handle_half_close(true);


+2 −1
Original line number Original line Diff line number Diff line
@@ -32,7 +32,8 @@ udp_layer::udp_layer(const std::string & p_type, const std::string & param) : la


  // Initialize the socket
  // Initialize the socket
  _saddr.sin_family = AF_INET;
  _saddr.sin_family = AF_INET;
  _saddr.sin_addr.s_addr = INADDR_ANY;
  _saddr.sin_addr.s_addr = htonl(INADDR_ANY);
  loggers::get_instance().log("udp_layer::udp_layer: Port tolisten=%d", std::atoi(_params["src_port"].c_str()));
  _saddr.sin_port = htons(std::atoi(_params["src_port"].c_str()));
  _saddr.sin_port = htons(std::atoi(_params["src_port"].c_str()));
  // Create socket
  // Create socket
  _fd = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  _fd = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
Loading