From 89b3875bfc72ffb5ca6757bc322af47c79b4c4ea Mon Sep 17 00:00:00 2001 From: bunnie Date: Mon, 28 Jun 2021 02:33:32 +0800 Subject: [PATCH] commit before working on acceleration code --- Cargo.lock | 1 + services/shellchat/Cargo.toml | 2 +- services/shellchat/src/cmds/engine.rs | 29 +++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 2a9dde91a..23976a1c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -549,6 +549,7 @@ checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ "curve25519-dalek", "ed25519", + "rand 0.7.3", "sha2", "zeroize", ] diff --git a/services/shellchat/Cargo.toml b/services/shellchat/Cargo.toml index c25e77eab..7b442c5e0 100644 --- a/services/shellchat/Cargo.toml +++ b/services/shellchat/Cargo.toml @@ -56,7 +56,7 @@ features = ["u32_backend"] version = "1.0.1" #path = "../../../ed25519-dalek" default-features = false -features = ["u32_backend"] +features = ["u32_backend", "rand"] [target.'cfg(not(any(windows,unix)))'.dependencies] utralib = {path = "../../utralib"} diff --git a/services/shellchat/src/cmds/engine.rs b/services/shellchat/src/cmds/engine.rs index 747c71551..c3692f460 100644 --- a/services/shellchat/src/cmds/engine.rs +++ b/services/shellchat/src/cmds/engine.rs @@ -291,6 +291,35 @@ impl<'a> ShellCmdApi<'a> for Engine { write!(ret, "x25519 key exchange fail").unwrap(); } } + "ed2" => { + use ed25519_dalek::{Keypair, Signature, Signer}; + let keypair: Keypair; + let good_sig: Signature; + let bad_sig: Signature; + + let good: &[u8] = "test message".as_bytes(); + let bad: &[u8] = "wrong message".as_bytes(); + + keypair = Keypair::generate(&mut env.trng); + good_sig = keypair.sign(&good); + bad_sig = keypair.sign(&bad); + + if keypair.verify(&good, &good_sig).is_ok() { + write!(ret, "Verification of valid signtaure passed!\n").unwrap(); + } else { + write!(ret, "Verification of valid signtaure failed!\n").unwrap(); + } + if keypair.verify(&good, &bad_sig).is_err() { + write!(ret, "Verification of a signature on a different message failed, as expected.\n").unwrap(); + } else { + write!(ret, "Verification of a signature on a different message passed (this is unexpected)!\n").unwrap(); + } + if keypair.verify(&bad, &good_sig).is_err() { + write!(ret, "Verification of a signature on a different message failed, as expected.\n").unwrap(); + } else { + write!(ret, "Verification of a signature on a different message passed (this is unexpected)!\n").unwrap(); + } + } "ed" => { use ed25519_dalek::*; use ed25519::signature::Signature as _;