diff --git a/Cargo.toml b/Cargo.toml index b0ac1af629d8883129f098db231359bb33792fb2..93abfbc20f4b04da6d85122a0dead9c8b656c7f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,8 +29,9 @@ zeroize = { version = "1.1.0", features = ["zeroize_derive"] } bincode = "1.2.0" [features] -default = ["dewif", "ser"] +default = ["dewif", "rand", "ser"] aes256 = ["aes"] dewif = ["aes256", "arrayvec"] +rand = [] ser = ["serde"] diff --git a/src/hashs/mod.rs b/src/hashs/mod.rs index 8268083162db83d6ccd68cc136bb7803ace80082..a89af43bc0df51c69074d4e06dc2086748453247 100644 --- a/src/hashs/mod.rs +++ b/src/hashs/mod.rs @@ -16,6 +16,7 @@ //! Provide wrappers for cryptographic hashs use crate::bases::*; +#[cfg(feature = "rand")] use crate::rand::UnspecifiedRandError; use ring::digest; #[cfg(feature = "ser")] @@ -57,6 +58,7 @@ impl Hash { /// Hash size (in bytes). pub const SIZE_IN_BYTES: usize = 32; + #[cfg(feature = "rand")] /// Generate a random Hash #[inline] pub fn random() -> Result<Self, UnspecifiedRandError> { @@ -102,6 +104,7 @@ mod tests { use super::*; + #[cfg(feature = "rand")] #[test] fn test_hash_random() { let hash1 = Hash::random(); diff --git a/src/keys/ed25519.rs b/src/keys/ed25519.rs index c2697484d3b4e660e2959aa20ed3eef8d185ad92..e6690a0fb09a94fcee1796a9d55f55ce198e056b 100644 --- a/src/keys/ed25519.rs +++ b/src/keys/ed25519.rs @@ -23,6 +23,7 @@ use super::PublicKey as PublicKeyMethods; use super::{PubkeyFromBytesError, SigError}; use crate::bases::b58::{bytes_to_str_base58, ToBase58}; use crate::bases::*; +#[cfg(feature = "rand")] use crate::rand::UnspecifiedRandError; use crate::seeds::Seed32; use base64; @@ -278,6 +279,7 @@ pub struct Ed25519KeyPair { } impl Ed25519KeyPair { + #[cfg(feature = "rand")] /// Generate random keypair pub fn generate_random() -> Result<Self, UnspecifiedRandError> { Ok(KeyPairFromSeed32Generator::generate(Seed32::random()?)) diff --git a/src/lib.rs b/src/lib.rs index 7793628d893183004230c56202c455929a0fc965..0eeb19e164dbcb34e017e1132ef862af533df82f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -38,5 +38,6 @@ pub mod bases; pub mod dewif; pub mod hashs; pub mod keys; +#[cfg(feature = "rand")] pub mod rand; pub mod seeds; diff --git a/src/seeds.rs b/src/seeds.rs index 089c26c73df2c0bfb4df47e30fe3e61b12ead6bc..c94b9cab9d82f4d9c1e3c6b9e9335339050ab3b4 100644 --- a/src/seeds.rs +++ b/src/seeds.rs @@ -17,6 +17,7 @@ use crate::bases::b58::{bytes_to_str_base58, ToBase58}; use crate::bases::*; +#[cfg(feature = "rand")] use crate::rand::UnspecifiedRandError; #[cfg(feature = "ser")] use serde::{Deserialize, Serialize}; @@ -64,6 +65,7 @@ impl Seed32 { pub fn from_base58(base58_str: &str) -> Result<Self, BaseConvertionError> { Ok(Seed32::new(b58::str_base58_to_32bytes(base58_str)?.0)) } + #[cfg(feature = "rand")] #[inline] /// Generate random seed pub fn random() -> Result<Seed32, UnspecifiedRandError> { @@ -75,8 +77,10 @@ impl Seed32 { #[cfg(test)] mod tests { + #[cfg(feature = "rand")] use super::*; + #[cfg(feature = "rand")] #[test] fn test_gen_random_seed() { assert_ne!(Seed32::random(), Seed32::random());