Skip to content

Commit 71ab218

Browse files
committed
Squashed 'src/secp256k1/' changes from d8311688bd..92f592023f
92f592023f ci: enable silentpayments module 8ddc4574c9 tests: add BIP-352 test vectors 8315abd830 silentpayments: add benchmark for `scan_outputs` f3a9516ec8 silentpayments: add examples/silentpayments.c 7e11e7613b silentpayments: add recipient light client support 3321771b0e silentpayments: add recipient scanning routine 766567f099 silentpayments: add opaque data type `public_data` 8d0bb06ce7 silentpayments: add recipient label support 9c9bd057bc silentpayments: add sender routine 036e688fd0 silentpayments: implement output pubkey creation 1ffee123d6 silentpayments: implement shared secret creation 7a5683260c silentpayments: add sortable recipient struct a8d6f4b8e1 doc: add module description for silentpayments 1121a4d376 build: add skeleton for new silentpayments (BIP352) module 7d2591ce12 Add secp256k1_pubkey_sort da515074e3 Merge bitcoin-core/secp256k1#1058: Signed-digit multi-comb ecmult_gen algorithm 4c341f89ab Add changelog entry for SDMC a043940253 Permit COMB_BITS < 256 for exhaustive tests 39b2f2a321 Add test case for ecmult_gen recoded = {-1,0,1} 644e86de9a Reintroduce projective blinding 07810d9abb Reduce side channels from single-bit reads a0d32b597d Optimization: use Nx32 representation for recoded bits e03dcc44b5 Make secp256k1_scalar_get_bits support 32-bit reads 5005abee60 Rename scalar_get_bits -> scalar_get_bits_limb32; return uint32_t 6247f485b6 Optimization: avoid unnecessary doublings in precomputation 15d0cca2a6 Optimization: first table lookup needs no point addition 7a33db35cd Optimization: move (2^COMB_BITS-1)/2 term into ctx->scalar_offset ed2a056f3d Provide 3 configurations accessible through ./configure 5f7be9f6a5 Always generate tables for current (blocks,teeth) config fde1dfcd8d Signed-digit multi-comb ecmult_gen algorithm 486518b350 Make exhaustive tests's scalar_inverse(&x,&x) work ab45c3e089 Initial gej blinding -> final ge blinding aa00a6b892 Introduce CEIL_DIV macro and use it git-subtree-dir: src/secp256k1 git-subtree-split: 92f592023f3f4d6a66724772349fbdc4967ab50f
1 parent 53eec53 commit 71ab218

39 files changed

+8954
-9982
lines changed

.cirrus.yml

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ env:
1111
BUILD: check
1212
### secp256k1 config
1313
ECMULTWINDOW: auto
14-
ECMULTGENPRECISION: auto
14+
ECMULTGENKB: auto
1515
ASM: no
1616
WIDEMUL: auto
1717
WITH_VALGRIND: yes
@@ -22,6 +22,7 @@ env:
2222
RECOVERY: no
2323
SCHNORRSIG: no
2424
ELLSWIFT: no
25+
SILENTPAYMENTS: no
2526
### test options
2627
SECP256K1_TEST_ITERS:
2728
BENCH: yes
@@ -68,6 +69,7 @@ task:
6869
RECOVERY: yes
6970
SCHNORRSIG: yes
7071
ELLSWIFT: yes
72+
SILENTPAYMENTS: yes
7173
matrix:
7274
# Currently only gcc-snapshot, the other compilers are tested on GHA with QEMU
7375
- env: { CC: 'gcc-snapshot' }
@@ -84,6 +86,7 @@ task:
8486
RECOVERY: yes
8587
SCHNORRSIG: yes
8688
ELLSWIFT: yes
89+
SILENTPAYMENTS: yes
8790
WRAPPER_CMD: 'valgrind --error-exitcode=42'
8891
SECP256K1_TEST_ITERS: 2
8992
matrix:

.github/workflows/ci.yml

