Migrate from ring to ed25519-dalek, take 2 (#3844)

* Migrate from ring to ed25519-dalek

* Move gen_keypair_file test to a more appropriate location

* Fixup bench-exchange and add helper fn for single deterministic keypair

* Update golden
This commit is contained in:
Tyera Eulberg
2019-04-18 10:38:32 -06:00
committed by GitHub
parent 684e1c73dd
commit e9b82bacda
14 changed files with 150 additions and 111 deletions

View File

@@ -4,7 +4,6 @@ use rand::{Rng, SeedableRng};
use rand_chacha::ChaChaRng;
use rayon::prelude::*;
use solana_sdk::signature::Keypair;
use untrusted::Input;
pub struct GenKeys {
generator: ChaChaRng,
@@ -26,10 +25,14 @@ impl GenKeys {
(0..n).map(|_| self.gen_seed()).collect()
}
pub fn gen_keypair(&mut self) -> Keypair {
Keypair::generate(&mut self.generator)
}
pub fn gen_n_keypairs(&mut self, n: u64) -> Vec<Keypair> {
self.gen_n_seeds(n)
.into_par_iter()
.map(|seed| Keypair::from_seed_unchecked(Input::from(&seed)).unwrap())
.map(|seed| Keypair::generate(&mut ChaChaRng::from_seed(seed)))
.collect()
}
}
@@ -52,6 +55,17 @@ mod tests {
}
}
#[test]
fn test_gen_keypair_is_deterministic() {
let seed = [0u8; 32];
let mut gen0 = GenKeys::new(seed);
let mut gen1 = GenKeys::new(seed);
assert_eq!(
gen0.gen_keypair().to_bytes().to_vec(),
gen1.gen_keypair().to_bytes().to_vec()
);
}
fn gen_n_pubkeys(seed: [u8; 32], n: u64) -> HashSet<Pubkey> {
GenKeys::new(seed)
.gen_n_keypairs(n)