CCF
Loading...
Searching...
No Matches
key_pair.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
9
10#include <optional>
11#include <stdexcept>
12#include <string>
13
14namespace ccf::crypto
15{
17 {
18 public:
19 KeyPair_OpenSSL(CurveID curve_id);
21 KeyPair_OpenSSL(const Pem& pem);
23 virtual ~KeyPair_OpenSSL() = default;
24
25 virtual Pem private_key_pem() const override;
26 virtual Pem public_key_pem() const override;
27 virtual std::vector<uint8_t> public_key_der() const override;
28 virtual std::vector<uint8_t> private_key_der() const override;
29
31
32 virtual bool verify(
33 const std::vector<uint8_t>& contents,
34 const std::vector<uint8_t>& signature) override;
35
36 virtual bool verify(
37 const uint8_t* contents,
38 size_t contents_size,
39 const uint8_t* signature,
40 size_t signature_size) override;
41
42 virtual std::vector<uint8_t> sign(
43 std::span<const uint8_t> d, MDType md_type = {}) const override;
44
45 int sign(
46 std::span<const uint8_t> d,
47 size_t* sig_size,
48 uint8_t* sig,
49 MDType md_type = {}) const;
50
51 std::vector<uint8_t> sign_hash(
52 const uint8_t* hash, size_t hash_size) const override;
53
54 virtual int sign_hash(
55 const uint8_t* hash,
56 size_t hash_size,
57 size_t* sig_size,
58 uint8_t* sig) const override;
59
60 virtual Pem create_csr(
61 const std::string& subject_name,
62 const std::vector<SubjectAltName>& subject_alt_names,
63 const std::optional<Pem>& public_key = std::nullopt) const override;
64
65 virtual std::vector<uint8_t> create_csr_der(
66 const std::string& subject_name,
67 const std::vector<SubjectAltName>& subject_alt_names,
68 const std::optional<Pem>& public_key = std::nullopt) const override;
69
70 virtual Pem sign_csr_impl(
71 const std::optional<Pem>& issuer_cert,
72 const Pem& signing_request,
73 const std::string& valid_from,
74 const std::string& valid_to,
75 bool ca = false,
76 Signer signer = Signer::SUBJECT) const override;
77
78 virtual std::vector<uint8_t> derive_shared_secret(
79 const PublicKey& peer_key) override;
80
81 virtual CurveID get_curve_id() const override;
82
83 virtual std::vector<uint8_t> public_key_raw() const override;
84
85 virtual PublicKey::Coordinates coordinates() const override;
86
87 virtual JsonWebKeyECPrivate private_key_jwk(
88 const std::optional<std::string>& kid = std::nullopt) const override;
89
90 protected:
91 OpenSSL::Unique_X509_REQ create_req(
92 const std::string& subject_name,
93 const std::vector<SubjectAltName>& subject_alt_names,
94 const std::optional<Pem>& public_key) const;
95 };
96}
Definition key_pair.h:17
virtual JsonWebKeyECPrivate private_key_jwk(const std::optional< std::string > &kid=std::nullopt) const override
Definition key_pair.cpp:504
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 override
Definition key_pair.cpp:282
virtual ~KeyPair_OpenSSL()=default
virtual bool verify(const std::vector< uint8_t > &contents, const std::vector< uint8_t > &signature) override
Definition key_pair.cpp:140
virtual Pem sign_csr_impl(const std::optional< 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 override
Definition key_pair.cpp:301
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 override
Definition key_pair.cpp:266
virtual std::vector< uint8_t > private_key_der() const override
Definition key_pair.cpp:129
virtual Pem private_key_pem() const override
Definition key_pair.cpp:106
OpenSSL::Unique_X509_REQ create_req(const std::string &subject_name, const std::vector< SubjectAltName > &subject_alt_names, const std::optional< Pem > &public_key) const
Definition key_pair.cpp:207
virtual PublicKey::Coordinates coordinates() const override
Definition key_pair.cpp:499
std::vector< uint8_t > sign_hash(const uint8_t *hash, size_t hash_size) const override
Definition key_pair.cpp:183
virtual std::vector< uint8_t > derive_shared_secret(const PublicKey &peer_key) override
Definition key_pair.cpp:478
KeyPair_OpenSSL(const KeyPair_OpenSSL &)=delete
virtual std::vector< uint8_t > public_key_raw() const override
Definition key_pair.cpp:473
virtual std::vector< uint8_t > sign(std::span< const uint8_t > d, MDType md_type={}) const override
Definition key_pair.cpp:156
virtual std::vector< uint8_t > public_key_der() const override
Definition key_pair.cpp:124
virtual Pem public_key_pem() const override
Definition key_pair.cpp:119
virtual CurveID get_curve_id() const override
Definition key_pair.cpp:468
Definition key_pair.h:19
Signer
Definition key_pair.h:77
Definition pem.h:18
Definition public_key.h:16
virtual bool verify(const uint8_t *contents, size_t contents_size, const uint8_t *sig, size_t sig_size, MDType md_type, HashBytes &bytes) override
Definition public_key.cpp:169
Definition base64.h:10
MDType
Definition md_type.h:10
CurveID
Definition curve.h:18
std::vector< uint8_t > PublicKey
Definition jwt.h:38