CCF
Loading...
Searching...
No Matches
eddsa_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/curve.h"
8#include "ccf/crypto/jwk.h"
10#include "ccf/crypto/pem.h"
12#include "ccf/crypto/san.h"
13
14#include <cstdint>
15#include <optional>
16#include <string>
17#include <vector>
18
19namespace ccf::crypto
20{
22 {
23 public:
24 virtual ~EdDSAKeyPair() = default;
25
29 virtual Pem private_key_pem() const = 0;
30
34 virtual Pem public_key_pem() const = 0;
35
36 virtual std::vector<uint8_t> sign(std::span<const uint8_t> d) const = 0;
37
38 virtual bool verify(
39 const uint8_t* contents,
40 size_t contents_size,
41 const uint8_t* signature,
42 size_t signature_size) = 0;
43
44 virtual bool verify(
45 const std::vector<uint8_t>& contents,
46 const std::vector<uint8_t>& signature)
47 {
48 return verify(
49 contents.data(), contents.size(), signature.data(), signature.size());
50 }
51
52 virtual CurveID get_curve_id() const = 0;
53
55 const std::optional<std::string>& kid = std::nullopt) const = 0;
56 };
57
58 using EdDSAPublicKeyPtr = std::shared_ptr<EdDSAPublicKey>;
59 using EdDSAKeyPairPtr = std::shared_ptr<EdDSAKeyPair>;
60
67
75
85
92
100}
Definition eddsa_key_pair.h:22
virtual Pem private_key_pem() const =0
virtual CurveID get_curve_id() const =0
virtual Pem public_key_pem() const =0
virtual bool verify(const uint8_t *contents, size_t contents_size, const uint8_t *signature, size_t signature_size)=0
virtual ~EdDSAKeyPair()=default
virtual bool verify(const std::vector< uint8_t > &contents, const std::vector< uint8_t > &signature)
Definition eddsa_key_pair.h:44
virtual std::vector< uint8_t > sign(std::span< const uint8_t > d) const =0
virtual JsonWebKeyEdDSAPrivate private_key_jwk_eddsa(const std::optional< std::string > &kid=std::nullopt) const =0
Definition pem.h:18
Definition base64.h:10
EdDSAKeyPairPtr make_eddsa_key_pair(CurveID curve_id=CurveID::CURVE25519)
Definition eddsa_key_pair.cpp:30
std::shared_ptr< EdDSAPublicKey > EdDSAPublicKeyPtr
Definition eddsa_key_pair.h:58
std::shared_ptr< EdDSAKeyPair > EdDSAKeyPairPtr
Definition eddsa_key_pair.h:59
CurveID
Definition curve.h:18
@ CURVE25519
The CURVE25519 curve.
EdDSAPublicKeyPtr make_eddsa_public_key(const Pem &pem)
Definition eddsa_key_pair.cpp:20