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). Use MaExtension to build the ma: extension field, and config::SecretBundle::build_document (config feature) as the single entry point for a complete, signed document.
  • 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. Also provides config::SecretBundle::build_document and config::SecretBundle::signing_key for constructing ready-to-publish DID documents.

§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 did::Did;
pub use did::DID_PREFIX;
pub use doc::now_iso_utc;
pub use doc::Document;
pub use doc::MaExtension;
pub use doc::Proof;
pub use doc::VerificationMethod;
pub use doc::DEFAULT_DID_CONTEXT;
pub use doc::DEFAULT_PROOF_PURPOSE;
pub use doc::DEFAULT_PROOF_TYPE;
pub use error::Error;
pub use error::MaError;
pub use error::Result;
pub use identity::generate_identity;
pub use identity::generate_identity_from_secret;
pub use identity::ipns_from_secret;
pub use identity::GeneratedIdentity;
pub use key::EncryptionKey;
pub use key::SigningKey;
pub use key::ASSERTION_METHOD_KEY_TYPE;
pub use key::ED25519_PUB_CODEC;
pub use key::EDDSA_SIG_CODEC;
pub use key::KEY_AGREEMENT_KEY_TYPE;
pub use key::X25519_PUB_CODEC;
pub use msg::Envelope;
pub use msg::Headers;
pub use msg::Message;
pub use msg::ReplayGuard;
pub use msg::DEFAULT_MAX_CLOCK_SKEW_SECS;
pub use msg::DEFAULT_MESSAGE_TTL_SECS;
pub use msg::DEFAULT_REPLAY_WINDOW_SECS;
pub use msg::MESSAGE_PREFIX;
pub use acl::Acl;
pub use service::Service;
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_ID;
pub use service::IPFS_PROTOCOL_ID;
pub use service::RPC_PROTOCOL_ID;
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.
constants
did
doc
endpoint
Endpoint trait.
error
Error types for ma-core.
identity
Identity 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-relaterte APIs.
key
msg
service
Service trait for ma endpoint protocol handlers.
topic
transport
Transport string parsing and endpoint resolution from DID documents.

Structs§

Outbox
A transport-agnostic write handle to a remote service.

Enums§

Ipld
Ipld

Functions§

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