// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // Copyright by contributors to this project. // SPDX-License-Identifier: (Apache-2.0 OR MIT)
use mls_rs_core::{
error::IntoAnyError, identity::IdentityProvider, key_package::KeyPackageStorage,
};
#[cfg_attr(not(mls_build_async), maybe_async::must_be_sync)] pub(crate) asyncfn validate_group_info_joiner<C, I>(
msg_version: ProtocolVersion,
group_info: &GroupInfo,
tree: Option<ExportedTree<'_>>,
id_provider: &I,
cs: &C,
) -> Result<TreeKemPublic, MlsError> where
C: CipherSuiteProvider,
I: IdentityProvider,
{ let tree = match group_info.extensions.get_as::<RatchetTreeExt>()? {
Some(ext) => ext.tree_data,
None => tree.ok_or(MlsError::RatchetTreeNotFound)?,
};
let context = &group_info.group_context;
letmut tree =
TreeKemPublic::import_node_data(tree.into(), id_provider, &context.extensions).await?;
// Verify the integrity of the ratchet tree
TreeValidator::new(cs, context, id_provider)
.validate(&mut tree)
.await?;
#[cfg(feature = "by_ref_proposal")] iflet Some(ext_senders) = context.extensions.get_as::<ExternalSendersExt>()? { // TODO do joiners verify group against current time??
ext_senders
.verify_all(id_provider, None, &context.extensions)
.await
.map_err(|e| MlsError::IdentityProviderError(e.into_any_error()))?;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.