Commit 68c52bb0 authored by garciay's avatar garciay
Browse files

STF525: Add encryption support in Test System

STF545: Start TestSystem support
parent 12fde3ae
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -361,9 +361,9 @@ namespace LibItsSecurity__Functions
      return OCTETSTRING();
    }
    // 2. Generate and derive shared secret
    std::vector<unsigned char> peer_public_key_x(static_cast<const unsigned char *>(p__recipientsPublicKeyX), p__recipientsPublicKeyX.lengthof() + static_cast<const unsigned char *>(p__recipientsPublicKeyX));
    std::vector<unsigned char> peer_public_key_y(static_cast<const unsigned char *>(p__recipientsPublicKeyY), p__recipientsPublicKeyY.lengthof() + static_cast<const unsigned char *>(p__recipientsPublicKeyY));
    if (ec.generate_and_derive_ephemeral_key(encryption_algotithm::aes_128_ccm, peer_public_key_x, peer_public_key_y) == -1) {
    std::vector<unsigned char> recipients_public_key_x(static_cast<const unsigned char *>(p__recipientsPublicKeyX), p__recipientsPublicKeyX.lengthof() + static_cast<const unsigned char *>(p__recipientsPublicKeyX));
    std::vector<unsigned char> recipients_public_key_y(static_cast<const unsigned char *>(p__recipientsPublicKeyY), p__recipientsPublicKeyY.lengthof() + static_cast<const unsigned char *>(p__recipientsPublicKeyY));
    if (ec.generate_and_derive_ephemeral_key(encryption_algotithm::aes_128_ccm, recipients_public_key_x, recipients_public_key_y) == -1) {
      loggers::get_instance().warning("fx__encryptWithEciesNistp256WithSha256: Failed to generate and derive secret key");
      return OCTETSTRING();
    }
@@ -450,9 +450,9 @@ namespace LibItsSecurity__Functions
      return OCTETSTRING();
    }
    // 2. Generate and derive shared secret
    std::vector<unsigned char> peer_public_key_x(static_cast<const unsigned char *>(p__recipientsPublicKeyX), p__recipientsPublicKeyX.lengthof() + static_cast<const unsigned char *>(p__recipientsPublicKeyX));
    std::vector<unsigned char> peer_public_key_y(static_cast<const unsigned char *>(p__recipientsPublicKeyY), p__recipientsPublicKeyY.lengthof() + static_cast<const unsigned char *>(p__recipientsPublicKeyY));
    if (ec.generate_and_derive_ephemeral_key(encryption_algotithm::aes_128_ccm, peer_public_key_x, peer_public_key_y) == -1) {
    std::vector<unsigned char> recipients_public_key_x(static_cast<const unsigned char *>(p__recipientsPublicKeyX), p__recipientsPublicKeyX.lengthof() + static_cast<const unsigned char *>(p__recipientsPublicKeyX));
    std::vector<unsigned char> recipients_public_key_y(static_cast<const unsigned char *>(p__recipientsPublicKeyY), p__recipientsPublicKeyY.lengthof() + static_cast<const unsigned char *>(p__recipientsPublicKeyY));
    if (ec.generate_and_derive_ephemeral_key(encryption_algotithm::aes_128_ccm, recipients_public_key_x, recipients_public_key_y) == -1) {
      loggers::get_instance().warning("fx__encryptWithEciesBrainpoolp256WithSha256: Failed to generate and derive secret key");
      return OCTETSTRING();
    }
+78 −0
Original line number Diff line number Diff line
// This Test Port skeleton source file was generated by the
// TTCN-3 Compiler of the TTCN-3 Test Executor version CRL 113 200/5 R3A
// for U-ERICSSON\ethgry (ethgry@HU00078339) on Fri Aug 14 21:19:06 2015

// Copyright Ericsson Telecom AB 2000-2014

// You may modify this file. Complete the body of empty functions and
// add your member functions here.

#include "PkiPort.hh"

namespace LibItsPki__TestSystem {

PkiPort::PkiPort(const char *par_port_name)
	: PkiPort_BASE(par_port_name)
{

}

PkiPort::~PkiPort()
{

}

void PkiPort::set_parameter(const char * /*parameter_name*/,
	const char * /*parameter_value*/)
{

}

/*void PkiPort::Handle_Fd_Event(int fd, boolean is_readable,
	boolean is_writable, boolean is_error) {}*/

void PkiPort::Handle_Fd_Event_Error(int /*fd*/)
{

}

void PkiPort::Handle_Fd_Event_Writable(int /*fd*/)
{

}

void PkiPort::Handle_Fd_Event_Readable(int /*fd*/)
{

}

/*void PkiPort::Handle_Timeout(double time_since_last_call) {}*/

void PkiPort::user_map(const char * /*system_port*/)
{

}

void PkiPort::user_unmap(const char * /*system_port*/)
{

}

void PkiPort::user_start()
{

}

void PkiPort::user_stop()
{

}

void PkiPort::outgoing_send(const LibItsPki__TestSystem::PkiReq& /*send_par*/)
{

}


} /* end of namespace */
+44 −0
Original line number Diff line number Diff line
// This Test Port skeleton header file was generated by the
// TTCN-3 Compiler of the TTCN-3 Test Executor version CRL 113 200/5 R3A
// for U-ERICSSON\ethgry (ethgry@HU00078339) on Fri Aug 14 21:19:06 2015

// Copyright Ericsson Telecom AB 2000-2014

// You may modify this file. Add your attributes and prototypes of your
// member functions here.

#ifndef PkiPort_HH
#define PkiPort_HH

#include "LibItsPki_TestSystem.hh"

namespace LibItsPki__TestSystem {

class PkiPort : public PkiPort_BASE {
public:
	PkiPort(const char *par_port_name = NULL);
	~PkiPort();

	void set_parameter(const char *parameter_name,
		const char *parameter_value);

private:
	/* void Handle_Fd_Event(int fd, boolean is_readable,
		boolean is_writable, boolean is_error); */
	void Handle_Fd_Event_Error(int fd);
	void Handle_Fd_Event_Writable(int fd);
	void Handle_Fd_Event_Readable(int fd);
	/* void Handle_Timeout(double time_since_last_call); */
protected:
	void user_map(const char *system_port);
	void user_unmap(const char *system_port);

	void user_start();
	void user_stop();

	void outgoing_send(const LibItsPki__TestSystem::PkiReq& send_par);
};

} /* end of namespace */

#endif
+30 −5
Original line number Diff line number Diff line
@@ -85,19 +85,21 @@ void ConfigRsuSimulatorLayer::receive_data(OCTETSTRING& data, Params& params)

  unsigned char id = *(static_cast<const unsigned char*>(data));
  if (id == 0x00) { // Receive an UtxxInitialise
    process_data(data, params);
    process_utinitialize_data(data, params);
  } else if (id == 0x00) { // Receive an UtCamChangeSpeed
    process_ut_cam_changespeed_data(data, params);
  } else {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::receive_data: Unsupported tag %02x", id);
  }
  
}

