CCF
Loading...
Searching...
No Matches
rsa_public_key.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 <string>
12#include <vector>
13
14namespace ccf::crypto
15{
17 {
18 protected:
20
21 public:
22 RSAPublicKey_OpenSSL(EVP_PKEY* key);
23 RSAPublicKey_OpenSSL(const Pem& pem);
25 RSAPublicKey_OpenSSL(std::span<const uint8_t> der);
27
29
30 [[nodiscard]] size_t key_size() const override;
31
32 std::vector<uint8_t> rsa_oaep_wrap(
33 const uint8_t* input,
34 size_t input_size,
35 const uint8_t* label = nullptr,
36 size_t label_size = 0) override;
37
38 std::vector<uint8_t> rsa_oaep_wrap(
39 const std::vector<uint8_t>& input,
40 const std::optional<std::vector<std::uint8_t>>& label =
41 std::nullopt) override;
42
43 [[nodiscard]] Pem public_key_pem() const override;
44 [[nodiscard]] std::vector<uint8_t> public_key_der() const override;
45
47 const std::optional<std::string>& kid = std::nullopt) const override;
48
49 bool verify(
50 const uint8_t* contents,
51 size_t contents_size,
52 const uint8_t* signature,
53 size_t signature_size,
54 MDType md_type,
55 RSAPadding padding,
56 size_t salt_length) override;
57
58 bool verify_hash(
59 const uint8_t* hash,
60 size_t hash_size,
61 const uint8_t* signature,
62 size_t signature_size,
63 MDType md_type,
64 RSAPadding padding,
65 size_t salt_length) override;
66
67 OpenSSL::Unique_BIGNUM get_bn_param(const char* key_name) const;
68 };
69
70 std::vector<uint8_t> bn_to_bytes(const BIGNUM* bn);
71
72 std::pair<std::vector<uint8_t>, std::vector<uint8_t>> rsa_public_raw_from_jwk(
73 const JsonWebKeyRSAPublic& jwk);
74}
Definition pem.h:18
Definition public_key.h:14
EVP_PKEY * key
Definition public_key.h:19
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
OpenSSL::Unique_BIGNUM get_bn_param(const char *key_name) const
Definition rsa_public_key.cpp:241
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
RSAPublicKey_OpenSSL(RSAPublicKey_OpenSSL &&key)=default
std::vector< uint8_t > public_key_der() const override
Definition rsa_public_key.cpp:183
Definition rsa_public_key.h:22
Definition base64.h:10
std::vector< uint8_t > bn_to_bytes(const BIGNUM *bn)
Definition rsa_public_key.cpp:276
MDType
Definition md_type.h:10
std::pair< std::vector< uint8_t >, std::vector< uint8_t > > rsa_public_raw_from_jwk(const JsonWebKeyRSAPublic &jwk)
Definition rsa_public_key.cpp:263
RSAPadding
Definition rsa_public_key.h:16
Definition openssl_wrappers.h:342