chacha: test for serde roundtrip

This commit is contained in:
Kaz Wesley
2021-05-10 14:48:33 -07:00
parent 22029be3e3
commit d7a9e30314
2 changed files with 34 additions and 0 deletions
+4
View File
@@ -19,6 +19,10 @@ rand_core = { path = "../rand_core", version = "0.6.0" }
ppv-lite86 = { version = "0.2.8", default-features = false, features = ["simd"] }
serde = { version = "1.0", features = ["derive"], optional = true }
[dev-dependencies]
# Only to test serde1
bincode = "1.2.1"
[features]
default = ["std"]
std = ["ppv-lite86/std"]
+30
View File
@@ -351,8 +351,38 @@ chacha_impl!(ChaCha8Core, ChaCha8Rng, 4, "ChaCha with 8 rounds", abstract8);
mod test {
use rand_core::{RngCore, SeedableRng};
#[cfg(feature = "serde1")] use super::{ChaCha20Rng, ChaCha12Rng, ChaCha8Rng};
type ChaChaRng = super::ChaCha20Rng;
#[cfg(feature = "serde1")]
#[test]
fn test_chacha_serde_roundtrip() {
let seed = [
1, 0, 52, 0, 0, 0, 0, 0, 1, 0, 10, 0, 22, 32, 0, 0, 2, 0, 55, 49, 0, 11, 0, 0, 3, 0, 0, 0, 0,
0, 2, 92,
];
let mut rng1 = ChaCha20Rng::from_seed(seed);
let mut rng2 = ChaCha12Rng::from_seed(seed);
let mut rng3 = ChaCha8Rng::from_seed(seed);
let encoded1 = bincode::serialize(&rng1).unwrap();
let encoded2 = bincode::serialize(&rng2).unwrap();
let encoded3 = bincode::serialize(&rng3).unwrap();
let mut decoded1: ChaCha20Rng = bincode::deserialize(&encoded1).unwrap();
let mut decoded2: ChaCha12Rng = bincode::deserialize(&encoded2).unwrap();
let mut decoded3: ChaCha8Rng = bincode::deserialize(&encoded3).unwrap();
assert_eq!(rng1, decoded1);
assert_eq!(rng2, decoded2);
assert_eq!(rng3, decoded3);
assert_eq!(rng1.next_u32(), decoded1.next_u32());
assert_eq!(rng2.next_u32(), decoded2.next_u32());
assert_eq!(rng3.next_u32(), decoded3.next_u32());
}
#[test]
fn test_chacha_construction() {
let seed = [