Commit f146194e authored by YannGarcia's avatar YannGarcia
Browse files

Rename security_services into security_services_its to prevent conflict with...

Rename security_services into security_services_its to prevent conflict with common security_services (X509)
parent 7e9ea28d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ outdir := $(TOPDIR)/build/$(ATS)
bindir := $(TOPDIR)/bin

sources     := $(sort $(all_sources))
includes    := $(outdir) $(outdir)/.. $(outdir)/../asn1 $(all_includes) -I/usr/lib/libxml2 $(NPCAP_INCLUDE)
includes    := $(outdir) $(outdir)/.. $(outdir)/../asn1 $(all_includes) /usr/include/libxml2 $(NPCAP_INCLUDE)

ifeq (Windows_NT,$(OS))
  EXE=.exe
+4 −4
Original line number Diff line number Diff line
@@ -1246,8 +1246,8 @@
    <FileResource projectRelativePath="bin/security_db_record.o" relativeURI="bin/security_db_record.o"/>
    <FileResource projectRelativePath="bin/security_ecc.d" relativeURI="bin/security_ecc.d"/>
    <FileResource projectRelativePath="bin/security_ecc.o" relativeURI="bin/security_ecc.o"/>
    <FileResource projectRelativePath="bin/security_services.d" relativeURI="bin/security_services.d"/>
    <FileResource projectRelativePath="bin/security_services.o" relativeURI="bin/security_services.o"/>
    <FileResource projectRelativePath="bin/security_services_its.d" relativeURI="bin/security_services_its.d"/>
    <FileResource projectRelativePath="bin/security_services_its.o" relativeURI="bin/security_services_its.o"/>
    <FileResource projectRelativePath="bin/sha256.d" relativeURI="bin/sha256.d"/>
    <FileResource projectRelativePath="bin/sha256.o" relativeURI="bin/sha256.o"/>
    <FileResource projectRelativePath="bin/sha384.d" relativeURI="bin/sha384.d"/>
@@ -1575,8 +1575,8 @@
    <FileResource projectRelativePath="ccsrc/Protocols/Security/security_db_record.hh" relativeURI="ccsrc/Protocols/Security/security_db_record.hh"/>
    <FileResource projectRelativePath="ccsrc/Protocols/Security/security_ecc.cc" relativeURI="ccsrc/Protocols/Security/security_ecc.cc"/>
    <FileResource projectRelativePath="ccsrc/Protocols/Security/security_ecc.hh" relativeURI="ccsrc/Protocols/Security/security_ecc.hh"/>
    <FileResource projectRelativePath="ccsrc/Protocols/Security/security_services.cc" relativeURI="ccsrc/Protocols/Security/security_services.cc"/>
    <FileResource projectRelativePath="ccsrc/Protocols/Security/security_services.hh" relativeURI="ccsrc/Protocols/Security/security_services.hh"/>
    <FileResource projectRelativePath="ccsrc/Protocols/Security/security_services_its.cc" relativeURI="ccsrc/Protocols/Security/security_services_its.cc"/>
    <FileResource projectRelativePath="ccsrc/Protocols/Security/security_services_its.hh" relativeURI="ccsrc/Protocols/Security/security_services_its.hh"/>
    <FileResource projectRelativePath="ccsrc/Protocols/Security/sha256.cc" relativeURI="ccsrc/Protocols/Security/sha256.cc"/>
    <FileResource projectRelativePath="ccsrc/Protocols/Security/sha256.hh" relativeURI="ccsrc/Protocols/Security/sha256.hh"/>
    <FileResource projectRelativePath="ccsrc/Protocols/Security/sha384.cc" relativeURI="ccsrc/Protocols/Security/sha384.cc"/>
+13 −13
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@

#include "security_ecc.hh"

#include "security_services.hh"
#include "security_services_its.hh"

#include "geospacial.hh"

