]> Git Repo - secp256k1.git/log
secp256k1.git
4 years agoReorder comments/function around scalar_split_lambda
Pieter Wuille [Tue, 13 Oct 2020 18:29:36 +0000 (11:29 -0700)]
Reorder comments/function around scalar_split_lambda

4 years agoWNAF of lambda_split output has max size 129
Pieter Wuille [Sun, 11 Oct 2020 17:59:29 +0000 (10:59 -0700)]
WNAF of lambda_split output has max size 129

4 years agoRip out non-endomorphism code
Pieter Wuille [Sat, 26 Sep 2020 03:06:36 +0000 (20:06 -0700)]
Rip out non-endomorphism code

4 years agoCheck correctness of lambda split without -DVERIFY
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.

4 years agoMake lambda constant accessible
Pieter Wuille [Sun, 11 Oct 2020 17:49:54 +0000 (10:49 -0700)]
Make lambda constant accessible

4 years agoAdd tests to exercise lambda split near bounds
Pieter Wuille [Sat, 26 Sep 2020 20:14:25 +0000 (13:14 -0700)]
Add tests to exercise lambda split near bounds

4 years agoAdd secp256k1_split_lambda_verify
Russell O'Connor [Wed, 23 Sep 2020 16:52:29 +0000 (12:52 -0400)]
Add secp256k1_split_lambda_verify

4 years agoDetailed comments for secp256k1_scalar_split_lambda
Russell O'Connor [Tue, 22 Sep 2020 15:01:47 +0000 (11:01 -0400)]
Detailed comments for secp256k1_scalar_split_lambda

4 years agoIncrease precision of g1 and g2
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.

4 years agoSwitch to our own memcmp function
Tim Ruffing [Thu, 24 Sep 2020 10:12:48 +0000 (12:12 +0200)]
Switch to our own memcmp function

Fixes #823.

4 years agoMerge #827: Rename testrand functions to have test in name
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

4 years agoMerge #821: travis: Explicitly set --with-valgrind
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

4 years agoMerge #818: Add static assertion that uint32_t is unsigned int or wider
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

4 years agoRename testrand functions to have test in name
Pieter Wuille [Sat, 26 Sep 2020 03:50:43 +0000 (20:50 -0700)]
Rename testrand functions to have test in name

4 years agoMerge #808: Exhaustive test improvements + exhaustive schnorrsig tests
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

4 years agotravis: VALGRIND->RUN_VALGRIND to avoid confusion with WITH_VALGRIND
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.

4 years agotravis: Explicitly set --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

4 years agoMerge #813: Enable configuring Valgrind support
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

4 years agoMerge #819: Enable -Wundef warning
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

4 years agoAdd exhaustive test for extrakeys and schnorrsig
Pieter Wuille [Sat, 5 Sep 2020 01:58:25 +0000 (18:58 -0700)]
Add exhaustive test for extrakeys and schnorrsig

4 years agoMake pubkey parsing test whether points are in the correct subgroup
Pieter Wuille [Tue, 8 Sep 2020 01:23:52 +0000 (18:23 -0700)]
Make pubkey parsing test whether points are in the correct subgroup

4 years agoAbstract out challenge computation in schnorrsig
Pieter Wuille [Sat, 5 Sep 2020 00:08:23 +0000 (17:08 -0700)]
Abstract out challenge computation in schnorrsig

4 years agoDisable output buffering in tests_exhaustive.c
Pieter Wuille [Thu, 10 Sep 2020 16:09:15 +0000 (09:09 -0700)]
Disable output buffering in tests_exhaustive.c

4 years agoSupport splitting exhaustive tests across cores
Pieter Wuille [Tue, 8 Sep 2020 23:27:04 +0000 (16:27 -0700)]
Support splitting exhaustive tests across cores

4 years agoGive exhaustive_tests count and seed cmdline inputs
Pieter Wuille [Tue, 8 Sep 2020 20:59:02 +0000 (13:59 -0700)]
Give exhaustive_tests count and seed cmdline inputs

4 years agorefactor: move RNG seeding to testrand
Pieter Wuille [Tue, 8 Sep 2020 20:40:26 +0000 (13:40 -0700)]
refactor: move RNG seeding to testrand

4 years agoChange exhaustive test groups so they have a point with X=1
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.

4 years agoSelect exhaustive lambda in function of order
Pieter Wuille [Tue, 8 Sep 2020 17:20:31 +0000 (10:20 -0700)]
Select exhaustive lambda in function of order

4 years agoMake the curve B constant a secp256k1_fe
Pieter Wuille [Sun, 6 Sep 2020 23:24:43 +0000 (16:24 -0700)]
Make the curve B constant a secp256k1_fe

4 years agoDelete gej_is_valid_var: unused outside tests
Pieter Wuille [Mon, 7 Sep 2020 00:25:02 +0000 (17:25 -0700)]
Delete gej_is_valid_var: unused outside tests

4 years agoMake secp256k1_scalar_b32 detect overflow in scalar_low
Pieter Wuille [Sun, 6 Sep 2020 03:51:30 +0000 (20:51 -0700)]
Make secp256k1_scalar_b32 detect overflow in scalar_low

4 years agoMove exhaustive tests for recovery to module
Pieter Wuille [Sat, 5 Sep 2020 01:15:40 +0000 (18:15 -0700)]
Move exhaustive tests for recovery to module

4 years agoMake group order purely compile-time in exhaustive tests
Pieter Wuille [Fri, 4 Sep 2020 20:27:28 +0000 (13:27 -0700)]
Make group order purely compile-time in exhaustive tests

