2022-05-05 06:40:29 -07:00
|
|
|
use core::convert::TryFrom;
|
2020-07-06 19:05:51 -07:00
|
|
|
|
2020-01-22 16:58:18 -08:00
|
|
|
use rand::thread_rng;
|
|
|
|
|
2020-07-06 19:05:51 -07:00
|
|
|
use ed25519_zebra::{Signature, SigningKey, VerificationKey, VerificationKeyBytes};
|
2020-04-01 19:11:29 -07:00
|
|
|
|
|
|
|
#[test]
|
2020-07-06 19:05:51 -07:00
|
|
|
fn parsing() {
|
2020-06-15 20:45:25 -07:00
|
|
|
let sk = SigningKey::new(thread_rng());
|
|
|
|
let pk = VerificationKey::from(&sk);
|
|
|
|
let pkb = VerificationKeyBytes::from(&sk);
|
2020-07-06 19:05:51 -07:00
|
|
|
let sig = sk.sign(b"test");
|
|
|
|
|
2020-04-01 19:11:29 -07:00
|
|
|
let sk_array: [u8; 32] = sk.into();
|
|
|
|
let pk_array: [u8; 32] = pk.into();
|
|
|
|
let pkb_array: [u8; 32] = pkb.into();
|
2020-07-06 19:05:51 -07:00
|
|
|
let sig_array: [u8; 64] = sig.into();
|
|
|
|
|
2023-11-27 06:40:06 -08:00
|
|
|
let sk2 = SigningKey::try_from(sk_array).unwrap();
|
|
|
|
let pk2 = VerificationKey::try_from(pk_array).unwrap();
|
|
|
|
let pkb2 = VerificationKeyBytes::try_from(pkb_array).unwrap();
|
|
|
|
let sig2 = Signature::try_from(sig_array).unwrap();
|
2020-07-06 19:05:51 -07:00
|
|
|
|
2023-11-27 06:40:06 -08:00
|
|
|
assert_eq!(sk, sk2);
|
|
|
|
assert_eq!(pk, pk2);
|
|
|
|
assert_eq!(pkb, pkb2);
|
|
|
|
assert_eq!(sig, sig2);
|
2020-07-06 19:05:51 -07:00
|
|
|
|
|
|
|
let sk3: SigningKey = bincode::deserialize(sk.as_ref()).unwrap();
|
|
|
|
let pk3: VerificationKey = bincode::deserialize(pk.as_ref()).unwrap();
|
|
|
|
let pkb3: VerificationKeyBytes = bincode::deserialize(pkb.as_ref()).unwrap();
|
|
|
|
|
2023-11-27 06:40:06 -08:00
|
|
|
assert_eq!(sk, sk3);
|
|
|
|
assert_eq!(pk, pk3);
|
|
|
|
assert_eq!(pkb, pkb3);
|
2020-04-01 19:11:29 -07:00
|
|
|
}
|
2020-01-22 16:58:18 -08:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sign_and_verify() {
|
2020-06-15 20:45:25 -07:00
|
|
|
let sk = SigningKey::new(thread_rng());
|
|
|
|
let pk = VerificationKey::from(&sk);
|
2020-01-22 16:58:18 -08:00
|
|
|
|
|
|
|
let msg = b"ed25519-zebra test message";
|
|
|
|
|
|
|
|
let sig = sk.sign(&msg[..]);
|
|
|
|
|
|
|
|
assert_eq!(pk.verify(&sig, &msg[..]), Ok(()))
|
|
|
|
}
|