@@ -32,7 +32,7 @@ namespace LibItsSecurity__Functions {

  static std::unique_ptr<geospacial> g(new geospacial);

  // FIXME Unify code with security_services
  // FIXME Unify code with security_services_its

  /**
   * \fn OCTETSTRING fx_hashWithSha256(const OCTETSTRING& p__toBeHashedData);
@@ -1371,7 +1371,7 @@ namespace LibItsSecurity__Functions {
    }
    params_its params;
    params.insert(std::pair<std::string, std::string>(std::string("sec_db_path"), str));
    if (security_services::get_instance().setup(params) == -1) {
    if (security_services_its::get_instance().setup(params) == -1) {
      return FALSE;
    }

@@ -1391,12 +1391,12 @@ namespace LibItsSecurity__Functions {
      const OCTETSTRING private_enc_key  = p__private__enc__key.valueof();
      const OCTETSTRING public_enc_key_x = p__public__enc__key__x.valueof();
      const OCTETSTRING public_enc_key_y = p__public__enc__key__y.valueof();
      result                             = security_services::get_instance().store_certificate(
      result                             = security_services_its::get_instance().store_certificate(
        p__cert__id, p__cert, p__private__key, p__public__key__x, p__public__key__y, p__public__key__compressed, p__public__key__compressed__mode, p__hash,
        p__hash__256, p__hashid8, p__issuer, p__private__enc__key.valueof(), p__public__enc__key__x.valueof(), p__public__enc__key__y.valueof(),
        p__public__enc__compressed__key.valueof(), p__public__enc__key__compressed__mode.valueof());
    } else {
      result = security_services::get_instance().store_certificate(
      result = security_services_its::get_instance().store_certificate(
        p__cert__id, p__cert, p__private__key, p__public__key__x, p__public__key__y, p__public__key__compressed, p__public__key__compressed__mode, p__hash,
        p__hash__256, p__hashid8, p__issuer, OCTETSTRING(0, nullptr), OCTETSTRING(0, nullptr), OCTETSTRING(0, nullptr), OCTETSTRING(0, nullptr), INTEGER(-1));
    }
@@ -1419,7 +1419,7 @@ namespace LibItsSecurity__Functions {
  BOOLEAN fx__readCertificate(const CHARSTRING &p__certificateId, OCTETSTRING &p__certificate) {
    loggers::get_instance().log(">>> fx__readCertificate: '%s'", static_cast<const char *>(p__certificateId));

    if (security_services::get_instance().read_certificate(p__certificateId, p__certificate) == -1) {
    if (security_services_its::get_instance().read_certificate(p__certificateId, p__certificate) == -1) {
      return FALSE;
    }

@@ -1429,7 +1429,7 @@ namespace LibItsSecurity__Functions {
  BOOLEAN fx__readCertificateFromDigest(const OCTETSTRING &p__digest, CHARSTRING &p__certificateId) {
    loggers::get_instance().log_msg(">>> fx__readCertificateFromDigest: ", p__digest);

    if (security_services::get_instance().read_certificate_from_digest(p__digest, p__certificateId) == -1) {
    if (security_services_its::get_instance().read_certificate_from_digest(p__digest, p__certificateId) == -1) {
      return FALSE;
    }
    loggers::get_instance().log_msg("fx__readCertificateFromDigest: ", p__certificateId);
@@ -1440,7 +1440,7 @@ namespace LibItsSecurity__Functions {
  BOOLEAN fx__readCertificateFromHashedId3(const OCTETSTRING &p__digest, CHARSTRING &p__certificateId) {
    loggers::get_instance().log_msg(">>> fx__readCertificateFromHashedId3: ", p__digest);

    if (security_services::get_instance().read_certificate_from_hashed_id3(p__digest, p__certificateId) == -1) {
    if (security_services_its::get_instance().read_certificate_from_hashed_id3(p__digest, p__certificateId) == -1) {
      return FALSE;
    }
    loggers::get_instance().log_msg("fx__readCertificateFromHashedId3: ", p__certificateId);
@@ -1457,7 +1457,7 @@ namespace LibItsSecurity__Functions {
  BOOLEAN fx__readCertificateDigest(const CHARSTRING &p__certificateId, OCTETSTRING &p__digest) {
    loggers::get_instance().log(">>> fx__readCertificateDigest: '%s'", static_cast<const char *>(p__certificateId));

    if (security_services::get_instance().read_certificate_digest(p__certificateId, p__digest) == -1) {
    if (security_services_its::get_instance().read_certificate_digest(p__certificateId, p__digest) == -1) {
      return FALSE;
    }

@@ -1473,7 +1473,7 @@ namespace LibItsSecurity__Functions {
  BOOLEAN fx__readCertificateHash(const CHARSTRING &p__certificateId, OCTETSTRING &p__hash) {
    loggers::get_instance().log(">>> fx__readCertificateHash: '%s'", static_cast<const char *>(p__certificateId));

    if (security_services::get_instance().read_certificate_hash(p__certificateId, p__hash) == -1) {
    if (security_services_its::get_instance().read_certificate_hash(p__certificateId, p__hash) == -1) {
      return FALSE;
    }

@@ -1489,7 +1489,7 @@ namespace LibItsSecurity__Functions {
  BOOLEAN fx__readCertificateHash256(const CHARSTRING &p__certificateId, OCTETSTRING &p__hash) {
    loggers::get_instance().log(">>> fx__readCertificateHash256: '%s'", static_cast<const char *>(p__certificateId));

    if (security_services::get_instance().read_certificate_hash_sha_256(p__certificateId, p__hash) == -1) {
    if (security_services_its::get_instance().read_certificate_hash_sha_256(p__certificateId, p__hash) == -1) {
      return FALSE;
    }

@@ -1505,7 +1505,7 @@ namespace LibItsSecurity__Functions {
  BOOLEAN fx__readSigningKey(const CHARSTRING &p__certificateId, OCTETSTRING &p__signingPrivateKey) {
    loggers::get_instance().log(">>> fx__readSigningKey: '%s'", static_cast<const char *>(p__certificateId));

    if (security_services::get_instance().read_private_key(p__certificateId, p__signingPrivateKey) == -1) {
    if (security_services_its::get_instance().read_private_key(p__certificateId, p__signingPrivateKey) == -1) {
      return FALSE;
    }

@@ -1522,7 +1522,7 @@ namespace LibItsSecurity__Functions {
  BOOLEAN fx__readEncryptingKey(const CHARSTRING &p__certificateId, OCTETSTRING &p__encryptingPrivateKey) {
    loggers::get_instance().log(">>> fx__readSigningKey: '%s'", static_cast<const char *>(p__certificateId));

    if (security_services::get_instance().read_private_enc_key(p__certificateId, p__encryptingPrivateKey) == -1) {
    if (security_services_its::get_instance().read_private_enc_key(p__certificateId, p__encryptingPrivateKey) == -1) {
      return FALSE;
    }

+5 −5
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@

#include "loggers.hh"

#include "security_services.hh"
#include "security_services_its.hh"

#include "base_time.hh"

@@ -257,7 +257,7 @@ void geonetworking_layer::receive_data(OCTETSTRING &data, params &p_params) {
      }
      return;
    } else {
      if (security_services::get_instance().verify_and_extract_gn_payload(secured_data, _enable_security_checks, ieee_1609dot2_data, unsecured_gn_payload,
      if (security_services_its::get_instance().verify_and_extract_gn_payload(secured_data, _enable_security_checks, ieee_1609dot2_data, unsecured_gn_payload,
                                                                          params) != 0) {
        loggers::get_instance().warning("geonetworking_layer::receive_data: Security error");
        if (_enable_security_checks) {
@@ -970,7 +970,7 @@ int geonetworking_layer::build_secured_pdu(OCTETSTRING &data, params_its &params
  basic_header.nextHeader()        = BasicNextHeader::e__securedPacket;
  OCTETSTRING unsecured_gn_payload = OCTETSTRING(data.lengthof() - basic_header_len, static_cast<const unsigned char *>(data) + basic_header_len);
  OCTETSTRING secured_gn_payload;
  if (security_services::get_instance().secure_gn_payload(unsecured_gn_payload, secured_gn_payload, params) != 0) {
  if (security_services_its::get_instance().secure_gn_payload(unsecured_gn_payload, secured_gn_payload, params) != 0) {
    loggers::get_instance().warning("geonetworking_layer::build_secured_pdu: failed to build secured pdu");
    return -1;
  }
@@ -1023,8 +1023,8 @@ int geonetworking_layer::setup_secured_mode() {
    _params.insert(std::pair<std::string, std::string>(std::string("hash"), "SHA-256"));
  }
  // Set up security services even if secured_mode is set to 0. Later, we can receive an AcEnableSecurity request, the sertificate caching will be ready to go
  security_services::get_instance().setup(_params);
  security_services::get_instance().set_position(_latitude, _longitude);
  security_services_its::get_instance().setup(_params);
  security_services_its::get_instance().set_position(_latitude, _longitude);

  return 0;
}

ccsrc/Protocols/Security/hmac.cc

deleted100644 → 0
+0 −54
Original line number Diff line number Diff line
/*!
 * \file      hmac.cc
 * \brief     Source file for HMAC helper methods.
 * \author    ETSI STF525
 * \copyright ETSI Copyright Notification
 *            No part may be reproduced except as authorized by written permission.
 *            The copyright and the foregoing restriction extend to reproduction in all media.
 *            All rights reserved.
 * \version   0.1
 */
#include <TTCN3.hh>

#include "hmac.hh"

#include "loggers.hh"

int hmac::generate(const OCTETSTRING p_buffer, const OCTETSTRING p_secret_key, OCTETSTRING &p_hmac) {
  // Sanity check
  if (p_buffer.lengthof() == 0) {
    return -1;
  }

  return generate(static_cast<const unsigned char *>(p_buffer), p_buffer.lengthof(), static_cast<const unsigned char *>(p_secret_key), p_secret_key.lengthof(),
                  p_hmac);
}

int hmac::generate(const unsigned char *p_buffer, const size_t p_buffer_length, const unsigned char *p_secret_key, const size_t p_secret_key_length,
                   OCTETSTRING &p_hmac) {
  // Sanity check
  if ((p_buffer == nullptr) || (p_secret_key == nullptr)) {
    return -1;
  }
  ::HMAC_CTX_reset(_ctx);

  p_hmac = int2oct(0, EVP_MAX_MD_SIZE);
  if (_hash_algorithms == hash_algorithms::sha_256) {
    ::HMAC_Init_ex(_ctx, (const void *)p_secret_key, (long unsigned int)p_secret_key_length, EVP_sha256(), NULL);
  } else if (_hash_algorithms == hash_algorithms::sha_384) {
    ::HMAC_Init_ex(_ctx, (const void *)p_secret_key, (long unsigned int)p_secret_key_length, EVP_sha384(), NULL);
  } else { // TODO To be continued
    return -1;
  }
  // Compute the hash value
  ::HMAC_Update(_ctx, p_buffer, p_buffer_length);
  unsigned int length = p_hmac.lengthof();
  ::HMAC_Final(_ctx, (unsigned char *)static_cast<const unsigned char *>(p_hmac), &length);
  loggers::get_instance().log_to_hexa("hmac::generate: ", (unsigned char *)static_cast<const unsigned char *>(p_hmac), length);
  // Resize the hmac
  if (_hash_algorithms == hash_algorithms::sha_256) {
    p_hmac = OCTETSTRING(16, static_cast<const unsigned char *>(p_hmac));
  } // FIXME Check length for the other hash algorithm

  return 0;
}
Loading