ソースを参照

fix: verify with rust-secp256k1

thesimplekid 11 ヶ月 前
コミット
b186da2863
1 ファイル変更6 行追加2 行削除
  1. 6 2
      crates/cdk/src/dhke.rs

+ 6 - 2
crates/cdk/src/dhke.rs

@@ -4,7 +4,9 @@ use std::ops::Deref;
 
 use bitcoin::hashes::sha256::Hash as Sha256Hash;
 use bitcoin::hashes::Hash;
-use bitcoin::secp256k1::{Parity, PublicKey as NormalizedPublicKey, Scalar, XOnlyPublicKey};
+use bitcoin::secp256k1::{
+    Parity, PublicKey as NormalizedPublicKey, Scalar, Secp256k1, XOnlyPublicKey,
+};
 
 use crate::error::Error;
 use crate::nuts::nut01::{PublicKey, SecretKey};
@@ -142,7 +144,9 @@ pub fn verify_message(
     let y: PublicKey = hash_to_curve(msg)?;
 
     // Compute the expected unblinded message
-    let expected_unblinded_message: PublicKey = y.combine(&a.public_key())?.into();
+    let expected_unblinded_message: PublicKey = y
+        .mul_tweak(&Secp256k1::new(), &Scalar::from(*a.deref()))?
+        .into();
 
     // Compare the unblinded_message with the expected value
     if unblinded_message == expected_unblinded_message {