API Reference
This page reflects the public API exported by src/rfc9420.
Main Imports
from rfc9420 import (
GroupConfig,
MLSGroup,
StagedCommit,
PublicGroup,
ProtocolMLSGroup,
DefaultCryptoProvider,
MemoryStorageProvider,
DefaultRandProvider,
get_commit_sender_leaf_index,
)
from rfc9420.api.session import MLSGroupSession
from rfc9420.api.policy import MLSAppPolicy, MLSOrchestrator, CommitIngestResult
GroupConfig
Dataclass in rfc9420.providers.config:
crypto_provider(required)storage_provider(required)identity_provider(optional)rand_provider(optional)tree_backend_id("array"default)secret_tree_window_size(128default)max_generation_gap(1000default)aead_limit_bytes(optional)
Helper:
resolved_rand_provider() -> RandProviderProtocol
MLSGroupSession
Module: rfc9420.api.session
Constructors
create_with_config(config, group_id, key_package, initial_extensions=b"")join_from_welcome_with_config(config, welcome, hpke_private_key, key_package=None)deserialize_with_config(config, data)
Handshake Methods (bytes I/O)
add_member(key_package, signing_key) -> bytesupdate_self(leaf_node, signing_key) -> bytesremove_member(removed_index, signing_key) -> bytesprocess_proposal(handshake_bytes, sender_leaf_index) -> Nonerevoke_proposal(proposal_ref) -> Nonecommit(signing_key, return_per_joiner_welcomes=False) -> tuple[bytes, list[Welcome]]apply_commit(handshake_bytes, sender_leaf_index) -> None
Application Methods
protect_application(plaintext, signing_key=None) -> bytesunprotect_application(ciphertext_bytes) -> tuple[int, bytes]
Export/Policy/Persistence
export_secret(label, context, length) -> bytesget_resumption_psk() -> bytesapply_policy(policy: MLSAppPolicy) -> Noneget_effective_policy() -> dict[str, int | None]serialize() -> bytesclose() -> None
Properties
epochgroup_idown_leaf_indexmember_count
MLSGroup (active group API)
Module: rfc9420.group.mls_group.group (re-exported from rfc9420).
Constructors
create(config, group_id, key_package, initial_extensions=b"")join_from_welcome(config, welcome, hpke_private_key, key_package=None)from_bytes(config, data)
Commit/Proposal API
create_commit(signing_key, return_per_joiner_welcomes=False) -> StagedCommitapply_staged_commit(staged) -> Noneadd(key_package, signing_key) -> MLSPlaintextupdate(leaf_node, signing_key) -> MLSPlaintextremove(removed_index, signing_key) -> MLSPlaintextprocess_proposal(message, sender_leaf_index, sender_type=1) -> Noneprocess_commit(message, sender_leaf_index=None) -> Noneprocess_commit_staged(message, sender_leaf_index=None) -> StagedCommitrevoke_proposal(proposal_ref) -> None
Data/Exporter API
protect(application_data, signing_key=None) -> MLSCiphertextunprotect(message) -> tuple[int, bytes]export_secret(label, context, length) -> bytesget_resumption_psk() -> bytes
Properties
configepochgroup_idown_leaf_indexmember_count
StagedCommit
Module: rfc9420.group.mls_group.staged_commit
Fields:
commit_messagewelcomesnew_epoch_stateprior_epochgroup_idown_leaf_indextree_backend_id
Method:
async merge(storage_provider) -> None
PublicGroup
Module: rfc9420.group.public_group.group
from_group_info(crypto_provider, group_info, tree_backend=DEFAULT_TREE_BACKEND)process_handshake(plaintext) -> Noneget_leaf_node(leaf_index) -> Any
Properties: group_id, epoch, member_count.
get_commit_sender_leaf_index
Utility from rfc9420.group.mls_group.group (re-exported):
sender = get_commit_sender_leaf_index(commit_bytes)
session.apply_commit(commit_bytes, sender)
Protocol Layer (ProtocolMLSGroup)
Low-level state machine exported as ProtocolMLSGroup from rfc9420.
Used for advanced/internal flows (external commit, PSK, re-init, custom validation).
Typical access in app code is through session._group._inner or group._inner.
Backends
Crypto / Random
DefaultCryptoProvider(rfc9420.backends.crypto.default_hpke)DefaultRandProvider(rfc9420.backends.crypto.default_rand)
Storage
MemoryStorageProvider(rfc9420.backends.storage.memory)SQLiteStorageProvider(rfc9420.backends.storage.sqlite, imported lazily fromrfc9420.backends.storage)
Identity
X509IdentityProvider(rfc9420.backends.identity.x509_validator)
Policy API
rfc9420.api.policy:
MLSAppPolicy: runtime and operational policy.CommitIngestResult: ingest status record.MLSOrchestrator: conflict handling + retention aroundMLSGroupSession.
Tree Backend Constants
From rfc9420:
BACKEND_ARRAYBACKEND_PERFECTBACKEND_LINKEDDEFAULT_TREE_BACKEND
Common Exceptions
Exported from rfc9420:
RFC9420Error(base)ProtocolError,CryptoError,StateError,MalformedMessageErrorInvalidWelcomeError,InvalidProposalError,InvalidCommitError,InvalidSignatureErrorCommitValidationErrorSameEpochCommitErrorPendingCommitError,PendingProposalError,NoPendingCommitErrorUseAfterEvictionErrorCannotDecryptOwnMessageErrorTLSDecodeError(fromrfc9420.codec.tls)