4 years agoEnable -Wundef warning
Tim Ruffing [Fri, 18 Sep 2020 11:36:07 +0000 (13:36 +0200)]
Enable -Wundef warning

4 years agoAdd static assertion that uint32_t is unsigned int or wider
Tim Ruffing [Thu, 17 Sep 2020 11:29:55 +0000 (13:29 +0200)]
Add static assertion that uint32_t is unsigned int or wider

4 years agoMerge #782: Check if variable=yes instead of if var is set in travis.sh
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

4 years agoconfigure: Allow specifying --with[out]-valgrind explicitly
Luke Dashjr [Sat, 12 Sep 2020 19:15:56 +0000 (19:15 +0000)]
configure: Allow specifying --with[out]-valgrind explicitly

4 years agoModify .travis.yml to explictly pass no in env vars instead of setting to nothing
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

4 years agoMerge #814: tests: Initialize random group elements fully
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

4 years agotests: Initialize random group elements fully
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.

4 years agoMerge #812: travis: run bench_schnorrsig
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

4 years agotravis: run bench_schnorrsig
Jonas Nick [Fri, 11 Sep 2020 22:04:04 +0000 (22:04 +0000)]
travis: run bench_schnorrsig

4 years agoMerge #558: Add schnorrsig module which implements BIP-340 compliant signatures
Tim Ruffing [Fri, 11 Sep 2020 19:22:51 +0000 (21:22 +0200)]
Merge #558: Add schnorrsig module which implements BIP-340 compliant signatures

f431b3f28ac95a3645ad5a6dc96b878fa30a1de3 valgrind_ctime_test: Add schnorrsig_sign (Jonas Nick)
16ffa9d97cef93f49544b016339c107882f9a1c3 schnorrsig: Add taproot test case (Jonas Nick)
8dfd53ee3fa059562483d1867815f78b9e00d947 schnorrsig: Add benchmark for sign and verify (Jonas Nick)
4e43520026f5bcd182d21f0759bac159ef47bb62 schnorrsig: Add BIP-340 compatible signing and verification (Jonas Nick)
7332d2db6b62fda851f9ed8adbfda187a875b84e schnorrsig: Add BIP-340 nonce function (Jonas Nick)
7a703fd97db0161bae07ef84513ddde6e0d27353 schnorrsig: Init empty experimental module (Jonas Nick)
eabd9bc46a31c0da6db6d88840eadbe9006447b1 Allow initializing tagged sha256 (Jonas Nick)
6fcb5b845d2832ce019d60507033f74426290768 extrakeys: Add keypair_xonly_tweak_add (Jonas Nick)
58254463f9a2e96d893157a341c9953c440fdf60 extrakeys: Add keypair struct with create, pub and pub_xonly (Jonas Nick)
f0010349b876bc6b3f0a6ec6c8bad0b12ca17b51 Separate helper functions for pubkey_create and seckey_tweak_add (Jonas Nick)
910d9c284c33b77774a9316d4524f313357d441c extrakeys: Add xonly_pubkey_tweak_add & xonly_pubkey_tweak_add_test (Jonas Nick)
176bfb1110147b5dca1834ea071acc846fb1cab3 Separate helper function for ec_pubkey_tweak_add (Jonas Nick)
4cd2ee474d178bd1b5602486104db346a7562c67 extrakeys: Add xonly_pubkey with serialize, parse and from_pubkey (Jonas Nick)
47e6618e11813cfabe91f0909ca031f960cb7dd4 extrakeys: Init empty experimental module (Jonas Nick)
3e08b02e2a78f2a1fc457efab665db8ab8085373 Make the secp256k1_declassify argument constant (Jonas Nick)

