core_crypto_ffi/core_crypto/
randomness.rs

1#[cfg(target_family = "wasm")]
2use wasm_bindgen::prelude::*;
3
4use crate::{CoreCrypto, CoreCryptoError, CoreCryptoResult};
5
6use super::EntropySeed;
7
8#[cfg_attr(not(target_family = "wasm"), uniffi::export)]
9#[cfg_attr(target_family = "wasm", wasm_bindgen)]
10impl CoreCrypto {
11    /// See [core_crypto::mls::MlsCentral::random_bytes]
12    pub async fn random_bytes(&self, len: u32) -> CoreCryptoResult<Vec<u8>> {
13        let len = len.try_into().map_err(CoreCryptoError::generic())?;
14        self.inner.random_bytes(len).map_err(Into::into)
15    }
16
17    /// see [core_crypto::prelude::MlsCryptoProvider::reseed]
18    pub async fn reseed_rng(&self, seed: EntropySeed) -> CoreCryptoResult<()> {
19        let seed = core_crypto::prelude::EntropySeed::try_from_slice(&seed).map_err(CoreCryptoError::generic())?;
20        self.inner.reseed(Some(seed)).await?;
21
22        Ok(())
23    }
24}