MARS documentation
Rust librariesmars-serverFederation

mars-server · federation::envelope

Public declarations and documentation for mars-server::federation::envelope.

Package: mars-server · Workspace version: 0.1.0 · Module: federation::envelope

This reference follows declared modules and public syntax, including public implementation methods. Function bodies and constant values are omitted. Feature conditions are retained. Private-module re-exports and trait resolution require the compiler; not every declaration is a root import.

federation::envelope::FederationEnvelopeError

Federation authentication or envelope validation failure.

#[derive(Debug, thiserror::Error)]
pub enum FederationEnvelopeError {
    #[error("federation identity is invalid")]
    InvalidIdentity,
    #[error("federation key controller does not match its sender")]
    ControllerMismatch,
    #[error("federation envelope type or version is invalid")]
    InvalidEnvelope,
    #[error("federation envelope request digest is invalid")]
    RequestDigestMismatch,
    #[error("federation envelope clock is outside the accepted window")]
    ClockSkew,
    #[error("federation envelope signature is invalid")]
    InvalidSignature,
    #[error("federation envelope replay detected")]
    Replay,
    #[error("federation trust dependency failed")]
    TrustDependency,
    #[error("federation replay storage failed")]
    ReplayStorage,
}

Source line: 29.

federation::envelope::VerifiedFederationMessage

A verified payload and the MARS-owned principal derived from it.

#[derive(Debug, Clone)]
pub struct VerifiedFederationMessage<T> {
pub payload: T,
pub principal: Principal,
pub envelope_digest: String
}

Source line: 52.

federation::envelope::FederationSigner

Registry signing identity. Private key bytes are zeroized by OasKeyPair and redacted from debug output.

#[derive(Clone)]
pub struct FederationSigner {

}

Source line: 61.

federation::envelope::FederationSigner::new

Construct a signer bound to one canonical OAS service DID.

pub fn new(
        registry_did: impl Into<String>,
        key_id: impl Into<String>,
        keypair: OasKeyPair,
    ) -> Result<Self, FederationEnvelopeError>;

Source line: 80.

federation::envelope::FederationSigner::load_from_config

Load a 32-byte Ed25519 seed from exactly one protected path or environment variable. Input buffers are zeroized after construction.

pub fn load_from_config(
        registry_did: &str,
        config: &FederationConfig,
    ) -> Result<Self, FederationEnvelopeError>;

Source line: 98.

federation::envelope::FederationSigner::registry_did

Canonical sender DID.

pub fn registry_did(&self) -> &str;

Source line: 141.

federation::envelope::FederationSigner::public_key_base64url

Canonical unpadded base64url public key used by the frozen OpenAgent Authorization: OpenAgent &lt;sig&gt;.&lt;pubkey&gt; transport header.

pub fn public_key_base64url(&self) -> String;

Source line: 147.

federation::envelope::FederationSigner::sign_request

Sign a request whose digest is derived from its exact typed payload.

pub fn sign_request<T>(
        &self,
        kind: FederationMessageKind,
        recipient_did: impl Into<String>,
        payload: T,
        timestamp: DateTime<Utc>,
    ) -> Result<SignedFederationEnvelope<T>, FederationEnvelopeError>
    where
        T: Serialize,;

Source line: 181.

federation::envelope::FederationSigner::sign_response

Sign a response and bind it to the full request envelope.

pub fn sign_response<T, R>(
        &self,
        kind: FederationMessageKind,
        request: &SignedFederationEnvelope<R>,
        payload: T,
        timestamp: DateTime<Utc>,
    ) -> Result<SignedFederationEnvelope<T>, FederationEnvelopeError>
    where
        T: Serialize,
        R: Serialize,;

Source line: 208.

federation::envelope::FederationEnvelopeVerifier

Verifies peer envelopes, consumes durable nonces, and derives a scoped federation principal only after every binding succeeds.

#[derive(Clone)]
pub struct FederationEnvelopeVerifier {

}

Source line: 271.

federation::envelope::FederationEnvelopeVerifier::new

pub fn new(
        local_registry_did: impl Into<String>,
        keys: Arc<dyn PublisherKeyResolver>,
        store: Arc<dyn EntryStore>,
        max_clock_skew: Duration,
        nonce_ttl: Duration,
    ) -> Result<Self, FederationEnvelopeError>;

Source line: 281.

federation::envelope::FederationEnvelopeVerifier::with_expected_peer

Pin this verifier to one configured peer identity.

#[must_use]
pub fn with_expected_peer(mut self, peer_did: impl Into<String>) -> Self;

Source line: 308.

federation::envelope::FederationEnvelopeVerifier::verify_request

Verify a signed request and atomically consume its nonce.

pub async fn verify_request<T>(
        &self,
        envelope: &SignedFederationEnvelope<T>,
        expected_kind: FederationMessageKind,
        now: DateTime<Utc>,
    ) -> Result<VerifiedFederationMessage<T>, FederationEnvelopeError>
    where
        T: Serialize + Clone + Sync,;

Source line: 314.

federation::envelope::FederationEnvelopeVerifier::verify_response

Verify a signed response and bind it to the request envelope.

pub async fn verify_response<T, R>(
        &self,
        envelope: &SignedFederationEnvelope<T>,
        expected_kind: FederationMessageKind,
        request: &SignedFederationEnvelope<R>,
        now: DateTime<Utc>,
    ) -> Result<VerifiedFederationMessage<T>, FederationEnvelopeError>
    where
        T: Serialize + Clone + Sync,
        R: Serialize,;

Source line: 334.

federation::envelope::canonical_digest

SHA-256 digest of a typed JCS payload.

pub fn canonical_digest<T: Serialize>(value: &T) -> Result<String, FederationEnvelopeError>;

Source line: 481.

federation::envelope::envelope_digest

SHA-256 digest of the complete canonical signed envelope.

pub fn envelope_digest<T: Serialize>(
    envelope: &SignedFederationEnvelope<T>,
) -> Result<String, FederationEnvelopeError>;

Source line: 487.

Source provenance

Source: mars-server/src/federation/envelope.rs · SHA-256 d066ccafe527ca2681a24c46d2b1511619cd132467921ff8fd458056134bd87f. Package overview.

On this page