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#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
20 std::pair<std::vector<uint8_t>, std::vector<uint8_t>>
21 rsa_public_raw_from_jwk(const JsonWebKeyRSAPublic& jwk);
22#else
24#endif
25
26 public:
28 RSAPublicKey_OpenSSL(EVP_PKEY* c);
29 RSAPublicKey_OpenSSL(const Pem& pem);
30 RSAPublicKey_OpenSSL(const std::vector<uint8_t>& der);
32 virtual ~RSAPublicKey_OpenSSL() = default;
33
34 virtual size_t key_size() const override;
35
36 virtual std::vector<uint8_t> rsa_oaep_wrap(
37 const uint8_t* input,
38 size_t input_size,
39 const uint8_t* label = nullptr,
40 size_t label_size = 0) override;
41
42 virtual std::vector<uint8_t> rsa_oaep_wrap(
43 const std::vector<uint8_t>& input,
44 const std::optional<std::vector<std::uint8_t>>& label =
45 std::nullopt) override;
46
47 virtual Pem public_key_pem() const override;
48 virtual std::vector<uint8_t> public_key_der() const override;
49
50 virtual bool verify(
51 const uint8_t* contents,
52 size_t contents_size,
53 const uint8_t* signature,
54 size_t signature_size,
55 MDType md_type = MDType::NONE,
56 size_t salt_length = 0) override;
57
58 virtual Components components() const override;
59
60 static std::vector<uint8_t> bn_bytes(const BIGNUM* bn);
61
62#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
63 OpenSSL::Unique_BIGNUM get_bn_param(const char* key_name) const;
64#endif
65
67 const std::optional<std::string>& kid = std::nullopt) const override;
68 };
69}
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:130
virtual Components components() const override
Definition rsa_public_key.cpp:229
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:193
OpenSSL::Unique_RSA rsa_public_from_jwk(const JsonWebKeyRSAPublic &jwk)
Definition rsa_public_key.cpp:90
virtual size_t key_size() const override
Definition rsa_public_key.cpp:125
virtual Pem public_key_pem() const override
Definition rsa_public_key.cpp:183
virtual std::vector< uint8_t > public_key_der() const override
Definition rsa_public_key.cpp:188
static std::vector< uint8_t > bn_bytes(const BIGNUM *bn)
Definition rsa_public_key.cpp:211
virtual JsonWebKeyRSAPublic public_key_jwk_rsa(const std::optional< std::string > &kid=std::nullopt) const override
Definition rsa_public_key.cpp:248
virtual ~RSAPublicKey_OpenSSL()=default
Definition rsa_public_key.h:16
Definition base64.h:9
MDType
Definition md_type.h:10
Definition openssl_wrappers.h:350
Definition openssl_wrappers.h:415
Definition rsa_public_key.h:88