MARS documentation
Rust librariesmars-serverFederation

mars-server · federation::policy

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

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

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::policy::VersionTrust

Trust facts established before conflict selection.

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct VersionTrust {
/// Publisher Ed25519 signature verified against a controller-bound key.

pub publisher_signature_verified: bool,
/// A matching confirmed anchor receipt was verified in local durable state.

pub confirmed_anchor_verified: bool,
/// Source registry sequence for this version.

pub sequence: u64,
/// SHA-256 of the JCS publisher-authored entry.

pub content_digest: String
}

Source line: 11.

federation::policy::ConflictWinner

Deterministic conflict winner.

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ConflictWinner {
    Local,
    Remote,
    Identical,
}

Source line: 24.

federation::policy::ConflictResolutionError

Conflict selection failure.

#[derive(Debug, thiserror::Error)]
pub enum ConflictResolutionError {
    #[error("conflict candidate publisher signature is not verified")]
    UnverifiedPublisherSignature,
    #[error("conflict candidate digest is malformed")]
    InvalidDigest,
}

Source line: 32.

federation::policy::resolve_verified_conflict

Resolve a conflict only after both publisher signatures have been cryptographically verified.

A locally confirmed matching anchor wins first. If anchor evidence is equal, the higher source sequence wins. Equal sequences use the lexically lower canonical SHA-256 digest, yielding the same result on every registry.

pub fn resolve_verified_conflict(
    local: &VersionTrust,
    remote: &VersionTrust,
) -> Result<ConflictWinner, ConflictResolutionError>;

Source line: 45.

federation::policy::PeerNetworkError

URL or DNS safety failure. Messages are deliberately non-sensitive and do not include resolved internal addresses.

#[derive(Debug, thiserror::Error)]
pub enum PeerNetworkError {
    #[error("federation peer URL is invalid")]
    InvalidUrl,
    #[error("federation peer URL must use HTTPS")]
    HttpsRequired,
    #[error("federation peer URL authority is not allowed")]
    InvalidAuthority,
    #[error("federation peer DNS returned no usable addresses")]
    MissingAddress,
    #[error("federation peer address is blocked by SSRF policy")]
    BlockedAddress,
    #[error("federation peer DNS resolution failed")]
    ResolutionFailed,
}

Source line: 189.

federation::policy::validate_peer_url_and_addresses

Parse an HTTPS peer URL and validate every resolved address.

A mixed public/private DNS answer fails closed. Non-public addresses are accepted only when every such address is contained in an explicit CIDR.

pub fn validate_peer_url_and_addresses(
    raw_url: &str,
    addresses: &[IpAddr],
    allow_private_cidrs: &[IpNet],
) -> Result<Url, PeerNetworkError>;

Source line: 208.

federation::policy::resolve_peer_endpoint

Resolve and pin a peer endpoint before constructing an HTTP client.

pub async fn resolve_peer_endpoint(
    raw_url: &str,
    allow_private_cidrs: &[IpNet],
) -> Result<(Url, Vec<SocketAddr>), PeerNetworkError>;

Source line: 253.

Source provenance

Source: mars-server/src/federation/policy.rs · SHA-256 be95f7ddb9def0ec9adfe7e98024136229d2dfc05ecc32a7c793386c908ec2f4. Package overview.

On this page