Commit 9f3d6ba6 authored by YannGarcia's avatar YannGarcia
Browse files

Validate MEC-028 against MEC Sandbox

parent dc1af394
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -81,6 +81,8 @@ public: //! \publicsection
  static const std::string& server;                //! HTTP server address (e.g. www.etsi.org)
  static const std::string& port;                  //! HTTP server port. Default: 80
  static const std::string& use_ssl;               //! Set to 1 to use SSL to communicate with the HTTP server. Default: false
  static const std::string& mutual_auth;           //! Set to 1 to use mutual authentication. Default: false
  static const std::string& trusted_ca_list;       //! List of trusted CA certificates
  static const std::string& server_mode;           //! Does the test sytem acting as a server. Default: 0
  static const std::string& local_port;            //! Local listener port. Default: 80
  
+2 −0
Original line number Diff line number Diff line
@@ -73,6 +73,8 @@ const std::string& params::interface_id = std::string("interface_id");
const std::string& params::server = std::string("server");
const std::string& params::port = std::string("port");
const std::string& params::use_ssl = std::string("use_ssl");
const std::string& params::mutual_auth = std::string("mutual_auth");
const std::string& params::trusted_ca_list = std::string("trusted_ca_list");
const std::string& params::server_mode = std::string("server_mode");
const std::string& params::local_port = std::string("local_port");

+3 −3
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ void http_layer::receive_data(OCTETSTRING& data, params& params)

  // Decode HTTP message
  LibItsHttp__TypesAndValues::HttpMessage http_message;
  if (_codec.decode(data, http_message) == -1) {
  if (_codec.decode(data, http_message, &params) == -1) {
    loggers::get_instance().warning("http_layer::receive_data: Failed to decode data");
    return;
  }
+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ int json_codec::encode (const LibItsHttp__JsonMessageBodyTypes::JsonBody& msg, O
  } else if (msg.ischosen(LibItsHttp__JsonMessageBodyTypes::JsonBody::ALT_userTrackingSubscription)) {
    const LocationAPI__TypesAndValues::UserTrackingSubscription& user_tracking_subscription = msg.userTrackingSubscription();
    user_tracking_subscription.encode(LocationAPI__TypesAndValues::UserTrackingSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
    data = /*char2oct(CHARSTRING("{\"userTrackingSubscription\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
    data = char2oct(CHARSTRING("{\"userTrackingSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}"));
  } else if (msg.ischosen(LibItsHttp__JsonMessageBodyTypes::JsonBody::ALT_zonalTrafficSubscription)) {
    const LocationAPI__TypesAndValues::ZonalTrafficSubscription& zonal_traffic_subscription = msg.zonalTrafficSubscription();
    zonal_traffic_subscription.encode(LocationAPI__TypesAndValues::ZonalTrafficSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
+36 −17
Original line number Diff line number Diff line
@@ -77,12 +77,30 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la
  set_server_mode(server_mode);
  if (server_mode) {
    parameter_set("serverPort", _params[params::local_port].c_str());
  }
  if (ssl_mode) { // Add certificate bundle
    // Check mutual authentication param
    _params.insert(std::pair<std::string, std::string>(std::string("mutual_tls"), "0"));
    parameter_set(ssl_verifycertificate_name(), "no");
    it = _params.find(params::mutual_auth);
    if (it == _params.cend()) {
      if (_params[params::mutual_auth].compare("1") == 0) { // Use mutual authentication
        parameter_set(ssl_verifycertificate_name(), "yes");
      parameter_set(ssl_private_key_file_name(), "../certificates/out/privates/e5e11abad8003766e4a7b721afb175a189b5f4cc7046af9b0d8eaebb86f28c40_server_dsa.key.pem");
      parameter_set(ssl_certificate_file_name(), "../certificates/out/certs/e5e11abad8003766e4a7b721afb175a189b5f4cc7046af9b0d8eaebb86f28c40_server_dsa.cert.pem");
      parameter_set(ssl_trustedCAlist_file_name(), "../certificates/out/certs/CA_dsa.cert.pem"); // FIXME Use a parameter
        _params.insert(std::pair<std::string, std::string>(std::string("mutual_tls"), "1"));
      }
    }
    // Set trusted CA file
    it = _params.find(params::mutual_auth);
    if (it == _params.cend()) {
      parameter_set(ssl_trustedCAlist_file_name(), it->second.c_str());
      _params.insert(std::pair<std::string, std::string>(std::string("mutual_tls"), it->second));
    } else {
      parameter_set(ssl_trustedCAlist_file_name(), "/usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt");
    }
    // Set additional certificates
    //parameter_set(ssl_trustedCAlist_file_name(), "../certificates/out/certs/CA_dsa.cert.pem"); // FIXME Use a parameter
    //parameter_set(ssl_private_key_file_name(), "../certificates/out/privates/e5e11abad8003766e4a7b721afb175a189b5f4cc7046af9b0d8eaebb86f28c40_server_dsa.key.pem");
    //parameter_set(ssl_certificate_file_name(), "../certificates/out/certs/e5e11abad8003766e4a7b721afb175a189b5f4cc7046af9b0d8eaebb86f28c40_server_dsa.cert.pem");
  }
  set_ttcn_buffer_usercontrol(false);
  set_handle_half_close(true);
@@ -91,7 +109,7 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la

  parameter_set(client_TCP_reconnect_name(), "yes");

  if (!server_mode) {
  if (server_mode == 0) {
    loggers::get_instance().log("tcp_layer::tcp_layer: Establish connection: %s/%s", _params[params::server].c_str(), _params[params::port].c_str());
	  open_client_connection(_params[params::server].c_str(), _params[params::port].c_str(), NULL, NULL);
  }
@@ -175,8 +193,7 @@ int tcp_layer::send_message_on_fd(int p_client_id, const unsigned char * message
{
  loggers::get_instance().log(">>> tcp_layer::send_message_on_fd: %d", p_client_id);

  if(get_user_data(p_client_id))
    {
  if(get_user_data(p_client_id)) {
    loggers::get_instance().log("tcp_layer::send_message_on_fd: SSL mode");
    return SSL_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message);
  }
@@ -189,8 +206,7 @@ int tcp_layer::send_message_on_nonblocking_fd(int p_client_id, const unsigned ch
{
	loggers::get_instance().log(">>> tcp_layer::send_message_on_nonblocking_fd: %d", p_client_id);

  if(get_user_data(p_client_id))
    {
  if(get_user_data(p_client_id)) {
    loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: SSL mode");
    return SSL_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message);
  }
@@ -210,6 +226,9 @@ int tcp_layer::receive_message_on_fd(int p_client_id)
  }

  loggers::get_instance().log("tcp_layer::receive_message_on_fd: Non secured mode");
  if (_params[std::string("tcp_fragmented")].compare("1") == 0) {
    sleep(5); // FIXME When HTTP paquet is fragmented into several TCP packets, a timer is required. This is a Q&D solution
  }
  return Abstract_Socket::receive_message_on_fd(p_client_id);
}

Loading