2531 Commits

Author SHA1 Message Date
Tim Ruffing
4b0f711d46
Merge bitcoin-core/secp256k1#1277: autotools: Clean up after adding Wycheproof
7e977b3c5071fc17575ff88ebbc9db7b17c70497 autotools: Take VPATH builds into account when generating testvectors (Tim Ruffing)
2418d3260ac51ba0f148fb20e19c8f41bba8a135 autotools: Create src/wycheproof dir before creating file in it (Tim Ruffing)
8764034ed55bffc8a26fbe377ac505359f8828e9 autotools: Make all "pregenerated" targets .PHONY (Tim Ruffing)
e1b9ce881159e8e2572467f1426f200e987a4d44 autotools: Use same conventions for all pregenerated files (Tim Ruffing)
08f4b1632d0ad976fe00ee606f3a95894555a2e1 autotools: Move code around to tidy Makefile (Tim Ruffing)
529b54d9224e680197e6052b505d2a66398e0d36 autotools: Move Wycheproof header from EXTRA_DIST to noinst_HEADERS (Tim Ruffing)

Pull request description:

  Follow-up to https://github.com/bitcoin-core/secp256k1/pull/1245.

  This builds on top of https://github.com/bitcoin-core/secp256k1/pull/1276. Let's only merge https://github.com/bitcoin-core/secp256k1/pull/1276 as a hotfix for the Core build.

ACKs for top commit:
  hebasto:
    ACK 7e977b3c5071fc17575ff88ebbc9db7b17c70497

Tree-SHA512: 42e09feaed15d903e759360e1dfbd1afce9da07a55512e2e791147b72d9b6477e34ae6028439af57dbcae318081a37ddcf3a630f9617bfea95c130135ba2313f
2023-04-27 15:39:30 +01:00
Tim Ruffing
222ecaf661
Merge bitcoin-core/secp256k1#1284: cmake: Some improvements using PROJECT_IS_TOP_LEVEL variable
71f746c057a66d5ae0dfdb5d439bc49592c0d16e cmake: Include `include` directory for subtree builds (Hennadii Stepanov)
5431b9decdbbdf30c5c5f2aed4b59662f5c681a2 cmake: Make `SECP256K1_INSTALL` default depend on `PROJECT_IS_TOP_LEVEL` (Hennadii Stepanov)
162608cc982538906e775d0c549aff2de5dee413 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 71f746c057a66d5ae0dfdb5d439bc49592c0d16e.

Tree-SHA512: 8ccdbcc94b26f36e772611ebaab0f2846debd6ad20f9e361be31a8d2128a14273acb692b0631026e12cc6cdef6d445dce0fd3beb4f71af47b46dfcf840a18879
2023-04-27 15:17:38 +01:00
Hennadii Stepanov
71f746c057
cmake: Include include directory for subtree builds 2023-04-27 15:13:10 +01:00
Tim Ruffing
024a409484
Merge bitcoin-core/secp256k1#1240: cmake: Improve and document compiler flag checks
a8d059f76cb3429381adda1193c3d1976ba3cab4 cmake, doc: Document compiler flags (Hennadii Stepanov)
6ece1507cb11a897a98052f34a374ec00e83cb86 cmake, refactor: Rename `try_add_compile_option` to `try_append_cflags` (Hennadii Stepanov)
19516ed3e9efe43b00d75820fb6590dcbed548b3 cmake: Use `add_compile_options()` in `try_add_compile_option()` (Hennadii Stepanov)

Pull request description:

  This PR:
  - drops tinkering with the `COMPILE_OPTIONS` directory property in `try_add_compile_option()`  and renames it to `try_append_cflags()`
  - copies related comments from `configure.ac`

ACKs for top commit:
  theuni:
    ACK a8d059f76c .

Tree-SHA512: 7ac011c135e12a65c45f4feb7cd74fd2d961ed77252afecf3a66e2af1d57facab446120c63696507b5ecd5bdb3eee1521760a53028b914c429652d00d03a4462
2023-04-27 14:48:46 +01:00
Hennadii Stepanov
a8d059f76c
cmake, doc: Document compiler flags 2023-04-27 14:41:13 +01:00
Hennadii Stepanov
6ece1507cb
cmake, refactor: Rename try_add_compile_option to try_append_cflags
Actually, `try_append_cflags()` can handle a list of flags, and the new
name is similar to the one used in `configure.ac`.
2023-04-27 14:41:13 +01:00
Hennadii Stepanov
19516ed3e9
cmake: Use add_compile_options() in try_add_compile_option()
This change drops tinkering with the `COMPILE_OPTIONS` directory
property. Also `try_add_compile_option()` can handle a list of flags
now, if they are required to be checked simultaneously.

