CCF
Loading...
Searching...
No Matches
node_operation_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"
8#include "ccf/node/quote.h"
12#include "ccf/tx.h"
15
16namespace ccf
17{
18 using ExtendedState = std::tuple<
20 std::optional<ccf::kv::Version> /* recovery_target_seqno */,
21 std::optional<ccf::kv::Version> /* last_recovered_seqno */>;
22
24 {
25 public:
26 ~AbstractNodeOperation() override = default;
27
28 static char const* get_subsystem_name()
29 {
30 return "NodeOperation";
31 }
32
33 virtual ExtendedState state() = 0;
34
35 [[nodiscard]] virtual bool is_in_initialised_state() const = 0;
36 [[nodiscard]] virtual bool is_part_of_public_network() const = 0;
37 [[nodiscard]] virtual bool is_part_of_network() const = 0;
38 [[nodiscard]] virtual bool is_reading_public_ledger() const = 0;
39 [[nodiscard]] virtual bool is_reading_private_ledger() const = 0;
40
41 virtual bool is_user_frontend_open() = 0;
42 virtual bool is_member_frontend_open() = 0;
43 [[nodiscard]] virtual bool is_accessible_to_members() const = 0;
44
45 virtual bool can_replicate() = 0;
46 virtual std::optional<ccf::NodeId> get_primary() = 0;
47
50
52 virtual size_t get_jwt_attempts() = 0;
53
56 const QuoteInfo& quote_info,
57 const std::vector<uint8_t>& expected_node_public_key_der,
59 const std::optional<std::vector<uint8_t>>& code_transparent_statement,
60 std::shared_ptr<NetworkIdentitySubsystemInterface>
61 network_identity_subsystem) = 0;
62
64
65 virtual void trigger_snapshot(ccf::kv::Tx& tx) = 0;
66
68
70
72
73 virtual void shuffle_sealed_shares(ccf::kv::Tx& tx) = 0;
74 };
75}
Definition node_operation_interface.h:24
virtual size_t get_jwt_attempts()=0
virtual bool is_accessible_to_members() const =0
virtual bool is_user_frontend_open()=0
virtual std::optional< ccf::NodeId > get_primary()=0
virtual ccf::kv::Version get_startup_snapshot_seqno()=0
virtual void trigger_snapshot(ccf::kv::Tx &tx)=0
virtual void initiate_private_recovery(ccf::kv::Tx &tx)=0
virtual bool is_in_initialised_state() const =0
virtual ccf::crypto::Pem get_self_signed_node_certificate()=0
~AbstractNodeOperation() override=default
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, const std::optional< std::vector< uint8_t > > &code_transparent_statement, std::shared_ptr< NetworkIdentitySubsystemInterface > network_identity_subsystem)=0
virtual bool is_reading_private_ledger() const =0
virtual ExtendedState state()=0
virtual RecoveryDecisionProtocolSubsystem & recovery_decision_protocol()=0
virtual SessionMetrics get_session_metrics()=0
virtual bool is_member_frontend_open()=0
virtual bool can_replicate()=0
virtual const ccf::COSESignaturesConfig & get_cose_signatures_config()=0
virtual bool is_reading_public_ledger() const =0
virtual bool is_part_of_network() const =0
virtual bool is_part_of_public_network() const =0
static char const * get_subsystem_name()
Definition node_operation_interface.h:28
virtual void shuffle_sealed_shares(ccf::kv::Tx &tx)=0
virtual ccf::kv::Version get_last_recovered_signed_idx()=0
Definition node_subsystem_interface.h:8
Definition recovery_decision_protocol.h:44
Definition pem.h:18
Definition tx.h:159
Definition tx.h:200
uint64_t Version
Definition version.h:10
Definition app_interface.h:13
std::tuple< NodeStartupState, std::optional< ccf::kv::Version >, std::optional< ccf::kv::Version > > ExtendedState
Definition node_operation_interface.h:21
NodeStartupState
Definition node_startup_state.h:10
QuoteVerificationResult
Definition quote.h:19
Definition cose_signatures_config.h:12
Describes a quote (attestation) from trusted hardware.
Definition quote_info.h:26
Definition session_metrics.h:13
Definition measurement.h:123