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

Finish sync to upstream #260

Merged
merged 548 commits into from
Aug 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
548 commits
Select commit Hold shift + click to select a range
68b16a1
bench: Make sys/time.h a system include
real-or-random Apr 21, 2023
5ec1333
Merge bitcoin-core/secp256k1#1285: bench: Make sys/time.h a system in…
real-or-random Apr 21, 2023
5431b9d
cmake: Make `SECP256K1_INSTALL` default depend on `PROJECT_IS_TOP_LEVEL`
hebasto Apr 21, 2023
f6bef03
Merge bitcoin-core/secp256k1#1283: Get rid of secp256k1_fe_const_b
real-or-random Apr 21, 2023
e9fd3df
field: Improve docs and tests of secp256k1_fe_set_b32
real-or-random Feb 1, 2023
162da73
tests: Add debug helper for printing buffers
real-or-random Feb 1, 2023
1f33bb2
Merge bitcoin-core/secp256k1#1205: field: Improve docs +tests of secp…
jonasnick Apr 21, 2023
3858bad
tests: remove extra semicolon in macro
jonasnick Apr 21, 2023
e1b9ce8
autotools: Use same conventions for all pregenerated files
real-or-random Apr 14, 2023
8764034
autotools: Make all "pregenerated" targets .PHONY
real-or-random Apr 14, 2023
2418d32
autotools: Create src/wycheproof dir before creating file in it
real-or-random Apr 14, 2023
7e977b3
autotools: Take VPATH builds into account when generating testvectors
real-or-random Apr 25, 2023
c4062d6
debug: move helper for printing buffers into util.h
jonasnick Apr 25, 2023
1c89536
Merge bitcoin-core/secp256k1#1286: tests: remove extra semicolon in m…
real-or-random Apr 25, 2023
6b7e5b7
Merge bitcoin-core/secp256k1#1275: build: Fix C4005 "macro redefiniti…
real-or-random Apr 26, 2023
596b336
Merge bitcoin-core/secp256k1#1234: cmake: Add dev-mode
real-or-random Apr 27, 2023
4b84f4b
Merge bitcoin-core/secp256k1#1239: cmake: Bugfix and other improvemen…
real-or-random Apr 27, 2023
19516ed
cmake: Use `add_compile_options()` in `try_add_compile_option()`
hebasto Apr 27, 2023
6ece150
cmake, refactor: Rename `try_add_compile_option` to `try_append_cflags`
hebasto Mar 22, 2023
a8d059f
cmake, doc: Document compiler flags
hebasto Mar 22, 2023
024a409
Merge bitcoin-core/secp256k1#1240: cmake: Improve and document compil…
real-or-random Apr 27, 2023
71f746c
cmake: Include `include` directory for subtree builds
hebasto Apr 21, 2023
222ecaf
Merge bitcoin-core/secp256k1#1284: cmake: Some improvements using `PR…
real-or-random Apr 27, 2023
4b0f711
Merge bitcoin-core/secp256k1#1277: autotools: Clean up after adding W…
real-or-random Apr 27, 2023
bef448f
cmake: Fix library ABI versioning
hebasto Apr 28, 2023
755629b
cmake: Use full signature of `add_test()` command
hebasto Apr 29, 2023
3c81838
Merge bitcoin-core/secp256k1#1289: cmake: Use full signature of `add_…
real-or-random Apr 29, 2023
b2e29e4
ci: Treat all compiler warnings as errors in "Windows (VS 2022)" task
hebasto Apr 30, 2023
d1e48e5
refactor: Make 64-bit shift explicit
hebasto Apr 30, 2023
f30c748
Merge bitcoin-core/secp256k1#1270: cmake: Fix library ABI versioning
real-or-random May 3, 2023
149c41c
docs: complete interface description for `secp256k1_schnorrsig_sign_c…
theStack May 8, 2023
bc7c8db
abi: Use dllexport for mingw builds
theuni May 4, 2023
723e8ca
Remove randomness tests
sipa May 8, 2023
1cf15eb
Merge bitcoin-core/secp256k1#1296: docs: complete interface descripti…
jonasnick May 9, 2023
fb5bfa4
Add static test vector for Xoshiro256++
real-or-random May 9, 2023
2e65f1f
Avoid using bench_verify_data as bench_sign_data; merge them
sipa May 9, 2023
24c768a
Merge bitcoin-core/secp256k1#1301: Avoid using bench_verify_data as b…
real-or-random May 10, 2023
a0e696f
Make secp256k1_ecmult_const handle infinity
gmaxwell Aug 8, 2020
3086cb9
Expose secp256k1_fe_verify to other modules
sipa Sep 1, 2020
a18821d
Always initialize output coordinates in secp256k1_ge_set_gej
sipa Sep 2, 2020
f202667
Add invariant checking to group elements
sipa Sep 2, 2020
0a2e0b2
Make secp256k1_{fe,ge,gej}_verify work as no-op if non-VERIFY
sipa May 9, 2023
bbc8344
Avoid secp256k1_ge_set_gej_zinv with uninitialized z
sipa May 9, 2023
6ec3731
Simplify test PRNG implementation
sipa May 10, 2023
341cc19
Merge bitcoin-core/secp256k1#1299: Infinity handling: ecmult_const(in…
real-or-random May 10, 2023
97c63b9
Avoid normalize conditional on VERIFY
sipa May 9, 2023
b29566c
Merge magnitude/normalized fields, move/improve comments
sipa Jan 28, 2022
e5cf4bf
build: Rename `arm` to `arm32`
hebasto May 11, 2023
7fa5195
Bugfix: correct SECP256K1_FE_CONST mag/norm fields
sipa Feb 1, 2022
b6b6f9c
Abstract out verify logic for fe_normalize
sipa Jan 28, 2022
e28b51f
Abstract out verify logic for fe_normalize_weak
sipa Jan 28, 2022
6c31371
Abstract out verify logic for fe_normalize_var
sipa Jan 28, 2022
864f9db
Abstract out verify logic for fe_normalizes_to_zero{,_var}
sipa Jan 31, 2022
19a2bfe
Abstract out verify logic for fe_set_int
sipa Jan 28, 2022
c701d9a
Abstract out verify logic for fe_clear
sipa Jan 31, 2022
d3f3fe8
Abstract out verify logic for fe_is_zero
sipa Jan 28, 2022
c5e788d
Abstract out verify logic for fe_is_odd
sipa Jan 28, 2022
7d7d43c
Improve comments/check for fe_equal{,_var}
sipa Jan 31, 2022
ce4d209
Abstract out verify logic for fe_cmp_var
sipa Jan 28, 2022
f7a7666
Abstract out verify logic for fe_set_b32
sipa Jan 28, 2022
1446708
Abstract out verify logic for fe_get_b32
sipa Jan 28, 2022
65d82a3
Abstract out verify logic for fe_negate
sipa Jan 28, 2022
7e7ad7f
Abstract out verify logic for fe_mul_int
sipa Jan 28, 2022
e179e65
Abstract out verify logic for fe_add
sipa Jan 28, 2022
4c25f6e
Abstract out verify logic for fe_mul
sipa Jan 28, 2022
6ab3508
Abstract out verify logic for fe_sqr
sipa Jan 28, 2022
be82bd8
Improve comments/checks for fe_sqrt
sipa Jan 31, 2022
1e6894b
Abstract out verify logic for fe_cmov
sipa Jan 28, 2022
76d31e5
Abstract out verify logic for fe_to_storage
sipa Jan 28, 2022
3167646
Abstract out verify logic for fe_from_storage
sipa Jan 29, 2022
d5aa2f0
Abstract out verify logic for fe_inv{,_var}
sipa Jan 29, 2022
283cd80
Abstract out verify logic for fe_get_bounds
sipa Jun 8, 2022
89e324c
Abstract out verify logic for fe_half
sipa Nov 17, 2022
4371f98
Abstract out verify logic for fe_add_int
sipa May 11, 2023
4e176ad
Abstract out verify logic for fe_is_square_var
sipa May 11, 2023
7fc642f
Simplify secp256k1_fe_{impl_,}verify
sipa May 11, 2023
c63ec88
Merge bitcoin-core/secp256k1#1066: Abstract out and merge all the mag…
sipa May 11, 2023
54d34b6
Merge bitcoin-core/secp256k1#1300: Avoid normalize conditional on VERIFY
sipa May 11, 2023
712e7f8
Remove unused scratch space from API
jonasnick May 11, 2023
5fb336f
ct: Use volatile trick in scalar_cond_negate
real-or-random May 10, 2023
17fa217
ct: Be cautious and use volatile trick in more "conditional" paths
real-or-random May 10, 2023
073d98a
Merge bitcoin-core/secp256k1#1292: refactor: Make 64-bit shift explicit
jonasnick May 11, 2023
9eb6934
Merge bitcoin-core/secp256k1#1305: Remove unused scratch space from API
real-or-random May 11, 2023
ab5a917
Merge bitcoin-core/secp256k1#1303: ct: Use more volatile
jonasnick May 11, 2023
97a98be
schnorrsig: Refactor test vector code to allow varlen messages
real-or-random Aug 11, 2022
28687b0
schnorrsig: Add BIP340 varlen test vectors
real-or-random Aug 11, 2022
cd54ac7
schnorrsig: Improve docs of schnorrsig_sign_custom
real-or-random Aug 11, 2022
fb3a806
Merge bitcoin-core/secp256k1#1133: schnorrsig: Add test vectors for v…
jonasnick May 11, 2023
1907f0f
build: Make tests work with external default callbacks
real-or-random May 11, 2023
006ddc1
Merge bitcoin-core/secp256k1#1306: build: Make tests work with extern…
jonasnick May 11, 2023
5b32602
Split fe_set_b32 into reducing and normalizing variants
sipa Feb 5, 2023
3353d3c
Merge bitcoin-core/secp256k1#1207: Split fe_set_b32 into reducing and…
sipa May 11, 2023
0c729ba
Bugfix: mark outputs as early clobber in scalar x86_64 asm
sipa May 12, 2023
350b4bd
Mark stack variables as early clobber for technical correctness
sipa May 12, 2023
ed4ba23
cmake: Add `check_arm32_assembly` function
hebasto May 12, 2023
0324645
autotools: Add `SECP_ARM32_ASM_CHECK` macro
hebasto May 11, 2023
8c9ae37
Add release note
sipa May 12, 2023
c6bb29b
build: Rename `64bit` to `x86_64`
hebasto May 12, 2023
b54a067
Merge bitcoin-core/secp256k1#1304: build: Rename arm to arm32 and che…
real-or-random May 12, 2023
7d4f86d
Merge bitcoin-core/secp256k1#1307: Mark more assembly outputs as earl…
jonasnick May 12, 2023
76b43f3
changelog: Add entry for #1303
real-or-random May 12, 2023
3ad1027
Revert "Remove unused scratch space from API"
jonasnick May 12, 2023
697e1cc
changelog: Catch up
real-or-random May 12, 2023
e8295d0
Merge bitcoin-core/secp256k1#1311: Revert "Remove unused scratch spac…
sipa May 12, 2023
3e3d125
Merge bitcoin-core/secp256k1#1309: changelog: Catch up
real-or-random May 12, 2023
d490ca2
release: Prepare for 0.3.2
real-or-random May 12, 2023
acf5c55
Merge bitcoin-core/secp256k1#1312: release: Prepare for 0.3.2
real-or-random May 13, 2023
95448ef
release cleanup: bump version after 0.3.2
sipa May 13, 2023
83186db
Merge bitcoin-core/secp256k1#1314: release cleanup: bump version afte…
real-or-random May 13, 2023
31b4bbe
Make fe_cmov take max of magnitudes
sipa May 15, 2023
5768b50
build: Enable -DVERIFY for precomputation binaries
real-or-random May 17, 2023
e9e4526
Merge bitcoin-core/secp256k1#1317: Make fe_cmov take max of magnitudes
real-or-random May 19, 2023
5f7903c
Merge bitcoin-core/secp256k1#1318: build: Enable -DVERIFY for precomp…
real-or-random May 19, 2023
6433175
Do not invoke fe_is_zero on failed set_b32_limit
sipa May 15, 2023
d373a72
Merge bitcoin-core/secp256k1#1316: Do not invoke fe_is_zero on failed…
real-or-random May 23, 2023
27504d5
ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe
real-or-random May 24, 2023
09df0bf
Merge bitcoin-core/secp256k1#1327: ci: Move wine prefix to /tmp to av…
real-or-random May 24, 2023
1652067
release process: add sanity checks
jonasnick May 12, 2023
79fa50b
release process: mention targeted release schedule
jonasnick May 12, 2023
6348bc7
release process: fix process for maintenance release
jonasnick May 12, 2023
ad84603
release process: clarify change log updates
jonasnick May 12, 2023
05873bb
tweak_add: fix API doc for tweak=0
jonasnick May 23, 2023
20a5da5
Merge bitcoin-core/secp256k1#1310: Refine release process
real-or-random May 24, 2023
1549db0
build: Level up MSVC warnings
hebasto May 24, 2023
908e02d
Merge bitcoin-core/secp256k1#1328: build: Bump MSVC warning level up …
real-or-random May 26, 2023
654246c
refactor: take use of `secp256k1_scalar_{zero,one}` constants
theStack May 29, 2023
e83801f
test: Warn if both `VERIFY` and `COVERAGE` are defined
hebasto May 30, 2023
ade5b36
tests: add checks for scalar constants `secp256k1_scalar_{zero,one}`
theStack May 30, 2023
d75dc59
Merge bitcoin-core/secp256k1#1333: test: Warn if both `VERIFY` and `C…
real-or-random May 31, 2023
debf3e5
Merge bitcoin-core/secp256k1#1330: refactor: take use of `secp256k1_s…
real-or-random May 31, 2023
605e07e
fix input range comment for `secp256k1_fe_add_int`
theStack Jun 1, 2023
bf29f8d
Merge bitcoin-core/secp256k1#1334: fix input range comment for `secp2…
real-or-random Jun 1, 2023
7dae115
Revert "ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe"
hebasto Jun 2, 2023
c7db494
ci: Fix error D8037 in `cl.exe`
hebasto Jun 3, 2023
db29bf2
ci: Remove quirk that runs dummy command after wineserver
real-or-random May 23, 2023
60556c9
Merge bitcoin-core/secp256k1#1337: ci: Fix error D8037 in `cl.exe` (a…
real-or-random Jun 3, 2023
5b7bf2e
Use `__shiftright128` intrinsic in `secp256k1_u128_rshift` on MSVC
hebasto Jun 4, 2023
e449af6
Drop no longer needed `#include "../include/secp256k1.h"`
hebasto Jun 6, 2023
52b8423
scalar: use `secp256k1_{read,write}_be32` helpers (8x32 impl.)
theStack Jun 4, 2023
887183e
scalar: use `secp256k1_{read,write}_be32` helpers (4x64 impl.)
theStack Jun 10, 2023
f364428
docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xon…
theStack Jun 11, 2023
cb1a592
Merge bitcoin-core/secp256k1#1341: docs: correct `pubkey` param descr…
jonasnick Jun 12, 2023
67214f5
Merge bitcoin-core/secp256k1#1339: scalar: refactor: use `secp256k1_{…
real-or-random Jun 12, 2023
efa76c4
group: remove unneeded normalize_weak in `secp256k1_ge_is_valid_var`
theStack Jun 12, 2023
be8ff3a
field: Static-assert that int args affecting magnitude are constant
real-or-random Jun 13, 2023
740528c
scalar: use newly introduced `secp256k1_{read,write}_be64` helpers (4…
theStack Jun 16, 2023
7067ee5
tests: add tests for `secp256k1_{read,write}_be64`
theStack Jun 16, 2023
f165252
Normalize ge produced from secp256k1_pubkey_load
stratospher Jun 15, 2023
45c5ca7
Merge bitcoin-core/secp256k1#1350: scalar: introduce and use `secp256…
real-or-random Jun 18, 2023
30574f2
Merge bitcoin-core/secp256k1#1349: Normalize ge produced from secp256…
real-or-random Jun 18, 2023
a597a5a
Add benchmark for key generation
sipa Jul 7, 2022
79e5b2a
Add functions to test if X coordinate is valid
sipa Nov 4, 2022
c47917b
Add ellswift module implementing ElligatorSwift
sipa Nov 4, 2022
9695deb
Add tests for ellswift module
sipa Nov 4, 2022
df633cd
Add _prefix and _bip324 ellswift_xdh hash functions
sipa May 5, 2023
2d1d41a
Add ctime tests for ellswift module
sipa Nov 4, 2022
1bcea8c
Add benchmarks for ellswift module
sipa Nov 4, 2022
4f09184
Add ellswift testing to CI
sipa Nov 4, 2022
90e360a
Add doc/ellswift.md with ElligatorSwift explanation
sipa Dec 23, 2022
5779137
field: Document return value of fe_sqrt()
real-or-random Jun 15, 2023
0702ecb
Merge bitcoin-core/secp256k1#1338: Drop no longer needed `#include ".…
real-or-random Jun 21, 2023
705ce7e
Merge bitcoin-core/secp256k1#1129: ElligatorSwift + integrated x-only DH
jonasnick Jun 21, 2023
3c1a0fd
Merge bitcoin-core/secp256k1#1347: field: Document return value of fe…
real-or-random Jun 21, 2023
c32ffd8
Add ellswift to CHANGELOG
sipa Jun 21, 2023
7c7467a
Refer to ellswift.md in API docs
sipa Jun 23, 2023
1083683
Merge bitcoin-core/secp256k1#1336: Use `__shiftright128` intrinsic in…
real-or-random Jun 24, 2023
926dd3e
Merge bitcoin-core/secp256k1#1295: abi: Use dllexport for mingw builds
real-or-random Jun 24, 2023
67887ae
Fix a typo in the error message
hebasto Jun 24, 2023
ac43613
Merge bitcoin-core/secp256k1#1354: Add ellswift to CHANGELOG
real-or-random Jun 25, 2023
fd491ea
Merge bitcoin-core/secp256k1#1355: Fix a typo in the error message
real-or-random Jun 25, 2023
8a72734
Help the compiler prove that a loop is entered
real-or-random May 16, 2023
7d8d5c8
tests: refactor: take use of `secp256k1_ge_x_on_curve_var`
theStack Jun 25, 2023
a178209
ci: Force DWARF v4 for Clang when Valgrind tests are expected
hebasto Jun 26, 2023
c862a9f
ci: Adjust Docker image to Debian 12 "bookworm"
hebasto Jun 26, 2023
799f4ee
Merge bitcoin-core/secp256k1#1356: ci: Adjust Docker image to Debian …
real-or-random Jun 27, 2023
4494a36
Merge bitcoin-core/secp256k1#1357: tests: refactor: take use of `secp…
real-or-random Jun 27, 2023
3aef6ab
Merge bitcoin-core/secp256k1#1345: field: Static-assert that int args…
real-or-random Jun 27, 2023
304421d
tests: refactor: remove duplicate function `random_field_element_test`
theStack Jun 26, 2023
5a95a26
tests: introduce helper for non-zero `random_fe_test` results
theStack Jun 26, 2023
0fa84f8
Merge bitcoin-core/secp256k1#1358: tests: introduce helper for non-ze…
real-or-random Jun 27, 2023
a6ca76c
Avoid `-Wmaybe-uninitialized` when compiling with `gcc -O1`
hebasto Jun 28, 2023
5b9f37f
ci: Add `CFLAGS: -O1` to task matrix
hebasto Jun 28, 2023
98579e2
ci: Drop manual checkout of merge commit
real-or-random Jul 1, 2023
249c81e
Merge bitcoin-core/secp256k1#1368: ci: Drop manual checkout of merge …
jonasnick Jul 2, 2023
a7bec34
ci: Print commit in Windows container
hebasto Jul 3, 2023
7966aee
Merge bitcoin-core/secp256k1#1369: ci: Print commit in Windows container
real-or-random Jul 3, 2023
ae9db95
build: Introduce `SECP256K1_STATIC` macro for Windows users
hebasto Jun 30, 2023
9f1b190
refactor: Replace `SECP256K1_API_VAR` with `SECP256K1_API`
hebasto Jun 29, 2023
0196e8a
build: Introduce `SECP256k1_DLL_EXPORT` macro
hebasto Jun 29, 2023
020bf69
build: Add extensive docs on visibility issues
real-or-random Jun 27, 2023
c6cd2b1
ci: Add task for static library on Windows + CMake
hebasto Jun 30, 2023
fb758fe
Merge bitcoin-core/secp256k1#1323: tweak_add: fix API doc for tweak=0
jonasnick Jul 3, 2023
3fc1de5
Merge bitcoin-core/secp256k1#1364: Avoid `-Wmaybe-uninitialized` when…
real-or-random Jul 3, 2023
07c0e8b
group: remove unneeded normalize_weak in `secp256k1_gej_eq_x_var`
theStack Jun 14, 2023
b6b9834
small fixes
criadoperez Jul 3, 2023
0aacf64
Merge bitcoin-core/secp256k1#1370: Corrected some typos
real-or-random Jul 3, 2023
9e6d1b0
Merge bitcoin-core/secp256k1#1367: build: Improvements to symbol visi…
real-or-random Jul 3, 2023
332af31
Merge bitcoin-core/secp256k1#1344: group: save normalize_weak calls i…
real-or-random Jul 4, 2023
c7d900f
doc: minor ellswift.md updates
stratospher Jun 27, 2023
2792119
Add exhaustive test for ellswift (create+decode roundtrip)
theStack Jul 4, 2023
afd7eb4
Merge bitcoin-core/secp256k1#1371: Add exhaustive tests for ellswift …
real-or-random Jul 5, 2023
c9ebca9
Merge bitcoin-core/secp256k1#1363: doc: minor ellswift.md updates
real-or-random Jul 6, 2023
b79ba8a
field: Use `restrict` consistently in fe_sqrt
real-or-random Jun 29, 2023
1deecaa
ci: Install development snapshots of gcc and clang
real-or-random May 11, 2023
609093b
ci: Add x86_64 Linux tasks for gcc and clang snapshots
real-or-random May 13, 2023
e9e9648
ci: Reduce number of macOS tasks from 28 to 8
real-or-random Jun 28, 2023
981e5be
ci: Fix typo in comment
real-or-random Jul 6, 2023
600c5ad
clean up in-comment Sage code (refer to secp256k1_params.sage, update…
theStack Jun 11, 2023
cc55757
Merge bitcoin-core/secp256k1#1340: clean up in-comment Sage code (ref…
real-or-random Jul 10, 2023
0f7657d
Merge bitcoin-core/secp256k1#1366: field: Use `restrict` consistently…
real-or-random Jul 11, 2023
907a672
Merge bitcoin-core/secp256k1#1313: ci: Test on development snapshots …
jonasnick Jul 13, 2023
c424e2f
ellswift: fix probabilistic test failure when swapping sides
jonasnick Jul 17, 2023
9a98106
Merge commits '8b013fce 485f608f 44c2452f cd470333 accadc94 43756da8 …
jonasnick Jul 17, 2023
64717a7
Merge commits '8b013fce 485f608f 44c2452f cd470333 accadc94 43756da8 …
jonasnick Jul 17, 2023
e996d07
Merge commits '44916ae9 86e3b38a ddf2b291 6138d73b e40fd277 ' into te…
jonasnick Jul 17, 2023
b40e2d3
Merge bitcoin-core/secp256k1#1378: ellswift: fix probabilistic test f…
real-or-random Jul 17, 2023
6c54db1
Merge commits '2286f809 751c4354 477f02c4 e3f84777 5c789dcd 8c949f56 …
jonasnick Jul 18, 2023
c545fdc
Merge bitcoin-core/secp256k1#1298: Remove randomness tests
jonasnick Jul 18, 2023
304fc88
Merge commits '9a8d65f0 75d7b7f5 665ba77e 3f57b9f7 eacad90f 01b819a8 …
jonasnick Jul 19, 2023
7aa9887
Merge pull request #246 from jonasnick/temp-merge-1187
jonasnick Jul 20, 2023
0d540ec
Merge commits '88e80722 ff8edf89 f29a3270 a7a7bfaf a01a7d86 b1579cf5 …
jonasnick Jul 20, 2023
897c765
Merge elementsproject/secp256k1-zkp#251: Update sync-upstream with ma…
jonasnick Jul 21, 2023
3937cef
Merge elementsproject/secp256k1-zkp#249: Upstream PRs 1160, 1193, 116…
jonasnick Jul 21, 2023
dc73359
Merge commits 'df323b5c 3295aa14 ef4f8bd0 90b513aa bdf39000 ' into te…
jonasnick Jul 21, 2023
d47e4d4
Merge elementsproject/secp256k1-zkp#252: Upstream PRs 1113, 1225, 122…
jonasnick Jul 21, 2023
4f8c5bd
refactor: Drop unused cast
hebasto Jul 24, 2023
a9a5c24
Merge commits '56582094 427bc3cd 0cf2fb91 9c8c4f44 70be3cad f16a709f …
jonasnick Jul 21, 2023
2bd5f3e
Merge bitcoin-core/secp256k1#1382: refactor: Drop unused cast
jonasnick Jul 24, 2023
7a07f3d
Merge commits '3bab71cf 4258c54f 566faa17 9ce9984f 04bf3f67 5be353d6 …
jonasnick Jul 24, 2023
e593ed5
musig: ensure point_load output is normalized
jonasnick Jul 25, 2023
b097a46
util: remove unused checked_realloc
theuni Jul 25, 2023
0e00fc7
Merge bitcoin-core/secp256k1#1383: util: remove unused checked_realloc
real-or-random Jul 26, 2023
78ca880
build: enable ellswift module via SECP_CONFIG_DEFINES
jonasnick Jul 26, 2023
c734c64
Merge bitcoin-core/secp256k1#1384: build: enable ellswift module via …
real-or-random Jul 27, 2023
4692478
ci: print $ELLSWIFT in cirrus.sh
jonasnick Jul 27, 2023
26392da
Merge bitcoin-core/secp256k1#1386: ci: print $ELLSWIFT in cirrus.sh
real-or-random Jul 27, 2023
74d9073
Merge commits '83186db3 e9e4526a 5f7903c7 d373a721 09df0bfb 20a5da5f …
jonasnick Jul 26, 2023
b160486
ecdsa_adaptor: add missing include
jonasnick Jul 27, 2023
579999b
scalar: adjust muladd2 to new int128 interface
jonasnick Jul 27, 2023
4c70cc9
Suppress wrong/buggy warning in MSVC <19.33
real-or-random Jul 27, 2023
525b661
bppp/build: Fix linkage of benchmark
real-or-random Jul 27, 2023
50e20fa
Merge elementsproject/secp256k1-zkp#257: Upstream PRs 1314, 1317, 131…
jonasnick Jul 27, 2023
8018708
Merge commits '4494a369 3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 …
jonasnick Jul 27, 2023
9e96a2e
hsort tests: Don't call secp256k1_testrand_int(0)
real-or-random Jul 28, 2023
54b37db
build: Fix linkage of extra binaries in -zkp modules
real-or-random Jul 28, 2023
82777bb
bppp: Fix test for invalid sign byte
real-or-random Jul 20, 2023
167194b
rangeproof: Use util functions for writing big endian
real-or-random Jul 21, 2023
aa3edea
scalar: Remove unused secp256k1_scalar_chacha20
real-or-random Jul 19, 2023
394e09e
musig: change test vector generation code shebang from python to python3
jonasnick Jul 22, 2023
395e65e
Merge branch 'master' into sync-upstream
real-or-random Aug 1, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
240 changes: 188 additions & 52 deletions .cirrus.yml

Large diffs are not rendered by default.

15 changes: 8 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,23 @@ bench_generator
bench_rangeproof
bench_internal
bench_whitelist
noverify_tests
tests
example_musig
exhaustive_tests
precompute_ecmult_gen
precompute_ecmult
valgrind_ctime_test
ctime_tests
ecdh_example
ecdsa_example
schnorr_example
*.exe
*.so
*.a
*.csv
!.gitignore
*.log
*.trs
*.sage.py

Makefile
configure
Expand All @@ -39,8 +40,6 @@ libtool
*.lo
*.o
*~
*.log
*.trs

coverage/
coverage.html
Expand All @@ -49,8 +48,6 @@ coverage.*.html
*.gcno
*.gcov

src/libsecp256k1-config.h
src/libsecp256k1-config.h.in
build-aux/ar-lib
build-aux/config.guess
build-aux/config.sub
Expand All @@ -65,8 +62,12 @@ build-aux/m4/ltversion.m4
build-aux/missing
build-aux/compile
build-aux/test-driver
src/stamp-h1
libsecp256k1.pc
contrib/gh-pr-create.sh

musig_example

### CMake
/CMakeUserPresets.json
# Default CMake build directory.
/build
108 changes: 108 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
**This changelog is not the libsecp256k1-zkp's changelog.**
Instead, it is the changelog of the upstream library [libsecp256k1](https://github.com/bitcoin-core/secp256k1).

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

#### Added
- New module `ellswift` implements ElligatorSwift encoding for public keys and x-only Diffie-Hellman key exchange for them.
ElligatorSwift permits representing secp256k1 public keys as 64-byte arrays which cannot be distinguished from uniformly random. See:
- Header file `include/secp256k1_ellswift.h` which defines the new API.
- Document `doc/ellswift.md` which explains the mathematical background of the scheme.
- The [paper](https://eprint.iacr.org/2022/759) on which the scheme is based.

#### Changed
- When consuming libsecp256k1 as a static library on Windows, the user must now define the `SECP256K1_STATIC` macro before including `secp256k1.h`.

## [0.3.2] - 2023-05-13
We strongly recommend updating to 0.3.2 if you use or plan to use GCC >=13 to compile libsecp256k1. When in doubt, check the GCC version using `gcc -v`.

#### Security
- Module `ecdh`: Fix "constant-timeness" issue with GCC 13.1 (and potentially future versions of GCC) that could leave applications using libsecp256k1's ECDH module vulnerable to a timing side-channel attack. The fix avoids secret-dependent control flow during ECDH computations when libsecp256k1 is compiled with GCC 13.1.

#### Fixed
- Fixed an old bug that permitted compilers to potentially output bad assembly code on x86_64. In theory, it could lead to a crash or a read of unrelated memory, but this has never been observed on any compilers so far.

#### Changed
- Various improvements and changes to CMake builds. CMake builds remain experimental.
- Made API versioning consistent with GNU Autotools builds.
- Switched to `BUILD_SHARED_LIBS` variable for controlling whether to build a static or a shared library.
- Added `SECP256K1_INSTALL` variable for the controlling whether to install the build artefacts.
- Renamed asm build option `arm` to `arm32`. Use `--with-asm=arm32` instead of `--with-asm=arm` (GNU Autotools), and `-DSECP256K1_ASM=arm32` instead of `-DSECP256K1_ASM=arm` (CMake).

#### ABI Compatibility
The ABI is compatible with versions 0.3.0 and 0.3.1.

## [0.3.1] - 2023-04-10
We strongly recommend updating to 0.3.1 if you use or plan to use Clang >=14 to compile libsecp256k1, e.g., Xcode >=14 on macOS has Clang >=14. When in doubt, check the Clang version using `clang -v`.

#### Security
- Fix "constant-timeness" issue with Clang >=14 that could leave applications using libsecp256k1 vulnerable to a timing side-channel attack. The fix avoids secret-dependent control flow and secret-dependent memory accesses in conditional moves of memory objects when libsecp256k1 is compiled with Clang >=14.

#### Added
- Added tests against [Project Wycheproof's](https://github.com/google/wycheproof/) set of ECDSA test vectors (Bitcoin "low-S" variant), a fixed set of test cases designed to trigger various edge cases.

#### Changed
- Increased minimum required CMake version to 3.13. CMake builds remain experimental.

#### ABI Compatibility
The ABI is compatible with version 0.3.0.

## [0.3.0] - 2023-03-08

#### Added
- Added experimental support for CMake builds. Traditional GNU Autotools builds (`./configure` and `make`) remain fully supported.
- Usage examples: Added a recommended method for securely clearing sensitive data, e.g., secret keys, from memory.
- Tests: Added a new test binary `noverify_tests`. This binary runs the tests without some additional checks present in the ordinary `tests` binary and is thereby closer to production binaries. The `noverify_tests` binary is automatically run as part of the `make check` target.

#### Fixed
- Fixed declarations of API variables for MSVC (`__declspec(dllimport)`). This fixes MSVC builds of programs which link against a libsecp256k1 DLL dynamically and use API variables (and not only API functions). Unfortunately, the MSVC linker now will emit warning `LNK4217` when trying to link against libsecp256k1 statically. Pass `/ignore:4217` to the linker to suppress this warning.

#### Changed
- Forbade cloning or destroying `secp256k1_context_static`. Create a new context instead of cloning the static context. (If this change breaks your code, your code is probably wrong.)
- Forbade randomizing (copies of) `secp256k1_context_static`. Randomizing a copy of `secp256k1_context_static` did not have any effect and did not provide defense-in-depth protection against side-channel attacks. Create a new context if you want to benefit from randomization.

#### Removed
- Removed the configuration header `src/libsecp256k1-config.h`. We recommend passing flags to `./configure` or `cmake` to set configuration options (see `./configure --help` or `cmake -LH`). If you cannot or do not want to use one of the supported build systems, pass configuration flags such as `-DSECP256K1_ENABLE_MODULE_SCHNORRSIG` manually to the compiler (see the file `configure.ac` for supported flags).

#### ABI Compatibility
Due to changes in the API regarding `secp256k1_context_static` described above, the ABI is *not* compatible with previous versions.

## [0.2.0] - 2022-12-12

#### Added
- Added usage examples for common use cases in a new `examples/` directory.
- Added `secp256k1_selftest`, to be used in conjunction with `secp256k1_context_static`.
- Added support for 128-bit wide multiplication on MSVC for x86_64 and arm64, giving roughly a 20% speedup on those platforms.

#### Changed
- Enabled modules `schnorrsig`, `extrakeys` and `ecdh` by default in `./configure`.
- The `secp256k1_nonce_function_rfc6979` nonce function, used by default by `secp256k1_ecdsa_sign`, now reduces the message hash modulo the group order to match the specification. This only affects improper use of ECDSA signing API.

#### Deprecated
- Deprecated context flags `SECP256K1_CONTEXT_VERIFY` and `SECP256K1_CONTEXT_SIGN`. Use `SECP256K1_CONTEXT_NONE` instead.
- Renamed `secp256k1_context_no_precomp` to `secp256k1_context_static`.
- Module `schnorrsig`: renamed `secp256k1_schnorrsig_sign` to `secp256k1_schnorrsig_sign32`.

#### ABI Compatibility
Since this is the first release, we do not compare application binary interfaces.
However, there are earlier unreleased versions of libsecp256k1 that are *not* ABI compatible with this version.

## [0.1.0] - 2013-03-05 to 2021-12-25

This version was in fact never released.
The number was given by the build system since the introduction of autotools in Jan 2014 (ea0fe5a5bf0c04f9cc955b2966b614f5f378c6f6).
Therefore, this version number does not uniquely identify a set of source files.

[unreleased]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.2...HEAD
[0.3.2]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/bitcoin-core/secp256k1/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/bitcoin-core/secp256k1/compare/423b6d19d373f1224fd671a982584d7e7900bc93..v0.2.0
[0.1.0]: https://github.com/bitcoin-core/secp256k1/commit/423b6d19d373f1224fd671a982584d7e7900bc93
Loading