openmls library

Dart wrapper for OpenMLS — a Rust implementation of the Messaging Layer Security (MLS) protocol (RFC 9420)

This is the main entry point for openmls.

Getting Started

Add this package to your pubspec.yaml:

dependencies:
  openmls: ^1.0.0

Native libraries are downloaded automatically during build via Dart Build Hooks.

Usage

import 'package:openmls/openmls.dart';

void main() async {
  await Openmls.init();
  // ... use openmls APIs
}

Platform Support

  • Linux (x86_64, arm64)
  • macOS (arm64, x86_64)
  • Windows (x86_64)
  • Android (arm64-v8a, armeabi-v7a, x86_64)
  • iOS (device arm64, simulator arm64/x86_64)
  • Web (WASM)

Classes

AddMembersResult
CommitResult
CreateGroupResult
CreateMessageResult
ExternalJoinResult
FlexibleCommitOptions
Options for the flexible commit builder.
GroupConfigurationResult
JoinGroupResult
KeyPackageOptions
Options for creating a key package with the builder API.
KeyPackageResult
LeaveGroupResult
MlsCapabilities
Capabilities advertised by a leaf node.
MlsCredential
MlsEngine
MlsExtension
An MLS extension (type + data).
MlsGroupConfig
Group configuration parameters.
MlsGroupContextInfo
Full group context information.
MlsLeafNodeInfo
Full information about the own leaf node.
MlsMemberInfo
Information about a group member.
MlsPendingProposalInfo
Information about a pending proposal in the group.
MlsSignatureKeyPair
Openmls
Main API class for openmls.
ProcessedMessageInspectResult
ProcessedMessageResult
ProposalResult
SecureBytes
Wrapper for sensitive byte data with automatic zeroing on finalization.
StagedCommitInfo
Information about a staged commit before merging.
WelcomeInspectResult
Information extracted from a Welcome message before joining.

Enums

MlsCiphersuite
MLS ciphersuite selection.
MlsProposalType
MLS proposal types.
MlsWireFormatPolicy
Wire format policy for MLS messages.
ProcessedMessageType
Type of a processed incoming message.

Mixins

OpenmlsBase
Base mixin for openmls operations.

Extensions

SecureUint8List on Uint8List
Extension for zeroing sensitive Uint8List data.

Functions

mlsMessageContentType({required List<int> messageBytes}) String
Get the content type of an MLS protocol message as a string.
mlsMessageExtractEpoch({required List<int> messageBytes}) BigInt
Extract the epoch from an MLS protocol message.
mlsMessageExtractGroupId({required List<int> messageBytes}) Uint8List
Extract the group ID from an MLS protocol message.
serializeSigner({required MlsCiphersuite ciphersuite, required List<int> privateKey, required List<int> publicKey}) Uint8List
Serialize a SignatureKeyPair to JSON bytes including private key.
supportedCiphersuites() List<MlsCiphersuite>
Returns the list of supported ciphersuites.