Update secp256k1 subtree to latest upstream #15703

pull sipa wants to merge 2 commits into bitcoin:master from sipa:201903_secp256k1 changing 44 files +2415 −416
  1. sipa commented at 2:32 AM on March 30, 2019: member

    It's been 1.5 years since our secp256k1 subtree was updated, while the upstream project has undergone a number of incremental improvements (performance, tests, build system fixes), plus gained the groundwork for batch verification.

    As we're early in the 0.19 window, this seems like a good time to get these merged.

  2. fanquake added the label Upstream on Mar 30, 2019
  3. fanquake added this to the milestone 0.19.0 on Mar 30, 2019
  4. sipa force-pushed on Mar 30, 2019
  5. sipa force-pushed on Mar 30, 2019
  6. sipa force-pushed on Mar 30, 2019
  7. fanquake commented at 2:03 AM on March 31, 2019: member

    This is waiting for https://github.com/bitcoin-core/secp256k1/pull/607 to be merged upstream.

  8. gmaxwell commented at 6:39 PM on March 31, 2019: contributor

    It has been, though more review of the changes overall would be welcome.

  9. Squashed 'src/secp256k1/' changes from 0b70241850..b19c000063
    b19c000063 Merge #607: Use size_t shifts when computing a size_t
    4d01bc2d9c Merge #606: travis: Remove unused sudo:false
    e6d01e9347 Use size_t shifts when computing a size_t
    7667532bd7 travis: Remove unused sudo:false
    ee99f12f3d Merge #599: Switch x86_64 asm to use "i" instead of "n" for immediate values.
    d58bc93f2c Switch x86_64 asm to use "i" instead of "n" for immediate values.
    05362ee042 Merge #597: Add $(COMMON_LIB) to exhaustive tests to fix ARM asm build
    83483869ac Add $(COMMON_LIB) to exhaustive tests to fix ARM asm build
    aa15154a48 Merge #568: Fix integer overflow in ecmult_multi_var when n is large
    2277af5ff0 Fix integer overflow in ecmult_multi_var when n is large
    85d0e1bcce Merge #591: Make bench_internal obey secp256k1_fe_sqrt's contract wrt aliasing.
    14196379ec Merge #580: Add trivial ecmult_multi algorithm which does not require a scratch space
    a697d82da9 Add trivial ecmult_multi to the benchmark tool
    bade617417 Add trivial ecmult_multi algorithm. It is selected when no scratch space is given and just multiplies and adds the points.
    5545e13dea Merge #584: configure: Use CFLAGS_FOR_BUILD when checking native compiler
    20c5869df2 Merge #516: improvements to random seed in src/tests.c
    b76e45d5d6 Make bench_internal obey secp256k1_fe_sqrt's contract wrt aliasing.
    870a977644 Merge #562: Make use of TAG_PUBKEY constants in secp256k1_eckey_pubkey_parse
    be40c4d0b5 Fixup for C90 mixed declarations.
    c71dd2c08f Merge #509: Fix algorithm selection in bench_ecmult
    6492bf88cc Merge #518: Summarize build options after running configure
    0e9ada1941 Merge #567: Correct order of libs returned on pkg-config --libs --static libsecp2…
    e96901a4b9 Merge #587: Make randomization of a non-signing context a noop
    58df8d03ad Merge #511: Portability fix for the configure scripts generated
    2ebdad772a Merge #552: Make constants static:
    1c131affd3 Merge #551: secp256k1_fe_sqrt: Verify that the arguments don't alias.
    ba698f883b Merge #539: Assorted minor corrections
    949e85b009 Merge #550: Optimize secp256k1_fe_normalize_weak calls.
    a34bcaadf1 Actually pass CFLAGS_FOR_BUILD and LDFLAGS_FOR_BUILD to linker
    2d5f4cebdc configure: Use CFLAGS_FOR_BUILD when checking native compiler
    b408c6a8b2 Merge #579: Use __GNUC_PREREQ for detecting __builtin_expect
    6198375218 Make randomization of a non-signing context a noop
    c663397f46 Use __GNUC_PREREQ for detecting __builtin_expect
    e34ceb333b Merge #557: Eliminate scratch memory used when generating contexts
    b3bf5f99a3 ecmult_impl: expand comment to explain how effective affine interacts with everything
    efa783f8f0 Store z-ratios in the 'x' coord they'll recover
    ffd3b346fe add `secp256k1_ge_set_all_gej_var` test which deals with many infinite points
    84740acd2a ecmult_impl: save one fe_inv_var
    47045270fa ecmult_impl: eliminate scratch memory used when generating context
    7f7a2ed3a8 ecmult_gen_impl: eliminate scratch memory used when generating context
    314a61d724 Merge #553: add static context object which has no capabilities
    89a20a8945 Correct order of libs returned on pkg-config --libs --static libsecp256k1 call.
    1086fda4c1 Merge #354: [ECDH API change] Support custom hash function
    d3cb1f95eb Make use of TAG_PUBKEY constants in secp256k1_eckey_pubkey_parse
    40fde611bd prevent attempts to modify `secp256k1_context_no_precomp`
    ed7c08417a add static context object which has no capabilities
    496c5b43b8 Make constants static: static const secp256k1_ge secp256k1_ge_const_g; static const int CURVE_B;
    bf8b86cc07 secp256k1_fe_sqrt: Verify that the arguments don't alias.
    9bd89c836b Optimize secp256k1_fe_normalize_weak calls. Move secp256k1_fe_normalize_weak calls out of ECMULT_TABLE_GET_GE and ECMULT_TABLE_GET_GE_STORAGE and into secp256k1_ge_globalz_set_table_gej instead.
    52ab96fedb clean dependendies in field_*_impl.h
    deff5edd42 Correct math typos in field_*.h
    4efb3f8dd1 Add check that restrict pointers don't alias with all parameters.
    1e6f1f5ad5 Merge #529: fix tests.c in the count == 0 case
    c8fbc3c397 [ECDH API change] Allow pass arbitrary data to hash function
    b00be65056 [ECDH API change] Support custom hash function
    95e99f196f fix tests.c in the count == 0 case
    452d8e4d2a Merge #523: scratch: add stack frame support
    6fe50439ae scratch: add stack frame support
    9bc2e26502 Merge #522: parameterize ecmult_const over input size
    7c1b91ba4b parameterize ecmult_const over input size
    dbc3ddd5e2 Merge #513: Increase sparsity of pippenger fixed window naf representation
    3965027c81 Summarize build options in configure script
    0f0517369c Fix algorithm selection in bench_ecmult
    fb9271dcf0 Merge #510: add a couple missing `const`s to ecmult_pippenger_wnaf
    cd5f6028e5 Merge #515: Fix typo
    09146ae854 Merge #512: secp256k1_ec_privkey_negate - fix documentation
    ec0a7b3ae3 Don't touch leading zeros in wnaf_fixed.
    9e36d1bfe2 Fix bug in wnaf_fixed where the wnaf array is not completely zeroed when given a 0 scalar.
    96f68a0afc Don't invert scalar in wnaf_fixed when it is even because a caller might intentionally give a scalar with many leading zeros.
    8b3841c91d fix bug in fread() failure check
    cddef0c0be tests: add warning message when /dev/urandom fails
    9b7c47a21e Fix typo
    6dbb007869 Increase sparsity of pippenger fixed window naf representation
    1646ace4d5 secp256k1_ec_privkey_negate - fix documentation
    270f6c80db Portability fix for the configure scripts generated
    9b3ff0309d add a couple missing `const`s to ecmult_pippenger_wnaf
    cd329dbc3e Merge #460: [build] Update ax_jni_include_dir.m4 macro
    7f9c1a1565 Merge #498: tests: Avoid calling fclose(...) with an invalid argument
    f99aa8d4d3 Merge #499: tests: Make sure we get the requested number of bytes from /dev/urandom
    b549d3d5f7 Merge #472: [build] Set --enable-jni to no by default instead of auto.
    d333521516 Merge #494: Support OpenSSL versions >= 1.1 for ENABLE_OPENSSL_TESTS
    2ef8ea5d21 Merge #495: Add bench_ecmult to .gitignore
    82a96e4587 tests: Make sure we get the requested number of bytes from /dev/urandom
    5aae5b5bb2 Avoid calling fclose(...) with an invalid argument
    cb32940df3 Add bench_ecmult to .gitignore
    31abd3ab8d Support OpenSSL versions >= 1.1 for ENABLE_OPENSSL_TESTS
    c95f6f1360 Merge #487: fix tests typo, s/changed/unchanged
    fb46c83881 Merge #463: Reduce usage of hardcoded size constants
    02f5001dfc Merge #490: Disambiguate bench functions and types
    1f46d6089e Disambiguate bench functions and types
    f54c6c5083 Merge #480: Enable benchmark building by default
    c77fc08597 Merge #486: Add pippenger_wnaf for multi-multiplication
    d2f9c6b5dc Use more precise pippenger bucket windows
    4c950bbeaf Save some additions per window in _pippenger_wnaf
    a58f543f5a Add flags for choosing algorithm in ecmult_multi benchmark
    36b22c9337 Use scratch space dependent batching in ecmult_multi
    355a38f113 Add pippenger_wnaf ecmult_multi
    bc65aa794e Add bench_ecmult
    dba5471b69 Add ecmult_multi tests
    8c1c831bdb Generalize Strauss to support multiple points
    548de42ecf add resizeable scratch space API
    0e96cdc6b6 fix typo, s/changed/unchanged
    c7680e570f Reduce usage of hardcoded size constants
    6ad5cdb42a Merge #479: Get rid of reserved _t in type names
    7a78f60598 Print whether we're building benchmarks
    4afec9f1ae Build benchmarks by default
    d1dc9dfc0a Get rid of reserved _t in type names
    57752d28b3 [build] Set --enable-jni to no by default instead of auto.
    e7daa9b3c2 [build] Tweak JNI macro to warn instead of error for JNI not found.
    5b22977922 [build] Update ax_jni_include_dir.m4 macro to deal with recent versions of macOS
    
    git-subtree-dir: src/secp256k1
    git-subtree-split: b19c000063be11018b4d1a6b0a85871ab9d0bdcf
    54245985fb
  10. Update the secp256k1 subtree to the latest upstream version 99df276dae
  11. sipa force-pushed on Mar 31, 2019
  12. sipa commented at 6:45 PM on March 31, 2019: member

    Updated to the latest upstream after merging bitcoin-core/secp256k1#607.

  13. MarcoFalke added the label Needs gitian build on Mar 31, 2019
  14. fanquake commented at 2:32 AM on April 1, 2019: member

    utACK 99df276 the subtree merge, still need to test the actual changes.

    I've written some notes on verifying subtree merges here.

    ./contrib/devtools/github-merge.py 15703
    [pull/15703/local-merge 12f00cb7a] Merge [#15703](/bitcoin-bitcoin/15703/): Update secp256k1 subtree to latest upstream
     Date: Mon Apr 1 09:09:24 2019 +0800
    [#15703](/bitcoin-bitcoin/15703/) Update secp256k1 subtree to latest upstream into master
    * 99df276da Update the secp256k1 subtree to the latest upstream version (Pieter Wuille) (pull/15703/head)
    * 54245985f Squashed 'src/secp256k1/' changes from 0b70241850..b19c000063 (Pieter Wuille)
    
    Dropping you on a shell so you can try building/testing the merged source.
    Run 'git diff HEAD~' to show the changes being merged.
    Type 'exit' when done.
    
    git fetch https://github.com/bitcoin-core/secp256k1
    warning: no common commits
    remote: Enumerating objects: 10, done.
    remote: Counting objects: 100% (10/10), done.
    remote: Compressing objects: 100% (9/9), done.
    remote: Total 4513 (delta 2), reused 6 (delta 1), pack-reused 4503
    Receiving objects: 100% (4513/4513), 1.84 MiB | 335.00 KiB/s, done.
    Resolving deltas: 100% (3157/3157), done.
    From https://github.com/bitcoin-core/secp256k1
     * branch                HEAD       -> FETCH_HEAD
    
    ./test/lint/git-subtree-check.sh src/secp256k1
    src/secp256k1 in HEAD currently refers to tree e862ca412860538b4969e6f77c8c005695e5ed28
    src/secp256k1 in HEAD was last updated in commit 54245985fb3c89d72e285c4db39d38ed2f5fb0de (tree e862ca412860538b4969e6f77c8c005695e5ed28)
    src/secp256k1 in HEAD was last updated to upstream commit b19c000063be11018b4d1a6b0a85871ab9d0bdcf (tree e862ca412860538b4969e6f77c8c005695e5ed28)
    GOOD
    
  15. DrahtBot commented at 4:10 PM on April 1, 2019: member

    <!--a722867cd34abeea1fadc8d60700f111-->

    Gitian builds for commit 79c345a0114c9a83fd40e01150519373c017b130 (master):

    Gitian builds for commit 9fe97520102fe76e9fbb66dc0acf504717d34175 (master and this pull):

  16. DrahtBot removed the label Needs gitian build on Apr 1, 2019
  17. laanwj commented at 12:07 PM on May 29, 2019: member

    utACK 99df276da

  18. laanwj merged this on May 29, 2019
  19. laanwj closed this on May 29, 2019

  20. laanwj referenced this in commit 1dbbfea9cd on May 29, 2019
  21. sidhujag referenced this in commit 0e691e92e5 on May 30, 2019
  22. fanquake referenced this in commit bf72b8a555 on Aug 9, 2019
  23. laanwj referenced this in commit e47e36cb49 on Aug 9, 2019
  24. sidhujag referenced this in commit 2ecad499e8 on Aug 10, 2019
  25. fanquake deleted a comment on Aug 10, 2019
  26. fanquake locked this on Aug 10, 2019

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-17 00:14 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me