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). UseMaExtensionto build thema:extension field, andconfig::SecretBundle::build_document(configfeature) 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
Messageobjects to remote endpoints, serialized to CBOR on the wire. - Endpoint abstraction — the
MaEndpointtrait 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— enablesConfig,SecretBundle, andMaArgsfor YAML-based daemon configuration, encrypted secret bundles, and CLI argument parsing. Also providesconfig::SecretBundle::build_documentandconfig::SecretBundle::signing_keyfor 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-coresupports 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)+kubofeature). - wasm builds expose only
ipfs::gateway_resolver(no native RPC helpers). configserialization andSecretBundlecrypto work on wasm.configfilesystem 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.