CCF
Loading...
Searching...
No Matches
rsa_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
8
9#include <optional>
10#include <string>
11#include <vector>
12
13namespace ccf::crypto
14{
16 {
17 public:
18 RSAKeyPair_OpenSSL(size_t public_key_size, size_t public_exponent);
19 RSAKeyPair_OpenSSL(const Pem& pem);
21 ~RSAKeyPair_OpenSSL() override = default;
22
23 RSAKeyPair_OpenSSL(EVP_PKEY* k);
24
25 [[nodiscard]] Pem private_key_pem() const override;
26 [[nodiscard]] std::vector<uint8_t> private_key_der() const override;
28 const std::optional<std::string>& kid = std::nullopt) const override;
29
30 [[nodiscard]] std::vector<uint8_t> sign(
31 std::span<const uint8_t> d,
32 MDType md_type = MDType::NONE,
33 size_t salt_length = 0) const override;
34
35 std::vector<uint8_t> rsa_oaep_unwrap(
36 const std::vector<uint8_t>& input,
37 const std::optional<std::vector<std::uint8_t>>& label =
38 std::nullopt) override;
39
40 [[nodiscard]] size_t key_size() const override
41 {
43 }
44
45 std::vector<uint8_t> rsa_oaep_wrap(
46 const uint8_t* input,
47 size_t input_size,
48 const uint8_t* label = nullptr,
49 size_t label_size = 0) override
50 {
52 input, input_size, label, label_size);
53 }
54
55 std::vector<uint8_t> rsa_oaep_wrap(
56 const std::vector<uint8_t>& input,
57 const std::optional<std::vector<std::uint8_t>>& label =
58 std::nullopt) override
59 {
60 return RSAPublicKey_OpenSSL::rsa_oaep_wrap(input, label);
61 }
62
63 [[nodiscard]] Pem public_key_pem() const override
64 {
66 }
67 [[nodiscard]] std::vector<uint8_t> public_key_der() const override
68 {
70 }
71
73 const std::optional<std::string>& kid = std::nullopt) const override
74 {
76 }
77
78 bool verify(
79 const uint8_t* contents,
80 size_t contents_size,
81 const uint8_t* signature,
82 size_t signature_size,
83 MDType md_type,
84 RSAPadding padding,
85 size_t salt_length) override
86 {
88 contents,
89 contents_size,
90 signature,
91 signature_size,
92 md_type,
93 padding,
94 salt_length);
95 }
96
98 const uint8_t* hash,
99 size_t hash_size,
100 const uint8_t* signature,
101 size_t signature_size,
102 MDType md_type,
103 RSAPadding padding,
104 size_t salt_length) override
105 {
107 hash,
108 hash_size,
109 signature,
110 signature_size,
111 md_type,
112 padding,
113 salt_length);
114 }
115 };
116}
Definition pem.h:18
Definition rsa_key_pair.h:16
Pem private_key_pem() const override
Definition rsa_key_pair.cpp:164
bool verify_hash(const uint8_t *hash, size_t hash_size, const uint8_t *signature, size_t signature_size, MDType md_type, RSAPadding padding, size_t salt_length) override
Definition rsa_key_pair.h:97
~RSAKeyPair_OpenSSL() override=default
bool verify(const uint8_t *contents, size_t contents_size, const uint8_t *signature, size_t signature_size, MDType md_type, RSAPadding padding, size_t salt_length) override
Definition rsa_key_pair.h:78
std::vector< uint8_t > rsa_oaep_wrap(const uint8_t *input, size_t input_size, const uint8_t *label=nullptr, size_t label_size=0) override
Definition rsa_key_pair.h:45
JsonWebKeyRSAPublic public_key_jwk(const std::optional< std::string > &kid=std::nullopt) const override
Definition rsa_key_pair.h:72
std::vector< uint8_t > sign(std::span< const uint8_t > d, MDType md_type=MDType::NONE, size_t salt_length=0) const override
Definition rsa_key_pair.cpp:216
JsonWebKeyRSAPrivate private_key_jwk(const std::optional< std::string > &kid=std::nullopt) const override
Definition rsa_key_pair.cpp:187
std::vector< uint8_t > rsa_oaep_wrap(const std::vector< uint8_t > &input, const std::optional< std::vector< std::uint8_t > > &label=std::nullopt) override
Definition rsa_key_pair.h:55
Pem public_key_pem() const override
Definition rsa_key_pair.h:63
std::vector< uint8_t > public_key_der() const override
Definition rsa_key_pair.h:67
std::vector< uint8_t > rsa_oaep_unwrap(const std::vector< uint8_t > &input, const std::optional< std::vector< std::uint8_t > > &label=std::nullopt) override
Definition rsa_key_pair.cpp:119
size_t key_size() const override
Definition rsa_key_pair.h:40
std::vector< uint8_t > private_key_der() const override
Definition rsa_key_pair.cpp:176
Definition rsa_key_pair.h:17
Definition rsa_public_key.h:17
std::vector< uint8_t > rsa_oaep_wrap(const uint8_t *input, size_t input_size, const uint8_t *label=nullptr, size_t label_size=0) override
Definition rsa_public_key.cpp:118
JsonWebKeyRSAPublic public_key_jwk(const std::optional< std::string > &kid=std::nullopt) const override
Definition rsa_public_key.cpp:250
bool verify_hash(const uint8_t *hash, size_t hash_size, const uint8_t *signature, size_t signature_size, MDType md_type, RSAPadding padding, size_t salt_length) override
Definition rsa_public_key.cpp:214
size_t key_size() const override
Definition rsa_public_key.cpp:113
bool verify(const uint8_t *contents, size_t contents_size, const uint8_t *signature, size_t signature_size, MDType md_type, RSAPadding padding, size_t salt_length) override
Definition rsa_public_key.cpp:194
Pem public_key_pem() const override
Definition rsa_public_key.cpp:172
std::vector< uint8_t > public_key_der() const override
Definition rsa_public_key.cpp:183
Definition base64.h:10
MDType
Definition md_type.h:10
RSAPadding
Definition rsa_public_key.h:16