#![cfg_attr(
feature = "custody",
doc = r#"
```no_run
use std::sync::Arc;
use dig_keystore::{
Keystore, Password, KdfParams,
scheme::BlsSigning,
backend::{FileBackend, BackendKey, KeychainBackend},
};
# fn main() -> dig_keystore::Result<()> {
let backend: Arc<dyn KeychainBackend> = Arc::new(FileBackend::new("/var/dig/keys"));
let key = BackendKey::new("validator_bls");
let password = Password::from("correct horse battery staple");
// Create
let ks = Keystore::<BlsSigning>::create(
backend.clone(),
key.clone(),
password.clone(),
None, // generate a fresh seed
KdfParams::default(),
)?;
// Unlock + sign
let signer = ks.unlock(password)?;
let sig = signer.sign(b"message");
let pk = signer.public_key();
# Ok(())
# }
```
"#
)]
#![deny(unsafe_code)]
#![warn(missing_docs)]
pub mod backend;
mod cipher;
#[cfg(feature = "custody")]
mod custody;
mod error;
mod format;
pub mod hardware;
mod kdf;
pub mod opaque;
mod password;
#[cfg(feature = "file-backend")]
pub use backend::FileBackend;
pub use backend::MemoryBackend;
#[cfg(feature = "os-keychain")]
pub use backend::OsKeychainBackend;
pub use backend::{BackendKey, KeychainBackend};
pub use error::{KeystoreError, Result};
pub use format::{CipherId, KdfId, KdfParams, KeystoreHeader, FORMAT_VERSION_V1};
pub use hardware::{
DegradeReason, HardwareBoundBackend, HardwareKind, HardwarePolicy, HardwareProbe,
HardwareProvider, KeyCustody, ProtectionTier,
};
pub use password::Password;
#[cfg(feature = "custody")]
pub use custody::keystore::Keystore;
#[cfg(feature = "custody")]
pub use custody::scheme;
#[cfg(feature = "custody")]
pub use custody::scheme::{BlsSigning, KeyScheme, L1WalletBls};
#[cfg(feature = "custody")]
pub use custody::signer::SignerHandle;
pub mod bls {
pub use chia_bls::{sign, verify};
pub use chia_bls::{PublicKey, SecretKey, Signature};
}
#[cfg(feature = "testing")]
pub mod testing {
pub use crate::backend::MemoryBackend;
pub const TEST_PASSWORD: &str = "dig-keystore-test-password";
}