CCF
Loading...
Searching...
No Matches
cose_verifier.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
6#include "cose/cose_rs_ffi.h"
7
8#include <chrono>
9
10namespace ccf::crypto
11{
13 {
14 protected:
15 CoseKey verify_key;
16
17 explicit COSEVerifier_OpenSSL(CoseKey&& key) : verify_key(std::move(key)) {}
18
19 public:
21 bool verify(
22 const std::span<const uint8_t>& envelope,
23 std::span<uint8_t>& authned_content) const override;
24 [[nodiscard]] bool verify_detached(
25 std::span<const uint8_t> envelope,
26 std::span<const uint8_t> payload) const override;
27 [[nodiscard]] bool verify_decomposed(
28 std::span<const uint8_t> phdr,
29 std::span<const uint8_t> payload,
30 std::span<const uint8_t> sig,
31 int64_t alg) const override;
32 };
33
35 {
37
38 public:
40 static std::unique_ptr<COSECertVerifier_OpenSSL> from_any(
41 const std::vector<uint8_t>& certificate);
43 static std::unique_ptr<COSECertVerifier_OpenSSL> from_pem(const Pem& pem);
45 static std::unique_ptr<COSECertVerifier_OpenSSL> from_der(
46 const std::vector<uint8_t>& der);
47 };
48
50 {
51 public:
52 COSEKeyVerifier_OpenSSL(const Pem& public_key);
53 COSEKeyVerifier_OpenSSL(std::span<const uint8_t> public_key_der);
54 };
55}
Definition cose_verifier.h:35
static std::unique_ptr< COSECertVerifier_OpenSSL > from_pem(const Pem &pem)
PEM certificate only.
Definition cose_verifier.cpp:119
static std::unique_ptr< COSECertVerifier_OpenSSL > from_any(const std::vector< uint8_t > &certificate)
Accepts PEM or DER certificate (auto-detects format).
Definition cose_verifier.cpp:95
static std::unique_ptr< COSECertVerifier_OpenSSL > from_der(const std::vector< uint8_t > &der)
DER certificate only.
Definition cose_verifier.cpp:134
Definition cose_verifier.h:50
Definition cose_verifier.h:13
bool verify(const std::span< const uint8_t > &envelope, std::span< uint8_t > &authned_content) const override
Definition cose_verifier.cpp:160
COSEVerifier_OpenSSL(CoseKey &&key)
Definition cose_verifier.h:17
bool verify_decomposed(std::span< const uint8_t > phdr, std::span< const uint8_t > payload, std::span< const uint8_t > sig, int64_t alg) const override
Definition cose_verifier.cpp:239
CoseKey verify_key
Definition cose_verifier.h:15
bool verify_detached(std::span< const uint8_t > envelope, std::span< const uint8_t > payload) const override
Definition cose_verifier.cpp:204
Definition cose_verifier.h:12
Definition pem.h:18
Definition base64.h:11
STL namespace.