]>
Git Repo - secp256k1.git/log
Tim Ruffing [Thu, 28 Jan 2021 15:57:17 +0000 (16:57 +0100)]
Use bit ops instead of int mult for constant-time logic in gej_add_ge
Jonas Nick [Sat, 30 Jan 2021 10:07:45 +0000 (10:07 +0000)]
Merge #864: Add support for Cirrus CI
cc2a5451dc8ac8a3a9368e1a5b3a1488b15a8bc3 ci: Refactor Nix shell files (Jonas Nick)
2480e55c8f365eb15b703c75153766218ef8795f ci: Remove support for Travis CI (Tim Ruffing)
2b359f1c1d8f497629284864780d0684681e44dc ci: Enable simple cache for brewing valgrind on macOS (Tim Ruffing)
8c02e465c5ac2c8c35ce3aec45f88401df165ad0 ci: Add support for Cirrus CI (Tim Ruffing)
Pull request description:
ACKs for top commit:
sipa:
ACK
cc2a5451dc8ac8a3a9368e1a5b3a1488b15a8bc3 . Tested by introducing bugs: #883, #884, #885, #886, #887.
jonasnick:
ACK
cc2a5451dc8ac8a3a9368e1a5b3a1488b15a8bc3
Tree-SHA512: c9e8a891c9bda48b3fc307c2a85d2e4aa180531d084edd778d41c034769661627538ab397efac3abfc1a71c2f0730a45350dd212d499fe475c90a2a1b3c61ac8
Jonas Nick [Fri, 29 Jan 2021 21:04:10 +0000 (21:04 +0000)]
ci: Refactor Nix shell files
Tim Ruffing [Thu, 28 Jan 2021 16:32:36 +0000 (17:32 +0100)]
ci: Remove support for Travis CI
So long, and thanks for all fish!
Tim Ruffing [Thu, 14 Jan 2021 10:05:20 +0000 (11:05 +0100)]
ci: Enable simple cache for brewing valgrind on macOS
Tim Ruffing [Tue, 22 Dec 2020 15:42:08 +0000 (16:42 +0100)]
ci: Add support for Cirrus CI
Tim Ruffing [Tue, 26 Jan 2021 08:36:14 +0000 (09:36 +0100)]
Merge #880: Add parens around ROUND_TO_ALIGN's parameter.
b6f649889ae78573f1959f04172a8e1fe15beab7 Add parens around ROUND_TO_ALIGN's parameter. This makes the macro robust against a hypothetical ROUND_TO_ALIGN(foo ? sizeA : size B) invocation. (Russell O'Connor)
Pull request description:
This makes the macro robust against a hypothetical `ROUND_TO_ALIGN(foo ? sizeA : size B)` invocation.
See also <https://wiki.sei.cmu.edu/confluence/display/c/PRE01-C.+Use+parentheses+within+macros+around+parameter+names>.
ACKs for top commit:
sipa:
ACK
b6f649889ae78573f1959f04172a8e1fe15beab7 . This is the way.
jonasnick:
utACK
b6f649889ae78573f1959f04172a8e1fe15beab7
real-or-random:
utACK
b6f649889ae78573f1959f04172a8e1fe15beab7
Tree-SHA512: 6a2685f959e8ae472259e5ea75fe12e8e6213f56f5aec7603a896c294e6a8833caae25c412607d9c9a3125370a7765a3e506127b101a1b87203f95e326f6c6c6
Russell O'Connor [Mon, 25 Jan 2021 16:43:45 +0000 (11:43 -0500)]
Add parens around ROUND_TO_ALIGN's parameter.
This makes the macro robust against a hypothetical ROUND_TO_ALIGN(foo ? sizeA : size B) invocation.
Jonas Nick [Mon, 25 Jan 2021 14:00:41 +0000 (14:00 +0000)]
Merge #877: Add missing secp256k1_ge_set_gej_var decl.
482e4a9cfcecad28c3b7e601667b3b41949f47fe Add missing secp256k1_ge_set_gej_var decl. (Russell O'Connor)
Pull request description:
ACKs for top commit:
sipa:
utACK
482e4a9cfcecad28c3b7e601667b3b41949f47fe
real-or-random:
utACK https://github.com/bitcoin-core/secp256k1/pull/877/commits/
482e4a9cfcecad28c3b7e601667b3b41949f47fe
jonasnick:
ACK
482e4a9cfcecad28c3b7e601667b3b41949f47fe
Tree-SHA512: 02195390fb79f08bcfd655dc56115ea37df42c1ad8f1123b26e7426e387d9658a3bb18fe9951140fc4dd78ce222b84d8b75ce77aec884675e0c26a2005dd2ddc
Jonas Nick [Mon, 25 Jan 2021 13:57:35 +0000 (13:57 +0000)]
Merge #874: Remove underscores from header defs.
fb390c5299e999e06b7dff9e77e373600fae9fdf Remove underscores from header defs. This makes them consistent with other files and avoids reserved identifiers. (Russell O'Connor)
Pull request description:
ACKs for top commit:
real-or-random:
utACK
fb390c5299e999e06b7dff9e77e373600fae9fdf
jonasnick:
ACK
fb390c5299e999e06b7dff9e77e373600fae9fdf
Tree-SHA512: f49da79c0a90d1e82494821e7cf6f61c66bc377a3f37b2d4787ef19d2126e000627bfe4a76aa1c5bfffeb1382054aa824a7e9ab5d73c19d876b0828722c73854
Jonas Nick [Mon, 25 Jan 2021 13:39:48 +0000 (13:39 +0000)]
Merge #878: Remove unused secp256k1_fe_inv_all_var
75d2ae149ef37d3aa42fdefd1529aad89859816c Remove unused secp256k1_fe_inv_all_var (Pieter Wuille)
Pull request description:
ACKs for top commit:
practicalswift:
cr ACK
75d2ae149ef37d3aa42fdefd1529aad89859816c : patch looks correct
real-or-random:
utACK https://github.com/bitcoin-core/secp256k1/commit/
75d2ae149ef37d3aa42fdefd1529aad89859816c
jonasnick:
utACK
75d2ae149ef37d3aa42fdefd1529aad89859816c
Tree-SHA512: 6f548a436c6dcb275493e73e6afa23fd1b79392cc3071878f98735732ac9c93971e5c92736c3fe50eaae90a200e1a435e9be9f14d1a69251c83876a6e3c46d41
Jonas Nick [Mon, 25 Jan 2021 13:35:53 +0000 (13:35 +0000)]
Merge #875: Avoid casting (void**) values.
27306186045955803ca4070783c6a28853003e6a Avoid casting (void**) values. Replaced with an expression that only casts (void*) values. (Russell O'Connor)
Pull request description:
ACKs for top commit:
sipa:
utACK
27306186045955803ca4070783c6a28853003e6a
real-or-random:
utACK https://github.com/bitcoin-core/secp256k1/pull/875/commits/
27306186045955803ca4070783c6a28853003e6a
jonasnick:
utACK
27306186045955803ca4070783c6a28853003e6a
Tree-SHA512: bdc1e9eefa10f79b744ef6ae83f379faff7bce9fb428c3bcfcc3f6e4e252e5c6543efbe0f84760709850948cbc8a432772c76a6c5f6b8cd18cb2d862b324912d
Pieter Wuille [Sun, 24 Jan 2021 04:16:51 +0000 (20:16 -0800)]
Remove unused secp256k1_fe_inv_all_var
Russell O'Connor [Sun, 24 Jan 2021 00:12:19 +0000 (19:12 -0500)]
Add missing secp256k1_ge_set_gej_var decl.
Russell O'Connor [Sat, 23 Jan 2021 20:22:54 +0000 (15:22 -0500)]
Avoid casting (void**) values.
Replaced with an expression that only casts (void*) values.
Russell O'Connor [Sat, 23 Jan 2021 19:48:35 +0000 (14:48 -0500)]
Remove underscores from header defs.
This makes them consistent with other files and avoids reserved identifiers.
Tim Ruffing [Tue, 12 Jan 2021 14:34:33 +0000 (15:34 +0100)]
Merge #862: Autoconf improvements
3c15130709da26a6d2f25a483aa45e14bf1e4feb Improve CC_FOR_BUILD detection (Tim Ruffing)
47802a476246b67360bc24df78fe5fad6b93c296 Restructure and tidy configure.ac (Tim Ruffing)
252c19dfc654dbb10a35579fa36edb3466904758 Ask brew for valgrind include path (Tim Ruffing)
Pull request description:
See individual commit messages. These are improvements in preparation of the switch to Cirrus CI. (Maybe I'll just open a PR on top of this one.)
The first commit made the difference between successful build https://cirrus-ci.com/task/
6740575057608704 and unsuccessful build https://cirrus-ci.com/task/
4909571074424832 .
I've tested the second commit without cross-compilation and with cross-compilation for android (https://github.com/bitcoin-core/secp256k1/issues/621#issuecomment-
495703399 )
When working on the autoconf stuff, I noticed two things that I just want to write down here:
- At some point we should update [build-aux/m4/ax_prog_cc_for_build.m4](https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html). This is outdated, and [there have been a lot of fixes](https://github.com/autoconf-archive/autoconf-archive/pull/207) But the latest version is [broken](https://lists.gnu.org/archive/html/autoconf-archive-maintainers/2020-06/msg00002.html), so now is probably not the time.
- The latest autoconf 2.70 deprecates `AC_PROG_CC_C89`. It's not needed anymore because `AC_PROG_CC` cares about testing for version support. This makes autoconf 2.70 output a warning that we should probably just ignore. We don't want to force users onto 2.70...
ACKs for top commit:
sipa:
utACK
3c15130709da26a6d2f25a483aa45e14bf1e4feb
jonasnick:
utACK
3c15130 makes sense (with my very basic understanding of autoconf)
Tree-SHA512: 595b9de316374c2213f1340cddaa22eb3190b01fa99aa6ae26e77804df41e7ecf96a09e03c28e8f8b9fd04e211e4ee2f78f1e5a7995143c84f99d2e16d4f0260
Tim Ruffing [Tue, 12 Jan 2021 09:54:51 +0000 (10:54 +0100)]
Merge #845: Extract the secret key from a keypair
33cb3c2b1fc3f3fe46c6d0eab118248ea86c1f06 Add secret key extraction from keypair to constant time tests (Elichai Turkel)
36d9dc1e8e6e3b15d805f04c973a8784a78880f6 Add seckey extraction from keypair to the extrakeys tests (Elichai Turkel)
fc96aa73f5c7f62452847a31821890ff1f72a5a4 Add a function to extract the secretkey from a keypair (Elichai Turkel)
Pull request description:
With schnorrsig if you need to tweak the secret key (for BIP32) you must use the keypair API to get compatible secret/public keys which you do by calling `secp256k1_keypair_xonly_tweak_add()`, but after that there's no currently a way to extract the secret key back for storage.
so I added a `secp256k1_keypair_seckey` function to extract the key
ACKs for top commit:
jonasnick:
ACK
33cb3c2b1fc3f3fe46c6d0eab118248ea86c1f06
real-or-random:
ACK
33cb3c2b1fc3f3fe46c6d0eab118248ea86c1f06 code inspection, tests pass
Tree-SHA512: 11212db38c8b87a87e2dc35c4d6993716867b45215b94b20522b1b3164ca63d4c6bf5192a6bff0e9267b333779cc8164844c56669a94e9be72df9ef025ffcfd4
Tim Ruffing [Sat, 2 Jan 2021 14:15:21 +0000 (15:15 +0100)]
Improve CC_FOR_BUILD detection
This commits simply uses CC as CC_FOR_BUILD and the same for
corresponding flags if we're not cross-compiling. This has a number of
benefits in this common case:
- It avoids strange cases where very old compilers are used (#768).
- Flags are consistently set for CC and CC_FOR_BUILD.
- ./configure is faster.
- You get compiler x consistently if you set CC=x; we got this wrong
in CI in the past.
./configure warns if a _FOR_BUILD variable is set but ignored because
we're not cross-compiling.
The change exposed that //-style comments are used in gen_context.c,
which is also fixed by this commit.
This commit also reorganizes code in configure.ac to have a cleaner
separation of sections.
Tim Ruffing [Fri, 8 Jan 2021 14:18:08 +0000 (15:18 +0100)]
Restructure and tidy configure.ac
No behavioral changes.
Tim Ruffing [Wed, 23 Dec 2020 21:08:03 +0000 (22:08 +0100)]
Ask brew for valgrind include path
Valgrind is typically installed using brew on macOS. This commit
makes ./configure detect this case set the appropriate include
directory (in the same way as we already do for openssl and gmp).
Tim Ruffing [Fri, 8 Jan 2021 13:15:40 +0000 (14:15 +0100)]
Merge #860: fixed trivial typo
b7bc3a4aaa5d89c9a9cf2d914362e69ca91a8678 fixed typo (Ferdinando M. Ametrano)
Pull request description:
ACKs for top commit:
real-or-random:
ACK
b7bc3a4aaa5d89c9a9cf2d914362e69ca91a8678
elichai:
ACK
b7bc3a4aaa5d89c9a9cf2d914362e69ca91a8678
Tree-SHA512: 6c1889f095607a2f293ffe00359c03e63cfca572b0a17388b83ece54f24ec61ac12d6eb967a47d2dccd54de991383923a07c5cced320c0a96a36a28674cf739c
Ferdinando M. Ametrano [Tue, 22 Dec 2020 21:31:29 +0000 (22:31 +0100)]
fixed typo
Elichai Turkel [Sat, 19 Dec 2020 08:56:51 +0000 (10:56 +0200)]
Add secret key extraction from keypair to constant time tests
Elichai Turkel [Thu, 5 Nov 2020 14:49:07 +0000 (16:49 +0200)]
Add seckey extraction from keypair to the extrakeys tests
Elichai Turkel [Thu, 5 Nov 2020 14:48:48 +0000 (16:48 +0200)]
Add a function to extract the secretkey from a keypair
Jonas Nick [Fri, 18 Dec 2020 18:32:56 +0000 (18:32 +0000)]
Merge #858: Fix insecure links
07aa4c70ffb96d21e496854f823c3ea3353b9086 Fix insecure links (Dimitris Apostolou)
Pull request description:
ACKs for top commit:
sipa:
ACK
07aa4c70ffb96d21e496854f823c3ea3353b9086 . Verified all the modified links.
jonasnick:
ACK
07aa4c70ffb96d21e496854f823c3ea3353b9086
Tree-SHA512: d1240aab5e40a204c75fca1049b99af9890684df7dbce4167b1904f73424c8a4f84ed85a8cc315501f1b7cf1674d744232b9f2126dff31e3d47e4f3fc65764d4
Dimitris Apostolou [Thu, 17 Dec 2020 06:33:49 +0000 (08:33 +0200)]
Fix insecure links
Tim Ruffing [Wed, 9 Dec 2020 16:59:07 +0000 (17:59 +0100)]
Merge #857: docs: fix simple typo, dependecy -> dependency
18aadf9d288a54533376cb94f655d059eb1f098e docs: fix simple typo, dependecy -> dependency (Tim Gates)
Pull request description:
There is a small typo in src/group_impl.h.
Should read `dependency` rather than `dependecy`.
ACKs for top commit:
real-or-random:
ACK
18aadf9d288a54533376cb94f655d059eb1f098e
Tree-SHA512: 3529f43bcc87ea8940ecf5af765951f61d97d1efa86fd8abc29e32b600fd449165a94a2fa525bc6b3d9a7d8aa6e691cc4d42033537b196ba166a867e6db7f397
Tim Gates [Tue, 8 Dec 2020 10:45:13 +0000 (21:45 +1100)]
docs: fix simple typo, dependecy -> dependency
There is a small typo in src/group_impl.h.
Should read `dependency` rather than `dependecy`.
Jonas Nick [Mon, 7 Dec 2020 21:48:54 +0000 (21:48 +0000)]
Merge #852: Add sage script for generating scalar_split_lambda constants
329a2e0a3f2d9e936179cbf079773538f95bee33 sage: Add script for generating scalar_split_lambda constants (Tim Ruffing)
f554dfc7088c6ca8d4aff927a51bd889b29dc186 sage: Reorganize files (Tim Ruffing)
Pull request description:
ACKs for top commit:
sipa:
ACK
329a2e0a3f2d9e936179cbf079773538f95bee33
Tree-SHA512: d41fe5eba332f48af0b800778aa076925c4e8e95ec21c4371a500ddd6088b6d52961bdb93f7ce2b127e18095667dbb966a0d14191177f0d0e78dfaf55271d5e2
Tim Ruffing [Mon, 7 Dec 2020 19:10:20 +0000 (20:10 +0100)]
Merge #854: Rename msg32 to msghash32 in ecdsa_sign/verify and add explanation
6e85d675aaf9dc17842096f9cbf8cfab216c9331 Rename tweak to tweak32 in public API (Jonas Nick)
f587f04e35719883546afd54cb491ead18eb6fc7 Rename msg32 to msghash32 in ecdsa_sign/verify and add explanation (Jonas Nick)
Pull request description:
This fixes #307 if there's nothing else that's confusing.
ACKs for top commit:
real-or-random:
ACK
6e85d675aaf9dc17842096f9cbf8cfab216c9331 I inspected the diff
Tree-SHA512: 1b0dc9dfffd497058dc39c962a512ed6d7f89218020fef9d2c03aaae1aefbf272b918c4fe6503434b62547714855fe1b8b89f2366f3ae6cde16143207c9e6b86
Jonas Nick [Fri, 4 Dec 2020 14:16:43 +0000 (14:16 +0000)]
Rename tweak to tweak32 in public API
Jonas Nick [Thu, 3 Dec 2020 15:53:31 +0000 (15:53 +0000)]
Rename msg32 to msghash32 in ecdsa_sign/verify and add explanation
Tim Ruffing [Wed, 25 Nov 2020 13:12:27 +0000 (14:12 +0100)]
sage: Add script for generating scalar_split_lambda constants
Jonas Nick [Tue, 1 Dec 2020 08:31:08 +0000 (08:31 +0000)]
Merge #851: make test count iteration configurable by environment variable
f4fa8d226a95e42b252c07edb425c446370e01c0 forbid a test iteration of 0 or less (Andrew Poelstra)
0ce45548813709d828cb3abcc7db4c9ce6e26907 make test count iteration configurable by environment variable (Andrew Poelstra)
Pull request description:
ACKs for top commit:
jonasnick:
ACK
f4fa8d226a95e42b252c07edb425c446370e01c0
real-or-random:
ACK
f4fa8d226a95e42b252c07edb425c446370e01c0
Tree-SHA512: 087771402c8e9536c07446baa7d02da5104d2b691f40c1dd04737329534422d895d3b692f485990d5791af8ccc124305b4f8b19be75e27b6b04cfb2337b28beb
Andrew Poelstra [Wed, 25 Nov 2020 00:05:13 +0000 (00:05 +0000)]
forbid a test iteration of 0 or less
Tim Ruffing [Wed, 25 Nov 2020 12:50:40 +0000 (13:50 +0100)]
sage: Reorganize files
* Move curve parameters to separate file
* Rename main prover script for clarity
Jonas Nick [Mon, 23 Nov 2020 20:15:16 +0000 (20:15 +0000)]
Merge #849: Convert Sage code to Python 3 (as used by Sage >= 9)
13c88efed0005eb6745a222963ee74564054eafb Convert Sage code to Python 3 (as used by Sage >= 9) (Frédéric Chapoton)
Pull request description:
ACKs for top commit:
jonasnick:
ACK
13c88efed0005eb6745a222963ee74564054eafb
Tree-SHA512: 6b8a32c35554b7e881841c17fe21323035014d25003f14e399f03ec017ea1bae1c68eee18a4d0315fc0f3b40d8252b5c8790f6c355d7d074a8ebc5e1ca832795
Frédéric Chapoton [Fri, 20 Nov 2020 10:28:28 +0000 (11:28 +0100)]
Convert Sage code to Python 3 (as used by Sage >= 9)
Co-authored-by: Tim Ruffing <[email protected] >
Andrew Poelstra [Mon, 23 Nov 2020 01:05:31 +0000 (01:05 +0000)]
make test count iteration configurable by environment variable
Pieter Wuille [Wed, 4 Nov 2020 23:28:11 +0000 (15:28 -0800)]
Merge #835: Don't use reserved identifiers memczero and benchmark_verify_t
1f4dd0383807bfb7fef884601357b4c629dfb566 Typedef (u)int128_t only when they're not provided by the compiler (Tim Ruffing)
e89278f211a526062745c391d48a7baf782b4b2b Don't use reserved identifiers memczero and benchmark_verify_t (Tim Ruffing)
Pull request description:
As identified in #829 and #833. Fixes #829.
Since we touch this anyway, this commit additionally makes the
identifiers in the benchmark files a little bit more consistent.
This is necessary before we can merge #833. I preferred a separate PR because it makes it easier to see the results of Travis in #833.
ACKs for top commit:
sipa:
utACK
1f4dd0383807bfb7fef884601357b4c629dfb566
jonasnick:
ACK
1f4dd0383807bfb7fef884601357b4c629dfb566
Tree-SHA512: c0ec92798f3c94f3ef6ac69b3f0f39a39257a32be9d9a068832cece1ebe64c89848b70e44652fc397004b8b240883ac4bc0c8f95abbe4ba4b028de120e6734bf
Jonas Nick [Wed, 4 Nov 2020 14:52:56 +0000 (14:52 +0000)]
Merge #839: Prevent arithmetic on NULL pointer if the scratch space is too small
29a299e373d5f0e326be74c514c7c70ddf50cce1 Run the undefined behaviour sanitizer on Travis (Fabien)
7506e064d791e529d2e57bb52c156deb33b897ef Prevent arithmetic on NULL pointer if the scratch space is too small (Fabien)
Pull request description:
ACKs for top commit:
sipa:
ACK
29a299e373d5f0e326be74c514c7c70ddf50cce1 . Reviewed the code changes and verified that building with these sanitizer flags catches the existing error, as well as a signed integer overflow if introduced.
real-or-random:
ACK
29a299e373d5f0e326be74c514c7c70ddf50cce1 code inspection
jonasnick:
utACK
29a299e373d5f0e326be74c514c7c70ddf50cce1
Tree-SHA512: 4d788f12f3d7b48018e884910adb9b530a05d88f504de83dadeab8a22d75da83c05a1518f7317de5f536c4dd243ea7b347b1eaddb2ca1d804c663e41b85db69d
Jonas Nick [Fri, 30 Oct 2020 17:48:40 +0000 (17:48 +0000)]
Merge #840: Return NULL early in context_preallocated_create if flags invalid
ebfa2058e9cc2999dada47d2f1e1e5c0f4bcf619 Return NULL early in context_preallocated_create if flags invalid (Tim Ruffing)
Pull request description:
ACKs for top commit:
sipa:
ACK
ebfa2058e9cc2999dada47d2f1e1e5c0f4bcf619
jonasnick:
ACK
ebfa2058e9cc2999dada47d2f1e1e5c0f4bcf619
Tree-SHA512: 61310539046e015e5c9e6b5702ac7b542fda854a23915ef5dd549361c8ec6e70aa6d509e02b30fd859b24dfaf2250721bb55270767323d6e94854067b7d7e9a6
Tim Ruffing [Tue, 27 Oct 2020 14:58:04 +0000 (15:58 +0100)]
Typedef (u)int128_t only when they're not provided by the compiler
Tim Ruffing [Tue, 27 Oct 2020 19:12:41 +0000 (20:12 +0100)]
Merge #838: Make autotools check for all the used openssl functions
3734b68200ee37f5eea80f47d611e9b5a65548fe Configure echo if openssl tests are enabled (Elichai Turkel)
e6692778d3f6507eb1325785cdd424073a945ff7 Modify bitcoin_secp.m4's openssl check to call all the functions that we use in the tests/benchmarks. That way linking will fail if those symbols are missing (Elichai Turkel)
Pull request description:
I added all the openssl functions that we call in `tests.c` and in `bench_verify.c` to the m4 check, that way if any of them are missing it won't enable openssl.
I also modified it a little to prevent a segmentation fault when running that program (not that it really matters for autotools)
This should fix #836
ACKs for top commit:
sipa:
ACK
3734b68200ee37f5eea80f47d611e9b5a65548fe
real-or-random:
ACK
3734b68200ee37f5eea80f47d611e9b5a65548fe
Tree-SHA512: c82aa96a4176061284dfa5fdb87ca874a25aa2e11f75c4ec6d1edebcc8a19e2bc940990f8a5cfa64776fd295b6fd3a140fa2afede29326564504bc8d1a3a6b69
Elichai Turkel [Tue, 27 Oct 2020 11:09:15 +0000 (13:09 +0200)]
Configure echo if openssl tests are enabled
Tim Ruffing [Mon, 26 Oct 2020 13:38:30 +0000 (14:38 +0100)]
Return NULL early in context_preallocated_create if flags invalid
If the user passes invalid flags to _context_create, and the default
illegal callback does not abort the program (which is possible), then we
work with the result of malloc(0), which may be undefined behavior. This
violates the promise that a library function won't crash after the
illegal callback has been called.
This commit fixes this issue by returning NULL early in _context_create
in that case.
Jonas Nick [Tue, 27 Oct 2020 13:24:17 +0000 (13:24 +0000)]
Merge #841: Avoids a potentially shortening size_t to int cast in strauss_wnaf_
8893f42438ac75838a9dc7df7e98b29e9a1a085f Avoids a potentially shortening size_t to int cast in strauss_wnaf_ (Tim Ruffing)
Pull request description:
ACKs for top commit:
sipa:
ACK
8893f42438ac75838a9dc7df7e98b29e9a1a085f . `np` and `no` shouldn't ever take on negative values.
jonasnick:
ACK
8893f42438ac75838a9dc7df7e98b29e9a1a085f
elichai:
ACK
8893f42438ac75838a9dc7df7e98b29e9a1a085f
Tree-SHA512: 431a6b88c8db8c8883b35c9bc03c90e37ecd0b06c7ee01c5d83cca4a7f6fc1f3cfbbaa871a4a23374ce4cc5bcfb9502c7f2e2540f9f9db9535e47e48827b6af6
Fabien [Tue, 27 Oct 2020 07:43:10 +0000 (08:43 +0100)]
Run the undefined behaviour sanitizer on Travis
Run UBSAN with both GCC and Clang, on Linux and macOS.
The `halt_on_error=1` option is required to make the build fail if the
sanitizer finds an issue.
Fabien [Mon, 26 Oct 2020 11:29:00 +0000 (12:29 +0100)]
Prevent arithmetic on NULL pointer if the scratch space is too small
If the scratch space is too small when calling
`secp256k1_ecmult_strauss_batch()`, the `state.pre_a` allocation will
fail and the pointer will be `NULL`. This causes `state.pre_a_lam` to be
computed from the `NULL` pointer.
It is also possible that the first allocation to fail is for `state.ps`,
which will cause the failure to occur when in
`secp256k1_ecmult_strauss_wnaf()`.
The issue has been detected by UBSAN using Clang 10:
```
CC=clang \
CFLAGS="-fsanitize=undefined -fno-omit-frame-pointer" \
LDFLAGS="-fsanitize=undefined -fno-omit-frame-pointer" \
../configure
UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1 make check
```
Tim Ruffing [Wed, 21 Oct 2020 07:30:30 +0000 (09:30 +0200)]
Avoids a potentially shortening size_t to int cast in strauss_wnaf_
Fixes #834.
Elichai Turkel [Wed, 21 Oct 2020 11:39:52 +0000 (14:39 +0300)]
Modify bitcoin_secp.m4's openssl check to call all the functions that we
use in the tests/benchmarks.
That way linking will fail if those symbols are missing
Tim Ruffing [Wed, 21 Oct 2020 07:58:45 +0000 (09:58 +0200)]
Merge #809: Stop treating ECDH as experimental
e6e3d5da2f92f327019a62dc5f62f9335b2d0975 travis: add schnorrsig to valgrind and big endian platform test (Jonas Nick)
353dff156f1ed43a93c14a3686dc0649713d2997 Stop treating ECDH as experimental (Jonas Nick)
Pull request description:
Fixes #665
ACKs for top commit:
real-or-random:
ACK
e6e3d5da2f92f327019a62dc5f62f9335b2d0975
elichai:
ACK
e6e3d5d
Tree-SHA512: 07379429ee159aad011c7cefcea35423602e9d119d994e11c78a89fcc74c2c65835b3d55f6f781fe28b4e3622db9ee470e48a223037a20baf94c0263b1c60105
Jonas Nick [Sat, 12 Sep 2020 12:20:22 +0000 (12:20 +0000)]
travis: add schnorrsig to valgrind and big endian platform test
Jonas Nick [Mon, 7 Sep 2020 17:35:09 +0000 (17:35 +0000)]
Stop treating ECDH as experimental
Tim Ruffing [Tue, 20 Oct 2020 12:53:50 +0000 (14:53 +0200)]
Don't use reserved identifiers memczero and benchmark_verify_t
As identified in #829 and #833. Fixes #829.
Since we touch this anyway, this commit additionally makes the
identifiers in the benchmark files a little bit more consistent.
Pieter Wuille [Wed, 14 Oct 2020 18:06:06 +0000 (11:06 -0700)]
Merge #830: Rip out non-endomorphism code + dependencies
c582abade1c50ef50dc7ee9f7b7af8e06e22065d Consistency improvements to the comments (Pieter Wuille)
63c6b71616816b19bec9cb3ab6b45ae5afd955f0 Reorder comments/function around scalar_split_lambda (Pieter Wuille)
2edc514c90293af8f602e4376e832773779c9426 WNAF of lambda_split output has max size 129 (Pieter Wuille)
4232e5b7da0a68adc14fa4b481f7e106403c200d Rip out non-endomorphism code (Pieter Wuille)
ebad8414b0e68041568d0b5ebe0bd395dbfbed9e Check correctness of lambda split without -DVERIFY (Gregory Maxwell)
fe7fc1fda8675aa9d79dae54a1b8b3cd06abcf81 Make lambda constant accessible (Pieter Wuille)
9d2f2b44d895509e8c4e7831fa917f13fa69f054 Add tests to exercise lambda split near bounds (Pieter Wuille)
9aca2f7f07b0563f8c65fcc22a0a91325cf6273b Add secp256k1_split_lambda_verify (Russell O'Connor)
acab934d24ff26289ab9930587c3fc51c30c6a2f Detailed comments for secp256k1_scalar_split_lambda (Russell O'Connor)
76ed922a5f09d63e0622825ca83d9301c1ef3efe Increase precision of g1 and g2 (Russell O'Connor)
6173839c90553385171d560be8a17cbe167e3bef Switch to our own memcmp function (Tim Ruffing)
Pull request description:
This is a rebased/combined version of the following pull requests/commits with minor changes:
* #825 Switch to our own memcmp function
* Modification: `secp256k1_memcmp_var` is marked static inline
* Modification: also replace `memcmp` with `secp256k1_memcmp_var` in exhaustive tests
* Modification: add reference to GCC bug 95189
* #822 Increase precision of g1 and g2
* Modification: use the new `secp256k1_memcmp_var` function instead of `memcmp` (see https://github.com/bitcoin-core/secp256k1/pull/822#issuecomment-
706610361 )
* Modification: drop the " Allow secp256k1_split_lambda_verify to pass even in the presence of GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189." commit, as it's dealt with using `secp256k1_memcmp_var`.
* Modification: rename secp256k1_gej_mul_lambda -> secp256k1_ge_mul_lambda
* A new commit that moves the `lambda` constant out of `secp256k1_scalar_split_lambda` and (`_verify`).
* The test commit suggested here: https://github.com/bitcoin-core/secp256k1/pull/822#issuecomment-
706610276
* Modification: use the new accessible `secp256k1_const_lambda` instead of duplicating it.
* #826 Rip out non-endomorphism code
* A new commit that reduces the size of the WNAF output to 129, as we now have proof that the split output is always 128 bits or less.
* A new commit to more consistently use input:`k`, integer outputs:`k1`,`k2`, modulo n outputs:`r1`,`r2`
ACKs for top commit:
real-or-random:
ACK
c582abade1c50ef50dc7ee9f7b7af8e06e22065d code inspection, some tests, verified the new g1/g2 constants
jonasnick:
ACK
c582abade1c50ef50dc7ee9f7b7af8e06e22065d didn't verify the proof
Tree-SHA512: 323a3ee3884b7ac4fa85c8e7b785111b5c0638d718bc1c805a38963c87411e81a746c98e9a42a3e2197ab34a874544de5cc51326955d1c4d0ea45afd418e819f
Pieter Wuille [Tue, 13 Oct 2020 19:19:52 +0000 (12:19 -0700)]
Consistency improvements to the comments
Pieter Wuille [Tue, 13 Oct 2020 18:29:36 +0000 (11:29 -0700)]
Reorder comments/function around scalar_split_lambda
Pieter Wuille [Sun, 11 Oct 2020 17:59:29 +0000 (10:59 -0700)]
WNAF of lambda_split output has max size 129
Pieter Wuille [Sat, 26 Sep 2020 03:06:36 +0000 (20:06 -0700)]
Rip out non-endomorphism code
Gregory Maxwell [Sat, 10 Oct 2020 20:46:36 +0000 (20:46 +0000)]
Check correctness of lambda split without -DVERIFY
The VERIFY macro turns on various paranoid consistency checks, but
the complete functionality should still be tested without it.
This also adds a couple of static test points for extremely small
split inputs/outputs. The existing bounds vectors already check
extremely large outputs.
Pieter Wuille [Sun, 11 Oct 2020 17:49:54 +0000 (10:49 -0700)]
Make lambda constant accessible
Pieter Wuille [Sat, 26 Sep 2020 20:14:25 +0000 (13:14 -0700)]
Add tests to exercise lambda split near bounds
Russell O'Connor [Wed, 23 Sep 2020 16:52:29 +0000 (12:52 -0400)]
Add secp256k1_split_lambda_verify
Russell O'Connor [Tue, 22 Sep 2020 15:01:47 +0000 (11:01 -0400)]
Detailed comments for secp256k1_scalar_split_lambda
Russell O'Connor [Mon, 21 Sep 2020 15:40:01 +0000 (11:40 -0400)]
Increase precision of g1 and g2
This allows us to shift by 256+128 = 384 bits, which is a multiple of the limb size of
the scalar representation. This also happens to be the most precision possible for g2
that still fits into a 256-bit value.
Tim Ruffing [Thu, 24 Sep 2020 10:12:48 +0000 (12:12 +0200)]
Switch to our own memcmp function
Fixes #823.
Tim Ruffing [Sun, 27 Sep 2020 09:11:59 +0000 (11:11 +0200)]
Merge #827: Rename testrand functions to have test in name
a45c1fa63cb3020225d72049ef9c1cf300014795 Rename testrand functions to have test in name (Pieter Wuille)
Pull request description:
Suggested here: https://github.com/bitcoin-core/secp256k1/pull/808#discussion_r488871913
ACKs for top commit:
real-or-random:
ACK
a45c1fa63cb3020225d72049ef9c1cf300014795 diff looks good
elichai:
utACK
a45c1fa63cb3020225d72049ef9c1cf300014795
Tree-SHA512: a15c29b88877e0f1a099acab90cbfa1e70420527e07348a69c8a5b539319a3131b771b86852e772a669a1eb3475d508d0f7e10f37eec363dc6640d4eaf967536
Tim Ruffing [Sat, 26 Sep 2020 09:12:11 +0000 (11:12 +0200)]
Merge #821: travis: Explicitly set --with-valgrind
4eecb4d6ef6d4f18be8870a5929feb1dae376d15 travis: VALGRIND->RUN_VALGRIND to avoid confusion with WITH_VALGRIND (Jonas Nick)
66a765c7752b76d99be02d0f84dc05105bf4e70d travis: Explicitly set --with-valgrind (Jonas Nick)
Pull request description:
Also remove CPPFLAGS=-DVALGRIND because that's redundant with when
configured with --enable-valgrind.
ACKs for top commit:
real-or-random:
ACK
4eecb4d6ef6d4f18be8870a5929feb1dae376d15 diff and travis output look good
sipa:
utACK
4eecb4d6ef6d4f18be8870a5929feb1dae376d15
elichai:
ACK
4eecb4d6ef6d4f18be8870a5929feb1dae376d15
Tree-SHA512: c22d79fccaa926a074272b63a61f052f4bec3b1e5a871e3f08a4f6c19046da575779126a7008eb8a7513e70997b32d1dc6565dfb7aa41c57c0b6ef15ebbc8303
Tim Ruffing [Sat, 26 Sep 2020 08:18:17 +0000 (10:18 +0200)]
Merge #818: Add static assertion that uint32_t is unsigned int or wider
c0041b5cfca5efb160aa9a5616350069c89a8c29 Add static assertion that uint32_t is unsigned int or wider (Tim Ruffing)
Pull request description:
Solves one item in #792 .
ACKs for top commit:
sipa:
utACK
c0041b5cfca5efb160aa9a5616350069c89a8c29
elichai:
ACK
c0041b5cfca5efb160aa9a5616350069c89a8c29
Tree-SHA512: 9f700e89be39e15983260da94642593d16b9c437171e10377837ac73731ca7ba5dd7e328b3d93d0a24d143fb9e73abd11c578f6b58e2f94c82b783e977173b0c
Pieter Wuille [Sat, 26 Sep 2020 03:50:43 +0000 (20:50 -0700)]
Rename testrand functions to have test in name
Pieter Wuille [Sat, 26 Sep 2020 03:41:54 +0000 (20:41 -0700)]
Merge #808: Exhaustive test improvements + exhaustive schnorrsig tests
8b7dcdd955a4f57174f478e36bdae5b84784fb9c Add exhaustive test for extrakeys and schnorrsig (Pieter Wuille)
08d7d89299a6492bf9388b4662b709d268c8ea29 Make pubkey parsing test whether points are in the correct subgroup (Pieter Wuille)
87af00b511f2938b6b4799f94d446a005730515e Abstract out challenge computation in schnorrsig (Pieter Wuille)
63e1b2aa7d396209aa5e26aa540d9593ede312a6 Disable output buffering in tests_exhaustive.c (Pieter Wuille)
39f67dd072fc44c7c0d27b95610ba8912de56db5 Support splitting exhaustive tests across cores (Pieter Wuille)
e99b26fcd54cb4096515ba80cf0f79d147b2683c Give exhaustive_tests count and seed cmdline inputs (Pieter Wuille)
49e6630bca5f6628bd1fd92d70d465273d4d873f refactor: move RNG seeding to testrand (Pieter Wuille)
b110c106fa9704e30f6b0c2ffa6a2697031e89a8 Change exhaustive test groups so they have a point with X=1 (Pieter Wuille)
cec7b18a34e68adb04f31a71a2eb4c5fc97674ce Select exhaustive lambda in function of order (Pieter Wuille)
78f6cdfaae9866694dcb0eee966332688753a8c3 Make the curve B constant a secp256k1_fe (Pieter Wuille)
d7f39ae4b67ea1ac6f085e6262a5f53afc0c5a25 Delete gej_is_valid_var: unused outside tests (Pieter Wuille)
8bcd78cd791fd9209d72d6bce455c8d3cf2c0249 Make secp256k1_scalar_b32 detect overflow in scalar_low (Pieter Wuille)
c498366e5b2d9c60e2e677949cf7373dbe877515 Move exhaustive tests for recovery to module (Pieter Wuille)
be317915436909573733afe3972a9abdee9357f7 Make group order purely compile-time in exhaustive tests (Pieter Wuille)
Pull request description:
A few miscellaneous improvements:
* Just use EXHAUSTIVE_TEST_ORDER as order everywhere, rather than a variable
* Move exhaustive tests for recovery module to the recovery module directory
* Make `secp256k1_scalar_set_b32` detect overflow correctly for scalar_low (a comment in the recovery exhaustive test indicated why this was the case, but this looks incorrect).
* Change the small test groups so that they include a point with X coordinate 1.
* Initialize the RNG seed, allowing configurating from the cmdline, and report it.
* Permit changing the number of iterations (re-randomizing for each).
* Support splitting the work across cores from the cmdline.
And a big one:
* Add exhaustive tests for schnorrsig module (and limited ones for extrakeys).
ACKs for top commit:
real-or-random:
ACK
8b7dcdd955a4f57174f478e36bdae5b84784fb9c
jonasnick:
ACK
8b7dcdd955a4f57174f478e36bdae5b84784fb9c
Tree-SHA512: 18d7f362402085238faaced164c0ca34079717a477001fc0b13448b3529ea2ad705793a13b7a36f34bf12e9231fee11070f88cc51bfc2a83ca82aa13f7aaae71
Jonas Nick [Mon, 21 Sep 2020 07:52:11 +0000 (07:52 +0000)]
travis: VALGRIND->RUN_VALGRIND to avoid confusion with WITH_VALGRIND
Also remove CPPFLAGS=-DVALGRIND because that's redundant when
configured with --with-valgrind.
Jonas Nick [Mon, 21 Sep 2020 07:47:40 +0000 (07:47 +0000)]
travis: Explicitly set --with-valgrind
Also set --with-valgrind=no once
Jonas Nick [Sat, 19 Sep 2020 08:47:33 +0000 (08:47 +0000)]
Merge #813: Enable configuring Valgrind support
412bf874d09517b559eba4f7addb4c181cc2780b configure: Allow specifying --with[out]-valgrind explicitly (Luke Dashjr)
Pull request description:
ACKs for top commit:
sipa:
ACK
412bf874d09517b559eba4f7addb4c181cc2780b . Tested by running configure on a system with and without valgrind, and with no argument, with `--with-valgrind`, and with `--without-valgrind`.
real-or-random:
ACK
412bf874d09517b559eba4f7addb4c181cc2780b
jonasnick:
ACK
412bf874d09517b559eba4f7addb4c181cc2780b
Tree-SHA512: 92417609751e5af813faff1661055cd37f3d00dbcf109a8f14f8ba59d9f3d620c9c6b67d2b1629b6ab75e2afcd47d2b3898a0427931567fb505bc92fa5ee3532
Jonas Nick [Sat, 19 Sep 2020 08:24:42 +0000 (08:24 +0000)]
Merge #819: Enable -Wundef warning
e73ff309221dcf677e861a49010b93dc6bb0ac48 Enable -Wundef warning (Tim Ruffing)
Pull request description:
ACKs for top commit:
practicalswift:
ACK
e73ff309221dcf677e861a49010b93dc6bb0ac48 -- patch looks correct
sipa:
ACK
e73ff309221dcf677e861a49010b93dc6bb0ac48
jonasnick:
ACK
e73ff309221dcf677e861a49010b93dc6bb0ac48
Tree-SHA512: 1f0d477e41f33276eceb5324162731ba8aacd8d6571d7020344206b31c7f48c31f6bccbed2ce3ffe2e8c13abf98db24d177521b6b36a3087b81b55a253559fe6
Pieter Wuille [Sat, 5 Sep 2020 01:58:25 +0000 (18:58 -0700)]
Add exhaustive test for extrakeys and schnorrsig
Pieter Wuille [Tue, 8 Sep 2020 01:23:52 +0000 (18:23 -0700)]
Make pubkey parsing test whether points are in the correct subgroup
Pieter Wuille [Sat, 5 Sep 2020 00:08:23 +0000 (17:08 -0700)]
Abstract out challenge computation in schnorrsig
Pieter Wuille [Thu, 10 Sep 2020 16:09:15 +0000 (09:09 -0700)]
Disable output buffering in tests_exhaustive.c
Pieter Wuille [Tue, 8 Sep 2020 23:27:04 +0000 (16:27 -0700)]
Support splitting exhaustive tests across cores
Pieter Wuille [Tue, 8 Sep 2020 20:59:02 +0000 (13:59 -0700)]
Give exhaustive_tests count and seed cmdline inputs
Pieter Wuille [Tue, 8 Sep 2020 20:40:26 +0000 (13:40 -0700)]
refactor: move RNG seeding to testrand
Pieter Wuille [Sun, 6 Sep 2020 23:46:41 +0000 (16:46 -0700)]
Change exhaustive test groups so they have a point with X=1
This enables testing overflow is correctly encoded in the recid, and
likely triggers more edge cases.
Also introduce a Sage script to generate the parameters.
Pieter Wuille [Tue, 8 Sep 2020 17:20:31 +0000 (10:20 -0700)]
Select exhaustive lambda in function of order
Pieter Wuille [Sun, 6 Sep 2020 23:24:43 +0000 (16:24 -0700)]
Make the curve B constant a secp256k1_fe
Pieter Wuille [Mon, 7 Sep 2020 00:25:02 +0000 (17:25 -0700)]
Delete gej_is_valid_var: unused outside tests
Pieter Wuille [Sun, 6 Sep 2020 03:51:30 +0000 (20:51 -0700)]
Make secp256k1_scalar_b32 detect overflow in scalar_low
Pieter Wuille [Sat, 5 Sep 2020 01:15:40 +0000 (18:15 -0700)]
Move exhaustive tests for recovery to module
Pieter Wuille [Fri, 4 Sep 2020 20:27:28 +0000 (13:27 -0700)]
Make group order purely compile-time in exhaustive tests
Tim Ruffing [Fri, 18 Sep 2020 11:36:07 +0000 (13:36 +0200)]
Enable -Wundef warning
Tim Ruffing [Thu, 17 Sep 2020 11:29:55 +0000 (13:29 +0200)]
Add static assertion that uint32_t is unsigned int or wider
Jonas Nick [Tue, 15 Sep 2020 17:48:06 +0000 (17:48 +0000)]
Merge #782: Check if variable=yes instead of if var is set in travis.sh
34debf7a6d36bbd9a52e68e079ddfc446faf5bef Modify .travis.yml to explictly pass no in env vars instead of setting to nothing (Elichai Turkel)
ef37761feed0172baa03dd94c842f1547bdf3016 Change travis.sh to check if variables are equal to yes instead of not-empty. Before this, setting `VALGRIND=wat` was considered as true, and to make it evaluate as false you had to unset the variable `VALGRIND=` but not it checks if `VALGRIND=yes` and if it's not `yes` then it's evaluated to false (Elichai Turkel)
Pull request description:
ACKs for top commit:
real-or-random:
ACK
34debf7a6d36bbd9a52e68e079ddfc446faf5bef
jonasnick:
ACK
34debf7a6d36bbd9a52e68e079ddfc446faf5bef
Tree-SHA512: 91becfbc9cb7587ee55b2bceb604ea0aed8860990d63a5f414b11db92180c090ea8bcc048c2fb67a094e892138e3be46f00562bf78b7c3369232457289cde447
Luke Dashjr [Sat, 12 Sep 2020 19:15:56 +0000 (19:15 +0000)]
configure: Allow specifying --with[out]-valgrind explicitly
Elichai Turkel [Mon, 14 Sep 2020 15:02:25 +0000 (18:02 +0300)]
Modify .travis.yml to explictly pass no in env vars instead of setting to nothing
Tim Ruffing [Sun, 13 Sep 2020 20:45:23 +0000 (22:45 +0200)]
Merge #814: tests: Initialize random group elements fully
5738e8622d8ba02caa984425c23c072a3f14352c tests: Initialize random group elements fully (Tim Ruffing)
Pull request description:
Also fix add a missing comment.
ACKs for top commit:
sipa:
utACK
5738e8622d8ba02caa984425c23c072a3f14352c
Tree-SHA512: c7723e225434e7044379f307b2977a3a5251080793bd87b377a2bbf1d18b39ca05f6fb3b427acec32c3b34f4de678fe7087a2dcca4b5f03ec1fc680a88d82b9a
Tim Ruffing [Sun, 13 Sep 2020 09:27:15 +0000 (11:27 +0200)]
tests: Initialize random group elements fully
Also fix add a missing comment.
Jonas Nick [Sat, 12 Sep 2020 11:38:24 +0000 (11:38 +0000)]
Merge #812: travis: run bench_schnorrsig
a51f2af62bde6e169499308e01ef768c09dd8127 travis: run bench_schnorrsig (Jonas Nick)
Pull request description:
ACKs for top commit:
sipa:
ACK
a51f2af62bde6e169499308e01ef768c09dd8127
elichai:
ACK
a51f2af62bde6e169499308e01ef768c09dd8127
Tree-SHA512: dfe68090fc60cba3cf2ff2f459f8ee47c4de65d28aee64310a7f7d54667daea5e82b907742445fa76b95cc2e67d57605dd260080919d8b805704784618745e29
This page took 0.079807 seconds and 4 git commands to generate.