Pull request description:

  This PR implements signing, verification and batch verification as described in [BIP-340](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) in an experimental module named `schnorrsig`. It includes the test vectors and a benchmarking tool.
  This PR also adds a module `extrakeys` that allows [BIP-341](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki)-style key tweaking.

  (Adding ChaCha20 as a CSPRNG and batch verification was moved to PR #760).

  In order to enable the module run `./configure` with `--enable-experimental --enable-module-schnorrsig`.

  Based on apoelstra's work.

ACKs for top commit:
  gmaxwell:
    ACK f431b3f28ac95a3645ad5a6dc96b878fa30a1de3  (exactly matches the previous post-fixup version which I have already reviewed and tested)
  sipa:
    ACK f431b3f28ac95a3645ad5a6dc96b878fa30a1de3
  real-or-random:
    ACK f431b3f28ac95a3645ad5a6dc96b878fa30a1de3 careful code review

Tree-SHA512: e15e849c7bb65cdc5d7b1d6874678e275a71e4514de9d5432ec1700de3ba92aa9f381915813f4729057af152d90eea26aabb976ed297019c5767e59cf0bbc693

4 years agoMerge #797: Fix Jacobi benchmarks and other benchmark improvements
Jonas Nick [Thu, 10 Sep 2020 11:37:53 +0000 (11:37 +0000)]
Merge #797: Fix Jacobi benchmarks and other benchmark improvements

cb5524adc589d3ae5066a1aa2f818bbfb91d0b1d Add benchmark for secp256k1_ge_set_gej_var (Pieter Wuille)
5c6af60ec5f1f4bc7883737ba34dd1789f1e9bd8 Make jacobi benchmarks vary inputs (Pieter Wuille)
d0fdd5f00969861ebe3e48d39be6d5f706b9b17c Randomize the Z coordinates in bench_internal (Pieter Wuille)
c7a3424c5f45a538ef141402a653b038e050a1ac Rename bench_internal variables (Pieter Wuille)

Pull request description:

ACKs for top commit:
  real-or-random:
    ACK cb5524adc589d3ae5066a1aa2f818bbfb91d0b1d
  jonasnick:
    ACK cb5524adc589d3ae5066a1aa2f818bbfb91d0b1d

Tree-SHA512: 0cbcfffebebf563cf9a1bd951394a0419503ffd43a2d0df4c99e4a839c89c8454925314f7e7eee0c01bce94b6dfeab935f36cc27f9bfc878f702313d455db7e1

4 years agoAdd benchmark for secp256k1_ge_set_gej_var
Pieter Wuille [Tue, 11 Aug 2020 18:30:16 +0000 (11:30 -0700)]
Add benchmark for secp256k1_ge_set_gej_var

4 years agoMake jacobi benchmarks vary inputs
Pieter Wuille [Tue, 11 Aug 2020 18:25:50 +0000 (11:25 -0700)]
Make jacobi benchmarks vary inputs

Also make the num_jacobi benchmark use the scalar order as modulus,
instead of a random number.

4 years agoRandomize the Z coordinates in bench_internal
Pieter Wuille [Tue, 11 Aug 2020 18:02:16 +0000 (11:02 -0700)]
Randomize the Z coordinates in bench_internal

Also increase the number of fe inputs.

4 years agoRename bench_internal variables
Pieter Wuille [Tue, 11 Aug 2020 17:50:01 +0000 (10:50 -0700)]
Rename bench_internal variables

The _x and _y suffices are confusing; they don't actually correspond
to X and Y coordinates. Instead replace them with arrays.

4 years agoMerge #699: Initialize field elements when resulting in infinity
Tim Ruffing [Wed, 9 Sep 2020 14:00:12 +0000 (16:00 +0200)]
Merge #699: Initialize field elements when resulting in infinity

47a7b8382fd6f1458d859b315cf3bcd3b9790b68 Clear field elements when writing infinity (Elichai Turkel)
61d1ecb02847be9d65ffe9df2d2408d85f3a0711 Added test with additions resulting in infinity (Elichai Turkel)

Pull request description:

  Currently if `secp256k1_gej_add_var` / `secp256k1_gej_add_ge_var` /` secp256k1_gej_add_zinv_var` receive `P + (-P)` it will set `gej->infinity = 1` but doesn't call initialize the field elements.
  Notice that this is the only branch in the function that results in an uninitialized output.

  By using `secp256k1_gej_set_infinity()` it will set the field elements to zero while also setting the infinity flag.

  I also added a test that fails with valgrind on current master but passes with the fix.

  EDIT: This isn't a bug or something necessary, I just personally found this helpful.

ACKs for top commit:
  real-or-random:
    ACK 47a7b8382fd6f1458d859b315cf3bcd3b9790b68

Tree-SHA512: cdc2efc242a1b04b4f081183c07d4b2602cdba705e6b30b548df4e115e54fb97691f4b1a28f142f02d5e523c020721337a297b17d732acde147b910f5c53bd0a

4 years agoMerge #799: Add fallback LE/BE for architectures with known endianness + SHA256 selftest
Tim Ruffing [Wed, 9 Sep 2020 13:54:16 +0000 (15:54 +0200)]
Merge #799: Add fallback LE/BE for architectures with known endianness + SHA256 selftest

8bc6aeffa9a191e677cb9e3a22fff130f16990f3 Add SHA256 selftest (Pieter Wuille)
5e5fb28b4a45d7e35e55b5f5feead2be07bccc28 Use additional system macros to figure out endianness (Pieter Wuille)

Pull request description:

  These are all the architecture macros I could find with known endianness. Use those as a fallback when __BYTE_ORDER__ isn't available.

  See https://github.com/bitcoin-core/secp256k1/pull/787#issuecomment-673764652

  It also adds a SHA256 selftest, so that improperly overriding the endianness detection will be detected at runtime.

ACKs for top commit:
  real-or-random:
    ACK 8bc6aeffa9a191e677cb9e3a22fff130f16990f3 I read the diff, and tested that the self-test passes/fails with/without the correct endianness setting
  gmaxwell:
    ACK 8bc6aeffa9a191e677cb9e3a22fff130f16990f3  looks good and I also ran the tests on MIPS-BE and verified that forcing it to LE makes the runtime test  fail.

Tree-SHA512: aca4cebcd0715dcf5b58f5763cb4283af238987f43bd83a650e38e127f348131692b2eed7ae5b2ae96046d9b971fc77c6ab44467689399fe470a605c3458ecc5

4 years agovalgrind_ctime_test: Add schnorrsig_sign
Jonas Nick [Thu, 12 Mar 2020 20:05:07 +0000 (20:05 +0000)]
valgrind_ctime_test: Add schnorrsig_sign

4 years agoschnorrsig: Add taproot test case
Jonas Nick [Thu, 14 Nov 2019 13:34:51 +0000 (13:34 +0000)]
schnorrsig: Add taproot test case

4 years agoschnorrsig: Add benchmark for sign and verify
Jonas Nick [Tue, 12 May 2020 21:24:38 +0000 (21:24 +0000)]
schnorrsig: Add benchmark for sign and verify

4 years agoschnorrsig: Add BIP-340 compatible signing and verification
Jonas Nick [Tue, 12 May 2020 16:17:59 +0000 (16:17 +0000)]
schnorrsig: Add BIP-340 compatible signing and verification

4 years agoschnorrsig: Add BIP-340 nonce function
Jonas Nick [Tue, 12 May 2020 21:23:22 +0000 (21:23 +0000)]
schnorrsig: Add BIP-340 nonce function

4 years agoschnorrsig: Init empty experimental module
Jonas Nick [Tue, 12 May 2020 21:19:03 +0000 (21:19 +0000)]
schnorrsig: Init empty experimental module

4 years agoAllow initializing tagged sha256
Jonas Nick [Thu, 14 Nov 2019 13:53:46 +0000 (13:53 +0000)]
Allow initializing tagged sha256

This will be used by the schnorrsig module

4 years agoextrakeys: Add keypair_xonly_tweak_add
Jonas Nick [Wed, 22 Jul 2020 09:09:34 +0000 (09:09 +0000)]
extrakeys: Add keypair_xonly_tweak_add

4 years agoextrakeys: Add keypair struct with create, pub and pub_xonly
Jonas Nick [Tue, 12 May 2020 14:52:34 +0000 (14:52 +0000)]
extrakeys: Add keypair struct with create, pub and pub_xonly

4 years agoSeparate helper functions for pubkey_create and seckey_tweak_add
Jonas Nick [Tue, 12 May 2020 14:43:48 +0000 (14:43 +0000)]
Separate helper functions for pubkey_create and seckey_tweak_add

This is in preparation for allowing code reuse by keypair functions

4 years agoextrakeys: Add xonly_pubkey_tweak_add & xonly_pubkey_tweak_add_test
Jonas Nick [Tue, 12 May 2020 14:49:12 +0000 (14:49 +0000)]
extrakeys: Add xonly_pubkey_tweak_add & xonly_pubkey_tweak_add_test

4 years agoSeparate helper function for ec_pubkey_tweak_add
Jonas Nick [Tue, 12 May 2020 14:45:22 +0000 (14:45 +0000)]
Separate helper function for ec_pubkey_tweak_add

This is in preparation for allowing code reuse by xonly tweak add functions

4 years agoextrakeys: Add xonly_pubkey with serialize, parse and from_pubkey
Jonas Nick [Tue, 12 May 2020 14:40:28 +0000 (14:40 +0000)]
extrakeys: Add xonly_pubkey with serialize, parse and from_pubkey

4 years agoMerge #806: Trivial: Add test logs to gitignore
Tim Ruffing [Wed, 2 Sep 2020 00:21:17 +0000 (02:21 +0200)]
Merge #806: Trivial: Add test logs to gitignore

bceefd6547635132ba17f022a52db18f17e00df6 Add test logs to gitignore (Jake Rawsthorne)

Pull request description:

  Was just running the tests for https://github.com/bitcoin-core/secp256k1/pull/558 and noticed these logs weren't ignored

ACKs for top commit:
  real-or-random:
    ACK https://github.com/bitcoin-core/secp256k1/pull/806/commits/bceefd6547635132ba17f022a52db18f17e00df6
  sipa:
    ACK bceefd6547635132ba17f022a52db18f17e00df6

Tree-SHA512: 690906bc80abc547e1ef78d8654900c2f4054fd8cb8c2e0a6f6b95a5875930b8e1e3a69a5dca86b198e4a2601788f584c8b2ff6f5a85da230b12954e07aeff37

4 years agoMerge #648: Prevent ints from wrapping around in scratch space functions
Tim Ruffing [Wed, 2 Sep 2020 00:19:16 +0000 (02:19 +0200)]
Merge #648: Prevent ints from wrapping around in scratch space functions

60f7f2de5de917c2bee32a4cd79cc3818b6a94a0 Don't assume that ALIGNMENT > 1 in tests (Tim Ruffing)
ada6361dece4265823478e0019a8c196e9285a26 Use ROUND_TO_ALIGN in scratch_create (Jonas Nick)
8ecc6ce50ead28a0b8bab2f1fb18a58ee5204a13 Add check preventing rounding to alignment from wrapping around in scratch_alloc (Jonas Nick)
4edaf06fb02a9ac9cd115e0c967bb0ef35cae01d Add check preventing integer multiplication wrapping around in scratch_max_allocation (Jonas Nick)

Pull request description:

  This PR increases the general robustness of scratch spaces. It does not fix an existing vulnerability because scratch spaces aren't used anywhere in master. Additionally,  it must be prevented anyway that an attacker has (indirect) control over the arguments touched in this PR.

ACKs for top commit:
  sipa:
    ACK 60f7f2de5de917c2bee32a4cd79cc3818b6a94a0

Tree-SHA512: ecdd794b55a01d1d6d24098f3abff34cb8bb6f33737ec4ec93714aa631c9d397b213cc3603a916ad79f4b09d6b2f8973bf87fc07b81b25a530cc72c4dbafaba9

4 years agoMerge #805: Remove the extremely outdated TODO file.
Tim Ruffing [Tue, 1 Sep 2020 08:45:28 +0000 (10:45 +0200)]
Merge #805: Remove the extremely outdated TODO file.

1c325199d590e018cdfb5ea2ab541774009bf7f7 Remove the extremely outdated TODO file. (Gregory Maxwell)

Pull request description:

  This had two things in it-- tests for the scalar/field code and
   constant time signing and keygen.

  The signing and keygen have been thoroughly constant time for years
   and there are now powerful tests to verify it...  no further work
   on constant-time is needed at least on ordinary platforms (other
   sidechannels-- sure).

  The scalar and field code have extensive tests.  They could use
   better static test vectors but they're well tested.

  TODOs for the project are currently better documented on github
   right now.  This file could return in the future with current
   info, if needed.

ACKs for top commit:
  real-or-random:
    ACK https://github.com/bitcoin-core/secp256k1/pull/805/commits/1c325199d590e018cdfb5ea2ab541774009bf7f7

Tree-SHA512: 65c730ad2816b28991cdb74df6da4671abe76a74a0d0b306f13612b4bbe9b54f9a623b18fc288e0ec13572d9fdbab6f376ce7aafc9fe601644239629b84fb15c

4 years agoAdd test logs to gitignore
Jake Rawsthorne [Mon, 31 Aug 2020 23:35:47 +0000 (00:35 +0100)]
Add test logs to gitignore

4 years agoRemove the extremely outdated TODO file.
Gregory Maxwell [Mon, 31 Aug 2020 23:11:41 +0000 (23:11 +0000)]
Remove the extremely outdated TODO file.

This had two things in it-- tests for the scalar/field code and
 constant time signing and keygen.

The signing and keygen have been thoroughly constant time for years
 and there are now powerful tests to verify it...  no further work
 on constant-time is needed at least on ordinary platforms (other
 sidechannels-- sure).

The scalar and field code have extensive tests.  They could use
 better static test vectors but they're well tested.

TODOs for the project are currently better documented on github
 right now.  This file could return in the future with current
 info, if needed.

4 years agoextrakeys: Init empty experimental module
Jonas Nick [Tue, 12 May 2020 13:58:47 +0000 (13:58 +0000)]
extrakeys: Init empty experimental module

This is to prepare for xonly_pubkeys and keypairs.

4 years agoMake the secp256k1_declassify argument constant
Jonas Nick [Mon, 30 Mar 2020 14:51:38 +0000 (14:51 +0000)]
Make the secp256k1_declassify argument constant

This is required to declassify pointers to constant memory. Declassify should
never modify its argument.

4 years agoAdd SHA256 selftest
Pieter Wuille [Mon, 17 Aug 2020 20:48:22 +0000 (13:48 -0700)]
Add SHA256 selftest

4 years agoMerge #798: Check assumptions on integer implementation at compile time
Tim Ruffing [Sun, 16 Aug 2020 10:01:05 +0000 (12:01 +0200)]
Merge #798: Check assumptions on integer implementation at compile time

7c068998bac3e4a254d8542458b2068e38fca435 Compile-time check assumptions on integer types (Pieter Wuille)
02b6c87b52dbac1557b689ab2ebc8b91d67fd0f3 Add support for (signed) __int128 (Pieter Wuille)

Pull request description:

  A compile-time check is implemented in a new `src/assumptions.h` which verifies several aspects that are implementation-defined in C:
  * size of bytes
  * conversion between unsigned and (negative) signed types
  * right-shifts of negative signed types.

ACKs for top commit:
  gmaxwell:
    ACK 7c068998bac3e4a254d8542458b2068e38fca435
  real-or-random:
    ACK 7c068998bac3e4a254d8542458b2068e38fca435 code review and tested

Tree-SHA512: 3903251973681c88d64d4af0f6cb40fde11eb436804c5b6202c3715b78b1a48bcb287f601b394fd0b503437e3832ba011885e992fe65098b33edc430d9b1f67d

4 years agoUse additional system macros to figure out endianness
Pieter Wuille [Fri, 14 Aug 2020 18:49:34 +0000 (11:49 -0700)]
Use additional system macros to figure out endianness

Also permit it being overridden by explicitly passing SECP256K1_{BIG,LITTLE}_ENDIAN

4 years agoCompile-time check assumptions on integer types
Pieter Wuille [Wed, 12 Aug 2020 22:52:20 +0000 (15:52 -0700)]
Compile-time check assumptions on integer types

4 years agoAdd support for (signed) __int128
Pieter Wuille [Thu, 13 Aug 2020 00:41:08 +0000 (17:41 -0700)]
Add support for (signed) __int128

4 years agoMerge #787: Use preprocessor macros instead of autoconf to detect endianness
Tim Ruffing [Thu, 13 Aug 2020 10:25:29 +0000 (12:25 +0200)]
Merge #787: Use preprocessor macros instead of autoconf to detect endianness

0dccf98a21beb245f6cd9ed76fb7368529df09c7 Use preprocessor macros instead of autoconf to detect endianness (Tim Ruffing)

Pull request description:

  This does not fix any particular issue but it's preferable to not
  rely on autoconf. This avoids endianness mess for users on BE hosts
  if they use their build without autoconf.

  The macros are carefully written to err on the side of the caution,
  e.g., we #error if the user manually configures a different endianness
  than what we detect.

  Supersedes #770 .

ACKs for top commit:
  sipa:
    ACK 0dccf98a21beb245f6cd9ed76fb7368529df09c7
  gmaxwell:
    ACK 0dccf98a21beb245f6cd9ed76fb7368529df09c7

Tree-SHA512: 6779458de5cb6eaef2ac37f9d4b8fa6c9b299f58f6e5b72f2b0d7e36c12ea06074e483acfb85085a147e0f4b51cd67d897f61a67250ec1cea284a0f7680eb2e8

4 years agoMerge #793: Make scalar/field choice depend on C-detected __int128 availability
Tim Ruffing [Wed, 12 Aug 2020 13:24:06 +0000 (15:24 +0200)]
Merge #793: Make scalar/field choice depend on C-detected __int128 availability

79f1f7a4f123765cf07be92ae894d882c5845191 Autodetect __int128 availability on the C side (Pieter Wuille)
0d7727f95e52d99c13f55c64e9d1f799ba7d7967 Add SECP256K1_FE_STORAGE_CONST_GET to 5x52 field (Pieter Wuille)

Pull request description:

  This PR does two things:
  * It removes the ability to select the 5x52 field with a 8x32 scalar, or the 10x26 field with a 4x64 scalar. It's both 128-bit wide versions, or neither.
  * The choice is made automatically by the C code, unless overridden by a USE_FORCE_WIDEMUL_INT{64,128} define (which is available through `configure` with a hidden option --with-test-override-wide-multiplication={auto,int64,int128}).

  This reduces the reliance on autoconf for this performance-critical configuration option, and also reduces the number of different combinations to test.

  This removes one theoretically useful combination: if you had x86_64 asm but no __int128 support in your compiler, it was possible to use the 64-bit field before but the 32-bit scalar. I think this doesn't matter as all compilers/systems that support (our)  x86_64 asm also support __int128. Furthermore, #767 will break this.

  As an unexpected side effect, this also means the `gen_context` static precomputation tool will now use __int128 based implementations when available (which required an addition to the 5x52 field; see first commit).

ACKs for top commit:
  real-or-random:
    ACK 79f1f7a4f123765cf07be92ae894d882c5845191 diff looks good and tests pass
  elichai:
    tACK  79f1f7a4f123765cf07be92ae894d882c5845191

Tree-SHA512: 4171732668e5c9cae5230e3a43dd6df195567e1232b89c12c5db429986b6519bb4d77334cb0bac8ce13a00a24dfffdff69b46c89b4d59bc6d297a996ea4efd3d

4 years agoUse preprocessor macros instead of autoconf to detect endianness
Tim Ruffing [Tue, 21 Jul 2020 12:05:56 +0000 (14:05 +0200)]
Use preprocessor macros instead of autoconf to detect endianness

This does not fix any particular issue but it's preferable to not
rely on autoconf. This avoids endianness mess for users on BE hosts
if they use their build without autoconf.

The macros are carefully written to err on the side of the caution,
e.g., we #error if the user manually configures a different endianness
than what we detect.

4 years agoMerge #795: Avoid linking libcrypto in the valgrind ct test.
Tim Ruffing [Tue, 11 Aug 2020 09:20:23 +0000 (11:20 +0200)]
Merge #795: Avoid linking libcrypto in the valgrind ct test.

57d3a3c64cf3d435d5d45e323cf9cbe21da8c6cf Avoid linking libcrypto in the valgrind ct test. (Gregory Maxwell)

Pull request description:

  Libcrypto isn't useful here and on some systems UB in OpenSSL's
   init causes failures.

  Fixes #775.

ACKs for top commit:
  real-or-random:
    ACK 57d3a3c64cf3d435d5d45e323cf9cbe21da8c6cf
  elichai:
    tACK 57d3a3c64cf3d435d5d45e323cf9cbe21da8c6cf

Tree-SHA512: 0b10b3e9cc0871a9a93271c72be9d1663ea163745071cb4951a99664c048ab5b6f46bb7cff36e7000e8fb26df7ee164f536f61210bece376478f9f774f34e83d

4 years agoAvoid linking libcrypto in the valgrind ct test.
Gregory Maxwell [Mon, 10 Aug 2020 22:13:43 +0000 (22:13 +0000)]
Avoid linking libcrypto in the valgrind ct test.

Libcrypto isn't useful here and on some systems UB in OpenSSL's
 init causes failures.

Fixes #775.

4 years agoAutodetect __int128 availability on the C side
Pieter Wuille [Sun, 9 Aug 2020 17:58:40 +0000 (10:58 -0700)]
Autodetect __int128 availability on the C side

Instead of supporting configuration of the field and scalar size independently,
both are now controlled by the availability of a 64x64->128 bit multiplication
(currently only through __int128). This is autodetected from the C code through
__SIZEOF_INT128__, but can be overridden using configure's
--with-test-override-wide-multiply, or by defining
USE_FORCE_WIDEMUL_{INT64,INT128} manually.

4 years agoAdd SECP256K1_FE_STORAGE_CONST_GET to 5x52 field
Pieter Wuille [Mon, 10 Aug 2020 21:32:28 +0000 (14:32 -0700)]
Add SECP256K1_FE_STORAGE_CONST_GET to 5x52 field

So far this has not been needed, as it's only used by the static precomputation
which always builds with 32-bit fields.

This prepares for the ability to have __int128 detected on the C side, breaking
that restriction.

4 years agoMerge #696: Run a Travis test on s390x (big endian)
Tim Ruffing [Fri, 7 Aug 2020 10:50:43 +0000 (12:50 +0200)]
Merge #696: Run a Travis test on s390x (big endian)

39295362cfc856aae1c37cc1194c2f6d53fd6f25 Test travis s390x (big endian) (Pieter Wuille)

Pull request description:

ACKs for top commit:
  real-or-random:
    ACK 39295362cfc856aae1c37cc1194c2f6d53fd6f25 Travis works and says it's big endian

Tree-SHA512: 939b98fe369e575e8bf56899a28cb5aafdb9ccfaaee3cb611027e053edc8220d2787c34359cd01508899b8b7e105c89853a4ab44c382252538c797d00c09345b

4 years agoTest travis s390x (big endian)
Pieter Wuille [Wed, 29 Jul 2020 00:41:07 +0000 (17:41 -0700)]
Test travis s390x (big endian)

4 years agoChange travis.sh to check if variables are equal to yes instead of
Elichai Turkel [Thu, 30 Jul 2020 08:18:07 +0000 (11:18 +0300)]
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

4 years agoMerge #778: secp256k1_gej_double_nonzero supports infinity
Tim Ruffing [Wed, 29 Jul 2020 13:18:30 +0000 (15:18 +0200)]
Merge #778: secp256k1_gej_double_nonzero supports infinity

18d36327fddad18ba81af2cf7fe6c8a16952dc22 secp256k1_gej_double_nonzero supports infinity (Pieter Wuille)

Pull request description:

  Our existing function `secp256k1_gej_double_nonzero` actually supports infinity if only it wouldn't check that the input isn't infinity.

  Drop the check, rename it to `secp256k1_gej_double`, and adapt the tests.

ACKs for top commit:
  real-or-random:
    ACK 18d36327fddad18ba81af2cf7fe6c8a16952dc22 I looked at the diff and ran tests locally
  gmaxwell:
    ACK 18d36327fddad18ba81af2cf7fe6c8a16952dc22

Tree-SHA512: 79dc42099c318f0bdfe7961495ab3fbbe87551c3cc373557a371914bb65638b129ddfd360e694959349f184e2d71a540abdbef04211e7eb70ee17b691632b915

4 years agoMerge #779: travis: Fix argument quoting for ./configure
Jonas Nick [Wed, 29 Jul 2020 13:06:12 +0000 (13:06 +0000)]
Merge #779: travis: Fix argument quoting for ./configure

9e49a9b2552b7b865ebc43cfd13c9767de65cb4b travis: Fix argument quoting for ./configure (Tim Ruffing)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK 9e49a9b2552b7b865ebc43cfd13c9767de65cb4b

Tree-SHA512: 53efa7134de978912d604bc9685bc779f98e2d72e5f77636595676aa420c04fc934a6bb9d560d74b58197943ab86708d3b913e79bc3dfb856681b26dda8724b3

4 years agotravis: Fix argument quoting for ./configure
Tim Ruffing [Wed, 29 Jul 2020 06:50:42 +0000 (08:50 +0200)]
travis: Fix argument quoting for ./configure

When $USE_HOST or $EXTRAFLAGS are empty, we pass (due to quoting) an
empty string as a parameter to ./configure, which then believes we want
to use a deprecated syntax for specifing a host or a target and yells at us:
> configure: WARNING: you should use --build, --host, --target

The fixes are:
 - $EXTRAFLAGS could contain multiple flags and should not be quoted at all.
 - We can get rid of $USE_HOST by specifying --host="$HOST" directly.

4 years agosecp256k1_gej_double_nonzero supports infinity
Pieter Wuille [Wed, 29 Jul 2020 01:12:14 +0000 (18:12 -0700)]
secp256k1_gej_double_nonzero supports infinity

4 years agoMerge #772: Improve constant-timeness on PowerPC
Tim Ruffing [Tue, 28 Jul 2020 14:10:58 +0000 (16:10 +0200)]
Merge #772: Improve constant-timeness on PowerPC

67a429f31fd3d1b37c5365cc58b70588b8645d62 Suppress a harmless variable-time optimization by clang in _int_cmov (Tim Ruffing)
5b196338f0c8dc07bf0eece37b46d8686c4da3ce Remove redundant "? 1 : 0" after comparisons in scalar code (Tim Ruffing)

Pull request description:

  Attempt at resolving #771 .

  This surprisingly seems to improve the situation at least for the compilers available on godbolt.

ACKs for top commit:
  gmaxwell:
    ACK 67a429f31fd3d1b37c5365cc58b70588b8645d62
  elichai:
    tACK 67a429f31fd3d1b37c5365cc58b70588b8645d62

Tree-SHA512: ee8b0c86831ec8c3d5a9abcad773ed8a0f267e5c47012e4e1423b10a64c26b4cf6e3c466c3df765ba7e636787a3fe134d633926d67b599287f12c51be924f478

4 years agoMerge #774: tests: Abort if malloc() fails during context cloning tests
Tim Ruffing [Tue, 28 Jul 2020 10:34:35 +0000 (12:34 +0200)]
Merge #774: tests: Abort if malloc() fails during context cloning tests

2e1b9e0458317d03b682c1f5dd63aedb52c86b04 tests: Abort if malloc() fails during context cloning tests (Tim Ruffing)

Pull request description:

  Found by the clang static analyzer.

  This is the worst true positive that it found. I feel somewhat proud.

ACKs for top commit:
  elichai:
    tACK 2e1b9e0458317d03b682c1f5dd63aedb52c86b04

Tree-SHA512: bf9a3b6c2b8beaafd230ece00a9a69dd884a35b6d2243502ebfded3f77a454e80ef922791bd48c17aa4814a275550957071c045912080a616dd5ed704a70aab7

4 years agotests: Abort if malloc() fails during context cloning tests
Tim Ruffing [Mon, 27 Jul 2020 11:43:28 +0000 (13:43 +0200)]
tests: Abort if malloc() fails during context cloning tests

Found by the clang static analyzer.

This is the worst true positive that it found. I feel somewhat proud.

4 years agoSuppress a harmless variable-time optimization by clang in _int_cmov
Tim Ruffing [Mon, 27 Jul 2020 12:35:05 +0000 (14:35 +0200)]
Suppress a harmless variable-time optimization by clang in _int_cmov

Follow up on 52a03512c1d800603b5c923c1a28bdba12dadb30

4 years agoRemove redundant "? 1 : 0" after comparisons in scalar code
Tim Ruffing [Fri, 24 Jul 2020 22:28:10 +0000 (00:28 +0200)]
Remove redundant "? 1 : 0" after comparisons in scalar code

This prevents GCC from generating branches on PowerPC in certain
cases.

Fixes #771.

4 years agoMerge #741: Remove unnecessary sign variable from wnaf_const
Tim Ruffing [Sun, 26 Jul 2020 10:18:17 +0000 (12:18 +0200)]
Merge #741: Remove unnecessary sign variable from wnaf_const

37dba329c6cb0f7a4228a11dc26aa3a342a3a5d0 Remove unnecessary sign variable from wnaf_const (Jonas Nick)
6bb0b77e158fc2f9e56e4b65b08bcb660d4c588b Fix test_constant_wnaf for -1 and add a test for it. (Jonas Nick)

Pull request description:

  There currently is a single branch in the `ecmul_const` function that is not being exercised by the tests. This branch is unreachable and therefore I'm suggesting to remove it.

  For your convenience the paper the wnaf algorithm can be found [here (The Width-w NAF Method Provides Small Memory and Fast Elliptic Scalar Multiplications Secure against Side Channel Attacks)](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.563.1267&rep=rep1&type=pdf). Similarly, unless I'm missing something important, I don't see how their algorithm needs to consider `sign(u[i-1])` unless `d` can be negative - which doesn't make much sense to me either.

ACKs for top commit:
  real-or-random:
    ACK 37dba329c6cb0f7a4228a11dc26aa3a342a3a5d0 I verified the correctness of the change and claimed invariant by manual inspection. I tested the code, both with 32bit and 64bit scalars.

Tree-SHA512: 9db45f76bd881d00a81923b6d2ae1c3e0f49a82a5d55347f01e1ce4e924d9a3bf55483a0697f25039c327e33edca6796ba3205c068d9f2f99aa5d655e46b15be

4 years agoMerge #773: Fix some compile problems on weird/old compilers.
Tim Ruffing [Sun, 26 Jul 2020 09:05:08 +0000 (11:05 +0200)]
Merge #773: Fix some compile problems on weird/old compilers.

1309c03c45beece646a7d21fdb6a0e3d38adee2b Fix some compile problems on weird/old compilers. (Gregory Maxwell)

Pull request description:

  The visibility attribute is a GCC 4+ feature.
  GCC 2.95 also warns about the unsigned/signed comparision.

ACKs for top commit:
  real-or-random:
    ACK 1309c03c45beece646a7d21fdb6a0e3d38adee2b I inspected the diff

Tree-SHA512: b5a5175416b67b2619f68ad82a208052ad678955e59c2f3457799abd1dd6fd817c40f6bc2941b2bda207c6f58ad0fbe46221a2f92b726e824702c4c0b177377c

4 years agoFix some compile problems on weird/old compilers.
Gregory Maxwell [Sun, 26 Jul 2020 05:25:14 +0000 (05:25 +0000)]
Fix some compile problems on weird/old compilers.

The visibility attribute is a GCC 4+ feature.
GCC 2.95 also warns about the unsigned/signed comparision.

4 years agoMerge #769: Undef HAVE___INT128 in basic-config.h to fix gen_context compilation
Jonas Nick [Tue, 21 Jul 2020 19:12:43 +0000 (19:12 +0000)]
Merge #769: Undef HAVE___INT128 in basic-config.h to fix gen_context compilation

22e578bb11fe62d3e8ac05b5278a076bf7f2fa2e Undef HAVE___INT128 in basic-config.h to fix gen_context compilation (Tim Ruffing)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK 22e578bb11fe62d3e8ac05b5278a076bf7f2fa2e

Tree-SHA512: 91e11c3feade13923a01c30025b7f01d0cb6d7d88cd7a19d490373d2fb4552f2ca1ab0d9138096268999bcbfd51ef3c9af64ec8ab0dc8ee2fa60be16d2b5af64

4 years agoUndef HAVE___INT128 in basic-config.h to fix gen_context compilation
Tim Ruffing [Tue, 21 Jul 2020 09:09:23 +0000 (11:09 +0200)]
Undef HAVE___INT128 in basic-config.h to fix gen_context compilation

Fixes #768.

4 years agoMerge #765: remove dead store in ecdsa_signature_parse_der_lax
Jonas Nick [Mon, 29 Jun 2020 08:38:20 +0000 (08:38 +0000)]
Merge #765: remove dead store in ecdsa_signature_parse_der_lax

f00d6575ca0dcca11e085b20afa4d73dc8742ddc remove dead store in ecdsa_signature_parse_der_lax (fanquake)

Pull request description:

ACKs for top commit:
  elichai:
    utACK f00d6575ca0dcca11e085b20afa4d73dc8742ddc, it does look like we don't use that assignment
  jonasnick:
    ACK f00d6575ca0dcca11e085b20afa4d73dc8742ddc

Tree-SHA512: 9aa54c901f299341c309411b0247720f5152a131dd346c19be7ee21865e3a822e8cf91b869e28ef6288adaf31660bc2e18874e304052468a9be6b7027674af30

This page took 0.079922 seconds and 4 git commands to generate.