Add additional tests for keypair (de)serialisation.

This commit is contained in:
Isis Lovecruft 2020-06-30 22:40:24 +00:00
parent 6dfcc4ba27
commit 9e247c493c
No known key found for this signature in database
GPG key ID: AB41313533E8E812
2 changed files with 46 additions and 1 deletions

View file

@ -26,7 +26,7 @@ curve25519-dalek = { version = "2", default-features = false }
merlin = { version = "1", default-features = false, optional = true, git = "https://github.com/isislovecruft/merlin", branch = "develop" }
rand = { version = "0.7", default-features = false, optional = true }
rand_core = { version = "0.5", default-features = false, optional = true }
serde = { version = "1.0", default-features = false, optional = true }
serde = { version = "1.0", default-features = false, optional = true, features = ["derive"] }
sha2 = { version = "0.8", default-features = false }
zeroize = { version = "1", default-features = false, features = ["zeroize_derive"] }
@ -35,6 +35,7 @@ hex = "^0.4"
bincode = "^0.9"
criterion = "0.3"
rand = "0.7"
toml = "0.5"
[[bench]]
name = "ed25519_benchmarks"

View file

@ -15,6 +15,10 @@ extern crate ed25519_dalek;
extern crate hex;
extern crate sha2;
extern crate rand;
#[cfg(all(test, feature = "serde"))]
extern crate serde;
#[cfg(all(test, feature = "serde"))]
extern crate toml;
use ed25519_dalek::*;
@ -213,11 +217,19 @@ mod integrations {
}
}
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
struct Demo {
keypair: Keypair
}
#[cfg(all(test, feature = "serde"))]
mod serialisation {
use super::*;
use self::bincode::{serialize, serialized_size, deserialize, Infinite};
use self::toml;
static PUBLIC_KEY_BYTES: [u8; PUBLIC_KEY_LENGTH] = [
130, 039, 155, 015, 062, 076, 188, 063,
@ -242,6 +254,16 @@ mod serialisation {
216, 085, 134, 144, 129, 149, 041, 081,
063, 120, 126, 100, 092, 059, 050, 011, ];
static KEYPAIR_BYTES: [u8; KEYPAIR_LENGTH] = [
239, 085, 017, 235, 167, 103, 034, 062,
007, 010, 032, 146, 113, 039, 096, 174,
003, 219, 232, 166, 240, 121, 167, 013,
098, 238, 122, 116, 193, 114, 215, 213,
175, 181, 075, 166, 224, 164, 140, 146,
053, 120, 010, 037, 104, 094, 136, 225,
249, 102, 171, 160, 097, 132, 015, 071,
035, 056, 000, 074, 130, 168, 225, 071, ];
#[test]
fn serialize_deserialize_signature() {
let signature: Signature = Signature::from_bytes(&SIGNATURE_BYTES).unwrap();
@ -272,6 +294,28 @@ mod serialisation {
}
}
#[test]
fn serialize_deserialize_keypair_bincode() {
let keypair = Keypair::from_bytes(&KEYPAIR_BYTES).unwrap();
let encoded_keypair: Vec<u8> = serialize(&keypair, Infinite).unwrap();
let decoded_keypair: Keypair = deserialize(&encoded_keypair).unwrap();
for i in 0..64 {
assert_eq!(KEYPAIR_BYTES[i], decoded_keypair.to_bytes()[i]);
}
}
#[test]
fn serialize_deserialize_keypair_toml() {
let demo = Demo { keypair: Keypair::from_bytes(&KEYPAIR_BYTES).unwrap() };
println!("\n\nWrite to toml");
let demo_toml = toml::to_string(&demo).unwrap();
println!("{}", demo_toml);
let demo_toml_rebuild: Result<Demo, _> = toml::from_str(&demo_toml);
println!("{:?}", demo_toml_rebuild);
}
#[test]
fn serialize_public_key_size() {
let public_key: PublicKey = PublicKey::from_bytes(&PUBLIC_KEY_BYTES).unwrap();