2014-11-07 01:55:27 +13:00
|
|
|
ACLOCAL_AMFLAGS = -I build-aux/m4
|
2014-11-06 22:35:41 +13:00
|
|
|
|
2021-05-13 17:06:16 +02:00
|
|
|
# AM_CFLAGS will be automatically prepended to CFLAGS by Automake when compiling some foo
|
|
|
|
# which does not have an explicit foo_CFLAGS variable set.
|
|
|
|
AM_CFLAGS = $(SECP_CFLAGS)
|
|
|
|
|
2014-01-17 22:52:33 -05:00
|
|
|
lib_LTLIBRARIES = libsecp256k1.la
|
|
|
|
include_HEADERS = include/secp256k1.h
|
2018-11-27 16:48:57 +01:00
|
|
|
include_HEADERS += include/secp256k1_preallocated.h
|
2014-01-17 22:52:33 -05:00
|
|
|
noinst_HEADERS =
|
2014-10-28 04:08:15 -07:00
|
|
|
noinst_HEADERS += src/scalar.h
|
2014-10-29 00:35:49 -07:00
|
|
|
noinst_HEADERS += src/scalar_4x64.h
|
|
|
|
noinst_HEADERS += src/scalar_8x32.h
|
2016-07-07 10:11:30 +00:00
|
|
|
noinst_HEADERS += src/scalar_low.h
|
2014-10-28 04:08:15 -07:00
|
|
|
noinst_HEADERS += src/scalar_impl.h
|
2014-10-29 00:35:49 -07:00
|
|
|
noinst_HEADERS += src/scalar_4x64_impl.h
|
|
|
|
noinst_HEADERS += src/scalar_8x32_impl.h
|
2016-07-07 10:11:30 +00:00
|
|
|
noinst_HEADERS += src/scalar_low_impl.h
|
2014-01-17 22:52:33 -05:00
|
|
|
noinst_HEADERS += src/group.h
|
2014-03-07 01:11:01 +01:00
|
|
|
noinst_HEADERS += src/group_impl.h
|
2020-12-05 22:40:54 +00:00
|
|
|
noinst_HEADERS += src/eccommit.h
|
|
|
|
noinst_HEADERS += src/eccommit_impl.h
|
2014-01-17 22:52:33 -05:00
|
|
|
noinst_HEADERS += src/ecdsa.h
|
2014-03-07 01:11:01 +01:00
|
|
|
noinst_HEADERS += src/ecdsa_impl.h
|
2014-10-27 02:57:27 -07:00
|
|
|
noinst_HEADERS += src/eckey.h
|
|
|
|
noinst_HEADERS += src/eckey_impl.h
|
2014-01-17 22:52:33 -05:00
|
|
|
noinst_HEADERS += src/ecmult.h
|
2014-03-07 01:11:01 +01:00
|
|
|
noinst_HEADERS += src/ecmult_impl.h
|
2021-12-17 12:02:40 -05:00
|
|
|
noinst_HEADERS += src/ecmult_compute_table.h
|
|
|
|
noinst_HEADERS += src/ecmult_compute_table_impl.h
|
2015-05-13 17:31:47 -05:00
|
|
|
noinst_HEADERS += src/ecmult_const.h
|
|
|
|
noinst_HEADERS += src/ecmult_const_impl.h
|
2014-10-26 03:42:24 -07:00
|
|
|
noinst_HEADERS += src/ecmult_gen.h
|
|
|
|
noinst_HEADERS += src/ecmult_gen_impl.h
|
2021-12-17 11:33:38 -05:00
|
|
|
noinst_HEADERS += src/ecmult_gen_compute_table.h
|
|
|
|
noinst_HEADERS += src/ecmult_gen_compute_table_impl.h
|
2014-01-17 22:52:33 -05:00
|
|
|
noinst_HEADERS += src/field_10x26.h
|
2014-03-07 01:11:01 +01:00
|
|
|
noinst_HEADERS += src/field_10x26_impl.h
|
2014-01-17 22:52:33 -05:00
|
|
|
noinst_HEADERS += src/field_5x52.h
|
2014-03-07 01:11:01 +01:00
|
|
|
noinst_HEADERS += src/field_5x52_impl.h
|
|
|
|
noinst_HEADERS += src/field_5x52_int128_impl.h
|
2020-11-29 14:01:03 -08:00
|
|
|
noinst_HEADERS += src/modinv32.h
|
|
|
|
noinst_HEADERS += src/modinv32_impl.h
|
|
|
|
noinst_HEADERS += src/modinv64.h
|
|
|
|
noinst_HEADERS += src/modinv64_impl.h
|
2021-12-17 14:21:38 -05:00
|
|
|
noinst_HEADERS += src/precomputed_ecmult.h
|
2021-12-17 13:50:39 -05:00
|
|
|
noinst_HEADERS += src/precomputed_ecmult_gen.h
|
2020-08-12 15:52:20 -07:00
|
|
|
noinst_HEADERS += src/assumptions.h
|
2022-12-06 16:35:35 -05:00
|
|
|
noinst_HEADERS += src/checkmem.h
|
2023-08-17 19:25:56 +02:00
|
|
|
noinst_HEADERS += src/testutil.h
|
2014-01-17 22:52:33 -05:00
|
|
|
noinst_HEADERS += src/util.h
|
2022-07-27 11:09:51 -04:00
|
|
|
noinst_HEADERS += src/int128.h
|
|
|
|
noinst_HEADERS += src/int128_impl.h
|
|
|
|
noinst_HEADERS += src/int128_native.h
|
|
|
|
noinst_HEADERS += src/int128_native_impl.h
|
|
|
|
noinst_HEADERS += src/int128_struct.h
|
|
|
|
noinst_HEADERS += src/int128_struct_impl.h
|
2017-07-22 18:03:17 +00:00
|
|
|
noinst_HEADERS += src/scratch.h
|
|
|
|
noinst_HEADERS += src/scratch_impl.h
|
2020-08-17 13:48:22 -07:00
|
|
|
noinst_HEADERS += src/selftest.h
|
2014-11-12 15:59:26 -08:00
|
|
|
noinst_HEADERS += src/testrand.h
|
|
|
|
noinst_HEADERS += src/testrand_impl.h
|
2014-12-13 18:06:33 +01:00
|
|
|
noinst_HEADERS += src/hash.h
|
|
|
|
noinst_HEADERS += src/hash_impl.h
|
2014-01-17 22:52:33 -05:00
|
|
|
noinst_HEADERS += src/field.h
|
2014-03-07 01:11:01 +01:00
|
|
|
noinst_HEADERS += src/field_impl.h
|
2014-12-04 20:26:54 +01:00
|
|
|
noinst_HEADERS += src/bench.h
|
2023-04-14 07:11:46 +02:00
|
|
|
noinst_HEADERS += src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.h
|
2015-10-14 17:43:20 +02:00
|
|
|
noinst_HEADERS += contrib/lax_der_parsing.h
|
2015-10-26 15:21:53 -05:00
|
|
|
noinst_HEADERS += contrib/lax_der_parsing.c
|
2015-10-21 04:02:30 +00:00
|
|
|
noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
|
2015-10-26 15:21:53 -05:00
|
|
|
noinst_HEADERS += contrib/lax_der_privatekey_parsing.c
|
2023-02-17 14:08:06 +05:30
|
|
|
noinst_HEADERS += examples/examples_util.h
|
2014-01-17 22:52:33 -05:00
|
|
|
|
2021-12-17 13:50:39 -05:00
|
|
|
PRECOMPUTED_LIB = libsecp256k1_precomputed.la
|
|
|
|
noinst_LTLIBRARIES = $(PRECOMPUTED_LIB)
|
2021-12-17 14:21:38 -05:00
|
|
|
libsecp256k1_precomputed_la_SOURCES = src/precomputed_ecmult.c src/precomputed_ecmult_gen.c
|
2022-11-21 22:13:04 -05:00
|
|
|
# We need `-I$(top_srcdir)/src` in VPATH builds if libsecp256k1_precomputed_la_SOURCES have been recreated in the build tree.
|
|
|
|
# This helps users and packagers who insist on recreating the precomputed files (e.g., Gentoo).
|
2023-01-19 09:43:28 +00:00
|
|
|
libsecp256k1_precomputed_la_CPPFLAGS = -I$(top_srcdir)/src $(SECP_CONFIG_DEFINES)
|
2021-12-17 13:50:39 -05:00
|
|
|
|
2014-12-24 12:12:37 +01:00
|
|
|
if USE_EXTERNAL_ASM
|
|
|
|
COMMON_LIB = libsecp256k1_common.la
|
|
|
|
else
|
|
|
|
COMMON_LIB =
|
|
|
|
endif
|
2021-12-17 13:50:39 -05:00
|
|
|
noinst_LTLIBRARIES += $(COMMON_LIB)
|
2014-12-24 12:12:37 +01:00
|
|
|
|
2014-05-20 20:59:11 -04:00
|
|
|
pkgconfigdir = $(libdir)/pkgconfig
|
2014-05-07 06:10:08 +00:00
|
|
|
pkgconfig_DATA = libsecp256k1.pc
|
|
|
|
|
2014-12-24 12:12:37 +01:00
|
|
|
if USE_EXTERNAL_ASM
|
|
|
|
if USE_ASM_ARM
|
|
|
|
libsecp256k1_common_la_SOURCES = src/asm/field_10x26_arm.s
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2014-08-19 13:39:58 +02:00
|
|
|
libsecp256k1_la_SOURCES = src/secp256k1.c
|
2023-01-19 09:43:28 +00:00
|
|
|
libsecp256k1_la_CPPFLAGS = $(SECP_CONFIG_DEFINES)
|
|
|
|
libsecp256k1_la_LIBADD = $(COMMON_LIB) $(PRECOMPUTED_LIB)
|
2021-07-06 21:06:46 +00:00
|
|
|
libsecp256k1_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_CURRENT):$(LIB_VERSION_REVISION):$(LIB_VERSION_AGE)
|
2014-08-19 13:39:58 +02:00
|
|
|
|
2014-01-17 22:52:33 -05:00
|
|
|
noinst_PROGRAMS =
|
|
|
|
if USE_BENCHMARK
|
2021-10-17 12:08:06 -04:00
|
|
|
noinst_PROGRAMS += bench bench_internal bench_ecmult
|
|
|
|
bench_SOURCES = src/bench.c
|
2023-01-30 22:42:39 +00:00
|
|
|
bench_LDADD = libsecp256k1.la
|
2022-12-29 14:52:14 -05:00
|
|
|
bench_CPPFLAGS = $(SECP_CONFIG_DEFINES)
|
2015-01-31 16:12:10 -04:00
|
|
|
bench_internal_SOURCES = src/bench_internal.c
|
2023-01-19 09:43:28 +00:00
|
|
|
bench_internal_LDADD = $(COMMON_LIB) $(PRECOMPUTED_LIB)
|
|
|
|
bench_internal_CPPFLAGS = $(SECP_CONFIG_DEFINES)
|
2017-09-12 20:05:39 -07:00
|
|
|
bench_ecmult_SOURCES = src/bench_ecmult.c
|
2023-01-19 09:43:28 +00:00
|
|
|
bench_ecmult_LDADD = $(COMMON_LIB) $(PRECOMPUTED_LIB)
|
|
|
|
bench_ecmult_CPPFLAGS = $(SECP_CONFIG_DEFINES)
|
2014-01-17 22:52:33 -05:00
|
|
|
endif
|
|
|
|
|
2015-09-17 18:54:52 -05:00
|
|
|
TESTS =
|
2014-01-17 22:52:33 -05:00
|
|
|
if USE_TESTS
|
2023-01-05 11:37:40 +01:00
|
|
|
TESTS += noverify_tests
|
|
|
|
noinst_PROGRAMS += noverify_tests
|
|
|
|
noverify_tests_SOURCES = src/tests.c
|
2023-01-19 09:43:28 +00:00
|
|
|
noverify_tests_CPPFLAGS = $(SECP_CONFIG_DEFINES)
|
|
|
|
noverify_tests_LDADD = $(COMMON_LIB) $(PRECOMPUTED_LIB)
|
2023-01-05 11:37:40 +01:00
|
|
|
noverify_tests_LDFLAGS = -static
|
2016-11-26 20:34:15 +00:00
|
|
|
if !ENABLE_COVERAGE
|
2015-09-17 18:54:52 -05:00
|
|
|
TESTS += tests
|
2023-01-05 11:37:40 +01:00
|
|
|
noinst_PROGRAMS += tests
|
|
|
|
tests_SOURCES = $(noverify_tests_SOURCES)
|
|
|
|
tests_CPPFLAGS = $(noverify_tests_CPPFLAGS) -DVERIFY
|
|
|
|
tests_LDADD = $(noverify_tests_LDADD)
|
|
|
|
tests_LDFLAGS = $(noverify_tests_LDFLAGS)
|
|
|
|
endif
|
2015-09-17 18:54:52 -05:00
|
|
|
endif
|
|
|
|
|
2022-12-06 23:12:15 -05:00
|
|
|
if USE_CTIME_TESTS
|
|
|
|
noinst_PROGRAMS += ctime_tests
|
|
|
|
ctime_tests_SOURCES = src/ctime_tests.c
|
2023-01-30 22:42:39 +00:00
|
|
|
ctime_tests_LDADD = libsecp256k1.la
|
2022-12-06 23:12:15 -05:00
|
|
|
ctime_tests_CPPFLAGS = $(SECP_CONFIG_DEFINES)
|
|
|
|
endif
|
|
|
|
|
2015-09-17 18:54:52 -05:00
|
|
|
if USE_EXHAUSTIVE_TESTS
|
|
|
|
noinst_PROGRAMS += exhaustive_tests
|
|
|
|
exhaustive_tests_SOURCES = src/tests_exhaustive.c
|
2023-01-19 09:43:28 +00:00
|
|
|
exhaustive_tests_CPPFLAGS = $(SECP_CONFIG_DEFINES)
|
2016-11-26 20:34:15 +00:00
|
|
|
if !ENABLE_COVERAGE
|
|
|
|
exhaustive_tests_CPPFLAGS += -DVERIFY
|
|
|
|
endif
|
2021-12-17 13:50:39 -05:00
|
|
|
# Note: do not include $(PRECOMPUTED_LIB) in exhaustive_tests (it uses runtime-generated tables).
|
2023-01-19 09:43:28 +00:00
|
|
|
exhaustive_tests_LDADD = $(COMMON_LIB)
|
2015-09-17 18:54:52 -05:00
|
|
|
exhaustive_tests_LDFLAGS = -static
|
|
|
|
TESTS += exhaustive_tests
|
2014-01-17 22:52:33 -05:00
|
|
|
endif
|
|
|
|
|
2020-04-30 14:34:24 +03:00
|
|
|
if USE_EXAMPLES
|
|
|
|
noinst_PROGRAMS += ecdsa_example
|
|
|
|
ecdsa_example_SOURCES = examples/ecdsa.c
|
2023-06-30 09:26:48 +01:00
|
|
|
ecdsa_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
|
2020-04-30 14:34:24 +03:00
|
|
|
ecdsa_example_LDADD = libsecp256k1.la
|
|
|
|
ecdsa_example_LDFLAGS = -static
|
|
|
|
if BUILD_WINDOWS
|
|
|
|
ecdsa_example_LDFLAGS += -lbcrypt
|
|
|
|
endif
|
|
|
|
TESTS += ecdsa_example
|
|
|
|
if ENABLE_MODULE_ECDH
|
|
|
|
noinst_PROGRAMS += ecdh_example
|
|
|
|
ecdh_example_SOURCES = examples/ecdh.c
|
2023-06-30 09:26:48 +01:00
|
|
|
ecdh_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
|
2020-04-30 14:34:24 +03:00
|
|
|
ecdh_example_LDADD = libsecp256k1.la
|
|
|
|
ecdh_example_LDFLAGS = -static
|
|
|
|
if BUILD_WINDOWS
|
|
|
|
ecdh_example_LDFLAGS += -lbcrypt
|
|
|
|
endif
|
|
|
|
TESTS += ecdh_example
|
|
|
|
endif
|
|
|
|
if ENABLE_MODULE_SCHNORRSIG
|
|
|
|
noinst_PROGRAMS += schnorr_example
|
|
|
|
schnorr_example_SOURCES = examples/schnorr.c
|
2023-06-30 09:26:48 +01:00
|
|
|
schnorr_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
|
2020-04-30 14:34:24 +03:00
|
|
|
schnorr_example_LDADD = libsecp256k1.la
|
|
|
|
schnorr_example_LDFLAGS = -static
|
|
|
|
if BUILD_WINDOWS
|
|
|
|
schnorr_example_LDFLAGS += -lbcrypt
|
|
|
|
endif
|
|
|
|
TESTS += schnorr_example
|
|
|
|
endif
|
2021-05-05 15:45:31 +00:00
|
|
|
if ENABLE_MODULE_MUSIG
|
2022-03-30 15:06:46 +00:00
|
|
|
noinst_PROGRAMS += musig_example
|
|
|
|
musig_example_SOURCES = examples/musig.c
|
2023-07-28 11:28:58 +02:00
|
|
|
musig_example_CPPFLAGS = -I$(top_srcdir)/include -DSECP256K1_STATIC
|
2022-03-30 15:06:46 +00:00
|
|
|
musig_example_LDADD = libsecp256k1.la
|
|
|
|
musig_example_LDFLAGS = -static
|
2022-03-30 15:00:03 +00:00
|
|
|
if BUILD_WINDOWS
|
2022-03-30 15:06:46 +00:00
|
|
|
musig_example_LDFLAGS += -lbcrypt
|
2022-03-30 15:00:03 +00:00
|
|
|
endif
|
2022-03-30 15:06:46 +00:00
|
|
|
TESTS += musig_example
|
2021-05-05 15:45:31 +00:00
|
|
|
endif
|
2020-04-30 14:34:24 +03:00
|
|
|
endif
|
2021-05-05 15:45:31 +00:00
|
|
|
|
2021-08-27 17:53:44 +02:00
|
|
|
### Precomputed tables
|
2021-12-17 11:19:45 -05:00
|
|
|
EXTRA_PROGRAMS = precompute_ecmult precompute_ecmult_gen
|
2021-08-27 17:53:44 +02:00
|
|
|
CLEANFILES = $(EXTRA_PROGRAMS)
|
2021-06-28 16:33:03 -04:00
|
|
|
|
2021-12-17 11:19:45 -05:00
|
|
|
precompute_ecmult_SOURCES = src/precompute_ecmult.c
|
2023-05-17 23:28:36 +02:00
|
|
|
precompute_ecmult_CPPFLAGS = $(SECP_CONFIG_DEFINES) -DVERIFY
|
2023-01-19 09:43:28 +00:00
|
|
|
precompute_ecmult_LDADD = $(COMMON_LIB)
|
2015-05-19 17:32:35 -07:00
|
|
|
|
2021-12-17 11:15:37 -05:00
|
|
|
precompute_ecmult_gen_SOURCES = src/precompute_ecmult_gen.c
|
2023-05-17 23:28:36 +02:00
|
|
|
precompute_ecmult_gen_CPPFLAGS = $(SECP_CONFIG_DEFINES) -DVERIFY
|
2023-01-19 09:43:28 +00:00
|
|
|
precompute_ecmult_gen_LDADD = $(COMMON_LIB)
|
2015-05-19 17:32:35 -07:00
|
|
|
|
2021-08-27 17:53:44 +02:00
|
|
|
# See Automake manual, Section "Errors with distclean".
|
|
|
|
# We don't list any dependencies for the prebuilt files here because
|
|
|
|
# otherwise make's decision whether to rebuild them (even in the first
|
|
|
|
# build by a normal user) depends on mtimes, and thus is very fragile.
|
|
|
|
# This means that rebuilds of the prebuilt files always need to be
|
2023-04-14 07:37:10 +02:00
|
|
|
# forced by deleting them.
|
2021-12-17 14:21:38 -05:00
|
|
|
src/precomputed_ecmult.c:
|
2021-12-17 11:19:45 -05:00
|
|
|
$(MAKE) $(AM_MAKEFLAGS) precompute_ecmult$(EXEEXT)
|
|
|
|
./precompute_ecmult$(EXEEXT)
|
2021-12-17 13:50:39 -05:00
|
|
|
src/precomputed_ecmult_gen.c:
|
2021-12-17 11:15:37 -05:00
|
|
|
$(MAKE) $(AM_MAKEFLAGS) precompute_ecmult_gen$(EXEEXT)
|
|
|
|
./precompute_ecmult_gen$(EXEEXT)
|
2015-05-19 17:32:35 -07:00
|
|
|
|
2021-12-17 14:21:38 -05:00
|
|
|
PRECOMP = src/precomputed_ecmult_gen.c src/precomputed_ecmult.c
|
2021-08-27 17:53:44 +02:00
|
|
|
precomp: $(PRECOMP)
|
2015-05-19 17:32:35 -07:00
|
|
|
|
2021-08-27 17:53:44 +02:00
|
|
|
# Ensure the prebuilt files will be build first (only if they don't exist,
|
|
|
|
# e.g., after `make maintainer-clean`).
|
|
|
|
BUILT_SOURCES = $(PRECOMP)
|
2015-07-16 00:05:32 +00:00
|
|
|
|
2023-04-14 07:45:49 +02:00
|
|
|
.PHONY: clean-precomp
|
2021-08-27 17:53:44 +02:00
|
|
|
clean-precomp:
|
|
|
|
rm -f $(PRECOMP)
|
2023-04-14 07:45:49 +02:00
|
|
|
maintainer-clean-local: clean-precomp
|
2015-05-19 17:32:35 -07:00
|
|
|
|
2023-04-14 07:22:01 +02:00
|
|
|
### Pregenerated test vectors
|
2023-04-14 07:37:10 +02:00
|
|
|
### (see the comments in the previous section for detailed rationale)
|
2023-04-14 07:22:01 +02:00
|
|
|
TESTVECTORS = src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.h
|
|
|
|
|
|
|
|
src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.h:
|
2023-04-14 07:54:24 +02:00
|
|
|
mkdir -p $(@D)
|
2023-04-25 11:44:25 +01:00
|
|
|
python3 $(top_srcdir)/tools/tests_wycheproof_generate.py $(top_srcdir)/src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.json > $@
|
2023-04-14 07:22:01 +02:00
|
|
|
|
|
|
|
testvectors: $(TESTVECTORS)
|
|
|
|
|
2023-04-14 07:37:10 +02:00
|
|
|
BUILT_SOURCES += $(TESTVECTORS)
|
|
|
|
|
2023-04-14 07:45:49 +02:00
|
|
|
.PHONY: clean-testvectors
|
2023-04-14 07:22:01 +02:00
|
|
|
clean-testvectors:
|
|
|
|
rm -f $(TESTVECTORS)
|
2023-04-14 07:45:49 +02:00
|
|
|
maintainer-clean-local: clean-testvectors
|
2023-04-14 07:22:01 +02:00
|
|
|
|
|
|
|
### Additional files to distribute
|
2022-12-12 21:20:52 +00:00
|
|
|
EXTRA_DIST = autogen.sh CHANGELOG.md SECURITY.md
|
|
|
|
EXTRA_DIST += doc/release-process.md doc/safegcd_implementation.md
|
|
|
|
EXTRA_DIST += examples/EXAMPLES_COPYING
|
|
|
|
EXTRA_DIST += sage/gen_exhaustive_groups.sage
|
|
|
|
EXTRA_DIST += sage/gen_split_lambda_constants.sage
|
|
|
|
EXTRA_DIST += sage/group_prover.sage
|
|
|
|
EXTRA_DIST += sage/prove_group_implementations.sage
|
|
|
|
EXTRA_DIST += sage/secp256k1_params.sage
|
|
|
|
EXTRA_DIST += sage/weierstrass_prover.sage
|
2023-04-14 07:22:01 +02:00
|
|
|
EXTRA_DIST += src/wycheproof/WYCHEPROOF_COPYING
|
|
|
|
EXTRA_DIST += src/wycheproof/ecdsa_secp256k1_sha256_bitcoin_test.json
|
|
|
|
EXTRA_DIST += tools/tests_wycheproof_generate.py
|
2015-06-29 15:06:28 -05:00
|
|
|
|
2023-11-26 16:44:23 +01:00
|
|
|
if ENABLE_MODULE_SCHNORRSIG_HALFAGG
|
|
|
|
include src/modules/schnorrsig_halfagg/Makefile.am.include
|
|
|
|
endif
|
|
|
|
|
2023-02-06 13:53:02 -08:00
|
|
|
if ENABLE_MODULE_BPPP
|
|
|
|
include src/modules/bppp/Makefile.am.include
|
2022-08-27 15:02:44 +00:00
|
|
|
endif
|
|
|
|
|
2015-06-29 15:06:28 -05:00
|
|
|
if ENABLE_MODULE_ECDH
|
|
|
|
include src/modules/ecdh/Makefile.am.include
|
|
|
|
endif
|
2015-07-24 15:44:49 +02:00
|
|
|
|
2020-10-14 15:03:26 +00:00
|
|
|
if ENABLE_MODULE_MUSIG
|
|
|
|
include src/modules/musig/Makefile.am.include
|
|
|
|
endif
|
2018-12-22 22:12:35 +00:00
|
|
|
|
2015-08-27 03:42:57 +02:00
|
|
|
if ENABLE_MODULE_RECOVERY
|
|
|
|
include src/modules/recovery/Makefile.am.include
|
|
|
|
endif
|
Pedersen commitments, borromean ring signatures, and ZK range proofs.
This commit adds three new cryptosystems to libsecp256k1:
Pedersen commitments are a system for making blinded commitments
to a value. Functionally they work like:
commit_b,v = H(blind_b || value_v),
except they are additively homorphic, e.g.
C(b1, v1) - C(b2, v2) = C(b1 - b2, v1 - v2) and
C(b1, v1) - C(b1, v1) = 0, etc.
The commitments themselves are EC points, serialized as 33 bytes.
In addition to the commit function this implementation includes
utility functions for verifying that a set of commitments sums
to zero, and for picking blinding factors that sum to zero.
If the blinding factors are uniformly random, pedersen commitments
have information theoretic privacy.
Borromean ring signatures are a novel efficient ring signature
construction for AND/OR admissions policies (the code here implements
an AND of ORs, each of any size). This construction requires
32 bytes of signature per pubkey used plus 32 bytes of constant
overhead. With these you can construct signatures like "Given pubkeys
A B C D E F G, the signer knows the discrete logs
satisifying (A || B) & (C || D || E) & (F || G)".
ZK range proofs allow someone to prove a pedersen commitment is in
a particular range (e.g. [0..2^64)) without revealing the specific
value. The construction here is based on the above borromean
ring signature and uses a radix-4 encoding and other optimizations
to maximize efficiency. It also supports encoding proofs with a
non-private base-10 exponent and minimum-value to allow trading
off secrecy for size and speed (or just avoiding wasting space
keeping data private that was already public due to external
constraints).
A proof for a 32-bit mantissa takes 2564 bytes, but 2048 bytes of
this can be used to communicate a private message to a receiver
who shares a secret random seed with the prover.
Also: get rid of precomputed H tables (Pieter Wuille)
2015-08-05 19:04:14 +02:00
|
|
|
|
2016-07-07 00:47:41 +02:00
|
|
|
if ENABLE_MODULE_GENERATOR
|
|
|
|
include src/modules/generator/Makefile.am.include
|
|
|
|
endif
|
|
|
|
|
Pedersen commitments, borromean ring signatures, and ZK range proofs.
This commit adds three new cryptosystems to libsecp256k1:
Pedersen commitments are a system for making blinded commitments
to a value. Functionally they work like:
commit_b,v = H(blind_b || value_v),
except they are additively homorphic, e.g.
C(b1, v1) - C(b2, v2) = C(b1 - b2, v1 - v2) and
C(b1, v1) - C(b1, v1) = 0, etc.
The commitments themselves are EC points, serialized as 33 bytes.
In addition to the commit function this implementation includes
utility functions for verifying that a set of commitments sums
to zero, and for picking blinding factors that sum to zero.
If the blinding factors are uniformly random, pedersen commitments
have information theoretic privacy.
Borromean ring signatures are a novel efficient ring signature
construction for AND/OR admissions policies (the code here implements
an AND of ORs, each of any size). This construction requires
32 bytes of signature per pubkey used plus 32 bytes of constant
overhead. With these you can construct signatures like "Given pubkeys
A B C D E F G, the signer knows the discrete logs
satisifying (A || B) & (C || D || E) & (F || G)".
ZK range proofs allow someone to prove a pedersen commitment is in
a particular range (e.g. [0..2^64)) without revealing the specific
value. The construction here is based on the above borromean
ring signature and uses a radix-4 encoding and other optimizations
to maximize efficiency. It also supports encoding proofs with a
non-private base-10 exponent and minimum-value to allow trading
off secrecy for size and speed (or just avoiding wasting space
keeping data private that was already public due to external
constraints).
A proof for a 32-bit mantissa takes 2564 bytes, but 2048 bytes of
this can be used to communicate a private message to a receiver
who shares a secret random seed with the prover.
Also: get rid of precomputed H tables (Pieter Wuille)
2015-08-05 19:04:14 +02:00
|
|
|
if ENABLE_MODULE_RANGEPROOF
|
|
|
|
include src/modules/rangeproof/Makefile.am.include
|
|
|
|
endif
|
2016-04-21 22:22:39 +00:00
|
|
|
|
|
|
|
if ENABLE_MODULE_WHITELIST
|
|
|
|
include src/modules/whitelist/Makefile.am.include
|
|
|
|
endif
|
2016-07-01 15:51:07 +00:00
|
|
|
|
|
|
|
if ENABLE_MODULE_SURJECTIONPROOF
|
|
|
|
include src/modules/surjection/Makefile.am.include
|
|
|
|
endif
|
2020-11-04 21:46:54 +00:00
|
|
|
|
2020-05-12 13:58:47 +00:00
|
|
|
if ENABLE_MODULE_EXTRAKEYS
|
|
|
|
include src/modules/extrakeys/Makefile.am.include
|
|
|
|
endif
|
2020-05-12 21:19:03 +00:00
|
|
|
|
|
|
|
if ENABLE_MODULE_SCHNORRSIG
|
|
|
|
include src/modules/schnorrsig/Makefile.am.include
|
|
|
|
endif
|
2020-12-05 23:18:54 +00:00
|
|
|
|
2022-11-04 16:18:40 -04:00
|
|
|
if ENABLE_MODULE_ELLSWIFT
|
|
|
|
include src/modules/ellswift/Makefile.am.include
|
|
|
|
endif
|
2023-07-26 15:19:08 +00:00
|
|
|
|
2020-12-05 23:18:54 +00:00
|
|
|
if ENABLE_MODULE_ECDSA_S2C
|
|
|
|
include src/modules/ecdsa_s2c/Makefile.am.include
|
|
|
|
endif
|
|
|
|
|
2021-03-04 23:38:48 -08:00
|
|
|
if ENABLE_MODULE_ECDSA_ADAPTOR
|
|
|
|
include src/modules/ecdsa_adaptor/Makefile.am.include
|
|
|
|
endif
|
2024-06-17 17:06:25 -07:00
|
|
|
|
|
|
|
if ENABLE_MODULE_FROST
|
|
|
|
include src/modules/frost/Makefile.am.include
|
|
|
|
endif
|