An explanatory comments have been added as well.
2023-04-27 14:39:10 +01:00
Tim Ruffing
4b84f4bf0f
Merge bitcoin-core/secp256k1#1239: cmake: Bugfix and other improvements after bumping CMake up to 3.13
a273d74b2ea1ef115a7e40fe89a64a6c744018c6 cmake: Improve version comparison (Hennadii Stepanov)
6a58b483efb96de32134611963c16f6bf7e94d51 cmake: Use `if(... IN_LIST ...)` command (Hennadii Stepanov)
2445808c0203215e7182355762944ab909d423d2 cmake: Use dedicated `GENERATOR_IS_MULTI_CONFIG` property (Hennadii Stepanov)
9f8703ef17db0144b320714cd56c1fe0317a5786 cmake: Use dedicated `CMAKE_HOST_APPLE` variable (Hennadii Stepanov)
8c2017035a9c0722aeb7f24162d57d795443fd4c cmake: Use recommended `add_compile_definitions` command (Hennadii Stepanov)
04d4cc071a7aa92ad5edcf970a6cc2a8f415d36c cmake: Add `DESCRIPTION` and `HOMEPAGE_URL` options to `project` command (Hennadii Stepanov)
8a8b6536ef52fbbd9690f859d2f02d7f4b3789f6 cmake: Use `SameMinorVersion` compatibility mode (Hennadii Stepanov)

Pull request description:

  This PR:
  - resolves two items from #1235, including a bugfix with package version compatibility
  - includes other improvements which have become available for CMake 3.13+.

  To test the `GENERATOR_IS_MULTI_CONFIG` property on Linux, one can use the "[Ninja Multi-Config](https://cmake.org/cmake/help/latest/generator/Ninja%20Multi-Config.html)" generator:
  ```sh
  cmake -S . -B build -G "Ninja Multi-Config"
  ```

ACKs for top commit:
  real-or-random:
    ACK a273d74b2ea1ef115a7e40fe89a64a6c744018c6
  theuni:
    ACK a273d74b2ea1ef115a7e40fe89a64a6c744018c6

Tree-SHA512: f31c4f0f30bf368303e70ab8952cde5cc8c70a5e79a04f879abcbee3d0a8d8c598379fb38f5142cb1f8ff5f9dcfc8b8eb4c13c975a1d05fdcc92d9c805a59d9a
2023-04-27 11:23:55 +01:00
Tim Ruffing
596b336ff6
Merge bitcoin-core/secp256k1#1234: cmake: Add dev-mode
ce5ba9e24dfcceb49ed7f83a87548fd8b3b0cab2 gitignore: Add CMakeUserPresets.json (Tim Ruffing)
0a446a312fdd6260320eeed51697ecadf61ee11f cmake: Add dev-mode CMake preset (Tim Ruffing)

Pull request description:

  To use, invoke `cmake` with argument `--preset dev-mode`.

  One disadvantage over `./configure --enable-dev-mode` is that CMake does not provide a way to "hide" presets from users. That is, `cmake --list-presets` will list dev-mode, and it will also appear in `cmake-gui`, even though it's not selectable there due to a bug in cmake-gui.

  Solves one item in #1224.

ACKs for top commit:
  hebasto:
    ACK ce5ba9e24dfcceb49ed7f83a87548fd8b3b0cab2
  theuni:
    ACK ce5ba9e24dfcceb49ed7f83a87548fd8b3b0cab2

Tree-SHA512: c14bd283bd5bf64006bf3a23d72e6e55777b084aff71eb2a002f8ddde1d3549ccb2f08feb2b83366a24272209ab579cac8b73cfc020919adf7f039beb65bc9cc
2023-04-27 11:05:25 +01:00
Tim Ruffing
6b7e5b717d
Merge bitcoin-core/secp256k1#1275: build: Fix C4005 "macro redefinition" MSVC warnings in examples
dc0657c7622f5a13afc3876eca7e2fc7cabb9a10 build: Fix C4005 "macro redefinition" MSVC warnings in examples (Hennadii Stepanov)

Pull request description:

  This PR:
  - fixes C4005 "macro redefinition" MSVC warnings in examples
  - removes warning suppressions in both build systems, Autotools-based and CMake-based ones

ACKs for top commit:
  real-or-random:
    utACK dc0657c7622f5a13afc3876eca7e2fc7cabb9a10