int ConfigRsuSimulatorLayer::process_data(OCTETSTRING& data, Params& params) {
  loggers::get_instance().log("ConfigRsuSimulatorLayer::process_data");
int ConfigRsuSimulatorLayer::process_utinitialize_data(OCTETSTRING& data, Params& params) {
  loggers::get_instance().log("ConfigRsuSimulatorLayer::process_utinitialize_data");
  
  Params::const_iterator it = _params.find("ut");
  if (it == _params.cend()) {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_data: CF layer's ut parameter is missing");
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_utinitialize_data: CF layer's ut parameter is missing");
    return -1;
  }

@@ -117,7 +119,30 @@ int ConfigRsuSimulatorLayer::process_data(OCTETSTRING& data, Params& params) {
    // Pass it to the ports if any
    to_all_upper_ports(p, params);
  } else {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_data: Unsupported protocol");
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_utinitialize_data: Unsupported protocol");
    return -1;
  }

  return 0;
}

int ConfigRsuSimulatorLayer::process_ut_cam_changespeed_data(OCTETSTRING& data, Params& params) {
  loggers::get_instance().log("ConfigRsuSimulatorLayer::process_ut_cam_changespeed_data");

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

  if (_params[std::string("ut")].compare("cam") == 0) {
    OCTETSTRING speed(data.lengthof() - 1,  1 + static_cast<const unsigned char*>(data));
    LibItsCam__TypesAndValues::UtCamTrigger p;
    p.changeSpeed() = oct2int(speed);
    // Pass it to the ports if any
    to_all_upper_ports(p, params);
  } else {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_ut_cam_changespeed_data: Unsupported protocol");
    return -1;
  }

+2 −1
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ public:
  virtual void receive_data(OCTETSTRING& data, Params& params);

private:
  int process_data(OCTETSTRING& data, Params& params);
  int process_utinitialize_data(OCTETSTRING& data, Params& params);
  int process_ut_cam_changespeed_data(OCTETSTRING& data, Params& params);

}; // End of class ConfigRsuSimulatorLayer
Loading