Tim Ruffing
17fa21733a
ct: Be cautious and use volatile trick in more "conditional" paths
...
- secp256k1_scalar_cadd_bit
- secp256k1_modinvXX_normalize_YY
- secp256k1_modinvXX_divsteps_ZZ
- ECMULT_CONST_TABLE_GET_GE
Even though those code loations are not problematic right now
(with current compilers).
2023-05-11 16:32:07 +02:00
Tim Ruffing
5fb336f9ce
ct: Use volatile trick in scalar_cond_negate
2023-05-11 16:32:07 +02:00
Jonas Nick
712e7f8722
Remove unused scratch space from API
2023-05-11 13:39:56 +00:00
Pieter Wuille
54d34b6c24
Merge bitcoin-core/secp256k1#1300 : Avoid normalize conditional on VERIFY
...
97c63b9039 Avoid normalize conditional on VERIFY (Pieter Wuille)
Pull request description:
In the old code, `secp256k1_gej_rescale` requires a normalized input in VERIFY mode, but not otherwise. Its requirements shouldn't depend on this mode being enabled or not.
ACKs for top commit:
real-or-random:
utACK 97c63b9039 I've also verified that the loop in secp256k1_ecmult_strauss_wnaf holds up the invariant that the magnitude of Z is 1, even with the normalization removed
jonasnick:
ACK 97c63b9039
Tree-SHA512: 9598c133c6f4e488c74512089dabe0508529f20ca782be1c8fbeae9d7f132da9d570a061053acd3d245a9a187abf1f2581207441ce6aac8d0f8972cf357a349f
2023-05-11 08:30:21 -04:00
Pieter Wuille
7fc642fa25
Simplify secp256k1_fe_{impl_,}verify
2023-05-11 06:25:59 -04:00
Pieter Wuille
4e176ad5b9
Abstract out verify logic for fe_is_square_var
2023-05-11 06:25:56 -04:00
Pieter Wuille
4371f98346
Abstract out verify logic for fe_add_int
2023-05-11 06:25:19 -04:00
Pieter Wuille
89e324c6b9
Abstract out verify logic for fe_half
2023-05-11 06:25:15 -04:00
Pieter Wuille
283cd80ab4
Abstract out verify logic for fe_get_bounds
2023-05-11 06:24:26 -04:00
Pieter Wuille
d5aa2f0358
Abstract out verify logic for fe_inv{,_var}
2023-05-11 06:24:26 -04:00
Pieter Wuille
3167646072
Abstract out verify logic for fe_from_storage
2023-05-11 06:24:26 -04:00
Pieter Wuille
76d31e5047
Abstract out verify logic for fe_to_storage
2023-05-11 06:24:26 -04:00
Pieter Wuille
1e6894bdd7
Abstract out verify logic for fe_cmov
2023-05-11 06:24:26 -04:00
Pieter Wuille
be82bd8e03
Improve comments/checks for fe_sqrt
2023-05-11 06:24:22 -04:00
Pieter Wuille
6ab35082ef
Abstract out verify logic for fe_sqr
2023-05-11 06:18:40 -04:00
Pieter Wuille
4c25f6efbd
Abstract out verify logic for fe_mul
2023-05-11 06:18:40 -04:00
Pieter Wuille
e179e651cb
Abstract out verify logic for fe_add
2023-05-11 06:18:40 -04:00
Pieter Wuille
7e7ad7ff57
Abstract out verify logic for fe_mul_int
2023-05-11 06:18:40 -04:00
Pieter Wuille
65d82a3445
Abstract out verify logic for fe_negate
2023-05-11 06:18:40 -04:00
Pieter Wuille
144670893e
Abstract out verify logic for fe_get_b32
2023-05-11 06:18:40 -04:00
Pieter Wuille
f7a7666aeb
Abstract out verify logic for fe_set_b32
2023-05-11 06:18:40 -04:00
Pieter Wuille
ce4d2093e8
Abstract out verify logic for fe_cmp_var
2023-05-11 06:18:40 -04:00
Pieter Wuille
7d7d43c6dd
Improve comments/check for fe_equal{,_var}
2023-05-11 06:18:40 -04:00
Pieter Wuille
c5e788d672
Abstract out verify logic for fe_is_odd
2023-05-11 06:18:40 -04:00
Pieter Wuille
d3f3fe8616
Abstract out verify logic for fe_is_zero
2023-05-11 06:18:40 -04:00
Pieter Wuille
c701d9a471
Abstract out verify logic for fe_clear
2023-05-11 06:18:40 -04:00
Pieter Wuille
19a2bfeeea
Abstract out verify logic for fe_set_int
2023-05-11 06:18:40 -04:00
Pieter Wuille
864f9db491
Abstract out verify logic for fe_normalizes_to_zero{,_var}
2023-05-11 06:18:40 -04:00
Pieter Wuille
6c31371120
Abstract out verify logic for fe_normalize_var
2023-05-11 06:18:40 -04:00
Pieter Wuille
e28b51f522
Abstract out verify logic for fe_normalize_weak
2023-05-11 06:18:40 -04:00
Pieter Wuille
b6b6f9cb97
Abstract out verify logic for fe_normalize
2023-05-11 06:18:40 -04:00
Pieter Wuille
7fa5195559
Bugfix: correct SECP256K1_FE_CONST mag/norm fields
2023-05-11 06:18:37 -04:00
Hennadii Stepanov
e5cf4bf3ff
build: Rename arm to arm32
2023-05-11 10:03:23 +01:00
Pieter Wuille
b29566c51b
Merge magnitude/normalized fields, move/improve comments
...
Also split secp256k1_fe_verify into a generic and an implementation
specific part.
2023-05-11 04:25:19 -04:00
Pieter Wuille
97c63b9039
Avoid normalize conditional on VERIFY
2023-05-11 03:41:48 -04:00
Pieter Wuille
6ec3731e8c
Simplify test PRNG implementation
2023-05-10 10:40:08 -04:00
Pieter Wuille
bbc834467c
Avoid secp256k1_ge_set_gej_zinv with uninitialized z
2023-05-10 09:25:09 -04:00
Pieter Wuille
0a2e0b2ae4
Make secp256k1_{fe,ge,gej}_verify work as no-op if non-VERIFY
2023-05-10 09:25:09 -04:00
Pieter Wuille
f20266722a
Add invariant checking to group elements
2023-05-10 09:25:09 -04:00
Pieter Wuille
a18821d5b1
Always initialize output coordinates in secp256k1_ge_set_gej
2023-05-10 09:25:06 -04:00
Pieter Wuille
3086cb90ac
Expose secp256k1_fe_verify to other modules
2023-05-10 09:06:02 -04:00
Gregory Maxwell
a0e696fd4d
Make secp256k1_ecmult_const handle infinity
...
Infinity isn't currently needed here, but correctly handling it is a
little more safe against future changes.
Update docs for it to make it clear that it is not constant time in A
(the input point). It never was constant time in Q (and would be a little
complicated to make constant time in A).
If it was later made constant time in A, infinity support would be easy
to preserve, e.g. by running it on a dummy value and cmoving infinity into
the output.
2023-05-10 09:06:02 -04:00
Pieter Wuille
2e65f1fdbc
Avoid using bench_verify_data as bench_sign_data; merge them
2023-05-09 14:00:43 -04:00
Tim Ruffing
fb5bfa4eed
Add static test vector for Xoshiro256++
2023-05-09 18:11:29 +02:00
Pieter Wuille
723e8ca8f7
Remove randomness tests
...
Our RNG has been replaced with Xoshiro256++, a well-analyzed RNG. Our
unit tests should not be resposible for verifying its statistical
qualities.
2023-05-08 12:17:33 -04:00
Tim Ruffing
f30c74866b
Merge bitcoin-core/secp256k1#1270 : cmake: Fix library ABI versioning
...
bef448f9af cmake: Fix library ABI versioning (Hennadii Stepanov)
Pull request description:
This change emulates Libtool to make sure Libtool and CMake agree on the ABI version.
To test, one needs to simulate a release with backward-compatible API changes, which means the following changes in `configure.ac` and `CMakeLists.txt`:
- incrementing of `*_LIB_VERSION_CURRENT`
- setting `*_LIB_VERSION_REVISION` to zero
- incrementing of `*_LIB_VERSION_AGE`
ACKs for top commit:
real-or-random:
ACK bef448f9af diff looks good and I tested on Linux
Tree-SHA512: f7551fc7377ea50c8bc32d14108a034a1f91ebbb63d5fec562e5cc28416637834b9a4dcba3692df1780adcd1212ad4f238dc0219ab5add68bd88a5a458572ee5
2023-05-03 15:58:55 +02:00
Hennadii Stepanov
d1e48e5474
refactor: Make 64-bit shift explicit
...
This change fixes MSVC level-3 warning C4334.
See: https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4334
Required to enable level 3 warnings (/W3).
2023-05-02 13:35:15 +01:00
Hennadii Stepanov
755629bc03
cmake: Use full signature of add_test() command
...
An executable target in the `COMMAND` option will automatically be
replaced by the location of the executable created at build time.
This change fixes tests for Windows binaries using Wine.
2023-04-29 09:49:25 +01:00
Hennadii Stepanov
bef448f9af
cmake: Fix library ABI versioning
...
This change emulates Libtool to make sure Libtool and CMake agree on the
ABI version.
2023-04-28 20:59:53 +01:00
Tim Ruffing
222ecaf661
Merge bitcoin-core/secp256k1#1284 : cmake: Some improvements using PROJECT_IS_TOP_LEVEL variable
...
71f746c057 cmake: Include `include` directory for subtree builds (Hennadii Stepanov)
5431b9decd cmake: Make `SECP256K1_INSTALL` default depend on `PROJECT_IS_TOP_LEVEL` (Hennadii Stepanov)
162608cc98 cmake: Emulate `PROJECT_IS_TOP_LEVEL` for CMake<3.21 (Hennadii Stepanov)
Pull request description:
This PR:
1. Emulates [`PROJECT_IS_TOP_LEVEL`](https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html ) variable for CMake versions where it is not available.
2. Makes the `SECP256K1_INSTALL` option dependent on `PROJECT_IS_TOP_LEVEL` (a [follow up](https://github.com/bitcoin-core/secp256k1/pull/1263#issuecomment-1516564300 ) of https://github.com/bitcoin-core/secp256k1/pull/1263 ).
3. Makes integration of this project as a subtree easier. A top project can `#include <secp256k1.h>` with no additional `target_include_directories()` commands. For example, see https://github.com/hebasto/secp256k1-CMake-example/tree/subtree .
ACKs for top commit:
theuni:
utACK 71f746c057 .
Tree-SHA512: 8ccdbcc94b26f36e772611ebaab0f2846debd6ad20f9e361be31a8d2128a14273acb692b0631026e12cc6cdef6d445dce0fd3beb4f71af47b46dfcf840a18879
2023-04-27 15:17:38 +01:00