Tree-SHA512: fe3bb8f06b3ff1d51e5e20754a289e0e6b99ddf4c0bd4e6e4786e2558e71e043ab23ff7782a83a902df5db28d18ae65312674c373fdc49f5af252763a22bd0fb
2023-04-26 16:44:51 +01:00
Tim Ruffing
1c89536718
Merge bitcoin-core/secp256k1#1286: tests: remove extra semicolon in macro
c4062d6b5d83572c1932f32003a7c0e901fffc23 debug: move helper for printing buffers into util.h (Jonas Nick)
3858bad2c6493aa66cbfa62540d89da9c5a16040 tests: remove extra semicolon in macro (Jonas Nick)

Pull request description:

ACKs for top commit:
  real-or-random:
    utACK c4062d6b5d83572c1932f32003a7c0e901fffc23
  hebasto:
    ACK c4062d6b5d83572c1932f32003a7c0e901fffc23, I have reviewed the code and it looks OK.

Tree-SHA512: a2c97433d82c1ab2ba976c4fd8aaf337de5f225abcd459e84dcdab689e77e43d4ed654c971ab7f11f27af12e7a744122a0fdd9ece8e635d7a7041c45e9484de8
2023-04-25 23:10:00 +01:00
Jonas Nick
c4062d6b5d
debug: move helper for printing buffers into util.h 2023-04-25 16:07:10 +00:00
Jonas Nick
f3126fdfec
norm arg: remove prove edge tests which are now covered by vectors 2023-04-25 15:06:57 +00:00
Jonas Nick
847ed9ecb2
norm arg: add verification to prove vectors 2023-04-25 15:06:40 +00:00
Tim Ruffing
7e977b3c50 autotools: Take VPATH builds into account when generating testvectors 2023-04-25 16:06:25 +01:00
Tim Ruffing
2418d3260a autotools: Create src/wycheproof dir before creating file in it
This directory may not exist in a VPATH build,
see https://github.com/bitcoin/bitcoin/pull/27445#issuecomment-1502994264 .
2023-04-25 16:06:25 +01:00
Tim Ruffing
8764034ed5 autotools: Make all "pregenerated" targets .PHONY
This follows the automake conventions more, see:
https://www.gnu.org/software/automake/manual/html_node/Clean.html
2023-04-25 16:06:25 +01:00
Tim Ruffing
e1b9ce8811 autotools: Use same conventions for all pregenerated files 2023-04-25 16:06:25 +01:00
Jonas Nick
cf797ed2a4
norm arg: add prove test vectors 2023-04-25 14:56:42 +00:00
Jonas Nick
095c1e749c
norm arg: add prove_const to tests 2023-04-25 14:54:30 +00:00
Jonas Nick
ce18267b66
Merge elementsproject/secp256k1-zkp#229: musig: Fix nits left open in #211
a0b51afc01dfc8dbdc43e4c36825fadf760daa3c musig: VERIFY_CHECK preconditions of _musig_keyaggcoef_internal() (Tim Ruffing)
da7702844e212f0cc165d1560a4dc09a05811dae extrakeys: Clarify comparison order of compare/sort functions (Tim Ruffing)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK a0b51afc01dfc8dbdc43e4c36825fadf760daa3c

Tree-SHA512: ad509d7a55c6f832a25b896b0fe38e259b79864b2a8d1fb337b9d9b4a5e1950a9d579040285465c89d815becc6e49af4129ab2d904d32ac98cef74357a440c89
2023-04-23 08:06:33 +00:00
Jonas Nick
78ed0e09ca
Merge elementsproject/secp256k1-zkp#227: Use relative #include paths and tidy header guards (as in upstream)
e444d24bcad57091746784fcea6d07e95d058cd3 Fix include guards: No _ prefix/suffix but _H suffix (as in upstream) (Tim Ruffing)
0eea7d97abba0cc07515368981c6a30b96ab2428 Use relative #include paths in tests (as in upstream) (Tim Ruffing)
c690d6df700fe63529f7dc2fc02166d107c6b686 Use relative #include paths in benchmarks (as in upstream) (Tim Ruffing)
c565827c1a332c96253d35b85accae9cda4ef00d Use relative #include paths in ctime_test (as in upstream) (Tim Ruffing)
4eca406f4c71646d1812389d684219b481098b7d Use relative #include paths in library (as in upstream) (Tim Ruffing)

Pull request description:

ACKs for top commit:
  apoelstra:
    ACK e444d24bcad57091746784fcea6d07e95d058cd3
  jonasnick:
    ACK e444d24bcad57091746784fcea6d07e95d058cd3

