b673a43090musig: new upstream def of VERIFY_CHECK (empty in non-VERIFY) (Jonas Nick)cd173688fbmusig: replace point_{save,load} with ge_{to,from}_bytes (Jonas Nick)33db8edb27group: add ge_to_bytes and ge_from_bytes (Jonas Nick)de54a1eff7musig2: clean up ctx doc in include file (Jonas Nick)4f65698865extrakeys: Remove redundant secp256k1_pubkey_cmp (Tim Ruffing)c29f28e638include: make docs more consistent (Tim Ruffing)42f8c51402cmake: Add `SECP256K1_LATE_CFLAGS` configure option (Hennadii Stepanov)e6822678eabuild: Error if required module explicitly off (Tim Ruffing)89ec583ccfbuild: Clean up handling of module dependencies (Tim Ruffing)b37fdb28cecheck-abi: Minor UI improvements (Tim Ruffing)ad5f589a94check-abi: Default to HEAD for new version (Tim Ruffing)9fb7e2f156release process: Style and formatting nits (Tim Ruffing)e7053d065brelease process: Add email step (Tim Ruffing)429d21dc79release process: Run sanity checks on release PR (Tim Ruffing)ba5d72d626assumptions: Use new STATIC_ASSERT macro (Tim Ruffing)e53c2d9ffcRequire that sizeof(secp256k1_ge_storage) == 64 (Tim Ruffing)d0ba2abbffutil: Add STATIC_ASSERT macro (Tim Ruffing)da7bc1b803include: in doc, remove article in front of "pointer" (Jonas Nick)aa3dd5280binclude: make doc about ctx more consistent (Jonas Nick)e3f690015ainclude: remove obvious "cannot be NULL" doc (Jonas Nick)3dbfb48946tests: restore scalar_mul test (Jonas Nick)d77170a88dFix typos (shuoer86)4b2e06f460release cleanup: bump version after 0.4.1 (Jonas Nick)672053d801release: prepare for 0.4.1 (Jonas Nick)74a4d974d5doc: Add ABI checking with `check-abi.sh` to the Release Process (Hennadii Stepanov)e7f830e32cAdd `tools/check-abi.sh` (Hennadii Stepanov)3928b7c383doc: improve secp256k1_fe_set_b32_mod doc (Coding Enthusiast)e02f313b1fAdd comment on length checks when parsing ECDSA sigs (Tim Ruffing)0e5ea62207CONTRIBUTING: add some coding and style conventions (Jonas Nick)1a432cb982README: update first sentence (Jonas Nick)0922a047fbdocs: move coverage report instructions to CONTRIBUTING (Jonas Nick)76880e4015Add CONTRIBUTING.md including scope and guidelines for new code (Jonas Nick)d2e36a2b81changelog: add entry for "field: Remove x86_64 asm" (Jonas Nick)04af0ba162Replace ge_equals_ge[,j] calls with group.h equality calls (Pieter Wuille)60525f6c14Add unit tests for group.h equality functions (Pieter Wuille)a47cd97d51Add group.h ge/gej equality functions (Pieter Wuille)f07cead0cabuild: Don't call assembly an optimization (Tim Ruffing)2f0762fa8ffield: Remove x86_64 asm (Tim Ruffing)bb4672342eremove VERIFY_SETUP define (Sebastian Falbesoner)a3a3e11acdremove unneeded VERIFY_SETUP uses in ECMULT_CONST_TABLE_GET_GE macro (Sebastian Falbesoner)a0fb68a2e7introduce and use SECP256K1_SCALAR_VERIFY macro (Sebastian Falbesoner)cf25c86d05introduce and use SECP256K1_{FE,GE,GEJ}_VERIFY macros (Sebastian Falbesoner)5d89bc031bremove superfluous `#ifdef VERIFY`/`#endif` preprocessor conditions (Sebastian Falbesoner)c2688f8de9redefine VERIFY_CHECK to empty in production (non-VERIFY) mode (Sebastian Falbesoner)dcdda31f2cTighten secp256k1_fe_mul_inner's VERIFY_BITS checks (Russell O'Connor)8e2a5fe908correct assertion for secp256k1_fe_mul_inner (roconnor-blockstream)1ddd76af0abench: add --help option to bench_internal (Sebastian Falbesoner)33dc7e4d3easm: add .note.GNU-stack section for non-exec stack (fanquake)10271356c8Return temporaries to being unsigned in secp256k1_fe_sqr_inner (roconnor-blockstream)8185e72d29ci: Ignore internal errors in snapshot compilers (Hennadii Stepanov)355bbdf38aAdd changelog entry for signed-digit ecmult_const algorithm (Pieter Wuille)21f49d9becRemove unused secp256k1_scalar_shr_int (Pieter Wuille)115fdc7232Remove unused secp256k1_wnaf_const (Pieter Wuille)aa9f3a3c00ecmult_const: add/improve tests (Jonas Nick)4d16e90111Signed-digit based ecmult_const algorithm (Pieter Wuille)ba523be067make SECP256K1_SCALAR_CONST reduce modulo exhaustive group order (Pieter Wuille)2140da9cd5Add secp256k1_scalar_half for halving scalars (+ tests/benchmarks). (Pieter Wuille)5dab0baa80README: remove CI badge (Jonas Nick)fa4d6c76b6ci/cirrus: Add native ARM64 persistent workers (MarcoFalke)2262d0eaabci/cirrus: Bring back skeleton .cirrus.yml without jobs (Tim Ruffing) Pull request description: ACKs for top commit: jonasnick: ACKb673a43090Tree-SHA512: fe4f4d1db71518cad80724c21915a6235ffc21aadc06226f6dc29237e786f546189165ffdbe64b90b094ada4c36a031caa712c1f21bf280d33ba221fda2e0019
1f1bb78b 40f50d0f c891c5c2 ea47c82e e7210393 c1b49664 5814d848 07687e81 10e6d29b d3e29db8 e2c9888e 4197d667 5e9a4d7a 77af1da9 1a81df82 1ad5185c efe85c70 79e09451 d373bf6d 74b7c3b5 a9db9f2d 44378867 3bf4d68f e4af41c6 ' into temp-merge-1249
1f1bb78b 40f50d0f c891c5c2 ea47c82e e7210393 c1b49664 5814d848 07687e81 10e6d29b d3e29db8 e2c9888e 4197d667 5e9a4d7a 77af1da9 1a81df82 1ad5185c efe85c70 79e09451 d373bf6d 74b7c3b5 a9db9f2d 44378867 3bf4d68f e4af41c6 ' into temp-merge-1249
1f1bb78b 40f50d0f c891c5c2 ea47c82e e7210393 c1b49664 5814d848 07687e81 10e6d29b d3e29db8 e2c9888e 4197d667 5e9a4d7a 77af1da9 1a81df82 1ad5185c efe85c70 79e09451 d373bf6d 74b7c3b5 a9db9f2d 44378867 3bf4d68f e4af41c6 ' into temp-merge-1249
374e2b54 96294c00 8d2960c8 ce765a5b b2f6712d eedd7810 b327abfc 5d8fa825 3d05c86d bcffeb14 de657c20 060e32cb 0ba2b945 48b1d939 6b9507ad 5373693e 2e6cf9ba 6ee14550 26a98992 4d7fe609 ea26b71c 65c79fe2 727bec5b 0b4640ae 199d27ce cbf3053f 49be5be9 b10ddd2b 4fd00f4b ba9cb6f3 ee7aaf21 ' into temp-merge-1395
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
1f1bb78b 40f50d0f c891c5c2 ea47c82e e7210393 c1b49664 5814d848 07687e81 10e6d29b d3e29db8 e2c9888e 4197d667 5e9a4d7a 77af1da9 1a81df82 1ad5185c efe85c70 79e09451 d373bf6d 74b7c3b5 a9db9f2d 44378867 3bf4d68f e4af41c6 ' into temp-merge-1249
1f1bb78b 40f50d0f c891c5c2 ea47c82e e7210393 c1b49664 5814d848 07687e81 10e6d29b d3e29db8 e2c9888e 4197d667 5e9a4d7a 77af1da9 1a81df82 1ad5185c efe85c70 79e09451 d373bf6d 74b7c3b5 a9db9f2d 44378867 3bf4d68f e4af41c6 ' into temp-merge-1249
1f1bb78b 40f50d0f c891c5c2 ea47c82e e7210393 c1b49664 5814d848 07687e81 10e6d29b d3e29db8 e2c9888e 4197d667 5e9a4d7a 77af1da9 1a81df82 1ad5185c efe85c70 79e09451 d373bf6d 74b7c3b5 a9db9f2d 44378867 3bf4d68f e4af41c6 ' into temp-merge-1249
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
Building with 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.
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
Contributing to libsecp256k1
See CONTRIBUTING.md