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"
14
15#include <optional>
16#include <string>
17#include <vector>
18
19namespace ccf
20{
21 struct CCFConfig
22 {
23 size_t worker_threads = 0;
24
25 // 2**24.5 as per RFC8446 Section 5.5
26 size_t node_to_node_message_limit = 23'726'566;
27
29
32
34 {
35 std::string subject_name = "CN=CCF Node";
36 std::vector<std::string> subject_alt_names = {};
39
40 bool operator==(const NodeCertificateInfo&) const = default;
41 };
43
44 struct Ledger
45 {
46 std::string directory = "ledger";
47 std::vector<std::string> read_only_directories = {};
49
50 bool operator==(const Ledger&) const = default;
51 };
53
55 {
56 size_t tx_count = 5000;
58
59 bool operator==(const LedgerSignatures&) const = default;
60 };
62
63 struct JWT
64 {
66
67 bool operator==(const JWT&) const = default;
68 };
69 JWT jwt = {};
70
72 {
74 std::optional<std::string> snp_security_policy_file = std::nullopt;
75 std::optional<std::string> snp_uvm_endorsements_file = std::nullopt;
76 std::optional<std::string> snp_endorsements_file = std::nullopt;
77
79 {
80 // Each of these contains the string read from the relevant file. It is
81 // expected to be a base-64 string.
82 std::optional<std::string> security_policy = std::nullopt;
83 std::optional<std::string> uvm_endorsements = std::nullopt;
84 std::optional<std::string> snp_endorsements = std::nullopt;
85
86 bool operator==(const Environment&) const = default;
87 };
89
90 bool operator==(const Attestation&) const = default;
91 };
93
94 struct Snapshots
95 {
96 std::string directory = "snapshots";
97 size_t tx_count = 10'000;
98 std::optional<std::string> read_only_directory = std::nullopt;
99
100 bool operator==(const Snapshots&) const = default;
101 };
103 };
104
106 {
107 StartupConfig() = default;
108 StartupConfig(const CCFConfig& common_base) : CCFConfig(common_base) {}
109
110 std::string startup_host_time;
111 size_t snapshot_tx_interval = 10'000;
112
113 // Only if starting or recovering
115 std::string service_subject_name = "CN=CCF Service";
117
118 std::optional<std::string> sealed_ledger_secret_location;
119
120 nlohmann::json service_data = nullptr;
121
122 nlohmann::json node_data = nullptr;
123
124 struct Start
125 {
126 std::vector<ccf::NewMember> members;
127 std::string constitution;
129
130 bool operator==(const Start& other) const = default;
131 };
133
141 Join join = {};
142
143 struct Recover
144 {
145 std::optional<std::vector<uint8_t>> previous_service_identity =
146 std::nullopt;
147 std::optional<std::string> previous_sealed_ledger_secret_location =
148 std::nullopt;
149 };
151 };
152}
CurveID
Definition curve.h:18
@ SECP384R1
The SECP384R1 curve.
std::vector< EndorsementsServer > EndorsementsServers
Definition attestation_sev_snp_endorsements.h:87
Definition app_interface.h:14
Definition consensus_types.h:23
Definition fetch.h:35
Definition startup_config.h:79
std::optional< std::string > security_policy
Definition startup_config.h:82
std::optional< std::string > uvm_endorsements
Definition startup_config.h:83
std::optional< std::string > snp_endorsements
Definition startup_config.h:84
bool operator==(const Environment &) const =default
Definition startup_config.h:72
ccf::pal::snp::EndorsementsServers snp_endorsements_servers
Definition startup_config.h:73
std::optional< std::string > snp_endorsements_file
Definition startup_config.h:76
bool operator==(const Attestation &) const =default
std::optional< std::string > snp_uvm_endorsements_file
Definition startup_config.h:75
Environment environment
Definition startup_config.h:88
std::optional< std::string > snp_security_policy_file
Definition startup_config.h:74
Definition startup_config.h:64
ccf::ds::TimeString key_refresh_interval
Definition startup_config.h:65
bool operator==(const JWT &) const =default
Definition startup_config.h:55
ccf::ds::TimeString delay
Definition startup_config.h:57
bool operator==(const LedgerSignatures &) const =default
size_t tx_count
Definition startup_config.h:56
Definition startup_config.h:45
std::string directory
Definition startup_config.h:46
bool operator==(const Ledger &) const =default
ccf::ds::SizeString chunk_size
Definition startup_config.h:48
std::vector< std::string > read_only_directories
Definition startup_config.h:47
Definition startup_config.h:34
ccf::crypto::CurveID curve_id
Definition startup_config.h:37
std::string subject_name
Definition startup_config.h:35
std::vector< std::string > subject_alt_names
Definition startup_config.h:36
size_t initial_validity_days
Definition startup_config.h:38
bool operator==(const NodeCertificateInfo &) const =default
Definition startup_config.h:95
std::string directory
Definition startup_config.h:96
bool operator==(const Snapshots &) const =default
std::optional< std::string > read_only_directory
Definition startup_config.h:98
size_t tx_count
Definition startup_config.h:97
Definition startup_config.h:22
size_t node_to_node_message_limit
Definition startup_config.h:26
ccf::NodeInfoNetwork network
Definition startup_config.h:31
ccf::ds::SizeString historical_cache_soft_limit
Definition startup_config.h:28
LedgerSignatures ledger_signatures
Definition startup_config.h:61
JWT jwt
Definition startup_config.h:69
Ledger ledger
Definition startup_config.h:52
size_t worker_threads
Definition startup_config.h:23
Attestation attestation
Definition startup_config.h:92
NodeCertificateInfo node_certificate
Definition startup_config.h:42
Definition cose_signatures_config.h:12
std::string NetAddress
Definition node_info_network.h:86
Definition node_info_network.h:196
Definition service_config.h:14
Definition startup_config.h:135
std::vector< uint8_t > service_cert
Definition startup_config.h:138
bool follow_redirect
Definition startup_config.h:139
ccf::NodeInfoNetwork::NetAddress target_rpc_address
Definition startup_config.h:136
ccf::ds::TimeString retry_timeout
Definition startup_config.h:137
Definition startup_config.h:144
std::optional< std::vector< uint8_t > > previous_service_identity
Definition startup_config.h:145
std::optional< std::string > previous_sealed_ledger_secret_location
Definition startup_config.h:147
Definition startup_config.h:125
std::string constitution
Definition startup_config.h:127
std::vector< ccf::NewMember > members
Definition startup_config.h:126
ccf::ServiceConfiguration service_configuration
Definition startup_config.h:128
bool operator==(const Start &other) const =default
Definition startup_config.h:106
size_t initial_service_certificate_validity_days
Definition startup_config.h:114
size_t snapshot_tx_interval
Definition startup_config.h:111
ccf::COSESignaturesConfig cose_signatures
Definition startup_config.h:116
StartupConfig()=default
nlohmann::json service_data
Definition startup_config.h:120
StartupConfig(const CCFConfig &common_base)
Definition startup_config.h:108
Start start
Definition startup_config.h:132
Join join
Definition startup_config.h:141
std::optional< std::string > sealed_ledger_secret_location
Definition startup_config.h:118
nlohmann::json node_data
Definition startup_config.h:122
Recover recover
Definition startup_config.h:150
std::string startup_host_time
Definition startup_config.h:110
std::string service_subject_name
Definition startup_config.h:115
Definition consensus_config.h:11
Definition unit_strings.h:122
Definition unit_strings.h:159