Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native jacobi symbol algorithm #979

Merged
merged 5 commits into from
Mar 1, 2023

Conversation

sipa
Copy link
Contributor

@sipa sipa commented Sep 23, 2021

This introduces variants of the vartime divsteps-based GCD algorithm used for modular inverses to compute Jacobi symbols. Changes compared to the normal vartime divsteps:

  • Only positive matrices are used, guaranteeing that f and g remain positive.
  • An additional jac variable is updated to track sign changes during matrix computation.
  • There is (so far) no proof that this algorithm terminates within reasonable amount of time for every input, but experimentally it appears to almost always need less than 900 iterations. To account for that, only a bounded number of iterations is performed (1500), after which failure is returned. The field logic then falls back to using square roots to determining the result.
  • The algorithm converges to f=g=gcd(f0,g0) rather than g=0. To keep this test simple, the end condition is f=1, which won't be reached if started with g=0. That case is dealt with specially.

This code is currently unused, except for tests. I don't aim for it to be merged until there is a need for it, but this demonstrates its feasibility.

In terms of performance:

field_inverse: min 1.76us / avg 1.76us / max 1.78us
field_inverse_var: min 0.991us / avg 0.993us / max 0.996us
field_jacobi_var: min 1.31us / avg 1.31us / max 1.31us
field_sqrt: min 4.36us / avg 4.37us / max 4.40us

while with the older (f24e122) libgmp based Jacobi code on the same system:

num_jacobi: min 1.53us / avg 1.54us / max 1.55us

@sipa sipa force-pushed the 202109_native_jacobi branch 2 times, most recently from 5a5f7a6 to 042f91b Compare September 23, 2021 23:01
@sipa sipa mentioned this pull request Sep 28, 2021
Copy link
Contributor

@robot-dreams robot-dreams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 042f91b

./tests passed, including the additional checks I suggested.

I'm still brushing up on the divsteps algorithm, and will review this change again once I've worked through the various details / optimizations.


Benchmark results look good on x86_64 (MacBook Pro): native jacobi version is faster than libgmp. However, on arm64 (Mac M1), native jacobi version was slightly slower!

On M1 I also tried ./configure --with-asm=arm --enable-experimental to see if that would speed up the native jacobi version, but attempting to build resulted in a lot of compile errors in field_10x26_arm.s.

MacBook Pro (x86_64)

native jacobi branch

$ ./bench_internal field
...
field_jacobi_var: min 2.03us / avg 2.25us / max 3.85us
field_sqrt: min 6.33us / avg 6.38us / max 6.46us

$ ./bench_internal jacobi
field_jacobi_var: min 2.00us / avg 2.06us / max 2.15us

libgmp branch f24e122:

$ ./bench_internal field
...
field_sqrt: min 6.05us / avg 6.13us / max 6.38us

$ ./bench_internal num
num_jacobi: min 2.44us / avg 2.47us / max 2.53us

Mac M1 (arm64)

native jacobi branch

% ./bench_internal field
...
field_jacobi_var: min 1.54us / avg 1.55us / max 1.56us
field_sqrt: min 4.04us / avg 4.09us / max 4.29us

% ./bench_internal jacobi
field_jacobi_var: min 1.55us / avg 1.74us / max 3.18us

libgmp branch f24e122:

% ./bench_internal field
...
field_sqrt: min 4.04us / avg 4.04us / max 4.05us

% ./bench_internal jacobi
...
num_jacobi: min 1.41us / avg 1.41us / max 1.42us

src/modinv32.h Show resolved Hide resolved
src/tests.c Outdated Show resolved Hide resolved
src/field_5x52_impl.h Show resolved Hide resolved
@real-or-random
Copy link
Contributor

@robot-dreams Always nice to see new contributors in the repo. :) Just curious, are you simply helping or are you interested in getting this merged? If the latter, I'm further curious about your use case. Feel free just ignore my intrusive questions.

@robot-dreams
Copy link
Contributor

@real-or-random Thanks for the reply! I'm simply helping and try to learn about this repo, I don't have a personal use case.

@sipa sipa force-pushed the 202109_native_jacobi branch 5 times, most recently from aced43a to 6e3fcc4 Compare November 9, 2021 22:22
@sipa
Copy link
Contributor Author

sipa commented Nov 9, 2021

@robot-dreams Thanks for your comments!

The failure with asm=arm is expected, as Apple M1 is 64-bit ARM, while the assembly code used here is 32-bit.

@sipa
Copy link
Contributor Author

sipa commented Nov 9, 2021

Made another change: in VERIFY mode, the upper bound on the number of posdivsteps iterations is reduced to ~750 (which is close to the median of how many iterations are needed for random input mod the field size), so that the uncomputable path is actually exercised in the tests.

Copy link
Contributor

@robot-dreams robot-dreams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 6e3fcc4

I agree with your modifications to the original safegcd for calculating Jacobi symbol instead of modular inverse. I also replicated the logic for the 64-bit version in Python, and checked that the result matches a "slow" Jacobi function for a few randomly generated inputs (see https://gist.github.com/robot-dreams/ceb00162b80384f2ae1913aaa2b35e75).

One potential concern is that with this change, there are now 4 slightly different implementations of a similar algorithm (32/64-bit, inv/jacobi). Do you think there's a nice way to consolidate the logic, at least among a given word size? (If there's no nice way or if it's too much trouble, I'm fine with leaving it as is and relying on having good tests.)

Other questions:

  • What was the motivation for using different approaches to clear the low-order bits of g between the 32 and 64 bit implementations (8-bit lookup table vs 4 and 6-bit tricks from Hacker's Delight)?

  • I agree that replacing f, g = g, -f with f, g = g, f ensures that all matrix entries are always positive. But aside from actually observing that it converges to f = 1 in practice, do you have any other intuitive justification for this? (The best I can come up with is that since you're constantly dividing g by 2 and swapping the roles of f and g, you're quickly moving towards a solution even if you replace g - f with g + f in the original GCD algorithm.)

  • Is there already a writeup describing this change? If not, would it make sense to add a brief section to https://github.com/bitcoin-core/secp256k1/blob/master/doc/safegcd_implementation.md? (If you think so, I'd be happy to give that a shot.)

src/modinv64_impl.h Outdated Show resolved Hide resolved
src/modinv32_impl.h Outdated Show resolved Hide resolved
src/modinv64_impl.h Outdated Show resolved Hide resolved
src/modinv32_impl.h Outdated Show resolved Hide resolved
src/modinv64_impl.h Outdated Show resolved Hide resolved
@robot-dreams
Copy link
Contributor

@sipa Thanks for responding to the comments!

  • Yes, 32-bit makes sense (in retrospect the fact that the file was called field_10x26 instead of field_5x52 should have given that away)
  • Great idea to reduce the number of iterations for validation!

@sipa sipa force-pushed the 202109_native_jacobi branch from 6e3fcc4 to 46eaa95 Compare November 10, 2021 16:15
@sipa
Copy link
Contributor Author

sipa commented Nov 10, 2021

One potential concern is that with this change, there are now 4 slightly different implementations of a similar algorithm (32/64-bit, inv/jacobi). Do you think there's a nice way to consolidate the logic, at least among a given word size? (If there's no nice way or if it's too much trouble, I'm fine with leaving it as is and relying on having good tests.)

Arguably there are 6 implementations (32/64-bit, and const/var/varpos divsteps), and they do share some of the code (in particular the matrix application), but not everything. I don't think there is an obvious way of merging more code without reducing performance, but I also haven't tried very hard.

