diff --git a/Cargo.toml b/Cargo.toml index 591f8dcb0..071c845af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,5 +68,5 @@ byteorder = "^1.2.1" libc = "^0.2.1" getopts = "^0.2" isatty = "0.1" -rand = "0.4.2" +rand = "0.5.1" pnet = "^0.21.0" diff --git a/src/bin/client-demo.rs b/src/bin/client-demo.rs index 9f629cb8f..0ecd773b1 100644 --- a/src/bin/client-demo.rs +++ b/src/bin/client-demo.rs @@ -137,7 +137,9 @@ fn main() { let last_id = client.get_last_id(); println!("Got last ID {:?}", last_id); - let rnd = GenKeys::new(demo.mint.keypair().public_key_bytes()); + let mut seed = [0u8; 32]; + seed.copy_from_slice(&demo.mint.keypair().public_key_bytes()[..32]); + let rnd = GenKeys::new(seed); println!("Creating keypairs..."); let txs = demo.num_accounts / 2; diff --git a/src/bin/genesis-demo.rs b/src/bin/genesis-demo.rs index 3ffe9d0da..acf2a579a 100644 --- a/src/bin/genesis-demo.rs +++ b/src/bin/genesis-demo.rs @@ -32,7 +32,9 @@ fn main() { exit(1); }); - let rnd = GenKeys::new(demo.mint.keypair().public_key_bytes()); + let mut seed = [0u8; 32]; + seed.copy_from_slice(&demo.mint.keypair().public_key_bytes()[..32]); + let rnd = GenKeys::new(seed); let num_accounts = demo.num_accounts; let tokens_per_user = 1_000; diff --git a/src/signature.rs b/src/signature.rs index b32ccbdc3..cfa574ea1 100644 --- a/src/signature.rs +++ b/src/signature.rs @@ -56,9 +56,8 @@ pub struct GenKeys { } impl GenKeys { - pub fn new(seed: &[u8]) -> GenKeys { - let seed32: Vec<_> = seed.iter().map(|&x| x as u32).collect(); - let rng = ChaChaRng::from_seed(&seed32); + pub fn new(seed: [u8; 32]) -> GenKeys { + let rng = ChaChaRng::from_seed(seed); GenKeys { generator: RefCell::new(rng), } @@ -68,7 +67,7 @@ impl GenKeys { KeyPair::generate_pkcs8(self).unwrap().to_vec() } - pub fn gen_n_seeds(&self, n: i64) -> Vec<[u8; 16]> { + pub fn gen_n_seeds(&self, n: i64) -> Vec<[u8; 32]> { let mut rng = self.generator.borrow_mut(); (0..n).map(|_| rng.gen()).collect() } @@ -77,7 +76,7 @@ impl GenKeys { self.gen_n_seeds(n) .into_par_iter() .map(|seed| { - let pkcs8 = GenKeys::new(&seed).new_key(); + let pkcs8 = GenKeys::new(seed).new_key(); KeyPair::from_pkcs8(untrusted::Input::from(&pkcs8)).unwrap() }) .collect() @@ -87,7 +86,7 @@ impl GenKeys { impl SecureRandom for GenKeys { fn fill(&self, dest: &mut [u8]) -> Result<(), Unspecified> { let mut rng = self.generator.borrow_mut(); - rng.fill_bytes(dest); + rng.fill(dest); Ok(()) } } @@ -99,17 +98,17 @@ mod tests { #[test] fn test_new_key_is_deterministic() { - let seed = [1, 2, 3, 4]; - let rng0 = GenKeys::new(&seed); - let rng1 = GenKeys::new(&seed); + let seed = [0u8; 32]; + let rng0 = GenKeys::new(seed); + let rng1 = GenKeys::new(seed); for _ in 0..100 { assert_eq!(rng0.new_key(), rng1.new_key()); } } - fn gen_n_pubkeys(seed: &[u8], n: i64) -> HashSet { - GenKeys::new(&seed) + fn gen_n_pubkeys(seed: [u8; 32], n: i64) -> HashSet { + GenKeys::new(seed) .gen_n_keypairs(n) .into_iter() .map(|x| x.pubkey()) @@ -118,8 +117,8 @@ mod tests { #[test] fn test_gen_n_pubkeys_deterministic() { - let seed = [1, 2, 3, 4]; - assert_eq!(gen_n_pubkeys(&seed, 50), gen_n_pubkeys(&seed, 50)); + let seed = [0u8; 32]; + assert_eq!(gen_n_pubkeys(seed, 50), gen_n_pubkeys(seed, 50)); } }