Switch to using traits from rand_core instead of rand.

This commit is contained in:
Isis Lovecruft 2018-07-23 17:15:09 +00:00
parent 811e3abd27
commit 1aec62c6be
Failed to extract signature
3 changed files with 23 additions and 23 deletions

View file

@ -23,12 +23,13 @@ travis-ci = { repository = "dalek-cryptography/x25519-dalek", branch = "master"}
version = "^0.18" version = "^0.18"
default-features = false default-features = false
[dependencies.rand] [dependencies.rand_core]
optional = true default-features = false
version = "^0.5" version = "0.2"
[dev-dependencies] [dev-dependencies]
criterion = "0.2" criterion = "0.2"
rand = "0.5"
[[bench]] [[bench]]
name = "x25519" name = "x25519"
@ -36,7 +37,7 @@ harness = false
[features] [features]
default = ["std", "nightly", "u64_backend"] default = ["std", "nightly", "u64_backend"]
std = ["rand", "curve25519-dalek/std"] std = ["curve25519-dalek/std"]
nightly = ["curve25519-dalek/nightly"] nightly = ["curve25519-dalek/nightly"]
u64_backend = ["curve25519-dalek/u64_backend"] u64_backend = ["curve25519-dalek/u64_backend"]
u32_backend = ["curve25519-dalek/u32_backend"] u32_backend = ["curve25519-dalek/u32_backend"]

View file

@ -42,9 +42,9 @@
//! # fn main() { //! # fn main() {
//! use x25519_dalek::generate_secret; //! use x25519_dalek::generate_secret;
//! use x25519_dalek::generate_public; //! use x25519_dalek::generate_public;
//! use rand::OsRng; //! use rand::thread_rng;
//! //!
//! let mut alice_csprng = OsRng::new().unwrap(); //! let mut alice_csprng = thread_rng();
//! let alice_secret = generate_secret(&mut alice_csprng); //! let alice_secret = generate_secret(&mut alice_csprng);
//! let alice_public = generate_public(&alice_secret); //! let alice_public = generate_public(&alice_secret);
//! # } //! # }
@ -59,9 +59,9 @@
//! # fn main() { //! # fn main() {
//! # use x25519_dalek::generate_secret; //! # use x25519_dalek::generate_secret;
//! # use x25519_dalek::generate_public; //! # use x25519_dalek::generate_public;
//! # use rand::OsRng; //! # use rand::thread_rng;
//! # //! #
//! let mut bob_csprng = OsRng::new().unwrap(); //! let mut bob_csprng = thread_rng();
//! let bob_secret = generate_secret(&mut bob_csprng); //! let bob_secret = generate_secret(&mut bob_csprng);
//! let bob_public = generate_public(&bob_secret); //! let bob_public = generate_public(&bob_secret);
//! # } //! # }
@ -78,13 +78,13 @@
//! # fn main() { //! # fn main() {
//! # use x25519_dalek::generate_secret; //! # use x25519_dalek::generate_secret;
//! # use x25519_dalek::generate_public; //! # use x25519_dalek::generate_public;
//! # use rand::OsRng; //! # use rand::thread_rng;
//! # //! #
//! # let mut alice_csprng = OsRng::new().unwrap(); //! # let mut alice_csprng = thread_rng();
//! # let alice_secret = generate_secret(&mut alice_csprng); //! # let alice_secret = generate_secret(&mut alice_csprng);
//! # let alice_public = generate_public(&alice_secret); //! # let alice_public = generate_public(&alice_secret);
//! # //! #
//! # let mut bob_csprng = OsRng::new().unwrap(); //! # let mut bob_csprng = thread_rng();
//! # let bob_secret = generate_secret(&mut bob_csprng); //! # let bob_secret = generate_secret(&mut bob_csprng);
//! # let bob_public = generate_public(&bob_secret); //! # let bob_public = generate_public(&bob_secret);
//! # //! #
@ -104,13 +104,13 @@
//! # use x25519_dalek::diffie_hellman; //! # use x25519_dalek::diffie_hellman;
//! # use x25519_dalek::generate_secret; //! # use x25519_dalek::generate_secret;
//! # use x25519_dalek::generate_public; //! # use x25519_dalek::generate_public;
//! # use rand::OsRng; //! # use rand::thread_rng;
//! # //! #
//! # let mut alice_csprng = OsRng::new().unwrap(); //! # let mut alice_csprng = thread_rng();
//! # let alice_secret = generate_secret(&mut alice_csprng); //! # let alice_secret = generate_secret(&mut alice_csprng);
//! # let alice_public = generate_public(&alice_secret); //! # let alice_public = generate_public(&alice_secret);
//! # //! #
//! # let mut bob_csprng = OsRng::new().unwrap(); //! # let mut bob_csprng = thread_rng();
//! # let bob_secret = generate_secret(&mut bob_csprng); //! # let bob_secret = generate_secret(&mut bob_csprng);
//! # let bob_public = generate_public(&bob_secret); //! # let bob_public = generate_public(&bob_secret);
//! # //! #
@ -128,13 +128,11 @@
extern crate curve25519_dalek; extern crate curve25519_dalek;
#[cfg(feature = "std")] extern crate rand_core;
extern crate rand;
#[cfg(all(test, feature = "bench"))] #[cfg(test)]
extern crate test; extern crate rand;
mod x25519; mod x25519;
#[allow(missing_docs)]
pub use x25519::*; pub use x25519::*;

View file

@ -16,8 +16,8 @@ use curve25519_dalek::constants::ED25519_BASEPOINT_TABLE;
use curve25519_dalek::montgomery::MontgomeryPoint; use curve25519_dalek::montgomery::MontgomeryPoint;
use curve25519_dalek::scalar::Scalar; use curve25519_dalek::scalar::Scalar;
#[cfg(feature = "std")] use rand_core::RngCore;
use rand::Rng; use rand_core::CryptoRng;
/// "Decode" a scalar from a 32-byte array. /// "Decode" a scalar from a 32-byte array.
/// ///
@ -38,8 +38,9 @@ fn decode_scalar(scalar: &[u8; 32]) -> Scalar {
} }
/// Generate an x25519 secret key. /// Generate an x25519 secret key.
#[cfg(feature = "std")] pub fn generate_secret<T>(csprng: &mut T) -> [u8; 32]
pub fn generate_secret<T: Rng>(csprng: &mut T) -> [u8; 32] { where T: RngCore + CryptoRng
{
let mut bytes = [0u8; 32]; let mut bytes = [0u8; 32];
csprng.fill_bytes(&mut bytes); csprng.fill_bytes(&mut bytes);
bytes bytes