Use new feature to gate test vectors behind

To match the local signatures found in test vectors, we must make sure
we don't use any additional randomess when generating signatures, as
we'll arrive at a different signature otherwise.
This commit is contained in:
Wilmer Paulino 2023-04-19 15:13:35 -07:00
parent 16edbd4196
commit 86531e5ceb
No known key found for this signature in database
GPG key ID: 634FE5FC544DCA31
4 changed files with 10 additions and 5 deletions

View file

@ -35,13 +35,14 @@ for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
cargo test --verbose --color always --no-default-features --features no-std
# check if there is a conflict between no-std and the default std feature
cargo test --verbose --color always --features no-std
# check that things still pass without grind_signatures
# note that outbound_commitment_test only runs in this mode, because of hardcoded signature values
cargo test --verbose --color always --no-default-features --features std
# check if there is a conflict between no-std and the c_bindings cfg
RUSTFLAGS="--cfg=c_bindings" cargo test --verbose --color always --no-default-features --features=no-std
popd
done
# Note that outbound_commitment_test only runs in this mode because of hardcoded signature values
pushd lightning
cargo test --verbose --color always --no-default-features --features=std,_test_vectors
popd
# This one only works for lightning-invoice
pushd lightning-invoice
# check that compile with no-std and serde works in lightning-invoice

View file

@ -29,6 +29,8 @@ max_level_trace = []
# This is unsafe to use in production because it may result in the counterparty publishing taking our funds.
unsafe_revoked_tx_signing = []
_bench_unstable = []
# Override signing to not include randomness when generating signatures for test vectors.
_test_vectors = []
no-std = ["hashbrown", "bitcoin/no-std", "core2/alloc"]
std = ["bitcoin/std"]

View file

@ -7516,7 +7516,7 @@ mod tests {
}
}
#[cfg(not(feature = "grind_signatures"))]
#[cfg(feature = "_test_vectors")]
#[test]
fn outbound_commitment_test() {
use bitcoin::util::sighash;

View file

@ -62,7 +62,9 @@ pub fn sign_with_aux_rand<C: Signing, ES: Deref>(
break sig;
}
};
#[cfg(not(feature = "grind_signatures"))]
#[cfg(all(not(feature = "grind_signatures"), not(feature = "_test_vectors")))]
let sig = ctx.sign_ecdsa_with_noncedata(msg, sk, &entropy_source.get_secure_random_bytes());
#[cfg(all(not(feature = "grind_signatures"), feature = "_test_vectors"))]
let sig = sign(ctx, msg, sk);
sig
}