Skip to main content

ldp_protocol/
config.rs

1//! LDP adapter configuration.
2
3use crate::types::session::SessionConfig;
4use crate::types::trust::TrustDomain;
5use serde::{Deserialize, Serialize};
6
7/// Configuration for the LDP protocol adapter.
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct LdpAdapterConfig {
10    /// This adapter's delegate ID.
11    pub delegate_id: String,
12
13    /// Trust domain for this adapter.
14    #[serde(default)]
15    pub trust_domain: TrustDomain,
16
17    /// Session configuration defaults.
18    #[serde(default)]
19    pub session: SessionConfig,
20
21    /// Whether to enforce trust domain checks.
22    #[serde(default = "default_true")]
23    pub enforce_trust_domains: bool,
24
25    /// Whether to attach provenance to all task results.
26    #[serde(default = "default_true")]
27    pub attach_provenance: bool,
28
29    /// Shared secret for HMAC message signing. If None, signing is disabled.
30    #[serde(default)]
31    pub signing_secret: Option<String>,
32}
33
34fn default_true() -> bool {
35    true
36}
37
38impl Default for LdpAdapterConfig {
39    fn default() -> Self {
40        Self {
41            delegate_id: "ldp:delegate:local".into(),
42            trust_domain: TrustDomain::new("default"),
43            session: SessionConfig::default(),
44            enforce_trust_domains: true,
45            attach_provenance: true,
46            signing_secret: None,
47        }
48    }
49}