What was the motivation for using different approaches to clear the low-order bits of g between the 32 and 64 bit implementations (8-bit lookup table vs 4 and 6-bit tricks from Hacker's Delight)?

Just dumb benchmarking. The formula was faster on x86_64 systems we tried, and the table was faster on ARMv7 systems (it's explained in one of the commit messages that introduced it).

I agree that replacing f, g = g, -f with f, g = g, f ensures that all matrix entries are always positive. But aside from actually observing that it converges to f = 1 in practice, do you have any other intuitive justification for this? (The best I can come up with is that since you're constantly dividing g by 2 and swapping the roles of f and g, you're quickly moving towards a solution even if you replace g - f with g + f in the original GCD algorithm.)

I don't, no. I do have a proof that any f>0,g>0 converges to f=g somewhere in a finite number of steps, but the upper bound is something like f*g*log2(f*g), which is obviously useless for practical purposes. The technique explained in https://github.com/sipa/safegcd-bounds completely fails for posdivsteps (doesn't converge at all). With a lot of tricks I got it to converge, but in what appears quadratic (O(log2(f)^2)), and it's only tractable to evaluate for f up to 2^20 or so.

The difficulty is that there are both steps that take f and g further apart (g /= 2) and steps that bring them closer (g = (f+g)/2), and it's hard to infer tight bounds on how many times one can happen in between two executions of the other.

So in short, no; the actual argument why this works is purely empirical; all out of a 2.5 billion random inputs (with the field size modulus) need between 630 and 921 iterations.

Is there already a writeup describing this change? If not, would it make sense to add a brief section to https://github.com/bitcoin-core/secp256k1/blob/master/doc/safegcd_implementation.md? (If you think so, I'd be happy to give that a shot.)

I think that would be valuable, yes. I haven't done so yet, but was considering it. Feel free to take a shot at it.

@sipa sipa force-pushed the 202109_native_jacobi branch from 55ec89c to 902d57e Compare November 12, 2021 16:37
@sipa
Copy link
Contributor Author

sipa commented Nov 12, 2021

Included @robot-dreams's update to the writeup.

Copy link
Contributor

@robot-dreams robot-dreams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 5af3d29 aside from comment nits—I checked the range diff against the old commit and it looks good.

src/modinv32_impl.h Show resolved Hide resolved
@sipa sipa force-pushed the 202109_native_jacobi branch from 902d57e to 53b7ce2 Compare November 16, 2021 20:28
@robot-dreams
Copy link
Contributor

ACK 53b7ce2

@sipa sipa force-pushed the 202109_native_jacobi branch from 8b2ae08 to 4a8d82d Compare February 27, 2023 21:21
@sipa
Copy link
Contributor Author

sipa commented Feb 27, 2023

Rebased, and updated to only support coprime inputs in the secp256k1_secp256k1_jacobiXX_maybe_var functions. The return value of those functions for "unknown/timeout" has been changed from -2 to 0.

src/modinv32.h Outdated Show resolved Hide resolved
@sipa sipa force-pushed the 202109_native_jacobi branch 2 times, most recently from eba1971 to 1c1c202 Compare February 28, 2023 16:23
src/tests.c Outdated Show resolved Hide resolved
@jonasnick
Copy link
Contributor

reACK mod nit

sipa and others added 3 commits February 28, 2023 15:54
This introduces variants of the divsteps-based GCD algorithm used for
modular inverses to compute Jacobi symbols. Changes compared to
the normal vartime divsteps:
* Only positive matrices are used, guaranteeing that f and g remain
  positive.
* An additional jac variable is updated to track sign changes during
  matrix computation.
* There is (so far) no proof that this algorithm terminates within
  reasonable amount of time for every input, but experimentally it
  appears to almost always need less than 900 iterations. To account
  for that, only a bounded number of iterations is performed (1500),
  after which failure is returned. In VERIFY mode a lower iteration
  count is used to make sure that callers exercise their fallback.
* The algorithm converges to f=g=gcd(f0,g0) rather than g=0. To keep
  this test simple, the end condition is f=1, which won't be reached
  if started with non-coprime or g=0 inputs. Because of that we only
  support coprime non-zero inputs.
The implementation calls the secp256k1_modinvNN_jacobi_var code, falling back
to computing a square root in the (extremely rare) case it failed converge.
@sipa sipa force-pushed the 202109_native_jacobi branch from 1c1c202 to ce3cfc7 Compare February 28, 2023 20:57
@jonasnick
Copy link
Contributor

ACK ce3cfc7

Copy link
Contributor

@real-or-random real-or-random left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reACK ce3cfc7 diff and writeup is good and I tested every commit

@real-or-random real-or-random merged commit 09b1d46 into bitcoin-core:master Mar 1, 2023
dhruv added a commit to dhruv/bitcoin-core-ci that referenced this pull request Mar 7, 2023
031fb7da65 Add doc/ellswift.md with ElligatorSwift explanation
12330ce744 Add ellswift testing to CI
28005e30f9 Add ElligatorSwift ctime tests
b746ceba4c Add tests for ElligatorSwift
b0d8d27359 Add ElligatorSwift benchmarks
10759a080d Add ellswift module implementing ElligatorSwift
c7d6f0e02c Add functions to test if X coordinate is valid
792c78f9a4 Add benchmark for key generation
9c69617478 Add exhaustive tests for ecmult_const_xonly
7b8f97d909 Add x-only ecmult_const version for x=n/d
9d1b458d5f Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
8962fc95bb Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b387 Update overflow check
5757318782 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e4cb Add secp256k1_fe_add_int function
5660c13755 prevent optimization in algorithms
09b1d466db Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc78a6 doc: Describe Jacobi calculation in safegcd_implementation.md
6be01036c8 Add secp256k1_fe_is_square_var function
1de2a01c2b Native jacobi symbol algorithm
04c6c1b181 Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c7af Make secp256k1_i128_check_pow2 support -(2^n)
cbd2555934 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa5175 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
e4330341bd ci: Shutdown wineserver whenever CI script exits
9a5a611a21 build: Suppress stupid MSVC linker warning
739c53b19a examples: Extend sig examples by call that uses static context
914276e4d2 build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c1744 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc1de build: Add -Wreserved-identifier supported by clang
8ebe5c5205 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5c2c Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721ccc Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e3148d ci: Do not set git's `user.{email,name}` config options
e1817a6f54 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff200588 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d18669d Drop no longer used Autoheader macros
c2415866c7 ci: Don't fetch git history
0ecf318851 ci: Use remote pull/merge ref instead of local git merge
2b77240b3b Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6bebaee3 scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7f2d ci: add test job with -DVERIFY
620ba3d74b benchmarks: fix bench_scalar_split
5fbff5d348 Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d849 Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b140 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954f11 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c0a9 Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f94c Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc9ee contexts: Forbid randomizing secp256k1_context_static
4b6df5e33e contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf5fb Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229e03 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738d5b Ensure safety of ctz_debruijn implementation.
a01a7d86dc Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfaf3d Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a327092 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf89e2 Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785b26 Introduce SECP256K1_B macro for curve b coefficient
4934aa7995 Switch to exhaustive groups with small B coefficient
d4a6b58df7 Add `noverify_tests` to `.gitignore`
88e80722d2 Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec112 Rename CTIMETEST -> CTIMETESTS
74b026f05d Add runtime checking for DECLASSIFY flag
5e2e6fcfc0 Run ctime test in Linux MSan CI job
18974061a3 Make ctime tests building configurable
5048be17e9 Rename valgrind_ctime_test -> ctime_tests
6eed6c18de Update error messages to suggest msan as well
8e11f89a68 Add support for msan integration to checkmem.h
8dc64079eb Add compile-time error to valgrind_ctime_test
0db05a770e Abstract interactions with valgrind behind new checkmem.h
4f1a54e41d Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4f40 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48f50 refactor: Rename STTC to STATIC_CTX in tests
3385a2648d refactor: Rename global variables to uppercase in tests
e03ef86559 Make all non-API functions (except main) static
cbe41ac138 Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
203760023c tests: Add noverify_tests which is like tests but without VERIFY
e862c4af0c Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb3000417 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e3d7 refactor: Separate run_context_tests into static vs proper contexts
a4a09379b1 tests: Clean up and improve run_context_tests() further
fc90bb5695 refactor: Tidy up main()
f32a36f620 tests: Don't use global context for context tests
ce4f936c4f tests: Tidy run_context_tests() by extracting functions
18e0db30cb tests: Don't recreate global context in scratch space test
b19806122e tests: Use global copy of secp256k1_context_static instead of clone
2a39ac162e Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca284e2 Drop `SECP_CONFIG_DEFINES` from examples
31ed5386e8 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b2ae Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a8c7 Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90f69 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f774 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889f17 Clarify that the ABI-incompatible versions are earlier
881fc33d0c Consistency in naming of modules
665ba77e79 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f5ba Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a74688201 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fdadeb ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d21bb Do not define unused `HAVE_VALGRIND` macro
ad8647f548 Drop no longer relevant files from `.gitignore`
b627ba7050 Remove dependency on `src/libsecp256k1-config.h`
9ecf8149a1 Reduce font size in changelog
2dc133a67f Add more changelog entries
ac233e181a Add links to diffs to changelog
cee8223ef6 Mention semantic versioning in changelog
9a8d65f07f Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc290f7 release cleanup: bump version after 0.2.0
b6b360efaf doc: improve message of cleanup commit
a49e0940ad docs: Fix typo
2551cdac90 tests: Fix code formatting
c635c1bfd5 Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f2357c refactor: Add helper function secp256k1_context_is_proper()
d216475205 test secp256k1_i128_to_i64
4bc429019d Add a secp256k1_i128_to_u64 function.
e089eecc1e group: Further simply gej_add_ge
ac71020ebe group: Save a normalize_to_zero in gej_add_ge

git-subtree-dir: src/secp256k1
git-subtree-split: 031fb7da655e98451931eb2e5ced538b5cdf2b8e
dhruv added a commit to dhruv/bitcoin-core-ci that referenced this pull request Mar 7, 2023
031fb7da65 Add doc/ellswift.md with ElligatorSwift explanation
12330ce744 Add ellswift testing to CI
28005e30f9 Add ElligatorSwift ctime tests
b746ceba4c Add tests for ElligatorSwift
b0d8d27359 Add ElligatorSwift benchmarks
10759a080d Add ellswift module implementing ElligatorSwift
c7d6f0e02c Add functions to test if X coordinate is valid
792c78f9a4 Add benchmark for key generation
9c69617478 Add exhaustive tests for ecmult_const_xonly
7b8f97d909 Add x-only ecmult_const version for x=n/d
9d1b458d5f Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
8962fc95bb Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b387 Update overflow check
5757318782 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e4cb Add secp256k1_fe_add_int function
5660c13755 prevent optimization in algorithms
09b1d466db Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc78a6 doc: Describe Jacobi calculation in safegcd_implementation.md
6be01036c8 Add secp256k1_fe_is_square_var function
1de2a01c2b Native jacobi symbol algorithm
04c6c1b181 Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c7af Make secp256k1_i128_check_pow2 support -(2^n)
cbd2555934 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa5175 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
e4330341bd ci: Shutdown wineserver whenever CI script exits
9a5a611a21 build: Suppress stupid MSVC linker warning
739c53b19a examples: Extend sig examples by call that uses static context
914276e4d2 build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c1744 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc1de build: Add -Wreserved-identifier supported by clang
8ebe5c5205 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5c2c Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721ccc Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e3148d ci: Do not set git's `user.{email,name}` config options
e1817a6f54 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff200588 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d18669d Drop no longer used Autoheader macros
c2415866c7 ci: Don't fetch git history
0ecf318851 ci: Use remote pull/merge ref instead of local git merge
2b77240b3b Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6bebaee3 scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7f2d ci: add test job with -DVERIFY
620ba3d74b benchmarks: fix bench_scalar_split
5fbff5d348 Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d849 Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b140 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954f11 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c0a9 Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f94c Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc9ee contexts: Forbid randomizing secp256k1_context_static
4b6df5e33e contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf5fb Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229e03 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738d5b Ensure safety of ctz_debruijn implementation.
a01a7d86dc Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfaf3d Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a327092 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf89e2 Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785b26 Introduce SECP256K1_B macro for curve b coefficient
4934aa7995 Switch to exhaustive groups with small B coefficient
d4a6b58df7 Add `noverify_tests` to `.gitignore`
88e80722d2 Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec112 Rename CTIMETEST -> CTIMETESTS
74b026f05d Add runtime checking for DECLASSIFY flag
5e2e6fcfc0 Run ctime test in Linux MSan CI job
18974061a3 Make ctime tests building configurable
5048be17e9 Rename valgrind_ctime_test -> ctime_tests
6eed6c18de Update error messages to suggest msan as well
8e11f89a68 Add support for msan integration to checkmem.h
8dc64079eb Add compile-time error to valgrind_ctime_test
0db05a770e Abstract interactions with valgrind behind new checkmem.h
4f1a54e41d Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4f40 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48f50 refactor: Rename STTC to STATIC_CTX in tests
3385a2648d refactor: Rename global variables to uppercase in tests
e03ef86559 Make all non-API functions (except main) static
cbe41ac138 Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
203760023c tests: Add noverify_tests which is like tests but without VERIFY
e862c4af0c Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb3000417 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e3d7 refactor: Separate run_context_tests into static vs proper contexts
a4a09379b1 tests: Clean up and improve run_context_tests() further
fc90bb5695 refactor: Tidy up main()
f32a36f620 tests: Don't use global context for context tests
ce4f936c4f tests: Tidy run_context_tests() by extracting functions
18e0db30cb tests: Don't recreate global context in scratch space test
b19806122e tests: Use global copy of secp256k1_context_static instead of clone
2a39ac162e Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca284e2 Drop `SECP_CONFIG_DEFINES` from examples
31ed5386e8 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b2ae Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a8c7 Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90f69 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f774 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889f17 Clarify that the ABI-incompatible versions are earlier
881fc33d0c Consistency in naming of modules
665ba77e79 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f5ba Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a74688201 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fdadeb ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d21bb Do not define unused `HAVE_VALGRIND` macro
ad8647f548 Drop no longer relevant files from `.gitignore`
b627ba7050 Remove dependency on `src/libsecp256k1-config.h`
9ecf8149a1 Reduce font size in changelog
2dc133a67f Add more changelog entries
ac233e181a Add links to diffs to changelog
cee8223ef6 Mention semantic versioning in changelog
9a8d65f07f Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc290f7 release cleanup: bump version after 0.2.0
b6b360efaf doc: improve message of cleanup commit
a49e0940ad docs: Fix typo
2551cdac90 tests: Fix code formatting
c635c1bfd5 Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f2357c refactor: Add helper function secp256k1_context_is_proper()
d216475205 test secp256k1_i128_to_i64
4bc429019d Add a secp256k1_i128_to_u64 function.
e089eecc1e group: Further simply gej_add_ge
ac71020ebe group: Save a normalize_to_zero in gej_add_ge

git-subtree-dir: src/secp256k1
git-subtree-split: 031fb7da655e98451931eb2e5ced538b5cdf2b8e
sipa added a commit to sipa/bitcoin that referenced this pull request Mar 8, 2023
bdf3900 Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0
b40adf2 release: prepare for 0.3.0
90b513a Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1"
8be82d4 cmake: Rename project to "libsecp256k1"
ef4f8bd Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions
756b61d readme: Use correct build type in CMake/Windows build instructions
3295aa1 Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake
92098d8 changelog: Add entry for CMake
df323b5 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system
e1eb337 ci: Add "x86_64: Windows (VS 2022)" task
10602b0 cmake: Export config files
5468d70 build: Add CMake-based build system
6048e6c Merge bitcoin-core/secp256k1#1222: Remove redundant checks.
eb8749f Merge bitcoin-core/secp256k1#1221: Update Changelog
5d8f53e Remove redudent checks.
9d1b458 Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
d232112 Update Changelog
8962fc9 Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b Update overflow check
5757318 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e Add secp256k1_fe_add_int function
5660c13 prevent optimization in algorithms
09b1d46 Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc7 doc: Describe Jacobi calculation in safegcd_implementation.md
6be0103 Add secp256k1_fe_is_square_var function
1de2a01 Native jacobi symbol algorithm
04c6c1b Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c Make secp256k1_i128_check_pow2 support -(2^n)
cbd2555 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa5 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
e433034 ci: Shutdown wineserver whenever CI script exits
9a5a611 build: Suppress stupid MSVC linker warning
739c53b examples: Extend sig examples by call that uses static context
914276e build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c1 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc build: Add -Wreserved-identifier supported by clang
8ebe5c5 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5 Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721 Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e31 ci: Do not set git's `user.{email,name}` config options
e1817a6 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff200 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d186 Drop no longer used Autoheader macros
c241586 ci: Don't fetch git history
0ecf318 ci: Use remote pull/merge ref instead of local git merge
2b77240 Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6beba scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7 ci: add test job with -DVERIFY
620ba3d benchmarks: fix bench_scalar_split
5fbff5d Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc contexts: Forbid randomizing secp256k1_context_static
4b6df5e contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738 Ensure safety of ctz_debruijn implementation.
a01a7d8 Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfa Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a327 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf8 Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785 Introduce SECP256K1_B macro for curve b coefficient
4934aa7 Switch to exhaustive groups with small B coefficient
d4a6b58 Add `noverify_tests` to `.gitignore`
88e8072 Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec Rename CTIMETEST -> CTIMETESTS
74b026f Add runtime checking for DECLASSIFY flag
5e2e6fc Run ctime test in Linux MSan CI job
1897406 Make ctime tests building configurable
5048be1 Rename valgrind_ctime_test -> ctime_tests
6eed6c1 Update error messages to suggest msan as well
8e11f89 Add support for msan integration to checkmem.h
8dc6407 Add compile-time error to valgrind_ctime_test
0db05a7 Abstract interactions with valgrind behind new checkmem.h
4f1a54e Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48 refactor: Rename STTC to STATIC_CTX in tests
3385a26 refactor: Rename global variables to uppercase in tests
e03ef86 Make all non-API functions (except main) static
cbe41ac Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
2037600 tests: Add noverify_tests which is like tests but without VERIFY
e862c4a Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb3000 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e refactor: Separate run_context_tests into static vs proper contexts
a4a0937 tests: Clean up and improve run_context_tests() further
fc90bb5 refactor: Tidy up main()
f32a36f tests: Don't use global context for context tests
ce4f936 tests: Tidy run_context_tests() by extracting functions
18e0db3 tests: Don't recreate global context in scratch space test
b198061 tests: Use global copy of secp256k1_context_static instead of clone
2a39ac1 Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca28 Drop `SECP_CONFIG_DEFINES` from examples
31ed538 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889 Clarify that the ABI-incompatible versions are earlier
881fc33 Consistency in naming of modules
665ba77 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a74688 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fda ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d2 Do not define unused `HAVE_VALGRIND` macro
ad8647f Drop no longer relevant files from `.gitignore`
b627ba7 Remove dependency on `src/libsecp256k1-config.h`
9ecf814 Reduce font size in changelog
2dc133a Add more changelog entries
ac233e1 Add links to diffs to changelog
cee8223 Mention semantic versioning in changelog
9a8d65f Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc29 release cleanup: bump version after 0.2.0
b6b360e doc: improve message of cleanup commit
a49e094 docs: Fix typo
2551cda tests: Fix code formatting
c635c1b Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f23 refactor: Add helper function secp256k1_context_is_proper()
d216475 test secp256k1_i128_to_i64
4bc4290 Add a secp256k1_i128_to_u64 function.
e089eec group: Further simply gej_add_ge
ac71020 group: Save a normalize_to_zero in gej_add_ge

git-subtree-dir: src/secp256k1
git-subtree-split: bdf3900
div72 added a commit to div72/Gridcoin-Research that referenced this pull request Mar 14, 2023
bdf39000b9 Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0
b40adf2360 release: prepare for 0.3.0
90b513aada Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1"
8be82d4362 cmake: Rename project to "libsecp256k1"
ef4f8bd025 Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions
756b61d451 readme: Use correct build type in CMake/Windows build instructions
3295aa149b Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake
92098d84cf changelog: Add entry for CMake
df323b5c14 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system
e1eb33724c ci: Add "x86_64: Windows (VS 2022)" task
10602b0030 cmake: Export config files
5468d70964 build: Add CMake-based build system
6048e6c03e Merge bitcoin-core/secp256k1#1222: Remove redundant checks.
eb8749fcd0 Merge bitcoin-core/secp256k1#1221: Update Changelog
5d8f53e312 Remove redudent checks.
9d1b458d5f Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
d232112fa7 Update Changelog
8962fc95bb Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b387 Update overflow check
5757318782 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e4cb Add secp256k1_fe_add_int function
5660c13755 prevent optimization in algorithms
09b1d466db Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc78a6 doc: Describe Jacobi calculation in safegcd_implementation.md
6be01036c8 Add secp256k1_fe_is_square_var function
1de2a01c2b Native jacobi symbol algorithm
04c6c1b181 Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c7af Make secp256k1_i128_check_pow2 support -(2^n)
cbd2555934 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa5175 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
e4330341bd ci: Shutdown wineserver whenever CI script exits
9a5a611a21 build: Suppress stupid MSVC linker warning
739c53b19a examples: Extend sig examples by call that uses static context
914276e4d2 build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c1744 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc1de build: Add -Wreserved-identifier supported by clang
8ebe5c5205 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5c2c Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721ccc Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e3148d ci: Do not set git's `user.{email,name}` config options
e1817a6f54 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff200588 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d18669d Drop no longer used Autoheader macros
c2415866c7 ci: Don't fetch git history
0ecf318851 ci: Use remote pull/merge ref instead of local git merge
2b77240b3b Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6bebaee3 scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7f2d ci: add test job with -DVERIFY
620ba3d74b benchmarks: fix bench_scalar_split
5fbff5d348 Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d849 Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b140 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954f11 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c0a9 Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f94c Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc9ee contexts: Forbid randomizing secp256k1_context_static
4b6df5e33e contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf5fb Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229e03 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738d5b Ensure safety of ctz_debruijn implementation.
a01a7d86dc Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfaf3d Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a327092 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf89e2 Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785b26 Introduce SECP256K1_B macro for curve b coefficient
4934aa7995 Switch to exhaustive groups with small B coefficient
d4a6b58df7 Add `noverify_tests` to `.gitignore`
88e80722d2 Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec112 Rename CTIMETEST -> CTIMETESTS
74b026f05d Add runtime checking for DECLASSIFY flag
5e2e6fcfc0 Run ctime test in Linux MSan CI job
18974061a3 Make ctime tests building configurable
5048be17e9 Rename valgrind_ctime_test -> ctime_tests
6eed6c18de Update error messages to suggest msan as well
8e11f89a68 Add support for msan integration to checkmem.h
8dc64079eb Add compile-time error to valgrind_ctime_test
0db05a770e Abstract interactions with valgrind behind new checkmem.h
4f1a54e41d Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4f40 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48f50 refactor: Rename STTC to STATIC_CTX in tests
3385a2648d refactor: Rename global variables to uppercase in tests
e03ef86559 Make all non-API functions (except main) static
cbe41ac138 Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
203760023c tests: Add noverify_tests which is like tests but without VERIFY
e862c4af0c Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb3000417 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e3d7 refactor: Separate run_context_tests into static vs proper contexts
a4a09379b1 tests: Clean up and improve run_context_tests() further
fc90bb5695 refactor: Tidy up main()
f32a36f620 tests: Don't use global context for context tests
ce4f936c4f tests: Tidy run_context_tests() by extracting functions
18e0db30cb tests: Don't recreate global context in scratch space test
b19806122e tests: Use global copy of secp256k1_context_static instead of clone
2a39ac162e Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca284e2 Drop `SECP_CONFIG_DEFINES` from examples
31ed5386e8 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b2ae Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a8c7 Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90f69 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f774 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889f17 Clarify that the ABI-incompatible versions are earlier
881fc33d0c Consistency in naming of modules
665ba77e79 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f5ba Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a74688201 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fdadeb ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d21bb Do not define unused `HAVE_VALGRIND` macro
ad8647f548 Drop no longer relevant files from `.gitignore`
b627ba7050 Remove dependency on `src/libsecp256k1-config.h`
9ecf8149a1 Reduce font size in changelog
2dc133a67f Add more changelog entries
ac233e181a Add links to diffs to changelog
cee8223ef6 Mention semantic versioning in changelog
9a8d65f07f Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc290f7 release cleanup: bump version after 0.2.0
b6b360efaf doc: improve message of cleanup commit
21ffe4b22a Merge bitcoin-core/secp256k1#1055: Prepare initial release
e025ccdf74 release: prepare for initial release 0.2.0
6d1784a2e2 build: add missing files to EXTRA_DIST
8c949f56da Merge bitcoin-core/secp256k1#1173: Don't use compute credits for now
13bf1b6b32 changelog: make order of change types match keepachangelog.com
b1f992a552 doc: improve release process
7e5b22684f Don't use compute credits for now
a49e0940ad docs: Fix typo
2551cdac90 tests: Fix code formatting
c635c1bfd5 Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f2357c refactor: Add helper function secp256k1_context_is_proper()
ad39e2dc41 build: change package version to 0.1.0-dev
5c789dcd73 Merge bitcoin-core/secp256k1#1168: Replace deprecated context flags with NONE in benchmarks and tests
d6dc0f4ae3 tests: Switch to NONE contexts in module tests
0c8a5caddd tests: Switch to NONE contexts in tests.c
86540e9e1f tests: add test for deprecated flags and rm them from run_context
caa0ad631e group: add gej_eq_var
37ba744f5b tests: Switch to NONE contexts in exhaustive and ctime tests
8d7a9a8eda benchmarks: Switch to NONE contexts
90618e9263 doc: move CHANGELOG from doc/ to root directory
e3f84777eb Merge bitcoin-core/secp256k1#1126: API cleanup with respect to contexts
4386a2306c examples: Switch to NONE contexts
7289b51d31 docs: Use doxygen style if and only if comment is user-facing
e7d0185c90 docs: Get rid of "initialized for signing" terminology
06126364ad docs: Tidy and improve docs about contexts and randomization
e02d6862bd selftest: Expose in public API
e383fbfa66 selftest: Rename internal function to make name available for API
d2c6d48de3 tests: Use new name of static context
53796d2b24 contexts: Rename static context
72fedf8a6c docs: Improve docs for static context
316ac7625a contexts: Deprecate all context flags except SECP256K1_CONTEXT_NONE
477f02c4de Merge bitcoin-core/secp256k1#1165: gitignore: Add *.sage.py files autogenerated by sage [skip ci]
092be61c5e gitignore: Add *.sage.py files autogenerated by sage
1a553ee8be docs: Change signature "validation" to "verification"
ee7341fbac docs: Never require a verification context
751c4354d5 Merge bitcoin-core/secp256k1#1152: Update macOS image for CI
2286f80902 Merge bitcoin-core/secp256k1#993: Enable non-experimental modules by default
d216475205 test secp256k1_i128_to_i64
4bc429019d Add a secp256k1_i128_to_u64 function.
e40fd277b7 Merge bitcoin-core/secp256k1#1156: Followups to int128_struct arithmetic
99bd335599 Make int128 overflow test use secp256k1_[ui]128_mul
a8494b02bf Use compute credits for macOS jobs
3afce0af7c Avoid signed overflow in MSVC AMR64 secp256k1_mul128
c0ae48c995 Update macOS image for CI
9b5f589d30 Heuristically decide whether to use int128_struct
63ff064d2f int128: Add test override for testing __(u)mulh on MSVC X64
f2b7e88768 Add int128 randomized tests
6138d73be4 Merge bitcoin-core/secp256k1#1155: Add MSan CI jobs
ddf2b2910e Merge bitcoin-core/secp256k1#1000: Synthetic int128 type.
86e3b38a4a Merge bitcoin-core/secp256k1#1149: Remove usage of CHECK from non-test file
00a42b91b3 Add MSan CI job
44916ae915 Merge bitcoin-core/secp256k1#1147: ci: print env to allow reproducing the job outside of CI
c2ee9175e9 Merge bitcoin-core/secp256k1#1146: ci: prevent "-v/--version: not found" irrelevant error
e13fae487e Merge bitcoin-core/secp256k1#1150: ci: always cat test_env.log
a340d9500a ci: add int128_struct tests
dceaa1f579 int128: Tidy #includes of int128.h and int128_impl.h
2914bccbc0 Simulated int128 type.
6a965b6b98 Remove usage of CHECK from non-test file
5c9f1a5c37 ci: always cat all logs_snippets
49ae843592 ci: mostly prevent "-v/--version: not found" irrelevant error
4e54c03153 ci: print env to allow reproducing the job outside of CI
a43e982bca Merge bitcoin-core/secp256k1#1144: Cleanup `.gitignore` file
f5039cb66c Cleanup `.gitignore` file
798727ae1e Revert "Add test logs to gitignore"
41e8704b48 build: Enable some modules by default
694ce8fb2d Merge bitcoin-core/secp256k1#1131: readme: Misc improvements
88b00897e7 readme: Fix line break
78f5296da4 readme: Sell "no runtime dependencies"
ef48f088ad readme: Add IRC channel
9f8a13dc8e Merge bitcoin-core/secp256k1#1128: configure: Remove pkgconfig macros again (reintroduced by mismerge)
cabe085bb4 configure: Remove pkgconfig macros again (reintroduced by mismerge)
3efeb9da21 Merge bitcoin-core/secp256k1#1121: config: Set preprocessor defaults for ECMULT_* config values
6a873cc4a9 Merge bitcoin-core/secp256k1#1122: tests: Randomize the context with probability 15/16 instead of 1/4
17065f48ae tests: Randomize the context with probability 15/16 instead of 1/4
c27ae45144 config: Remove basic-config.h
da6514a04a config: Introduce DEBUG_CONFIG macro for debug output of config
63a3565e97 Merge bitcoin-core/secp256k1#1120: ecmult_gen: Skip RNG when creating blinding if no seed is available
d0cf55e13a config: Set preprocessor defaults for ECMULT_* config values
55f8bc99dc ecmult_gen: Improve comments about projective blinding
7a86955800 ecmult_gen: Simplify code (no observable change)
4cc0b1b669 ecmult_gen: Skip RNG when creating blinding if no seed is available
af65d30cc8 Merge bitcoin-core/secp256k1#1116: build: Fix #include "..." paths to get rid of further -I arguments
40a3473a9d build: Fix #include "..." paths to get rid of further -I arguments
43756da819 Merge bitcoin-core/secp256k1#1115: Fix sepc256k1 -> secp256k1 typo in group.h
069aba8125 Fix sepc256k1 -> secp256k1 typo in group.h
accadc94df Merge bitcoin-core/secp256k1#1114: `_scratch_destroy`: move `VERIFY_CHECK` after invalid scrach space check
cd47033335 Merge bitcoin-core/secp256k1#1084: ci: Add MSVC builds
1827c9bf2b scratch_destroy: move VERIFY_CHECK after invalid scrach space check
49e2acd927 configure: Improve rationale for WERROR_CFLAGS
8dc4b03341 ci: Add a C++ job that compiles the public headers without -fpermissive
51f296a46c ci: Run persistent wineserver to speed up wine
3fb3269c22 ci: Add 32-bit MinGW64 build
9efc2e5221 ci: Add MSVC builds
2be6ba0fed configure: Convince autotools to work with MSVC's archiver lib.exe
bd81f4140a schnorrsig bench: Suppress a stupid warning in MSVC
09f3d71c51 configure: Add a few CFLAGS for MSVC
3b4f3d0d46 build: Reject C++ compilers in the preprocessor
1cc0941414 configure: Don't abort if the compiler does not define __STDC__
cca8cbbac8 configure: Output message when checking for valgrind
1a6be5745f bench: Make benchmarks compile on MSVC
e089eecc1e group: Further simply gej_add_ge
ac71020ebe group: Save a normalize_to_zero in gej_add_ge

git-subtree-dir: src/secp256k1
git-subtree-split: bdf39000b9c6a0818e7149ccb500873d079e6e85
real-or-random added a commit that referenced this pull request Apr 10, 2023
0f86420 Add exhaustive tests for ecmult_const_xonly (Pieter Wuille)
4485926 Add x-only ecmult_const version for x=n/d (Pieter Wuille)

Pull request description:

  This implements a generalization of Peter Dettman's sqrt-less x-only random-base multiplication algorithm from #262, using the Jacobi symbol algorithm from #979. The generalization is to permit the X coordinate of the base point to be specified as a fraction $n/d$:

  To compute $x(q \cdot P)$, where $x(P) = n/d$:
  * Compute $g=n^3 + 7d^3$.
  * Let $P' = (ng, g^2, 1)$ (the Jacobian coordinates of $P$ mapped to the isomorphic curve $y^2 = x^3 + 7(dg)^3$).
  * Compute the Jacobian coordinates $(X',Y',Z') = q \cdot P'$ on the isomorphic curve.
  * Return $X'/(dgZ'^2)$, which is the affine x coordinate on the isomorphic curve $X/Z'^2$ mapped back to secp256k1.

  This ability to specify the X coordinate as a fraction is useful in the context of x-only [Elligator Swift](https://eprint.iacr.org/2022/759), which can decode to X coordinates on the curve without inversions this way.

ACKs for top commit:
  jonasnick:
    ACK 0f86420
  real-or-random:
    ACK 0f86420

Tree-SHA512: eeedb3045bfabcb4bcaf3a1738067c83a5ea9a79b150b8fd1c00dc3f68505d34c19654885a90e2292ae40ddf40a58dfb27197d98eebcf5d6d9e25897e07ae595
vmta added a commit to umkoin/umkoin that referenced this pull request Jun 4, 2023
60556c9f4 Merge bitcoin-core/secp256k1#1337: ci: Fix error D8037 in `cl.exe` (attempt 2)
db29bf220 ci: Remove quirk that runs dummy command after wineserver
c7db4942b ci: Fix error D8037 in `cl.exe`
7dae11586 Revert "ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe"
bf29f8d0a Merge bitcoin-core/secp256k1#1334: fix input range comment for `secp256k1_fe_add_int`
605e07e36 fix input range comment for `secp256k1_fe_add_int`
debf3e5c0 Merge bitcoin-core/secp256k1#1330: refactor: take use of `secp256k1_scalar_{zero,one}` constants
d75dc59b5 Merge bitcoin-core/secp256k1#1333: test: Warn if both `VERIFY` and `COVERAGE` are defined
ade5b3670 tests: add checks for scalar constants `secp256k1_scalar_{zero,one}`
e83801f5d test: Warn if both `VERIFY` and `COVERAGE` are defined
654246c63 refactor: take use of `secp256k1_scalar_{zero,one}` constants
908e02d59 Merge bitcoin-core/secp256k1#1328: build: Bump MSVC warning level up to W3
1549db0ca build: Level up MSVC warnings
20a5da5fb Merge bitcoin-core/secp256k1#1310: Refine release process
ad8460329 release process: clarify change log updates
6348bc7ee release process: fix process for maintenance release
79fa50b08 release process: mention targeted release schedule
165206789 release process: add sanity checks
09df0bfb2 Merge bitcoin-core/secp256k1#1327: ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe
27504d5c9 ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe
d373a7215 Merge bitcoin-core/secp256k1#1316: Do not invoke fe_is_zero on failed set_b32_limit
6433175ff Do not invoke fe_is_zero on failed set_b32_limit
5f7903c73 Merge bitcoin-core/secp256k1#1318: build: Enable -DVERIFY for precomputation binaries
e9e4526a4 Merge bitcoin-core/secp256k1#1317: Make fe_cmov take max of magnitudes
5768b5022 build: Enable -DVERIFY for precomputation binaries
31b4bbee1 Make fe_cmov take max of magnitudes
83186db34 Merge bitcoin-core/secp256k1#1314: release cleanup: bump version after 0.3.2
95448ef2f release cleanup: bump version after 0.3.2
acf5c55ae Merge bitcoin-core/secp256k1#1312: release: Prepare for 0.3.2
d490ca204 release: Prepare for 0.3.2
3e3d125b8 Merge bitcoin-core/secp256k1#1309: changelog: Catch up
e8295d07a Merge bitcoin-core/secp256k1#1311: Revert "Remove unused scratch space from API"
697e1ccf4 changelog: Catch up
3ad1027a4 Revert "Remove unused scratch space from API"
76b43f344 changelog: Add entry for #1303
7d4f86d24 Merge bitcoin-core/secp256k1#1307: Mark more assembly outputs as early clobber
b54a0672e Merge bitcoin-core/secp256k1#1304: build: Rename arm to arm32 and check if it's really supported
c6bb29b30 build: Rename `64bit` to `x86_64`
8c9ae37a5 Add release note
03246457a autotools: Add `SECP_ARM32_ASM_CHECK` macro
ed4ba238e cmake: Add `check_arm32_assembly` function
350b4bd6e Mark stack variables as early clobber for technical correctness
0c729ba70 Bugfix: mark outputs as early clobber in scalar x86_64 asm
3353d3c75 Merge bitcoin-core/secp256k1#1207: Split fe_set_b32 into reducing and normalizing variants
5b3260229 Split fe_set_b32 into reducing and normalizing variants
006ddc1f4 Merge bitcoin-core/secp256k1#1306: build: Make tests work with external default callbacks
1907f0f16 build: Make tests work with external default callbacks
fb3a80636 Merge bitcoin-core/secp256k1#1133: schnorrsig: Add test vectors for variable-length messages
cd54ac7c1 schnorrsig: Improve docs of schnorrsig_sign_custom
28687b031 schnorrsig: Add BIP340 varlen test vectors
97a98bed1 schnorrsig: Refactor test vector code to allow varlen messages
ab5a91712 Merge bitcoin-core/secp256k1#1303: ct: Use more volatile
9eb6934f6 Merge bitcoin-core/secp256k1#1305: Remove unused scratch space from API
073d98a07 Merge bitcoin-core/secp256k1#1292: refactor: Make 64-bit shift explicit
17fa21733 ct: Be cautious and use volatile trick in more "conditional" paths
5fb336f9c ct: Use volatile trick in scalar_cond_negate
712e7f872 Remove unused scratch space from API
54d34b6c2 Merge bitcoin-core/secp256k1#1300: Avoid normalize conditional on VERIFY
c63ec88eb Merge bitcoin-core/secp256k1#1066: Abstract out and merge all the magnitude/normalized logic
7fc642fa2 Simplify secp256k1_fe_{impl_,}verify
4e176ad5b Abstract out verify logic for fe_is_square_var
4371f9834 Abstract out verify logic for fe_add_int
89e324c6b Abstract out verify logic for fe_half
283cd80ab Abstract out verify logic for fe_get_bounds
d5aa2f035 Abstract out verify logic for fe_inv{,_var}
316764607 Abstract out verify logic for fe_from_storage
76d31e504 Abstract out verify logic for fe_to_storage
1e6894bdd Abstract out verify logic for fe_cmov
be82bd8e0 Improve comments/checks for fe_sqrt
6ab35082e Abstract out verify logic for fe_sqr
4c25f6efb Abstract out verify logic for fe_mul
e179e651c Abstract out verify logic for fe_add
7e7ad7ff5 Abstract out verify logic for fe_mul_int
65d82a344 Abstract out verify logic for fe_negate
144670893 Abstract out verify logic for fe_get_b32
f7a7666ae Abstract out verify logic for fe_set_b32
ce4d2093e Abstract out verify logic for fe_cmp_var
7d7d43c6d Improve comments/check for fe_equal{,_var}
c5e788d67 Abstract out verify logic for fe_is_odd
d3f3fe861 Abstract out verify logic for fe_is_zero
c701d9a47 Abstract out verify logic for fe_clear
19a2bfeee Abstract out verify logic for fe_set_int
864f9db49 Abstract out verify logic for fe_normalizes_to_zero{,_var}
6c3137112 Abstract out verify logic for fe_normalize_var
e28b51f52 Abstract out verify logic for fe_normalize_weak
b6b6f9cb9 Abstract out verify logic for fe_normalize
7fa519555 Bugfix: correct SECP256K1_FE_CONST mag/norm fields
e5cf4bf3f build: Rename `arm` to `arm32`
b29566c51 Merge magnitude/normalized fields, move/improve comments
97c63b903 Avoid normalize conditional on VERIFY
341cc1972 Merge bitcoin-core/secp256k1#1299: Infinity handling: ecmult_const(infinity) works, and group verification
bbc834467 Avoid secp256k1_ge_set_gej_zinv with uninitialized z
0a2e0b2ae Make secp256k1_{fe,ge,gej}_verify work as no-op if non-VERIFY
f20266722 Add invariant checking to group elements
a18821d5b Always initialize output coordinates in secp256k1_ge_set_gej
3086cb90a Expose secp256k1_fe_verify to other modules
a0e696fd4 Make secp256k1_ecmult_const handle infinity
24c768ae0 Merge bitcoin-core/secp256k1#1301: Avoid using bench_verify_data as bench_sign_data; merge them
2e65f1fdb Avoid using bench_verify_data as bench_sign_data; merge them
1cf15ebd9 Merge bitcoin-core/secp256k1#1296: docs: complete interface description for `secp256k1_schnorrsig_sign_custom`
149c41cee docs: complete interface description for `secp256k1_schnorrsig_sign_custom`
f30c74866 Merge bitcoin-core/secp256k1#1270: cmake: Fix library ABI versioning
d1e48e547 refactor: Make 64-bit shift explicit
b2e29e43d ci: Treat all compiler warnings as errors in "Windows (VS 2022)" task
3c8183885 Merge bitcoin-core/secp256k1#1289: cmake: Use full signature of `add_test()` command
755629bc0 cmake: Use full signature of `add_test()` command
bef448f9a cmake: Fix library ABI versioning
4b0f711d4 Merge bitcoin-core/secp256k1#1277: autotools: Clean up after adding Wycheproof
222ecaf66 Merge bitcoin-core/secp256k1#1284: cmake: Some improvements using `PROJECT_IS_TOP_LEVEL` variable
71f746c05 cmake: Include `include` directory for subtree builds
024a40948 Merge bitcoin-core/secp256k1#1240: cmake: Improve and document compiler flag checks
a8d059f76 cmake, doc: Document compiler flags
6ece1507c cmake, refactor: Rename `try_add_compile_option` to `try_append_cflags`
19516ed3e cmake: Use `add_compile_options()` in `try_add_compile_option()`
4b84f4bf0 Merge bitcoin-core/secp256k1#1239: cmake: Bugfix and other improvements after bumping CMake up to 3.13
596b336ff Merge bitcoin-core/secp256k1#1234: cmake: Add dev-mode
6b7e5b717 Merge bitcoin-core/secp256k1#1275: build: Fix C4005 "macro redefinition" MSVC warnings in examples
1c8953671 Merge bitcoin-core/secp256k1#1286: tests: remove extra semicolon in macro
c4062d6b5 debug: move helper for printing buffers into util.h
7e977b3c5 autotools: Take VPATH builds into account when generating testvectors
2418d3260 autotools: Create src/wycheproof dir before creating file in it
8764034ed autotools: Make all "pregenerated" targets .PHONY
e1b9ce881 autotools: Use same conventions for all pregenerated files
3858bad2c tests: remove extra semicolon in macro
1f33bb2b1 Merge bitcoin-core/secp256k1#1205: field: Improve docs +tests of secp256k1_fe_set_b32
162da73e9 tests: Add debug helper for printing buffers
e9fd3dff7 field: Improve docs and tests of secp256k1_fe_set_b32
f6bef03c0 Merge bitcoin-core/secp256k1#1283: Get rid of secp256k1_fe_const_b
5431b9dec cmake: Make `SECP256K1_INSTALL` default depend on `PROJECT_IS_TOP_LEVEL`
5ec1333d4 Merge bitcoin-core/secp256k1#1285: bench: Make sys/time.h a system include
68b16a166 bench: Make sys/time.h a system include
162608cc9 cmake: Emulate `PROJECT_IS_TOP_LEVEL` for CMake<3.21
69e1ec033 Get rid of secp256k1_fe_const_b
ce5ba9e24 gitignore: Add CMakeUserPresets.json
0a446a312 cmake: Add dev-mode CMake preset
a6f4bcf6e Merge bitcoin-core/secp256k1#1231: Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h`
a273d74b2 cmake: Improve version comparison
6a58b483e cmake: Use `if(... IN_LIST ...)` command
2445808c0 cmake: Use dedicated `GENERATOR_IS_MULTI_CONFIG` property
9f8703ef1 cmake: Use dedicated `CMAKE_HOST_APPLE` variable
8c2017035 cmake: Use recommended `add_compile_definitions` command
04d4cc071 cmake: Add `DESCRIPTION` and `HOMEPAGE_URL` options to `project` command
8a8b6536e cmake: Use `SameMinorVersion` compatibility mode
5b0444a3b Merge bitcoin-core/secp256k1#1263: cmake: Make installation optional
47ac3d63c cmake: Make installation optional
2e035af25 Merge bitcoin-core/secp256k1#1273: build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS`
5be353d65 Merge bitcoin-core/secp256k1#1279: tests: lint wycheproof's python script
08f4b1632 autotools: Move code around to tidy Makefile
04bf3f677 Merge bitcoin-core/secp256k1#1230: Build: allow static or shared but not both
9ce9984f3 Merge bitcoin-core/secp256k1#1265: Remove bits argument from secp256k1_wnaf_const{_xonly}
566faa17d Merge bitcoin-core/secp256k1#1267: doc: clarify process for patch releases
ef49a11d2 build: allow static or shared but not both
35ada3b95 tests: lint wycheproof's python script
4258c54f4 Merge bitcoin-core/secp256k1#1276: autotools: Don't regenerate Wycheproof header automatically
529b54d92 autotools: Move Wycheproof header from EXTRA_DIST to noinst_HEADERS
06c67dea9 autotools: Don't regenerate Wycheproof header automatically
dc0657c76 build: Fix C4005 "macro redefinition" MSVC warnings in examples
1ecb94ebe build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS`
3bab71cf0 Merge bitcoin-core/secp256k1#1268: release cleanup: bump version after 0.3.1
656c6ea8d release cleanup: bump version after 0.3.1
346a053d4 Merge bitcoin-core/secp256k1#1269: changelog: Fix link
6a37b2a5e changelog: Fix link
ec98fcedd Merge bitcoin-core/secp256k1#1266: release: Prepare for 0.3.1
1b6fb5593 doc: clarify process for patch releases
898e1c676 release: Prepare for 0.3.1
1d9a13fc2 changelog: Remove inconsistent newlines
0e091669a changelog: Catch up in preparation of 0.3.1
7b7503dac Merge bitcoin-core/secp256k1#1245: tests: Add Wycheproof ECDSA vectors
a575339c0 Remove bits argument from secp256k1_wnaf_const (always 256)
145078c41 Merge bitcoin-core/secp256k1#1118: Add x-only ecmult_const version with x specified as n/d
e5de45460 tests: Add Wycheproof ECDSA vectors
0f8642079 Add exhaustive tests for ecmult_const_xonly
4485926ac Add x-only ecmult_const version for x=n/d
a0f4644f7 Merge bitcoin-core/secp256k1#1252: Make position of * in pointer declarations in include/ consistent
4e682626a Merge bitcoin-core/secp256k1#1226: Add CMake instructions to release process
2d51a454f Merge bitcoin-core/secp256k1#1257: ct: Use volatile "trick" in all fe/scalar cmov implementations
4a496a36f ct: Use volatile "trick" in all fe/scalar cmov implementations
3d1f430f9 Make position of * in pointer declarations in include/ consistent
2bca0a5cb Merge bitcoin-core/secp256k1#1241: build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
afd8b23b2 Merge bitcoin-core/secp256k1#1244: Suppress `-Wunused-parameter` when building for coverage analysis
1d8f36751 Merge bitcoin-core/secp256k1#1250: No need to subtract 1 before doing a right shift
3e43041be No need to subtract 1 before doing a right shift
3addb4c1e build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
0c07c8283 Add CMake instructions to release process
464a9115b Merge bitcoin-core/secp256k1#1242: Set ARM ASM symbol visibility to `hidden`
f16a709fd Merge bitcoin-core/secp256k1#1247: Apply Checks only in VERIFY mode.
70be3cade Merge bitcoin-core/secp256k1#1246: Typo
4ebd82852 Apply Checks only in VERIFY mode.
d1e7ca192 Typo
36b0adf1b build: remove warning until it's reproducible
5bb03c291 Replace `SECP256K1_ECMULT_TABLE_VERIFY` macro by a function
9c8c4f443 Merge bitcoin-core/secp256k1#1238: build: bump CMake minimum requirement to 3.13
0cf2fb91e Merge bitcoin-core/secp256k1#1243: build: Ensure no optimization when building for coverage analysis
fd2a40864 Set ARM ASM symbol visibility to `hidden`
4429a8c21 Suppress `-Wunused-parameter` when building for coverage analysis
8e79c7ed1 build: Ensure no optimization when building for coverage analysis
96dd06251 build: bump CMake minimum requirement to 3.13
427bc3cdc Merge bitcoin-core/secp256k1#1236: Update comment for secp256k1_modinv32_inv256
647f0a5cb Update comment for secp256k1_modinv32_inv256
8e142ca41 Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h`
77445898a Remove `SECP256K1_INLINE` usage from examples
565820945 Merge bitcoin-core/secp256k1#1228: release cleanup: bump version after 0.3.0
bdf39000b Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0
28e63f7ea release cleanup: bump version after 0.3.0
b40adf236 release: prepare for 0.3.0
90b513aad Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1"
8be82d436 cmake: Rename project to "libsecp256k1"
ef4f8bd02 Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions
756b61d45 readme: Use correct build type in CMake/Windows build instructions
3295aa149 Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake
92098d84c changelog: Add entry for CMake
df323b5c1 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system
e1eb33724 ci: Add "x86_64: Windows (VS 2022)" task
10602b003 cmake: Export config files
5468d7096 build: Add CMake-based build system
6048e6c03 Merge bitcoin-core/secp256k1#1222: Remove redundant checks.
eb8749fcd Merge bitcoin-core/secp256k1#1221: Update Changelog
5d8f53e31 Remove redudent checks.
9d1b458d5 Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
d232112fa Update Changelog
8962fc95b Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b38 Update overflow check
575731878 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e4c Add secp256k1_fe_add_int function
5660c1375 prevent optimization in algorithms
09b1d466d Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc78a doc: Describe Jacobi calculation in safegcd_implementation.md
6be01036c Add secp256k1_fe_is_square_var function
1de2a01c2 Native jacobi symbol algorithm
04c6c1b18 Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c7a Make secp256k1_i128_check_pow2 support -(2^n)
cbd255593 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa517 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
e4330341b ci: Shutdown wineserver whenever CI script exits
9a5a611a2 build: Suppress stupid MSVC linker warning
739c53b19 examples: Extend sig examples by call that uses static context
914276e4d build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c174 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc1d build: Add -Wreserved-identifier supported by clang
ca92a35d0 field: Simplify code in secp256k1_fe_set_b32
d93f62e36 field: Verify field element even after secp256k1_fe_set_b32 fails
8ebe5c520 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5c2 Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721cc Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e3148 ci: Do not set git's `user.{email,name}` config options
e1817a6f5 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff20058 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d18669 Drop no longer used Autoheader macros
c2415866c ci: Don't fetch git history
0ecf31885 ci: Use remote pull/merge ref instead of local git merge
2b77240b3 Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6bebaee scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7f2 ci: add test job with -DVERIFY
620ba3d74 benchmarks: fix bench_scalar_split
5fbff5d34 Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d84 Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b14 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954f1 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c0a Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f94 Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc9e contexts: Forbid randomizing secp256k1_context_static
4b6df5e33 contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf5f Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229e0 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738d5 Ensure safety of ctz_debruijn implementation.
a01a7d86d Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfaf3 Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a32709 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf89e Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785b2 Introduce SECP256K1_B macro for curve b coefficient
4934aa799 Switch to exhaustive groups with small B coefficient
d4a6b58df Add `noverify_tests` to `.gitignore`
88e80722d Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec11 Rename CTIMETEST -> CTIMETESTS
74b026f05 Add runtime checking for DECLASSIFY flag
5e2e6fcfc Run ctime test in Linux MSan CI job
18974061a Make ctime tests building configurable
5048be17e Rename valgrind_ctime_test -> ctime_tests
6eed6c18d Update error messages to suggest msan as well
8e11f89a6 Add support for msan integration to checkmem.h
8dc64079e Add compile-time error to valgrind_ctime_test
0db05a770 Abstract interactions with valgrind behind new checkmem.h
4f1a54e41 Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4f4 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48f5 refactor: Rename STTC to STATIC_CTX in tests
3385a2648 refactor: Rename global variables to uppercase in tests
e03ef8655 Make all non-API functions (except main) static
cbe41ac13 Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
203760023 tests: Add noverify_tests which is like tests but without VERIFY
e862c4af0 Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb300041 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e3d refactor: Separate run_context_tests into static vs proper contexts
a4a09379b tests: Clean up and improve run_context_tests() further
fc90bb569 refactor: Tidy up main()
f32a36f62 tests: Don't use global context for context tests
ce4f936c4 tests: Tidy run_context_tests() by extracting functions
18e0db30c tests: Don't recreate global context in scratch space test
b19806122 tests: Use global copy of secp256k1_context_static instead of clone
2a39ac162 Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca284e Drop `SECP_CONFIG_DEFINES` from examples
31ed5386e Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b2a Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a8c Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90f6 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f77 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889f1 Clarify that the ABI-incompatible versions are earlier
881fc33d0 Consistency in naming of modules
665ba77e7 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f5b Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a7468820 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fdade ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d21b Do not define unused `HAVE_VALGRIND` macro
ad8647f54 Drop no longer relevant files from `.gitignore`
b627ba705 Remove dependency on `src/libsecp256k1-config.h`
9ecf8149a Reduce font size in changelog
2dc133a67 Add more changelog entries
ac233e181 Add links to diffs to changelog
cee8223ef Mention semantic versioning in changelog
9a8d65f07 Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc290f release cleanup: bump version after 0.2.0
b6b360efa doc: improve message of cleanup commit
21ffe4b22 Merge bitcoin-core/secp256k1#1055: Prepare initial release
e025ccdf7 release: prepare for initial release 0.2.0
6d1784a2e build: add missing files to EXTRA_DIST
8c949f56d Merge bitcoin-core/secp256k1#1173: Don't use compute credits for now
13bf1b6b3 changelog: make order of change types match keepachangelog.com
b1f992a55 doc: improve release process
7e5b22684 Don't use compute credits for now
a49e0940a docs: Fix typo
2551cdac9 tests: Fix code formatting
c635c1bfd Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f2357 refactor: Add helper function secp256k1_context_is_proper()
ad39e2dc4 build: change package version to 0.1.0-dev
5c789dcd7 Merge bitcoin-core/secp256k1#1168: Replace deprecated context flags with NONE in benchmarks and tests
d6dc0f4ae tests: Switch to NONE contexts in module tests
0c8a5cadd tests: Switch to NONE contexts in tests.c
86540e9e1 tests: add test for deprecated flags and rm them from run_context
caa0ad631 group: add gej_eq_var
37ba744f5 tests: Switch to NONE contexts in exhaustive and ctime tests
8d7a9a8ed benchmarks: Switch to NONE contexts
90618e926 doc: move CHANGELOG from doc/ to root directory
e3f84777e Merge bitcoin-core/secp256k1#1126: API cleanup with respect to contexts
4386a2306 examples: Switch to NONE contexts
7289b51d3 docs: Use doxygen style if and only if comment is user-facing
e7d0185c9 docs: Get rid of "initialized for signing" terminology
06126364a docs: Tidy and improve docs about contexts and randomization
e02d6862b selftest: Expose in public API
e383fbfa6 selftest: Rename internal function to make name available for API
d2c6d48de tests: Use new name of static context
53796d2b2 contexts: Rename static context
72fedf8a6 docs: Improve docs for static context
316ac7625 contexts: Deprecate all context flags except SECP256K1_CONTEXT_NONE
477f02c4d Merge bitcoin-core/secp256k1#1165: gitignore: Add *.sage.py files autogenerated by sage [skip ci]
092be61c5 gitignore: Add *.sage.py files autogenerated by sage
1a553ee8b docs: Change signature "validation" to "verification"
ee7341fba docs: Never require a verification context
751c4354d Merge bitcoin-core/secp256k1#1152: Update macOS image for CI
2286f8090 Merge bitcoin-core/secp256k1#993: Enable non-experimental modules by default
d21647520 test secp256k1_i128_to_i64
4bc429019 Add a secp256k1_i128_to_u64 function.
e40fd277b Merge bitcoin-core/secp256k1#1156: Followups to int128_struct arithmetic
99bd33559 Make int128 overflow test use secp256k1_[ui]128_mul
a8494b02b Use compute credits for macOS jobs
3afce0af7 Avoid signed overflow in MSVC AMR64 secp256k1_mul128
c0ae48c99 Update macOS image for CI
9b5f589d3 Heuristically decide whether to use int128_struct
63ff064d2 int128: Add test override for testing __(u)mulh on MSVC X64
f2b7e8876 Add int128 randomized tests
6138d73be Merge bitcoin-core/secp256k1#1155: Add MSan CI jobs
ddf2b2910 Merge bitcoin-core/secp256k1#1000: Synthetic int128 type.
86e3b38a4 Merge bitcoin-core/secp256k1#1149: Remove usage of CHECK from non-test file
00a42b91b Add MSan CI job
44916ae91 Merge bitcoin-core/secp256k1#1147: ci: print env to allow reproducing the job outside of CI
c2ee9175e Merge bitcoin-core/secp256k1#1146: ci: prevent "-v/--version: not found" irrelevant error
e13fae487 Merge bitcoin-core/secp256k1#1150: ci: always cat test_env.log
a340d9500 ci: add int128_struct tests
dceaa1f57 int128: Tidy #includes of int128.h and int128_impl.h
2914bccbc Simulated int128 type.
6a965b6b9 Remove usage of CHECK from non-test file
5c9f1a5c3 ci: always cat all logs_snippets
49ae84359 ci: mostly prevent "-v/--version: not found" irrelevant error
4e54c0315 ci: print env to allow reproducing the job outside of CI
a43e982bc Merge bitcoin-core/secp256k1#1144: Cleanup `.gitignore` file
f5039cb66 Cleanup `.gitignore` file
798727ae1 Revert "Add test logs to gitignore"
41e8704b4 build: Enable some modules by default
694ce8fb2 Merge bitcoin-core/secp256k1#1131: readme: Misc improvements
88b00897e readme: Fix line break
78f5296da readme: Sell "no runtime dependencies"
ef48f088a readme: Add IRC channel
9f8a13dc8 Merge bitcoin-core/secp256k1#1128: configure: Remove pkgconfig macros again (reintroduced by mismerge)
cabe085bb configure: Remove pkgconfig macros again (reintroduced by mismerge)
3efeb9da2 Merge bitcoin-core/secp256k1#1121: config: Set preprocessor defaults for ECMULT_* config values
6a873cc4a Merge bitcoin-core/secp256k1#1122: tests: Randomize the context with probability 15/16 instead of 1/4
17065f48a tests: Randomize the context with probability 15/16 instead of 1/4
c27ae4514 config: Remove basic-config.h
da6514a04 config: Introduce DEBUG_CONFIG macro for debug output of config
63a3565e9 Merge bitcoin-core/secp256k1#1120: ecmult_gen: Skip RNG when creating blinding if no seed is available
d0cf55e13 config: Set preprocessor defaults for ECMULT_* config values
55f8bc99d ecmult_gen: Improve comments about projective blinding
7a8695580 ecmult_gen: Simplify code (no observable change)
4cc0b1b66 ecmult_gen: Skip RNG when creating blinding if no seed is available
af65d30cc Merge bitcoin-core/secp256k1#1116: build: Fix #include "..." paths to get rid of further -I arguments
40a3473a9 build: Fix #include "..." paths to get rid of further -I arguments
43756da81 Merge bitcoin-core/secp256k1#1115: Fix sepc256k1 -> secp256k1 typo in group.h
069aba812 Fix sepc256k1 -> secp256k1 typo in group.h
accadc94d Merge bitcoin-core/secp256k1#1114: `_scratch_destroy`: move `VERIFY_CHECK` after invalid scrach space check
cd4703333 Merge bitcoin-core/secp256k1#1084: ci: Add MSVC builds
1827c9bf2 scratch_destroy: move VERIFY_CHECK after invalid scrach space check
49e2acd92 configure: Improve rationale for WERROR_CFLAGS
8dc4b0334 ci: Add a C++ job that compiles the public headers without -fpermissive
51f296a46 ci: Run persistent wineserver to speed up wine
3fb3269c2 ci: Add 32-bit MinGW64 build
9efc2e522 ci: Add MSVC builds
2be6ba0fe configure: Convince autotools to work with MSVC's archiver lib.exe
bd81f4140 schnorrsig bench: Suppress a stupid warning in MSVC
44c2452fd Merge bitcoin-core/secp256k1#1105: Don't export symbols in static libraries
6f6cab998 abi: Don't export symbols in static Windows libraries
485f608fa Merge bitcoin-core/secp256k1#1104: Fix the false positive of `SECP_64BIT_ASM_CHECK`
8b013fce5 Merge bitcoin-core/secp256k1#1056: Save negations in var-time group addition
7efc9835a Fix the false positive of `SECP_64BIT_ASM_CHECK`
8746600ee Merge bitcoin-core/secp256k1#1093: hash: Make code agnostic of endianness
2f984ffc4 Save negations in var-time group addition
37d36927d tests: Add tests for _read_be32 and _write_be32
912b7ccc4 Merge bitcoin-core/secp256k1#1094: doc: Clarify configure flags for optional modules
55512d30b doc: clean up module help text in configure.ac
d9d94a996 doc: mention optional modules in README
616b43dd3 util: Remove endianness detection
8d89b9e6e hash: Make code agnostic of endianness
d0ad5814a Merge bitcoin-core/secp256k1#995: build: stop treating schnorrsig, extrakeys modules as experimental
1ac7e31c5 Merge bitcoin-core/secp256k1#1089: Schnorrsig API improvements
587239dbe Merge bitcoin-core/secp256k1#731: Change SHA256 byte counter from size_t to uint64_t
f8d917435 Add SHA256 bit counter tests
7f09d0f31 README: mention that ARM assembly is experimental
b8f8b99f0 docs: Fix return value for functions that don't have invalid inputs
f813bb0df schnorrsig: Adapt example to new API
99e6568fc schnorrsig: Rename schnorrsig_sign to schnorsig_sign32 and deprecate
fc94a2da4 Use SECP256K1_DEPRECATED for existing deprecated API functions
3db056060 Add SECP256K1_DEPRECATED attribute for marking API parts as deprecated
09f3d71c5 configure: Add a few CFLAGS for MSVC
3b4f3d0d4 build: Reject C++ compilers in the preprocessor
1cc094141 configure: Don't abort if the compiler does not define __STDC__
80cf4eea5 build: stop treating schnorrsig, extrakeys modules as experimental
e0508ee9d Merge bitcoin-core/secp256k1#1090: configure: Remove redundant pkg-config code
21b2ebaf7 configure: Remove redundant pkg-config code
cca8cbbac configure: Output message when checking for valgrind
1a6be5745 bench: Make benchmarks compile on MSVC
0e5cbd01b Merge bitcoin-core/secp256k1#1088: configure: Use modern way to set AR
0d253d52e configure: Use modern way to set AR
9b514ce1d Add test vector for very long SHA256 messages
8e3dde113 Simplify struct initializer for SHA256 padding
eb28464a8 Change SHA256 byte counter from size_t to uint64_t
ac83be33d Merge bitcoin-core/secp256k1#1079: configure: Add hidden --enable-dev-mode to enable all the stuff
e089eecc1 group: Further simply gej_add_ge
e0838d663 configure: Add hidden --enable-dev-mode to enable all the stuff
fabd579df configure: Remove redundant code that sets _enable variables
0d4226c05 configure: Use canonical variable prefix _enable consistently
64b34979e Merge bitcoin-core/secp256k1#748: Add usage examples
7c9502cec Add a copy of the CC0 license to the examples
42e03432e Add usage examples to the readme
517644eab Optionally compile the examples in autotools, compile+run in travis
422a7cc86 Add a ecdh shared secret example
b0cfbcc14 Add a Schnorr signing and verifying example
fee7d4bf9 Add an ECDSA signing and verifying example
ac71020eb group: Save a normalize_to_zero in gej_add_ge
1253a2775 Merge bitcoin-core/secp256k1#1033: Add _fe_half and use in _gej_add_ge and _gej_double
3ef94aa5b Merge bitcoin-core/secp256k1#1026: ecdh: Add test computing shared_secret=basepoint with random inputs
3531a43b5 ecdh: Make generator_basepoint test depend on global iteration count
c881dd49b ecdh: Add test computing shared_secret=basepoint with random inputs
077528317 Merge bitcoin-core/secp256k1#1074: ci: Retry brew update a few times to avoid random failures
e51ad3b73 ci: Retry `brew update` a few times to avoid random failures
b1cb969e8 ci: Revert "Attempt to make macOS builds more reliable"
5dcc6f8db Merge bitcoin-core/secp256k1#1069: build: Replace use of deprecated autoconf macro AC_PROG_CC_C89
59547943d Merge bitcoin-core/secp256k1#1072: ci: Attempt to make macOS builds more reliable
85b00a1c6 Merge bitcoin-core/secp256k1#1068: sage: Fix incompatibility with sage 9.4
ebb1beea7 sage: Ensure that constraints are always fastfracs
d8d54859e ci: Run sage prover on CI
77cfa98db sage: Normalize sign of polynomial factors in prover
eae75869c sage: Exit with non-zero status in case of failures
d9396a56d ci: Attempt to make macOS builds more reliable
e0db3f8a2 build: Replace use of deprecated autoconf macro AC_PROG_CC_C89
e848c3799 Update sage files for new formulae
d64bb5d4f Add fe_half tests for worst-case inputs
b54d843ea sage: Fix printing of errors
4eb8b932f Further improve doubling formula using fe_half
557b31fac Doubling formula using fe_half
2cbb4b1a4 Run more iterations of run_field_misc
9cc5c257e Add test for secp256k1_fe_half
925f78d55 Add _fe_half and use in _gej_add_ge
e108d0039 sage: Fix incompatibility with sage 9.4
d8a246324 Merge bitcoin-core/secp256k1#899: Reduce stratch space needed by ecmult_strauss_wnaf.
0a40a4861 Merge bitcoin-core/secp256k1#1049: Faster fixed-input ecmult tests
070e77221 Faster fixed-input ecmult tests
c8aa516b5 Merge bitcoin-core/secp256k1#1064: Modulo-reduce msg32 inside RFC6979 nonce fn to match spec. Fixes #1063
b797a500e Create a SECP256K1_ECMULT_TABLE_VERIFY macro.
a731200cc Replace ECMULT_TABLE_GET_GE_STORAGE macro with a function.
fe34d9f34 Eliminate input_pos state field from ecmult_strauss_wnaf.
0397d00ba Eliminate na_1 and na_lam state fields from ecmult_strauss_wnaf.
7ba3ffcca Remove the unused pre_a_lam allocations.
b3b57ad6e Eliminate the pre_a_lam array from ecmult_strauss_wnaf.
ae7ba0f92 Remove the unused prej allocations.
e5c18892d Eliminate the prej array from ecmult_strauss_wnaf.
c9da1baad Move secp256k1_fe_one to field.h
45f37b650 Modulo-reduce msg32 inside RFC6979 nonce fn to match spec. Fixes #1063.
a1102b121 Merge bitcoin-core/secp256k1#1029: Simpler and faster ecdh skew fixup
e82144edf Fixup skew before global Z fixup
40b624c90 Add tests for _gej_cmov
8c13a9bfe ECDH skews by 0 or 1
151509943 Simpler and faster ecdh skew fixup
39a36db94 Merge bitcoin-core/secp256k1#1054: tests: Fix test whose result is implementation-defined
a310e79ee Merge bitcoin-core/secp256k1#1052: Use xoshiro256++ instead of RFC6979 for tests
423b6d19d Merge bitcoin-core/secp256k1#964: Add release-process.md
9281c9f4e Merge bitcoin-core/secp256k1#1053: ecmult: move `_ecmult_odd_multiples_table_globalz_windowa`
77a19750b Use xoshiro256++ PRNG instead of RFC6979 in tests
5f2efe684 secp256k1_testrand_int(2**N) -> secp256k1_testrand_bits(N)
05e049b73 ecmult: move `_ecmult_odd_multiples_table_globalz_windowa`
3d7cbafb5 tests: Fix test whose result is implementation-defined
3ed0d02bf doc: add CHANGELOG template
6f42dc16c doc: add release_process.md
0bd3e4243 build: set library version to 0.0.0 explicitly
b4b02fd8c build: change libsecp version from 0.1 to 0.1.0-pre
09971a3ff Merge bitcoin-core/secp256k1#1047: ci: Various improvements
0b83b203e Merge bitcoin-core/secp256k1#1030: doc: Fix upper bounds + cleanup in field_5x52_impl.h comment
1287786c7 doc: Add comment to top of field_10x26_impl.h
58da5bd58 doc: Fix upper bounds + cleanup in field_5x52_impl.h comment
b39d431ae Merge bitcoin-core/secp256k1#1044: Add another ecmult_multi test
b4ac1a1d5 ci: Run valgrind/memcheck tasks with 2 CPUs
e70acab60 ci: Use Cirrus "greedy" flag to use idle CPU time when available
d07e30176 ci: Update brew on macOS
22382f0ea ci: Test different ecmult window sizes
a69df3ad2 Merge bitcoin-core/secp256k1#816: Improve checks at top of _fe_negate methods
22d25c8e0 Add another ecmult_multi test
515e7953c Improve checks at top of _fe_negate methods
26a022a3a ci: Remove STATICPRECOMPUTATION
10461d8bd precompute_ecmult: Always compute all tables up to default WINDOW_G
be6944ade Merge bitcoin-core/secp256k1#1042: Follow-ups to making all tables fully static
e05da9e48 Fix c++ build
c45386d99 Cleanup preprocessor indentation in precompute{,d}_ecmult{,_gen}
19d96e15f Split off .c file from precomputed_ecmult.h
1a6691ada Split off .c file from precomputed_ecmult_gen.h
bb3633141 Simplify precompute_ecmult_print_*
38cd84a0c Compute ecmult tables at runtime for tests_exhaustive
e458ec26d Move ecmult table computation code to separate file
fc1bf9f15 Split ecmult table computation and printing
31feab053 Rename function secp256k1_ecmult_gen_{create_prec -> compute}_table
725370c3f Rename ecmult_gen_prec -> ecmult_gen_compute_table
075252c1b Rename ecmult_static_pre_g -> precomputed_ecmult
7cf47f72b Rename ecmult_gen_static_prec_table -> precomputed_ecmult_gen
f95b8106d Rename gen_ecmult_static_pre_g -> precompute_ecmult
bae77685e Rename gen_ecmult_gen_static_prec_table -> precompute_ecmult_gen
0559fc6e4 Merge bitcoin-core/secp256k1#988: Make signing table fully static
7dfceceea build: Remove #undef hack for ASM in the precomputation programs
bb36fe9be ci: Test `make precomp`
d94a37a20 build: Remove CC_FOR_BUILD stuff
ad63bb4c2 build: Prebuild and distribute ecmult_gen table
ac49361ed prealloc: Get rid of manual memory management for prealloc contexts
6573c08f6 ecmult_gen: Tidy precomputed file and save space
5eba83f17 ecmult_gen: Precompute tables for all values of ECMULT_GEN_PREC_BITS
5d0dbef01 Merge bitcoin-core/secp256k1#942: Verify that secp256k1_ge_set_gej_zinv does not operate on infinity.
486205aa6 Merge bitcoin-core/secp256k1#920: Test all ecmult functions with many j*2^i combinations
fdb33dd12 refactor: Make PREC_BITS a parameter of ecmult_gen_build_prec_table
5eb519e1f ci: reduce TEST_ITERS in memcheck run
e2cf77328 Test ecmult functions for all i*2^j for j=0..255 and odd i=1..255.
61ae37c61 Merge bitcoin-core/secp256k1#1022: build: Windows DLL additions
4f01840b8 Merge bitcoin-core/secp256k1#1027: build: Add a check that Valgrind actually supports a host platform
6ad908aa0 Merge bitcoin-core/secp256k1#1008: bench.c: add `--help` option and ci: move env variables
592661c22 ci: move test environment variable declaration to .cirrus.yml
dcbe84b84 bench: add --help option to bench.
099bad945 Comment and check a parameter for inf in secp256k1_ecmult_const.
6c0be857f Verify that secp256k1_ge_set_gej_zinv does not operate on infinity. a->x and a->y should not be used if the infinity flag is set.
490022745 Merge bitcoin-core/secp256k1#1025: build: replace backtick command substitution with $()
7c7ce872a build: Add a check that Valgrind actually supports a host platform
a4875e30a refactor: Move default callbacks to util.h
4c94c55bc doc: Remove obsolete hint for valgrind stack size
510622699 exhaustive_tests: Fix with ecmult_gen table with custom generator
e1a76530d refactor: Make generator a parameter of ecmult_gen_create_prec_table
9ad09f691 refactor: Rename program that generates static ecmult_gen table
8ae18f1ab refactor: Rename file that contains static ecmult_gen table
00d2fa116 ecmult_gen: Make code consistent with comment
3b0c2185e ecmult_gen: Simplify ecmult_gen context after making table static
2b7c7497e build: replace backtick command substitution with $()
49f608de4 Merge bitcoin-core/secp256k1#1004: ecmult: fix definition of STRAUSS_SCRATCH_OBJECTS
c0cd7de6d build: add -no-undefined to libtool LDFLAGS
fe32a79d3 build: pass win32-dll to LT_INIT
60bf8890d ecmult: fix definition of STRAUSS_SCRATCH_OBJECTS
fecf436d5 Merge bitcoin-core/secp256k1#1019: build: don't append valgrind CPPFLAGS if not installed (macOS)
2e5e4b67d Merge bitcoin-core/secp256k1#1020: doc: remove use of <0xa0> "no break space"
812ff5c74 doc: remove use of 0xa0 "no break space"
214042a17 build: don't append valgrind CPPFLAGS if not installed
e43ba02cf refactor: Decouple table generation and ecmult_gen context
22dc2c0a0 ecmult_gen: Move table creation to new file and force static prec
793ad9016 Merge bitcoin-core/secp256k1#1010: doc: Minor fixes in safegcd_implementation.md
dc9b6853b doc: Minor fixes in safegcd_implementation.md
ea5e8a9c4 Merge bitcoin-core/secp256k1#1012: Fix typos
233297579 Fix typos
7006f1b97 Merge bitcoin-core/secp256k1#1011: ci: Enable -g if we set CFLAGS manually
72de1359e ci: Enable -g if we set CFLAGS manually
74c34e727 Merge bitcoin-core/secp256k1#1009: refactor: Use (int)&(int) in boolean context to avoid compiler warning
16d132215 refactor: Use (int)&(int) in boolean context to avoid compiler warning
c74a7b7e5 Merge bitcoin-core/secp256k1#1007: doc: Replace apoelstra's GPG key by jonasnick's GPG key
3b157c48e doc: Suggest keys.openpgp.org as keyserver in SECURITY.md
73a7472cd doc: Replace apoelstra's GPG key by jonasnick's GPG key
515a5dbd0 Merge bitcoin-core/secp256k1#991: Merge all "external" benchmarks into a single bench binary
af6abcb3d Make bench support selecting which benchmarks to run
9f56bdf5b Merge bench_schnorrsig into bench
3208557ae Merge bench_recover into bench
855e18d8a Merge bench_ecdh into bench
2a7be678a Combine bench_sign and bench_verify into single bench
8fa41201b Merge bitcoin-core/secp256k1#1002: Make aux_rnd32==NULL behave identical to 0x0000..00.
5324f8942 Make aux_rnd32==NULL behave identical to 0x0000..00.
21c188b3c Merge bitcoin-core/secp256k1#943: VERIFY_CHECK precondition for secp256k1_fe_set_int.
3e7b2ea19 Merge bitcoin-core/secp256k1#999: bench_ecmult: improve clarity of output
23e2f6672 bench: don't return 1 in have_flag() if argc = 1
96b1ad2ea bench_ecmult: improve clarity of output
20d791edf Merge bitcoin-core/secp256k1#989: Shared benchmark format for command line and CSV outputs
aa1b889b6 Merge bitcoin-core/secp256k1#996: Fix G.y parity in sage code
044d95630 Fix G.y parity in sage code
b4b130678 create csv file from the benchmark output
26a255beb Shared benchmark format for command line and CSV outputs
9526874d1 Merge bitcoin-core/secp256k1#810: Avoid overly-wide multiplications in 5x52 field mul/sqr
920a0e5fa Merge bitcoin-core/secp256k1#952: Avoid computing out-of-bounds pointer.
f34b5cae0 Merge bitcoin-core/secp256k1#983: [RFC] Remove OpenSSL testing support
297ce8209 Merge bitcoin-core/secp256k1#966: Make aux_rand32 arg to secp256k1_schnorrsig_sign const
288864013 VERIFY_CHECK precondition for secp256k1_fe_set_int.
d49011f54 Make _set_fe_int( . , 0 ) set magnitude to 0
bc08599e7 Remove OpenSSL testing support
10f9bd84f Merge bitcoin-core/secp256k1#987: Fix unused parameter warnings when building without VERIFY
189f6bcfe Fix unused parameter warnings when building without VERIFY
da0092bcc Merge bitcoin-core/secp256k1#986: tests: remove `secp256k1_fe_verify` from tests.c and modify `_fe_from_storage` to call `_fe_verify`
d43993724 tests: remove `secp256k1_fe_verify` from tests.c and modify `secp256k1_fe_from_storage` to call `secp256k1_fe_verify`
2a3a97c66 Merge bitcoin-core/secp256k1#976: `secp256k1_schnorrsig_sign_internal` should be static
aa5d34a8f Merge bitcoin-core/secp256k1#783: Make the public API docs more consistent and explicit
72713872a Add missing static to secp256k1_schnorrsig_sign_internal
db4667d5e Make aux_rand32 arg to secp256k1_schnorrsig_sign const
9a5a87e0f Merge bitcoin-core/secp256k1#956: Replace ecmult_context with a generated static array.
20abd52c2 Add tests for pre_g tables.
6815761cf Remove ecmult_context.
f20dcbbad Correct typo.
16a3cc07e Generate ecmult_static_pre_g.h
8de2d86a0 Bump memory limits in advance of making the ecmult context static.
d7ec49a68 Merge bitcoin-core/secp256k1#969: ci: Fixes after Debian release
5d5c74a05 tests: Rewrite code to circument potential bug in clang
3d2f492ce ci: Install libasan6 (instead of 5) after Debian upgrade
be8d9c262 Merge bitcoin-core/secp256k1#965: gen_context: Don't use any ASM
aeece4459 gen_context: Don't use any ASM
7688a4f13 Merge bitcoin-core/secp256k1#963: "Schnorrsig API overhaul" fixups
90e83449b ci: Add C++ test
adec5a163 Add missing null check for ctx and input keys in the public API
f4edfc758 Improve consistency for NULL arguments in the public interface
f698caaff Use unsigned char consistently for byte arrays
b5b8e7b71 Don't declare constants twice
769528f30 Don't use string literals for char arrays without NUL termination
2cc3cfa58 Fix -Wmissing-braces warning in clang
0440945fb Merge #844: schnorrsig API overhaul
ec3aaa501 Merge #960: tests_exhaustive: check the result of secp256k1_ecdsa_sign
a1ee83c65 tests_exhaustive: check the result of secp256k1_ecdsa_sign
253f90cde Merge bitcoin-core/secp256k1#951: configure: replace AC_PATH_PROG to AC_CHECK_PROG
446d28d9d Merge bitcoin-core/secp256k1#944: Various improvements related to CFLAGS
0302138f7 ci: Make compiler warning into errors on CI
b924e1e60 build: Ensure that configure's compile checks default to -O2
7939cd571 build: List *CPPFLAGS before *CFLAGS like on the compiler command line
595e8a35d build: Enable -Wcast-align=strict warning
07256267f build: Use own variable SECP_CFLAGS instead of touching user CFLAGS
4866178df Merge bitcoin-core/secp256k1#955: Add random field multiply/square tests
75ce488c2 Merge bitcoin-core/secp256k1#959: tests: really test the non-var scalar inverse
41ed13942 tests: really test the non-var scalar inverse
5f6ceafcf schnorrsig: allow setting MSGLEN != 32 in benchmark
fdd06b796 schnorrsig: add tests for sign_custom and varlen msg verification
d8d806aaf schnorrsig: add extra parameter struct for sign_custom
a0c3fc177 schnorrsig: allow signing and verification of variable length msgs
5a8e4991a Add secp256k1_tagged_sha256 as defined in BIP-340
b6c0b72fb schnorrsig: remove noncefp args from sign; add sign_custom function
bdf19f105 Add random field multiply/square tests
9be7b0f08 Avoid computing out-of-bounds pointer.
a4642fa15 configure: replace AC_PATH_PROG to AC_CHECK_PROG
442cee5ba schnorrsig: add algolen argument to nonce_function_hardened
df3bfa12c schnorrsig: clarify result of calling nonce_function_bip340 without data
99e861481 README: mention schnorrsig module
b53e0cd61 Avoid overly-wide multiplications

git-subtree-dir: src/secp256k1
git-subtree-split: 60556c9f49a9384efd7f16b734820ae19108f053
vmta added a commit to umkoin/umkoin that referenced this pull request Jul 1, 2023
0fa84f869 Merge bitcoin-core/secp256k1#1358: tests: introduce helper for non-zero `random_fe_test()` results
5a95a268b tests: introduce helper for non-zero `random_fe_test` results
304421d57 tests: refactor: remove duplicate function `random_field_element_test`
3aef6ab8e Merge bitcoin-core/secp256k1#1345: field: Static-assert that int args affecting magnitude are constant
4494a369b Merge bitcoin-core/secp256k1#1357: tests: refactor: take use of `secp256k1_ge_x_on_curve_var`
799f4eec2 Merge bitcoin-core/secp256k1#1356: ci: Adjust Docker image to Debian 12 "bookworm"
c862a9fb4 ci: Adjust Docker image to Debian 12 "bookworm"
a1782098a ci: Force DWARF v4 for Clang when Valgrind tests are expected
7d8d5c86d tests: refactor: take use of `secp256k1_ge_x_on_curve_var`
8a7273465 Help the compiler prove that a loop is entered
fd491ea1b Merge bitcoin-core/secp256k1#1355: Fix a typo in the error message
ac43613d2 Merge bitcoin-core/secp256k1#1354: Add ellswift to CHANGELOG
67887ae65 Fix a typo in the error message
926dd3e96 Merge bitcoin-core/secp256k1#1295: abi: Use dllexport for mingw builds
10836832e Merge bitcoin-core/secp256k1#1336: Use `__shiftright128` intrinsic in `secp256k1_u128_rshift` on MSVC
7c7467ab7 Refer to ellswift.md in API docs
c32ffd8d8 Add ellswift to CHANGELOG
3c1a0fd37 Merge bitcoin-core/secp256k1#1347: field: Document return value of fe_sqrt()
705ce7ed8 Merge bitcoin-core/secp256k1#1129: ElligatorSwift + integrated x-only DH
0702ecb06 Merge bitcoin-core/secp256k1#1338: Drop no longer needed `#include "../include/secp256k1.h"`
577913745 field: Document return value of fe_sqrt()
90e360acc Add doc/ellswift.md with ElligatorSwift explanation
4f091847c Add ellswift testing to CI
1bcea8c57 Add benchmarks for ellswift module
2d1d41acf Add ctime tests for ellswift module
df633cdeb Add _prefix and _bip324 ellswift_xdh hash functions
9695deb35 Add tests for ellswift module
c47917bbd Add ellswift module implementing ElligatorSwift
79e5b2a8b Add functions to test if X coordinate is valid
a597a5a9c Add benchmark for key generation
30574f22e Merge bitcoin-core/secp256k1#1349: Normalize ge produced from secp256k1_pubkey_load
45c5ca767 Merge bitcoin-core/secp256k1#1350: scalar: introduce and use `secp256k1_{read,write}_be64` helpers
f1652528b Normalize ge produced from secp256k1_pubkey_load
7067ee54b tests: add tests for `secp256k1_{read,write}_be64`
740528caa scalar: use newly introduced `secp256k1_{read,write}_be64` helpers (4x64 impl.)
be8ff3a02 field: Static-assert that int args affecting magnitude are constant
67214f5f7 Merge bitcoin-core/secp256k1#1339: scalar: refactor: use `secp256k1_{read,write}_be32` helpers
cb1a59275 Merge bitcoin-core/secp256k1#1341: docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xonly_,}pub`
f3644287b docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xonly_,}pub`
887183e7d scalar: use `secp256k1_{read,write}_be32` helpers (4x64 impl.)
52b84238d scalar: use `secp256k1_{read,write}_be32` helpers (8x32 impl.)
e449af687 Drop no longer needed `#include "../include/secp256k1.h"`
5b7bf2e9d Use `__shiftright128` intrinsic in `secp256k1_u128_rshift` on MSVC
60556c9f4 Merge bitcoin-core/secp256k1#1337: ci: Fix error D8037 in `cl.exe` (attempt 2)
db29bf220 ci: Remove quirk that runs dummy command after wineserver
c7db4942b ci: Fix error D8037 in `cl.exe`
7dae11586 Revert "ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe"
bf29f8d0a Merge bitcoin-core/secp256k1#1334: fix input range comment for `secp256k1_fe_add_int`
605e07e36 fix input range comment for `secp256k1_fe_add_int`
debf3e5c0 Merge bitcoin-core/secp256k1#1330: refactor: take use of `secp256k1_scalar_{zero,one}` constants
d75dc59b5 Merge bitcoin-core/secp256k1#1333: test: Warn if both `VERIFY` and `COVERAGE` are defined
ade5b3670 tests: add checks for scalar constants `secp256k1_scalar_{zero,one}`
e83801f5d test: Warn if both `VERIFY` and `COVERAGE` are defined
654246c63 refactor: take use of `secp256k1_scalar_{zero,one}` constants
908e02d59 Merge bitcoin-core/secp256k1#1328: build: Bump MSVC warning level up to W3
1549db0ca build: Level up MSVC warnings
20a5da5fb Merge bitcoin-core/secp256k1#1310: Refine release process
ad8460329 release process: clarify change log updates
6348bc7ee release process: fix process for maintenance release
79fa50b08 release process: mention targeted release schedule
165206789 release process: add sanity checks
09df0bfb2 Merge bitcoin-core/secp256k1#1327: ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe
27504d5c9 ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe
d373a7215 Merge bitcoin-core/secp256k1#1316: Do not invoke fe_is_zero on failed set_b32_limit
6433175ff Do not invoke fe_is_zero on failed set_b32_limit
5f7903c73 Merge bitcoin-core/secp256k1#1318: build: Enable -DVERIFY for precomputation binaries
e9e4526a4 Merge bitcoin-core/secp256k1#1317: Make fe_cmov take max of magnitudes
5768b5022 build: Enable -DVERIFY for precomputation binaries
31b4bbee1 Make fe_cmov take max of magnitudes
83186db34 Merge bitcoin-core/secp256k1#1314: release cleanup: bump version after 0.3.2
95448ef2f release cleanup: bump version after 0.3.2
acf5c55ae Merge bitcoin-core/secp256k1#1312: release: Prepare for 0.3.2
d490ca204 release: Prepare for 0.3.2
3e3d125b8 Merge bitcoin-core/secp256k1#1309: changelog: Catch up
e8295d07a Merge bitcoin-core/secp256k1#1311: Revert "Remove unused scratch space from API"
697e1ccf4 changelog: Catch up
3ad1027a4 Revert "Remove unused scratch space from API"
76b43f344 changelog: Add entry for #1303
7d4f86d24 Merge bitcoin-core/secp256k1#1307: Mark more assembly outputs as early clobber
b54a0672e Merge bitcoin-core/secp256k1#1304: build: Rename arm to arm32 and check if it's really supported
c6bb29b30 build: Rename `64bit` to `x86_64`
8c9ae37a5 Add release note
03246457a autotools: Add `SECP_ARM32_ASM_CHECK` macro
ed4ba238e cmake: Add `check_arm32_assembly` function
350b4bd6e Mark stack variables as early clobber for technical correctness
0c729ba70 Bugfix: mark outputs as early clobber in scalar x86_64 asm
3353d3c75 Merge bitcoin-core/secp256k1#1207: Split fe_set_b32 into reducing and normalizing variants
5b3260229 Split fe_set_b32 into reducing and normalizing variants
006ddc1f4 Merge bitcoin-core/secp256k1#1306: build: Make tests work with external default callbacks
1907f0f16 build: Make tests work with external default callbacks
fb3a80636 Merge bitcoin-core/secp256k1#1133: schnorrsig: Add test vectors for variable-length messages
cd54ac7c1 schnorrsig: Improve docs of schnorrsig_sign_custom
28687b031 schnorrsig: Add BIP340 varlen test vectors
97a98bed1 schnorrsig: Refactor test vector code to allow varlen messages
ab5a91712 Merge bitcoin-core/secp256k1#1303: ct: Use more volatile
9eb6934f6 Merge bitcoin-core/secp256k1#1305: Remove unused scratch space from API
073d98a07 Merge bitcoin-core/secp256k1#1292: refactor: Make 64-bit shift explicit
17fa21733 ct: Be cautious and use volatile trick in more "conditional" paths
5fb336f9c ct: Use volatile trick in scalar_cond_negate
712e7f872 Remove unused scratch space from API
54d34b6c2 Merge bitcoin-core/secp256k1#1300: Avoid normalize conditional on VERIFY
c63ec88eb Merge bitcoin-core/secp256k1#1066: Abstract out and merge all the magnitude/normalized logic
7fc642fa2 Simplify secp256k1_fe_{impl_,}verify
4e176ad5b Abstract out verify logic for fe_is_square_var
4371f9834 Abstract out verify logic for fe_add_int
89e324c6b Abstract out verify logic for fe_half
283cd80ab Abstract out verify logic for fe_get_bounds
d5aa2f035 Abstract out verify logic for fe_inv{,_var}
316764607 Abstract out verify logic for fe_from_storage
76d31e504 Abstract out verify logic for fe_to_storage
1e6894bdd Abstract out verify logic for fe_cmov
be82bd8e0 Improve comments/checks for fe_sqrt
6ab35082e Abstract out verify logic for fe_sqr
4c25f6efb Abstract out verify logic for fe_mul
e179e651c Abstract out verify logic for fe_add
7e7ad7ff5 Abstract out verify logic for fe_mul_int
65d82a344 Abstract out verify logic for fe_negate
144670893 Abstract out verify logic for fe_get_b32
f7a7666ae Abstract out verify logic for fe_set_b32
ce4d2093e Abstract out verify logic for fe_cmp_var
7d7d43c6d Improve comments/check for fe_equal{,_var}
c5e788d67 Abstract out verify logic for fe_is_odd
d3f3fe861 Abstract out verify logic for fe_is_zero
c701d9a47 Abstract out verify logic for fe_clear
19a2bfeee Abstract out verify logic for fe_set_int
864f9db49 Abstract out verify logic for fe_normalizes_to_zero{,_var}
6c3137112 Abstract out verify logic for fe_normalize_var
e28b51f52 Abstract out verify logic for fe_normalize_weak
b6b6f9cb9 Abstract out verify logic for fe_normalize
7fa519555 Bugfix: correct SECP256K1_FE_CONST mag/norm fields
e5cf4bf3f build: Rename `arm` to `arm32`
b29566c51 Merge magnitude/normalized fields, move/improve comments
97c63b903 Avoid normalize conditional on VERIFY
341cc1972 Merge bitcoin-core/secp256k1#1299: Infinity handling: ecmult_const(infinity) works, and group verification
bbc834467 Avoid secp256k1_ge_set_gej_zinv with uninitialized z
0a2e0b2ae Make secp256k1_{fe,ge,gej}_verify work as no-op if non-VERIFY
f20266722 Add invariant checking to group elements
a18821d5b Always initialize output coordinates in secp256k1_ge_set_gej
3086cb90a Expose secp256k1_fe_verify to other modules
a0e696fd4 Make secp256k1_ecmult_const handle infinity
24c768ae0 Merge bitcoin-core/secp256k1#1301: Avoid using bench_verify_data as bench_sign_data; merge them
2e65f1fdb Avoid using bench_verify_data as bench_sign_data; merge them
1cf15ebd9 Merge bitcoin-core/secp256k1#1296: docs: complete interface description for `secp256k1_schnorrsig_sign_custom`
bc7c8db17 abi: Use dllexport for mingw builds
149c41cee docs: complete interface description for `secp256k1_schnorrsig_sign_custom`
f30c74866 Merge bitcoin-core/secp256k1#1270: cmake: Fix library ABI versioning
d1e48e547 refactor: Make 64-bit shift explicit
b2e29e43d ci: Treat all compiler warnings as errors in "Windows (VS 2022)" task
3c8183885 Merge bitcoin-core/secp256k1#1289: cmake: Use full signature of `add_test()` command
755629bc0 cmake: Use full signature of `add_test()` command
bef448f9a cmake: Fix library ABI versioning
4b0f711d4 Merge bitcoin-core/secp256k1#1277: autotools: Clean up after adding Wycheproof
222ecaf66 Merge bitcoin-core/secp256k1#1284: cmake: Some improvements using `PROJECT_IS_TOP_LEVEL` variable
71f746c05 cmake: Include `include` directory for subtree builds
024a40948 Merge bitcoin-core/secp256k1#1240: cmake: Improve and document compiler flag checks
a8d059f76 cmake, doc: Document compiler flags
6ece1507c cmake, refactor: Rename `try_add_compile_option` to `try_append_cflags`
19516ed3e cmake: Use `add_compile_options()` in `try_add_compile_option()`
4b84f4bf0 Merge bitcoin-core/secp256k1#1239: cmake: Bugfix and other improvements after bumping CMake up to 3.13
596b336ff Merge bitcoin-core/secp256k1#1234: cmake: Add dev-mode
6b7e5b717 Merge bitcoin-core/secp256k1#1275: build: Fix C4005 "macro redefinition" MSVC warnings in examples
1c8953671 Merge bitcoin-core/secp256k1#1286: tests: remove extra semicolon in macro
c4062d6b5 debug: move helper for printing buffers into util.h
7e977b3c5 autotools: Take VPATH builds into account when generating testvectors
2418d3260 autotools: Create src/wycheproof dir before creating file in it
8764034ed autotools: Make all "pregenerated" targets .PHONY
e1b9ce881 autotools: Use same conventions for all pregenerated files
3858bad2c tests: remove extra semicolon in macro
1f33bb2b1 Merge bitcoin-core/secp256k1#1205: field: Improve docs +tests of secp256k1_fe_set_b32
162da73e9 tests: Add debug helper for printing buffers
e9fd3dff7 field: Improve docs and tests of secp256k1_fe_set_b32
f6bef03c0 Merge bitcoin-core/secp256k1#1283: Get rid of secp256k1_fe_const_b
5431b9dec cmake: Make `SECP256K1_INSTALL` default depend on `PROJECT_IS_TOP_LEVEL`
5ec1333d4 Merge bitcoin-core/secp256k1#1285: bench: Make sys/time.h a system include
68b16a166 bench: Make sys/time.h a system include
162608cc9 cmake: Emulate `PROJECT_IS_TOP_LEVEL` for CMake<3.21
69e1ec033 Get rid of secp256k1_fe_const_b
ce5ba9e24 gitignore: Add CMakeUserPresets.json
0a446a312 cmake: Add dev-mode CMake preset
a6f4bcf6e Merge bitcoin-core/secp256k1#1231: Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h`
a273d74b2 cmake: Improve version comparison
6a58b483e cmake: Use `if(... IN_LIST ...)` command
2445808c0 cmake: Use dedicated `GENERATOR_IS_MULTI_CONFIG` property
9f8703ef1 cmake: Use dedicated `CMAKE_HOST_APPLE` variable
8c2017035 cmake: Use recommended `add_compile_definitions` command
04d4cc071 cmake: Add `DESCRIPTION` and `HOMEPAGE_URL` options to `project` command
8a8b6536e cmake: Use `SameMinorVersion` compatibility mode
5b0444a3b Merge bitcoin-core/secp256k1#1263: cmake: Make installation optional
47ac3d63c cmake: Make installation optional
2e035af25 Merge bitcoin-core/secp256k1#1273: build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS`
5be353d65 Merge bitcoin-core/secp256k1#1279: tests: lint wycheproof's python script
08f4b1632 autotools: Move code around to tidy Makefile
04bf3f677 Merge bitcoin-core/secp256k1#1230: Build: allow static or shared but not both
9ce9984f3 Merge bitcoin-core/secp256k1#1265: Remove bits argument from secp256k1_wnaf_const{_xonly}
566faa17d Merge bitcoin-core/secp256k1#1267: doc: clarify process for patch releases
ef49a11d2 build: allow static or shared but not both
35ada3b95 tests: lint wycheproof's python script
4258c54f4 Merge bitcoin-core/secp256k1#1276: autotools: Don't regenerate Wycheproof header automatically
529b54d92 autotools: Move Wycheproof header from EXTRA_DIST to noinst_HEADERS
06c67dea9 autotools: Don't regenerate Wycheproof header automatically
dc0657c76 build: Fix C4005 "macro redefinition" MSVC warnings in examples
1ecb94ebe build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS`
3bab71cf0 Merge bitcoin-core/secp256k1#1268: release cleanup: bump version after 0.3.1
656c6ea8d release cleanup: bump version after 0.3.1
346a053d4 Merge bitcoin-core/secp256k1#1269: changelog: Fix link
6a37b2a5e changelog: Fix link
ec98fcedd Merge bitcoin-core/secp256k1#1266: release: Prepare for 0.3.1
1b6fb5593 doc: clarify process for patch releases
898e1c676 release: Prepare for 0.3.1
1d9a13fc2 changelog: Remove inconsistent newlines
0e091669a changelog: Catch up in preparation of 0.3.1
7b7503dac Merge bitcoin-core/secp256k1#1245: tests: Add Wycheproof ECDSA vectors
a575339c0 Remove bits argument from secp256k1_wnaf_const (always 256)
145078c41 Merge bitcoin-core/secp256k1#1118: Add x-only ecmult_const version with x specified as n/d
e5de45460 tests: Add Wycheproof ECDSA vectors
0f8642079 Add exhaustive tests for ecmult_const_xonly
4485926ac Add x-only ecmult_const version for x=n/d
a0f4644f7 Merge bitcoin-core/secp256k1#1252: Make position of * in pointer declarations in include/ consistent
4e682626a Merge bitcoin-core/secp256k1#1226: Add CMake instructions to release process
2d51a454f Merge bitcoin-core/secp256k1#1257: ct: Use volatile "trick" in all fe/scalar cmov implementations
4a496a36f ct: Use volatile "trick" in all fe/scalar cmov implementations
3d1f430f9 Make position of * in pointer declarations in include/ consistent
2bca0a5cb Merge bitcoin-core/secp256k1#1241: build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
afd8b23b2 Merge bitcoin-core/secp256k1#1244: Suppress `-Wunused-parameter` when building for coverage analysis
1d8f36751 Merge bitcoin-core/secp256k1#1250: No need to subtract 1 before doing a right shift
3e43041be No need to subtract 1 before doing a right shift
3addb4c1e build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
0c07c8283 Add CMake instructions to release process
464a9115b Merge bitcoin-core/secp256k1#1242: Set ARM ASM symbol visibility to `hidden`
f16a709fd Merge bitcoin-core/secp256k1#1247: Apply Checks only in VERIFY mode.
70be3cade Merge bitcoin-core/secp256k1#1246: Typo
4ebd82852 Apply Checks only in VERIFY mode.
d1e7ca192 Typo
36b0adf1b build: remove warning until it's reproducible
5bb03c291 Replace `SECP256K1_ECMULT_TABLE_VERIFY` macro by a function
9c8c4f443 Merge bitcoin-core/secp256k1#1238: build: bump CMake minimum requirement to 3.13
0cf2fb91e Merge bitcoin-core/secp256k1#1243: build: Ensure no optimization when building for coverage analysis
fd2a40864 Set ARM ASM symbol visibility to `hidden`
4429a8c21 Suppress `-Wunused-parameter` when building for coverage analysis
8e79c7ed1 build: Ensure no optimization when building for coverage analysis
96dd06251 build: bump CMake minimum requirement to 3.13
427bc3cdc Merge bitcoin-core/secp256k1#1236: Update comment for secp256k1_modinv32_inv256
647f0a5cb Update comment for secp256k1_modinv32_inv256
8e142ca41 Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h`
77445898a Remove `SECP256K1_INLINE` usage from examples
565820945 Merge bitcoin-core/secp256k1#1228: release cleanup: bump version after 0.3.0
bdf39000b Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0
28e63f7ea release cleanup: bump version after 0.3.0
b40adf236 release: prepare for 0.3.0
90b513aad Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1"
8be82d436 cmake: Rename project to "libsecp256k1"
ef4f8bd02 Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions
756b61d45 readme: Use correct build type in CMake/Windows build instructions
3295aa149 Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake
92098d84c changelog: Add entry for CMake
df323b5c1 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system
e1eb33724 ci: Add "x86_64: Windows (VS 2022)" task
10602b003 cmake: Export config files
5468d7096 build: Add CMake-based build system
6048e6c03 Merge bitcoin-core/secp256k1#1222: Remove redundant checks.
eb8749fcd Merge bitcoin-core/secp256k1#1221: Update Changelog
5d8f53e31 Remove redudent checks.
9d1b458d5 Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
d232112fa Update Changelog
8962fc95b Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b38 Update overflow check
575731878 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e4c Add secp256k1_fe_add_int function
5660c1375 prevent optimization in algorithms
09b1d466d Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc78a doc: Describe Jacobi calculation in safegcd_implementation.md
6be01036c Add secp256k1_fe_is_square_var function
1de2a01c2 Native jacobi symbol algorithm
04c6c1b18 Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c7a Make secp256k1_i128_check_pow2 support -(2^n)
cbd255593 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa517 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
e4330341b ci: Shutdown wineserver whenever CI script exits
9a5a611a2 build: Suppress stupid MSVC linker warning
739c53b19 examples: Extend sig examples by call that uses static context
914276e4d build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c174 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc1d build: Add -Wreserved-identifier supported by clang
ca92a35d0 field: Simplify code in secp256k1_fe_set_b32
d93f62e36 field: Verify field element even after secp256k1_fe_set_b32 fails
8ebe5c520 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5c2 Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721cc Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e3148 ci: Do not set git's `user.{email,name}` config options
e1817a6f5 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff20058 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d18669 Drop no longer used Autoheader macros
c2415866c ci: Don't fetch git history
0ecf31885 ci: Use remote pull/merge ref instead of local git merge
2b77240b3 Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6bebaee scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7f2 ci: add test job with -DVERIFY
620ba3d74 benchmarks: fix bench_scalar_split
5fbff5d34 Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d84 Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b14 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954f1 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c0a Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f94 Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc9e contexts: Forbid randomizing secp256k1_context_static
4b6df5e33 contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf5f Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229e0 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738d5 Ensure safety of ctz_debruijn implementation.
a01a7d86d Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfaf3 Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a32709 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf89e Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785b2 Introduce SECP256K1_B macro for curve b coefficient
4934aa799 Switch to exhaustive groups with small B coefficient
d4a6b58df Add `noverify_tests` to `.gitignore`
88e80722d Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec11 Rename CTIMETEST -> CTIMETESTS
74b026f05 Add runtime checking for DECLASSIFY flag
5e2e6fcfc Run ctime test in Linux MSan CI job
18974061a Make ctime tests building configurable
5048be17e Rename valgrind_ctime_test -> ctime_tests
6eed6c18d Update error messages to suggest msan as well
8e11f89a6 Add support for msan integration to checkmem.h
8dc64079e Add compile-time error to valgrind_ctime_test
0db05a770 Abstract interactions with valgrind behind new checkmem.h
4f1a54e41 Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4f4 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48f5 refactor: Rename STTC to STATIC_CTX in tests
3385a2648 refactor: Rename global variables to uppercase in tests
e03ef8655 Make all non-API functions (except main) static
cbe41ac13 Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
203760023 tests: Add noverify_tests which is like tests but without VERIFY
e862c4af0 Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb300041 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e3d refactor: Separate run_context_tests into static vs proper contexts
a4a09379b tests: Clean up and improve run_context_tests() further
fc90bb569 refactor: Tidy up main()
f32a36f62 tests: Don't use global context for context tests
ce4f936c4 tests: Tidy run_context_tests() by extracting functions
18e0db30c tests: Don't recreate global context in scratch space test
b19806122 tests: Use global copy of secp256k1_context_static instead of clone
2a39ac162 Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca284e Drop `SECP_CONFIG_DEFINES` from examples
31ed5386e Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b2a Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a8c Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90f6 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f77 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889f1 Clarify that the ABI-incompatible versions are earlier
881fc33d0 Consistency in naming of modules
665ba77e7 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f5b Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a7468820 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fdade ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d21b Do not define unused `HAVE_VALGRIND` macro
ad8647f54 Drop no longer relevant files from `.gitignore`
b627ba705 Remove dependency on `src/libsecp256k1-config.h`
9ecf8149a Reduce font size in changelog
2dc133a67 Add more changelog entries
ac233e181 Add links to diffs to changelog
cee8223ef Mention semantic versioning in changelog
9a8d65f07 Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc290f release cleanup: bump version after 0.2.0
b6b360efa doc: improve message of cleanup commit
21ffe4b22 Merge bitcoin-core/secp256k1#1055: Prepare initial release
e025ccdf7 release: prepare for initial release 0.2.0
6d1784a2e build: add missing files to EXTRA_DIST
8c949f56d Merge bitcoin-core/secp256k1#1173: Don't use compute credits for now
13bf1b6b3 changelog: make order of change types match keepachangelog.com
b1f992a55 doc: improve release process
7e5b22684 Don't use compute credits for now
a49e0940a docs: Fix typo
2551cdac9 tests: Fix code formatting
c635c1bfd Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f2357 refactor: Add helper function secp256k1_context_is_proper()
ad39e2dc4 build: change package version to 0.1.0-dev
5c789dcd7 Merge bitcoin-core/secp256k1#1168: Replace deprecated context flags with NONE in benchmarks and tests
d6dc0f4ae tests: Switch to NONE contexts in module tests
0c8a5cadd tests: Switch to NONE contexts in tests.c
86540e9e1 tests: add test for deprecated flags and rm them from run_context
caa0ad631 group: add gej_eq_var
37ba744f5 tests: Switch to NONE contexts in exhaustive and ctime tests
8d7a9a8ed benchmarks: Switch to NONE contexts
90618e926 doc: move CHANGELOG from doc/ to root directory
e3f84777e Merge bitcoin-core/secp256k1#1126: API cleanup with respect to contexts
4386a2306 examples: Switch to NONE contexts
7289b51d3 docs: Use doxygen style if and only if comment is user-facing
e7d0185c9 docs: Get rid of "initialized for signing" terminology
06126364a docs: Tidy and improve docs about contexts and randomization
e02d6862b selftest: Expose in public API
e383fbfa6 selftest: Rename internal function to make name available for API
d2c6d48de tests: Use new name of static context
53796d2b2 contexts: Rename static context
72fedf8a6 docs: Improve docs for static context
316ac7625 contexts: Deprecate all context flags except SECP256K1_CONTEXT_NONE
477f02c4d Merge bitcoin-core/secp256k1#1165: gitignore: Add *.sage.py files autogenerated by sage [skip ci]
092be61c5 gitignore: Add *.sage.py files autogenerated by sage
1a553ee8b docs: Change signature "validation" to "verification"
ee7341fba docs: Never require a verification context
751c4354d Merge bitcoin-core/secp256k1#1152: Update macOS image for CI
2286f8090 Merge bitcoin-core/secp256k1#993: Enable non-experimental modules by default
d21647520 test secp256k1_i128_to_i64
4bc429019 Add a secp256k1_i128_to_u64 function.
e40fd277b Merge bitcoin-core/secp256k1#1156: Followups to int128_struct arithmetic
99bd33559 Make int128 overflow test use secp256k1_[ui]128_mul
a8494b02b Use compute credits for macOS jobs
3afce0af7 Avoid signed overflow in MSVC AMR64 secp256k1_mul128
c0ae48c99 Update macOS image for CI
9b5f589d3 Heuristically decide whether to use int128_struct
63ff064d2 int128: Add test override for testing __(u)mulh on MSVC X64
f2b7e8876 Add int128 randomized tests
6138d73be Merge bitcoin-core/secp256k1#1155: Add MSan CI jobs
ddf2b2910 Merge bitcoin-core/secp256k1#1000: Synthetic int128 type.
86e3b38a4 Merge bitcoin-core/secp256k1#1149: Remove usage of CHECK from non-test file
00a42b91b Add MSan CI job
44916ae91 Merge bitcoin-core/secp256k1#1147: ci: print env to allow reproducing the job outside of CI
c2ee9175e Merge bitcoin-core/secp256k1#1146: ci: prevent "-v/--version: not found" irrelevant error
e13fae487 Merge bitcoin-core/secp256k1#1150: ci: always cat test_env.log
a340d9500 ci: add int128_struct tests
dceaa1f57 int128: Tidy #includes of int128.h and int128_impl.h
2914bccbc Simulated int128 type.
6a965b6b9 Remove usage of CHECK from non-test file
5c9f1a5c3 ci: always cat all logs_snippets
49ae84359 ci: mostly prevent "-v/--version: not found" irrelevant error
4e54c0315 ci: print env to allow reproducing the job outside of CI
a43e982bc Merge bitcoin-core/secp256k1#1144: Cleanup `.gitignore` file
f5039cb66 Cleanup `.gitignore` file
798727ae1 Revert "Add test logs to gitignore"
41e8704b4 build: Enable some modules by default
694ce8fb2 Merge bitcoin-core/secp256k1#1131: readme: Misc improvements
88b00897e readme: Fix line break
78f5296da readme: Sell "no runtime dependencies"
ef48f088a readme: Add IRC channel
9f8a13dc8 Merge bitcoin-core/secp256k1#1128: configure: Remove pkgconfig macros again (reintroduced by mismerge)
cabe085bb configure: Remove pkgconfig macros again (reintroduced by mismerge)
3efeb9da2 Merge bitcoin-core/secp256k1#1121: config: Set preprocessor defaults for ECMULT_* config values
6a873cc4a Merge bitcoin-core/secp256k1#1122: tests: Randomize the context with probability 15/16 instead of 1/4
17065f48a tests: Randomize the context with probability 15/16 instead of 1/4
c27ae4514 config: Remove basic-config.h
da6514a04 config: Introduce DEBUG_CONFIG macro for debug output of config
63a3565e9 Merge bitcoin-core/secp256k1#1120: ecmult_gen: Skip RNG when creating blinding if no seed is available
d0cf55e13 config: Set preprocessor defaults for ECMULT_* config values
55f8bc99d ecmult_gen: Improve comments about projective blinding
7a8695580 ecmult_gen: Simplify code (no observable change)
4cc0b1b66 ecmult_gen: Skip RNG when creating blinding if no seed is available
af65d30cc Merge bitcoin-core/secp256k1#1116: build: Fix #include "..." paths to get rid of further -I arguments
40a3473a9 build: Fix #include "..." paths to get rid of further -I arguments
43756da81 Merge bitcoin-core/secp256k1#1115: Fix sepc256k1 -> secp256k1 typo in group.h
069aba812 Fix sepc256k1 -> secp256k1 typo in group.h
accadc94d Merge bitcoin-core/secp256k1#1114: `_scratch_destroy`: move `VERIFY_CHECK` after invalid scrach space check
cd4703333 Merge bitcoin-core/secp256k1#1084: ci: Add MSVC builds
1827c9bf2 scratch_destroy: move VERIFY_CHECK after invalid scrach space check
49e2acd92 configure: Improve rationale for WERROR_CFLAGS
8dc4b0334 ci: Add a C++ job that compiles the public headers without -fpermissive
51f296a46 ci: Run persistent wineserver to speed up wine
3fb3269c2 ci: Add 32-bit MinGW64 build
9efc2e522 ci: Add MSVC builds
2be6ba0fe configure: Convince autotools to work with MSVC's archiver lib.exe
bd81f4140 schnorrsig bench: Suppress a stupid warning in MSVC
44c2452fd Merge bitcoin-core/secp256k1#1105: Don't export symbols in static libraries
6f6cab998 abi: Don't export symbols in static Windows libraries
485f608fa Merge bitcoin-core/secp256k1#1104: Fix the false positive of `SECP_64BIT_ASM_CHECK`
8b013fce5 Merge bitcoin-core/secp256k1#1056: Save negations in var-time group addition
7efc9835a Fix the false positive of `SECP_64BIT_ASM_CHECK`
8746600ee Merge bitcoin-core/secp256k1#1093: hash: Make code agnostic of endianness
2f984ffc4 Save negations in var-time group addition
37d36927d tests: Add tests for _read_be32 and _write_be32
912b7ccc4 Merge bitcoin-core/secp256k1#1094: doc: Clarify configure flags for optional modules
55512d30b doc: clean up module help text in configure.ac
d9d94a996 doc: mention optional modules in README
616b43dd3 util: Remove endianness detection
8d89b9e6e hash: Make code agnostic of endianness
d0ad5814a Merge bitcoin-core/secp256k1#995: build: stop treating schnorrsig, extrakeys modules as experimental
1ac7e31c5 Merge bitcoin-core/secp256k1#1089: Schnorrsig API improvements
587239dbe Merge bitcoin-core/secp256k1#731: Change SHA256 byte counter from size_t to uint64_t
f8d917435 Add SHA256 bit counter tests
7f09d0f31 README: mention that ARM assembly is experimental
b8f8b99f0 docs: Fix return value for functions that don't have invalid inputs
f813bb0df schnorrsig: Adapt example to new API
99e6568fc schnorrsig: Rename schnorrsig_sign to schnorsig_sign32 and deprecate
fc94a2da4 Use SECP256K1_DEPRECATED for existing deprecated API functions
3db056060 Add SECP256K1_DEPRECATED attribute for marking API parts as deprecated
09f3d71c5 configure: Add a few CFLAGS for MSVC
3b4f3d0d4 build: Reject C++ compilers in the preprocessor
1cc094141 configure: Don't abort if the compiler does not define __STDC__
80cf4eea5 build: stop treating schnorrsig, extrakeys modules as experimental
e0508ee9d Merge bitcoin-core/secp256k1#1090: configure: Remove redundant pkg-config code
21b2ebaf7 configure: Remove redundant pkg-config code
cca8cbbac configure: Output message when checking for valgrind
1a6be5745 bench: Make benchmarks compile on MSVC
0e5cbd01b Merge bitcoin-core/secp256k1#1088: configure: Use modern way to set AR
0d253d52e configure: Use modern way to set AR
9b514ce1d Add test vector for very long SHA256 messages
8e3dde113 Simplify struct initializer for SHA256 padding
eb28464a8 Change SHA256 byte counter from size_t to uint64_t
ac83be33d Merge bitcoin-core/secp256k1#1079: configure: Add hidden --enable-dev-mode to enable all the stuff
e089eecc1 group: Further simply gej_add_ge
e0838d663 configure: Add hidden --enable-dev-mode to enable all the stuff
fabd579df configure: Remove redundant code that sets _enable variables
0d4226c05 configure: Use canonical variable prefix _enable consistently
64b34979e Merge bitcoin-core/secp256k1#748: Add usage examples
7c9502cec Add a copy of the CC0 license to the examples
42e03432e Add usage examples to the readme
517644eab Optionally compile the examples in autotools, compile+run in travis
422a7cc86 Add a ecdh shared secret example
b0cfbcc14 Add a Schnorr signing and verifying example
fee7d4bf9 Add an ECDSA signing and verifying example
ac71020eb group: Save a normalize_to_zero in gej_add_ge
1253a2775 Merge bitcoin-core/secp256k1#1033: Add _fe_half and use in _gej_add_ge and _gej_double
3ef94aa5b Merge bitcoin-core/secp256k1#1026: ecdh: Add test computing shared_secret=basepoint with random inputs
3531a43b5 ecdh: Make generator_basepoint test depend on global iteration count
c881dd49b ecdh: Add test computing shared_secret=basepoint with random inputs
077528317 Merge bitcoin-core/secp256k1#1074: ci: Retry brew update a few times to avoid random failures
e51ad3b73 ci: Retry `brew update` a few times to avoid random failures
b1cb969e8 ci: Revert "Attempt to make macOS builds more reliable"
5dcc6f8db Merge bitcoin-core/secp256k1#1069: build: Replace use of deprecated autoconf macro AC_PROG_CC_C89
59547943d Merge bitcoin-core/secp256k1#1072: ci: Attempt to make macOS builds more reliable
85b00a1c6 Merge bitcoin-core/secp256k1#1068: sage: Fix incompatibility with sage 9.4
ebb1beea7 sage: Ensure that constraints are always fastfracs
d8d54859e ci: Run sage prover on CI
77cfa98db sage: Normalize sign of polynomial factors in prover
eae75869c sage: Exit with non-zero status in case of failures
d9396a56d ci: Attempt to make macOS builds more reliable
e0db3f8a2 build: Replace use of deprecated autoconf macro AC_PROG_CC_C89
e848c3799 Update sage files for new formulae
d64bb5d4f Add fe_half tests for worst-case inputs
b54d843ea sage: Fix printing of errors
4eb8b932f Further improve doubling formula using fe_half
557b31fac Doubling formula using fe_half
2cbb4b1a4 Run more iterations of run_field_misc
9cc5c257e Add test for secp256k1_fe_half
925f78d55 Add _fe_half and use in _gej_add_ge
e108d0039 sage: Fix incompatibility with sage 9.4
d8a246324 Merge bitcoin-core/secp256k1#899: Reduce stratch space needed by ecmult_strauss_wnaf.
0a40a4861 Merge bitcoin-core/secp256k1#1049: Faster fixed-input ecmult tests
070e77221 Faster fixed-input ecmult tests
c8aa516b5 Merge bitcoin-core/secp256k1#1064: Modulo-reduce msg32 inside RFC6979 nonce fn to match spec. Fixes #1063
b797a500e Create a SECP256K1_ECMULT_TABLE_VERIFY macro.
a731200cc Replace ECMULT_TABLE_GET_GE_STORAGE macro with a function.
fe34d9f34 Eliminate input_pos state field from ecmult_strauss_wnaf.
0397d00ba Eliminate na_1 and na_lam state fields from ecmult_strauss_wnaf.
7ba3ffcca Remove the unused pre_a_lam allocations.
b3b57ad6e Eliminate the pre_a_lam array from ecmult_strauss_wnaf.
ae7ba0f92 Remove the unused prej allocations.
e5c18892d Eliminate the prej array from ecmult_strauss_wnaf.
c9da1baad Move secp256k1_fe_one to field.h
45f37b650 Modulo-reduce msg32 inside RFC6979 nonce fn to match spec. Fixes #1063.
a1102b121 Merge bitcoin-core/secp256k1#1029: Simpler and faster ecdh skew fixup
e82144edf Fixup skew before global Z fixup
40b624c90 Add tests for _gej_cmov
8c13a9bfe ECDH skews by 0 or 1
151509943 Simpler and faster ecdh skew fixup
39a36db94 Merge bitcoin-core/secp256k1#1054: tests: Fix test whose result is implementation-defined
a310e79ee Merge bitcoin-core/secp256k1#1052: Use xoshiro256++ instead of RFC6979 for tests
423b6d19d Merge bitcoin-core/secp256k1#964: Add release-process.md
9281c9f4e Merge bitcoin-core/secp256k1#1053: ecmult: move `_ecmult_odd_multiples_table_globalz_windowa`
77a19750b Use xoshiro256++ PRNG instead of RFC6979 in tests
5f2efe684 secp256k1_testrand_int(2**N) -> secp256k1_testrand_bits(N)
05e049b73 ecmult: move `_ecmult_odd_multiples_table_globalz_windowa`
3d7cbafb5 tests: Fix test whose result is implementation-defined
3ed0d02bf doc: add CHANGELOG template
6f42dc16c doc: add release_process.md
0bd3e4243 build: set library version to 0.0.0 explicitly
b4b02fd8c build: change libsecp version from 0.1 to 0.1.0-pre
09971a3ff Merge bitcoin-core/secp256k1#1047: ci: Various improvements
0b83b203e Merge bitcoin-core/secp256k1#1030: doc: Fix upper bounds + cleanup in field_5x52_impl.h comment
1287786c7 doc: Add comment to top of field_10x26_impl.h
58da5bd58 doc: Fix upper bounds + cleanup in field_5x52_impl.h comment
b39d431ae Merge bitcoin-core/secp256k1#1044: Add another ecmult_multi test
b4ac1a1d5 ci: Run valgrind/memcheck tasks with 2 CPUs
e70acab60 ci: Use Cirrus "greedy" flag to use idle CPU time when available
d07e30176 ci: Update brew on macOS
22382f0ea ci: Test different ecmult window sizes
a69df3ad2 Merge bitcoin-core/secp256k1#816: Improve checks at top of _fe_negate methods
22d25c8e0 Add another ecmult_multi test
515e7953c Improve checks at top of _fe_negate methods
26a022a3a ci: Remove STATICPRECOMPUTATION
10461d8bd precompute_ecmult: Always compute all tables up to default WINDOW_G
be6944ade Merge bitcoin-core/secp256k1#1042: Follow-ups to making all tables fully static
e05da9e48 Fix c++ build
c45386d99 Cleanup preprocessor indentation in precompute{,d}_ecmult{,_gen}
19d96e15f Split off .c file from precomputed_ecmult.h
1a6691ada Split off .c file from precomputed_ecmult_gen.h
bb3633141 Simplify precompute_ecmult_print_*
38cd84a0c Compute ecmult tables at runtime for tests_exhaustive
e458ec26d Move ecmult table computation code to separate file
fc1bf9f15 Split ecmult table computation and printing
31feab053 Rename function secp256k1_ecmult_gen_{create_prec -> compute}_table
725370c3f Rename ecmult_gen_prec -> ecmult_gen_compute_table
075252c1b Rename ecmult_static_pre_g -> precomputed_ecmult
7cf47f72b Rename ecmult_gen_static_prec_table -> precomputed_ecmult_gen
f95b8106d Rename gen_ecmult_static_pre_g -> precompute_ecmult
bae77685e Rename gen_ecmult_gen_static_prec_table -> precompute_ecmult_gen
0559fc6e4 Merge bitcoin-core/secp256k1#988: Make signing table fully static
7dfceceea build: Remove #undef hack for ASM in the precomputation programs
bb36fe9be ci: Test `make precomp`
d94a37a20 build: Remove CC_FOR_BUILD stuff
ad63bb4c2 build: Prebuild and distribute ecmult_gen table
ac49361ed prealloc: Get rid of manual memory management for prealloc contexts
6573c08f6 ecmult_gen: Tidy precomputed file and save space
5eba83f17 ecmult_gen: Precompute tables for all values of ECMULT_GEN_PREC_BITS
5d0dbef01 Merge bitcoin-core/secp256k1#942: Verify that secp256k1_ge_set_gej_zinv does not operate on infinity.
486205aa6 Merge bitcoin-core/secp256k1#920: Test all ecmult functions with many j*2^i combinations
fdb33dd12 refactor: Make PREC_BITS a parameter of ecmult_gen_build_prec_table
5eb519e1f ci: reduce TEST_ITERS in memcheck run
e2cf77328 Test ecmult functions for all i*2^j for j=0..255 and odd i=1..255.
61ae37c61 Merge bitcoin-core/secp256k1#1022: build: Windows DLL additions
4f01840b8 Merge bitcoin-core/secp256k1#1027: build: Add a check that Valgrind actually supports a host platform
6ad908aa0 Merge bitcoin-core/secp256k1#1008: bench.c: add `--help` option and ci: move env variables
592661c22 ci: move test environment variable declaration to .cirrus.yml
dcbe84b84 bench: add --help option to bench.
099bad945 Comment and check a parameter for inf in secp256k1_ecmult_const.
6c0be857f Verify that secp256k1_ge_set_gej_zinv does not operate on infinity. a->x and a->y should not be used if the infinity flag is set.
490022745 Merge bitcoin-core/secp256k1#1025: build: replace backtick command substitution with $()
7c7ce872a build: Add a check that Valgrind actually supports a host platform
a4875e30a refactor: Move default callbacks to util.h
4c94c55bc doc: Remove obsolete hint for valgrind stack size
510622699 exhaustive_tests: Fix with ecmult_gen table with custom generator
e1a76530d refactor: Make generator a parameter of ecmult_gen_create_prec_table
9ad09f691 refactor: Rename program that generates static ecmult_gen table
8ae18f1ab refactor: Rename file that contains static ecmult_gen table
00d2fa116 ecmult_gen: Make code consistent with comment
3b0c2185e ecmult_gen: Simplify ecmult_gen context after making table static
2b7c7497e build: replace backtick command substitution with $()
49f608de4 Merge bitcoin-core/secp256k1#1004: ecmult: fix definition of STRAUSS_SCRATCH_OBJECTS
c0cd7de6d build: add -no-undefined to libtool LDFLAGS
fe32a79d3 build: pass win32-dll to LT_INIT
60bf8890d ecmult: fix definition of STRAUSS_SCRATCH_OBJECTS
fecf436d5 Merge bitcoin-core/secp256k1#1019: build: don't append valgrind CPPFLAGS if not installed (macOS)
2e5e4b67d Merge bitcoin-core/secp256k1#1020: doc: remove use of <0xa0> "no break space"
812ff5c74 doc: remove use of 0xa0 "no break space"
214042a17 build: don't append valgrind CPPFLAGS if not installed
e43ba02cf refactor: Decouple table generation and ecmult_gen context
22dc2c0a0 ecmult_gen: Move table creation to new file and force static prec
793ad9016 Merge bitcoin-core/secp256k1#1010: doc: Minor fixes in safegcd_implementation.md
dc9b6853b doc: Minor fixes in safegcd_implementation.md
ea5e8a9c4 Merge bitcoin-core/secp256k1#1012: Fix typos
233297579 Fix typos
7006f1b97 Merge bitcoin-core/secp256k1#1011: ci: Enable -g if we set CFLAGS manually
72de1359e ci: Enable -g if we set CFLAGS manually
74c34e727 Merge bitcoin-core/secp256k1#1009: refactor: Use (int)&(int) in boolean context to avoid compiler warning
16d132215 refactor: Use (int)&(int) in boolean context to avoid compiler warning
c74a7b7e5 Merge bitcoin-core/secp256k1#1007: doc: Replace apoelstra's GPG key by jonasnick's GPG key
3b157c48e doc: Suggest keys.openpgp.org as keyserver in SECURITY.md
73a7472cd doc: Replace apoelstra's GPG key by jonasnick's GPG key
515a5dbd0 Merge bitcoin-core/secp256k1#991: Merge all "external" benchmarks into a single bench binary
af6abcb3d Make bench support selecting which benchmarks to run
9f56bdf5b Merge bench_schnorrsig into bench
3208557ae Merge bench_recover into bench
855e18d8a Merge bench_ecdh into bench
2a7be678a Combine bench_sign and bench_verify into single bench
8fa41201b Merge bitcoin-core/secp256k1#1002: Make aux_rnd32==NULL behave identical to 0x0000..00.
5324f8942 Make aux_rnd32==NULL behave identical to 0x0000..00.
21c188b3c Merge bitcoin-core/secp256k1#943: VERIFY_CHECK precondition for secp256k1_fe_set_int.
3e7b2ea19 Merge bitcoin-core/secp256k1#999: bench_ecmult: improve clarity of output
23e2f6672 bench: don't return 1 in have_flag() if argc = 1
96b1ad2ea bench_ecmult: improve clarity of output
20d791edf Merge bitcoin-core/secp256k1#989: Shared benchmark format for command line and CSV outputs
aa1b889b6 Merge bitcoin-core/secp256k1#996: Fix G.y parity in sage code
044d95630 Fix G.y parity in sage code
b4b130678 create csv file from the benchmark output
26a255beb Shared benchmark format for command line and CSV outputs
9526874d1 Merge bitcoin-core/secp256k1#810: Avoid overly-wide multiplications in 5x52 field mul/sqr
920a0e5fa Merge bitcoin-core/secp256k1#952: Avoid computing out-of-bounds pointer.
f34b5cae0 Merge bitcoin-core/secp256k1#983: [RFC] Remove OpenSSL testing support
297ce8209 Merge bitcoin-core/secp256k1#966: Make aux_rand32 arg to secp256k1_schnorrsig_sign const
288864013 VERIFY_CHECK precondition for secp256k1_fe_set_int.
d49011f54 Make _set_fe_int( . , 0 ) set magnitude to 0
bc08599e7 Remove OpenSSL testing support
10f9bd84f Merge bitcoin-core/secp256k1#987: Fix unused parameter warnings when building without VERIFY
189f6bcfe Fix unused parameter warnings when building without VERIFY
da0092bcc Merge bitcoin-core/secp256k1#986: tests: remove `secp256k1_fe_verify` from tests.c and modify `_fe_from_storage` to call `_fe_verify`
d43993724 tests: remove `secp256k1_fe_verify` from tests.c and modify `secp256k1_fe_from_storage` to call `secp256k1_fe_verify`
2a3a97c66 Merge bitcoin-core/secp256k1#976: `secp256k1_schnorrsig_sign_internal` should be static
aa5d34a8f Merge bitcoin-core/secp256k1#783: Make the public API docs more consistent and explicit
72713872a Add missing static to secp256k1_schnorrsig_sign_internal
db4667d5e Make aux_rand32 arg to secp256k1_schnorrsig_sign const
9a5a87e0f Merge bitcoin-core/secp256k1#956: Replace ecmult_context with a generated static array.
20abd52c2 Add tests for pre_g tables.
6815761cf Remove ecmult_context.
f20dcbbad Correct typo.
16a3cc07e Generate ecmult_static_pre_g.h
8de2d86a0 Bump memory limits in advance of making the ecmult context static.
d7ec49a68 Merge bitcoin-core/secp256k1#969: ci: Fixes after Debian release
5d5c74a05 tests: Rewrite code to circument potential bug in clang
3d2f492ce ci: Install libasan6 (instead of 5) after Debian upgrade
be8d9c262 Merge bitcoin-core/secp256k1#965: gen_context: Don't use any ASM
aeece4459 gen_context: Don't use any ASM
7688a4f13 Merge bitcoin-core/secp256k1#963: "Schnorrsig API overhaul" fixups
90e83449b ci: Add C++ test
adec5a163 Add missing null check for ctx and input keys in the public API
f4edfc758 Improve consistency for NULL arguments in the public interface
f698caaff Use unsigned char consistently for byte arrays
b5b8e7b71 Don't declare constants twice
769528f30 Don't use string literals for char arrays without NUL termination
2cc3cfa58 Fix -Wmissing-braces warning in clang
0440945fb Merge #844: schnorrsig API overhaul
ec3aaa501 Merge #960: tests_exhaustive: check the result of secp256k1_ecdsa_sign
a1ee83c65 tests_exhaustive: check the result of secp256k1_ecdsa_sign
253f90cde Merge bitcoin-core/secp256k1#951: configure: replace AC_PATH_PROG to AC_CHECK_PROG
446d28d9d Merge bitcoin-core/secp256k1#944: Various improvements related to CFLAGS
0302138f7 ci: Make compiler warning into errors on CI
b924e1e60 build: Ensure that configure's compile checks default to -O2
7939cd571 build: List *CPPFLAGS before *CFLAGS like on the compiler command line
595e8a35d build: Enable -Wcast-align=strict warning
07256267f build: Use own variable SECP_CFLAGS instead of touching user CFLAGS
4866178df Merge bitcoin-core/secp256k1#955: Add random field multiply/square tests
75ce488c2 Merge bitcoin-core/secp256k1#959: tests: really test the non-var scalar inverse
41ed13942 tests: really test the non-var scalar inverse
5f6ceafcf schnorrsig: allow setting MSGLEN != 32 in benchmark
fdd06b796 schnorrsig: add tests for sign_custom and varlen msg verification
d8d806aaf schnorrsig: add extra parameter struct for sign_custom
a0c3fc177 schnorrsig: allow signing and verification of variable length msgs
5a8e4991a Add secp256k1_tagged_sha256 as defined in BIP-340
b6c0b72fb schnorrsig: remove noncefp args from sign; add sign_custom function
bdf19f105 Add random field multiply/square tests
9be7b0f08 Avoid computing out-of-bounds pointer.
a4642fa15 configure: replace AC_PATH_PROG to AC_CHECK_PROG
442cee5ba schnorrsig: add algolen argument to nonce_function_hardened
df3bfa12c schnorrsig: clarify result of calling nonce_function_bip340 without data
99e861481 README: mention schnorrsig module
b53e0cd61 Avoid overly-wide multiplications

git-subtree-dir: src/secp256k1
git-subtree-split: 0fa84f869d51e1b71113d81fcd518ebcee08709a
delta1 added a commit to delta1/elements that referenced this pull request Aug 8, 2023
b911b3cbd5 Merge BlockstreamResearch/secp256k1-zkp#265: bppp: Fix test for invalid sign byte again
5bf57590bf bppp: Fix test for invalid sign byte again
b2ccc8d9fd Merge BlockstreamResearch/secp256k1-zkp#260: Finish sync to upstream
395e65e9f1 Merge branch 'master' into sync-upstream
394e09ee84 musig: change test vector generation code shebang from python to python3
aa3edea119 scalar: Remove unused secp256k1_scalar_chacha20
167194bede rangeproof: Use util functions for writing big endian
82777bba34 bppp: Fix test for invalid sign byte
54b37db953 build: Fix linkage of extra binaries in -zkp modules
9e96a2e9d8 hsort tests: Don't call secp256k1_testrand_int(0)
80187089ff Merge commits '4494a369 3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
50e20fa7d4 Merge BlockstreamResearch/secp256k1-zkp#257: Upstream PRs 1314, 1317, 1318, 1316, 1327, 1310, 1328, 1333, 1330, 1334, 1337, 1341, 1339, 1350, 1349, 1338, 1129, 1347, 1336, 1295, 1354, 1355, 1356
525b661f83 bppp/build: Fix linkage of benchmark
4c70cc9bf5 Suppress wrong/buggy warning in MSVC <19.33
579999b425 scalar: adjust muladd2 to new int128 interface
b160486766 ecdsa_adaptor: add missing include
74d9073414 Merge commits '83186db3 e9e4526a 5f7903c7 d373a721 09df0bfb 20a5da5f 908e02d5 d75dc59b debf3e5c bf29f8d0 60556c9f cb1a5927 67214f5f 45c5ca76 30574f22 0702ecb0 705ce7ed 3c1a0fd3 10836832 926dd3e9 ac43613d fd491ea1 799f4eec ' into temp-merge-1356
26392da2fb Merge bitcoin-core/secp256k1#1386: ci: print $ELLSWIFT in cirrus.sh
4692478853 ci: print $ELLSWIFT in cirrus.sh
c734c64278 Merge bitcoin-core/secp256k1#1384: build: enable ellswift module via SECP_CONFIG_DEFINES
78ca880788 build: enable ellswift module via SECP_CONFIG_DEFINES
0e00fc7d10 Merge bitcoin-core/secp256k1#1383: util: remove unused checked_realloc
b097a466c1 util: remove unused checked_realloc
e593ed5685 musig: ensure point_load output is normalized
7a07f3d33f Merge commits '3bab71cf 4258c54f 566faa17 9ce9984f 04bf3f67 5be353d6 2e035af2 5b0444a3 a6f4bcf6 5ec1333d f6bef03c 1f33bb2b 1c895367 6b7e5b71 596b336f 4b84f4bf 024a4094 222ecaf6 4b0f711d 3c818388 f30c7486 1cf15ebd 24c768ae 341cc197 c63ec88e 54d34b6c 073d98a0 9eb6934f ab5a9171 fb3a8063 006ddc1f 3353d3c7 b54a0672 7d4f86d2 e8295d07 3e3d125b acf5c55a ' into temp-merge-1312
2bd5f3e618 Merge bitcoin-core/secp256k1#1382: refactor: Drop unused cast
a9a5c24de2 Merge commits '56582094 427bc3cd 0cf2fb91 9c8c4f44 70be3cad f16a709f 464a9115 1d8f3675 afd8b23b 2bca0a5c 2d51a454 4e682626 a0f4644f 145078c4 7b7503da ec98fced 346a053d ' into temp-merge-1269
4f8c5bd761 refactor: Drop unused cast
bfeae121fb Merge BlockstreamResearch/secp256k1-zkp#255: musig: change test vector generation code shebang from python to python3
ea478beec6 musig: change test vector generation code shebang from python to python3
d47e4d40ca Merge BlockstreamResearch/secp256k1-zkp#252: Upstream PRs 1113, 1225, 1227, 1229, 1223
dc733595b0 Merge commits 'df323b5c 3295aa14 ef4f8bd0 90b513aa bdf39000 ' into temp-merge-1223
3937cefce6 Merge BlockstreamResearch/secp256k1-zkp#249: Upstream PRs 1160, 1193, 1169, 1190, 1192, 1194, 1196, 1195, 1170, 1172, 1200, 1199, 1203, 1201, 1206, 1078, 1209, 979, 1212, 1218, 1217, 1221, 1222
897c765a49 Merge BlockstreamResearch/secp256k1-zkp#251: Update sync-upstream with master
53bc63f9f9 Merge BlockstreamResearch/secp256k1-zkp#245: scalar: Remove unused secp256k1_scalar_chacha20
860360eed4 scalar: Remove unused secp256k1_scalar_chacha20
3970a7292a rangeproof: Use util functions for writing big endian
afe7e649ee Merge BlockstreamResearch/secp256k1-zkp#248: bppp: Fix and improve test for invalid sign byte
1a6d93f8b6 Merge BlockstreamResearch/secp256k1-zkp#250: ci: Always define EXPERIMENTAL variable
3372993060 bppp: Fix test for invalid sign byte
7e9193666f ci: Always define EXPERIMENTAL variable
0d540ec942 Merge commits '88e80722 ff8edf89 f29a3270 a7a7bfaf a01a7d86 b1579cf5 ad7433b1 233822d8 5fbff5d3 2b77240b 1bff2005 e1817a6f 5596ec5c 8ebe5c52 1cca7c17 1b21aa51 cbd25559 09b1d466 57573187 8962fc95 9d1b458d eb8749fc 6048e6c0 ' into temp-merge-1222
7aa9887128 Merge pull request ElementsProject#246 from jonasnick/temp-merge-1187
304fc88557 Merge commits '9a8d65f0 75d7b7f5 665ba77e 3f57b9f7 eacad90f 01b819a8 31ed5386 2a39ac16 0eb30004 cbe41ac1 cc3b8a4f ' into temp-merge-1187
58e27bc2d2 Merge BlockstreamResearch/secp256k1-zkp#244: sync-upstream.sh: Add "git show --remerge-diff" tip
c545fdc374 Merge bitcoin-core/secp256k1#1298: Remove randomness tests
0a99156871 sync-upstream.sh: Add "git show --remerge-diff" tip
6c54db1987 Merge commits '2286f809 751c4354 477f02c4 e3f84777 5c789dcd 8c949f56 21ffe4b2 ' into temp-merge-1055
30fc9d6551 Merge BlockstreamResearch/secp256k1-zkp#242: sync-upstream.sh: Fix position of "-b" option in reproduce command
9b6a1c384d sync-upstream.sh: Fix position of "-b" option in reproduce command
b40e2d30b7 Merge bitcoin-core/secp256k1#1378: ellswift: fix probabilistic test failure when swapping sides
e996d076da Merge commits '44916ae9 86e3b38a ddf2b291 6138d73b e40fd277 ' into temp-merge-1156
533571d6cf Merge BlockstreamResearch/secp256k1-zkp#239: sync-upstream: allows providing the local branch via cli
05b207e969 sync-upstream: allows providing the local branch via cli
64717a7b16 Merge commits '8b013fce 485f608f 44c2452f cd470333 accadc94 43756da8 af65d30c 63a3565e 6a873cc4 3efeb9da 9f8a13dc 694ce8fb a43e982b e13fae48 c2ee9175 ' into temp-merge-1146
9a981068ce Merge commits '8b013fce 485f608f 44c2452f cd470333 accadc94 43756da8 ' into temp-merge-1115
c424e2fb43 ellswift: fix probabilistic test failure when swapping sides
907a67212e Merge bitcoin-core/secp256k1#1313: ci: Test on development snapshots of GCC and Clang
0f7657d59c Merge bitcoin-core/secp256k1#1366: field: Use `restrict` consistently in fe_sqrt
cc55757552 Merge bitcoin-core/secp256k1#1340: clean up in-comment Sage code (refer to secp256k1_params.sage, update to Python3)
600c5adcd5 clean up in-comment Sage code (refer to secp256k1_params.sage, update to Python3)
981e5be38c ci: Fix typo in comment
e9e9648219 ci: Reduce number of macOS tasks from 28 to 8
609093b387 ci: Add x86_64 Linux tasks for gcc and clang snapshots
1deecaaf3b ci: Install development snapshots of gcc and clang
b79ba8aa4c field: Use `restrict` consistently in fe_sqrt
c9ebca95f9 Merge bitcoin-core/secp256k1#1363: doc: minor ellswift.md updates
afd7eb4a55 Merge bitcoin-core/secp256k1#1371: Add exhaustive tests for ellswift (with create+decode roundtrip)
2792119278 Add exhaustive test for ellswift (create+decode roundtrip)
c7d900ffd1 doc: minor ellswift.md updates
332af315fc Merge bitcoin-core/secp256k1#1344: group: save normalize_weak calls in `secp256k1_ge_is_valid_var`/`secp256k1_gej_eq_x_var`
9e6d1b0e9b Merge bitcoin-core/secp256k1#1367: build: Improvements to symbol visibility logic on Windows (attempt 3)
0aacf64352 Merge bitcoin-core/secp256k1#1370: Corrected some typos
b6b9834e8d small fixes
07c0e8b82e group: remove unneeded normalize_weak in `secp256k1_gej_eq_x_var`
3fc1de5c55 Merge bitcoin-core/secp256k1#1364: Avoid `-Wmaybe-uninitialized` when compiling with `gcc -O1`
fb758fe8d6 Merge bitcoin-core/secp256k1#1323: tweak_add: fix API doc for tweak=0
c6cd2b15a0 ci: Add task for static library on Windows + CMake
020bf69a44 build: Add extensive docs on visibility issues
0196e8ade1 build: Introduce `SECP256k1_DLL_EXPORT` macro
9f1b1904a3 refactor: Replace `SECP256K1_API_VAR` with `SECP256K1_API`
ae9db95cea build: Introduce `SECP256K1_STATIC` macro for Windows users
7966aee31d Merge bitcoin-core/secp256k1#1369: ci: Print commit in Windows container
a7bec34231 ci: Print commit in Windows container
249c81eaa3 Merge bitcoin-core/secp256k1#1368: ci: Drop manual checkout of merge commit
98579e297b ci: Drop manual checkout of merge commit
5b9f37f136 ci: Add `CFLAGS: -O1` to task matrix
a6ca76cdf2 Avoid `-Wmaybe-uninitialized` when compiling with `gcc -O1`
0fa84f869d Merge bitcoin-core/secp256k1#1358: tests: introduce helper for non-zero `random_fe_test()` results
5a95a268b9 tests: introduce helper for non-zero `random_fe_test` results
304421d57b tests: refactor: remove duplicate function `random_field_element_test`
3aef6ab8e1 Merge bitcoin-core/secp256k1#1345: field: Static-assert that int args affecting magnitude are constant
4494a369b6 Merge bitcoin-core/secp256k1#1357: tests: refactor: take use of `secp256k1_ge_x_on_curve_var`
799f4eec27 Merge bitcoin-core/secp256k1#1356: ci: Adjust Docker image to Debian 12 "bookworm"
c862a9fb49 ci: Adjust Docker image to Debian 12 "bookworm"
a1782098a9 ci: Force DWARF v4 for Clang when Valgrind tests are expected
7d8d5c86df tests: refactor: take use of `secp256k1_ge_x_on_curve_var`
8a7273465b Help the compiler prove that a loop is entered
fd491ea1bb Merge bitcoin-core/secp256k1#1355: Fix a typo in the error message
ac43613d25 Merge bitcoin-core/secp256k1#1354: Add ellswift to CHANGELOG
67887ae65c Fix a typo in the error message
926dd3e962 Merge bitcoin-core/secp256k1#1295: abi: Use dllexport for mingw builds
10836832e7 Merge bitcoin-core/secp256k1#1336: Use `__shiftright128` intrinsic in `secp256k1_u128_rshift` on MSVC
7c7467ab7f Refer to ellswift.md in API docs
c32ffd8d8c Add ellswift to CHANGELOG
3c1a0fd37f Merge bitcoin-core/secp256k1#1347: field: Document return value of fe_sqrt()
705ce7ed8c Merge bitcoin-core/secp256k1#1129: ElligatorSwift + integrated x-only DH
0702ecb061 Merge bitcoin-core/secp256k1#1338: Drop no longer needed `#include "../include/secp256k1.h"`
5779137457 field: Document return value of fe_sqrt()
90e360acc2 Add doc/ellswift.md with ElligatorSwift explanation
4f091847c2 Add ellswift testing to CI
1bcea8c57f Add benchmarks for ellswift module
2d1d41acf8 Add ctime tests for ellswift module
df633cdeba Add _prefix and _bip324 ellswift_xdh hash functions
9695deb351 Add tests for ellswift module
c47917bbd6 Add ellswift module implementing ElligatorSwift
79e5b2a8b8 Add functions to test if X coordinate is valid
a597a5a9ce Add benchmark for key generation
30574f22ea Merge bitcoin-core/secp256k1#1349: Normalize ge produced from secp256k1_pubkey_load
45c5ca7675 Merge bitcoin-core/secp256k1#1350: scalar: introduce and use `secp256k1_{read,write}_be64` helpers
f1652528be Normalize ge produced from secp256k1_pubkey_load
7067ee54b4 tests: add tests for `secp256k1_{read,write}_be64`
740528caad scalar: use newly introduced `secp256k1_{read,write}_be64` helpers (4x64 impl.)
be8ff3a02a field: Static-assert that int args affecting magnitude are constant
efa76c4bf7 group: remove unneeded normalize_weak in `secp256k1_ge_is_valid_var`
67214f5f7d Merge bitcoin-core/secp256k1#1339: scalar: refactor: use `secp256k1_{read,write}_be32` helpers
cb1a59275c Merge bitcoin-core/secp256k1#1341: docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xonly_,}pub`
f3644287b1 docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xonly_,}pub`
887183e7de scalar: use `secp256k1_{read,write}_be32` helpers (4x64 impl.)
52b84238de scalar: use `secp256k1_{read,write}_be32` helpers (8x32 impl.)
e449af6872 Drop no longer needed `#include "../include/secp256k1.h"`
5b7bf2e9d4 Use `__shiftright128` intrinsic in `secp256k1_u128_rshift` on MSVC
60556c9f49 Merge bitcoin-core/secp256k1#1337: ci: Fix error D8037 in `cl.exe` (attempt 2)
db29bf220c ci: Remove quirk that runs dummy command after wineserver
c7db4942b3 ci: Fix error D8037 in `cl.exe`
7dae115861 Revert "ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe"
bf29f8d0a6 Merge bitcoin-core/secp256k1#1334: fix input range comment for `secp256k1_fe_add_int`
605e07e365 fix input range comment for `secp256k1_fe_add_int`
debf3e5c08 Merge bitcoin-core/secp256k1#1330: refactor: take use of `secp256k1_scalar_{zero,one}` constants
d75dc59b58 Merge bitcoin-core/secp256k1#1333: test: Warn if both `VERIFY` and `COVERAGE` are defined
ade5b36701 tests: add checks for scalar constants `secp256k1_scalar_{zero,one}`
e83801f5db test: Warn if both `VERIFY` and `COVERAGE` are defined
654246c635 refactor: take use of `secp256k1_scalar_{zero,one}` constants
908e02d596 Merge bitcoin-core/secp256k1#1328: build: Bump MSVC warning level up to W3
1549db0ca5 build: Level up MSVC warnings
20a5da5fb1 Merge bitcoin-core/secp256k1#1310: Refine release process
05873bb6b1 tweak_add: fix API doc for tweak=0
ad84603297 release process: clarify change log updates
6348bc7eee release process: fix process for maintenance release
79fa50b082 release process: mention targeted release schedule
165206789b release process: add sanity checks
09df0bfb23 Merge bitcoin-core/secp256k1#1327: ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe
27504d5c94 ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe
d373a7215b Merge bitcoin-core/secp256k1#1316: Do not invoke fe_is_zero on failed set_b32_limit
6433175ffe Do not invoke fe_is_zero on failed set_b32_limit
5f7903c73c Merge bitcoin-core/secp256k1#1318: build: Enable -DVERIFY for precomputation binaries
e9e4526a4e Merge bitcoin-core/secp256k1#1317: Make fe_cmov take max of magnitudes
5768b50229 build: Enable -DVERIFY for precomputation binaries
31b4bbee1e Make fe_cmov take max of magnitudes
ff33018fe7 Merge BlockstreamResearch/secp256k1-zkp#232: Backports from libsecp256k1 v0.3.2
39407c3f59 Mark stack variables as early clobber for technical correctness
56a5d41429 Bugfix: mark outputs as early clobber in scalar x86_64 asm
c8c0f55a11 ct: Be cautious and use volatile trick in more "conditional" paths
3e94289966 ct: Use volatile trick in scalar_cond_negate
83186db34a Merge bitcoin-core/secp256k1#1314: release cleanup: bump version after 0.3.2
95448ef2f8 release cleanup: bump version after 0.3.2
acf5c55ae6 Merge bitcoin-core/secp256k1#1312: release: Prepare for 0.3.2
d490ca2046 release: Prepare for 0.3.2
3e3d125b83 Merge bitcoin-core/secp256k1#1309: changelog: Catch up
e8295d07ab Merge bitcoin-core/secp256k1#1311: Revert "Remove unused scratch space from API"
697e1ccf4a changelog: Catch up
3ad1027a40 Revert "Remove unused scratch space from API"
76b43f3443 changelog: Add entry for ElementsProject#1303
7d4f86d242 Merge bitcoin-core/secp256k1#1307: Mark more assembly outputs as early clobber
b54a0672ef Merge bitcoin-core/secp256k1#1304: build: Rename arm to arm32 and check if it's really supported
c6bb29b303 build: Rename `64bit` to `x86_64`
8c9ae37a5a Add release note
edcba04c28 Merge BlockstreamResearch/secp256k1-zkp#231: musig: add note about missing verification to partial_sign to doc
03246457a8 autotools: Add `SECP_ARM32_ASM_CHECK` macro
ed4ba238e2 cmake: Add `check_arm32_assembly` function
350b4bd6e6 Mark stack variables as early clobber for technical correctness
0c729ba70d Bugfix: mark outputs as early clobber in scalar x86_64 asm
3353d3c753 Merge bitcoin-core/secp256k1#1207: Split fe_set_b32 into reducing and normalizing variants
4ab4ec38a0 musig: add note about missing verification to partial_sign to doc
f50ad76004 musig: update version number of BIP
5b32602295 Split fe_set_b32 into reducing and normalizing variants
006ddc1f42 Merge bitcoin-core/secp256k1#1306: build: Make tests work with external default callbacks
1907f0f166 build: Make tests work with external default callbacks
fb3a806365 Merge bitcoin-core/secp256k1#1133: schnorrsig: Add test vectors for variable-length messages
cd54ac7c1c schnorrsig: Improve docs of schnorrsig_sign_custom
28687b0312 schnorrsig: Add BIP340 varlen test vectors
97a98bed1e schnorrsig: Refactor test vector code to allow varlen messages
ab5a917128 Merge bitcoin-core/secp256k1#1303: ct: Use more volatile
9eb6934f69 Merge bitcoin-core/secp256k1#1305: Remove unused scratch space from API
073d98a076 Merge bitcoin-core/secp256k1#1292: refactor: Make 64-bit shift explicit
17fa21733a ct: Be cautious and use volatile trick in more "conditional" paths
5fb336f9ce ct: Use volatile trick in scalar_cond_negate
712e7f8722 Remove unused scratch space from API
54d34b6c24 Merge bitcoin-core/secp256k1#1300: Avoid normalize conditional on VERIFY
c63ec88ebf Merge bitcoin-core/secp256k1#1066: Abstract out and merge all the magnitude/normalized logic
7fc642fa25 Simplify secp256k1_fe_{impl_,}verify
4e176ad5b9 Abstract out verify logic for fe_is_square_var
4371f98346 Abstract out verify logic for fe_add_int
89e324c6b9 Abstract out verify logic for fe_half
283cd80ab4 Abstract out verify logic for fe_get_bounds
d5aa2f0358 Abstract out verify logic for fe_inv{,_var}
3167646072 Abstract out verify logic for fe_from_storage
76d31e5047 Abstract out verify logic for fe_to_storage
1e6894bdd7 Abstract out verify logic for fe_cmov
be82bd8e03 Improve comments/checks for fe_sqrt
6ab35082ef Abstract out verify logic for fe_sqr
4c25f6efbd Abstract out verify logic for fe_mul
e179e651cb Abstract out verify logic for fe_add
7e7ad7ff57 Abstract out verify logic for fe_mul_int
65d82a3445 Abstract out verify logic for fe_negate
144670893e Abstract out verify logic for fe_get_b32
f7a7666aeb Abstract out verify logic for fe_set_b32
ce4d2093e8 Abstract out verify logic for fe_cmp_var
7d7d43c6dd Improve comments/check for fe_equal{,_var}
c5e788d672 Abstract out verify logic for fe_is_odd
d3f3fe8616 Abstract out verify logic for fe_is_zero
c701d9a471 Abstract out verify logic for fe_clear
19a2bfeeea Abstract out verify logic for fe_set_int
864f9db491 Abstract out verify logic for fe_normalizes_to_zero{,_var}
6c31371120 Abstract out verify logic for fe_normalize_var
e28b51f522 Abstract out verify logic for fe_normalize_weak
b6b6f9cb97 Abstract out verify logic for fe_normalize
7fa5195559 Bugfix: correct SECP256K1_FE_CONST mag/norm fields
e5cf4bf3ff build: Rename `arm` to `arm32`
b29566c51b Merge magnitude/normalized fields, move/improve comments
97c63b9039 Avoid normalize conditional on VERIFY
341cc19726 Merge bitcoin-core/secp256k1#1299: Infinity handling: ecmult_const(infinity) works, and group verification
6ec3731e8c Simplify test PRNG implementation
bbc834467c Avoid secp256k1_ge_set_gej_zinv with uninitialized z
0a2e0b2ae4 Make secp256k1_{fe,ge,gej}_verify work as no-op if non-VERIFY
f20266722a Add invariant checking to group elements
a18821d5b1 Always initialize output coordinates in secp256k1_ge_set_gej
3086cb90ac Expose secp256k1_fe_verify to other modules
a0e696fd4d Make secp256k1_ecmult_const handle infinity
24c768ae09 Merge bitcoin-core/secp256k1#1301: Avoid using bench_verify_data as bench_sign_data; merge them
2e65f1fdbc Avoid using bench_verify_data as bench_sign_data; merge them
fb5bfa4eed Add static test vector for Xoshiro256++
1cf15ebd94 Merge bitcoin-core/secp256k1#1296: docs: complete interface description for `secp256k1_schnorrsig_sign_custom`
4eab2c2fd8 Merge BlockstreamResearch/secp256k1-zkp#230: norm arg: add prove test vectors
723e8ca8f7 Remove randomness tests
bc7c8db179 abi: Use dllexport for mingw builds
149c41cee1 docs: complete interface description for `secp256k1_schnorrsig_sign_custom`
f30c74866b Merge bitcoin-core/secp256k1#1270: cmake: Fix library ABI versioning
d1e48e5474 refactor: Make 64-bit shift explicit
b2e29e43d0 ci: Treat all compiler warnings as errors in "Windows (VS 2022)" task
3c81838856 Merge bitcoin-core/secp256k1#1289: cmake: Use full signature of `add_test()` command
755629bc03 cmake: Use full signature of `add_test()` command
bef448f9af cmake: Fix library ABI versioning
4b0f711d46 Merge bitcoin-core/secp256k1#1277: autotools: Clean up after adding Wycheproof
222ecaf661 Merge bitcoin-core/secp256k1#1284: cmake: Some improvements using `PROJECT_IS_TOP_LEVEL` variable
71f746c057 cmake: Include `include` directory for subtree builds
024a409484 Merge bitcoin-core/secp256k1#1240: cmake: Improve and document compiler flag checks
a8d059f76c cmake, doc: Document compiler flags
6ece1507cb cmake, refactor: Rename `try_add_compile_option` to `try_append_cflags`
19516ed3e9 cmake: Use `add_compile_options()` in `try_add_compile_option()`
4b84f4bf0f Merge bitcoin-core/secp256k1#1239: cmake: Bugfix and other improvements after bumping CMake up to 3.13
596b336ff6 Merge bitcoin-core/secp256k1#1234: cmake: Add dev-mode
6b7e5b717d Merge bitcoin-core/secp256k1#1275: build: Fix C4005 "macro redefinition" MSVC warnings in examples
1c89536718 Merge bitcoin-core/secp256k1#1286: tests: remove extra semicolon in macro
c4062d6b5d debug: move helper for printing buffers into util.h
f3126fdfec norm arg: remove prove edge tests which are now covered by vectors
847ed9ecb2 norm arg: add verification to prove vectors
7e977b3c50 autotools: Take VPATH builds into account when generating testvectors
2418d3260a autotools: Create src/wycheproof dir before creating file in it
8764034ed5 autotools: Make all "pregenerated" targets .PHONY
e1b9ce8811 autotools: Use same conventions for all pregenerated files
cf797ed2a4 norm arg: add prove test vectors
095c1e749c norm arg: add prove_const to tests
ce18267b66 Merge BlockstreamResearch/secp256k1-zkp#229: musig: Fix nits left open in ElementsProject#211
78ed0e09ca Merge BlockstreamResearch/secp256k1-zkp#227: Use relative #include paths and tidy header guards (as in upstream)
3858bad2c6 tests: remove extra semicolon in macro
1f33bb2b1c Merge bitcoin-core/secp256k1#1205: field: Improve docs +tests of secp256k1_fe_set_b32
e7fc61ff16 Merge BlockstreamResearch/secp256k1-zkp#228: Simple dedicated -zkp README
162da73e9a tests: Add debug helper for printing buffers
e9fd3dff76 field: Improve docs and tests of secp256k1_fe_set_b32
a0b51afc01 musig: VERIFY_CHECK preconditions of _musig_keyaggcoef_internal()
da7702844e extrakeys: Clarify comparison order of compare/sort functions
f6bef03c0a Merge bitcoin-core/secp256k1#1283: Get rid of secp256k1_fe_const_b
5431b9decd cmake: Make `SECP256K1_INSTALL` default depend on `PROJECT_IS_TOP_LEVEL`
5ec1333d4f Merge bitcoin-core/secp256k1#1285: bench: Make sys/time.h a system include
4d9d8f92d4 Simple dedicated -zkp README
e444d24bca Fix include guards: No _ prefix/suffix but _H suffix (as in upstream)
0eea7d97ab Use relative #include paths in tests (as in upstream)
c690d6df70 Use relative #include paths in benchmarks (as in upstream)
c565827c1a Use relative #include paths in ctime_test (as in upstream)
4eca406f4c Use relative #include paths in library (as in upstream)
68b16a1662 bench: Make sys/time.h a system include
162608cc98 cmake: Emulate `PROJECT_IS_TOP_LEVEL` for CMake<3.21
69e1ec0331 Get rid of secp256k1_fe_const_b
bf7bf8a64f norm arg: split norm_arg_zero into prove_edge and verify_zero_len
a70c4d4a8a norm arg: add test vector for |n| = 0
f5e4b16f0f norm arg: add test vector for sign bit malleability
c0de361fc5 norm arg: allow X and R to be the point at infinity
f22834f202 norm arg: add verify vector for n = [0], l = [0]
d8e7f3763b musig: move ge_{serialize,parse}_ext to module-independent file
050d9b2912 Merge BlockstreamResearch/secp256k1-zkp#226: bppp: align terminology with paper
ce5ba9e24d gitignore: Add CMakeUserPresets.json
0a446a312f cmake: Add dev-mode CMake preset
a6f4bcf6e1 Merge bitcoin-core/secp256k1#1231: Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h`
a273d74b2e cmake: Improve version comparison
6a58b483ef cmake: Use `if(... IN_LIST ...)` command
2445808c02 cmake: Use dedicated `GENERATOR_IS_MULTI_CONFIG` property
9f8703ef17 cmake: Use dedicated `CMAKE_HOST_APPLE` variable
8c2017035a cmake: Use recommended `add_compile_definitions` command
04d4cc071a cmake: Add `DESCRIPTION` and `HOMEPAGE_URL` options to `project` command
8a8b6536ef cmake: Use `SameMinorVersion` compatibility mode
5b0444a3b5 Merge bitcoin-core/secp256k1#1263: cmake: Make installation optional
47ac3d63cd cmake: Make installation optional
2e035af251 Merge bitcoin-core/secp256k1#1273: build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS`
5be353d658 Merge bitcoin-core/secp256k1#1279: tests: lint wycheproof's python script
08f4b1632d autotools: Move code around to tidy Makefile
2c63d17c1e bppp: align terminology with paper (gamma)
dbf2e4d3e1 bppp: align terminology with paper (mu, rho)
04bf3f6778 Merge bitcoin-core/secp256k1#1230: Build: allow static or shared but not both
9ce9984f32 Merge bitcoin-core/secp256k1#1265: Remove bits argument from secp256k1_wnaf_const{_xonly}
566faa17d3 Merge bitcoin-core/secp256k1#1267: doc: clarify process for patch releases
ef49a11d29 build: allow static or shared but not both
f4dd0419aa Merge BlockstreamResearch/secp256k1-zkp#225: sync-upstream: Use --autostash to handle uncommitted changes
35ada3b954 tests: lint wycheproof's python script
4258c54f4e Merge bitcoin-core/secp256k1#1276: autotools: Don't regenerate Wycheproof header automatically
529b54d922 autotools: Move Wycheproof header from EXTRA_DIST to noinst_HEADERS
06c67dea9f autotools: Don't regenerate Wycheproof header automatically
dc0657c762 build: Fix C4005 "macro redefinition" MSVC warnings in examples
1ecb94ebe9 build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS`
13c438cdee sync-upstream: Use --autostash to handle uncommitted changes
6ec1ff6040 Merge BlockstreamResearch/secp256k1-zkp#224: Backport of "ct: Use volatile "trick" in all fe/scalar cmov implementations"
96f4853850 ct: Use volatile "trick" in all fe/scalar cmov implementations
3bab71cf05 Merge bitcoin-core/secp256k1#1268: release cleanup: bump version after 0.3.1
656c6ea8d8 release cleanup: bump version after 0.3.1
346a053d4c Merge bitcoin-core/secp256k1#1269: changelog: Fix link
6a37b2a5ea changelog: Fix link
ec98fcedd5 Merge bitcoin-core/secp256k1#1266: release: Prepare for 0.3.1
1b6fb5593c doc: clarify process for patch releases
898e1c676e release: Prepare for 0.3.1
1d9a13fc26 changelog: Remove inconsistent newlines
0e091669a1 changelog: Catch up in preparation of 0.3.1
7b7503dac5 Merge bitcoin-core/secp256k1#1245: tests: Add Wycheproof ECDSA vectors
a575339c02 Remove bits argument from secp256k1_wnaf_const (always 256)
145078c418 Merge bitcoin-core/secp256k1#1118: Add x-only ecmult_const version with x specified as n/d
e5de454609 tests: Add Wycheproof ECDSA vectors
0f8642079b Add exhaustive tests for ecmult_const_xonly
4485926ace Add x-only ecmult_const version for x=n/d
a0f4644f7e Merge bitcoin-core/secp256k1#1252: Make position of * in pointer declarations in include/ consistent
4e682626a3 Merge bitcoin-core/secp256k1#1226: Add CMake instructions to release process
2d51a454fc Merge bitcoin-core/secp256k1#1257: ct: Use volatile "trick" in all fe/scalar cmov implementations
4a496a36fb ct: Use volatile "trick" in all fe/scalar cmov implementations
3d1f430f9f Make position of * in pointer declarations in include/ consistent
2bca0a5cbf Merge bitcoin-core/secp256k1#1241: build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
afd8b23b27 Merge bitcoin-core/secp256k1#1244: Suppress `-Wunused-parameter` when building for coverage analysis
1d8f367515 Merge bitcoin-core/secp256k1#1250: No need to subtract 1 before doing a right shift
3e43041be6 No need to subtract 1 before doing a right shift
3addb4c1e8 build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
0c07c82834 Add CMake instructions to release process
464a9115b4 Merge bitcoin-core/secp256k1#1242: Set ARM ASM symbol visibility to `hidden`
f16a709fd6 Merge bitcoin-core/secp256k1#1247: Apply Checks only in VERIFY mode.
70be3cade5 Merge bitcoin-core/secp256k1#1246: Typo
4ebd82852d Apply Checks only in VERIFY mode.
d1e7ca192d Typo
36b0adf1b9 build: remove warning until it's reproducible
5bb03c2911 Replace `SECP256K1_ECMULT_TABLE_VERIFY` macro by a function
9c8c4f443c Merge bitcoin-core/secp256k1#1238: build: bump CMake minimum requirement to 3.13
0cf2fb91ef Merge bitcoin-core/secp256k1#1243: build: Ensure no optimization when building for coverage analysis
fd2a408647 Set ARM ASM symbol visibility to `hidden`
4429a8c218 Suppress `-Wunused-parameter` when building for coverage analysis
8e79c7ed11 build: Ensure no optimization when building for coverage analysis
96dd062511 build: bump CMake minimum requirement to 3.13
427bc3cdcf Merge bitcoin-core/secp256k1#1236: Update comment for secp256k1_modinv32_inv256
647f0a5cb1 Update comment for secp256k1_modinv32_inv256
8e142ca410 Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h`
77445898a5 Remove `SECP256K1_INLINE` usage from examples
5658209459 Merge bitcoin-core/secp256k1#1228: release cleanup: bump version after 0.3.0
bdf39000b9 Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0
28e63f7ea7 release cleanup: bump version after 0.3.0
b40adf2360 release: prepare for 0.3.0
90b513aada Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1"
8be82d4362 cmake: Rename project to "libsecp256k1"
ef4f8bd025 Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions
756b61d451 readme: Use correct build type in CMake/Windows build instructions
3295aa149b Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake
92098d84cf changelog: Add entry for CMake
df323b5c14 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system
e1eb33724c ci: Add "x86_64: Windows (VS 2022)" task
10602b0030 cmake: Export config files
5468d70964 build: Add CMake-based build system
6048e6c03e Merge bitcoin-core/secp256k1#1222: Remove redundant checks.
eb8749fcd0 Merge bitcoin-core/secp256k1#1221: Update Changelog
5d8f53e312 Remove redudent checks.
9d1b458d5f Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
d232112fa7 Update Changelog
8962fc95bb Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b387 Update overflow check
1d25608900 Merge BlockstreamResearch/secp256k1-zkp#223: musig: Update to BIP v1.0.0-rc.4 (Check pubnonce in NonceGen vectors)
d23c23e24d musig: Update to BIP v1.0.0-rc.4 (Check pubnonce in NonceGen vectors)
c4862f6869 Merge BlockstreamResearch/secp256k1-zkp#215: musig: include pubkey in secnonce and compare when signing
a1ec2bb67b musig: add test for signing with wrong secnonce for a keypair
bd57a017aa musig: include pubkey in secnonce and compare when signing
5757318782 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e4cb Add secp256k1_fe_add_int function
4f57024d86 Merge BlockstreamResearch/secp256k1-zkp#211: Update musig module to BIP MuSig2 v1.0.0-rc.3
5660c13755 prevent optimization in algorithms
09b1d466db Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc78a6 doc: Describe Jacobi calculation in safegcd_implementation.md
6be01036c8 Add secp256k1_fe_is_square_var function
1de2a01c2b Native jacobi symbol algorithm
04c6c1b181 Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c7af Make secp256k1_i128_check_pow2 support -(2^n)
8ec6d111c8 Merge BlockstreamResearch/secp256k1-zkp#205: Bulletproofs++: Norm argument
cbd2555934 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa5175 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
d7fb25c8ca Make sure that bppp_log2 isn't called with value 0
e5a01d12c6 Rename buletproof_pp* to bppp*
c983186872 transcript: add tests
73edc75528 norm arg: add verification vectors
13ad32e814 norm arg: add tests for zero length and zero vectors
34c4847a6a ci: add bulletproofs
2574516483 Add testcases for bulletproofs++ norm arugment
46c7391154 Add norm argument verify API
b43dd83b43 musig: add missing static keyword to function
068e6a036a musig: add test vectors from BIP MuSig
36621d13be musig: update to BIP v1.0.0-rc.2 "Add ''pk'' arg to ''NonceGen''"
d717a4980b musig: update to BIP v0.8 "Switch from X-only to plain pk inputs."
304f1bc96d extrakeys: add pubkey_sort test vectors from BIP MuSig2
ae89051547 extrakeys: replace xonly_sort with pubkey_sort
98242fcdd9 extrakeys: add secp256k1_pubkey_cmp
73d5b6654d musig: update to BIP v0.7.0 (NonceGen)
060887e9d7 musig: update to BIP v0.5.1 "Rename ordinary tweaking to plain"
d9145455bb Add bulletproofs++ norm argument prove API
8638f0e0ce Add internal BP++ commit API
412f8f66a0 Add utility functions required in norm argument
420353d7da Add utilities for log2
17417d44f3 Add utilities from uncompressed Bulletproofs PR
48563c8c79 bulletproofs: add API functionality to generate a large set of generators
048f9f8642 bulletproofs: add new empty module
6162d577fe generator: cleanups in Pedersen/generator code
e4330341bd ci: Shutdown wineserver whenever CI script exits
9a5a611a21 build: Suppress stupid MSVC linker warning
739c53b19a examples: Extend sig examples by call that uses static context
914276e4d2 build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c1744 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc1de build: Add -Wreserved-identifier supported by clang
ca92a35d01 field: Simplify code in secp256k1_fe_set_b32
d93f62e369 field: Verify field element even after secp256k1_fe_set_b32 fails
8ebe5c5205 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5c2c Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721ccc Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e3148d ci: Do not set git's `user.{email,name}` config options
e1817a6f54 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff200588 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d18669d Drop no longer used Autoheader macros
c2415866c7 ci: Don't fetch git history
0ecf318851 ci: Use remote pull/merge ref instead of local git merge
0a6006989f Revert "Remove unused scalar_sqr"
87373f5145 MOVE ONLY: move Pedersen commitment stuff to generator module from rangeproof module
b1f1675375 Merge BlockstreamResearch/secp256k1-zkp#214: sync-upstream: Fix $REPRODUCE_COMMAND for "select"
cbe2815633 musig: update to BIP v0.4 "Allow the output of NonceAgg to be inf"
206017d67d musig: update to BIP v0.3 (NonceGen)
d800dd55db musig: remove test vectors
a58c7d29bd Merge BlockstreamResearch/secp256k1-zkp#213: Update macOS image for CI
e04c660b11 sync-upstream: Fix $REPRODUCE_COMMAND for "select"
3b2c675955 Update macOS image for CI
2b77240b3b Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6bebaee3 scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7f2d ci: add test job with -DVERIFY
620ba3d74b benchmarks: fix bench_scalar_split
5fbff5d348 Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d849 Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b140 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954f11 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c0a9 Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f94c Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc9ee contexts: Forbid randomizing secp256k1_context_static
4b6df5e33e contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf5fb Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229e03 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738d5b Ensure safety of ctz_debruijn implementation.
a01a7d86dc Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfaf3d Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a327092 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf89e2 Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785b26 Introduce SECP256K1_B macro for curve b coefficient
4934aa7995 Switch to exhaustive groups with small B coefficient
d4a6b58df7 Add `noverify_tests` to `.gitignore`
88e80722d2 Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec112 Rename CTIMETEST -> CTIMETESTS
74b026f05d Add runtime checking for DECLASSIFY flag
5e2e6fcfc0 Run ctime test in Linux MSan CI job
18974061a3 Make ctime tests building configurable
5048be17e9 Rename valgrind_ctime_test -> ctime_tests
6eed6c18de Update error messages to suggest msan as well
8e11f89a68 Add support for msan integration to checkmem.h
8dc64079eb Add compile-time error to valgrind_ctime_test
0db05a770e Abstract interactions with valgrind behind new checkmem.h
4f1a54e41d Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4f40 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48f50 refactor: Rename STTC to STATIC_CTX in tests
3385a2648d refactor: Rename global variables to uppercase in tests
e03ef86559 Make all non-API functions (except main) static
cbe41ac138 Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
203760023c tests: Add noverify_tests which is like tests but without VERIFY
e862c4af0c Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb3000417 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e3d7 refactor: Separate run_context_tests into static vs proper contexts
a4a09379b1 tests: Clean up and improve run_context_tests() further
fc90bb5695 refactor: Tidy up main()
f32a36f620 tests: Don't use global context for context tests
ce4f936c4f tests: Tidy run_context_tests() by extracting functions
18e0db30cb tests: Don't recreate global context in scratch space test
b19806122e tests: Use global copy of secp256k1_context_static instead of clone
2a39ac162e Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca284e2 Drop `SECP_CONFIG_DEFINES` from examples
31ed5386e8 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b2ae Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a8c7 Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90f69 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f774 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889f17 Clarify that the ABI-incompatible versions are earlier
881fc33d0c Consistency in naming of modules
665ba77e79 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f5ba Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a74688201 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fdadeb ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d21bb Do not define unused `HAVE_VALGRIND` macro
ad8647f548 Drop no longer relevant files from `.gitignore`
b627ba7050 Remove dependency on `src/libsecp256k1-config.h`
9ecf8149a1 Reduce font size in changelog
2dc133a67f Add more changelog entries
ac233e181a Add links to diffs to changelog
cee8223ef6 Mention semantic versioning in changelog
9a8d65f07f Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc290f7 release cleanup: bump version after 0.2.0
b6b360efaf doc: improve message of cleanup commit
21ffe4b22a Merge bitcoin-core/secp256k1#1055: Prepare initial release
e025ccdf74 release: prepare for initial release 0.2.0
6d1784a2e2 build: add missing files to EXTRA_DIST
8c949f56da Merge bitcoin-core/secp256k1#1173: Don't use compute credits for now
13bf1b6b32 changelog: make order of change types match keepachangelog.com
b1f992a552 doc: improve release process
7e5b22684f Don't use compute credits for now
a49e0940ad docs: Fix typo
2551cdac90 tests: Fix code formatting
c635c1bfd5 Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f2357c refactor: Add helper function secp256k1_context_is_proper()
ad39e2dc41 build: change package version to 0.1.0-dev
5c789dcd73 Merge bitcoin-core/secp256k1#1168: Replace deprecated context flags with NONE in benchmarks and tests
d6dc0f4ae3 tests: Switch to NONE contexts in module tests
0c8a5caddd tests: Switch to NONE contexts in tests.c
86540e9e1f tests: add test for deprecated flags and rm them from run_context
caa0ad631e group: add gej_eq_var
37ba744f5b tests: Switch to NONE contexts in exhaustive and ctime tests
8d7a9a8eda benchmarks: Switch to NONE contexts
90618e9263 doc: move CHANGELOG from doc/ to root directory
e3f84777eb Merge bitcoin-core/secp256k1#1126: API cleanup with respect to contexts
4386a2306c examples: Switch to NONE contexts
7289b51d31 docs: Use doxygen style if and only if comment is user-facing
e7d0185c90 docs: Get rid of "initialized for signing" terminology
06126364ad docs: Tidy and improve docs about contexts and randomization
e02d6862bd selftest: Expose in public API
e383fbfa66 selftest: Rename internal function to make name available for API
d2c6d48de3 tests: Use new name of static context
53796d2b24 contexts: Rename static context
72fedf8a6c docs: Improve docs for static context
316ac7625a contexts: Deprecate all context flags except SECP256K1_CONTEXT_NONE
477f02c4de Merge bitcoin-core/secp256k1#1165: gitignore: Add *.sage.py files autogenerated by sage [skip ci]
092be61c5e gitignore: Add *.sage.py files autogenerated by sage
1a553ee8be docs: Change signature "validation" to "verification"
ee7341fbac docs: Never require a verification context
751c4354d5 Merge bitcoin-core/secp256k1#1152: Update macOS image for CI
2286f80902 Merge bitcoin-core/secp256k1#993: Enable non-experimental modules by default
d216475205 test secp256k1_i128_to_i64
4bc429019d Add a secp256k1_i128_to_u64 function.
e40fd277b7 Merge bitcoin-core/secp256k1#1156: Followups to int128_struct arithmetic
99bd335599 Make int128 overflow test use secp256k1_[ui]128_mul
a8494b02bf Use compute credits for macOS jobs
3afce0af7c Avoid signed overflow in MSVC AMR64 secp256k1_mul128
c0ae48c995 Update macOS image for CI
9b5f589d30 Heuristically decide whether to use int128_struct
63ff064d2f int128: Add test override for testing __(u)mulh on MSVC X64
f2b7e88768 Add int128 randomized tests
6138d73be4 Merge bitcoin-core/secp256k1#1155: Add MSan CI jobs
ddf2b2910e Merge bitcoin-core/secp256k1#1000: Synthetic int128 type.
86e3b38a4a Merge bitcoin-core/secp256k1#1149: Remove usage of CHECK from non-test file
00a42b91b3 Add MSan CI job
44916ae915 Merge bitcoin-core/secp256k1#1147: ci: print env to allow reproducing the job outside of CI
c2ee9175e9 Merge bitcoin-core/secp256k1#1146: ci: prevent "-v/--version: not found" irrelevant error
e13fae487e Merge bitcoin-core/secp256k1#1150: ci: always cat test_env.log
a340d9500a ci: add int128_struct tests
dceaa1f579 int128: Tidy #includes of int128.h and int128_impl.h
2914bccbc0 Simulated int128 type.
6a965b6b98 Remove usage of CHECK from non-test file
5c9f1a5c37 ci: always cat all logs_snippets
49ae843592 ci: mostly prevent "-v/--version: not found" irrelevant error
4e54c03153 ci: print env to allow reproducing the job outside of CI
a43e982bca Merge bitcoin-core/secp256k1#1144: Cleanup `.gitignore` file
f5039cb66c Cleanup `.gitignore` file
798727ae1e Revert "Add test logs to gitignore"
d22774e248 Merge BlockstreamResearch/secp256k1-zkp#203: MuSig doc fixes
dd83e72d52 Add ordinary tweak info
d26100cab2 Exclude nonce_process from pre-processing steps
b7607f93f2 Fix reference to xonly_tweak_add
f7e9a8544f Merge BlockstreamResearch/secp256k1-zkp#201: rangeproof: add secp256k1_rangeproof_max_size function to estimate rangeproof size
6b6ced9839 rangeproof: add more max_size tests
34876ecb5f rangeproof: add more static test vectors
310e517061 rangeproof: add a bunch more testing
f1410cb67a rangeproof: add secp256k1_rangeproof_max_size function to estimate rangeproof size
c137ddbdff Merge BlockstreamResearch/secp256k1-zkp#200: build: automatically enable module dependencies
0202d839fb Merge BlockstreamResearch/secp256k1-zkp#199: surjectionproof: make sure that n_used_pubkeys > 0 in generate
5ac8fb035e surjectionproof: make sure that n_used_pubkeys > 0 in generate
7ff446df8b Merge BlockstreamResearch/secp256k1-zkp#198: rangeproof: add a test for all-zero blinding factors
5a40f3d99b replace memcmp with secp256k1_memcmp_var throughout the codebase
92820d944b rangeproof: add a test for all-zero blinding factors
171b294a1c build: improve error message if --enable-experimental is missed
58ab152bb4 build: move all output concerning enabled modules at single place
1493113e61 build: automatically enable module dependencies
4fd7e1eabd Merge BlockstreamResearch/secp256k1-zkp#197: fix include paths in all the -zkp modules
347f96d94a fix include paths in all the -zkp modules
41e8704b48 build: Enable some modules by default
694ce8fb2d Merge bitcoin-core/secp256k1#1131: readme: Misc improvements
88b00897e7 readme: Fix line break
78f5296da4 readme: Sell "no runtime dependencies"
ef48f088ad readme: Add IRC channel
d1d6e47c17 Merge BlockstreamResearch/secp256k1-zkp#196: surjectionproof: fail to generate proofs when an input equals the output
d1175d265d surjectionproof: use secp256k1_memcmp_var rather than bare memcmp
bf18ff5a8c surjectionproof: fix generation to fail when any input == the output
4ff6e4274d surjectionproof: add test for existing behavior on input=output proofs
9f8a13dc8e Merge bitcoin-core/secp256k1#1128: configure: Remove pkgconfig macros again (reintroduced by mismerge)
cabe085bb4 configure: Remove pkgconfig macros again (reintroduced by mismerge)
71a206fa5b Merge BlockstreamResearch/secp256k1-zkp#194: extrakeys: rename swap/swap64 to fix OpenBSD 7.1 compilation
db648478c3 extrakeys: rename swap/swap64 to fix OpenBSD 7.1 compilation
3efeb9da21 Merge bitcoin-core/secp256k1#1121: config: Set preprocessor defaults for ECMULT_* config values
6a873cc4a9 Merge bitcoin-core/secp256k1#1122: tests: Randomize the context with probability 15/16 instead of 1/4
17065f48ae tests: Randomize the context with probability 15/16 instead of 1/4
c27ae45144 config: Remove basic-config.h
da6514a04a config: Introduce DEBUG_CONFIG macro for debug output of config
63a3565e97 Merge bitcoin-core/secp256k1#1120: ecmult_gen: Skip RNG when creating blinding if no seed is available
d0cf55e13a config: Set preprocessor defaults for ECMULT_* config values
55f8bc99dc ecmult_gen: Improve comments about projective blinding
7a86955800 ecmult_gen: Simplify code (no observable change)
4cc0b1b669 ecmult_gen: Skip RNG when creating blinding if no seed is available
af65d30cc8 Merge bitcoin-core/secp256k1#1116: build: Fix #include "..." paths to get rid of further -I arguments
40a3473a9d build: Fix #include "..." paths to get rid of further -I arguments
43756da819 Merge bitcoin-core/secp256k1#1115: Fix sepc256k1 -> secp256k1 typo in group.h
069aba8125 Fix sepc256k1 -> secp256k1 typo in group.h
accadc94df Merge bitcoin-core/secp256k1#1114: `_scratch_destroy`: move `VERIFY_CHECK` after invalid scrach space check
cd47033335 Merge bitcoin-core/secp256k1#1084: ci: Add MSVC builds
1827c9bf2b scratch_destroy: move VERIFY_CHECK after invalid scrach space check
49e2acd927 configure: Improve rationale for WERROR_CFLAGS
8dc4b03341 ci: Add a C++ job that compiles the public headers without -fpermissive
51f296a46c ci: Run persistent wineserver to speed up wine
3fb3269c22 ci: Add 32-bit MinGW64 build
9efc2e5221 ci: Add MSVC builds
2be6ba0fed configure: Convince autotools to work with MSVC's archiver lib.exe
bd81f4140a schnorrsig bench: Suppress a stupid warning in MSVC
44c2452fd3 Merge bitcoin-core/secp256k1#1105: Don't export symbols in static libraries
6f6cab9989 abi: Don't export symbols in static Windows libraries
485f608fa9 Merge bitcoin-core/secp256k1#1104: Fix the false positive of `SECP_64BIT_ASM_CHECK`
8b013fce51 Merge bitcoin-core/secp256k1#1056: Save negations in var-time group addition
7efc9835a9 Fix the false positive of `SECP_64BIT_ASM_CHECK`
2f984ffc45 Save negations in var-time group addition
09f3d71c51 configure: Add a few CFLAGS for MSVC
3b4f3d0d46 build: Reject C++ compilers in the preprocessor
1cc0941414 configure: Don't abort if the compiler does not define __STDC__
cca8cbbac8 configure: Output message when checking for valgrind
1a6be5745f bench: Make benchmarks compile on MSVC
e089eecc1e group: Further simply gej_add_ge
ac71020ebe group: Save a normalize_to_zero in gej_add_ge

