CCF
Loading...
Searching...
No Matches
startup_config.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/curve.h"
7#include "ccf/entity_id.h"
16
17#include <optional>
18#include <string>
19#include <vector>
20
21namespace ccf
22{
23 struct CCFConfig
24 {
25 size_t worker_threads = 0;
26
27 // 2**24.5 as per RFC8446 Section 5.5
28 size_t node_to_node_message_limit = 23'726'566;
29
31
34
36 {
37 std::string subject_name = "CN=CCF Node";
38 std::vector<std::string> subject_alt_names;
41
42 bool operator==(const NodeCertificateInfo&) const = default;
43 };
45
46 struct Ledger
47 {
48 std::string directory = "ledger";
49 std::vector<std::string> read_only_directories;
51
52 bool operator==(const Ledger&) const = default;
53 };
55
57 {
58 size_t tx_count = 5000;
60
61 bool operator==(const LedgerSignatures&) const = default;
62 };
64
65 struct JWT
66 {
68
69 bool operator==(const JWT&) const = default;
70 };
71 JWT jwt = {};
72
74 {
76 std::optional<std::string> snp_security_policy_file = std::nullopt;
77 std::optional<std::string> snp_uvm_endorsements_file = std::nullopt;
78 std::optional<std::string> snp_endorsements_file = std::nullopt;
79
81 {
82 // Each of these contains the string read from the relevant file. It is
83 // expected to be a base-64 string.
84 std::optional<std::string> security_policy = std::nullopt;
85 std::optional<std::string> uvm_endorsements = std::nullopt;
86 std::optional<std::string> snp_endorsements = std::nullopt;
87
88 bool operator==(const Environment&) const = default;
89 };
91
92 bool operator==(const Attestation&) const = default;
93 };
95
96 struct Snapshots
97 {
98 std::string directory = "snapshots";
99 size_t tx_count = 10'000;
100 size_t min_tx_count = 2;
102 std::optional<std::string> read_only_directory = std::nullopt;
103
105 {
106 bool enabled = false;
107 size_t max_attempts = 3;
109 std::string target_rpc_interface = ccf::PRIMARY_RPC_INTERFACE;
111
112 bool operator==(const BackupFetch&) const = default;
113 };
115
116 bool operator==(const Snapshots&) const = default;
117 };
119
121 {
122 std::optional<size_t> max_snapshots = std::nullopt;
123 std::optional<size_t> max_committed_ledger_chunks = std::nullopt;
125
126 bool operator==(const FilesCleanup&) const = default;
127 };
129 };
130
132 {
133 std::vector<sealing_recovery::Location> expected_locations;
136 bool operator==(const RecoveryDecisionProtocolConfig&) const = default;
137 };
138
140 {
142 std::optional<RecoveryDecisionProtocolConfig> recovery_decision_protocol =
143 std::nullopt;
144 bool operator==(const SealingRecoveryConfig&) const = default;
145 };
146
148 {
149 StartupConfig() = default;
150 StartupConfig(const CCFConfig& common_base) : CCFConfig(common_base) {}
151
152 std::string startup_host_time;
153 size_t snapshot_tx_interval = 10'000;
154
155 // Only if starting or recovering
157 std::string service_subject_name = "CN=CCF Service";
159
160 std::optional<SealingRecoveryConfig> sealing_recovery = std::nullopt;
161
162 nlohmann::json service_data = nullptr;
163
164 nlohmann::json node_data = nullptr;
165
166 struct Start
167 {
168 std::vector<ccf::NewMember> members;
169 std::string constitution;
171
172 bool operator==(const Start& other) const = default;
173 };
175
189 Join join = {};
190
191 struct Recover
192 {
193 std::optional<std::vector<uint8_t>> previous_service_identity =
194 std::nullopt;
195 };
197 };
198}
CurveID
Definition curve.h:18
@ SECP384R1
The SECP384R1 curve.
std::vector< EndorsementsServer > EndorsementsServers
Definition attestation_sev_snp_endorsements.h:87
Definition app_interface.h:13
Definition consensus_types.h:23
Definition fetch.h:63
Definition startup_config.h:81
std::optional< std::string > security_policy
Definition startup_config.h:84
std::optional< std::string > uvm_endorsements
Definition startup_config.h:85
std::optional< std::string > snp_endorsements
Definition startup_config.h:86
bool operator==(const Environment &) const =default
Definition startup_config.h:74
ccf::pal::snp::EndorsementsServers snp_endorsements_servers
Definition startup_config.h:75
std::optional< std::string > snp_endorsements_file
Definition startup_config.h:78
bool operator==(const Attestation &) const =default
std::optional< std::string > snp_uvm_endorsements_file
Definition startup_config.h:77
Environment environment
Definition startup_config.h:90
std::optional< std::string > snp_security_policy_file
Definition startup_config.h:76
Definition startup_config.h:121
std::optional< size_t > max_snapshots
Definition startup_config.h:122
std::optional< size_t > max_committed_ledger_chunks
Definition startup_config.h:123
bool operator==(const FilesCleanup &) const =default
ccf::ds::TimeString interval
Definition startup_config.h:124
Definition startup_config.h:66
ccf::ds::TimeString key_refresh_interval
Definition startup_config.h:67
bool operator==(const JWT &) const =default
Definition startup_config.h:57
ccf::ds::TimeString delay
Definition startup_config.h:59
bool operator==(const LedgerSignatures &) const =default
size_t tx_count
Definition startup_config.h:58
Definition startup_config.h:47
std::string directory
Definition startup_config.h:48
bool operator==(const Ledger &) const =default
ccf::ds::SizeString chunk_size
Definition startup_config.h:50
std::vector< std::string > read_only_directories
Definition startup_config.h:49
Definition startup_config.h:36
ccf::crypto::CurveID curve_id
Definition startup_config.h:39
std::string subject_name
Definition startup_config.h:37
std::vector< std::string > subject_alt_names
Definition startup_config.h:38
size_t initial_validity_days
Definition startup_config.h:40
bool operator==(const NodeCertificateInfo &) const =default
Definition startup_config.h:105
std::string target_rpc_interface
Definition startup_config.h:109
ccf::ds::TimeString retry_interval
Definition startup_config.h:108
size_t max_attempts
Definition startup_config.h:107
ccf::ds::SizeString max_size
Definition startup_config.h:110
bool enabled
Definition startup_config.h:106
bool operator==(const BackupFetch &) const =default
Definition startup_config.h:97
ccf::ds::TimeString time_interval
Definition startup_config.h:101
std::string directory
Definition startup_config.h:98
bool operator==(const Snapshots &) const =default
std::optional< std::string > read_only_directory
Definition startup_config.h:102
BackupFetch backup_fetch
Definition startup_config.h:114
size_t min_tx_count
Definition startup_config.h:100
size_t tx_count
Definition startup_config.h:99
Definition startup_config.h:24
size_t node_to_node_message_limit
Definition startup_config.h:28
ccf::NodeInfoNetwork network
Definition startup_config.h:33
ccf::ds::SizeString historical_cache_soft_limit
Definition startup_config.h:30
LedgerSignatures ledger_signatures
Definition startup_config.h:63
JWT jwt
Definition startup_config.h:71
Ledger ledger
Definition startup_config.h:54
size_t worker_threads
Definition startup_config.h:25
FilesCleanup files_cleanup
Definition startup_config.h:128
Attestation attestation
Definition startup_config.h:94
NodeCertificateInfo node_certificate
Definition startup_config.h:44
Definition cose_signatures_config.h:12
std::string NetAddress
Definition node_info_network.h:81
Definition node_info_network.h:179
Definition startup_config.h:132
ccf::ds::TimeString message_retry_timeout
Definition startup_config.h:134
bool operator==(const RecoveryDecisionProtocolConfig &) const =default
ccf::ds::TimeString failover_timeout
Definition startup_config.h:135
std::vector< sealing_recovery::Location > expected_locations
Definition startup_config.h:133
Definition startup_config.h:140
std::optional< RecoveryDecisionProtocolConfig > recovery_decision_protocol
Definition startup_config.h:142
bool operator==(const SealingRecoveryConfig &) const =default
sealing_recovery::Location location
Definition startup_config.h:141
Definition service_config.h:14
Definition startup_config.h:177
std::vector< uint8_t > service_cert
Definition startup_config.h:180
bool follow_redirect
Definition startup_config.h:181
ccf::NodeInfoNetwork::NetAddress target_rpc_address
Definition startup_config.h:178
bool fetch_recent_snapshot
Definition startup_config.h:182
std::optional< std::string > host_data_transparent_statement_path
Definition startup_config.h:186
ccf::ds::TimeString fetch_snapshot_retry_interval
Definition startup_config.h:184
ccf::ds::TimeString retry_timeout
Definition startup_config.h:179
ccf::ds::SizeString fetch_snapshot_max_size
Definition startup_config.h:185
size_t fetch_snapshot_max_attempts
Definition startup_config.h:183
Definition startup_config.h:192
std::optional< std::vector< uint8_t > > previous_service_identity
Definition startup_config.h:193
Definition startup_config.h:167
std::string constitution
Definition startup_config.h:169
std::vector< ccf::NewMember > members
Definition startup_config.h:168
ccf::ServiceConfiguration service_configuration
Definition startup_config.h:170
bool operator==(const Start &other) const =default
Definition startup_config.h:148
size_t initial_service_certificate_validity_days
Definition startup_config.h:156
size_t snapshot_tx_interval
Definition startup_config.h:153
ccf::COSESignaturesConfig cose_signatures
Definition startup_config.h:158
StartupConfig()=default
nlohmann::json service_data
Definition startup_config.h:162
StartupConfig(const CCFConfig &common_base)
Definition startup_config.h:150
Start start
Definition startup_config.h:174
Join join
Definition startup_config.h:189
nlohmann::json node_data
Definition startup_config.h:164
Recover recover
Definition startup_config.h:196
std::string startup_host_time
Definition startup_config.h:152
std::string service_subject_name
Definition startup_config.h:157
std::optional< SealingRecoveryConfig > sealing_recovery
Definition startup_config.h:160
Definition consensus_config.h:11
Definition unit_strings.h:122
Definition unit_strings.h:166
Definition self_healing_open.h:23