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"
11#include "http/http_builder.h"
12#include "http/http_parser.h"
13#include "kv/store.h"
14#include "node/ledger_secret.h"
18
19namespace ccf
20{
22 {
23 public:
24 virtual ~AbstractNodeState() = default;
25
27 ccf::kv::Tx& tx,
29 virtual bool rekey_ledger(ccf::kv::Tx& tx) = 0;
31 virtual void trigger_ledger_chunk(ccf::kv::Tx& tx) = 0;
32 virtual void trigger_snapshot(ccf::kv::Tx& tx) = 0;
33 [[nodiscard]] virtual bool is_in_initialised_state() const = 0;
34 [[nodiscard]] virtual bool is_part_of_public_network() const = 0;
35 [[nodiscard]] virtual bool is_primary() const = 0;
36 virtual bool can_replicate() = 0;
37 virtual std::optional<ccf::NodeId> get_primary() = 0;
38 [[nodiscard]] virtual bool is_reading_public_ledger() const = 0;
39 [[nodiscard]] virtual bool is_reading_private_ledger() const = 0;
40 [[nodiscard]] virtual bool is_part_of_network() const = 0;
43 ccf::kv::Tx& tx,
44 const std::optional<LedgerSecretPtr>& unsealed_ledger_secret =
45 std::nullopt) = 0;
46 virtual ExtendedState state() = 0;
49 const QuoteInfo& quote_info,
50 const std::vector<uint8_t>& expected_node_public_key_der,
54 virtual size_t get_jwt_attempts() = 0;
57 [[nodiscard]] virtual const ccf::StartupConfig& get_node_config() const = 0;
59 virtual void stop_notice() = 0;
60 virtual bool has_received_stop_notice() = 0;
61 virtual bool is_member_frontend_open() = 0;
62 virtual bool is_user_frontend_open() = 0;
63 [[nodiscard]] virtual bool is_accessible_to_members() const = 0;
64
65 virtual void make_http_request(
66 const ::http::URL& url,
67 ::http::Request&& req,
68 std::function<bool(
69 ccf::http_status status,
71 std::vector<uint8_t>&&)> callback,
72 const std::vector<std::string>& ca_certs = {},
73 const std::string& app_protocol = "HTTP1",
74 bool use_node_client_certificate = false) = 0;
75
76 virtual std::shared_ptr<ccf::kv::Store> get_store() = 0;
78 };
79}
Definition node_interface.h:22
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 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 bool is_part_of_public_network() const =0
virtual ExtendedState state()=0
virtual std::optional< ccf::NodeId > get_primary()=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 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
virtual ~AbstractNodeState()=default
Definition pem.h:18
Definition tx.h:159
Definition tx.h:200
Definition http_builder.h:117
Definition ring_buffer_types.h:157
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
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
QuoteVerificationResult
Definition quote.h:18
Definition gov_effects_interface.h:22
Definition cose_signatures_config.h:12
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:123