Commit 7e670cc1 authored by garciay's avatar garciay
Browse files

STF538: Certificate generation script

parent 137fb30c
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -31,14 +31,14 @@ public: /*! \publicsection */
   */
  virtual ~security_cache();

  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 get_certificate_id(const OCTETSTRING& p_hashed_id8, std::string& p_certificate_id) const;
  int get_certificate_id_by_issuer(const OCTETSTRING& p_issuer, std::string& p_certificate_id) const;
  int get_certificate(const std::string& p_certificate_id, OCTETSTRING& p_certificate) const;
  int get_certificate(const std::string& p_certificate_id, IEEE1609dot2::CertificateBase& p_certificate) const;
  int get_issuer(const std::string& p_certificate_id, OCTETSTRING& p_hashed_id_issuer) const;
  int get_hashed_id(const std::string& p_certificate_id, OCTETSTRING& p_hashed_id) const;
  int get_private_key(const std::string& p_certificate_id, OCTETSTRING& p_private_key) const;
  int get_public_keys(const std::string& p_certificate_id, OCTETSTRING& p_public_key_x, OCTETSTRING& p_public_key_y) const;

  virtual 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);

+14 −1
Original line number Diff line number Diff line
@@ -26,11 +26,12 @@ security_services::security_services() : _ec_keys(nullptr), _security_cache(new
} // End of ctor

int security_services::setup(Params& p_params) { // FIXME Rename this method
  loggers::get_instance().log("security_services::setup");
  loggers::get_instance().log(">>> security_services::setup");
  p_params.log();

  _security_db.reset(new security_db(p_params[Params::sec_db_path]));
  if (_security_db.get() == nullptr) { // Memory allocation issue
    loggers::get_instance().warning("security_services::setup: _security_db pointer is NULL");
    return -1;
  }
  
@@ -589,3 +590,15 @@ int security_services::verify_sign_ecdsa_nistp256(const OCTETSTRING& p_hash, con
  
  return -1;
}

int security_services::read_certificate(const CHARSTRING& p_certificate_id, OCTETSTRING& p_certificate) const {
  return _security_db.get()->get_certificate(std::string(static_cast<const char*>(p_certificate_id)), p_certificate);
}
  
int security_services::read_certificate_digest(const CHARSTRING& p_certificate_id, OCTETSTRING& p_digest) const {
  return _security_db.get()->get_hashed_id(std::string(static_cast<const char*>(p_certificate_id)), p_digest);
}

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);
}
+5 −1
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@
#include "ec_keys.hh"

class OCTETSTRING;
class CHARSTRING;

namespace IEEE1609dot2BaseTypes {
  class HashAlgorithm;
@@ -88,6 +89,10 @@ public: /*! \publicsection */

  inline void set_position(const int p_latitude, const int p_longitude, const int p_elevation = 0) { _latitude = p_latitude; _longitude = p_longitude; _elevation = p_elevation; };
  
  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_private_key(const CHARSTRING& p_certificate_id, OCTETSTRING& p_private_key) const;
  
private:
  /*!
   * \brief Decrypt (if required), verify and extract the unsecured payload from the IEEE1609dot2::Ieee1609Dot2Content data structure
@@ -105,5 +110,4 @@ private:
  int hash_sha384(const OCTETSTRING& p_data, OCTETSTRING& p_hash_data);
  int sign_ecdsa_nistp256(const OCTETSTRING& p_hash, IEEE1609dot2BaseTypes::Signature& p_signature, Params& p_params);
  int verify_sign_ecdsa_nistp256(const OCTETSTRING& p_hash, const IEEE1609dot2BaseTypes::Signature& p_signature, const std::string& p_certificate_id, Params& p_params);

}; // End of class security_services