+30-19
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ env:
2222
BUILD: 'check'
2323
### secp256k1 config
2424
ECMULTWINDOW: 'auto'
25-
ECMULTGENPRECISION: 'auto'
25+
ECMULTGENKB: 'auto'
2626
ASM: 'no'
2727
WIDEMUL: 'auto'
2828
WITH_VALGRIND: 'yes'
@@ -33,6 +33,7 @@ env:
3333
RECOVERY: 'no'
3434
SCHNORRSIG: 'no'
3535
ELLSWIFT: 'no'
36+
SILENTPAYMENTS: 'no'
3637
### test options
3738
SECP256K1_TEST_ITERS:
3839
BENCH: 'yes'
@@ -71,20 +72,20 @@ jobs:
7172
matrix:
7273
configuration:
7374
- env_vars: { WIDEMUL: 'int64', RECOVERY: 'yes' }
74-
- env_vars: { WIDEMUL: 'int64', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
75+
- env_vars: { WIDEMUL: 'int64', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }
7576
- env_vars: { WIDEMUL: 'int128' }
7677
- env_vars: { WIDEMUL: 'int128_struct', ELLSWIFT: 'yes' }
7778
- env_vars: { WIDEMUL: 'int128', RECOVERY: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
78-
- env_vars: { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes' }
79+
- env_vars: { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes', SILENTPAYMENTS: 'yes' }
7980
- env_vars: { WIDEMUL: 'int128', ASM: 'x86_64', ELLSWIFT: 'yes' }
8081
- env_vars: { RECOVERY: 'yes', SCHNORRSIG: 'yes' }
81-
- env_vars: { CTIMETESTS: 'no', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', CPPFLAGS: '-DVERIFY' }
82+
- env_vars: { CTIMETESTS: 'no', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', SILENTPAYMENTS: 'yes', CPPFLAGS: '-DVERIFY' }
8283
- env_vars: { BUILD: 'distcheck', WITH_VALGRIND: 'no', CTIMETESTS: 'no', BENCH: 'no' }
8384
- env_vars: { CPPFLAGS: '-DDETERMINISTIC' }
8485
- env_vars: { CFLAGS: '-O0', CTIMETESTS: 'no' }
85-
- env_vars: { CFLAGS: '-O1', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
86-
- env_vars: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 }
87-
- env_vars: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 }
86+
- env_vars: { CFLAGS: '-O1', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }
87+
- env_vars: { ECMULTGENKB: 2, ECMULTWINDOW: 2 }
88+
- env_vars: { ECMULTGENKB: 86, ECMULTWINDOW: 4 }
8889
cc:
8990
- 'gcc'
9091
- 'clang'
@@ -141,6 +142,7 @@ jobs:
141142
RECOVERY: 'yes'
142143
SCHNORRSIG: 'yes'
143144
ELLSWIFT: 'yes'
145+
SILENTPAYMENTS: 'yes'
144146
CC: ${{ matrix.cc }}
145147

146148
steps:
@@ -185,6 +187,7 @@ jobs:
185187
RECOVERY: 'yes'
186188
SCHNORRSIG: 'yes'
187189
ELLSWIFT: 'yes'
190+
SILENTPAYMENTS: 'yes'
188191
CTIMETESTS: 'no'
189192

190193
steps:
@@ -236,6 +239,7 @@ jobs:
236239
RECOVERY: 'yes'
237240
SCHNORRSIG: 'yes'
238241
ELLSWIFT: 'yes'
242+
SILENTPAYMENTS: 'yes'
239243
CTIMETESTS: 'no'
240244

241245
steps:
@@ -281,6 +285,7 @@ jobs:
281285
RECOVERY: 'yes'
282286
SCHNORRSIG: 'yes'
283287
ELLSWIFT: 'yes'
288+
SILENTPAYMENTS: 'yes'
284289
CTIMETESTS: 'no'
285290

286291
strategy:
@@ -336,6 +341,7 @@ jobs:
336341
RECOVERY: 'yes'
337342
SCHNORRSIG: 'yes'
338343
ELLSWIFT: 'yes'
344+
SILENTPAYMENTS: 'yes'
339345
CTIMETESTS: 'no'
340346

341347
steps:
@@ -377,8 +383,8 @@ jobs:
377383
configuration:
378384
- env_vars: { CC: 'clang', ASM: 'auto' }
379385
- env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' }
380-
- env_vars: { CC: 'clang', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 }
381-
- env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 }
386+
- env_vars: { CC: 'clang', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 }
387+
- env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 }
382388

383389
env:
384390
# The `--error-exitcode` is required to make the test fail if valgrind found errors,
@@ -388,6 +394,7 @@ jobs:
388394
RECOVERY: 'yes'
389395
SCHNORRSIG: 'yes'
390396
ELLSWIFT: 'yes'
397+
SILENTPAYMENTS: 'yes'
391398
CTIMETESTS: 'no'
392399
SECP256K1_TEST_ITERS: 2
393400

@@ -431,14 +438,15 @@ jobs:
431438
configuration:
432439
- env_vars: { CC: 'clang', ASM: 'auto' }
433440
- env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' }
434-
- env_vars: { CC: 'clang', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 }
435-
- env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 }
441+
- env_vars: { CC: 'clang', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 }
442+
- env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 }
436443

437444
env:
438445
ECDH: 'yes'
439446
RECOVERY: 'yes'
440447
SCHNORRSIG: 'yes'
441448
ELLSWIFT: 'yes'
449+
SILENTPAYMENTS: 'yes'
442450
CTIMETESTS: 'no'
443451
CFLAGS: '-fsanitize=undefined,address -g'
444452
UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1'
@@ -487,7 +495,7 @@ jobs:
487495
- env_vars:
488496
CFLAGS: '-fsanitize=memory -fsanitize-recover=memory -g'
489497
- env_vars:
490-
ECMULTGENPRECISION: 2
498+
ECMULTGENKB: 2
491499
ECMULTWINDOW: 2
492500
CFLAGS: '-fsanitize=memory -fsanitize-recover=memory -g -O3'
493501

@@ -496,6 +504,7 @@ jobs:
496504
RECOVERY: 'yes'
497505
SCHNORRSIG: 'yes'
498506
ELLSWIFT: 'yes'
507+
SILENTPAYMENTS: 'yes'
499508
CTIMETESTS: 'yes'
500509
CC: 'clang'
501510
SECP256K1_TEST_ITERS: 32
@@ -543,6 +552,7 @@ jobs:
543552
RECOVERY: 'yes'
544553
SCHNORRSIG: 'yes'
545554
ELLSWIFT: 'yes'
555+
SILENTPAYMENTS: 'yes'
546556
CTIMETESTS: 'no'
547557

548558
strategy:
@@ -599,14 +609,14 @@ jobs:
599609
fail-fast: false
600610
matrix:
601611
env_vars:
602-
- { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
603-
- { WIDEMUL: 'int128_struct', ECMULTGENPRECISION: 2, ECMULTWINDOW: 4 }
604-
- { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
612+
- { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }
613+
- { WIDEMUL: 'int128_struct', ECMULTGENKB: 2, ECMULTWINDOW: 4 }
614+
- { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }
605615
- { WIDEMUL: 'int128', RECOVERY: 'yes' }
606-
- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
607-
- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' }
608-
- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }
609-
- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }
616+
- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }
617+
- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes', CC: 'gcc' }
618+
- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }
619+
- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes', CC: 'gcc', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }
610620
- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CPPFLAGS: '-DVERIFY', CTIMETESTS: 'no' }
611621
- BUILD: 'distcheck'
612622

