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
5#include "ccf/crypto/jwk.h"
6#include "ccf/crypto/pem.h"
8
9#include <cstdint>
10#include <optional>
11#include <string>
12#include <vector>
13
14namespace ccf::crypto
15{
16 class RSAKeyPair : public RSAPublicKey
17 {
18 public:
19 [[nodiscard]] virtual Pem private_key_pem() const = 0;
20 [[nodiscard]] virtual std::vector<uint8_t> private_key_der() const = 0;
22 const std::optional<std::string>& kid = std::nullopt) const = 0;
23
24 [[nodiscard]] virtual std::vector<uint8_t> sign(
25 std::span<const uint8_t> d,
26 MDType md_type = MDType::NONE,
27 size_t salt_length = 0) const = 0;
28
37 [[nodiscard]] virtual std::vector<uint8_t> rsa_oaep_unwrap(
38 const std::vector<uint8_t>& input,
39 const std::optional<std::vector<std::uint8_t>>& label = std::nullopt) = 0;
40 };
41
42 using RSAKeyPairPtr = std::shared_ptr<RSAKeyPair>;
43
44 static constexpr size_t default_rsa_public_key_size = 2048;
45 static constexpr size_t default_rsa_public_exponent = 65537;
46
51 size_t public_key_size = default_rsa_public_key_size,
52 size_t public_exponent = default_rsa_public_exponent);
53
58
64}
Definition pem.h:18
Definition rsa_key_pair.h:17
virtual std::vector< uint8_t > sign(std::span< const uint8_t > d, MDType md_type=MDType::NONE, size_t salt_length=0) const =0
virtual Pem private_key_pem() const =0
virtual JsonWebKeyRSAPrivate private_key_jwk(const std::optional< std::string > &kid=std::nullopt) const =0
virtual std::vector< uint8_t > private_key_der() const =0
virtual std::vector< uint8_t > rsa_oaep_unwrap(const std::vector< uint8_t > &input, const std::optional< std::vector< std::uint8_t > > &label=std::nullopt)=0
Definition rsa_public_key.h:22
Definition base64.h:10
RSAKeyPairPtr make_rsa_key_pair(size_t public_key_size=default_rsa_public_key_size, size_t public_exponent=default_rsa_public_exponent)
Definition rsa_key_pair.cpp:234
MDType
Definition md_type.h:10
std::shared_ptr< RSAKeyPair > RSAKeyPairPtr
Definition rsa_key_pair.h:42