Tree-SHA512: 4d125cf75748f4a921b70ca933ee59c3cf5c0845c6960e6915a322e53840cb3a0955fe5952e654d133ad36991f3268aeee44430cbd6f7d83e333a554c436f39b
2023-04-23 07:50:30 +00:00
Jonas Nick
3858bad2c6
tests: remove extra semicolon in macro 2023-04-21 20:21:28 +00:00
Jonas Nick
1f33bb2b1c
Merge bitcoin-core/secp256k1#1205: field: Improve docs +tests of secp256k1_fe_set_b32
162da73e9a48875aab1ee6ca1c14f86ca4646946 tests: Add debug helper for printing buffers (Tim Ruffing)
e9fd3dff76e30fcd83d060ad9195cadae9cdc9a2 field: Improve docs and tests of secp256k1_fe_set_b32 (Tim Ruffing)
ca92a35d019730aec9d3ec8097dcbb9633a69874 field: Simplify code in secp256k1_fe_set_b32 (Tim Ruffing)
d93f62e3693d6763891edcad11472f9d475177e5 field: Verify field element even after secp256k1_fe_set_b32 fails (Tim Ruffing)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK 162da73e9a48875aab1ee6ca1c14f86ca4646946

Tree-SHA512: b3ed8e45c969d0420275ff154462f3820b72b57832ccba1f6f427e0cfd9cff3e27440c20994f69ea33a576b1903eb7f04a989f0dbd574bbd96ee56c6dd4500f7
2023-04-21 16:23:59 +00:00
Jonas Nick
e7fc61ff16
Merge elementsproject/secp256k1-zkp#228: Simple dedicated -zkp README
4d9d8f92d411edc81f971cdf90696ae2952f4231 Simple dedicated -zkp README (Tim Ruffing)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK 4d9d8f92d411edc81f971cdf90696ae2952f4231

Tree-SHA512: bae7aafed0d524d2fea956261547ca094dbaa4b444b56b6f3fb947764cc5647b5eec82ac392f988df3d3d88d1357ae2aa34550c7a596b386a2d0a774f9764661
2023-04-21 16:22:17 +00:00
Tim Ruffing
162da73e9a tests: Add debug helper for printing buffers 2023-04-21 17:20:37 +02:00
Tim Ruffing
e9fd3dff76 field: Improve docs and tests of secp256k1_fe_set_b32 2023-04-21 17:20:37 +02:00
Tim Ruffing
a0b51afc01 musig: VERIFY_CHECK preconditions of _musig_keyaggcoef_internal() 2023-04-21 16:18:19 +02:00
Tim Ruffing
da7702844e extrakeys: Clarify comparison order of compare/sort functions
Note that the touched functions don't exist upstream currently.
2023-04-21 16:17:52 +02:00
Tim Ruffing
f6bef03c0a
Merge bitcoin-core/secp256k1#1283: Get rid of secp256k1_fe_const_b
69e1ec033120497b83dd95d92166fa05c54b8a06 Get rid of secp256k1_fe_const_b (Pieter Wuille)

Pull request description:

  Replaces #1282.

  Its only remaining use is in a test introduced in #1118, and it is easily replaced by the new `secp256k1_fe_add_int` from #1217.

ACKs for top commit:
  real-or-random:
    utACK 69e1ec033120497b83dd95d92166fa05c54b8a06

Tree-SHA512: 6ada192e0643fc5326198b60f019a5081444f9ba0a5b8ba6236f2a526829d8e5e479556600a604d9bc96c7ba86e3aab813f93c66679287d2135e95a2b75f5d3e
2023-04-21 13:07:59 +02:00
Hennadii Stepanov
5431b9decd
cmake: Make SECP256K1_INSTALL default depend on PROJECT_IS_TOP_LEVEL
Also full stops have been added to the option help texts for consistency
in cmake-gui.
2023-04-21 12:03:04 +01:00
Tim Ruffing
5ec1333d4f
Merge bitcoin-core/secp256k1#1285: bench: Make sys/time.h a system include
68b16a1662af2db801a87d6f1afedca93ec2501c bench: Make sys/time.h a system include (Tim Ruffing)

Pull request description:

  just because it is minimally more correct

ACKs for top commit:
  hebasto:
    ACK 68b16a1662af2db801a87d6f1afedca93ec2501c, I've skimmed through the whole codebase and did not find any more similar cases.

