22 explicit operator bool()
const {
23 return !
value.empty();
30 explicit operator bool()
const {
31 return !
value.empty();
38 explicit operator bool()
const {
39 return !
value.empty();
63class VerifiedControlPeerIdentity {
73 const VerifiedControlPeerIdentity&
right) {
74 return left.fingerprint_ ==
right.fingerprint_;
83 std::string fingerprint_;
134 std::span<const std::uint8_t>
bytes()
const {
139 void clear() noexcept;
140 std::vector<
std::uint8_t> bytes_;
152 std::optional<ControlBootstrapTicket>
ticket;
167 std::optional<ControlClientIdentity>
client;
223 std::chrono::milliseconds
client_ttl = std::chrono::minutes(5);
230 using Clock = std::function<std::chrono::steady_clock::time_point()>;
234 std::shared_ptr<ControlSecurityAuditLog> audit_log = {},
235 Clock clock = [] {
return std::chrono::steady_clock::now(); });
245 std::string_view ticket_id,
246 std::span<const std::uint8_t> secret,
248 std::string_view durable_principal = {},
264 bool publish =
true);
272 std::string_view session_id,
273 std::string_view instance_id,
274 std::string_view publication_id)
const;
285 std::unique_ptr<Impl> impl_;
Move-only bootstrap material. Destruction wipes the secret bytes.
Definition control_identity.hpp:125
ControlBootstrapSecret & operator=(const ControlBootstrapSecret &)=delete
ControlBootstrapSecret(ControlBootstrapSecret &&other) noexcept
ControlBootstrapSecret(const ControlBootstrapSecret &)=delete
std::span< const std::uint8_t > bytes() const
Definition control_identity.hpp:134
ControlBootstrapSecret(std::span< const std::uint8_t > bytes)
~ControlBootstrapSecret()
ControlBootstrapSecret & operator=(ControlBootstrapSecret &&other) noexcept
ControlRegistrationResult register_instance(const VerifiedControlPeerIdentity &peer, ControlRegistrationRequest request, bool publish=true)
std::optional< ControlRegistration > registration(std::string_view session_id, std::string_view instance_id, std::string_view publication_id) const
std::vector< ControlClientId > reclaim_process_clients(const std::function< ControlProcessLiveness(const ControlPeerEvidence &)> &process_liveness)
Removes process-scoped clients whose kernel process is gone or whose reconnect lease expired.
bool heartbeat(const ControlRegistrationId ®istration_id, const VerifiedControlPeerIdentity &peer)
ControlClientResult redeem_bootstrap(std::string_view ticket_id, std::span< const std::uint8_t > secret, const VerifiedControlPeerIdentity &observed_peer, std::string_view durable_principal={}, ControlDurableClientLifetime durable_lifetime=ControlDurableClientLifetime::Broker)
bool disconnect_client(const ControlClientId &client_id)
bool publish_instance(const ControlRegistrationId ®istration_id, const VerifiedControlPeerIdentity &peer)
ControlBootstrapResult issue_bootstrap(const VerifiedControlPeerIdentity &expected_peer)
std::optional< ControlClientIdentity > client(const ControlClientId &client_id) const
ControlIdentityRegistry(const ControlIdentityRegistry &)=delete
ControlIdentityRegistry(ControlIdentityRegistryConfig config={}, std::shared_ptr< ControlSecurityAuditLog > audit_log={}, Clock clock=[] { return std::chrono::steady_clock::now();})
~ControlIdentityRegistry()
ControlIdentityRegistry & operator=(const ControlIdentityRegistry &)=delete
bool unregister_instance(const ControlRegistrationId ®istration_id, const VerifiedControlPeerIdentity &peer)
std::optional< ControlRegistration > registration(const ControlRegistrationId ®istration_id) const
std::function< std::chrono::steady_clock::time_point()> Clock
Definition control_identity.hpp:230
std::vector< ControlRegistration > registrations() const
Snapshot of every currently-live exact registration.
bool refresh_client(const ControlClientId &client_id, const VerifiedControlPeerIdentity &peer)
const ControlBrokerId & broker_id() const
std::optional< VerifiedControlPeerIdentity > verify(ControlPeerEvidence evidence) const
std::function< bool(const ControlPeerEvidence &)> Authority
Definition control_identity.hpp:91
ControlPeerVerifier(Authority authority)
Copyable proof minted only by the broker's trusted OS peer verifier.
Definition control_identity.hpp:63
const ControlPeerEvidence & evidence() const
Definition control_identity.hpp:65
std::string_view fingerprint() const
Definition control_identity.hpp:68
friend bool operator==(const VerifiedControlPeerIdentity &left, const VerifiedControlPeerIdentity &right)
Definition control_identity.hpp:72
friend class ControlPeerVerifier
Definition control_identity.hpp:78
@ right
Definition canvas.hpp:221
@ left
Definition canvas.hpp:221
@ NotFound
Nothing matched and synthesis was disabled.
Definition font_resolver.hpp:174
Definition agent_context.hpp:7
ControlHostTier
Definition control_identity.hpp:100
@ Standalone
Definition control_identity.hpp:102
@ SharedPluginHost
Definition control_identity.hpp:103
ControlBuildProfile
Definition control_manifest.hpp:22
@ ProductionStripped
Definition control_manifest.hpp:23
std::string_view control_identity_status_id(ControlIdentityStatus status)
@ Expired
Definition audit.hpp:68
@ Accepted
Definition audit.hpp:65
ControlIdentityStatus
Definition control_identity.hpp:108
@ PeerRoleMismatch
Definition control_identity.hpp:111
@ Replay
Definition control_identity.hpp:117
@ InvalidRequest
Definition control_identity.hpp:110
@ AttestationUnavailable
Definition control_identity.hpp:113
@ HostUnavailable
Definition control_identity.hpp:112
@ EntropyUnavailable
Definition control_connection_admission.hpp:46
ControlDurableClientLifetime
Definition control_identity.hpp:170
@ Broker
Definition control_identity.hpp:171
@ Process
Definition control_identity.hpp:172
@ OfflineJob
Definition capabilities.hpp:62
ControlProcessLiveness
Definition control_identity.hpp:175
@ Dead
Definition control_identity.hpp:178
@ Unknown
Definition control_identity.hpp:176
@ Alive
Definition control_identity.hpp:177
ControlPeerRole
Definition control_identity.hpp:44
@ StandaloneHost
Definition control_identity.hpp:47
@ OfflineHost
Definition control_identity.hpp:46
@ Client
Definition control_identity.hpp:45
@ TrustedHostBridge
Definition control_identity.hpp:48
@ ResourceExhausted
Definition control_admission.hpp:26
@ InvalidRequest
Definition control_admission.hpp:17
@ IdentityMismatch
Definition control_admission.hpp:19
std::string_view control_host_tier_id(ControlHostTier tier)
Definition control_identity.hpp:150
std::optional< ControlBootstrapTicket > ticket
Definition control_identity.hpp:152
ControlIdentityStatus status
Definition control_identity.hpp:151
Definition control_identity.hpp:143
std::string ticket_id
Definition control_identity.hpp:144
ControlBrokerId broker_id
Definition control_identity.hpp:145
ControlBootstrapSecret secret
Definition control_identity.hpp:146
std::chrono::steady_clock::time_point expires_at
Definition control_identity.hpp:147
Definition control_identity.hpp:20
std::string value
Definition control_identity.hpp:21
friend bool operator==(const ControlBrokerId &, const ControlBrokerId &)=default
Definition control_identity.hpp:28
friend bool operator==(const ControlClientId &, const ControlClientId &)=default
std::string value
Definition control_identity.hpp:29
Definition control_identity.hpp:155
std::string peer_fingerprint
Definition control_identity.hpp:158
ControlBrokerId broker_id
Definition control_identity.hpp:157
ControlClientId client_id
Definition control_identity.hpp:156
std::chrono::steady_clock::time_point expires_at
Definition control_identity.hpp:159
std::string durable_principal
Broker-owned stable principal for a re-authenticating installed client.
Definition control_identity.hpp:162
Definition control_identity.hpp:165
ControlIdentityStatus status
Definition control_identity.hpp:166
std::optional< ControlClientIdentity > client
Definition control_identity.hpp:167
Definition control_identity.hpp:217
std::chrono::milliseconds client_ttl
Definition control_identity.hpp:223
std::chrono::milliseconds registration_ttl
Definition control_identity.hpp:221
std::chrono::milliseconds bootstrap_ttl
Definition control_identity.hpp:222
std::size_t max_registrations
Definition control_identity.hpp:218
std::size_t max_bootstrap_tickets
Definition control_identity.hpp:219
std::size_t max_clients
Definition control_identity.hpp:220
Definition control_manifest.hpp:67
Evidence observed by the local IPC carrier.
Definition control_identity.hpp:53
std::int64_t process_id
Definition control_identity.hpp:56
std::string publisher_id
Definition control_identity.hpp:59
std::string process_start_id
Definition control_identity.hpp:57
std::string executable_identity
Definition control_identity.hpp:58
ControlPeerRole role
Definition control_identity.hpp:54
std::string user_id
Definition control_identity.hpp:55
Definition control_identity.hpp:36
friend bool operator==(const ControlRegistrationId &, const ControlRegistrationId &)=default
std::string value
Definition control_identity.hpp:37
Definition control_identity.hpp:181
std::string artifact_digest
Definition control_identity.hpp:187
ControlManifest manifest
Definition control_identity.hpp:186
std::string instance_id
Definition control_identity.hpp:184
ControlHostTier host_tier
Definition control_identity.hpp:182
std::string session_id
Definition control_identity.hpp:183
std::string publication_id
Definition control_identity.hpp:185
Definition control_identity.hpp:212
std::optional< ControlRegistration > registration
Definition control_identity.hpp:214
ControlIdentityStatus status
Definition control_identity.hpp:213
Definition control_identity.hpp:190
ControlBrokerId broker_id
Definition control_identity.hpp:192
std::uint64_t liveness_generation
Starts at one and advances only after an authenticated heartbeat.
Definition control_identity.hpp:209
std::string session_id
Definition control_identity.hpp:194
std::chrono::steady_clock::time_point expires_at
Definition control_identity.hpp:205
std::string build_id
Manifest build identity retained for exact instance/status reads.
Definition control_identity.hpp:207
std::string consent_identity
Definition control_identity.hpp:201
std::string manifest_digest
Definition control_identity.hpp:199
ControlBuildProfile profile
Definition control_identity.hpp:202
std::vector< InspectorCapability > capabilities
Definition control_identity.hpp:203
std::string publisher_id
Definition control_identity.hpp:198
std::string instance_id
Definition control_identity.hpp:195
std::string artifact_digest
Definition control_identity.hpp:200
ControlRegistrationId registration_id
Definition control_identity.hpp:191
std::string peer_fingerprint
Definition control_identity.hpp:204
std::string plugin_id
Definition control_identity.hpp:197
std::string publication_id
Definition control_identity.hpp:196
ControlHostTier host_tier
Definition control_identity.hpp:193