CCF
Loading...
Searching...
No Matches
node_interface.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"
6#include "ccf/ds/quote_info.h"
12#include "http/http_builder.h"
13#include "http/http_parser.h"
14#include "kv/store.h"
15#include "node/ledger_secret.h"
19
20namespace ccf
21{
23 {
24 public:
25 virtual ~AbstractNodeState() {}
26
28 ccf::kv::Tx& tx,
30 virtual bool rekey_ledger(ccf::kv::Tx& tx) = 0;
32 virtual void trigger_ledger_chunk(ccf::kv::Tx& tx) = 0;
33 virtual void trigger_snapshot(ccf::kv::Tx& tx) = 0;
35 const std::vector<std::string>& args,
36 const std::vector<uint8_t>& input) = 0;
38 ccf::kv::Tx& tx,
39 const std::optional<std::vector<std::string>>& interfaces =
40 std::nullopt) = 0;
42 const NodeInfoNetwork::RpcInterfaceID& interface_id,
43 std::shared_ptr<ACMEChallengeHandler> h) = 0;
44 virtual bool is_in_initialised_state() const = 0;
45 virtual bool is_part_of_public_network() const = 0;
46 virtual bool is_primary() const = 0;
47 virtual bool can_replicate() = 0;
48 virtual bool is_reading_public_ledger() const = 0;
49 virtual bool is_reading_private_ledger() const = 0;
50 virtual bool is_part_of_network() const = 0;
53 ccf::kv::Tx& tx,
54 const std::optional<LedgerSecretPtr>& unsealed_ledger_secret =
55 std::nullopt) = 0;
56 virtual ExtendedState state() = 0;
59 const QuoteInfo& quote_info,
60 const std::vector<uint8_t>& expected_node_public_key_der,
64 virtual size_t get_jwt_attempts() = 0;
67 virtual const ccf::StartupConfig& get_node_config() const = 0;
69 virtual void stop_notice() = 0;
70 virtual bool has_received_stop_notice() = 0;
71 virtual bool is_member_frontend_open() = 0;
72 virtual bool is_user_frontend_open() = 0;
73 virtual bool is_accessible_to_members() const = 0;
74
75 virtual void make_http_request(
76 const ::http::URL& url,
77 ::http::Request&& req,
78 std::function<bool(
79 ccf::http_status status,
81 std::vector<uint8_t>&&)> callback,
82 const std::vector<std::string>& ca_certs = {},
83 const std::string& app_protocol = "HTTP1",
84 bool use_node_client_certificate = false) = 0;
85
86 virtual std::shared_ptr<ccf::kv::Store> get_store() = 0;
88 };
89}
Definition node_interface.h:23
virtual void stop_notice()=0
virtual void trigger_ledger_chunk(ccf::kv::Tx &tx)=0
virtual bool can_replicate()=0
virtual bool rekey_ledger(ccf::kv::Tx &tx)=0
virtual void trigger_recovery_shares_refresh(ccf::kv::Tx &tx)=0
virtual bool is_reading_private_ledger() const =0
virtual ccf::kv::Version get_last_recovered_signed_idx()=0
virtual bool is_member_frontend_open()=0
virtual ringbuffer::AbstractWriterFactory & get_writer_factory()=0
virtual void trigger_host_process_launch(const std::vector< std::string > &args, const std::vector< uint8_t > &input)=0
virtual bool is_part_of_network() const =0
virtual ccf::crypto::Pem get_self_signed_certificate()=0
virtual bool is_user_frontend_open()=0
virtual bool is_reading_public_ledger() const =0
virtual std::shared_ptr< ccf::kv::Store > get_store()=0
virtual void install_custom_acme_challenge_handler(const NodeInfoNetwork::RpcInterfaceID &interface_id, std::shared_ptr< ACMEChallengeHandler > h)=0
virtual bool is_part_of_public_network() const =0
virtual ~AbstractNodeState()
Definition node_interface.h:25
virtual ExtendedState state()=0
virtual bool is_in_initialised_state() const =0
virtual bool is_primary() const =0
virtual void trigger_snapshot(ccf::kv::Tx &tx)=0
virtual bool is_accessible_to_members() const =0
virtual ccf::crypto::Pem get_network_cert()=0
virtual const ccf::StartupConfig & get_node_config() const =0
virtual QuoteVerificationResult verify_quote(ccf::kv::ReadOnlyTx &tx, const QuoteInfo &quote_info, const std::vector< uint8_t > &expected_node_public_key_der, pal::PlatformAttestationMeasurement &measurement)=0
virtual void initiate_private_recovery(ccf::kv::Tx &tx, const std::optional< LedgerSecretPtr > &unsealed_ledger_secret=std::nullopt)=0
virtual ccf::kv::Version get_startup_snapshot_seqno()=0
virtual size_t get_jwt_attempts()=0
virtual bool has_received_stop_notice()=0
virtual const ccf::COSESignaturesConfig & get_cose_signatures_config()=0
virtual SessionMetrics get_session_metrics()=0
virtual void trigger_acme_refresh(ccf::kv::Tx &tx, const std::optional< std::vector< std::string > > &interfaces=std::nullopt)=0
virtual void make_http_request(const ::http::URL &url, ::http::Request &&req, std::function< bool(ccf::http_status status, ccf::http::HeaderMap &&, std::vector< uint8_t > &&)> callback, const std::vector< std::string > &ca_certs={}, const std::string &app_protocol="HTTP1", bool use_node_client_certificate=false)=0
virtual void transition_service_to_open(ccf::kv::Tx &tx, AbstractGovernanceEffects::ServiceIdentities identities)=0
Definition pem.h:18
Definition tx.h:160
Definition tx.h:201
Definition http_builder.h:118
Definition ring_buffer_types.h:153
std::map< std::string, std::string, std::less<> > HeaderMap
Definition http_header_map.h:10
uint64_t Version
Definition version.h:8
Definition app_interface.h:14
QuoteVerificationResult
Definition quote.h:18
std::tuple< NodeStartupState, std::optional< ccf::kv::Version >, std::optional< ccf::kv::Version > > ExtendedState
Definition node_operation_interface.h:20
llhttp_status http_status
Definition http_status.h:9
Definition gov_effects_interface.h:22
Definition cose_signatures_config.h:12
std::string RpcInterfaceID
Definition node_info_network.h:87
Describes a quote (attestation) from trusted hardware.
Definition quote_info.h:26
Definition session_metrics.h:13
Definition startup_config.h:106
Definition measurement.h:120