Skip to content

Commit 952a75d

Browse files
committed
Merge remote-tracking branch 'upstream/main' into update-latest
2 parents 6bdda29 + 0da01ce commit 952a75d

20 files changed

Lines changed: 347 additions & 38 deletions

File tree

.github/workflows/tests.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,3 @@ jobs:
7878
run: |
7979
export CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER=$HOME/.cargo-install/wasm-bindgen-cli/bin/wasm-bindgen-test-runner
8080
cargo test -p openmls -vv --target wasm32-unknown-unknown -F js,js-test
81-
82-
- name: Tests Wasm32 on linux with libcrux provider
83-
run: |
84-
export CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER=$HOME/.cargo-install/wasm-bindgen-cli/bin/wasm-bindgen-test-runner
85-
cargo test -p openmls -vv --target wasm32-unknown-unknown -F js,js-test,libcrux-provider

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
## 0.8.1 (2026-02-13)
11+
12+
### Added
13+
14+
- [#1955](https://github.com/openmls/openmls/pull/1955): Expose functions that allow access to (blank) leaves and parent nodes
15+
16+
### Changed
17+
18+
- [#1964](https://github.com/openmls/openmls/pull/1964): update libcrux and rust_crypto provider dependencies, due to https://github.com/cryspen/libcrux/security/advisories/GHSA-435g-fcv3-8j26 and https://github.com/cryspen/hpke-rs/security/advisories/GHSA-g433-pq76-6cmf
19+
1020
## 0.8.0 (2026-02-04)
1121

1222
### Added

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ resolver = "2"
2222
[workspace.dependencies]
2323
tls_codec = { version = "0.4.2", features = ["derive", "serde", "mls"] }
2424

25-
openmls = { version = "0.8.0", path = "openmls" }
25+
openmls = { version = "0.8.1", path = "openmls" }
2626

2727
openmls_traits = { version = "0.5.0", path = "traits" }
2828
openmls_test = { version = "0.2.1", path = "openmls_test" }
2929
openmls_basic_credential = { version = "0.5.0", path = "basic_credential" }
3030

31-
openmls_rust_crypto = { version = "0.5.0", path = "openmls_rust_crypto" }
32-
openmls_libcrux_crypto = { version = "0.3.0", path = "libcrux_crypto" }
31+
openmls_rust_crypto = { version = "0.5.1", path = "openmls_rust_crypto" }
32+
openmls_libcrux_crypto = { version = "0.3.1", path = "libcrux_crypto" }
3333

3434
openmls_memory_storage = { version = "0.5.0", path = "memory_storage" }
3535
openmls_sqlite_storage = { version = "0.2.0", path = "sqlite_storage" }

libcrux_crypto/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## 0.3.1 (2026-02-13)
9+
10+
### Changed
11+
12+
- [#1962](https://github.com/openmls/openmls/pull/1962): update libcrux and hpke-rs dependencies
13+
814
## 0.3.0 (2026-02-04)
915

1016
### Changed

libcrux_crypto/Cargo.toml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "openmls_libcrux_crypto"
3-
version = "0.3.0"
3+
version = "0.3.1"
44
edition = "2021"
55
authors = ["OpenMLS Authors"]
66
description = "A crypto backend for OpenMLS based on libcrux implementing openmls_traits."
@@ -10,12 +10,12 @@ repository = "https://github.com/openmls/openmls/tree/main/openmls_libcrux_crypt
1010
readme = "../README.md"
1111

1212
[dependencies]
13-
libcrux-aead = { version = "0.0.5" }
14-
libcrux-ed25519 = { version = "0.0.5", features = ["rand"] }
15-
libcrux-hkdf = { version = "0.0.5" }
16-
libcrux-sha2 = { version = "0.0.5" }
17-
libcrux-hmac = { version = "0.0.5" }
18-
libcrux-traits = { version = "0.0.5" }
13+
libcrux-aead = { version = "0.0.6" }
14+
libcrux-ed25519 = { version = "0.0.6", features = ["rand"] }
15+
libcrux-hkdf = { version = "0.0.6" }
16+
libcrux-sha2 = { version = "0.0.6" }
17+
libcrux-hmac = { version = "0.0.6" }
18+
libcrux-traits = { version = "0.0.6" }
1919

2020
openmls_traits = { workspace = true }
2121
openmls_memory_storage = { workspace = true }
@@ -24,9 +24,9 @@ rand = "0.9"
2424
tls_codec.workspace = true
2525
rand_chacha = "0.9"
2626

27-
hpke-rs = { version = "0.5.1", features = ["hazmat", "serialization"] }
28-
hpke-rs-crypto = { version = "0.4.0" }
29-
hpke-rs-libcrux = { version = "0.5.1" }
27+
hpke-rs = { version = "0.6.0", features = ["hazmat", "serialization"] }
28+
hpke-rs-crypto = { version = "0.6.0" }
29+
hpke-rs-libcrux = { version = "0.6.0" }
3030

3131
[features]
3232
extensions-draft-08 = [

openmls/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "openmls"
3-
version = "0.8.0"
3+
version = "0.8.1"
44
authors = ["OpenMLS Authors"]
55
edition = "2021"
66
description = "A Rust implementation of the Messaging Layer Security (MLS) protocol, as defined in RFC 9420."

openmls/src/binary_tree/array_representation/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,15 @@
99
//! [`tree`] and [`diff`] modules for detailed documentation.
1010
1111
// Public
12-
pub use treemath::LeafNodeIndex;
12+
pub use treemath::{LeafNodeIndex, ParentNodeIndex};
1313

1414
// Crate
1515
pub(crate) mod diff;
1616
pub(crate) mod sorted_iter;
1717
pub(crate) mod tree;
1818

1919
pub(crate) use treemath::{
20-
direct_path, is_node_in_tree, left, right, root, ParentNodeIndex, TreeNodeIndex, TreeSize,
21-
MIN_TREE_SIZE,
20+
direct_path, is_node_in_tree, left, right, root, TreeNodeIndex, TreeSize, MIN_TREE_SIZE,
2221
};
2322

2423
#[cfg(any(feature = "test-utils", test))]

openmls/src/binary_tree/array_representation/treemath.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ impl ParentNodeIndex {
7070
}
7171

7272
/// Return the inner value as `u32`.
73-
pub(crate) fn u32(&self) -> u32 {
73+
pub fn u32(&self) -> u32 {
7474
self.0
7575
}
7676

openmls/src/binary_tree/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use array_representation::{
66
};
77

88
// Public
9-
pub use array_representation::LeafNodeIndex;
9+
pub use array_representation::{LeafNodeIndex, ParentNodeIndex};
1010

1111
// Crate
1212
pub(crate) mod array_representation;

openmls/src/group/mls_group/creation.rs

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use errors::NewGroupError;
2-
use openmls_traits::storage::StorageProvider as StorageProviderTrait;
2+
use openmls_traits::{crypto::OpenMlsCrypto, storage::StorageProvider as StorageProviderTrait};
33

44
use super::{builder::MlsGroupBuilder, *};
55
use crate::{
66
credentials::CredentialWithKey,
77
extensions::Extensions,
88
group::{
99
commit_builder::external_commits::ExternalCommitBuilder,
10-
errors::{ExternalCommitError, WelcomeError},
10+
errors::{ExportSecretError, ExternalCommitError, WelcomeError},
1111
},
1212
messages::{
1313
group_info::{GroupInfo, VerifiableGroupInfo},
@@ -583,6 +583,35 @@ impl StagedWelcome {
583583
pub fn public_group(&self) -> &PublicGroup {
584584
&self.public_group
585585
}
586+
587+
/// Exports a secret from the epoch of the group that is joined
588+
/// using this [`StagedWelcome`].
589+
/// Returns [`ExportSecretError::KeyLengthTooLong`] if the requested
590+
/// key length is too long.
591+
pub fn export_secret<CryptoProvider: OpenMlsCrypto>(
592+
&self,
593+
crypto: &CryptoProvider,
594+
label: &str,
595+
context: &[u8],
596+
key_length: usize,
597+
) -> Result<Vec<u8>, ExportSecretError> {
598+
if key_length > u16::MAX as usize {
599+
log::error!("Got a key that is larger than u16::MAX");
600+
return Err(ExportSecretError::KeyLengthTooLong);
601+
}
602+
603+
Ok(self
604+
.group_epoch_secrets
605+
.exporter_secret()
606+
.derive_exported_secret(
607+
self.group_context().ciphersuite(),
608+
crypto,
609+
label,
610+
context,
611+
key_length,
612+
)
613+
.map_err(LibraryError::unexpected_crypto_error)?)
614+
}
586615
}
587616

588617
fn keys_for_welcome<Provider: OpenMlsProvider>(

0 commit comments

Comments
 (0)