Skip to content
Snippets Groups Projects
Commit aa3213a5 authored by Éloïs's avatar Éloïs
Browse files

[ref] rand: make the rand module an optional feature

parent 73ab1639
No related branches found
No related tags found
No related merge requests found
...@@ -29,8 +29,9 @@ zeroize = { version = "1.1.0", features = ["zeroize_derive"] } ...@@ -29,8 +29,9 @@ zeroize = { version = "1.1.0", features = ["zeroize_derive"] }
bincode = "1.2.0" bincode = "1.2.0"
[features] [features]
default = ["dewif", "ser"] default = ["dewif", "rand", "ser"]
aes256 = ["aes"] aes256 = ["aes"]
dewif = ["aes256", "arrayvec"] dewif = ["aes256", "arrayvec"]
rand = []
ser = ["serde"] ser = ["serde"]
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
//! Provide wrappers for cryptographic hashs //! Provide wrappers for cryptographic hashs
use crate::bases::*; use crate::bases::*;
#[cfg(feature = "rand")]
use crate::rand::UnspecifiedRandError; use crate::rand::UnspecifiedRandError;
use ring::digest; use ring::digest;
#[cfg(feature = "ser")] #[cfg(feature = "ser")]
...@@ -57,6 +58,7 @@ impl Hash { ...@@ -57,6 +58,7 @@ impl Hash {
/// Hash size (in bytes). /// Hash size (in bytes).
pub const SIZE_IN_BYTES: usize = 32; pub const SIZE_IN_BYTES: usize = 32;
#[cfg(feature = "rand")]
/// Generate a random Hash /// Generate a random Hash
#[inline] #[inline]
pub fn random() -> Result<Self, UnspecifiedRandError> { pub fn random() -> Result<Self, UnspecifiedRandError> {
...@@ -102,6 +104,7 @@ mod tests { ...@@ -102,6 +104,7 @@ mod tests {
use super::*; use super::*;
#[cfg(feature = "rand")]
#[test] #[test]
fn test_hash_random() { fn test_hash_random() {
let hash1 = Hash::random(); let hash1 = Hash::random();
......
...@@ -23,6 +23,7 @@ use super::PublicKey as PublicKeyMethods; ...@@ -23,6 +23,7 @@ use super::PublicKey as PublicKeyMethods;
use super::{PubkeyFromBytesError, SigError}; use super::{PubkeyFromBytesError, SigError};
use crate::bases::b58::{bytes_to_str_base58, ToBase58}; use crate::bases::b58::{bytes_to_str_base58, ToBase58};
use crate::bases::*; use crate::bases::*;
#[cfg(feature = "rand")]
use crate::rand::UnspecifiedRandError; use crate::rand::UnspecifiedRandError;
use crate::seeds::Seed32; use crate::seeds::Seed32;
use base64; use base64;
...@@ -278,6 +279,7 @@ pub struct Ed25519KeyPair { ...@@ -278,6 +279,7 @@ pub struct Ed25519KeyPair {
} }
impl Ed25519KeyPair { impl Ed25519KeyPair {
#[cfg(feature = "rand")]
/// Generate random keypair /// Generate random keypair
pub fn generate_random() -> Result<Self, UnspecifiedRandError> { pub fn generate_random() -> Result<Self, UnspecifiedRandError> {
Ok(KeyPairFromSeed32Generator::generate(Seed32::random()?)) Ok(KeyPairFromSeed32Generator::generate(Seed32::random()?))
......
...@@ -38,5 +38,6 @@ pub mod bases; ...@@ -38,5 +38,6 @@ pub mod bases;
pub mod dewif; pub mod dewif;
pub mod hashs; pub mod hashs;
pub mod keys; pub mod keys;
#[cfg(feature = "rand")]
pub mod rand; pub mod rand;
pub mod seeds; pub mod seeds;
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
use crate::bases::b58::{bytes_to_str_base58, ToBase58}; use crate::bases::b58::{bytes_to_str_base58, ToBase58};
use crate::bases::*; use crate::bases::*;
#[cfg(feature = "rand")]
use crate::rand::UnspecifiedRandError; use crate::rand::UnspecifiedRandError;
#[cfg(feature = "ser")] #[cfg(feature = "ser")]
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
...@@ -64,6 +65,7 @@ impl Seed32 { ...@@ -64,6 +65,7 @@ impl Seed32 {
pub fn from_base58(base58_str: &str) -> Result<Self, BaseConvertionError> { pub fn from_base58(base58_str: &str) -> Result<Self, BaseConvertionError> {
Ok(Seed32::new(b58::str_base58_to_32bytes(base58_str)?.0)) Ok(Seed32::new(b58::str_base58_to_32bytes(base58_str)?.0))
} }
#[cfg(feature = "rand")]
#[inline] #[inline]
/// Generate random seed /// Generate random seed
pub fn random() -> Result<Seed32, UnspecifiedRandError> { pub fn random() -> Result<Seed32, UnspecifiedRandError> {
...@@ -75,8 +77,10 @@ impl Seed32 { ...@@ -75,8 +77,10 @@ impl Seed32 {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
#[cfg(feature = "rand")]
use super::*; use super::*;
#[cfg(feature = "rand")]
#[test] #[test]
fn test_gen_random_seed() { fn test_gen_random_seed() {
assert_ne!(Seed32::random(), Seed32::random()); assert_ne!(Seed32::random(), Seed32::random());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment