Skip to content

Commit 51a954b

Browse files
committed
Reorder verify_ecdsa args to match the order of verify_schnorr
When `verify_schnorr` was first introduced, it used parameters in the inuitive order: sig, msg, key. It was later noticed that `verify_ecdsa` had the same parameters but in a different order. Since both functions have been released, this will be a breaking change, but fixing this now will add consistency and remove any confusion for users in the future.
1 parent 379e128 commit 51a954b

File tree

6 files changed

+31
-31
lines changed

6 files changed

+31
-31
lines changed

examples/sign_verify.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ fn verify<C: Verification>(
1515
let sig = ecdsa::Signature::from_compact(&sig)?;
1616
let pubkey = PublicKey::from_slice(&pubkey)?;
1717

18-
Ok(secp.verify_ecdsa(&msg, &sig, &pubkey).is_ok())
18+
Ok(secp.verify_ecdsa(&sig, &msg, &pubkey).is_ok())
1919
}
2020

2121
fn sign<C: Signing>(

no_std_test/src/main.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ fn start(_argc: isize, _argv: *const *const u8) -> isize {
9595
let message = Message::from_digest_slice(&[0xab; 32]).expect("32 bytes");
9696

9797
let sig = secp.sign_ecdsa(&message, &secret_key);
98-
assert!(secp.verify_ecdsa(&message, &sig, &public_key).is_ok());
98+
assert!(secp.verify_ecdsa(&sig, &message, &public_key).is_ok());
9999

100100
let rec_sig = secp.sign_ecdsa_recoverable(&message, &secret_key);
101-
assert!(secp.verify_ecdsa(&message, &rec_sig.to_standard(), &public_key).is_ok());
101+
assert!(secp.verify_ecdsa(&rec_sig.to_standard(), &message, &public_key).is_ok());
102102
assert_eq!(public_key, secp.recover_ecdsa(&message, &rec_sig).unwrap());
103103
let (rec_id, data) = rec_sig.serialize_compact();
104104
let new_rec_sig = ecdsa::RecoverableSignature::from_compact(&data, rec_id).unwrap();
@@ -122,7 +122,7 @@ fn start(_argc: isize, _argv: *const *const u8) -> isize {
122122
let message = Message::from_digest_slice(&[0xab; 32]).expect("32 bytes");
123123

124124
let sig = secp_alloc.sign_ecdsa(&message, &secret_key);
125-
assert!(secp_alloc.verify_ecdsa(&message, &sig, &public_key).is_ok());
125+
assert!(secp_alloc.verify_ecdsa(&sig, &message, &public_key).is_ok());
126126
unsafe { libc::printf("Verified alloc Successfully!\n\0".as_ptr() as _) };
127127
}
128128

src/ecdsa/mod.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ impl Signature {
195195
#[inline]
196196
#[cfg(feature = "global-context")]
197197
pub fn verify(&self, msg: &Message, pk: &PublicKey) -> Result<(), Error> {
198-
SECP256K1.verify_ecdsa(msg, self, pk)
198+
SECP256K1.verify_ecdsa(self, msg, pk)
199199
}
200200
}
201201

@@ -373,17 +373,17 @@ impl<C: Verification> Secp256k1<C> {
373373
/// #
374374
/// let message = Message::from_digest_slice(&[0xab; 32]).expect("32 bytes");
375375
/// let sig = secp.sign_ecdsa(&message, &secret_key);
376-
/// assert_eq!(secp.verify_ecdsa(&message, &sig, &public_key), Ok(()));
376+
/// assert_eq!(secp.verify_ecdsa(&sig, &message, &public_key), Ok(()));
377377
///
378378
/// let message = Message::from_digest_slice(&[0xcd; 32]).expect("32 bytes");
379-
/// assert_eq!(secp.verify_ecdsa(&message, &sig, &public_key), Err(Error::IncorrectSignature));
379+
/// assert_eq!(secp.verify_ecdsa(&sig, &message, &public_key), Err(Error::IncorrectSignature));
380380
/// # }
381381
/// ```
382382
#[inline]
383383
pub fn verify_ecdsa(
384384
&self,
385-
msg: &Message,
386385
sig: &Signature,
386+
msg: &Message,
387387
pk: &PublicKey,
388388
) -> Result<(), Error> {
389389
unsafe {

src/ecdsa/recovery.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ mod tests {
336336

337337
let msg = crate::random_32_bytes(&mut rand::thread_rng());
338338
let msg = Message::from_digest_slice(&msg).unwrap();
339-
assert_eq!(s.verify_ecdsa(&msg, &sig, &pk), Err(Error::IncorrectSignature));
339+
assert_eq!(s.verify_ecdsa(&sig, &msg, &pk), Err(Error::IncorrectSignature));
340340

341341
let recovered_key = s.recover_ecdsa(&msg, &sigr).unwrap();
342342
assert!(recovered_key != pk);

src/key.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -740,7 +740,7 @@ impl PublicKey {
740740
msg: &Message,
741741
sig: &ecdsa::Signature,
742742
) -> Result<(), Error> {
743-
secp.verify_ecdsa(msg, sig, self)
743+
secp.verify_ecdsa(sig, msg, self)
744744
}
745745
}
746746

src/lib.rs

+21-21
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
//! let message = Message::from_digest(digest.to_byte_array());
4040
//!
4141
//! let sig = secp.sign_ecdsa(&message, &secret_key);
42-
//! assert!(secp.verify_ecdsa(&message, &sig, &public_key).is_ok());
42+
//! assert!(secp.verify_ecdsa(&sig, &message, &public_key).is_ok());
4343
//! # }
4444
//! ```
4545
//!
@@ -76,7 +76,7 @@
7676
//! let message = Message::from_digest(compute_hash(b"CSW is not Satoshi"));
7777
//!
7878
//! let sig = secp.sign_ecdsa(&message, &secret_key);
79-
//! assert!(secp.verify_ecdsa(&message, &sig, &public_key).is_ok());
79+
//! assert!(secp.verify_ecdsa(&sig, &message, &public_key).is_ok());
8080
//! # }
8181
//! ```
8282
//!
@@ -115,7 +115,7 @@
115115
//! ]).expect("compact signatures are 64 bytes; DER signatures are 68-72 bytes");
116116
//!
117117
//! # #[cfg(not(secp256k1_fuzz))]
118-
//! assert!(secp.verify_ecdsa(&message, &sig, &public_key).is_ok());
118+
//! assert!(secp.verify_ecdsa(&sig, &message, &public_key).is_ok());
119119
//! # }
120120
//! ```
121121
//!
@@ -547,8 +547,8 @@ mod tests {
547547
let sig = full.sign_ecdsa(&msg, &sk);
548548

549549
// Try verifying
550-
assert!(vrfy.verify_ecdsa(&msg, &sig, &pk).is_ok());
551-
assert!(full.verify_ecdsa(&msg, &sig, &pk).is_ok());
550+
assert!(vrfy.verify_ecdsa(&sig, &msg, &pk).is_ok());
551+
assert!(full.verify_ecdsa(&sig, &msg, &pk).is_ok());
552552

553553
// The following drop will have no effect; in fact, they will trigger a compiler
554554
// error because manually dropping a `ManuallyDrop` is almost certainly incorrect.
@@ -614,8 +614,8 @@ mod tests {
614614
let sig = full.sign_ecdsa(&msg, &sk);
615615

616616
// Try verifying
617-
assert!(vrfy.verify_ecdsa(&msg, &sig, &pk).is_ok());
618-
assert!(full.verify_ecdsa(&msg, &sig, &pk).is_ok());
617+
assert!(vrfy.verify_ecdsa(&sig, &msg, &pk).is_ok());
618+
assert!(full.verify_ecdsa(&sig, &msg, &pk).is_ok());
619619
}
620620

621621
#[test]
@@ -636,8 +636,8 @@ mod tests {
636636
let sig = full.sign_ecdsa(&msg, &sk);
637637

638638
// Try verifying
639-
assert!(vrfy.verify_ecdsa(&msg, &sig, &pk).is_ok());
640-
assert!(full.verify_ecdsa(&msg, &sig, &pk).is_ok());
639+
assert!(vrfy.verify_ecdsa(&sig, &msg, &pk).is_ok());
640+
assert!(full.verify_ecdsa(&sig, &msg, &pk).is_ok());
641641

642642
// Check that we can produce keys from slices with no precomputation
643643
let (pk_slice, sk_slice) = (&pk.serialize(), &sk[..]);
@@ -750,13 +750,13 @@ mod tests {
750750

751751
let (sk, pk) = s.generate_keypair(&mut rand::thread_rng());
752752
let sig = s.sign_ecdsa(&msg, &sk);
753-
assert_eq!(s.verify_ecdsa(&msg, &sig, &pk), Ok(()));
753+
assert_eq!(s.verify_ecdsa(&sig, &msg, &pk), Ok(()));
754754
let noncedata_sig = s.sign_ecdsa_with_noncedata(&msg, &sk, &noncedata);
755-
assert_eq!(s.verify_ecdsa(&msg, &noncedata_sig, &pk), Ok(()));
755+
assert_eq!(s.verify_ecdsa(&noncedata_sig, &msg, &pk), Ok(()));
756756
let low_r_sig = s.sign_ecdsa_low_r(&msg, &sk);
757-
assert_eq!(s.verify_ecdsa(&msg, &low_r_sig, &pk), Ok(()));
757+
assert_eq!(s.verify_ecdsa(&low_r_sig, &msg, &pk), Ok(()));
758758
let grind_r_sig = s.sign_ecdsa_grind_r(&msg, &sk, 1);
759-
assert_eq!(s.verify_ecdsa(&msg, &grind_r_sig, &pk), Ok(()));
759+
assert_eq!(s.verify_ecdsa(&grind_r_sig, &msg, &pk), Ok(()));
760760
let compact = sig.serialize_compact();
761761
if compact[0] < 0x80 {
762762
assert_eq!(sig, low_r_sig);
@@ -798,9 +798,9 @@ mod tests {
798798
let low_r_sig = s.sign_ecdsa_low_r(&msg, &key);
799799
let grind_r_sig = s.sign_ecdsa_grind_r(&msg, &key, 1);
800800
let pk = PublicKey::from_secret_key(&s, &key);
801-
assert_eq!(s.verify_ecdsa(&msg, &sig, &pk), Ok(()));
802-
assert_eq!(s.verify_ecdsa(&msg, &low_r_sig, &pk), Ok(()));
803-
assert_eq!(s.verify_ecdsa(&msg, &grind_r_sig, &pk), Ok(()));
801+
assert_eq!(s.verify_ecdsa(&sig, &msg, &pk), Ok(()));
802+
assert_eq!(s.verify_ecdsa(&low_r_sig, &msg, &pk), Ok(()));
803+
assert_eq!(s.verify_ecdsa(&grind_r_sig, &msg, &pk), Ok(()));
804804
}
805805
}
806806
}
@@ -820,7 +820,7 @@ mod tests {
820820

821821
let msg = crate::random_32_bytes(&mut rand::thread_rng());
822822
let msg = Message::from_digest(msg);
823-
assert_eq!(s.verify_ecdsa(&msg, &sig, &pk), Err(Error::IncorrectSignature));
823+
assert_eq!(s.verify_ecdsa(&sig, &msg, &pk), Err(Error::IncorrectSignature));
824824
}
825825

826826
#[test]
@@ -913,10 +913,10 @@ mod tests {
913913
let msg = Message::from_digest(msg);
914914

915915
// without normalization we expect this will fail
916-
assert_eq!(secp.verify_ecdsa(&msg, &sig, &pk), Err(Error::IncorrectSignature));
916+
assert_eq!(secp.verify_ecdsa(&sig, &msg, &pk), Err(Error::IncorrectSignature));
917917
// after normalization it should pass
918918
sig.normalize_s();
919-
assert_eq!(secp.verify_ecdsa(&msg, &sig, &pk), Ok(()));
919+
assert_eq!(secp.verify_ecdsa(&sig, &msg, &pk), Ok(()));
920920
}
921921

922922
#[test]
@@ -1000,7 +1000,7 @@ mod tests {
10001000

10011001
// Check usage as self
10021002
let sig = SECP256K1.sign_ecdsa(&msg, &sk);
1003-
assert!(SECP256K1.verify_ecdsa(&msg, &sig, &pk).is_ok());
1003+
assert!(SECP256K1.verify_ecdsa(&sig, &msg, &pk).is_ok());
10041004
}
10051005
}
10061006

@@ -1045,7 +1045,7 @@ mod benches {
10451045
let sig = s.sign_ecdsa(&msg, &sk);
10461046

10471047
bh.iter(|| {
1048-
let res = s.verify_ecdsa(&msg, &sig, &pk).unwrap();
1048+
let res = s.verify_ecdsa(&sig, &msg, &pk).unwrap();
10491049
black_box(res);
10501050
});
10511051
}

0 commit comments

Comments
 (0)