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
5#include "ccf/crypto/jwk.h"
6#include "ccf/crypto/pem.h"
7
8#include <cstdint>
9#include <optional>
10#include <string>
11#include <vector>
12
13namespace ccf::crypto
14{
16 {
17 public:
18 RSAPublicKey() = default;
19 virtual ~RSAPublicKey() = default;
20
24 RSAPublicKey(const Pem& pem);
25
29 RSAPublicKey(const std::vector<uint8_t>& der);
30
35
39 virtual size_t key_size() const = 0;
40
51 virtual std::vector<uint8_t> rsa_oaep_wrap(
52 const uint8_t* input,
53 size_t input_size,
54 const uint8_t* label = nullptr,
55 size_t label_size = 0) = 0;
56
65 virtual std::vector<uint8_t> rsa_oaep_wrap(
66 const std::vector<uint8_t>& input,
67 const std::optional<std::vector<std::uint8_t>>& label = std::nullopt) = 0;
68
72 virtual Pem public_key_pem() const = 0;
73
77 virtual std::vector<uint8_t> public_key_der() const = 0;
78
79 virtual bool verify(
80 const uint8_t* contents,
81 size_t contents_size,
82 const uint8_t* signature,
83 size_t signature_size,
84 MDType md_type = MDType::NONE,
85 size_t salt_legth = 0) = 0;
86
87 virtual bool verify_pkcs1(
88 const uint8_t* contents,
89 size_t contents_size,
90 const uint8_t* signature,
91 size_t signature_size,
92 MDType md_type = MDType::NONE) = 0;
93
95 {
96 std::vector<uint8_t> n;
97 std::vector<uint8_t> e;
98 };
99
100 virtual Components components() const = 0;
101
106 const std::optional<std::string>& kid = std::nullopt) const = 0;
107 };
108}
Definition pem.h:18
Definition rsa_public_key.h:16
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_legth=0)=0
RSAPublicKey(const JsonWebKeyRSAPublic &jwk)
virtual JsonWebKeyRSAPublic public_key_jwk_rsa(const std::optional< std::string > &kid=std::nullopt) const =0
virtual std::vector< uint8_t > rsa_oaep_wrap(const std::vector< uint8_t > &input, const std::optional< std::vector< std::uint8_t > > &label=std::nullopt)=0
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)=0
virtual Components components() const =0
virtual size_t key_size() const =0
virtual std::vector< uint8_t > public_key_der() const =0
virtual ~RSAPublicKey()=default
RSAPublicKey(const Pem &pem)
virtual Pem public_key_pem() const =0
RSAPublicKey(const std::vector< uint8_t > &der)
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)=0
Definition base64.h:10
MDType
Definition md_type.h:10
Definition rsa_public_key.h:95
std::vector< uint8_t > e
Definition rsa_public_key.h:97
std::vector< uint8_t > n
Definition rsa_public_key.h:96