Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Upgrade rand #339

Merged
merged 2 commits into from
Jun 11, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -61,12 +61,12 @@ ring = "0.12.1"
untrusted = "0.5.1"
bincode = "1.0.0"
chrono = { version = "0.4.0", features = ["serde"] }
log = "^0.4.1"
env_logger = "^0.4.1"
matches = "^0.1.6"
byteorder = "^1.2.1"
libc = "^0.2.1"
getopts = "^0.2"
log = "0.4.1"
env_logger = "0.4.1"
matches = "0.1.6"
byteorder = "1.2.1"
libc = "0.2.1"
getopts = "0.2"
isatty = "0.1"
rand = "0.4.2"
pnet = "^0.21.0"
rand = "0.5.1"
pnet = "0.21.0"
4 changes: 3 additions & 1 deletion src/bin/client-demo.rs
Original file line number Diff line number Diff line change
@@ -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;
4 changes: 3 additions & 1 deletion src/bin/genesis-demo.rs
Original file line number Diff line number Diff line change
@@ -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;

25 changes: 12 additions & 13 deletions src/signature.rs
Original file line number Diff line number Diff line change
@@ -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<PublicKey> {
GenKeys::new(&seed)
fn gen_n_pubkeys(seed: [u8; 32], n: i64) -> HashSet<PublicKey> {
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));
}
}