mirror of
https://github.com/saymrwulf/curve25519-dalek-source.git
synced 2026-09-04 20:24:10 +00:00
Add additional tests for keypair (de)serialisation.
This commit is contained in:
parent
6dfcc4ba27
commit
9e247c493c
2 changed files with 46 additions and 1 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in a new issue