CCF
Loading...
Searching...
No Matches
self_healing_open.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/crypto/pem.h"
9#include "ccf/ds/json.h"
10#include "ccf/ds/quote_info.h"
11#include "ccf/service/map.h"
13#include "ccf/tx_id.h"
14
15namespace ccf
16{
17 namespace sealing_recovery
18 {
19 using Name = std::string;
20 using NetAddress = std::string;
21
22 struct Location
23 {
26
27 bool operator==(const Location&) const = default;
28 };
29
32
33 }
34 namespace recovery_decision_protocol
35 {
42
51 RequestNodeInfo, quote_info, location, service_cert_der);
52
54 {
55 std::vector<uint8_t> node_cert_der;
56 };
57
60
61 enum class StateMachine : uint8_t
62 {
63 GOSSIPING = 0,
64 VOTING,
65 OPENING, // by chosen node
66 JOINING, // by all other replicas
67 OPEN,
68 };
69
72 {{StateMachine::GOSSIPING, "Gossiping"},
73 {StateMachine::VOTING, "Voting"},
74 {StateMachine::OPENING, "Opening"},
75 {StateMachine::JOINING, "Joining"},
76 {StateMachine::OPEN, "Open"}});
77
78 enum class OpenKinds : uint8_t
79 {
80 QUORUM = 0,
82 };
85 {{OpenKinds::QUORUM, "Quorum"}, {OpenKinds::FAILOVER, "Failover"}});
86
97 }
98
99 namespace Tables
100 {
101 static constexpr auto RECOVERY_DECISION_PROTOCOL_NODES =
102 "public:ccf.gov.recovery_decision_protocol.nodes";
103 static constexpr auto RECOVERY_DECISION_PROTOCOL_GOSSIPS =
104 "public:ccf.gov.recovery_decision_protocol.gossip";
105 static constexpr auto RECOVERY_DECISION_PROTOCOL_CHOSEN_NODE =
106 "public:ccf.gov.recovery_decision_protocol.chosen_node";
107 static constexpr auto RECOVERY_DECISION_PROTOCOL_VOTES =
108 "public:ccf.gov.recovery_decision_protocol.votes";
109 static constexpr auto RECOVERY_DECISION_PROTOCOL_SM_STATE =
110 "public:ccf.gov.recovery_decision_protocol.sm_state";
111 static constexpr auto RECOVERY_DECISION_PROTOCOL_TIMEOUT_SM_STATE =
112 "public:ccf.gov.recovery_decision_protocol.timeout_sm_state";
113 static constexpr auto RECOVERY_DECISION_PROTOCOL_OPEN_KIND =
114 "public:ccf.gov.recovery_decision_protocol.open_kind";
115 }
116}
Definition pem.h:18
std::vector< uint8_t > raw() const
Definition pem.h:71
Definition sha256_hash.h:16
std::string hex_str() const
Definition sha256_hash.cpp:57
Definition map.h:30
Definition set.h:33
Definition value.h:32
#define DECLARE_JSON_TYPE_WITH_BASE(TYPE, BASE)
Definition json.h:687
#define DECLARE_JSON_REQUIRED_FIELDS(TYPE,...)
Definition json.h:736
#define DECLARE_JSON_TYPE(TYPE)
Definition json.h:685
#define DECLARE_JSON_ENUM(TYPE,...)
Definition json.h:864
std::vector< uint8_t > public_key_der_from_cert(const std::vector< uint8_t > &der)
Definition verifier.cpp:43
OpenKinds
Definition self_healing_open.h:79
StateMachine
Definition self_healing_open.h:62
std::string service_fingerprint_from_pem(const ccf::crypto::Pem &pem)
Definition self_healing_open.h:36
std::string Name
Definition self_healing_open.h:19
std::string NetAddress
Definition self_healing_open.h:20
Definition app_interface.h:13
Describes a quote (attestation) from trusted hardware.
Definition quote_info.h:26
Definition self_healing_open.h:54
std::vector< uint8_t > node_cert_der
Definition self_healing_open.h:55
Definition self_healing_open.h:44
sealing_recovery::Location location
Definition self_healing_open.h:46
QuoteInfo quote_info
Definition self_healing_open.h:45
std::vector< uint8_t > service_cert_der
Definition self_healing_open.h:47
Definition self_healing_open.h:23
bool operator==(const Location &) const =default
NetAddress address
Definition self_healing_open.h:25
Name name
Definition self_healing_open.h:24