Skip to main content

Crate ma_core

Crate ma_core 

Source
Expand description

§ma-core

A lean DIDComm service library for the ma ecosystem.

ma-core provides the building blocks for ma-capable endpoints:

  • DID documents — create, validate, resolve, and publish did:ma: documents to IPFS/IPNS (via Kubo on native targets).
  • Service inboxes — bounded, TTL-aware FIFO queues (Inbox) for receiving validated messages on named protocol services.
  • Outbound sending — fire-and-forget delivery of validated Message objects to remote endpoints, serialized to CBOR on the wire.
  • Endpoint abstraction — the MaEndpoint trait with pluggable transport backends.
  • Transport parsing — extract endpoint IDs and protocols from DID document service strings (/iroh/<id>/<protocol>).
  • Identity bootstrap — secure secret key generation and persistence.

§Services

Every endpoint must provide /ma/inbox/0.0.1 (the default inbox). Endpoints may optionally provide ma/ipfs/0.0.1 to publish DID documents on behalf of others.

§Feature flags

  • kubo — enables native IPFS RPC backend for publishing (native only).
  • iroh — enables the internal iroh QUIC transport backend.
  • gossip — enables internal iroh-gossip broadcast support.
  • config — enables Config, SecretBundle, and MaArgs for YAML-based daemon configuration, encrypted secret bundles, and CLI argument parsing.

§Platform support

Core types (Inbox, Service, transport parsing, validation) compile on all targets including wasm32-unknown-unknown.

§wasm vs native

  • ma-core supports both wasm and native targets.
  • IpfsGatewayResolver (HTTP gateway DID fetch) is available on wasm and native.
  • Native IPFS RPC write/pin APIs are native-only (not(wasm32) + kubo feature).
  • wasm builds expose only ipfs::gateway_resolver (no native RPC helpers).
  • config serialization and SecretBundle crypto work on wasm.
  • config filesystem paths, CLI/env merging, and file I/O are native-only.
  • If your wasm application needs native IPFS RPC write/pin operations, provide them in a native companion layer.

Re-exports§

pub use error::Error;
pub use error::Result;
pub use acl::Acl;
pub use service::Service;
pub use service::BROADCAST_PROTOCOL;
pub use service::BROADCAST_TOPIC;
pub use service::CONTENT_TYPE_BROADCAST;
pub use service::CONTENT_TYPE_DOC;
pub use service::CONTENT_TYPE_IPFS_REQUEST;
pub use service::CONTENT_TYPE_MESSAGE;
pub use service::INBOX_PROTOCOL;
pub use service::INBOX_PROTOCOL_ID;
pub use service::IPFS_PROTOCOL;
pub use inbox::Inbox;
pub use topic::topic_id;
pub use topic::Topic;
pub use topic::TopicId;
pub use endpoint::MaEndpoint;
pub use endpoint::DEFAULT_DELIVERY_PROTOCOL_ID;
pub use transport::endpoint_id_from_transport;
pub use transport::endpoint_id_from_transport_value;
pub use transport::normalize_endpoint_id;
pub use transport::protocol_from_transport;
pub use transport::resolve_endpoint_for_protocol;
pub use transport::resolve_inbox_endpoint_id;
pub use transport::transport_string;
pub use identity::generate_secret_key_file;
pub use identity::load_secret_key_bytes;
pub use identity::socket_addr_to_multiaddr;
pub use config::MaArgs;
pub use config::BrowserIdentityExport;
pub use config::Config;
pub use config::SecretBundle;
pub use ipfs::gateway_resolver::DidDocumentResolver;
pub use ipfs::gateway_resolver::IpfsGatewayResolver;
pub use interfaces::DidPublisher;
pub use interfaces::IpfsPublisher;
pub use ipfs::*;

Modules§

acl
Access control lists for ma identities and DID URLs.
config
Configuration for ma-core-based daemons.
endpoint
Endpoint trait.
error
Error types for ma-core.
identity
Secure secret key bootstrap helpers.
inbox
Service inbox — a bounded FIFO receive queue with per-message TTL.
interfaces
Trait interfaces for pluggable DID and IPFS publishing backends.
ipfs
IPFS-related APIs.
service
Service trait for ma endpoint protocol handlers.
topic
Gossip pub/sub topic primitive.
transport
Transport string parsing and endpoint resolution from DID documents.

Structs§

Did
A parsed did:ma: identifier.
Document
A did:ma: DID document.
EncryptionKey
X25519 encryption key for envelope key agreement.
Headers
Signed message headers (without content body).
Message
A signed actor-to-actor message.
Outbox
A transport-agnostic write handle to a remote service.
Proof
ReplayGuard
Sliding-window replay guard for message deduplication.
SigningKey
Ed25519 signing key for document proofs and message signatures.
VerificationMethod

Enums§

MaError

Constants§

DEFAULT_MAX_CLOCK_SKEW_SECS
DEFAULT_MESSAGE_TTL_SECS
DEFAULT_REPLAY_WINDOW_SECS

Functions§

new_ma_endpoint
Create a default ma endpoint backend from 32-byte secret key material.