Loading Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading TS.ITS.tpd +4 −4 Original line number Diff line number Diff line Loading @@ -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"/> Loading Loading @@ -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"/> Loading ccsrc/Externals/LibItsSecurity_externals.cc +13 −13 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ #include "security_ecc.hh" #include "security_services.hh" #include "security_services_its.hh" #include "geospacial.hh" Loading @@ -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); Loading Loading @@ -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; } Loading @@ -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)); } Loading @@ -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; } Loading @@ -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); Loading @@ -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); Loading @@ -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; } Loading @@ -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; } Loading @@ -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; } Loading @@ -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; } Loading @@ -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; } Loading ccsrc/Protocols/GeoNetworking/geonetworking_layer.cc +5 −5 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ #include "loggers.hh" #include "security_services.hh" #include "security_services_its.hh" #include "base_time.hh" Loading Loading @@ -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) { Loading Loading @@ -970,7 +970,7 @@ int geonetworking_layer::build_secured_pdu(OCTETSTRING &data, params_its ¶ms 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; } Loading Loading @@ -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; } Loading ccsrc/Protocols/Security/hmac.ccdeleted 100644 → 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
Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
TS.ITS.tpd +4 −4 Original line number Diff line number Diff line Loading @@ -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"/> Loading Loading @@ -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"/> Loading
ccsrc/Externals/LibItsSecurity_externals.cc +13 −13 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ #include "security_ecc.hh" #include "security_services.hh" #include "security_services_its.hh" #include "geospacial.hh" Loading @@ -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); Loading Loading @@ -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; } Loading @@ -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)); } Loading @@ -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; } Loading @@ -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); Loading @@ -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); Loading @@ -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; } Loading @@ -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; } Loading @@ -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; } Loading @@ -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; } Loading @@ -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; } Loading
ccsrc/Protocols/GeoNetworking/geonetworking_layer.cc +5 −5 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ #include "loggers.hh" #include "security_services.hh" #include "security_services_its.hh" #include "base_time.hh" Loading Loading @@ -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) { Loading Loading @@ -970,7 +970,7 @@ int geonetworking_layer::build_secured_pdu(OCTETSTRING &data, params_its ¶ms 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; } Loading Loading @@ -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; } Loading
ccsrc/Protocols/Security/hmac.ccdeleted 100644 → 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; }