29 const std::vector<uint8_t>& contents,
30 const std::vector<uint8_t>& signature) = 0;
33 const uint8_t* contents,
35 const uint8_t* signature,
36 size_t signature_size) = 0;
39 const uint8_t* hash,
size_t hash_size)
const = 0;
45 uint8_t* sig)
const = 0;
47 virtual std::vector<uint8_t>
sign(
48 std::span<const uint8_t> d,
MDType md_type = {})
const = 0;
51 const std::string& subject_name,
52 const std::vector<SubjectAltName>& subject_alt_names,
53 const std::optional<Pem>& public_key = std::nullopt)
const = 0;
61 const std::string& subject_name,
62 const std::vector<SubjectAltName>& subject_alt_names,
63 const std::optional<Pem>& public_key = std::nullopt)
const = 0;
83 virtual Pem sign_csr_impl(
84 const std::optional<Pem>& issuer_cert,
85 const Pem& signing_request,
86 const std::string& valid_from,
87 const std::string& valid_to,
93 const Pem& issuer_cert,
94 const Pem& signing_request,
95 const std::string& valid_from,
96 const std::string& valid_to,
100 return sign_csr_impl(
101 issuer_cert, signing_request, valid_from, valid_to, ca, signer);
105 const std::string& name,
106 const std::string& valid_from,
107 const std::string& valid_to,
108 const std::optional<SubjectAltName> subject_alt_name = std::nullopt,
109 bool ca =
true)
const
111 std::vector<SubjectAltName> sans;
112 if (subject_alt_name.has_value())
114 sans.push_back(subject_alt_name.value());
117 return sign_csr_impl(std::nullopt, csr, valid_from, valid_to, ca);
121 const std::string& subject_name,
122 const std::string& valid_from,
123 const std::string& valid_to,
124 const std::vector<SubjectAltName>& subject_alt_names,
125 bool ca =
true)
const
127 auto csr =
create_csr(subject_name, subject_alt_names);
128 return sign_csr_impl(std::nullopt, csr, valid_from, valid_to, ca);
141 const std::optional<std::string>& kid = std::nullopt)
const = 0;
Signer
Definition key_pair.h:77
Pem self_sign(const std::string &name, const std::string &valid_from, const std::string &valid_to, const std::optional< SubjectAltName > subject_alt_name=std::nullopt, bool ca=true) const
Definition key_pair.h:104
virtual PublicKey::Coordinates coordinates() const =0
Pem self_sign(const std::string &subject_name, const std::string &valid_from, const std::string &valid_to, const std::vector< SubjectAltName > &subject_alt_names, bool ca=true) const
Definition key_pair.h:120
virtual std::vector< uint8_t > public_key_raw() const =0
virtual std::vector< uint8_t > derive_shared_secret(const PublicKey &peer_key)=0
virtual Pem create_csr(const std::string &subject_name, const std::vector< SubjectAltName > &subject_alt_names, const std::optional< Pem > &public_key=std::nullopt) const =0
virtual JsonWebKeyECPrivate private_key_jwk(const std::optional< std::string > &kid=std::nullopt) const =0
virtual int sign_hash(const uint8_t *hash, size_t hash_size, size_t *sig_size, uint8_t *sig) const =0
virtual CurveID get_curve_id() const =0
virtual std::vector< uint8_t > sign(std::span< const uint8_t > d, MDType md_type={}) const =0
virtual bool verify(const std::vector< uint8_t > &contents, const std::vector< uint8_t > &signature)=0
virtual std::vector< uint8_t > private_key_der() const =0
virtual std::vector< uint8_t > public_key_der() const =0
virtual std::vector< uint8_t > create_csr_der(const std::string &subject_name, const std::vector< SubjectAltName > &subject_alt_names, const std::optional< Pem > &public_key=std::nullopt) const =0
virtual Pem public_key_pem() const =0
virtual Pem sign_csr(const Pem &issuer_cert, const Pem &signing_request, const std::string &valid_from, const std::string &valid_to, bool ca=false, Signer signer=Signer::SUBJECT) const
Definition key_pair.h:92
virtual Pem private_key_pem() const =0
virtual ~KeyPair()=default
Pem create_csr(const std::string &subject_name) const
Definition key_pair.h:55
virtual bool verify(const uint8_t *contents, size_t contents_size, const uint8_t *signature, size_t signature_size)=0
virtual std::vector< uint8_t > sign_hash(const uint8_t *hash, size_t hash_size) const =0
Definition public_key.h:19
std::shared_ptr< KeyPair > KeyPairPtr
Definition key_pair.h:145
std::shared_ptr< PublicKey > PublicKeyPtr
Definition key_pair.h:144
MDType
Definition md_type.h:10
PublicKeyPtr make_public_key(const Pem &pem)
Definition key_pair.cpp:20
CurveID
Definition curve.h:18
KeyPairPtr make_key_pair(CurveID curve_id=service_identity_curve_choice)
Definition key_pair.cpp:35