#pragma once #include #include #include #include #include "security_db_record.hh" class OCTETSTRING; class CHARSTRING; /*! * \class security_db * \brief This class provides security record description for security database */ class security_db { // TODO Enforce with const security_db_record, and const std::string std::map > _certificates; //! List of the certificates indexed by the certficate identifier std::map, std::string> _hashed_id8s; //! List of the certificates indexed by the HashedId8 std::map, std::string> _issuers; //! List of the certificates indexed by the IssuerIdentifier public: /*! \publicsection */ /*! * \brief Default ctor */ security_db(); /*! * \brief Ctor with full path to the certificates storage */ security_db(const std::string& p_db_path); /*! * \brief Default private dtor */ ~security_db(); int get_certificate_id(const OCTETSTRING& p_hashed_id8, std::string& p_certifcate_id) const; int get_certificate_id_by_issuer(const OCTETSTRING& p_issuer, std::string& p_certifcate_id) const; int get_certificate(const std::string& p_certifcate_id, OCTETSTRING& p_certificate) const; int get_certificate(const std::string& p_certifcate_id, IEEE1609dot2::CertificateBase& p_certificate) const; int get_issuer(const std::string& p_certifcate_id, OCTETSTRING& p_hashed_id_issuer) const; int get_hashed_id(const std::string& p_certifcate_id, OCTETSTRING& p_hashed_id) const; int get_private_key(const std::string& p_certifcate_id, OCTETSTRING& p_private_key) const; int get_public_keys(const std::string& p_certifcate_id, OCTETSTRING& p_public_key_x, OCTETSTRING& p_public_key_y) const; int 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); void dump() const; int clear(); private: int load_from_files(const std::string& p_db_path); }; // End of class security_db