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"
default-features = false
[dependencies.rand]
optional = true
version = "^0.5"
[dependencies.rand_core]
default-features = false
version = "0.2"
[dev-dependencies]
criterion = "0.2"
rand = "0.5"
[[bench]]
name = "x25519"
@ -36,7 +37,7 @@ harness = false
[features]
default = ["std", "nightly", "u64_backend"]
std = ["rand", "curve25519-dalek/std"]
std = ["curve25519-dalek/std"]
nightly = ["curve25519-dalek/nightly"]
u64_backend = ["curve25519-dalek/u64_backend"]
u32_backend = ["curve25519-dalek/u32_backend"]

View file

@ -42,9 +42,9 @@
//! # fn main() {
//! use x25519_dalek::generate_secret;
//! 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_public = generate_public(&alice_secret);
//! # }
@ -59,9 +59,9 @@
//! # fn main() {
//! # use x25519_dalek::generate_secret;
//! # 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_public = generate_public(&bob_secret);
//! # }
@ -78,13 +78,13 @@
//! # fn main() {
//! # use x25519_dalek::generate_secret;
//! # 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_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_public = generate_public(&bob_secret);
//! #
@ -104,13 +104,13 @@
//! # use x25519_dalek::diffie_hellman;
//! # use x25519_dalek::generate_secret;
//! # 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_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_public = generate_public(&bob_secret);
//! #
@ -128,13 +128,11 @@
extern crate curve25519_dalek;
#[cfg(feature = "std")]
extern crate rand;
extern crate rand_core;
#[cfg(all(test, feature = "bench"))]
extern crate test;
#[cfg(test)]
extern crate rand;
mod x25519;
#[allow(missing_docs)]
pub use x25519::*;

View file

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