git-subtree-dir: src/secp256k1
git-subtree-split: b911b3cbd5814aed69d97144eb3093fa806d3a7f
delta1 added a commit to delta1/elements that referenced this pull request Aug 31, 2023
b2ccc8d9fd Merge BlockstreamResearch/secp256k1-zkp#260: Finish sync to upstream
395e65e9f1 Merge branch 'master' into sync-upstream
394e09ee84 musig: change test vector generation code shebang from python to python3
aa3edea119 scalar: Remove unused secp256k1_scalar_chacha20
167194bede rangeproof: Use util functions for writing big endian
82777bba34 bppp: Fix test for invalid sign byte
54b37db953 build: Fix linkage of extra binaries in -zkp modules
9e96a2e9d8 hsort tests: Don't call secp256k1_testrand_int(0)
80187089ff Merge commits '4494a369 3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
50e20fa7d4 Merge BlockstreamResearch/secp256k1-zkp#257: Upstream PRs 1314, 1317, 1318, 1316, 1327, 1310, 1328, 1333, 1330, 1334, 1337, 1341, 1339, 1350, 1349, 1338, 1129, 1347, 1336, 1295, 1354, 1355, 1356
525b661f83 bppp/build: Fix linkage of benchmark
4c70cc9bf5 Suppress wrong/buggy warning in MSVC <19.33
579999b425 scalar: adjust muladd2 to new int128 interface
b160486766 ecdsa_adaptor: add missing include
74d9073414 Merge commits '83186db3 e9e4526a 5f7903c7 d373a721 09df0bfb 20a5da5f 908e02d5 d75dc59b debf3e5c bf29f8d0 60556c9f cb1a5927 67214f5f 45c5ca76 30574f22 0702ecb0 705ce7ed 3c1a0fd3 10836832 926dd3e9 ac43613d fd491ea1 799f4eec ' into temp-merge-1356
26392da2fb Merge bitcoin-core/secp256k1#1386: ci: print $ELLSWIFT in cirrus.sh
4692478853 ci: print $ELLSWIFT in cirrus.sh
c734c64278 Merge bitcoin-core/secp256k1#1384: build: enable ellswift module via SECP_CONFIG_DEFINES
78ca880788 build: enable ellswift module via SECP_CONFIG_DEFINES
0e00fc7d10 Merge bitcoin-core/secp256k1#1383: util: remove unused checked_realloc
b097a466c1 util: remove unused checked_realloc
e593ed5685 musig: ensure point_load output is normalized
7a07f3d33f Merge commits '3bab71cf 4258c54f 566faa17 9ce9984f 04bf3f67 5be353d6 2e035af2 5b0444a3 a6f4bcf6 5ec1333d f6bef03c 1f33bb2b 1c895367 6b7e5b71 596b336f 4b84f4bf 024a4094 222ecaf6 4b0f711d 3c818388 f30c7486 1cf15ebd 24c768ae 341cc197 c63ec88e 54d34b6c 073d98a0 9eb6934f ab5a9171 fb3a8063 006ddc1f 3353d3c7 b54a0672 7d4f86d2 e8295d07 3e3d125b acf5c55a ' into temp-merge-1312
2bd5f3e618 Merge bitcoin-core/secp256k1#1382: refactor: Drop unused cast
a9a5c24de2 Merge commits '56582094 427bc3cd 0cf2fb91 9c8c4f44 70be3cad f16a709f 464a9115 1d8f3675 afd8b23b 2bca0a5c 2d51a454 4e682626 a0f4644f 145078c4 7b7503da ec98fced 346a053d ' into temp-merge-1269
4f8c5bd761 refactor: Drop unused cast
bfeae121fb Merge BlockstreamResearch/secp256k1-zkp#255: musig: change test vector generation code shebang from python to python3
ea478beec6 musig: change test vector generation code shebang from python to python3
d47e4d40ca Merge BlockstreamResearch/secp256k1-zkp#252: Upstream PRs 1113, 1225, 1227, 1229, 1223
dc733595b0 Merge commits 'df323b5c 3295aa14 ef4f8bd0 90b513aa bdf39000 ' into temp-merge-1223
3937cefce6 Merge BlockstreamResearch/secp256k1-zkp#249: Upstream PRs 1160, 1193, 1169, 1190, 1192, 1194, 1196, 1195, 1170, 1172, 1200, 1199, 1203, 1201, 1206, 1078, 1209, 979, 1212, 1218, 1217, 1221, 1222
897c765a49 Merge BlockstreamResearch/secp256k1-zkp#251: Update sync-upstream with master
53bc63f9f9 Merge BlockstreamResearch/secp256k1-zkp#245: scalar: Remove unused secp256k1_scalar_chacha20
860360eed4 scalar: Remove unused secp256k1_scalar_chacha20
3970a7292a rangeproof: Use util functions for writing big endian
afe7e649ee Merge BlockstreamResearch/secp256k1-zkp#248: bppp: Fix and improve test for invalid sign byte
1a6d93f8b6 Merge BlockstreamResearch/secp256k1-zkp#250: ci: Always define EXPERIMENTAL variable
3372993060 bppp: Fix test for invalid sign byte
7e9193666f ci: Always define EXPERIMENTAL variable
0d540ec942 Merge commits '88e80722 ff8edf89 f29a3270 a7a7bfaf a01a7d86 b1579cf5 ad7433b1 233822d8 5fbff5d3 2b77240b 1bff2005 e1817a6f 5596ec5c 8ebe5c52 1cca7c17 1b21aa51 cbd25559 09b1d466 57573187 8962fc95 9d1b458d eb8749fc 6048e6c0 ' into temp-merge-1222
7aa9887128 Merge pull request ElementsProject#246 from jonasnick/temp-merge-1187
304fc88557 Merge commits '9a8d65f0 75d7b7f5 665ba77e 3f57b9f7 eacad90f 01b819a8 31ed5386 2a39ac16 0eb30004 cbe41ac1 cc3b8a4f ' into temp-merge-1187
58e27bc2d2 Merge BlockstreamResearch/secp256k1-zkp#244: sync-upstream.sh: Add "git show --remerge-diff" tip
c545fdc374 Merge bitcoin-core/secp256k1#1298: Remove randomness tests
0a99156871 sync-upstream.sh: Add "git show --remerge-diff" tip
6c54db1987 Merge commits '2286f809 751c4354 477f02c4 e3f84777 5c789dcd 8c949f56 21ffe4b2 ' into temp-merge-1055
30fc9d6551 Merge BlockstreamResearch/secp256k1-zkp#242: sync-upstream.sh: Fix position of "-b" option in reproduce command
9b6a1c384d sync-upstream.sh: Fix position of "-b" option in reproduce command
b40e2d30b7 Merge bitcoin-core/secp256k1#1378: ellswift: fix probabilistic test failure when swapping sides
e996d076da Merge commits '44916ae9 86e3b38a ddf2b291 6138d73b e40fd277 ' into temp-merge-1156
533571d6cf Merge BlockstreamResearch/secp256k1-zkp#239: sync-upstream: allows providing the local branch via cli
05b207e969 sync-upstream: allows providing the local branch via cli
64717a7b16 Merge commits '8b013fce 485f608f 44c2452f cd470333 accadc94 43756da8 af65d30c 63a3565e 6a873cc4 3efeb9da 9f8a13dc 694ce8fb a43e982b e13fae48 c2ee9175 ' into temp-merge-1146
9a981068ce Merge commits '8b013fce 485f608f 44c2452f cd470333 accadc94 43756da8 ' into temp-merge-1115
c424e2fb43 ellswift: fix probabilistic test failure when swapping sides
907a67212e Merge bitcoin-core/secp256k1#1313: ci: Test on development snapshots of GCC and Clang
0f7657d59c Merge bitcoin-core/secp256k1#1366: field: Use `restrict` consistently in fe_sqrt
cc55757552 Merge bitcoin-core/secp256k1#1340: clean up in-comment Sage code (refer to secp256k1_params.sage, update to Python3)
600c5adcd5 clean up in-comment Sage code (refer to secp256k1_params.sage, update to Python3)
981e5be38c ci: Fix typo in comment
e9e9648219 ci: Reduce number of macOS tasks from 28 to 8
609093b387 ci: Add x86_64 Linux tasks for gcc and clang snapshots
1deecaaf3b ci: Install development snapshots of gcc and clang
b79ba8aa4c field: Use `restrict` consistently in fe_sqrt
c9ebca95f9 Merge bitcoin-core/secp256k1#1363: doc: minor ellswift.md updates
afd7eb4a55 Merge bitcoin-core/secp256k1#1371: Add exhaustive tests for ellswift (with create+decode roundtrip)
2792119278 Add exhaustive test for ellswift (create+decode roundtrip)
c7d900ffd1 doc: minor ellswift.md updates
332af315fc Merge bitcoin-core/secp256k1#1344: group: save normalize_weak calls in `secp256k1_ge_is_valid_var`/`secp256k1_gej_eq_x_var`
9e6d1b0e9b Merge bitcoin-core/secp256k1#1367: build: Improvements to symbol visibility logic on Windows (attempt 3)
0aacf64352 Merge bitcoin-core/secp256k1#1370: Corrected some typos
b6b9834e8d small fixes
07c0e8b82e group: remove unneeded normalize_weak in `secp256k1_gej_eq_x_var`
3fc1de5c55 Merge bitcoin-core/secp256k1#1364: Avoid `-Wmaybe-uninitialized` when compiling with `gcc -O1`
fb758fe8d6 Merge bitcoin-core/secp256k1#1323: tweak_add: fix API doc for tweak=0
c6cd2b15a0 ci: Add task for static library on Windows + CMake
020bf69a44 build: Add extensive docs on visibility issues
0196e8ade1 build: Introduce `SECP256k1_DLL_EXPORT` macro
9f1b1904a3 refactor: Replace `SECP256K1_API_VAR` with `SECP256K1_API`
ae9db95cea build: Introduce `SECP256K1_STATIC` macro for Windows users
7966aee31d Merge bitcoin-core/secp256k1#1369: ci: Print commit in Windows container
a7bec34231 ci: Print commit in Windows container
249c81eaa3 Merge bitcoin-core/secp256k1#1368: ci: Drop manual checkout of merge commit
98579e297b ci: Drop manual checkout of merge commit
5b9f37f136 ci: Add `CFLAGS: -O1` to task matrix
a6ca76cdf2 Avoid `-Wmaybe-uninitialized` when compiling with `gcc -O1`
0fa84f869d Merge bitcoin-core/secp256k1#1358: tests: introduce helper for non-zero `random_fe_test()` results
5a95a268b9 tests: introduce helper for non-zero `random_fe_test` results
304421d57b tests: refactor: remove duplicate function `random_field_element_test`
3aef6ab8e1 Merge bitcoin-core/secp256k1#1345: field: Static-assert that int args affecting magnitude are constant
4494a369b6 Merge bitcoin-core/secp256k1#1357: tests: refactor: take use of `secp256k1_ge_x_on_curve_var`
799f4eec27 Merge bitcoin-core/secp256k1#1356: ci: Adjust Docker image to Debian 12 "bookworm"
c862a9fb49 ci: Adjust Docker image to Debian 12 "bookworm"
a1782098a9 ci: Force DWARF v4 for Clang when Valgrind tests are expected
7d8d5c86df tests: refactor: take use of `secp256k1_ge_x_on_curve_var`
8a7273465b Help the compiler prove that a loop is entered
fd491ea1bb Merge bitcoin-core/secp256k1#1355: Fix a typo in the error message
ac43613d25 Merge bitcoin-core/secp256k1#1354: Add ellswift to CHANGELOG
67887ae65c Fix a typo in the error message
926dd3e962 Merge bitcoin-core/secp256k1#1295: abi: Use dllexport for mingw builds
10836832e7 Merge bitcoin-core/secp256k1#1336: Use `__shiftright128` intrinsic in `secp256k1_u128_rshift` on MSVC
7c7467ab7f Refer to ellswift.md in API docs
c32ffd8d8c Add ellswift to CHANGELOG
3c1a0fd37f Merge bitcoin-core/secp256k1#1347: field: Document return value of fe_sqrt()
705ce7ed8c Merge bitcoin-core/secp256k1#1129: ElligatorSwift + integrated x-only DH
0702ecb061 Merge bitcoin-core/secp256k1#1338: Drop no longer needed `#include "../include/secp256k1.h"`
5779137457 field: Document return value of fe_sqrt()
90e360acc2 Add doc/ellswift.md with ElligatorSwift explanation
4f091847c2 Add ellswift testing to CI
1bcea8c57f Add benchmarks for ellswift module
2d1d41acf8 Add ctime tests for ellswift module
df633cdeba Add _prefix and _bip324 ellswift_xdh hash functions
9695deb351 Add tests for ellswift module
c47917bbd6 Add ellswift module implementing ElligatorSwift
79e5b2a8b8 Add functions to test if X coordinate is valid
a597a5a9ce Add benchmark for key generation
30574f22ea Merge bitcoin-core/secp256k1#1349: Normalize ge produced from secp256k1_pubkey_load
45c5ca7675 Merge bitcoin-core/secp256k1#1350: scalar: introduce and use `secp256k1_{read,write}_be64` helpers
f1652528be Normalize ge produced from secp256k1_pubkey_load
7067ee54b4 tests: add tests for `secp256k1_{read,write}_be64`
740528caad scalar: use newly introduced `secp256k1_{read,write}_be64` helpers (4x64 impl.)
be8ff3a02a field: Static-assert that int args affecting magnitude are constant
efa76c4bf7 group: remove unneeded normalize_weak in `secp256k1_ge_is_valid_var`
67214f5f7d Merge bitcoin-core/secp256k1#1339: scalar: refactor: use `secp256k1_{read,write}_be32` helpers
cb1a59275c Merge bitcoin-core/secp256k1#1341: docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xonly_,}pub`
f3644287b1 docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xonly_,}pub`
887183e7de scalar: use `secp256k1_{read,write}_be32` helpers (4x64 impl.)
52b84238de scalar: use `secp256k1_{read,write}_be32` helpers (8x32 impl.)
e449af6872 Drop no longer needed `#include "../include/secp256k1.h"`
5b7bf2e9d4 Use `__shiftright128` intrinsic in `secp256k1_u128_rshift` on MSVC
60556c9f49 Merge bitcoin-core/secp256k1#1337: ci: Fix error D8037 in `cl.exe` (attempt 2)
db29bf220c ci: Remove quirk that runs dummy command after wineserver
c7db4942b3 ci: Fix error D8037 in `cl.exe`
7dae115861 Revert "ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe"
bf29f8d0a6 Merge bitcoin-core/secp256k1#1334: fix input range comment for `secp256k1_fe_add_int`
605e07e365 fix input range comment for `secp256k1_fe_add_int`
debf3e5c08 Merge bitcoin-core/secp256k1#1330: refactor: take use of `secp256k1_scalar_{zero,one}` constants
d75dc59b58 Merge bitcoin-core/secp256k1#1333: test: Warn if both `VERIFY` and `COVERAGE` are defined
ade5b36701 tests: add checks for scalar constants `secp256k1_scalar_{zero,one}`
e83801f5db test: Warn if both `VERIFY` and `COVERAGE` are defined
654246c635 refactor: take use of `secp256k1_scalar_{zero,one}` constants
908e02d596 Merge bitcoin-core/secp256k1#1328: build: Bump MSVC warning level up to W3
1549db0ca5 build: Level up MSVC warnings
20a5da5fb1 Merge bitcoin-core/secp256k1#1310: Refine release process
05873bb6b1 tweak_add: fix API doc for tweak=0
ad84603297 release process: clarify change log updates
6348bc7eee release process: fix process for maintenance release
79fa50b082 release process: mention targeted release schedule
165206789b release process: add sanity checks
09df0bfb23 Merge bitcoin-core/secp256k1#1327: ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe
27504d5c94 ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe
d373a7215b Merge bitcoin-core/secp256k1#1316: Do not invoke fe_is_zero on failed set_b32_limit
6433175ffe Do not invoke fe_is_zero on failed set_b32_limit
5f7903c73c Merge bitcoin-core/secp256k1#1318: build: Enable -DVERIFY for precomputation binaries
e9e4526a4e Merge bitcoin-core/secp256k1#1317: Make fe_cmov take max of magnitudes
5768b50229 build: Enable -DVERIFY for precomputation binaries
31b4bbee1e Make fe_cmov take max of magnitudes
ff33018fe7 Merge BlockstreamResearch/secp256k1-zkp#232: Backports from libsecp256k1 v0.3.2
39407c3f59 Mark stack variables as early clobber for technical correctness
56a5d41429 Bugfix: mark outputs as early clobber in scalar x86_64 asm
c8c0f55a11 ct: Be cautious and use volatile trick in more "conditional" paths
3e94289966 ct: Use volatile trick in scalar_cond_negate
83186db34a Merge bitcoin-core/secp256k1#1314: release cleanup: bump version after 0.3.2
95448ef2f8 release cleanup: bump version after 0.3.2
acf5c55ae6 Merge bitcoin-core/secp256k1#1312: release: Prepare for 0.3.2
d490ca2046 release: Prepare for 0.3.2
3e3d125b83 Merge bitcoin-core/secp256k1#1309: changelog: Catch up
e8295d07ab Merge bitcoin-core/secp256k1#1311: Revert "Remove unused scratch space from API"
697e1ccf4a changelog: Catch up
3ad1027a40 Revert "Remove unused scratch space from API"
76b43f3443 changelog: Add entry for ElementsProject#1303
7d4f86d242 Merge bitcoin-core/secp256k1#1307: Mark more assembly outputs as early clobber
b54a0672ef Merge bitcoin-core/secp256k1#1304: build: Rename arm to arm32 and check if it's really supported
c6bb29b303 build: Rename `64bit` to `x86_64`
8c9ae37a5a Add release note
edcba04c28 Merge BlockstreamResearch/secp256k1-zkp#231: musig: add note about missing verification to partial_sign to doc
03246457a8 autotools: Add `SECP_ARM32_ASM_CHECK` macro
ed4ba238e2 cmake: Add `check_arm32_assembly` function
350b4bd6e6 Mark stack variables as early clobber for technical correctness
0c729ba70d Bugfix: mark outputs as early clobber in scalar x86_64 asm
3353d3c753 Merge bitcoin-core/secp256k1#1207: Split fe_set_b32 into reducing and normalizing variants
4ab4ec38a0 musig: add note about missing verification to partial_sign to doc
f50ad76004 musig: update version number of BIP
5b32602295 Split fe_set_b32 into reducing and normalizing variants
006ddc1f42 Merge bitcoin-core/secp256k1#1306: build: Make tests work with external default callbacks
1907f0f166 build: Make tests work with external default callbacks
fb3a806365 Merge bitcoin-core/secp256k1#1133: schnorrsig: Add test vectors for variable-length messages
cd54ac7c1c schnorrsig: Improve docs of schnorrsig_sign_custom
28687b0312 schnorrsig: Add BIP340 varlen test vectors
97a98bed1e schnorrsig: Refactor test vector code to allow varlen messages
ab5a917128 Merge bitcoin-core/secp256k1#1303: ct: Use more volatile
9eb6934f69 Merge bitcoin-core/secp256k1#1305: Remove unused scratch space from API
073d98a076 Merge bitcoin-core/secp256k1#1292: refactor: Make 64-bit shift explicit
17fa21733a ct: Be cautious and use volatile trick in more "conditional" paths
5fb336f9ce ct: Use volatile trick in scalar_cond_negate
712e7f8722 Remove unused scratch space from API
54d34b6c24 Merge bitcoin-core/secp256k1#1300: Avoid normalize conditional on VERIFY
c63ec88ebf Merge bitcoin-core/secp256k1#1066: Abstract out and merge all the magnitude/normalized logic
7fc642fa25 Simplify secp256k1_fe_{impl_,}verify
4e176ad5b9 Abstract out verify logic for fe_is_square_var
4371f98346 Abstract out verify logic for fe_add_int
89e324c6b9 Abstract out verify logic for fe_half
283cd80ab4 Abstract out verify logic for fe_get_bounds
d5aa2f0358 Abstract out verify logic for fe_inv{,_var}
3167646072 Abstract out verify logic for fe_from_storage
76d31e5047 Abstract out verify logic for fe_to_storage
1e6894bdd7 Abstract out verify logic for fe_cmov
be82bd8e03 Improve comments/checks for fe_sqrt
6ab35082ef Abstract out verify logic for fe_sqr
4c25f6efbd Abstract out verify logic for fe_mul
e179e651cb Abstract out verify logic for fe_add
7e7ad7ff57 Abstract out verify logic for fe_mul_int
65d82a3445 Abstract out verify logic for fe_negate
144670893e Abstract out verify logic for fe_get_b32
f7a7666aeb Abstract out verify logic for fe_set_b32
ce4d2093e8 Abstract out verify logic for fe_cmp_var
7d7d43c6dd Improve comments/check for fe_equal{,_var}
c5e788d672 Abstract out verify logic for fe_is_odd
d3f3fe8616 Abstract out verify logic for fe_is_zero
c701d9a471 Abstract out verify logic for fe_clear
19a2bfeeea Abstract out verify logic for fe_set_int
864f9db491 Abstract out verify logic for fe_normalizes_to_zero{,_var}
6c31371120 Abstract out verify logic for fe_normalize_var
e28b51f522 Abstract out verify logic for fe_normalize_weak
b6b6f9cb97 Abstract out verify logic for fe_normalize
7fa5195559 Bugfix: correct SECP256K1_FE_CONST mag/norm fields
e5cf4bf3ff build: Rename `arm` to `arm32`
b29566c51b Merge magnitude/normalized fields, move/improve comments
97c63b9039 Avoid normalize conditional on VERIFY
341cc19726 Merge bitcoin-core/secp256k1#1299: Infinity handling: ecmult_const(infinity) works, and group verification
6ec3731e8c Simplify test PRNG implementation
bbc834467c Avoid secp256k1_ge_set_gej_zinv with uninitialized z
0a2e0b2ae4 Make secp256k1_{fe,ge,gej}_verify work as no-op if non-VERIFY
f20266722a Add invariant checking to group elements
a18821d5b1 Always initialize output coordinates in secp256k1_ge_set_gej
3086cb90ac Expose secp256k1_fe_verify to other modules
a0e696fd4d Make secp256k1_ecmult_const handle infinity
24c768ae09 Merge bitcoin-core/secp256k1#1301: Avoid using bench_verify_data as bench_sign_data; merge them
2e65f1fdbc Avoid using bench_verify_data as bench_sign_data; merge them
fb5bfa4eed Add static test vector for Xoshiro256++
1cf15ebd94 Merge bitcoin-core/secp256k1#1296: docs: complete interface description for `secp256k1_schnorrsig_sign_custom`
4eab2c2fd8 Merge BlockstreamResearch/secp256k1-zkp#230: norm arg: add prove test vectors
723e8ca8f7 Remove randomness tests
bc7c8db179 abi: Use dllexport for mingw builds
149c41cee1 docs: complete interface description for `secp256k1_schnorrsig_sign_custom`
f30c74866b Merge bitcoin-core/secp256k1#1270: cmake: Fix library ABI versioning
d1e48e5474 refactor: Make 64-bit shift explicit
b2e29e43d0 ci: Treat all compiler warnings as errors in "Windows (VS 2022)" task
3c81838856 Merge bitcoin-core/secp256k1#1289: cmake: Use full signature of `add_test()` command
755629bc03 cmake: Use full signature of `add_test()` command
bef448f9af cmake: Fix library ABI versioning
4b0f711d46 Merge bitcoin-core/secp256k1#1277: autotools: Clean up after adding Wycheproof
222ecaf661 Merge bitcoin-core/secp256k1#1284: cmake: Some improvements using `PROJECT_IS_TOP_LEVEL` variable
71f746c057 cmake: Include `include` directory for subtree builds
024a409484 Merge bitcoin-core/secp256k1#1240: cmake: Improve and document compiler flag checks
a8d059f76c cmake, doc: Document compiler flags
6ece1507cb cmake, refactor: Rename `try_add_compile_option` to `try_append_cflags`
19516ed3e9 cmake: Use `add_compile_options()` in `try_add_compile_option()`
4b84f4bf0f Merge bitcoin-core/secp256k1#1239: cmake: Bugfix and other improvements after bumping CMake up to 3.13
596b336ff6 Merge bitcoin-core/secp256k1#1234: cmake: Add dev-mode
6b7e5b717d Merge bitcoin-core/secp256k1#1275: build: Fix C4005 "macro redefinition" MSVC warnings in examples
1c89536718 Merge bitcoin-core/secp256k1#1286: tests: remove extra semicolon in macro
c4062d6b5d debug: move helper for printing buffers into util.h
f3126fdfec norm arg: remove prove edge tests which are now covered by vectors
847ed9ecb2 norm arg: add verification to prove vectors
7e977b3c50 autotools: Take VPATH builds into account when generating testvectors
2418d3260a autotools: Create src/wycheproof dir before creating file in it
8764034ed5 autotools: Make all "pregenerated" targets .PHONY
e1b9ce8811 autotools: Use same conventions for all pregenerated files
cf797ed2a4 norm arg: add prove test vectors
095c1e749c norm arg: add prove_const to tests
ce18267b66 Merge BlockstreamResearch/secp256k1-zkp#229: musig: Fix nits left open in ElementsProject#211
78ed0e09ca Merge BlockstreamResearch/secp256k1-zkp#227: Use relative #include paths and tidy header guards (as in upstream)
3858bad2c6 tests: remove extra semicolon in macro
1f33bb2b1c Merge bitcoin-core/secp256k1#1205: field: Improve docs +tests of secp256k1_fe_set_b32
e7fc61ff16 Merge BlockstreamResearch/secp256k1-zkp#228: Simple dedicated -zkp README
162da73e9a tests: Add debug helper for printing buffers
e9fd3dff76 field: Improve docs and tests of secp256k1_fe_set_b32
a0b51afc01 musig: VERIFY_CHECK preconditions of _musig_keyaggcoef_internal()
da7702844e extrakeys: Clarify comparison order of compare/sort functions
f6bef03c0a Merge bitcoin-core/secp256k1#1283: Get rid of secp256k1_fe_const_b
5431b9decd cmake: Make `SECP256K1_INSTALL` default depend on `PROJECT_IS_TOP_LEVEL`
5ec1333d4f Merge bitcoin-core/secp256k1#1285: bench: Make sys/time.h a system include
4d9d8f92d4 Simple dedicated -zkp README
e444d24bca Fix include guards: No _ prefix/suffix but _H suffix (as in upstream)
0eea7d97ab Use relative #include paths in tests (as in upstream)
c690d6df70 Use relative #include paths in benchmarks (as in upstream)
c565827c1a Use relative #include paths in ctime_test (as in upstream)
4eca406f4c Use relative #include paths in library (as in upstream)
68b16a1662 bench: Make sys/time.h a system include
162608cc98 cmake: Emulate `PROJECT_IS_TOP_LEVEL` for CMake<3.21
69e1ec0331 Get rid of secp256k1_fe_const_b
bf7bf8a64f norm arg: split norm_arg_zero into prove_edge and verify_zero_len
a70c4d4a8a norm arg: add test vector for |n| = 0
f5e4b16f0f norm arg: add test vector for sign bit malleability
c0de361fc5 norm arg: allow X and R to be the point at infinity
f22834f202 norm arg: add verify vector for n = [0], l = [0]
d8e7f3763b musig: move ge_{serialize,parse}_ext to module-independent file
050d9b2912 Merge BlockstreamResearch/secp256k1-zkp#226: bppp: align terminology with paper
ce5ba9e24d gitignore: Add CMakeUserPresets.json
0a446a312f cmake: Add dev-mode CMake preset
a6f4bcf6e1 Merge bitcoin-core/secp256k1#1231: Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h`
a273d74b2e cmake: Improve version comparison
6a58b483ef cmake: Use `if(... IN_LIST ...)` command
2445808c02 cmake: Use dedicated `GENERATOR_IS_MULTI_CONFIG` property
9f8703ef17 cmake: Use dedicated `CMAKE_HOST_APPLE` variable
8c2017035a cmake: Use recommended `add_compile_definitions` command
04d4cc071a cmake: Add `DESCRIPTION` and `HOMEPAGE_URL` options to `project` command
8a8b6536ef cmake: Use `SameMinorVersion` compatibility mode
5b0444a3b5 Merge bitcoin-core/secp256k1#1263: cmake: Make installation optional
47ac3d63cd cmake: Make installation optional
2e035af251 Merge bitcoin-core/secp256k1#1273: build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS`
5be353d658 Merge bitcoin-core/secp256k1#1279: tests: lint wycheproof's python script
08f4b1632d autotools: Move code around to tidy Makefile
2c63d17c1e bppp: align terminology with paper (gamma)
dbf2e4d3e1 bppp: align terminology with paper (mu, rho)
04bf3f6778 Merge bitcoin-core/secp256k1#1230: Build: allow static or shared but not both
9ce9984f32 Merge bitcoin-core/secp256k1#1265: Remove bits argument from secp256k1_wnaf_const{_xonly}
566faa17d3 Merge bitcoin-core/secp256k1#1267: doc: clarify process for patch releases
ef49a11d29 build: allow static or shared but not both
f4dd0419aa Merge BlockstreamResearch/secp256k1-zkp#225: sync-upstream: Use --autostash to handle uncommitted changes
35ada3b954 tests: lint wycheproof's python script
4258c54f4e Merge bitcoin-core/secp256k1#1276: autotools: Don't regenerate Wycheproof header automatically
529b54d922 autotools: Move Wycheproof header from EXTRA_DIST to noinst_HEADERS
06c67dea9f autotools: Don't regenerate Wycheproof header automatically
dc0657c762 build: Fix C4005 "macro redefinition" MSVC warnings in examples
1ecb94ebe9 build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS`
13c438cdee sync-upstream: Use --autostash to handle uncommitted changes
6ec1ff6040 Merge BlockstreamResearch/secp256k1-zkp#224: Backport of "ct: Use volatile "trick" in all fe/scalar cmov implementations"
96f4853850 ct: Use volatile "trick" in all fe/scalar cmov implementations
3bab71cf05 Merge bitcoin-core/secp256k1#1268: release cleanup: bump version after 0.3.1
656c6ea8d8 release cleanup: bump version after 0.3.1
346a053d4c Merge bitcoin-core/secp256k1#1269: changelog: Fix link
6a37b2a5ea changelog: Fix link
ec98fcedd5 Merge bitcoin-core/secp256k1#1266: release: Prepare for 0.3.1
1b6fb5593c doc: clarify process for patch releases
898e1c676e release: Prepare for 0.3.1
1d9a13fc26 changelog: Remove inconsistent newlines
0e091669a1 changelog: Catch up in preparation of 0.3.1
7b7503dac5 Merge bitcoin-core/secp256k1#1245: tests: Add Wycheproof ECDSA vectors
a575339c02 Remove bits argument from secp256k1_wnaf_const (always 256)
145078c418 Merge bitcoin-core/secp256k1#1118: Add x-only ecmult_const version with x specified as n/d
e5de454609 tests: Add Wycheproof ECDSA vectors
0f8642079b Add exhaustive tests for ecmult_const_xonly
4485926ace Add x-only ecmult_const version for x=n/d
a0f4644f7e Merge bitcoin-core/secp256k1#1252: Make position of * in pointer declarations in include/ consistent
4e682626a3 Merge bitcoin-core/secp256k1#1226: Add CMake instructions to release process
2d51a454fc Merge bitcoin-core/secp256k1#1257: ct: Use volatile "trick" in all fe/scalar cmov implementations
4a496a36fb ct: Use volatile "trick" in all fe/scalar cmov implementations
3d1f430f9f Make position of * in pointer declarations in include/ consistent
2bca0a5cbf Merge bitcoin-core/secp256k1#1241: build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
afd8b23b27 Merge bitcoin-core/secp256k1#1244: Suppress `-Wunused-parameter` when building for coverage analysis
1d8f367515 Merge bitcoin-core/secp256k1#1250: No need to subtract 1 before doing a right shift
3e43041be6 No need to subtract 1 before doing a right shift
3addb4c1e8 build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
0c07c82834 Add CMake instructions to release process
464a9115b4 Merge bitcoin-core/secp256k1#1242: Set ARM ASM symbol visibility to `hidden`
f16a709fd6 Merge bitcoin-core/secp256k1#1247: Apply Checks only in VERIFY mode.
70be3cade5 Merge bitcoin-core/secp256k1#1246: Typo
4ebd82852d Apply Checks only in VERIFY mode.
d1e7ca192d Typo
36b0adf1b9 build: remove warning until it's reproducible
5bb03c2911 Replace `SECP256K1_ECMULT_TABLE_VERIFY` macro by a function
9c8c4f443c Merge bitcoin-core/secp256k1#1238: build: bump CMake minimum requirement to 3.13
0cf2fb91ef Merge bitcoin-core/secp256k1#1243: build: Ensure no optimization when building for coverage analysis
fd2a408647 Set ARM ASM symbol visibility to `hidden`
4429a8c218 Suppress `-Wunused-parameter` when building for coverage analysis
8e79c7ed11 build: Ensure no optimization when building for coverage analysis
96dd062511 build: bump CMake minimum requirement to 3.13
427bc3cdcf Merge bitcoin-core/secp256k1#1236: Update comment for secp256k1_modinv32_inv256
647f0a5cb1 Update comment for secp256k1_modinv32_inv256
8e142ca410 Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h`
77445898a5 Remove `SECP256K1_INLINE` usage from examples
5658209459 Merge bitcoin-core/secp256k1#1228: release cleanup: bump version after 0.3.0
bdf39000b9 Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0
28e63f7ea7 release cleanup: bump version after 0.3.0
b40adf2360 release: prepare for 0.3.0
90b513aada Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1"
8be82d4362 cmake: Rename project to "libsecp256k1"
ef4f8bd025 Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions
756b61d451 readme: Use correct build type in CMake/Windows build instructions
3295aa149b Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake
92098d84cf changelog: Add entry for CMake
df323b5c14 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system
e1eb33724c ci: Add "x86_64: Windows (VS 2022)" task
10602b0030 cmake: Export config files
5468d70964 build: Add CMake-based build system
6048e6c03e Merge bitcoin-core/secp256k1#1222: Remove redundant checks.
eb8749fcd0 Merge bitcoin-core/secp256k1#1221: Update Changelog
5d8f53e312 Remove redudent checks.
9d1b458d5f Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
d232112fa7 Update Changelog
8962fc95bb Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b387 Update overflow check
1d25608900 Merge BlockstreamResearch/secp256k1-zkp#223: musig: Update to BIP v1.0.0-rc.4 (Check pubnonce in NonceGen vectors)
d23c23e24d musig: Update to BIP v1.0.0-rc.4 (Check pubnonce in NonceGen vectors)
c4862f6869 Merge BlockstreamResearch/secp256k1-zkp#215: musig: include pubkey in secnonce and compare when signing
a1ec2bb67b musig: add test for signing with wrong secnonce for a keypair
bd57a017aa musig: include pubkey in secnonce and compare when signing
5757318782 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e4cb Add secp256k1_fe_add_int function
4f57024d86 Merge BlockstreamResearch/secp256k1-zkp#211: Update musig module to BIP MuSig2 v1.0.0-rc.3
5660c13755 prevent optimization in algorithms
09b1d466db Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc78a6 doc: Describe Jacobi calculation in safegcd_implementation.md
6be01036c8 Add secp256k1_fe_is_square_var function
1de2a01c2b Native jacobi symbol algorithm
04c6c1b181 Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c7af Make secp256k1_i128_check_pow2 support -(2^n)
8ec6d111c8 Merge BlockstreamResearch/secp256k1-zkp#205: Bulletproofs++: Norm argument
cbd2555934 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa5175 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
d7fb25c8ca Make sure that bppp_log2 isn't called with value 0
e5a01d12c6 Rename buletproof_pp* to bppp*
c983186872 transcript: add tests
73edc75528 norm arg: add verification vectors
13ad32e814 norm arg: add tests for zero length and zero vectors
34c4847a6a ci: add bulletproofs
2574516483 Add testcases for bulletproofs++ norm arugment
46c7391154 Add norm argument verify API
b43dd83b43 musig: add missing static keyword to function
068e6a036a musig: add test vectors from BIP MuSig
36621d13be musig: update to BIP v1.0.0-rc.2 "Add ''pk'' arg to ''NonceGen''"
d717a4980b musig: update to BIP v0.8 "Switch from X-only to plain pk inputs."
304f1bc96d extrakeys: add pubkey_sort test vectors from BIP MuSig2
ae89051547 extrakeys: replace xonly_sort with pubkey_sort
98242fcdd9 extrakeys: add secp256k1_pubkey_cmp
73d5b6654d musig: update to BIP v0.7.0 (NonceGen)
060887e9d7 musig: update to BIP v0.5.1 "Rename ordinary tweaking to plain"
d9145455bb Add bulletproofs++ norm argument prove API
8638f0e0ce Add internal BP++ commit API
412f8f66a0 Add utility functions required in norm argument
420353d7da Add utilities for log2
17417d44f3 Add utilities from uncompressed Bulletproofs PR
48563c8c79 bulletproofs: add API functionality to generate a large set of generators
048f9f8642 bulletproofs: add new empty module
6162d577fe generator: cleanups in Pedersen/generator code
e4330341bd ci: Shutdown wineserver whenever CI script exits
9a5a611a21 build: Suppress stupid MSVC linker warning
739c53b19a examples: Extend sig examples by call that uses static context
914276e4d2 build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c1744 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc1de build: Add -Wreserved-identifier supported by clang
ca92a35d01 field: Simplify code in secp256k1_fe_set_b32
d93f62e369 field: Verify field element even after secp256k1_fe_set_b32 fails
8ebe5c5205 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5c2c Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721ccc Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e3148d ci: Do not set git's `user.{email,name}` config options
e1817a6f54 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff200588 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d18669d Drop no longer used Autoheader macros
c2415866c7 ci: Don't fetch git history
0ecf318851 ci: Use remote pull/merge ref instead of local git merge
0a6006989f Revert "Remove unused scalar_sqr"
87373f5145 MOVE ONLY: move Pedersen commitment stuff to generator module from rangeproof module
b1f1675375 Merge BlockstreamResearch/secp256k1-zkp#214: sync-upstream: Fix $REPRODUCE_COMMAND for "select"
cbe2815633 musig: update to BIP v0.4 "Allow the output of NonceAgg to be inf"
206017d67d musig: update to BIP v0.3 (NonceGen)
d800dd55db musig: remove test vectors
a58c7d29bd Merge BlockstreamResearch/secp256k1-zkp#213: Update macOS image for CI
e04c660b11 sync-upstream: Fix $REPRODUCE_COMMAND for "select"
3b2c675955 Update macOS image for CI
2b77240b3b Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6bebaee3 scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7f2d ci: add test job with -DVERIFY
620ba3d74b benchmarks: fix bench_scalar_split
5fbff5d348 Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d849 Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b140 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954f11 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c0a9 Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f94c Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc9ee contexts: Forbid randomizing secp256k1_context_static
4b6df5e33e contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf5fb Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229e03 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738d5b Ensure safety of ctz_debruijn implementation.
a01a7d86dc Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfaf3d Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a327092 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf89e2 Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785b26 Introduce SECP256K1_B macro for curve b coefficient
4934aa7995 Switch to exhaustive groups with small B coefficient
d4a6b58df7 Add `noverify_tests` to `.gitignore`
88e80722d2 Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec112 Rename CTIMETEST -> CTIMETESTS
74b026f05d Add runtime checking for DECLASSIFY flag
5e2e6fcfc0 Run ctime test in Linux MSan CI job
18974061a3 Make ctime tests building configurable
5048be17e9 Rename valgrind_ctime_test -> ctime_tests
6eed6c18de Update error messages to suggest msan as well
8e11f89a68 Add support for msan integration to checkmem.h
8dc64079eb Add compile-time error to valgrind_ctime_test
0db05a770e Abstract interactions with valgrind behind new checkmem.h
4f1a54e41d Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4f40 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48f50 refactor: Rename STTC to STATIC_CTX in tests
3385a2648d refactor: Rename global variables to uppercase in tests
e03ef86559 Make all non-API functions (except main) static
cbe41ac138 Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
203760023c tests: Add noverify_tests which is like tests but without VERIFY
e862c4af0c Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb3000417 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e3d7 refactor: Separate run_context_tests into static vs proper contexts
a4a09379b1 tests: Clean up and improve run_context_tests() further
fc90bb5695 refactor: Tidy up main()
f32a36f620 tests: Don't use global context for context tests
ce4f936c4f tests: Tidy run_context_tests() by extracting functions
18e0db30cb tests: Don't recreate global context in scratch space test
b19806122e tests: Use global copy of secp256k1_context_static instead of clone
2a39ac162e Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca284e2 Drop `SECP_CONFIG_DEFINES` from examples
31ed5386e8 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b2ae Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a8c7 Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90f69 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f774 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889f17 Clarify that the ABI-incompatible versions are earlier
881fc33d0c Consistency in naming of modules
665ba77e79 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f5ba Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a74688201 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fdadeb ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d21bb Do not define unused `HAVE_VALGRIND` macro
ad8647f548 Drop no longer relevant files from `.gitignore`
b627ba7050 Remove dependency on `src/libsecp256k1-config.h`
9ecf8149a1 Reduce font size in changelog
2dc133a67f Add more changelog entries
ac233e181a Add links to diffs to changelog
cee8223ef6 Mention semantic versioning in changelog
9a8d65f07f Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc290f7 release cleanup: bump version after 0.2.0
b6b360efaf doc: improve message of cleanup commit
21ffe4b22a Merge bitcoin-core/secp256k1#1055: Prepare initial release
e025ccdf74 release: prepare for initial release 0.2.0
6d1784a2e2 build: add missing files to EXTRA_DIST
8c949f56da Merge bitcoin-core/secp256k1#1173: Don't use compute credits for now
13bf1b6b32 changelog: make order of change types match keepachangelog.com
b1f992a552 doc: improve release process
7e5b22684f Don't use compute credits for now
a49e0940ad docs: Fix typo
2551cdac90 tests: Fix code formatting
c635c1bfd5 Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f2357c refactor: Add helper function secp256k1_context_is_proper()
ad39e2dc41 build: change package version to 0.1.0-dev
5c789dcd73 Merge bitcoin-core/secp256k1#1168: Replace deprecated context flags with NONE in benchmarks and tests
d6dc0f4ae3 tests: Switch to NONE contexts in module tests
0c8a5caddd tests: Switch to NONE contexts in tests.c
86540e9e1f tests: add test for deprecated flags and rm them from run_context
caa0ad631e group: add gej_eq_var
37ba744f5b tests: Switch to NONE contexts in exhaustive and ctime tests
8d7a9a8eda benchmarks: Switch to NONE contexts
90618e9263 doc: move CHANGELOG from doc/ to root directory
e3f84777eb Merge bitcoin-core/secp256k1#1126: API cleanup with respect to contexts
4386a2306c examples: Switch to NONE contexts
7289b51d31 docs: Use doxygen style if and only if comment is user-facing
e7d0185c90 docs: Get rid of "initialized for signing" terminology
06126364ad docs: Tidy and improve docs about contexts and randomization
e02d6862bd selftest: Expose in public API
e383fbfa66 selftest: Rename internal function to make name available for API
d2c6d48de3 tests: Use new name of static context
53796d2b24 contexts: Rename static context
72fedf8a6c docs: Improve docs for static context
316ac7625a contexts: Deprecate all context flags except SECP256K1_CONTEXT_NONE
477f02c4de Merge bitcoin-core/secp256k1#1165: gitignore: Add *.sage.py files autogenerated by sage [skip ci]
092be61c5e gitignore: Add *.sage.py files autogenerated by sage
1a553ee8be docs: Change signature "validation" to "verification"
ee7341fbac docs: Never require a verification context
751c4354d5 Merge bitcoin-core/secp256k1#1152: Update macOS image for CI
2286f80902 Merge bitcoin-core/secp256k1#993: Enable non-experimental modules by default
d216475205 test secp256k1_i128_to_i64
4bc429019d Add a secp256k1_i128_to_u64 function.
e40fd277b7 Merge bitcoin-core/secp256k1#1156: Followups to int128_struct arithmetic
99bd335599 Make int128 overflow test use secp256k1_[ui]128_mul
a8494b02bf Use compute credits for macOS jobs
3afce0af7c Avoid signed overflow in MSVC AMR64 secp256k1_mul128
c0ae48c995 Update macOS image for CI
9b5f589d30 Heuristically decide whether to use int128_struct
63ff064d2f int128: Add test override for testing __(u)mulh on MSVC X64
f2b7e88768 Add int128 randomized tests
6138d73be4 Merge bitcoin-core/secp256k1#1155: Add MSan CI jobs
ddf2b2910e Merge bitcoin-core/secp256k1#1000: Synthetic int128 type.
86e3b38a4a Merge bitcoin-core/secp256k1#1149: Remove usage of CHECK from non-test file
00a42b91b3 Add MSan CI job
44916ae915 Merge bitcoin-core/secp256k1#1147: ci: print env to allow reproducing the job outside of CI
c2ee9175e9 Merge bitcoin-core/secp256k1#1146: ci: prevent "-v/--version: not found" irrelevant error
e13fae487e Merge bitcoin-core/secp256k1#1150: ci: always cat test_env.log
a340d9500a ci: add int128_struct tests
dceaa1f579 int128: Tidy #includes of int128.h and int128_impl.h
2914bccbc0 Simulated int128 type.
6a965b6b98 Remove usage of CHECK from non-test file
5c9f1a5c37 ci: always cat all logs_snippets
49ae843592 ci: mostly prevent "-v/--version: not found" irrelevant error
4e54c03153 ci: print env to allow reproducing the job outside of CI
a43e982bca Merge bitcoin-core/secp256k1#1144: Cleanup `.gitignore` file
f5039cb66c Cleanup `.gitignore` file
798727ae1e Revert "Add test logs to gitignore"
d22774e248 Merge BlockstreamResearch/secp256k1-zkp#203: MuSig doc fixes
dd83e72d52 Add ordinary tweak info
d26100cab2 Exclude nonce_process from pre-processing steps
b7607f93f2 Fix reference to xonly_tweak_add
f7e9a8544f Merge BlockstreamResearch/secp256k1-zkp#201: rangeproof: add secp256k1_rangeproof_max_size function to estimate rangeproof size
6b6ced9839 rangeproof: add more max_size tests
34876ecb5f rangeproof: add more static test vectors
310e517061 rangeproof: add a bunch more testing
f1410cb67a rangeproof: add secp256k1_rangeproof_max_size function to estimate rangeproof size
c137ddbdff Merge BlockstreamResearch/secp256k1-zkp#200: build: automatically enable module dependencies
0202d839fb Merge BlockstreamResearch/secp256k1-zkp#199: surjectionproof: make sure that n_used_pubkeys > 0 in generate
5ac8fb035e surjectionproof: make sure that n_used_pubkeys > 0 in generate
7ff446df8b Merge BlockstreamResearch/secp256k1-zkp#198: rangeproof: add a test for all-zero blinding factors
5a40f3d99b replace memcmp with secp256k1_memcmp_var throughout the codebase
92820d944b rangeproof: add a test for all-zero blinding factors
171b294a1c build: improve error message if --enable-experimental is missed
58ab152bb4 build: move all output concerning enabled modules at single place
1493113e61 build: automatically enable module dependencies
4fd7e1eabd Merge BlockstreamResearch/secp256k1-zkp#197: fix include paths in all the -zkp modules
347f96d94a fix include paths in all the -zkp modules
41e8704b48 build: Enable some modules by default
694ce8fb2d Merge bitcoin-core/secp256k1#1131: readme: Misc improvements
88b00897e7 readme: Fix line break
78f5296da4 readme: Sell "no runtime dependencies"
ef48f088ad readme: Add IRC channel
d1d6e47c17 Merge BlockstreamResearch/secp256k1-zkp#196: surjectionproof: fail to generate proofs when an input equals the output
d1175d265d surjectionproof: use secp256k1_memcmp_var rather than bare memcmp
bf18ff5a8c surjectionproof: fix generation to fail when any input == the output
4ff6e4274d surjectionproof: add test for existing behavior on input=output proofs
9f8a13dc8e Merge bitcoin-core/secp256k1#1128: configure: Remove pkgconfig macros again (reintroduced by mismerge)
cabe085bb4 configure: Remove pkgconfig macros again (reintroduced by mismerge)
71a206fa5b Merge BlockstreamResearch/secp256k1-zkp#194: extrakeys: rename swap/swap64 to fix OpenBSD 7.1 compilation
db648478c3 extrakeys: rename swap/swap64 to fix OpenBSD 7.1 compilation
3efeb9da21 Merge bitcoin-core/secp256k1#1121: config: Set preprocessor defaults for ECMULT_* config values
6a873cc4a9 Merge bitcoin-core/secp256k1#1122: tests: Randomize the context with probability 15/16 instead of 1/4
17065f48ae tests: Randomize the context with probability 15/16 instead of 1/4
c27ae45144 config: Remove basic-config.h
da6514a04a config: Introduce DEBUG_CONFIG macro for debug output of config
63a3565e97 Merge bitcoin-core/secp256k1#1120: ecmult_gen: Skip RNG when creating blinding if no seed is available
d0cf55e13a config: Set preprocessor defaults for ECMULT_* config values
55f8bc99dc ecmult_gen: Improve comments about projective blinding
7a86955800 ecmult_gen: Simplify code (no observable change)
4cc0b1b669 ecmult_gen: Skip RNG when creating blinding if no seed is available
af65d30cc8 Merge bitcoin-core/secp256k1#1116: build: Fix #include "..." paths to get rid of further -I arguments
40a3473a9d build: Fix #include "..." paths to get rid of further -I arguments
43756da819 Merge bitcoin-core/secp256k1#1115: Fix sepc256k1 -> secp256k1 typo in group.h
069aba8125 Fix sepc256k1 -> secp256k1 typo in group.h
accadc94df Merge bitcoin-core/secp256k1#1114: `_scratch_destroy`: move `VERIFY_CHECK` after invalid scrach space check
cd47033335 Merge bitcoin-core/secp256k1#1084: ci: Add MSVC builds
1827c9bf2b scratch_destroy: move VERIFY_CHECK after invalid scrach space check
49e2acd927 configure: Improve rationale for WERROR_CFLAGS
8dc4b03341 ci: Add a C++ job that compiles the public headers without -fpermissive
51f296a46c ci: Run persistent wineserver to speed up wine
3fb3269c22 ci: Add 32-bit MinGW64 build
9efc2e5221 ci: Add MSVC builds
2be6ba0fed configure: Convince autotools to work with MSVC's archiver lib.exe
bd81f4140a schnorrsig bench: Suppress a stupid warning in MSVC
44c2452fd3 Merge bitcoin-core/secp256k1#1105: Don't export symbols in static libraries
6f6cab9989 abi: Don't export symbols in static Windows libraries
485f608fa9 Merge bitcoin-core/secp256k1#1104: Fix the false positive of `SECP_64BIT_ASM_CHECK`
8b013fce51 Merge bitcoin-core/secp256k1#1056: Save negations in var-time group addition
7efc9835a9 Fix the false positive of `SECP_64BIT_ASM_CHECK`
2f984ffc45 Save negations in var-time group addition
09f3d71c51 configure: Add a few CFLAGS for MSVC
3b4f3d0d46 build: Reject C++ compilers in the preprocessor
1cc0941414 configure: Don't abort if the compiler does not define __STDC__
cca8cbbac8 configure: Output message when checking for valgrind
1a6be5745f bench: Make benchmarks compile on MSVC
e089eecc1e group: Further simply gej_add_ge
ac71020ebe group: Save a normalize_to_zero in gej_add_ge

