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 const std::vector<uint8_t>& sig_,
26 const NodeId& node_,
27 Nonce hashed_nonce_) :
28 sig(sig_),
29 node(node_),
30 hashed_nonce(hashed_nonce_)
31 {}
32 NodeSignature(const NodeId& node_, Nonce hashed_nonce_) :
33 node(node_),
34 hashed_nonce(hashed_nonce_)
35 {}
36 NodeSignature(const NodeId& node_) : node(node_) {}
37 NodeSignature() = default;
38
39 NodeSignature& operator=(const NodeSignature& ns) = default;
40
41 bool operator==(const NodeSignature& o) const
42 {
43 return sig == o.sig && hashed_nonce == o.hashed_nonce;
44 }
45
46 size_t get_serialized_size() const
47 {
48 return sizeof(size_t) + sig.size() + sizeof(size_t) + node.size() +
49 sizeof(hashed_nonce);
50 }
51
52 void serialize(uint8_t*& data, size_t& size) const
53 {
54 size_t sig_size = sig.size();
56 data, size, reinterpret_cast<uint8_t*>(&sig_size), sizeof(sig_size));
57 serialized::write(data, size, sig.data(), sig_size);
58
59 serialized::write(data, size, node.value());
61 data,
62 size,
63 reinterpret_cast<const uint8_t*>(&hashed_nonce),
64 sizeof(hashed_nonce));
65 }
66
67 static NodeSignature deserialize(const uint8_t*& data, size_t& size)
68 {
70
71 size_t sig_size = serialized::read<size_t>(data, size);
72 n.sig = serialized::read(data, size, sig_size);
73 n.node = serialized::read<NodeId::Value>(data, size);
74 n.hashed_nonce = serialized::read<Nonce>(data, size);
75
76 return n;
77 }
78 };
81}
Definition sha256_hash.h:16
#define DECLARE_JSON_REQUIRED_FIELDS(TYPE,...)
Definition json.h:714
#define DECLARE_JSON_TYPE(TYPE)
Definition json.h:663
Definition app_interface.h:14
void write(uint8_t *&data, size_t &size, const T &v)
Definition serialized.h:106
T read(const uint8_t *&data, size_t &size)
Definition serialized.h:59
size_t size() const
Definition entity_id.h:75
Value & value()
Definition entity_id.h:60
Definition node_signature.h:15
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:46
NodeSignature(const NodeSignature &ns)=default
NodeSignature(const std::vector< uint8_t > &sig_, const NodeId &node_, Nonce hashed_nonce_)
Definition node_signature.h:24
NodeSignature(const NodeId &node_, Nonce hashed_nonce_)
Definition node_signature.h:32
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:52
static NodeSignature deserialize(const uint8_t *&data, size_t &size)
Definition node_signature.h:67
bool operator==(const NodeSignature &o) const
Definition node_signature.h:41
NodeSignature(const NodeId &node_)
Definition node_signature.h:36
NodeSignature()=default