CCF
Loading...
Searching...
No Matches
node_signature.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/ds/json.h"
6#include "ds/serialized.h"
7
8#include <vector>
9
10namespace ccf
11{
13
15 {
17 std::vector<uint8_t> sig;
22
23 NodeSignature(const NodeSignature& ns) = default;
25 std::vector<uint8_t> sig_, NodeId node_, Nonce hashed_nonce_) :
26 sig(std::move(sig_)),
27 node(std::move(node_)),
28 hashed_nonce(std::move(hashed_nonce_))
29 {}
30 NodeSignature(NodeId node_, Nonce hashed_nonce_) :
31 node(std::move(node_)),
32 hashed_nonce(std::move(hashed_nonce_))
33 {}
34 NodeSignature(NodeId node_) : node(std::move(node_)) {}
35 NodeSignature() = default;
36
37 NodeSignature& operator=(const NodeSignature& ns) = default;
38
39 bool operator==(const NodeSignature& o) const
40 {
41 return sig == o.sig && hashed_nonce == o.hashed_nonce;
42 }
43
44 [[nodiscard]] size_t get_serialized_size() const
45 {
46 return sizeof(size_t) + sig.size() + sizeof(size_t) + node.size() +
47 sizeof(hashed_nonce);
48 }
49
50 void serialize(uint8_t*& data, size_t& size) const
51 {
52 size_t sig_size = sig.size();
54 data, size, reinterpret_cast<uint8_t*>(&sig_size), sizeof(sig_size));
55 serialized::write(data, size, sig.data(), sig_size);
56
57 serialized::write(data, size, node.value());
59 data,
60 size,
61 reinterpret_cast<const uint8_t*>(&hashed_nonce),
62 sizeof(hashed_nonce));
63 }
64
65 static NodeSignature deserialize(const uint8_t*& data, size_t& size)
66 {
68
69 auto sig_size = serialized::read<size_t>(data, size);
70 n.sig = serialized::read(data, size, sig_size);
71 n.node = serialized::read<NodeId::Value>(data, size);
72 n.hashed_nonce = serialized::read<Nonce>(data, size);
73
74 return n;
75 }
76 };
79}
Definition sha256_hash.h:16
#define DECLARE_JSON_REQUIRED_FIELDS(TYPE,...)
Definition json.h:718
#define DECLARE_JSON_TYPE(TYPE)
Definition json.h:667
Definition app_interface.h:14
void write(uint8_t *&data, size_t &size, const T &v)
Definition serialized.h:105
T read(const uint8_t *&data, size_t &size)
Definition serialized.h:58
STL namespace.
size_t size() const
Definition entity_id.h:82
Value & value()
Definition entity_id.h:67
Definition node_signature.h:15
NodeSignature(NodeId node_, Nonce hashed_nonce_)
Definition node_signature.h:30
Nonce hashed_nonce
Hashed nonce created by the node, only used for BFT.
Definition node_signature.h:21
size_t get_serialized_size() const
Definition node_signature.h:44
NodeSignature(const NodeSignature &ns)=default
NodeSignature(std::vector< uint8_t > sig_, NodeId node_, Nonce hashed_nonce_)
Definition node_signature.h:24
NodeSignature & operator=(const NodeSignature &ns)=default
std::vector< uint8_t > sig
Signature.
Definition node_signature.h:17
NodeId node
Node ID.
Definition node_signature.h:19
void serialize(uint8_t *&data, size_t &size) const
Definition node_signature.h:50
static NodeSignature deserialize(const uint8_t *&data, size_t &size)
Definition node_signature.h:65
NodeSignature(NodeId node_)
Definition node_signature.h:34
bool operator==(const NodeSignature &o) const
Definition node_signature.h:39
NodeSignature()=default