git-subtree-dir: src/secp256k1
git-subtree-split: b2ccc8d9fdb91de6d00695acfdedaa80ebf66b35
janus pushed a commit to BitgesellOfficial/bitgesell that referenced this pull request Sep 3, 2023
bdf39000b9c Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0
b40adf23604 release: prepare for 0.3.0
90b513aadad Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1"
8be82d43628 cmake: Rename project to "libsecp256k1"
ef4f8bd0259 Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions
756b61d451d readme: Use correct build type in CMake/Windows build instructions
3295aa149bd Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake
92098d84cf7 changelog: Add entry for CMake
df323b5c146 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system
e1eb33724c2 ci: Add "x86_64: Windows (VS 2022)" task
10602b0030e cmake: Export config files
5468d709644 build: Add CMake-based build system
6048e6c03e4 Merge bitcoin-core/secp256k1#1222: Remove redundant checks.
eb8749fcd0f Merge bitcoin-core/secp256k1#1221: Update Changelog
5d8f53e3129 Remove redudent checks.
9d1b458d5fb Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
d232112fa7e Update Changelog
8962fc95bb0 Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b3870 Update overflow check
57573187826 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e4cbf Add secp256k1_fe_add_int function
5660c137552 prevent optimization in algorithms
09b1d466db7 Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc78a60 doc: Describe Jacobi calculation in safegcd_implementation.md
6be01036c8a Add secp256k1_fe_is_square_var function
1de2a01c2b2 Native jacobi symbol algorithm
04c6c1b1816 Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c7af5 Make secp256k1_i128_check_pow2 support -(2^n)
cbd25559343 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa51752 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
e4330341bd6 ci: Shutdown wineserver whenever CI script exits
9a5a611a21f build: Suppress stupid MSVC linker warning
739c53b19a2 examples: Extend sig examples by call that uses static context
914276e4d27 build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c1744b Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc1de0 build: Add -Wreserved-identifier supported by clang
8ebe5c52050 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5c2cf Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721ccce Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e3148d8 ci: Do not set git's `user.{email,name}` config options
e1817a6f54f Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff2005885 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d18669dc Drop no longer used Autoheader macros
c2415866c7a ci: Don't fetch git history
0ecf3188515 ci: Use remote pull/merge ref instead of local git merge
2b77240b3ba Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6bebaee39 scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7f2dc ci: add test job with -DVERIFY
620ba3d74be benchmarks: fix bench_scalar_split
5fbff5d348f Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d849d Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b1409 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954f118 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c0a97 Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f94c7 Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc9ee5 contexts: Forbid randomizing secp256k1_context_static
4b6df5e33e1 contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf5fb4 Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229e034 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738d5bb Ensure safety of ctz_debruijn implementation.
a01a7d86dc2 Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfaf3dc Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a3270923 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf89e2e Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785b265 Introduce SECP256K1_B macro for curve b coefficient
4934aa79958 Switch to exhaustive groups with small B coefficient
d4a6b58df74 Add `noverify_tests` to `.gitignore`
88e80722d2a Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec1126 Rename CTIMETEST -> CTIMETESTS
74b026f05d5 Add runtime checking for DECLASSIFY flag
5e2e6fcfc0e Run ctime test in Linux MSan CI job
18974061a3f Make ctime tests building configurable
5048be17e93 Rename valgrind_ctime_test -> ctime_tests
6eed6c18ded Update error messages to suggest msan as well
8e11f89a685 Add support for msan integration to checkmem.h
8dc64079eb1 Add compile-time error to valgrind_ctime_test
0db05a770eb Abstract interactions with valgrind behind new checkmem.h
4f1a54e41d8 Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4f404 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48f502 refactor: Rename STTC to STATIC_CTX in tests
3385a2648d7 refactor: Rename global variables to uppercase in tests
e03ef865593 Make all non-API functions (except main) static
cbe41ac138b Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
203760023c6 tests: Add noverify_tests which is like tests but without VERIFY
e862c4af0c5 Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb3000417f Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e3d7b refactor: Separate run_context_tests into static vs proper contexts
a4a09379b1a tests: Clean up and improve run_context_tests() further
fc90bb56956 refactor: Tidy up main()
f32a36f620e tests: Don't use global context for context tests
ce4f936c4fa tests: Tidy run_context_tests() by extracting functions
18e0db30cb4 tests: Don't recreate global context in scratch space test
b19806122e9 tests: Use global copy of secp256k1_context_static instead of clone
2a39ac162e0 Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca284e2a Drop `SECP_CONFIG_DEFINES` from examples
31ed5386e84 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b2ae3 Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a8c7d Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90f699 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f7749 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889f17e Clarify that the ABI-incompatible versions are earlier
881fc33d0c1 Consistency in naming of modules
665ba77e793 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f5bae Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a746882013 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fdadebd ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d21bbe Do not define unused `HAVE_VALGRIND` macro
ad8647f548c Drop no longer relevant files from `.gitignore`
b627ba7050b Remove dependency on `src/libsecp256k1-config.h`
9ecf8149a19 Reduce font size in changelog
2dc133a67ff Add more changelog entries
ac233e181a5 Add links to diffs to changelog
cee8223ef6d Mention semantic versioning in changelog
9a8d65f07f1 Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc290f74 release cleanup: bump version after 0.2.0
b6b360efafc doc: improve message of cleanup commit
a49e0940ad6 docs: Fix typo
2551cdac903 tests: Fix code formatting
c635c1bfd54 Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f2357c6 refactor: Add helper function secp256k1_context_is_proper()
d2164752053 test secp256k1_i128_to_i64
4bc429019dc Add a secp256k1_i128_to_u64 function.
e089eecc1e5 group: Further simply gej_add_ge
ac71020ebe0 group: Save a normalize_to_zero in gej_add_ge

