CCF
Loading...
Searching...
No Matches
hash_provider.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 <array>
10#include <cstdint>
11#include <iostream>
12#include <vector>
13
14namespace ccf::crypto
15{
17 {
18 public:
24 virtual HashBytes Hash(
25 const uint8_t* data, size_t size, MDType type) const = 0;
26
27 virtual ~HashProvider() = default;
28 };
29
31 std::shared_ptr<HashProvider> make_hash_provider();
32
33 // Incremental Hash Objects
35 {
36 public:
38 virtual ~ISha256Hash() {}
39
40 virtual void update_hash(std::span<const uint8_t> data) = 0;
41 virtual Sha256Hash finalise() = 0;
42
43 template <typename T>
44 void update(const T& t)
45 {
46 update_hash({reinterpret_cast<const uint8_t*>(&t), sizeof(T)});
47 }
48
49 template <>
50 void update(const std::vector<uint8_t>& d)
51 {
52 update_hash(d);
53 }
54 };
55
57 std::shared_ptr<ISha256Hash> make_incremental_sha256();
58}
Definition hash_provider.h:17
virtual ~HashProvider()=default
virtual HashBytes Hash(const uint8_t *data, size_t size, MDType type) const =0
Definition hash_provider.h:35
void update(const T &t)
Definition hash_provider.h:44
ISha256Hash()
Definition hash_provider.h:37
virtual ~ISha256Hash()
Definition hash_provider.h:38
virtual Sha256Hash finalise()=0
void update(const std::vector< uint8_t > &d)
Definition hash_provider.h:50
virtual void update_hash(std::span< const uint8_t > data)=0
Definition sha256_hash.h:16
Definition base64.h:10
std::vector< uint8_t > HashBytes
Definition hash_bytes.h:10
MDType
Definition md_type.h:10
std::shared_ptr< ISha256Hash > make_incremental_sha256()
Definition hash.cpp:46
std::shared_ptr< HashProvider > make_hash_provider()
Definition hash.cpp:41