All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- #1666: Add
members()
andgroup_context()
getter methods toStagedWelcome
. - #1672: Add
epoch()
getter method toVerifiableGroupInfo
. - #1673: Return more specific error when attemtping to decrypt own messages:
ProcessMessageError::ValidationError(ValidationError::CannotDecryptOwnMessage)
.
- #1639: Introduce
PublicStorageProvider
trait to independently allow for the storage ofPublicGroup
instances. - #1641: Extend the
PublicGroup
API withadd_proposal()
,remove_proposal()
, andqueued_proposals()
.
- #1637: Remove
serde
fromMlsGroup
. - #1638: Remove
serde
fromPublicGroup
.PublicGroup::load()
becomes public to load a group from the storage provider. - #1642:
OpenMlsProvider
is no longer required for thePublicGroup
API. ThePublicGroup
API now uses thePublicStorageProvider
trait directly.ProcessMessageError::InvalidSignature
was removed and replaced withValidationError::InvalidSignature
.
- #1641: Fixed missing storage of queued proposals & clearing of the queued proposals.
- #1629: Add
add_members_without_update
function toMlsGroup
to allow the creation of add-only commits - #1506: Add
StagedWelcome
andStagedCoreWelcome
to make joining a group staged in order to inspect theWelcome
message. This was followed up with PR #1533 to adjust the API. - #1516: Add
MlsGroup::clear_pending_proposals
to the public API; this allows users to clear a group's internalProposalStore
- #1565: Add new
StorageProvider
trait to theopenmls_traits
crate.
- #1464: Add builder pattern for
MlsGroup
; splitMlsGroupJoinConfig
intoMlsGroupCreateConfig
andMlsGroupJoinConfig
- #1473: Allow setting group context extensions when building an MlsGroup(Config).
- #1475: Fully process GroupContextExtension proposals
- #1477: Allow setting leaf node extensions and capabilities of the group creator when creating an MlsGroup(Config)
- #1478: Remove explicit functions to set
RequiredCapabilitiesExtension
andExternalSendersExtension
when building an MlsGroup(Config) in favor of the more general function to set group context extensions - #1479: Allow the use of extensions with
ExtensionType::Unknown
in group context, key packages and leaf nodes - #1488: Allow unknown credentials. Credentials other than the basic credential or X.509 may be used now as long as they are encoded as variable-sized vectors.
- #1527: CredentialType::Unknown is now called CredentialType::Other.
- #1543: PreSharedKeyId.write_to_key_store() no longer requires the cipher suite.
- #1546: Add experimental ciphersuite based on the PQ-secure XWing hybrid KEM (currently supported only by the libcrux crypto provider).
- #1548: CryptoConfig is now replaced by just Ciphersuite.
- #1542: Add support for custom proposals. ProposalType::Unknown is now called ProposalType::Other. Proposal::Unknown is now called Proposal::Other.
- #1559: Remove the
PartialEq
type constraint on the error type of both theOpenMlsRand
andOpenMlsKeyStore
traits. Additionally, remove theClone
type constraint on the error type of theOpenMlsRand
trait. - #1565: Removed
OpenMlsKeyStore
and replace it with a newStorageProvider
trait in theopenmls_traits
crate. - #1606: Added additional
LeafNodeParameters
argument toMlsGroup.self_update()
andMlsGroup.propose_self_update()
to allow for updating the leaf node with custom parameters.MlsGroup::join_by_external_commit()
now also takes optional parameters to set the capabilities and the extensions of the LeafNode. - #1615: Changes the AAD handling. The AAD is no longer persisted and needs to be set before every API call that generates an
MlsMessageOut
. The functionsProccessedMessage
to accees the AAD has been renamed toaad()
.
- #1503: Fix
CoreGroup
to check forLastResortExtension
before deleting leaf encryption keypair from the key store innew_from_welcome
; this allows the sameKeyPackage
(with last resort extension) to be used to join multiple groups
This release has many breaking API changes, a few of them are listed below:
- #902: Implement External Add proposal (NewMember sender only) and replace
bySender::NewMember
Sender::NewMemberProposal
andSender::NewMemberCommit
for external proposals and external commits repectively - #903: Rename MlsGroup's resumptionn_secret to resumption_secret
- #1058: Rename resumption_secret to resumption_psk
- #900: Expose SerializedMlsGroup until issue #245 is done
- #1117: Remove signature key indirection
- #1123: Rename ResumptionPsk to ResumptionPskSecret and resumption_psk to resumption_psk_secret
- #1155: MlsGroup.members() now returns an iterator over group members, MlsGroup.merge_staged_commit() no longer returns a Result
- #1193:
MlsGroup.propose_self_update
takes the newLeafNode
now instead of aKeyPackage
.LeafNode.generate
can be used to generate a newLeafNode
for an update proposal.
- #873: Signature sub-module of the ciphersuite module is now public.
- #873: Signature keys can be imported and exported with the crypto-subtle feature.
- #873: BasicCredentials can now be created from existing signature keys.
- #890: Join group by External Commit API does not expect proposal store.
- initial release
Please disregard any previous versions.