@@ -718,6 +728,7 @@ jobs:
718728
RECOVERY: 'yes'
719729
SCHNORRSIG: 'yes'
720730
ELLSWIFT: 'yes'
731+
SILENTPAYMENTS: 'yes'
721732

722733
steps:
723734
- name: Checkout

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ ctime_tests
1010
ecdh_example
1111
ecdsa_example
1212
schnorr_example
13+
silentpayments_example
1314
*.exe
1415
*.so
1516
*.a

CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
#### Added
11+
- New function `secp256k1_ec_pubkey_sort` that sorts public keys using lexicographic (of compressed serialization) order.
12+
13+
#### Changed
14+
- The implementation of the point multiplication algorithm used for signing and public key generation was changed, resulting in improved performance for those operations.
15+
- The related configure option `--ecmult-gen-precision` was replaced with `--ecmult-gen-kb` (`ECMULT_GEN_KB` for CMake).
16+
- This changes the supported precomputed table sizes for these operations. The new supported sizes are 2 KiB, 22 KiB, or 86 KiB (while the old supported sizes were 32 KiB, 64 KiB, or 512 KiB).
17+
1018
## [0.4.1] - 2023-12-21
1119

1220
#### Changed

CMakeLists.txt

+22-7
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,14 @@ option(SECP256K1_ENABLE_MODULE_RECOVERY "Enable ECDSA pubkey recovery module." O
6060
option(SECP256K1_ENABLE_MODULE_EXTRAKEYS "Enable extrakeys module." ON)
6161
option(SECP256K1_ENABLE_MODULE_SCHNORRSIG "Enable schnorrsig module." ON)
6262
option(SECP256K1_ENABLE_MODULE_ELLSWIFT "Enable ElligatorSwift module." ON)
63+
option(SECP256K1_ENABLE_MODULE_SILENTPAYMENTS "Enable Silent Payments module." OFF)
6364

6465
# Processing must be done in a topological sorting of the dependency graph
6566
# (dependent module first).
67+
if(SECP256K1_ENABLE_MODULE_SILENTPAYMENTS)
68+
add_compile_definitions(ENABLE_MODULE_SILENTPAYMENTS=1)
69+
endif()
70+
6671
if(SECP256K1_ENABLE_MODULE_ELLSWIFT)
6772
add_compile_definitions(ENABLE_MODULE_ELLSWIFT=1)
6873
endif()
@@ -101,13 +106,22 @@ if(SECP256K1_ECMULT_WINDOW_SIZE STREQUAL "AUTO")
101106
endif()
102107
add_compile_definitions(ECMULT_WINDOW_SIZE=${SECP256K1_ECMULT_WINDOW_SIZE})
103108

104-
set(SECP256K1_ECMULT_GEN_PREC_BITS "AUTO" CACHE STRING "Precision bits to tune the precomputed table size for signing, specified as integer 2, 4 or 8. \"AUTO\" is a reasonable setting for desktop machines (currently 4). [default=AUTO]")
105-
set_property(CACHE SECP256K1_ECMULT_GEN_PREC_BITS PROPERTY STRINGS "AUTO" 2 4 8)
106-
check_string_option_value(SECP256K1_ECMULT_GEN_PREC_BITS)
107-
if(SECP256K1_ECMULT_GEN_PREC_BITS STREQUAL "AUTO")
108-
set(SECP256K1_ECMULT_GEN_PREC_BITS 4)
109+
set(SECP256K1_ECMULT_GEN_KB "AUTO" CACHE STRING "The size of the precomputed table for signing in multiples of 1024 bytes (on typical platforms). Larger values result in possibly better signing or key generation performance at the cost of a larger table. Valid choices are 2, 22, 86. \"AUTO\" is a reasonable setting for desktop machines (currently 22). [default=AUTO]")
110+
set_property(CACHE SECP256K1_ECMULT_GEN_KB PROPERTY STRINGS "AUTO" 2 22 86)
111+
check_string_option_value(SECP256K1_ECMULT_GEN_KB)
112+
if(SECP256K1_ECMULT_GEN_KB STREQUAL "AUTO")
113+
set(SECP256K1_ECMULT_GEN_KB 22)
114+
endif()
115+
if(SECP256K1_ECMULT_GEN_KB EQUAL 2)
116+
add_compile_definitions(COMB_BLOCKS=2)
117+
add_compile_definitions(COMB_TEETH=5)
118+
elseif(SECP256K1_ECMULT_GEN_KB EQUAL 22)
119+
add_compile_definitions(COMB_BLOCKS=11)
120+
add_compile_definitions(COMB_TEETH=6)
121+
elseif(SECP256K1_ECMULT_GEN_KB EQUAL 86)
122+
add_compile_definitions(COMB_BLOCKS=43)
123+
add_compile_definitions(COMB_TEETH=6)
109124
endif()
110-
add_compile_definitions(ECMULT_GEN_PREC_BITS=${SECP256K1_ECMULT_GEN_PREC_BITS})
111125

112126
set(SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY "OFF" CACHE STRING "Test-only override of the (autodetected by the C code) \"widemul\" setting. Legal values are: \"OFF\", \"int128_struct\", \"int128\" or \"int64\". [default=OFF]")
113127
set_property(CACHE SECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY PROPERTY STRINGS "OFF" "int128_struct" "int128" "int64")
@@ -292,9 +306,10 @@ message(" ECDSA pubkey recovery ............... ${SECP256K1_ENABLE_MODULE_RECOV
292306
message(" extrakeys ........................... ${SECP256K1_ENABLE_MODULE_EXTRAKEYS}")
293307
message(" schnorrsig .......................... ${SECP256K1_ENABLE_MODULE_SCHNORRSIG}")
294308
message(" ElligatorSwift ...................... ${SECP256K1_ENABLE_MODULE_ELLSWIFT}")
309+
message(" Silent Payments ..................... ${SECP256K1_ENABLE_MODULE_SILENTPAYMENTS}")
295310
message("Parameters:")
296311
message(" ecmult window size .................. ${SECP256K1_ECMULT_WINDOW_SIZE}")
297-
message(" ecmult gen precision bits ........... ${SECP256K1_ECMULT_GEN_PREC_BITS}")
312+
message(" ecmult gen table size ............... ${SECP256K1_ECMULT_GEN_KB} KiB")
298313
message("Optional features:")
299314
message(" assembly ............................ ${SECP256K1_ASM}")
300315
message(" external callbacks .................. ${SECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS}")

Makefile.am

+17
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ noinst_HEADERS += src/field.h
6464
noinst_HEADERS += src/field_impl.h
6565
noinst_HEADERS += src/bench.h
6666
noinst_HEADERS += src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.h
67+
noinst_HEADERS += src/hsort.h
68+
noinst_HEADERS += src/hsort_impl.h
6769
noinst_HEADERS += contrib/lax_der_parsing.h
6870
noinst_HEADERS += contrib/lax_der_parsing.c
6971
noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
@@ -182,6 +184,17 @@ schnorr_example_LDFLAGS += -lbcrypt
182184
endif
183185
TESTS += schnorr_example
184186
endif
187+
if ENABLE_MODULE_SILENTPAYMENTS
188+
noinst_PROGRAMS += silentpayments_example
189+
silentpayments_example_SOURCES = examples/silentpayments.c
190+
silentpayments_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
191+
silentpayments_example_LDADD = libsecp256k1.la
192+
silentpayments_example_LDFLAGS = -static
193+
if BUILD_WINDOWS
194+
silentpayments_example_LDFLAGS += -lbcrypt
195+
endif
196+
TESTS += silentpayments_example
197+
endif
185198
endif
186199

187200
### Precomputed tables
@@ -271,3 +284,7 @@ endif
271284
if ENABLE_MODULE_ELLSWIFT
272285
include src/modules/ellswift/Makefile.am.include
273286
endif
287+
288+
if ENABLE_MODULE_SILENTPAYMENTS
289+
include src/modules/silentpayments/Makefile.am.include
290+
endif

ci/ci.sh

+4-3
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ print_environment() {
1212
# There are many ways to print variable names and their content. This one
1313
# does not rely on bash.
1414
for var in WERROR_CFLAGS MAKEFLAGS BUILD \
15-
ECMULTWINDOW ECMULTGENPRECISION ASM WIDEMUL WITH_VALGRIND EXTRAFLAGS \
16-
EXPERIMENTAL ECDH RECOVERY SCHNORRSIG ELLSWIFT \
15+
ECMULTWINDOW ECMULTGENKB ASM WIDEMUL WITH_VALGRIND EXTRAFLAGS \
16+
EXPERIMENTAL ECDH RECOVERY SCHNORRSIG ELLSWIFT SILENTPAYMENTS \
1717
SECP256K1_TEST_ITERS BENCH SECP256K1_BENCH_ITERS CTIMETESTS\
1818
EXAMPLES \
1919
HOST WRAPPER_CMD \
@@ -74,9 +74,10 @@ esac
7474
--enable-experimental="$EXPERIMENTAL" \
7575
--with-test-override-wide-multiply="$WIDEMUL" --with-asm="$ASM" \
7676
--with-ecmult-window="$ECMULTWINDOW" \
77-
--with-ecmult-gen-precision="$ECMULTGENPRECISION" \
77+
--with-ecmult-gen-kb="$ECMULTGENKB" \
7878
--enable-module-ecdh="$ECDH" --enable-module-recovery="$RECOVERY" \
7979
--enable-module-ellswift="$ELLSWIFT" \
80+
--enable-module-silentpayments="$SILENTPAYMENTS" \
8081
--enable-module-schnorrsig="$SCHNORRSIG" \
8182
--enable-examples="$EXAMPLES" \
8283
--enable-ctime-tests="$CTIMETESTS" \

0 commit comments

Comments
 (0)