CCF
Loading...
Searching...
No Matches
ec_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
8
9#include <openssl/err.h>
10#include <openssl/evp.h>
11#include <stdexcept>
12#include <string>
13
14namespace ccf::crypto
15{
17 {
18 protected:
20
21 static std::vector<uint8_t> ec_point_public_from_jwk(
22 const JsonWebKeyECPublic& jwk);
23
24 public:
25 ECPublicKey_OpenSSL(EVP_PKEY* key);
26 ECPublicKey_OpenSSL(const Pem& pem);
28 ECPublicKey_OpenSSL(std::span<const uint8_t> der);
31
32 using ECPublicKey::verify;
33 using ECPublicKey::verify_hash;
34
35 bool verify(
36 const uint8_t* contents,
37 size_t contents_size,
38 const uint8_t* sig,
39 size_t sig_size,
40 MDType md_type,
41 HashBytes& bytes) override;
42
43 bool verify_hash(
44 const uint8_t* hash,
45 size_t hash_size,
46 const uint8_t* sig,
47 size_t sig_size,
48 MDType md_type) override;
49
50 [[nodiscard]] Pem public_key_pem() const override;
51 [[nodiscard]] std::vector<uint8_t> public_key_der() const override;
52 [[nodiscard]] std::vector<uint8_t> public_key_raw() const override;
53
54 [[nodiscard]] CurveID get_curve_id() const override;
55
56 [[nodiscard]] int get_openssl_group_id() const;
57 static int get_openssl_group_id(CurveID gid);
58
59 [[nodiscard]] Coordinates coordinates() const override;
60
62 const std::optional<std::string>& kid = std::nullopt) const override;
63 };
64
66 const std::vector<uint8_t>& raw, int nid);
67}
Definition ec_public_key.h:17
Coordinates coordinates() const override
Definition ec_public_key.cpp:298
Pem public_key_pem() const override
Definition ec_public_key.cpp:224
CurveID get_curve_id() const override
Definition ec_public_key.cpp:121
std::vector< uint8_t > public_key_der() const override
Definition ec_public_key.cpp:235
std::vector< uint8_t > public_key_raw() const override
Definition ec_public_key.cpp:246
bool verify(const uint8_t *contents, size_t contents_size, const uint8_t *sig, size_t sig_size, MDType md_type, HashBytes &bytes) override
Definition ec_public_key.cpp:174
bool verify_hash(const uint8_t *hash, size_t hash_size, const uint8_t *sig, size_t sig_size, MDType md_type) override
Definition ec_public_key.cpp:191
static std::vector< uint8_t > ec_point_public_from_jwk(const JsonWebKeyECPublic &jwk)
Definition ec_public_key.cpp:82
JsonWebKeyECPublic public_key_jwk(const std::optional< std::string > &kid=std::nullopt) const override
Definition ec_public_key.cpp:318
ECPublicKey_OpenSSL(ECPublicKey_OpenSSL &&key)=default
int get_openssl_group_id() const
Definition ec_public_key.cpp:136
Definition ec_public_key.h:19
Definition pem.h:18
Definition public_key.h:14
EVP_PKEY * key
Definition public_key.h:19
Definition base64.h:10
CurveID
Definition curve.h:18
MDType
Definition md_type.h:10
std::vector< uint8_t > HashBytes
Definition hash_bytes.h:10
Unique_PKEY key_from_raw_ec_point(const std::vector< uint8_t > &raw, int nid)
Definition ec_public_key.cpp:264
Definition ec_public_key.h:144
Definition openssl_wrappers.h:194