Просмотр исходного кода

x3dh: Downgrade to digest-0.10.6

parazyd 3 лет назад
Родитель
Сommit
3da06a8862
2 измененных файлов с 9 добавлено и 11 удалено
  1. 3 3
      script/research/x3dh/Cargo.toml
  2. 6 8
      script/research/x3dh/src/xeddsa.rs

+ 3 - 3
script/research/x3dh/Cargo.toml

@@ -9,9 +9,9 @@ edition = "2021"
 
 [dependencies]
 sha2 = "0.10.6"
-digest = "0.11.0-pre"
+digest = "0.10.6"
 rand = "0.8.5"
 aes-gcm-siv = "0.11.1"
-curve25519-dalek = {version = "4.0.0-rc.0", features = ["digest"]}
-ed25519-dalek = "1.0.1"
+curve25519-dalek = {version = "4.0.0-rc.1", features = ["digest"]}
+ed25519-dalek = "2.0.0-pre.0"
 x25519-dalek = "2.0.0-pre.1"

+ 6 - 8
script/research/x3dh/src/xeddsa.rs

@@ -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);