Tree-SHA512: 0a929b36202100abf0d14e9328a2dc2b4c9db5532f95514315cb04dd0a970dbbb1dc02c6275be0ec109dc88f6090f6ce48a65003c852fd4dc750decf07e563c4
2023-04-21 12:52:01 +02:00
Tim Ruffing
4d9d8f92d4
Simple dedicated -zkp README 2023-04-21 12:38:34 +02:00
Tim Ruffing
e444d24bca Fix include guards: No _ prefix/suffix but _H suffix (as in upstream) 2023-04-21 12:02:28 +02:00
Tim Ruffing
0eea7d97ab Use relative #include paths in tests (as in upstream) 2023-04-21 11:51:04 +02:00
Tim Ruffing
c690d6df70 Use relative #include paths in benchmarks (as in upstream) 2023-04-21 11:50:46 +02:00
Tim Ruffing
c565827c1a Use relative #include paths in ctime_test (as in upstream) 2023-04-21 11:50:34 +02:00
Tim Ruffing
4eca406f4c Use relative #include paths in library (as in upstream) 2023-04-21 11:50:24 +02:00
Tim Ruffing
68b16a1662 bench: Make sys/time.h a system include 2023-04-21 11:18:36 +02:00
Hennadii Stepanov
162608cc98
cmake: Emulate PROJECT_IS_TOP_LEVEL for CMake<3.21 2023-04-20 23:12:28 +01:00
Pieter Wuille
69e1ec0331 Get rid of secp256k1_fe_const_b 2023-04-20 16:07:56 -04:00
Jonas Nick
bf7bf8a64f
norm arg: split norm_arg_zero into prove_edge and verify_zero_len
One function tests prover edge cases, the other tests verifier edge cases.
2023-04-20 19:05:22 +00:00
Jonas Nick
a70c4d4a8a
norm arg: add test vector for |n| = 0 2023-04-20 19:03:27 +00:00
Jonas Nick
f5e4b16f0f
norm arg: add test vector for sign bit malleability
R is point at infinity but sign is != 0
2023-04-20 19:02:51 +00:00
Jonas Nick
c0de361fc5
norm arg: allow X and R to be the point at infinity
Add test vector
2023-04-20 19:02:41 +00:00
Jonas Nick
f22834f202
norm arg: add verify vector for n = [0], l = [0] 2023-04-20 19:00:14 +00:00
Jonas Nick
d8e7f3763b
musig: move ge_{serialize,parse}_ext to module-independent file 2023-04-20 18:56:11 +00:00
Jonas Nick
050d9b2912
Merge elementsproject/secp256k1-zkp#226: bppp: align terminology with paper
2c63d17c1e3b89950af9b6e51b14f025a2251c95 bppp: align terminology with paper (gamma) (Jonas Nick)
dbf2e4d3e1dda55a1a33dd4d86918a3c2281d8dc bppp: align terminology with paper (mu, rho) (Jonas Nick)

Pull request description:

ACKs for top commit:
  real-or-random:
    utACK  2c63d17c1e3b89950af9b6e51b14f025a2251c95

Tree-SHA512: 494db14717acf95de74ca14cdbd4908b31a2e81562ca18b8e3ddd795d40f60cd8ea8d7472c348da108db7d314d510f7366dc594809cf29c0c044c701c56119cc
2023-04-20 18:54:16 +00:00
Tim Ruffing
ce5ba9e24d gitignore: Add CMakeUserPresets.json
This file is specifically intended for *local* CMake templates
(as opposed to CMakePresets.json).
2023-04-20 19:23:12 +02:00
Tim Ruffing
0a446a312f cmake: Add dev-mode CMake preset
To use, invoke `cmake` with argument `--preset dev-mode`.

Solves one item in #1235.

One disadvantage over `./configure --enable-dev-mode` is that CMake
does not provide a way to "hide" presets from users. That is,
`cmake --list-presets` will list dev-mode, and it will also appear
in `cmake-gui`, even though it's not selectable there due to bug
https://gitlab.kitware.com/cmake/cmake/-/issues/23341. (So in our
case, that's probably rather a feature than a bug.)

We curently use version 3 presets which require CMake 3.21+.
Unfortunately, CMake versions before 3.19 may ignore the `--preset`
argument silently. So if the preset is not picked up, make sure you
have a recent enough CMake version.

More unfortunately, we can't even spell this warning out in
CMakePresets.json because CMake does not support officially support
comments in JSON, see
 - https://gitlab.kitware.com/cmake/cmake/-/issues/21858
 - https://gitlab.kitware.com/cmake/cmake/-/merge_requests/5853 .
We could use a hack hinted at in
https://gitlab.kitware.com/cmake/cmake/-/issues/21858#note_908543
but that's risky, because it could simply break for future versions,
and we probably want to use presets not only for dev mode.
2023-04-20 19:22:43 +02:00