|
|
@@ -22,7 +22,7 @@ use curve25519_dalek::{
|
|
|
constants::ED25519_BASEPOINT_POINT, montgomery::MontgomeryPoint, scalar::Scalar,
|
|
|
};
|
|
|
use digest::Digest;
|
|
|
-use ed25519_dalek::{PublicKey as Ed25519PublicKey, Signature, Verifier};
|
|
|
+use ed25519_dalek::{Signature, SigningKey as Ed25519PublicKey};
|
|
|
use sha2::Sha512;
|
|
|
use x25519_dalek::{PublicKey as X25519PublicKey, StaticSecret as X25519SecretKey};
|
|
|
|
|
|
@@ -110,10 +110,9 @@ impl XeddsaVerifier for X25519PublicKey {
|
|
|
let pt = MontgomeryPoint(self.to_bytes());
|
|
|
|
|
|
if let Some(edwards) = pt.to_edwards(0) {
|
|
|
- if let Ok(pk) = Ed25519PublicKey::from_bytes(&edwards.compress().to_bytes()) {
|
|
|
- let sig = Signature::from_bytes(sig).unwrap();
|
|
|
- return pk.verify(msg, &sig).is_ok()
|
|
|
- }
|
|
|
+ let pk = Ed25519PublicKey::from_bytes(&edwards.compress().to_bytes());
|
|
|
+ let sig = Signature::from_bytes(sig);
|
|
|
+ return pk.verify(msg, &sig).is_ok()
|
|
|
}
|
|
|
|
|
|
false
|
|
|
@@ -123,15 +122,14 @@ impl XeddsaVerifier for X25519PublicKey {
|
|
|
#[cfg(test)]
|
|
|
mod tests {
|
|
|
use super::*;
|
|
|
+ use rand::rngs::OsRng;
|
|
|
|
|
|
#[test]
|
|
|
fn xeddsa_test() {
|
|
|
let nonce = [0u8; 64];
|
|
|
let msg = [0u8; 200];
|
|
|
- let mut privkey = [0u8; 32];
|
|
|
- privkey[8] = 189;
|
|
|
|
|
|
- let xsecret_key = X25519SecretKey::from(privkey);
|
|
|
+ let xsecret_key = X25519SecretKey::new(&mut OsRng);
|
|
|
let xpublic_key = X25519PublicKey::from(&xsecret_key);
|
|
|
|
|
|
let sig = xsecret_key.xeddsa_sign(&msg, &nonce);
|