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:
19 static std::pair<std::vector<uint8_t>, std::vector<uint8_t>>
21
22 public:
24 RSAPublicKey_OpenSSL(EVP_PKEY* c);
25 RSAPublicKey_OpenSSL(const Pem& pem);
26 RSAPublicKey_OpenSSL(std::span<const uint8_t> der);
28 virtual ~RSAPublicKey_OpenSSL() = default;
29
30 virtual size_t key_size() const override;
31
32 virtual 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 virtual 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 virtual Pem public_key_pem() const override;
44 virtual std::vector<uint8_t> public_key_der() const override;
45
46 virtual bool verify(
47 const uint8_t* contents,
48 size_t contents_size,
49 const uint8_t* signature,
50 size_t signature_size,
51 MDType md_type = MDType::NONE,
52 size_t salt_length = 0) override;
53
54 virtual bool verify_pkcs1(
55 const uint8_t* contents,
56 size_t contents_size,
57 const uint8_t* signature,
58 size_t signature_size,
59 MDType md_type = MDType::NONE) override;
60
61 virtual Components components() const override;
62
63 static std::vector<uint8_t> bn_bytes(const BIGNUM* bn);
64
65 OpenSSL::Unique_BIGNUM get_bn_param(const char* key_name) const;
66
68 const std::optional<std::string>& kid = std::nullopt) const override;
69 };
70}
Definition pem.h:18
Definition public_key.h:16
Definition rsa_public_key.h:17
virtual 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:110
virtual Components components() const override
Definition rsa_public_key.cpp:224
virtual bool verify(const uint8_t *contents, size_t contents_size, const uint8_t *signature, size_t signature_size, MDType md_type=MDType::NONE, size_t salt_length=0) override
Definition rsa_public_key.cpp:174
static std::pair< std::vector< uint8_t >, std::vector< uint8_t > > rsa_public_raw_from_jwk(const JsonWebKeyRSAPublic &jwk)
Definition rsa_public_key.cpp:75
virtual size_t key_size() const override
Definition rsa_public_key.cpp:105
OpenSSL::Unique_BIGNUM get_bn_param(const char *key_name) const
Definition rsa_public_key.cpp:215
virtual Pem public_key_pem() const override
Definition rsa_public_key.cpp:164
virtual bool verify_pkcs1(const uint8_t *contents, size_t contents_size, const uint8_t *signature, size_t signature_size, MDType md_type=MDType::NONE) override
Definition rsa_public_key.cpp:192
virtual std::vector< uint8_t > public_key_der() const override
Definition rsa_public_key.cpp:169
static std::vector< uint8_t > bn_bytes(const BIGNUM *bn)
Definition rsa_public_key.cpp:208
virtual JsonWebKeyRSAPublic public_key_jwk_rsa(const std::optional< std::string > &kid=std::nullopt) const override
Definition rsa_public_key.cpp:232
virtual ~RSAPublicKey_OpenSSL()=default
Definition rsa_public_key.h:16
Definition base64.h:10
MDType
Definition md_type.h:10
Definition openssl_wrappers.h:346
Definition rsa_public_key.h:95