security_db.hh 1.85 KB
Newer Older
garciay's avatar
garciay committed
#pragma once

#include <string>
#include <memory>
#include <vector>
garciay's avatar
garciay committed
#include <map>

#include "security_db_record.hh"

class OCTETSTRING;
garciay's avatar
garciay committed
class CHARSTRING;
garciay's avatar
garciay committed

/*!
 * \class security_db
 * \brief This class provides security record description for security database
 */
class security_db {
  std::map<const std::string, std::unique_ptr<security_db_record> > _certificates; //! List of the certificates indexed by the certficate identifier
  std::map<const std::vector<unsigned char>, const std::string&> _hashed_id8s; //! List of the certificates indexed by the HashedId8
garciay's avatar
garciay committed
  
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;
garciay's avatar
garciay committed
  int get_certificate(const std::string& p_certifcate_id, OCTETSTRING& p_certificate) const;
  int get_hashed_id_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;
garciay's avatar
garciay committed

  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);
  
garciay's avatar
garciay committed
  void dump() const;
garciay's avatar
garciay committed
  int clear();
garciay's avatar
garciay committed

private:
  int load_from_files(const std::string& p_db_path);
  int simulate_certificates();
}; // End of class security_db