394e09ee84musig: change test vector generation code shebang from python to python3 (Jonas Nick)aa3edea119scalar: Remove unused secp256k1_scalar_chacha20 (Tim Ruffing)167194bederangeproof: Use util functions for writing big endian (Tim Ruffing)82777bba34bppp: Fix test for invalid sign byte (Tim Ruffing)54b37db953build: Fix linkage of extra binaries in -zkp modules (Tim Ruffing)9e96a2e9d8hsort tests: Don't call secp256k1_testrand_int(0) (Tim Ruffing)4692478853ci: print $ELLSWIFT in cirrus.sh (Jonas Nick)78ca880788build: enable ellswift module via SECP_CONFIG_DEFINES (Jonas Nick)b097a466c1util: remove unused checked_realloc (Cory Fields)4f8c5bd761refactor: Drop unused cast (Hennadii Stepanov)6ec3731e8cSimplify test PRNG implementation (Pieter Wuille)fb5bfa4eedAdd static test vector for Xoshiro256++ (Tim Ruffing)723e8ca8f7Remove randomness tests (Pieter Wuille)c424e2fb43ellswift: fix probabilistic test failure when swapping sides (Jonas Nick)981e5be38cci: Fix typo in comment (Tim Ruffing)e9e9648219ci: Reduce number of macOS tasks from 28 to 8 (Tim Ruffing)609093b387ci: Add x86_64 Linux tasks for gcc and clang snapshots (Tim Ruffing)1deecaaf3bci: Install development snapshots of gcc and clang (Tim Ruffing)b79ba8aa4cfield: Use `restrict` consistently in fe_sqrt (Tim Ruffing)600c5adcd5clean up in-comment Sage code (refer to secp256k1_params.sage, update to Python3) (Sebastian Falbesoner)c7d900ffd1doc: minor ellswift.md updates (stratospher)2792119278Add exhaustive test for ellswift (create+decode roundtrip) (Sebastian Falbesoner)07c0e8b82egroup: remove unneeded normalize_weak in `secp256k1_gej_eq_x_var` (Sebastian Falbesoner)efa76c4bf7group: remove unneeded normalize_weak in `secp256k1_ge_is_valid_var` (Sebastian Falbesoner)c6cd2b15a0ci: Add task for static library on Windows + CMake (Hennadii Stepanov)020bf69a44build: Add extensive docs on visibility issues (Tim Ruffing)0196e8ade1build: Introduce `SECP256k1_DLL_EXPORT` macro (Hennadii Stepanov)9f1b1904a3refactor: Replace `SECP256K1_API_VAR` with `SECP256K1_API` (Hennadii Stepanov)ae9db95ceabuild: Introduce `SECP256K1_STATIC` macro for Windows users (Hennadii Stepanov)b6b9834e8dsmall fixes (Alejandro)5b9f37f136ci: Add `CFLAGS: -O1` to task matrix (Hennadii Stepanov)a6ca76cdf2Avoid `-Wmaybe-uninitialized` when compiling with `gcc -O1` (Hennadii Stepanov)05873bb6b1tweak_add: fix API doc for tweak=0 (Jonas Nick)a7bec34231ci: Print commit in Windows container (Hennadii Stepanov)98579e297bci: Drop manual checkout of merge commit (Tim Ruffing)5a95a268b9tests: introduce helper for non-zero `random_fe_test` results (Sebastian Falbesoner)304421d57btests: refactor: remove duplicate function `random_field_element_test` (Sebastian Falbesoner)be8ff3a02afield: Static-assert that int args affecting magnitude are constant (Tim Ruffing)7d8d5c86dftests: refactor: take use of `secp256k1_ge_x_on_curve_var` (Sebastian Falbesoner)525b661f83bppp/build: Fix linkage of benchmark (Tim Ruffing)4c70cc9bf5Suppress wrong/buggy warning in MSVC <19.33 (Tim Ruffing)579999b425scalar: adjust muladd2 to new int128 interface (Jonas Nick)b160486766ecdsa_adaptor: add missing include (Jonas Nick)c862a9fb49ci: Adjust Docker image to Debian 12 "bookworm" (Hennadii Stepanov)a1782098a9ci: Force DWARF v4 for Clang when Valgrind tests are expected (Hennadii Stepanov)8a7273465bHelp the compiler prove that a loop is entered (Tim Ruffing)67887ae65cFix a typo in the error message (Hennadii Stepanov)7c7467ab7fRefer to ellswift.md in API docs (Pieter Wuille)c32ffd8d8cAdd ellswift to CHANGELOG (Pieter Wuille)bc7c8db179abi: Use dllexport for mingw builds (Cory Fields)5b7bf2e9d4Use `__shiftright128` intrinsic in `secp256k1_u128_rshift` on MSVC (Hennadii Stepanov)5779137457field: Document return value of fe_sqrt() (Tim Ruffing)90e360acc2Add doc/ellswift.md with ElligatorSwift explanation (Pieter Wuille)4f091847c2Add ellswift testing to CI (Pieter Wuille)1bcea8c57fAdd benchmarks for ellswift module (Pieter Wuille)2d1d41acf8Add ctime tests for ellswift module (Pieter Wuille)df633cdebaAdd _prefix and _bip324 ellswift_xdh hash functions (Pieter Wuille)9695deb351Add tests for ellswift module (Pieter Wuille)c47917bbd6Add ellswift module implementing ElligatorSwift (Pieter Wuille)79e5b2a8b8Add functions to test if X coordinate is valid (Pieter Wuille)a597a5a9ceAdd benchmark for key generation (Pieter Wuille)e449af6872Drop no longer needed `#include "../include/secp256k1.h"` (Hennadii Stepanov)f1652528beNormalize ge produced from secp256k1_pubkey_load (stratospher)7067ee54b4tests: add tests for `secp256k1_{read,write}_be64` (Sebastian Falbesoner)740528caadscalar: use newly introduced `secp256k1_{read,write}_be64` helpers (4x64 impl.) (Sebastian Falbesoner)887183e7descalar: use `secp256k1_{read,write}_be32` helpers (4x64 impl.) (Sebastian Falbesoner)52b84238descalar: use `secp256k1_{read,write}_be32` helpers (8x32 impl.) (Sebastian Falbesoner)f3644287b1docs: correct `pubkey` param descriptions for `secp256k1_keypair_{xonly_,}pub` (Sebastian Falbesoner)db29bf220cci: Remove quirk that runs dummy command after wineserver (Tim Ruffing)c7db4942b3ci: Fix error D8037 in `cl.exe` (Hennadii Stepanov)7dae115861Revert "ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe" (Hennadii Stepanov)605e07e365fix input range comment for `secp256k1_fe_add_int` (Sebastian Falbesoner)ade5b36701tests: add checks for scalar constants `secp256k1_scalar_{zero,one}` (Sebastian Falbesoner)654246c635refactor: take use of `secp256k1_scalar_{zero,one}` constants (Sebastian Falbesoner)e83801f5dbtest: Warn if both `VERIFY` and `COVERAGE` are defined (Hennadii Stepanov)1549db0ca5build: Level up MSVC warnings (Hennadii Stepanov)ad84603297release process: clarify change log updates (Jonas Nick)6348bc7eeerelease process: fix process for maintenance release (Jonas Nick)79fa50b082release process: mention targeted release schedule (Jonas Nick)165206789brelease process: add sanity checks (Jonas Nick)27504d5c94ci: Move wine prefix to /tmp to avoid error D8037 in cl.exe (Tim Ruffing)6433175ffeDo not invoke fe_is_zero on failed set_b32_limit (Pieter Wuille)5768b50229build: Enable -DVERIFY for precomputation binaries (Tim Ruffing)31b4bbee1eMake fe_cmov take max of magnitudes (Pieter Wuille)95448ef2f8release cleanup: bump version after 0.3.2 (Pieter Wuille)e593ed5685musig: ensure point_load output is normalized (Jonas Nick)d490ca2046release: Prepare for 0.3.2 (Tim Ruffing)697e1ccf4achangelog: Catch up (Tim Ruffing)76b43f3443changelog: Add entry for #1303 (Tim Ruffing)3ad1027a40Revert "Remove unused scratch space from API" (Jonas Nick)8c9ae37a5aAdd release note (Pieter Wuille)350b4bd6e6Mark stack variables as early clobber for technical correctness (Pieter Wuille)0c729ba70dBugfix: mark outputs as early clobber in scalar x86_64 asm (Pieter Wuille)c6bb29b303build: Rename `64bit` to `x86_64` (Hennadii Stepanov)03246457a8autotools: Add `SECP_ARM32_ASM_CHECK` macro (Hennadii Stepanov)ed4ba238e2cmake: Add `check_arm32_assembly` function (Hennadii Stepanov)e5cf4bf3ffbuild: Rename `arm` to `arm32` (Hennadii Stepanov)5b32602295Split fe_set_b32 into reducing and normalizing variants (Pieter Wuille)1907f0f166build: Make tests work with external default callbacks (Tim Ruffing)cd54ac7c1cschnorrsig: Improve docs of schnorrsig_sign_custom (Tim Ruffing)28687b0312schnorrsig: Add BIP340 varlen test vectors (Tim Ruffing)97a98bed1eschnorrsig: Refactor test vector code to allow varlen messages (Tim Ruffing)17fa21733act: Be cautious and use volatile trick in more "conditional" paths (Tim Ruffing)5fb336f9cect: Use volatile trick in scalar_cond_negate (Tim Ruffing)712e7f8722Remove unused scratch space from API (Jonas Nick)d1e48e5474refactor: Make 64-bit shift explicit (Hennadii Stepanov)b2e29e43d0ci: Treat all compiler warnings as errors in "Windows (VS 2022)" task (Hennadii Stepanov)97c63b9039Avoid normalize conditional on VERIFY (Pieter Wuille)7fc642fa25Simplify secp256k1_fe_{impl_,}verify (Pieter Wuille)4e176ad5b9Abstract out verify logic for fe_is_square_var (Pieter Wuille)4371f98346Abstract out verify logic for fe_add_int (Pieter Wuille)89e324c6b9Abstract out verify logic for fe_half (Pieter Wuille)283cd80ab4Abstract out verify logic for fe_get_bounds (Pieter Wuille)d5aa2f0358Abstract out verify logic for fe_inv{,_var} (Pieter Wuille)3167646072Abstract out verify logic for fe_from_storage (Pieter Wuille)76d31e5047Abstract out verify logic for fe_to_storage (Pieter Wuille)1e6894bdd7Abstract out verify logic for fe_cmov (Pieter Wuille)be82bd8e03Improve comments/checks for fe_sqrt (Pieter Wuille)6ab35082efAbstract out verify logic for fe_sqr (Pieter Wuille)4c25f6efbdAbstract out verify logic for fe_mul (Pieter Wuille)e179e651cbAbstract out verify logic for fe_add (Pieter Wuille)7e7ad7ff57Abstract out verify logic for fe_mul_int (Pieter Wuille)65d82a3445Abstract out verify logic for fe_negate (Pieter Wuille)144670893eAbstract out verify logic for fe_get_b32 (Pieter Wuille)f7a7666aebAbstract out verify logic for fe_set_b32 (Pieter Wuille)ce4d2093e8Abstract out verify logic for fe_cmp_var (Pieter Wuille)7d7d43c6ddImprove comments/check for fe_equal{,_var} (Pieter Wuille)c5e788d672Abstract out verify logic for fe_is_odd (Pieter Wuille)d3f3fe8616Abstract out verify logic for fe_is_zero (Pieter Wuille)c701d9a471Abstract out verify logic for fe_clear (Pieter Wuille)19a2bfeeeaAbstract out verify logic for fe_set_int (Pieter Wuille)864f9db491Abstract out verify logic for fe_normalizes_to_zero{,_var} (Pieter Wuille)6c31371120Abstract out verify logic for fe_normalize_var (Pieter Wuille)e28b51f522Abstract out verify logic for fe_normalize_weak (Pieter Wuille)b6b6f9cb97Abstract out verify logic for fe_normalize (Pieter Wuille)7fa5195559Bugfix: correct SECP256K1_FE_CONST mag/norm fields (Pieter Wuille)b29566c51bMerge magnitude/normalized fields, move/improve comments (Pieter Wuille)bbc834467cAvoid secp256k1_ge_set_gej_zinv with uninitialized z (Pieter Wuille)0a2e0b2ae4Make secp256k1_{fe,ge,gej}_verify work as no-op if non-VERIFY (Pieter Wuille)f20266722aAdd invariant checking to group elements (Pieter Wuille)a18821d5b1Always initialize output coordinates in secp256k1_ge_set_gej (Pieter Wuille)3086cb90acExpose secp256k1_fe_verify to other modules (Pieter Wuille)a0e696fd4dMake secp256k1_ecmult_const handle infinity (Gregory Maxwell)2e65f1fdbcAvoid using bench_verify_data as bench_sign_data; merge them (Pieter Wuille)149c41cee1docs: complete interface description for `secp256k1_schnorrsig_sign_custom` (Sebastian Falbesoner)bef448f9afcmake: Fix library ABI versioning (Hennadii Stepanov)755629bc03cmake: Use full signature of `add_test()` command (Hennadii Stepanov)7e977b3c50autotools: Take VPATH builds into account when generating testvectors (Tim Ruffing)2418d3260aautotools: Create src/wycheproof dir before creating file in it (Tim Ruffing)8764034ed5autotools: Make all "pregenerated" targets .PHONY (Tim Ruffing)e1b9ce8811autotools: Use same conventions for all pregenerated files (Tim Ruffing)08f4b1632dautotools: Move code around to tidy Makefile (Tim Ruffing)529b54d922autotools: Move Wycheproof header from EXTRA_DIST to noinst_HEADERS (Tim Ruffing)71f746c057cmake: Include `include` directory for subtree builds (Hennadii Stepanov)5431b9decdcmake: Make `SECP256K1_INSTALL` default depend on `PROJECT_IS_TOP_LEVEL` (Hennadii Stepanov)162608cc98cmake: Emulate `PROJECT_IS_TOP_LEVEL` for CMake<3.21 (Hennadii Stepanov)a8d059f76ccmake, doc: Document compiler flags (Hennadii Stepanov)6ece1507cbcmake, refactor: Rename `try_add_compile_option` to `try_append_cflags` (Hennadii Stepanov)19516ed3e9cmake: Use `add_compile_options()` in `try_add_compile_option()` (Hennadii Stepanov)a273d74b2ecmake: Improve version comparison (Hennadii Stepanov)6a58b483efcmake: Use `if(... IN_LIST ...)` command (Hennadii Stepanov)2445808c02cmake: Use dedicated `GENERATOR_IS_MULTI_CONFIG` property (Hennadii Stepanov)9f8703ef17cmake: Use dedicated `CMAKE_HOST_APPLE` variable (Hennadii Stepanov)8c2017035acmake: Use recommended `add_compile_definitions` command (Hennadii Stepanov)04d4cc071acmake: Add `DESCRIPTION` and `HOMEPAGE_URL` options to `project` command (Hennadii Stepanov)8a8b6536efcmake: Use `SameMinorVersion` compatibility mode (Hennadii Stepanov)ce5ba9e24dgitignore: Add CMakeUserPresets.json (Tim Ruffing)0a446a312fcmake: Add dev-mode CMake preset (Tim Ruffing)dc0657c762build: Fix C4005 "macro redefinition" MSVC warnings in examples (Hennadii Stepanov)c4062d6b5ddebug: move helper for printing buffers into util.h (Jonas Nick)3858bad2c6tests: remove extra semicolon in macro (Jonas Nick)162da73e9atests: Add debug helper for printing buffers (Tim Ruffing)e9fd3dff76field: Improve docs and tests of secp256k1_fe_set_b32 (Tim Ruffing)ca92a35d01field: Simplify code in secp256k1_fe_set_b32 (Tim Ruffing)d93f62e369field: Verify field element even after secp256k1_fe_set_b32 fails (Tim Ruffing)69e1ec0331Get rid of secp256k1_fe_const_b (Pieter Wuille)68b16a1662bench: Make sys/time.h a system include (Tim Ruffing)8e142ca410Move `SECP256K1_INLINE` macro definition out from `include/secp256k1.h` (Hennadii Stepanov)77445898a5Remove `SECP256K1_INLINE` usage from examples (Hennadii Stepanov)47ac3d63cdcmake: Make installation optional (Anna “CyberTailor”)1ecb94ebe9build: Make `SECP_VALGRIND_CHECK` preserve `CPPFLAGS` (Hennadii Stepanov)35ada3b954tests: lint wycheproof's python script (RandomLattice)ef49a11d29build: allow static or shared but not both (Cory Fields)36b0adf1b9build: remove warning until it's reproducible (Cory Fields)a575339c02Remove bits argument from secp256k1_wnaf_const (always 256) (Pieter Wuille)1b6fb5593cdoc: clarify process for patch releases (Jonas Nick)06c67dea9fautotools: Don't regenerate Wycheproof header automatically (Tim Ruffing)656c6ea8d8release cleanup: bump version after 0.3.1 (Jonas Nick)6a37b2a5eachangelog: Fix link (Tim Ruffing)898e1c676erelease: Prepare for 0.3.1 (Tim Ruffing)1d9a13fc26changelog: Remove inconsistent newlines (Tim Ruffing)0e091669a1changelog: Catch up in preparation of 0.3.1 (Tim Ruffing)e5de454609tests: Add Wycheproof ECDSA vectors (RandomLattice)0f8642079bAdd exhaustive tests for ecmult_const_xonly (Pieter Wuille)4485926aceAdd x-only ecmult_const version for x=n/d (Pieter Wuille)3d1f430f9fMake position of * in pointer declarations in include/ consistent (Jonas Nick)0c07c82834Add CMake instructions to release process (Tim Ruffing)4a496a36fbct: Use volatile "trick" in all fe/scalar cmov implementations (Tim Ruffing)3addb4c1e8build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro (Hennadii Stepanov)5bb03c2911Replace `SECP256K1_ECMULT_TABLE_VERIFY` macro by a function (Hennadii Stepanov)4429a8c218Suppress `-Wunused-parameter` when building for coverage analysis (Hennadii Stepanov)3e43041be6No need to subtract 1 before doing a right shift (roconnor-blockstream)fd2a408647Set ARM ASM symbol visibility to `hidden` (Hennadii Stepanov)4ebd82852dApply Checks only in VERIFY mode. (roconnor-blockstream)d1e7ca192dTypo (roconnor-blockstream)96dd062511build: bump CMake minimum requirement to 3.13 (Cory Fields)8e79c7ed11build: Ensure no optimization when building for coverage analysis (Hennadii Stepanov)647f0a5cb1Update comment for secp256k1_modinv32_inv256 (roconnor-blockstream)28e63f7ea7release cleanup: bump version after 0.3.0 (Jonas Nick)b40adf2360release: prepare for 0.3.0 (Jonas Nick)8be82d4362cmake: Rename project to "libsecp256k1" (Hennadii Stepanov)756b61d451readme: Use correct build type in CMake/Windows build instructions (Tim Ruffing)92098d84cfchangelog: Add entry for CMake (Tim Ruffing)e1eb33724cci: Add "x86_64: Windows (VS 2022)" task (Hennadii Stepanov)10602b0030cmake: Export config files (Hennadii Stepanov)5468d70964build: Add CMake-based build system (Hennadii Stepanov)5d8f53e312Remove redudent checks. (Russell O'Connor)d232112fa7Update Changelog (Tim Ruffing)b081f7e4cbAdd secp256k1_fe_add_int function (Pieter Wuille)2ef1c9b387Update overflow check (Russell O'Connor)5660c13755prevent optimization in algorithms (Harshil Jani)ce3cfc78a6doc: Describe Jacobi calculation in safegcd_implementation.md (Elliott Jin)6be01036c8Add secp256k1_fe_is_square_var function (Pieter Wuille)1de2a01c2bNative jacobi symbol algorithm (Pieter Wuille)04c6c1b181Make secp256k1_modinv64_det_check_pow2 support abs val (Pieter Wuille)5fffb2c7afMake secp256k1_i128_check_pow2 support -(2^n) (Pieter Wuille)e4330341bdci: Shutdown wineserver whenever CI script exits (Tim Ruffing)9a5a611a21build: Suppress stupid MSVC linker warning (Tim Ruffing)739c53b19aexamples: Extend sig examples by call that uses static context (Tim Ruffing)914276e4d2build: Add SECP256K1_API_VAR to fix importing variables from DLLs (Tim Ruffing)e089eecc1egroup: Further simply gej_add_ge (Tim Ruffing)ac71020ebegroup: Save a normalize_to_zero in gej_add_ge (Tim Ruffing)8c7e0fc1debuild: Add -Wreserved-identifier supported by clang (Tim Ruffing)9b60e3148dci: Do not set git's `user.{email,name}` config options (Hennadii Stepanov)ef39721cccDo not link `bench` and `ctime_tests` to `COMMON_LIB` (Hennadii Stepanov)c2415866c7ci: Don't fetch git history (Tim Ruffing)0ecf318851ci: Use remote pull/merge ref instead of local git merge (Tim Ruffing)9b7d18669dDrop no longer used Autoheader macros (Hennadii Stepanov)eb6bebaee3scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs (Jonas Nick)7f49aa7f2dci: add test job with -DVERIFY (Jonas Nick)620ba3d74bbenchmarks: fix bench_scalar_split (Jonas Nick)e39d954f11tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests (Tim Ruffing)61841fc9eecontexts: Forbid randomizing secp256k1_context_static (Tim Ruffing)4b6df5e33econtexts: Forbid cloning/destroying secp256k1_context_static (Tim Ruffing)8f51229e03ctime_tests: improve output when CHECKMEM_RUNNING is not defined (Jonas Nick)2cd4e3c0a9Drop no longer used `SECP_{LIBS,INCLUDE}` variables (Hennadii Stepanov)613626f94cDrop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables (Hennadii Stepanov)d6ff738d5bEnsure safety of ctz_debruijn implementation. (Russell O'Connor)ce60785b26Introduce SECP256K1_B macro for curve b coefficient (Pieter Wuille)4934aa7995Switch to exhaustive groups with small B coefficient (Pieter Wuille)e03ef86559Make all non-API functions (except main) static (Pieter Wuille)0f088ec112Rename CTIMETEST -> CTIMETESTS (Pieter Wuille)74b026f05dAdd runtime checking for DECLASSIFY flag (Pieter Wuille)5e2e6fcfc0Run ctime test in Linux MSan CI job (Pieter Wuille)18974061a3Make ctime tests building configurable (Pieter Wuille)5048be17e9Rename valgrind_ctime_test -> ctime_tests (Pieter Wuille)6eed6c18deUpdate error messages to suggest msan as well (Pieter Wuille)8e11f89a68Add support for msan integration to checkmem.h (Pieter Wuille)8dc64079ebAdd compile-time error to valgrind_ctime_test (Pieter Wuille)0db05a770eAbstract interactions with valgrind behind new checkmem.h (Pieter Wuille)4f1a54e41dMove valgrind CPPFLAGS into SECP_CONFIG_DEFINES (Pieter Wuille)d4a6b58df7Add `noverify_tests` to `.gitignore` (Hennadii Stepanov)e862c4af0cMakefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed (Matt Whitlock)9a93f48f50refactor: Rename STTC to STATIC_CTX in tests (Tim Ruffing)3385a2648drefactor: Rename global variables to uppercase in tests (Tim Ruffing)203760023ctests: Add noverify_tests which is like tests but without VERIFY (Tim Ruffing)39e8f0e3d7refactor: Separate run_context_tests into static vs proper contexts (Tim Ruffing)a4a09379b1tests: Clean up and improve run_context_tests() further (Tim Ruffing)fc90bb5695refactor: Tidy up main() (Tim Ruffing)f32a36f620tests: Don't use global context for context tests (Tim Ruffing)ce4f936c4ftests: Tidy run_context_tests() by extracting functions (Tim Ruffing)18e0db30cbtests: Don't recreate global context in scratch space test (Tim Ruffing)b19806122etests: Use global copy of secp256k1_context_static instead of clone (Tim Ruffing)2f9ca284e2Drop `SECP_CONFIG_DEFINES` from examples (Hennadii Stepanov)c0a555b2aeBugfix: pass SECP_CONFIG_DEFINES to bench compilation (Pieter Wuille)d216475205test secp256k1_i128_to_i64 (Russell O'Connor)4bc429019dAdd a secp256k1_i128_to_u64 function. (Russell O'Connor)a49e0940addocs: Fix typo (Tim Ruffing)2551cdac90tests: Fix code formatting (Tim Ruffing)c635c1bfd5Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void) (Tim Ruffing)cf66f2357crefactor: Add helper function secp256k1_context_is_proper() (Tim Ruffing)c30b889f17Clarify that the ABI-incompatible versions are earlier (Pieter Wuille)881fc33d0cConsistency in naming of modules (Pieter Wuille)9ecf8149a1Reduce font size in changelog (Pieter Wuille)2dc133a67fAdd more changelog entries (Pieter Wuille)ac233e181aAdd links to diffs to changelog (Pieter Wuille)cee8223ef6Mention semantic versioning in changelog (Pieter Wuille)9c5a4d21bbDo not define unused `HAVE_VALGRIND` macro (Hennadii Stepanov)ad8647f548Drop no longer relevant files from `.gitignore` (Hennadii Stepanov)b627ba7050Remove dependency on `src/libsecp256k1-config.h` (Hennadii Stepanov)7a74688201ci: add missing CFLAGS & CPPFLAGS variable to print_environment (Jonas Nick)c2e0fdadebci: set -u in cirrus.sh to treat unset variables as an error (Jonas Nick)02ebc290f7release cleanup: bump version after 0.2.0 (Jonas Nick)b6b360efafdoc: improve message of cleanup commit (Jonas Nick)e025ccdf74release: prepare for initial release 0.2.0 (Jonas Nick)6d1784a2e2build: add missing files to EXTRA_DIST (Jonas Nick)13bf1b6b32changelog: make order of change types match keepachangelog.com (Jonas Nick)b1f992a552doc: improve release process (Jonas Nick)ad39e2dc41build: change package version to 0.1.0-dev (Jonas Nick)90618e9263doc: move CHANGELOG from doc/ to root directory (Jonas Nick)7e5b22684fDon't use compute credits for now (Pieter Wuille)d6dc0f4ae3tests: Switch to NONE contexts in module tests (Jonas Nick)0c8a5cadddtests: Switch to NONE contexts in tests.c (Jonas Nick)86540e9e1ftests: add test for deprecated flags and rm them from run_context (Jonas Nick)caa0ad631egroup: add gej_eq_var (Jonas Nick)37ba744f5btests: Switch to NONE contexts in exhaustive and ctime tests (Jonas Nick)8d7a9a8edabenchmarks: Switch to NONE contexts (Jonas Nick)4386a2306cexamples: Switch to NONE contexts (Tim Ruffing)7289b51d31docs: Use doxygen style if and only if comment is user-facing (Tim Ruffing)e7d0185c90docs: Get rid of "initialized for signing" terminology (Tim Ruffing)06126364addocs: Tidy and improve docs about contexts and randomization (Tim Ruffing)e02d6862bdselftest: Expose in public API (Tim Ruffing)e383fbfa66selftest: Rename internal function to make name available for API (Tim Ruffing)d2c6d48de3tests: Use new name of static context (Tim Ruffing)53796d2b24contexts: Rename static context (Tim Ruffing)72fedf8a6cdocs: Improve docs for static context (Tim Ruffing)316ac7625acontexts: Deprecate all context flags except SECP256K1_CONTEXT_NONE (Tim Ruffing)1a553ee8bedocs: Change signature "validation" to "verification" (Tim Ruffing)ee7341fbacdocs: Never require a verification context (Tim Ruffing)092be61c5egitignore: Add *.sage.py files autogenerated by sage (Tim Ruffing)a8494b02bfUse compute credits for macOS jobs (Pieter Wuille)c0ae48c995Update macOS image for CI (Pieter Wuille)41e8704b48build: Enable some modules by default (Tim Ruffing)99bd335599Make int128 overflow test use secp256k1_[ui]128_mul (Pieter Wuille)3afce0af7cAvoid signed overflow in MSVC AMR64 secp256k1_mul128 (Pieter Wuille)9b5f589d30Heuristically decide whether to use int128_struct (Pieter Wuille)63ff064d2fint128: Add test override for testing __(u)mulh on MSVC X64 (Tim Ruffing)f2b7e88768Add int128 randomized tests (Pieter Wuille)00a42b91b3Add MSan CI job (Pieter Wuille)a340d9500aci: add int128_struct tests (Jonas Nick)dceaa1f579int128: Tidy #includes of int128.h and int128_impl.h (Tim Ruffing)2914bccbc0Simulated int128 type. (Russell O'Connor)6a965b6b98Remove usage of CHECK from non-test file (Tobin C. Harding)4e54c03153ci: print env to allow reproducing the job outside of CI (Jonas Nick)49ae843592ci: mostly prevent "-v/--version: not found" irrelevant error (Jonas Nick)5c9f1a5c37ci: always cat all logs_snippets (Jonas Nick)f5039cb66cCleanup `.gitignore` file (Hennadii Stepanov)798727ae1eRevert "Add test logs to gitignore" (Hennadii Stepanov)88b00897e7readme: Fix line break (Tim Ruffing)78f5296da4readme: Sell "no runtime dependencies" (Tim Ruffing)ef48f088adreadme: Add IRC channel (Tim Ruffing)cabe085bb4configure: Remove pkgconfig macros again (reintroduced by mismerge) (Tim Ruffing)c27ae45144config: Remove basic-config.h (Tim Ruffing)da6514a04aconfig: Introduce DEBUG_CONFIG macro for debug output of config (Tim Ruffing)d0cf55e13aconfig: Set preprocessor defaults for ECMULT_* config values (Tim Ruffing)17065f48aetests: Randomize the context with probability 15/16 instead of 1/4 (Tim Ruffing)55f8bc99dcecmult_gen: Improve comments about projective blinding (Tim Ruffing)7a86955800ecmult_gen: Simplify code (no observable change) (Tim Ruffing)4cc0b1b669ecmult_gen: Skip RNG when creating blinding if no seed is available (Tim Ruffing)40a3473a9dbuild: Fix #include "..." paths to get rid of further -I arguments (Tim Ruffing)069aba8125Fix sepc256k1 -> secp256k1 typo in group.h (henopied)1827c9bf2bscratch_destroy: move VERIFY_CHECK after invalid scrach space check (siv2r)49e2acd927configure: Improve rationale for WERROR_CFLAGS (Tim Ruffing)8dc4b03341ci: Add a C++ job that compiles the public headers without -fpermissive (Tim Ruffing)51f296a46cci: Run persistent wineserver to speed up wine (Tim Ruffing)3fb3269c22ci: Add 32-bit MinGW64 build (Tim Ruffing)9efc2e5221ci: Add MSVC builds (Tim Ruffing)2be6ba0fedconfigure: Convince autotools to work with MSVC's archiver lib.exe (Tim Ruffing)bd81f4140aschnorrsig bench: Suppress a stupid warning in MSVC (Tim Ruffing)09f3d71c51configure: Add a few CFLAGS for MSVC (Tim Ruffing)3b4f3d0d46build: Reject C++ compilers in the preprocessor (Tim Ruffing)1cc0941414configure: Don't abort if the compiler does not define __STDC__ (Tim Ruffing)cca8cbbac8configure: Output message when checking for valgrind (Tim Ruffing)1a6be5745fbench: Make benchmarks compile on MSVC (Tim Ruffing)6f6cab9989abi: Don't export symbols in static Windows libraries (Cory Fields)7efc9835a9Fix the false positive of `SECP_64BIT_ASM_CHECK` (Sprite)2f984ffc45Save negations in var-time group addition (Peter Dettman) Pull request description: ACKs for top commit: jonasnick: ACK395e65e9f1Tree-SHA512: 95feaf60c5fc8c8cafde8796c50b4b9dfcae87ece3be90286278243a629bcfd91fc4ffdc707a6cc5969fbaf9cd8ea490aa34ca724462b77cd542ebcd7f013eb9
3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
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
3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
3aef6ab8 0fa84f86 249c81ea 7966aee3 fb758fe8 3fc1de5c 0aacf643 9e6d1b0e 332af315 afd7eb4a c9ebca95 cc557575 0f7657d5 907a6721 b40e2d30 c545fdc3 2bd5f3e6 0e00fc7d c734c642 26392da2 ' into temp-merge-1386
libsecp256k1-zkp
A fork of libsecp256k1 with support for advanced and experimental features such as Confidential Assets and MuSig2
Added features:
- Experimental module for ECDSA adaptor signatures.
- Experimental module for ECDSA sign-to-contract.
- Experimental module for MuSig2.
- Experimental module for Confidential Assets (Pedersen commitments, range proofs, and surjection proofs).
- Experimental module for Bulletproofs++ range proofs.
- Experimental module for address whitelisting.
Experimental features are made available for testing and review by the community. The APIs of these features should not be considered stable.
Build steps
libsecp256k1-zkp is built using autotools:
$ ./autogen.sh
$ ./configure
$ make
$ make check # run the test suite
$ sudo make install # optional
To compile optional modules (such as Schnorr signatures), you need to run ./configure with additional flags (such as --enable-module-schnorrsig). Run ./configure --help to see the full list of available flags. For experimental modules, you will also need --enable-experimental as well as a flag for each individual module, e.g. --enable-module-musig.
Usage examples
Usage examples can be found in the examples directory. To compile them you need to configure with --enable-examples.
To compile the Schnorr signature, ECDH and MuSig examples, you need to enable the corresponding module by providing a flag to the configure script, for example --enable-module-schnorrsig.
Test coverage
This library aims to have full coverage of the reachable lines and branches.
To create a test coverage report, configure with --enable-coverage (use of GCC is necessary):
$ ./configure --enable-coverage
Run the tests:
$ make check
To create a report, gcovr is recommended, as it includes branch coverage reporting:
$ gcovr --exclude 'src/bench*' --print-summary
To create a HTML report with coloured and annotated source code:
$ mkdir -p coverage
$ gcovr --exclude 'src/bench*' --html --html-details -o coverage/coverage.html
Benchmark
If configured with --enable-benchmark (which is the default), binaries for benchmarking the libsecp256k1-zkp functions will be present in the root directory after the build.
To print the benchmark result to the command line:
$ ./bench_name
To create a CSV file for the benchmark result :
$ ./bench_name | sed '2d;s/ \{1,\}//g' > bench_name.csv
Reporting a vulnerability
See SECURITY.md