Loading ccsrc/Externals/LibItsSecurity_externals.cc +14 −0 Original line number Diff line number Diff line Loading @@ -366,6 +366,8 @@ namespace LibItsSecurity__Functions } BOOLEAN fx__store__certificate(const CHARSTRING& p__cert__id, const OCTETSTRING& p__cert, const OCTETSTRING& p__private__key, const OCTETSTRING& p__public__key__x, const OCTETSTRING& p__public__key__y, const OCTETSTRING& p__hashid8, const OCTETSTRING& p__issuer) { loggers::get_instance().log(">>> fx__store__certificate: '%s'", static_cast<const char*>(p__cert__id)); if (security_services::get_instance().store_certificate(p__cert__id, p__cert, p__private__key, p__public__key__x, p__public__key__y, p__hashid8, p__issuer) == -1) { return FALSE; } Loading Loading @@ -401,6 +403,18 @@ namespace LibItsSecurity__Functions return TRUE; } 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) { return FALSE; } loggers::get_instance().log_msg("fx__readCertificateFromDigest: ", p__certificateId); return TRUE; } /** * @desc Read the specified certificate digest Loading ccsrc/Protocols/Security/certificates_loader.cc +2 −2 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ int certificates_loader::retrieve_certificates_list(std::set<std::experimental:: } } // End of 'for' statement } // End of 'for' statement loggers::get_instance().log("certificates_loader::retrieve_certificates_list: # of files to cache:", p_files.size()); loggers::get_instance().log("certificates_loader::retrieve_certificates_list: # of files to cache: %d", p_files.size()); if (p_files.size() == 0) { loggers::get_instance().warning("certificates_loader::retrieve_certificates_list: No certificate found"); return -1; Loading Loading @@ -229,7 +229,7 @@ int certificates_loader::build_certificates_cache(std::set<std::experimental::fi key, certificate, // Certificate decoded_certificate, issuer, // Hashed ID fo the issuer, empty for CA issuer, // Hashed ID fo the issuer hashed_id, // Hashed ID private_key, // Private key public_key_x, // Public key X Loading ccsrc/Protocols/Security/security_cache.cc +9 −1 Original line number Diff line number Diff line Loading @@ -158,7 +158,7 @@ int security_cache::store_certificate(const CHARSTRING& p_cert_id, const OCTETST key, // Certificate id cert, // Certificate decoded_certificate, issuer, // Hashed ID fo the issuer, empty for CA issuer, // Hashed ID fo the issuer hashed_id8, // Hashed ID private_key, // Private key public_key_x, // Public key X Loading @@ -175,8 +175,13 @@ int security_cache::store_certificate(const CHARSTRING& p_cert_id, const OCTETST if (h != _hashed_id8s.cend()) { _hashed_id8s.erase(h); } h = _issuers.find(issuer); if (h!= _issuers.cend()) { _issuers.erase(h); } _certificates.insert(std::pair<std::string, std::unique_ptr<security_db_record> >(key, std::unique_ptr<security_db_record>(p))); _hashed_id8s.insert(std::pair<std::vector<unsigned char>, std::string&>(hashed_id8, key)); _issuers.insert(std::pair<std::vector<unsigned char>, std::string&>(issuer, key)); dump(); return 0; Loading @@ -198,4 +203,7 @@ void security_cache::dump() const { for (std::map<std::vector<unsigned char>, std::string>::const_iterator it = _hashed_id8s.cbegin(); it != _hashed_id8s.cend(); ++it) { loggers::get_instance().log("security_cache::dump: Hashedid8 idx = %s", it->second.c_str()); } // End of 'for' statement for (std::map<std::vector<unsigned char>, std::string>::const_iterator it = _issuers.cbegin(); it != _issuers.cend(); ++it) { loggers::get_instance().log("security_cache::dump: Issuer idx = %s", it->second.c_str()); } // End of 'for' statement } // End of method dump ccsrc/Protocols/Security/security_services.cc +9 −0 Original line number Diff line number Diff line Loading @@ -599,6 +599,15 @@ int security_services::read_certificate_digest(const CHARSTRING& p_certificate_i return _security_db.get()->get_hashed_id(std::string(static_cast<const char*>(p_certificate_id)), p_digest); } int security_services::read_certificate_from_digest(const OCTETSTRING& p_digest, CHARSTRING& p_certificate_id) const { std::string certificate_id; if (_security_db.get()->get_certificate_id_by_issuer(p_digest, certificate_id) != -1) { p_certificate_id = CHARSTRING(certificate_id.c_str()); return 0; } return -1; } int security_services::read_private_key(const CHARSTRING& p_certificate_id, OCTETSTRING& p_private_key) const { return _security_db.get()->get_private_key(std::string(static_cast<const char*>(p_certificate_id)), p_private_key); } ccsrc/Protocols/Security/security_services.hh +1 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,7 @@ public: /*! \publicsection */ int read_certificate(const CHARSTRING& p_certificate_id, OCTETSTRING& p_certificate) const; int read_certificate_digest(const CHARSTRING& p_certificate_id, OCTETSTRING& p_digest) const; int read_certificate_from_digest(const OCTETSTRING& p_digest, CHARSTRING& p_certificate_id) const; int read_private_key(const CHARSTRING& p_certificate_id, OCTETSTRING& p_private_key) const; private: Loading Loading
ccsrc/Externals/LibItsSecurity_externals.cc +14 −0 Original line number Diff line number Diff line Loading @@ -366,6 +366,8 @@ namespace LibItsSecurity__Functions } BOOLEAN fx__store__certificate(const CHARSTRING& p__cert__id, const OCTETSTRING& p__cert, const OCTETSTRING& p__private__key, const OCTETSTRING& p__public__key__x, const OCTETSTRING& p__public__key__y, const OCTETSTRING& p__hashid8, const OCTETSTRING& p__issuer) { loggers::get_instance().log(">>> fx__store__certificate: '%s'", static_cast<const char*>(p__cert__id)); if (security_services::get_instance().store_certificate(p__cert__id, p__cert, p__private__key, p__public__key__x, p__public__key__y, p__hashid8, p__issuer) == -1) { return FALSE; } Loading Loading @@ -401,6 +403,18 @@ namespace LibItsSecurity__Functions return TRUE; } 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) { return FALSE; } loggers::get_instance().log_msg("fx__readCertificateFromDigest: ", p__certificateId); return TRUE; } /** * @desc Read the specified certificate digest Loading
ccsrc/Protocols/Security/certificates_loader.cc +2 −2 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ int certificates_loader::retrieve_certificates_list(std::set<std::experimental:: } } // End of 'for' statement } // End of 'for' statement loggers::get_instance().log("certificates_loader::retrieve_certificates_list: # of files to cache:", p_files.size()); loggers::get_instance().log("certificates_loader::retrieve_certificates_list: # of files to cache: %d", p_files.size()); if (p_files.size() == 0) { loggers::get_instance().warning("certificates_loader::retrieve_certificates_list: No certificate found"); return -1; Loading Loading @@ -229,7 +229,7 @@ int certificates_loader::build_certificates_cache(std::set<std::experimental::fi key, certificate, // Certificate decoded_certificate, issuer, // Hashed ID fo the issuer, empty for CA issuer, // Hashed ID fo the issuer hashed_id, // Hashed ID private_key, // Private key public_key_x, // Public key X Loading
ccsrc/Protocols/Security/security_cache.cc +9 −1 Original line number Diff line number Diff line Loading @@ -158,7 +158,7 @@ int security_cache::store_certificate(const CHARSTRING& p_cert_id, const OCTETST key, // Certificate id cert, // Certificate decoded_certificate, issuer, // Hashed ID fo the issuer, empty for CA issuer, // Hashed ID fo the issuer hashed_id8, // Hashed ID private_key, // Private key public_key_x, // Public key X Loading @@ -175,8 +175,13 @@ int security_cache::store_certificate(const CHARSTRING& p_cert_id, const OCTETST if (h != _hashed_id8s.cend()) { _hashed_id8s.erase(h); } h = _issuers.find(issuer); if (h!= _issuers.cend()) { _issuers.erase(h); } _certificates.insert(std::pair<std::string, std::unique_ptr<security_db_record> >(key, std::unique_ptr<security_db_record>(p))); _hashed_id8s.insert(std::pair<std::vector<unsigned char>, std::string&>(hashed_id8, key)); _issuers.insert(std::pair<std::vector<unsigned char>, std::string&>(issuer, key)); dump(); return 0; Loading @@ -198,4 +203,7 @@ void security_cache::dump() const { for (std::map<std::vector<unsigned char>, std::string>::const_iterator it = _hashed_id8s.cbegin(); it != _hashed_id8s.cend(); ++it) { loggers::get_instance().log("security_cache::dump: Hashedid8 idx = %s", it->second.c_str()); } // End of 'for' statement for (std::map<std::vector<unsigned char>, std::string>::const_iterator it = _issuers.cbegin(); it != _issuers.cend(); ++it) { loggers::get_instance().log("security_cache::dump: Issuer idx = %s", it->second.c_str()); } // End of 'for' statement } // End of method dump
ccsrc/Protocols/Security/security_services.cc +9 −0 Original line number Diff line number Diff line Loading @@ -599,6 +599,15 @@ int security_services::read_certificate_digest(const CHARSTRING& p_certificate_i return _security_db.get()->get_hashed_id(std::string(static_cast<const char*>(p_certificate_id)), p_digest); } int security_services::read_certificate_from_digest(const OCTETSTRING& p_digest, CHARSTRING& p_certificate_id) const { std::string certificate_id; if (_security_db.get()->get_certificate_id_by_issuer(p_digest, certificate_id) != -1) { p_certificate_id = CHARSTRING(certificate_id.c_str()); return 0; } return -1; } int security_services::read_private_key(const CHARSTRING& p_certificate_id, OCTETSTRING& p_private_key) const { return _security_db.get()->get_private_key(std::string(static_cast<const char*>(p_certificate_id)), p_private_key); }
ccsrc/Protocols/Security/security_services.hh +1 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,7 @@ public: /*! \publicsection */ int read_certificate(const CHARSTRING& p_certificate_id, OCTETSTRING& p_certificate) const; int read_certificate_digest(const CHARSTRING& p_certificate_id, OCTETSTRING& p_digest) const; int read_certificate_from_digest(const OCTETSTRING& p_digest, CHARSTRING& p_certificate_id) const; int read_private_key(const CHARSTRING& p_certificate_id, OCTETSTRING& p_private_key) const; private: Loading