From 1ee230cb56d6cea1985a67489a9d86a462492af2 Mon Sep 17 00:00:00 2001 From: Marta Mularczyk Date: Mon, 27 Jan 2025 19:39:51 +0100 Subject: [PATCH 1/2] Add API for examining roster of ExportedTree --- mls-rs/Cargo.toml | 2 +- mls-rs/src/group/exported_tree.rs | 8 ++++++++ mls-rs/src/group/roster.rs | 10 +++++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/mls-rs/Cargo.toml b/mls-rs/Cargo.toml index 9de02549..5cf6984e 100644 --- a/mls-rs/Cargo.toml +++ b/mls-rs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mls-rs" -version = "0.44.0" +version = "0.44.1" edition = "2021" description = "An implementation of Messaging Layer Security (RFC 9420)" homepage = "https://github.com/awslabs/mls-rs" diff --git a/mls-rs/src/group/exported_tree.rs b/mls-rs/src/group/exported_tree.rs index acf507fd..be0fab00 100644 --- a/mls-rs/src/group/exported_tree.rs +++ b/mls-rs/src/group/exported_tree.rs @@ -7,6 +7,8 @@ use mls_rs_codec::{MlsDecode, MlsEncode, MlsSize}; use crate::{client::MlsError, tree_kem::node::NodeVec}; +use super::Roster; + #[cfg_attr( all(feature = "ffi", not(test)), safer_ffi_gen::ffi_type(clone, opaque) @@ -35,6 +37,12 @@ impl<'a> ExportedTree<'a> { pub fn into_owned(self) -> ExportedTree<'static> { ExportedTree(Cow::Owned(self.0.into_owned())) } + + pub fn roster(&'a self) -> Roster<'a> { + Roster { + public_tree: &self.0, + } + } } #[cfg_attr(all(feature = "ffi", not(test)), ::safer_ffi_gen::safer_ffi_gen)] diff --git a/mls-rs/src/group/roster.rs b/mls-rs/src/group/roster.rs index 7f9d4cab..95ed3976 100644 --- a/mls-rs/src/group/roster.rs +++ b/mls-rs/src/group/roster.rs @@ -2,6 +2,8 @@ // Copyright by contributors to this project. // SPDX-License-Identifier: (Apache-2.0 OR MIT) +use crate::tree_kem::node::NodeVec; + use super::*; pub use mls_rs_core::group::Member; @@ -21,7 +23,7 @@ pub(crate) fn member_from_leaf_node(leaf_node: &LeafNode, leaf_index: LeafIndex) )] #[derive(Clone, Debug)] pub struct Roster<'a> { - pub(crate) public_tree: &'a TreeKemPublic, + pub(crate) public_tree: &'a NodeVec, } #[cfg_attr(all(feature = "ffi", not(test)), safer_ffi_gen::safer_ffi_gen)] @@ -60,7 +62,7 @@ impl<'a> Roster<'a> { let index = LeafIndex(index); self.public_tree - .get_leaf_node(index) + .borrow_as_leaf(index) .map(|l| member_from_leaf_node(l, index)) } @@ -81,6 +83,8 @@ impl<'a> Roster<'a> { impl TreeKemPublic { pub(crate) fn roster(&self) -> Roster { - Roster { public_tree: self } + Roster { + public_tree: &self.nodes, + } } } From b1b2e7b6418118335d6c0a603d245bf6892804ed Mon Sep 17 00:00:00 2001 From: Marta Mularczyk Date: Mon, 27 Jan 2025 19:57:13 +0100 Subject: [PATCH 2/2] Fix wasm-bindgen version --- mls-rs-codec/Cargo.toml | 2 +- mls-rs-core/Cargo.toml | 2 +- mls-rs-crypto-webcrypto/Cargo.toml | 2 +- mls-rs-identity-x509/Cargo.toml | 2 +- mls-rs-provider-sqlite/Cargo.toml | 2 +- mls-rs/Cargo.toml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mls-rs-codec/Cargo.toml b/mls-rs-codec/Cargo.toml index a68214c6..f09ae61a 100644 --- a/mls-rs-codec/Cargo.toml +++ b/mls-rs-codec/Cargo.toml @@ -24,7 +24,7 @@ assert_matches = "1.5.0" wasm-bindgen-test = { version = "=0.3.26", default-features = false } [target.'cfg(target_arch = "wasm32")'.dependencies] -wasm-bindgen = { version = "=0.2.87" } +wasm-bindgen = { version = "=0.2.100" } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(mls_build_async)'] } diff --git a/mls-rs-core/Cargo.toml b/mls-rs-core/Cargo.toml index c86abe66..25c34fd5 100644 --- a/mls-rs-core/Cargo.toml +++ b/mls-rs-core/Cargo.toml @@ -48,7 +48,7 @@ assert_matches = "1.5.0" wasm-bindgen-test = { version = "=0.3.26", default-features = false } [target.'cfg(target_arch = "wasm32")'.dependencies] -wasm-bindgen = { version = "=0.2.87" } +wasm-bindgen = { version = "=0.2.100" } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(mls_build_async)', 'cfg(coverage_nightly)'] } diff --git a/mls-rs-crypto-webcrypto/Cargo.toml b/mls-rs-crypto-webcrypto/Cargo.toml index a3ce35cc..1301c84d 100644 --- a/mls-rs-crypto-webcrypto/Cargo.toml +++ b/mls-rs-crypto-webcrypto/Cargo.toml @@ -17,7 +17,7 @@ zeroize = { version = "1", features = ["zeroize_derive"] } maybe-async = "0.2.10" async-trait = "0.1.74" js-sys = "0.3.64" -wasm-bindgen = "=0.2.87" +wasm-bindgen = "=0.2.100" wasm-bindgen-futures = "0.4.37" serde-wasm-bindgen = "0.6" serde = { version = "1.0", features = ["derive"] } diff --git a/mls-rs-identity-x509/Cargo.toml b/mls-rs-identity-x509/Cargo.toml index 6ead7d3e..6543a1e8 100644 --- a/mls-rs-identity-x509/Cargo.toml +++ b/mls-rs-identity-x509/Cargo.toml @@ -31,7 +31,7 @@ wasm-bindgen-test = { version = "=0.3.26", default-features = false } getrandom = { version = "0.2", features = ["js"] } [target.'cfg(target_arch = "wasm32")'.dependencies] -wasm-bindgen = { version = "=0.2.87" } +wasm-bindgen = { version = "=0.2.100" } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(mls_build_async)'] } diff --git a/mls-rs-provider-sqlite/Cargo.toml b/mls-rs-provider-sqlite/Cargo.toml index 0dd9c57b..9a6430e2 100644 --- a/mls-rs-provider-sqlite/Cargo.toml +++ b/mls-rs-provider-sqlite/Cargo.toml @@ -11,7 +11,7 @@ license = "Apache-2.0 OR MIT" [dependencies] mls-rs-core = { path = "../mls-rs-core", version = "0.20.0" } thiserror = "1.0.40" -wasm-bindgen = { version = "=0.2.87", optional = true } +wasm-bindgen = { version = "=0.2.100", optional = true } zeroize = { version = "1", features = ["zeroize_derive"] } rusqlite = { version = "0.31", default-features = false } rand = "0.8" diff --git a/mls-rs/Cargo.toml b/mls-rs/Cargo.toml index 5cf6984e..85acdc43 100644 --- a/mls-rs/Cargo.toml +++ b/mls-rs/Cargo.toml @@ -101,7 +101,7 @@ serde = { version = "1.0", default-features = false, features = ["alloc", "deriv hex = { version = "^0.4.3", default-features = false, features = ["serde", "alloc"] } [target.'cfg(target_arch = "wasm32")'.dependencies] -wasm-bindgen = { version = "=0.2.87" } +wasm-bindgen = { version = "=0.2.100" } getrandom = { version = "0.2", features = ["js", "custom"], default-features = false } rand_core = { version = "0.6", default-features = false, features = ["alloc"] }