Skip to content

Commit 4b91c82

Browse files
committed
Attempt 2 at fixing nostd tests
1 parent 5014c52 commit 4b91c82

File tree

5 files changed

+42
-20
lines changed

5 files changed

+42
-20
lines changed

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ pem = "0.8"
4444
sha-1 = { default-features = false, version = "0.9.0" }
4545
sha2 = { default-features = false, version = "0.9.0" }
4646
sha3 = { default-features = false, version = "0.9.0" }
47-
rand = { version = "0.7.0" }
4847

4948
[[bench]]
5049
name = "key"

src/key.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -658,9 +658,10 @@ mod tests {
658658
use super::*;
659659
use crate::internals;
660660

661+
use std::time::SystemTime;
661662
use digest::{Digest, DynDigest};
662663
use num_traits::{FromPrimitive, ToPrimitive};
663-
use rand::{distributions::Alphanumeric, rngs::ThreadRng, thread_rng};
664+
use rand::{distributions::Alphanumeric, rngs::StdRng, SeedableRng};
664665
use sha1::Sha1;
665666
use sha2::{Sha224, Sha256, Sha384, Sha512};
666667
use sha3::{Sha3_256, Sha3_384, Sha3_512};
@@ -693,10 +694,11 @@ mod tests {
693694
let pub_key: RSAPublicKey = private_key.clone().into();
694695
let m = BigUint::from_u64(42).expect("invalid 42");
695696
let c = internals::encrypt(&pub_key, &m);
696-
let m2 = internals::decrypt::<ThreadRng>(None, &private_key, &c)
697+
let m2 = internals::decrypt::<StdRng>(None, &private_key, &c)
697698
.expect("unable to decrypt without blinding");
698699
assert_eq!(m, m2);
699-
let mut rng = thread_rng();
700+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
701+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
700702
let m3 = internals::decrypt(Some(&mut rng), &private_key, &c)
701703
.expect("unable to decrypt with blinding");
702704
assert_eq!(m, m3);
@@ -706,7 +708,8 @@ mod tests {
706708
($name:ident, $multi:expr, $size:expr) => {
707709
#[test]
708710
fn $name() {
709-
let mut rng = thread_rng();
711+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
712+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
710713

711714
for _ in 0..10 {
712715
let private_key = if $multi == 2 {
@@ -736,7 +739,8 @@ mod tests {
736739
#[test]
737740
fn test_impossible_keys() {
738741
// make sure not infinite loops are hit here.
739-
let mut rng = thread_rng();
742+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
743+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
740744
for i in 0..32 {
741745
let _ = RSAPrivateKey::new(&mut rng, i).is_err();
742746
let _ = generate_multi_prime_key(&mut rng, 3, i);
@@ -908,7 +912,8 @@ mod tests {
908912
}
909913

910914
fn do_test_encrypt_decrypt_oaep<D: 'static + Digest + DynDigest>(prk: &RSAPrivateKey) {
911-
let mut rng = thread_rng();
915+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
916+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
912917

913918
let k = prk.size();
914919

@@ -919,7 +924,7 @@ mod tests {
919924
}
920925
let has_label: bool = rng.gen();
921926
let label: Option<String> = if has_label {
922-
Some(rng.sample_iter(&Alphanumeric).take(30).collect())
927+
Some(rng.clone().sample_iter(&Alphanumeric).take(30).collect())
923928
} else {
924929
None
925930
};
@@ -955,7 +960,8 @@ mod tests {
955960

956961
#[test]
957962
fn test_decrypt_oaep_invalid_hash() {
958-
let mut rng = thread_rng();
963+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
964+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
959965
let priv_key = get_private_key();
960966
let pub_key: RSAPublicKey = (&priv_key).into();
961967
let ciphertext = pub_key

src/lib.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
//! Using PKCS1v15.
88
//! ```
99
//! use rsa::{PublicKey, RSAPrivateKey, RSAPublicKey, PaddingScheme};
10+
//! # /*
1011
//! use rand::rngs::OsRng;
11-
//!
1212
//! let mut rng = OsRng;
13+
//! # */
14+
//! # use rand::{SeedableRng, rngs::StdRng};
15+
//! # let mut rng = rand::rngs::StdRng::seed_from_u64(0);
1316
//! let bits = 2048;
1417
//! let private_key = RSAPrivateKey::new(&mut rng, bits).expect("failed to generate a key");
1518
//! let public_key = RSAPublicKey::from(&private_key);
@@ -29,9 +32,13 @@
2932
//! Using OAEP.
3033
//! ```
3134
//! use rsa::{PublicKey, RSAPrivateKey, RSAPublicKey, PaddingScheme};
35+
//! # /*
3236
//! use rand::rngs::OsRng;
33-
//!
3437
//! let mut rng = OsRng;
38+
//! # */
39+
//! # use rand::{SeedableRng, rngs::StdRng};
40+
//! # let mut rng = rand::rngs::StdRng::seed_from_u64(0);
41+
//!
3542
//! let bits = 2048;
3643
//! let private_key = RSAPrivateKey::new(&mut rng, bits).expect("failed to generate a key");
3744
//! let public_key = RSAPublicKey::from(&private_key);

src/pkcs1v15.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -217,15 +217,17 @@ mod tests {
217217
use num_bigint::BigUint;
218218
use num_traits::FromPrimitive;
219219
use num_traits::Num;
220-
use rand::thread_rng;
220+
use rand::{SeedableRng, rngs::StdRng};
221221
use sha1::{Digest, Sha1};
222+
use std::time::SystemTime;
222223

223224
use crate::{Hash, PaddingScheme, PublicKey, PublicKeyParts, RSAPrivateKey, RSAPublicKey};
224225

225226
#[test]
226227
fn test_non_zero_bytes() {
227228
for _ in 0..10 {
228-
let mut rng = thread_rng();
229+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
230+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
229231
let mut b = vec![0u8; 512];
230232
non_zero_random_bytes(&mut rng, &mut b);
231233
for el in &b {
@@ -288,7 +290,8 @@ mod tests {
288290

289291
#[test]
290292
fn test_encrypt_decrypt_pkcs1v15() {
291-
let mut rng = thread_rng();
293+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
294+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
292295
let priv_key = get_private_key();
293296
let k = priv_key.size();
294297

@@ -326,7 +329,8 @@ mod tests {
326329
assert_ne!(out, digest);
327330
assert_eq!(out, expected);
328331

329-
let mut rng = thread_rng();
332+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
333+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
330334
let out2 = priv_key
331335
.sign_blinded(
332336
&mut rng,

src/pss.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,9 @@ mod test {
240240

241241
use num_bigint::BigUint;
242242
use num_traits::{FromPrimitive, Num};
243-
use rand::thread_rng;
244243
use sha1::{Digest, Sha1};
244+
use std::time::SystemTime;
245+
use rand::{SeedableRng, rngs::StdRng};
245246

246247
fn get_private_key() -> RSAPrivateKey {
247248
// In order to generate new test vectors you'll need the PEM form of this key:
@@ -279,9 +280,11 @@ mod test {
279280
let digest = Sha1::digest(test[0].as_bytes()).to_vec();
280281
let sig = hex::decode(test[1]).unwrap();
281282

283+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
284+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
282285
pub_key
283286
.verify(
284-
PaddingScheme::new_pss::<Sha1, _>(thread_rng()),
287+
PaddingScheme::new_pss::<Sha1, _>(rng),
285288
&digest,
286289
&sig,
287290
)
@@ -295,19 +298,22 @@ mod test {
295298

296299
let tests = ["test\n"];
297300

301+
let seed = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap();
302+
let mut rng = StdRng::seed_from_u64(seed.as_secs());
303+
298304
for test in &tests {
299305
let digest = Sha1::digest(test.as_bytes()).to_vec();
300306
let sig = priv_key
301307
.sign_blinded(
302-
&mut thread_rng(),
303-
PaddingScheme::new_pss::<Sha1, _>(thread_rng()),
308+
&mut rng.clone(),
309+
PaddingScheme::new_pss::<Sha1, _>(rng.clone()),
304310
&digest,
305311
)
306312
.expect("failed to sign");
307313

308314
priv_key
309315
.verify(
310-
PaddingScheme::new_pss::<Sha1, _>(thread_rng()),
316+
PaddingScheme::new_pss::<Sha1, _>(rng.clone()),
311317
&digest,
312318
&sig,
313319
)

0 commit comments

Comments
 (0)