CCF
Loading...
Searching...
No Matches
eddsa_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 EdDSAPublicKey() = default;
19 virtual ~EdDSAPublicKey() = default;
20
24 EdDSAPublicKey(const Pem& pem);
25
26 virtual Pem public_key_pem() const = 0;
27
37 virtual bool verify(
38 const std::vector<uint8_t>& contents,
39 const std::vector<uint8_t>& signature)
40 {
41 return verify(
42 contents.data(), contents.size(), signature.data(), signature.size());
43 }
44
45 virtual bool verify(
46 const uint8_t* contents,
47 size_t contents_size,
48 const uint8_t* signature,
49 size_t signature_size) = 0;
50
51 virtual CurveID get_curve_id() const = 0;
52
54 const std::optional<std::string>& kid = std::nullopt) const = 0;
55 };
56}
Definition eddsa_public_key.h:16
virtual CurveID get_curve_id() const =0
virtual bool verify(const std::vector< uint8_t > &contents, const std::vector< uint8_t > &signature)
Definition eddsa_public_key.h:37
virtual ~EdDSAPublicKey()=default
virtual bool verify(const uint8_t *contents, size_t contents_size, const uint8_t *signature, size_t signature_size)=0
virtual JsonWebKeyEdDSAPublic public_key_jwk_eddsa(const std::optional< std::string > &kid=std::nullopt) const =0
virtual Pem public_key_pem() const =0
EdDSAPublicKey(const Pem &pem)
Definition pem.h:18
Definition base64.h:10
CurveID
Definition curve.h:18