#[cfg (test)] mod test { #[test] fn signing () -> anyhow::Result <()> { use std::fs; use ring::{ signature::{ self, Ed25519KeyPair, KeyPair, }, }; fs::create_dir_all ("untracked")?; let rng = ring::rand::SystemRandom::new (); let pkcs8_bytes = Ed25519KeyPair::generate_pkcs8 (&rng).map_err (|_| anyhow::anyhow! ("generate_pkcs8"))?; let key_pair = Ed25519KeyPair::from_pkcs8 (pkcs8_bytes.as_ref ()).map_err (|_| anyhow::anyhow! ("from_pkcs8"))?; const MESSAGE: &[u8] = b":V"; let sig = key_pair.sign (MESSAGE); let peer_public_key_bytes = key_pair.public_key ().as_ref (); let peer_public_key = signature::UnparsedPublicKey::new (&signature::ED25519, peer_public_key_bytes); peer_public_key.verify (MESSAGE, sig.as_ref ()).map_err (|_| anyhow::anyhow! ("verify"))?; Ok (()) } }