#![deny(missing_docs)]
#![allow(clippy::needless_doctest_main)]
use holochain_serialized_bytes::prelude::*;
mod error;
pub use error::*;
mod meta_lair_client;
pub use meta_lair_client::*;
mod agent_pubkey_ext;
pub use agent_pubkey_ext::*;
pub mod lair_keystore;
pub mod paths;
mod test_keystore;
pub use test_keystore::*;
#[cfg(feature = "test_utils")]
pub mod crude_mock_keystore;
pub async fn spawn_mem_keystore() -> LairResult<MetaLairClient> {
use kitsune_p2p_types::dependencies::lair_keystore_api;
use lair_keystore_api::prelude::*;
use std::sync::Arc;
let passphrase = sodoken::BufWrite::new_mem_locked(32)?;
sodoken::random::bytes_buf(passphrase.clone()).await?;
let config = Arc::new(
PwHashLimits::Minimum
.with_exec(|| {
lair_keystore_api::config::LairServerConfigInner::new("/", passphrase.to_read())
})
.await?,
);
let keystore = lair_keystore_api::in_proc_keystore::InProcKeystore::new(
config,
lair_keystore_api::mem_store::create_mem_store_factory(),
passphrase.to_read(),
)
.await?;
let client = keystore.new_client().await?;
let (s, _) = tokio::sync::mpsc::unbounded_channel();
Ok(MetaLairClient(Arc::new(parking_lot::Mutex::new(client)), s))
}