// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // Copyright by contributors to this project. // SPDX-License-Identifier: (Apache-2.0 OR MIT) #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(coverage_nightly, feature(coverage_attribute))] extern crate alloc; #[cfg(all(test, target_arch = "wasm32"))] wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); pub mod crypto; pub mod debug; pub mod error; pub mod extension; pub mod group; pub mod identity; pub mod key_package; pub mod protocol_version; pub mod psk; pub mod secret; pub mod time; pub use mls_rs_codec; #[cfg(feature = "arbitrary")] pub use arbitrary; #[cfg(feature = "serde")] pub mod zeroizing_serde { use alloc::vec::Vec; use serde::{Deserializer, Serializer}; use zeroize::Zeroizing; use crate::vec_serde; pub fn serialize(v: &Zeroizing>, s: S) -> Result { vec_serde::serialize(v, s) } pub fn deserialize<'de, D: Deserializer<'de>>(d: D) -> Result>, D::Error> { vec_serde::deserialize(d).map(Zeroizing::new) } } #[cfg(feature = "serde")] pub mod vec_serde { use alloc::vec::Vec; use serde::{Deserializer, Serializer}; pub fn serialize(v: &Vec, s: S) -> Result { if s.is_human_readable() { hex::serde::serialize(v, s) } else { serde_bytes::serialize(v, s) } } pub fn deserialize<'de, D: Deserializer<'de>>(d: D) -> Result, D::Error> { if d.is_human_readable() { hex::serde::deserialize(d) } else { serde_bytes::deserialize(d) } } }