Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 0 additions & 14 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -253,20 +253,6 @@ jobs:
- name: "Run test on i686"
run: cargo test --target i686-unknown-linux-gnu

WASM:
name: WASM - stable toolchain
runs-on: ubuntu-latest
strategy:
fail-fast: false
# Note we do not use the recent lock file for wasm testing.
steps:
- name: "Checkout repo"
uses: actions/checkout@v4
- name: "Select toolchain"
uses: dtolnay/rust-toolchain@stable
- name: "Run wasm script"
run: ./contrib/wasm.sh

NoStd: # 1 job, run no-std test from script.
name: no-std - nightly toolchain
needs: Prepare
Expand Down
6 changes: 3 additions & 3 deletions contrib/test_vars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
# shellcheck disable=SC2034

# Test all these features with "std" enabled.
FEATURES_WITH_STD="hashes global-context global-context-less-secure lowmemory rand recovery serde"
FEATURES_WITH_STD="global-context global-context-less-secure lowmemory rand recovery serde"

# Test all these features without "std" enabled.
FEATURES_WITHOUT_STD="hashes global-context global-context-less-secure lowmemory rand recovery serde alloc"
FEATURES_WITHOUT_STD="global-context global-context-less-secure lowmemory rand recovery serde alloc"

# Run these examples.
EXAMPLES="sign_verify:hashes,std sign_verify_recovery:hashes,std,recovery generate_keys:rand,std"
EXAMPLES="sign_verify:std sign_verify_recovery:std,recovery generate_keys:rand,std"
62 changes: 31 additions & 31 deletions secp256k1-sys/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1617,21 +1617,21 @@ mod fuzz_dummy {
/// Checks that pk != 0xffff...ffff and pk[1..32] == pk[33..64]
unsafe fn test_pk_validate(cx: *const Context, pk: *const PublicKey) -> c_int {
check_context_flags(cx, 0);
if (*pk).0[1..32] != (*pk).0[33..64]
|| ((*pk).0[32] != 0 && (*pk).0[32] != 0xff)
|| secp256k1_ec_seckey_verify(cx, (*pk).0[0..32].as_ptr()) == 0
if (&*pk).0[1..32] != (&*pk).0[33..64]
|| ((*pk).0[32] != 0 && (&*pk).0[32] != 0xff)
|| secp256k1_ec_seckey_verify(cx, (&*pk).0[0..32].as_ptr()) == 0
{
0
} else {
1
}
}
unsafe fn test_cleanup_pk(pk: *mut PublicKey) {
(*pk).0[32..].copy_from_slice(&(*pk).0[..32]);
if (*pk).0[32] <= 0x7f {
(*pk).0[32] = 0;
(&mut *pk).0[32..].copy_from_slice(&(&*pk).0[..32]);
if (&*pk).0[32] <= 0x7f {
(&mut *pk).0[32] = 0;
} else {
(*pk).0[32] = 0xff;
(&mut *pk).0[32] = 0xff;
}
}

Expand All @@ -1648,8 +1648,8 @@ mod fuzz_dummy {
if *input != 2 && *input != 3 {
0
} else {
ptr::copy(input.offset(1), (*pk).0[0..32].as_mut_ptr(), 32);
ptr::copy(input.offset(2), (*pk).0[33..64].as_mut_ptr(), 31);
ptr::copy(input.offset(1), (&mut *pk).0[0..32].as_mut_ptr(), 32);
ptr::copy(input.offset(2), (&mut *pk).0[33..64].as_mut_ptr(), 31);
if *input == 3 {
(*pk).0[32] = 0xff;
} else {
Expand All @@ -1661,7 +1661,7 @@ mod fuzz_dummy {
if *input != 4 && *input != 6 && *input != 7 {
0
} else {
ptr::copy(input.offset(1), (*pk).0.as_mut_ptr(), 64);
ptr::copy(input.offset(1), (&mut *pk).0.as_mut_ptr(), 64);
test_cleanup_pk(pk);
test_pk_validate(cx, pk)
},
Expand Down Expand Up @@ -1708,7 +1708,7 @@ mod fuzz_dummy {
if secp256k1_ec_seckey_verify(cx, sk) != 1 {
return 0;
}
ptr::copy(sk, (*pk).0[0..32].as_mut_ptr(), 32);
ptr::copy(sk, (&mut *pk).0[0..32].as_mut_ptr(), 32);
test_cleanup_pk(pk);
assert_eq!(test_pk_validate(cx, pk), 1);
1
Expand All @@ -1717,7 +1717,7 @@ mod fuzz_dummy {
pub unsafe fn secp256k1_ec_pubkey_negate(cx: *const Context, pk: *mut PublicKey) -> c_int {
check_context_flags(cx, 0);
assert_eq!(test_pk_validate(cx, pk), 1);
if secp256k1_ec_seckey_negate(cx, (*pk).0[..32].as_mut_ptr()) != 1 {
if secp256k1_ec_seckey_negate(cx, (&mut *pk).0[..32].as_mut_ptr()) != 1 {
return 0;
}
test_cleanup_pk(pk);
Expand All @@ -1733,7 +1733,7 @@ mod fuzz_dummy {
) -> c_int {
check_context_flags(cx, SECP256K1_START_VERIFY);
assert_eq!(test_pk_validate(cx, pk), 1);
if secp256k1_ec_seckey_tweak_add(cx, (*pk).0[..32].as_mut_ptr(), tweak) != 1 {
if secp256k1_ec_seckey_tweak_add(cx, (&mut *pk).0[..32].as_mut_ptr(), tweak) != 1 {
return 0;
}
test_cleanup_pk(pk);
Expand All @@ -1749,7 +1749,7 @@ mod fuzz_dummy {
) -> c_int {
check_context_flags(cx, 0);
assert_eq!(test_pk_validate(cx, pk), 1);
if secp256k1_ec_seckey_tweak_mul(cx, (*pk).0[..32].as_mut_ptr(), tweak) != 1 {
if secp256k1_ec_seckey_tweak_mul(cx, (&mut *pk).0[..32].as_mut_ptr(), tweak) != 1 {
return 0;
}
test_cleanup_pk(pk);
Expand All @@ -1770,8 +1770,8 @@ mod fuzz_dummy {
assert_eq!(test_pk_validate(cx, *ins.offset(i as isize)), 1);
if secp256k1_ec_seckey_tweak_add(
cx,
(*out).0[..32].as_mut_ptr(),
(**ins.offset(i as isize)).0[..32].as_ptr(),
(&mut *out).0[..32].as_mut_ptr(),
(&**ins.offset(i as isize)).0[..32].as_ptr(),
) != 1
{
return 0;
Expand All @@ -1798,7 +1798,7 @@ mod fuzz_dummy {
}

let scalar_slice = slice::from_raw_parts(scalar, 32);
let pk_slice = &(*point).0[..32];
let pk_slice = &(&*point).0[..32];

let mut res_arr = [0u8; 32];
for i in 0..32 {
Expand Down Expand Up @@ -1827,7 +1827,7 @@ mod fuzz_dummy {
// Actually verify
let sig_sl = slice::from_raw_parts(sig as *const u8, 64);
let msg_sl = slice::from_raw_parts(msg32 as *const u8, 32);
if &sig_sl[..32] == msg_sl && sig_sl[32..] == (*pk).0[0..32] {
if &sig_sl[..32] == msg_sl && sig_sl[32..] == (&*pk).0[0..32] {
1
} else {
0
Expand Down Expand Up @@ -1873,7 +1873,7 @@ mod fuzz_dummy {
// Actually verify
let sig_sl = slice::from_raw_parts(sig64 as *const u8, 64);
let msg_sl = slice::from_raw_parts(msg32 as *const u8, msglen);
if &sig_sl[..32] == msg_sl && sig_sl[32..] == (*pubkey).0[..32] {
if &sig_sl[..32] == msg_sl && sig_sl[32..] == (&*pubkey).0[..32] {
1
} else {
0
Expand Down Expand Up @@ -1932,8 +1932,8 @@ mod fuzz_dummy {
}

let seckey_slice = slice::from_raw_parts(seckey, 32);
(*keypair).0[..32].copy_from_slice(seckey_slice);
(*keypair).0[32..].copy_from_slice(&pk.0);
(&mut *keypair).0[..32].copy_from_slice(seckey_slice);
(&mut *keypair).0[32..].copy_from_slice(&pk.0);
1
}

Expand All @@ -1944,8 +1944,8 @@ mod fuzz_dummy {
) -> c_int {
check_context_flags(cx, 0);
let inslice = slice::from_raw_parts(input32, 32);
(*pubkey).0[..32].copy_from_slice(inslice);
(*pubkey).0[32..].copy_from_slice(inslice);
(&mut *pubkey).0[..32].copy_from_slice(inslice);
(&mut *pubkey).0[32..].copy_from_slice(inslice);
test_cleanup_pk(pubkey as *mut PublicKey);
test_pk_validate(cx, pubkey as *mut PublicKey)
}
Expand All @@ -1957,7 +1957,7 @@ mod fuzz_dummy {
) -> c_int {
check_context_flags(cx, 0);
let outslice = slice::from_raw_parts_mut(output32, 32);
outslice.copy_from_slice(&(*pubkey).0[..32]);
outslice.copy_from_slice(&(&*pubkey).0[..32]);
1
}

Expand All @@ -1971,7 +1971,7 @@ mod fuzz_dummy {
if !pk_parity.is_null() {
*pk_parity = ((*pubkey).0[32] == 0).into();
}
(*xonly_pubkey).0.copy_from_slice(&(*pubkey).0);
(*xonly_pubkey).0.copy_from_slice(&(&*pubkey).0);
assert_eq!(test_pk_validate(cx, pubkey), 1);
1
}
Expand All @@ -1995,9 +1995,9 @@ mod fuzz_dummy {
) -> c_int {
check_context_flags(cx, 0);
if !pk_parity.is_null() {
*pk_parity = ((*keypair).0[64] == 0).into();
*pk_parity = ((&*keypair).0[64] == 0).into();
}
(*pubkey).0.copy_from_slice(&(*keypair).0[32..]);
(&mut *pubkey).0.copy_from_slice(&(&*keypair).0[32..]);
1
}

Expand All @@ -2008,13 +2008,13 @@ mod fuzz_dummy {
) -> c_int {
check_context_flags(cx, SECP256K1_START_VERIFY);
let mut pk = PublicKey::new();
pk.0.copy_from_slice(&(*keypair).0[32..]);
pk.0.copy_from_slice(&(&*keypair).0[32..]);
let mut sk = [0u8; 32];
sk.copy_from_slice(&(*keypair).0[..32]);
sk.copy_from_slice(&(&*keypair).0[..32]);
assert_eq!(secp256k1_ec_pubkey_tweak_add(cx, &mut pk, tweak32), 1);
assert_eq!(secp256k1_ec_seckey_tweak_add(cx, (&mut sk[..]).as_mut_ptr(), tweak32), 1);
(*keypair).0[..32].copy_from_slice(&sk);
(*keypair).0[32..].copy_from_slice(&pk.0);
(&mut *keypair).0[..32].copy_from_slice(&sk);
(&mut *keypair).0[32..].copy_from_slice(&pk.0);
1
}

Expand Down
Loading