git-subtree-dir: src/secp256k1
git-subtree-split: bdf39000b9c6a0818e7149ccb500873d079e6e85
@sipa sipa mentioned this pull request Sep 8, 2023
43 tasks
backpacker69 pushed a commit to peercoin/peercoin that referenced this pull request Mar 5, 2024
bdf39000b9c Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0
b40adf23604 release: prepare for 0.3.0
90b513aadad Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1"
8be82d43628 cmake: Rename project to "libsecp256k1"
ef4f8bd0259 Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions
756b61d451d readme: Use correct build type in CMake/Windows build instructions
3295aa149bd Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake
92098d84cf7 changelog: Add entry for CMake
df323b5c146 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system
e1eb33724c2 ci: Add "x86_64: Windows (VS 2022)" task
10602b0030e cmake: Export config files
5468d709644 build: Add CMake-based build system
6048e6c03e4 Merge bitcoin-core/secp256k1#1222: Remove redundant checks.
eb8749fcd0f Merge bitcoin-core/secp256k1#1221: Update Changelog
5d8f53e3129 Remove redudent checks.
9d1b458d5fb Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function
d232112fa7e Update Changelog
8962fc95bb0 Merge bitcoin-core/secp256k1#1218: Update overflow check
2ef1c9b3870 Update overflow check
57573187826 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples
b081f7e4cbf Add secp256k1_fe_add_int function
5660c137552 prevent optimization in algorithms
09b1d466db7 Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm
ce3cfc78a60 doc: Describe Jacobi calculation in safegcd_implementation.md
6be01036c8a Add secp256k1_fe_is_square_var function
1de2a01c2b2 Native jacobi symbol algorithm
04c6c1b1816 Make secp256k1_modinv64_det_check_pow2 support abs val
5fffb2c7af5 Make secp256k1_i128_check_pow2 support -(2^n)
cbd25559343 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1b21aa51752 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge
e4330341bd6 ci: Shutdown wineserver whenever CI script exits
9a5a611a21f build: Suppress stupid MSVC linker warning
739c53b19a2 examples: Extend sig examples by call that uses static context
914276e4d27 build: Add SECP256K1_API_VAR to fix importing variables from DLLs
1cca7c1744b Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang
8c7e0fc1de0 build: Add -Wreserved-identifier supported by clang
8ebe5c52050 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options
5596ec5c2cf Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB`
ef39721ccce Do not link `bench` and `ctime_tests` to `COMMON_LIB`
9b60e3148d8 ci: Do not set git's `user.{email,name}` config options
e1817a6f54f Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core
1bff2005885 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros
9b7d18669dc Drop no longer used Autoheader macros
c2415866c7a ci: Don't fetch git history
0ecf3188515 ci: Use remote pull/merge ref instead of local git merge
2b77240b3ba Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split
eb6bebaee39 scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs
7f49aa7f2dc ci: add test job with -DVERIFY
620ba3d74be benchmarks: fix bench_scalar_split
5fbff5d348f Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context
233822d849d Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined
ad7433b1409 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system
e39d954f118 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests
2cd4e3c0a97 Drop no longer used `SECP_{LIBS,INCLUDE}` variables
613626f94c7 Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables
61841fc9ee5 contexts: Forbid randomizing secp256k1_context_static
4b6df5e33e1 contexts: Forbid cloning/destroying secp256k1_context_static
b1579cf5fb4 Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation.
8f51229e034 ctime_tests: improve output when CHECKMEM_RUNNING is not defined
d6ff738d5bb Ensure safety of ctz_debruijn implementation.
a01a7d86dc2 Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient
a7a7bfaf3dc Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static
f29a3270923 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test)
ff8edf89e2e Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore`
ce60785b265 Introduce SECP256K1_B macro for curve b coefficient
4934aa79958 Switch to exhaustive groups with small B coefficient
d4a6b58df74 Add `noverify_tests` to `.gitignore`
88e80722d2a Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed
0f088ec1126 Rename CTIMETEST -> CTIMETESTS
74b026f05d5 Add runtime checking for DECLASSIFY flag
5e2e6fcfc0e Run ctime test in Linux MSan CI job
18974061a3f Make ctime tests building configurable
5048be17e93 Rename valgrind_ctime_test -> ctime_tests
6eed6c18ded Update error messages to suggest msan as well
8e11f89a685 Add support for msan integration to checkmem.h
8dc64079eb1 Add compile-time error to valgrind_ctime_test
0db05a770eb Abstract interactions with valgrind behind new checkmem.h
4f1a54e41d8 Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES
cc3b8a4f404 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests
9a93f48f502 refactor: Rename STTC to STATIC_CTX in tests
3385a2648d7 refactor: Rename global variables to uppercase in tests
e03ef865593 Make all non-API functions (except main) static
cbe41ac138b Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY
203760023c6 tests: Add noverify_tests which is like tests but without VERIFY
e862c4af0c5 Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed
0eb3000417f Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests
39e8f0e3d7b refactor: Separate run_context_tests into static vs proper contexts
a4a09379b1a tests: Clean up and improve run_context_tests() further
fc90bb56956 refactor: Tidy up main()
f32a36f620e tests: Don't use global context for context tests
ce4f936c4fa tests: Tidy run_context_tests() by extracting functions
18e0db30cb4 tests: Don't recreate global context in scratch space test
b19806122e9 tests: Use global copy of secp256k1_context_static instead of clone
2a39ac162e0 Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples
2f9ca284e2a Drop `SECP_CONFIG_DEFINES` from examples
31ed5386e84 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
c0a555b2ae3 Bugfix: pass SECP_CONFIG_DEFINES to bench compilation
01b819a8c7d Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function.
eacad90f699 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
3f57b9f7749 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog
c30b889f17e Clarify that the ABI-incompatible versions are earlier
881fc33d0c1 Consistency in naming of modules
665ba77e793 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h`
75d7b7f5bae Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error
7a746882013 ci: add missing CFLAGS & CPPFLAGS variable to print_environment
c2e0fdadebd ci: set -u in cirrus.sh to treat unset variables as an error
9c5a4d21bbe Do not define unused `HAVE_VALGRIND` macro
ad8647f548c Drop no longer relevant files from `.gitignore`
b627ba7050b Remove dependency on `src/libsecp256k1-config.h`
9ecf8149a19 Reduce font size in changelog
2dc133a67ff Add more changelog entries
ac233e181a5 Add links to diffs to changelog
cee8223ef6d Mention semantic versioning in changelog
9a8d65f07f1 Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0
02ebc290f74 release cleanup: bump version after 0.2.0
b6b360efafc doc: improve message of cleanup commit
a49e0940ad6 docs: Fix typo
2551cdac903 tests: Fix code formatting
c635c1bfd54 Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void)
cf66f2357c6 refactor: Add helper function secp256k1_context_is_proper()
d2164752053 test secp256k1_i128_to_i64
4bc429019dc Add a secp256k1_i128_to_u64 function.
e089eecc1e5 group: Further simply gej_add_ge
ac71020ebe0 group: Save a normalize_to_zero in gej_add_ge

git-subtree-dir: src/secp256k1
git-subtree-split: bdf39000b9c6a0818e7149ccb500873d079e6e85
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants