From e0b4822536eea502bb0b280d7563b0e0b6fd90fd Mon Sep 17 00:00:00 2001 From: Nander Stabel Date: Fri, 12 Dec 2025 15:33:15 +0100 Subject: [PATCH 01/14] feat: add `ManagedKey` aggregate and related components --- agent_event_publisher_http/src/lib.rs | 31 ++++++-- agent_identity/src/lib.rs | 1 + agent_identity/src/managed_key/README.md | 7 ++ agent_identity/src/managed_key/aggregate.rs | 79 +++++++++++++++++++ agent_identity/src/managed_key/command.rs | 2 + agent_identity/src/managed_key/error.rs | 4 + agent_identity/src/managed_key/event.rs | 18 +++++ agent_identity/src/managed_key/mod.rs | 5 ++ .../src/managed_key/views/all_managed_keys.rs | 23 ++++++ agent_identity/src/managed_key/views/mod.rs | 15 ++++ agent_identity/src/state.rs | 14 +++- agent_shared/src/config/mod.rs | 5 ++ agent_store/src/lib.rs | 22 ++++++ 13 files changed, 220 insertions(+), 6 deletions(-) create mode 100644 agent_identity/src/managed_key/README.md create mode 100644 agent_identity/src/managed_key/aggregate.rs create mode 100644 agent_identity/src/managed_key/command.rs create mode 100644 agent_identity/src/managed_key/error.rs create mode 100644 agent_identity/src/managed_key/event.rs create mode 100644 agent_identity/src/managed_key/mod.rs create mode 100644 agent_identity/src/managed_key/views/all_managed_keys.rs create mode 100644 agent_identity/src/managed_key/views/mod.rs diff --git a/agent_event_publisher_http/src/lib.rs b/agent_event_publisher_http/src/lib.rs index 418ddbf1..26537f96 100644 --- a/agent_event_publisher_http/src/lib.rs +++ b/agent_event_publisher_http/src/lib.rs @@ -4,8 +4,8 @@ use agent_authorization::domain::{ }; use agent_holder::presentation::aggregate::Presentation; use agent_identity::{ - connection::aggregate::Connection, document::aggregate::Document, profile::aggregate::Profile, - service::aggregate::Service, + connection::aggregate::Connection, document::aggregate::Document, managed_key::aggregate::ManagedKey, + profile::aggregate::Profile, service::aggregate::Service, }; use agent_issuance::{ credential::aggregate::Credential, offer::aggregate::Offer, server_config::aggregate::ServerConfig, @@ -15,9 +15,9 @@ use agent_shared::config::config; use agent_store::{ AccessTokenEventPublisher, AuthorizationCodeEventPublisher, AuthorizationRequestEventPublisher, ClientEventPublisher, ConnectionEventPublisher, CredentialEventPublisher, DocumentEventPublisher, EventPublisher, - HolderCredentialEventPublisher, OAuth2AuthorizationRequestEventPublisher, OfferEventPublisher, - PresentationEventPublisher, ProfileEventPublisher, ReceivedOfferEventPublisher, ServerConfigEventPublisher, - ServiceEventPublisher, TemplateEventPublisher, + HolderCredentialEventPublisher, ManagedKeyEventPublisher, OAuth2AuthorizationRequestEventPublisher, + OfferEventPublisher, PresentationEventPublisher, ProfileEventPublisher, ReceivedOfferEventPublisher, + ServerConfigEventPublisher, ServiceEventPublisher, TemplateEventPublisher, }; use agent_verification::authorization_request::aggregate::AuthorizationRequest; use async_trait::async_trait; @@ -41,6 +41,7 @@ pub struct EventPublisherHttp { pub document: Option>, pub profile: Option>, pub service: Option>, + pub managed_key: Option>, // Library pub template: Option>, @@ -173,6 +174,19 @@ impl EventPublisherHttp { ) }); + let managed_key = (!event_publisher_http.events.managed_key.is_empty()).then(|| { + AggregateEventPublisherHttp::::new( + event_publisher_http.target_url.clone(), + event_publisher_http.headers.clone(), + event_publisher_http + .events + .managed_key + .iter() + .map(ToString::to_string) + .collect(), + ) + }); + let template = (!event_publisher_http.events.template.is_empty()).then(|| { AggregateEventPublisherHttp::