diff --git a/lib/crypto/src/threshold/wsts.rs b/lib/crypto/src/threshold/wsts.rs
index b627dd342..0e7833a8c 100644
@@ -1007,10 +1007,6 @@ impl<C: Curve> WeightedParticipant<C> {
}));
}
- if matches!(self.scheme, SignatureScheme::Bls) {
- return self.sign_round2_bls(key_shares, msg, signing_keys);
- }
-
// Aggregate nonce shares for each owned key
let mut nonce_shares: KeyMap<C::Scalar> = KeyMap::with_capacity(self.key_ids.len());
for &key_id in &self.key_ids {
@@ -1053,6 +1049,11 @@ impl<C: Curve> WeightedParticipant<C> {
cap_r = cap_r + broadcast.nonce_public;
}
+ // BLS still requires VSS verification above, but does not use nonces.
+ if matches!(self.scheme, SignatureScheme::Bls) {
+ return self.sign_round2_bls(key_shares, msg, signing_keys);
+ }
+
// For BIP-340 Schnorr, check if we need to negate nonces
let negate_nonce = if matches!(self.scheme, SignatureScheme::Schnorr) {
let r_bytes = cap_r.to_bytes();