Skip to content

Commit 62075fc

Browse files
sipajanus
authored andcommitted
Squashed 'src/secp256k1/' changes from efad3506a8..be8d9c262f
be8d9c262f Merge bitcoin-core/secp256k1#965: gen_context: Don't use any ASM aeece44599 gen_context: Don't use any ASM 7688a4f13a Merge bitcoin-core/secp256k1#963: "Schnorrsig API overhaul" fixups 90e83449b2 ci: Add C++ test f698caaff6 Use unsigned char consistently for byte arrays b5b8e7b719 Don't declare constants twice 769528f307 Don't use string literals for char arrays without NUL termination 2cc3cfa583 Fix -Wmissing-braces warning in clang 0440945fb5 Merge #844: schnorrsig API overhaul ec3aaa5014 Merge #960: tests_exhaustive: check the result of secp256k1_ecdsa_sign a1ee83c654 tests_exhaustive: check the result of secp256k1_ecdsa_sign 253f90cdeb Merge bitcoin-core/secp256k1#951: configure: replace AC_PATH_PROG to AC_CHECK_PROG 446d28d9de Merge bitcoin-core/secp256k1#944: Various improvements related to CFLAGS 0302138f75 ci: Make compiler warning into errors on CI b924e1e605 build: Ensure that configure's compile checks default to -O2 7939cd571c build: List *CPPFLAGS before *CFLAGS like on the compiler command line 595e8a35d8 build: Enable -Wcast-align=strict warning 07256267ff build: Use own variable SECP_CFLAGS instead of touching user CFLAGS 4866178dfc Merge bitcoin-core/secp256k1#955: Add random field multiply/square tests 75ce488c2a Merge bitcoin-core/secp256k1#959: tests: really test the non-var scalar inverse 41ed13942b tests: really test the non-var scalar inverse 5f6ceafcfa schnorrsig: allow setting MSGLEN != 32 in benchmark fdd06b7967 schnorrsig: add tests for sign_custom and varlen msg verification d8d806aaf3 schnorrsig: add extra parameter struct for sign_custom a0c3fc177f schnorrsig: allow signing and verification of variable length msgs 5a8e4991ad Add secp256k1_tagged_sha256 as defined in BIP-340 b6c0b72fb0 schnorrsig: remove noncefp args from sign; add sign_custom function bdf19f105c Add random field multiply/square tests 8ae56e33e7 Merge #879: Avoid passing out-of-bound pointers to 0-size memcpy a4642fa15e configure: replace AC_PATH_PROG to AC_CHECK_PROG 1758a92ffd Merge #950: ci: Add ppc64le build c58c4ea470 ci: Add ppc64le build 7973576f6e Merge #662: Add ecmult_gen, ecmult_const and ecmult to benchmark 8f879c2887 Fix array size in bench_ecmult 2fe1b50df1 Add ecmult_gen, ecmult_const and ecmult to benchmark 593e6bad9c Clean up ecmult_bench to make space for more benchmarks 50f3367712 Merge #947: ci: Run PRs on merge result even for i686 a35fdd3478 ci: Run PRs on merge result even for i686 442cee5baf schnorrsig: add algolen argument to nonce_function_hardened df3bfa12c3 schnorrsig: clarify result of calling nonce_function_bip340 without data 99e8614812 README: mention schnorrsig module 3dc8c072b6 Merge #846: ci: Run ASan/LSan and reorganize sanitizer and Valgrind jobs 02dcea1ad9 ci: Make test iterations configurable and tweak for sanitizer builds 489ff5c20a tests: Treat empty SECP2561_TEST_ITERS as if it was unset fcfcb97e74 ci: Simplify to use generic wrapper for QEMU, Valgrind, etc de4157f13a ci: Run ASan/LSan and reorganize sanitizer and Valgrind jobs 399722a63a Merge #941: Clean up git tree 09b3bb8648 Clean up git tree bf0ac46066 Merge #930: Add ARM32/ARM64 CI 202a030f7d Merge #850: add `secp256k1_ec_pubkey_cmp` method 1e78c18d5b Merge bitcoin-core/secp256k1#940: contrib: Explain explicit header guards 69394879b6 Merge #926: secp256k1.h: clarify that by default arguments must be != NULL 6eceec6d56 add `secp256k1_xonly_pubkey_cmp` method 0d9561ae87 add `secp256k1_ec_pubkey_cmp` method 22a9ea154a contrib: Explain explicit header guards 6c52ae8724 Merge #937: Have ge_set_gej_var, gej_double_var and ge_set_all_gej_var initialize all fields of their outputs. 185a6af227 Merge #925: changed include statements without prefix 'include/' 14c9739a1f tests: Improve secp256k1_ge_set_all_gej_var for some infinity inputs 4a19668c37 tests: Test secp256k1_ge_set_all_gej_var for all infinity inputs 3c90bdda95 change local lib headers to be relative for those pointing at "include/" dir 45b6468d7e Have secp256k1_ge_set_all_gej_var initialize all fields. Previous behaviour would not initialize r->y values in the case where infinity is passed in. Furthermore, the previous behaviour wouldn't initialize anything in the case where all inputs were infinity. 31c0f6de41 Have secp256k1_gej_double_var initialize all fields. Previous behaviour would not initialize r->x and r->y values in the case where infinity is passed in. dd6c3de322 Have secp256k1_ge_set_gej_var initialize all fields. Previous behaviour would not initialize r->x and r->y values in the case where infinity is passed in. d0bd2693e3 Merge bitcoin-core/secp256k1#936: Fix gen_context/ASM build on ARM 8bbad7a18e Add asm build to ARM32 CI 7d65ed5214 Add ARM32/ARM64 CI c8483520c9 Makefile.am: Don't pass a variable twice 2161f31785 Makefile.am: Honor config when building gen_context 99f47c20ec gen_context: Don't use external ASM because it complicates the build 98e0358d29 Merge #933: Avoids a missing brace warning in schnorrsig/tests_impl.h on old compilers 99e2d5be0d Avoids a missing brace warning in schnorrsig/tests_impl.h on old compilers. 34388af6b6 Merge #922: Add mingw32-w64/wine CI build 7012a188e6 Merge #928: Define SECP256K1_BUILD in secp256k1.c directly. ed5a199bed tests: fopen /dev/urandom in binary mode ae9e648526 Define SECP256K1_BUILD in secp256k1.c directly. 4dc37bf81b Add mingw32-w64/wine CI build 0881633dfd secp256k1.h: clarify that by default arguments must be != NULL 9570f674cc Avoid passing out-of-bound pointers to 0-size memcpy git-subtree-dir: src/secp256k1 git-subtree-split: be8d9c262f46309d9b4165b0498b71d704aba8fe
1 parent 8535c0f commit 62075fc

40 files changed

+1793
-836
lines changed

.cirrus.yml

+230-127
Large diffs are not rendered by default.

.gitignore

+9
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ aclocal.m4
3434
autom4te.cache/
3535
config.log
3636
config.status
37+
conftest*
3738
*.tar.gz
3839
*.la
3940
libtool
@@ -44,6 +45,14 @@ libtool
4445
*~
4546
*.log
4647
*.trs
48+
49+
coverage/
50+
coverage.html
51+
coverage.*.html
52+
*.gcda
53+
*.gcno
54+
*.gcov
55+
4756
src/libsecp256k1-config.h
4857
src/libsecp256k1-config.h.in
4958
src/ecmult_static_context.h

Makefile.am

+108-158
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,66 @@
22
# Distributed under the MIT software license, see the accompanying
33
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
44

5-
# Pattern rule to print variables, e.g. make print-top_srcdir
6-
print-%: FORCE
7-
@echo '$*'='$($*)'
8-
9-
ACLOCAL_AMFLAGS = -I build-aux/m4
10-
SUBDIRS = src
11-
if ENABLE_MAN
12-
SUBDIRS += doc/man
5+
# AM_CFLAGS will be automatically prepended to CFLAGS by Automake when compiling some foo
6+
# which does not have an explicit foo_CFLAGS variable set.
7+
AM_CFLAGS = $(SECP_CFLAGS)
8+
9+
lib_LTLIBRARIES = libsecp256k1.la
10+
include_HEADERS = include/secp256k1.h
11+
include_HEADERS += include/secp256k1_preallocated.h
12+
noinst_HEADERS =
13+
noinst_HEADERS += src/scalar.h
14+
noinst_HEADERS += src/scalar_4x64.h
15+
noinst_HEADERS += src/scalar_8x32.h
16+
noinst_HEADERS += src/scalar_low.h
17+
noinst_HEADERS += src/scalar_impl.h
18+
noinst_HEADERS += src/scalar_4x64_impl.h
19+
noinst_HEADERS += src/scalar_8x32_impl.h
20+
noinst_HEADERS += src/scalar_low_impl.h
21+
noinst_HEADERS += src/group.h
22+
noinst_HEADERS += src/group_impl.h
23+
noinst_HEADERS += src/ecdsa.h
24+
noinst_HEADERS += src/ecdsa_impl.h
25+
noinst_HEADERS += src/eckey.h
26+
noinst_HEADERS += src/eckey_impl.h
27+
noinst_HEADERS += src/ecmult.h
28+
noinst_HEADERS += src/ecmult_impl.h
29+
noinst_HEADERS += src/ecmult_const.h
30+
noinst_HEADERS += src/ecmult_const_impl.h
31+
noinst_HEADERS += src/ecmult_gen.h
32+
noinst_HEADERS += src/ecmult_gen_impl.h
33+
noinst_HEADERS += src/field_10x26.h
34+
noinst_HEADERS += src/field_10x26_impl.h
35+
noinst_HEADERS += src/field_5x52.h
36+
noinst_HEADERS += src/field_5x52_impl.h
37+
noinst_HEADERS += src/field_5x52_int128_impl.h
38+
noinst_HEADERS += src/field_5x52_asm_impl.h
39+
noinst_HEADERS += src/modinv32.h
40+
noinst_HEADERS += src/modinv32_impl.h
41+
noinst_HEADERS += src/modinv64.h
42+
noinst_HEADERS += src/modinv64_impl.h
43+
noinst_HEADERS += src/assumptions.h
44+
noinst_HEADERS += src/util.h
45+
noinst_HEADERS += src/scratch.h
46+
noinst_HEADERS += src/scratch_impl.h
47+
noinst_HEADERS += src/selftest.h
48+
noinst_HEADERS += src/testrand.h
49+
noinst_HEADERS += src/testrand_impl.h
50+
noinst_HEADERS += src/hash.h
51+
noinst_HEADERS += src/hash_impl.h
52+
noinst_HEADERS += src/field.h
53+
noinst_HEADERS += src/field_impl.h
54+
noinst_HEADERS += src/bench.h
55+
noinst_HEADERS += contrib/lax_der_parsing.h
56+
noinst_HEADERS += contrib/lax_der_parsing.c
57+
noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
58+
noinst_HEADERS += contrib/lax_der_privatekey_parsing.c
59+
60+
if USE_EXTERNAL_ASM
61+
COMMON_LIB = libsecp256k1_common.la
62+
noinst_LTLIBRARIES = $(COMMON_LIB)
63+
else
64+
COMMON_LIB =
1365
endif
1466
.PHONY: deploy FORCE
1567
.INTERMEDIATE: $(OSX_TEMP_ISO) $(COVERAGE_INFO)
@@ -21,159 +73,55 @@ pkgconfigdir = $(libdir)/pkgconfig
2173
pkgconfig_DATA = libBGLconsensus.pc
2274
endif
2375

24-
BGLD_BIN=$(top_builddir)/src/$(BGL_DAEMON_NAME)$(EXEEXT)
25-
BGL_QT_BIN=$(top_builddir)/src/qt/$(BGL_GUI_NAME)$(EXEEXT)
26-
BGL_CLI_BIN=$(top_builddir)/src/$(BGL_CLI_NAME)$(EXEEXT)
27-
BGL_TX_BIN=$(top_builddir)/src/$(BGL_TX_NAME)$(EXEEXT)
28-
BGL_UTIL_BIN=$(top_builddir)/src/$(BGL_UTIL_NAME)$(EXEEXT)
29-
BGL_WALLET_BIN=$(top_builddir)/src/$(BGL_WALLET_TOOL_NAME)$(EXEEXT)
30-
BGL_NODE_BIN=$(top_builddir)/src/$(BGL_MP_NODE_NAME)$(EXEEXT)
31-
BGL_GUI_BIN=$(top_builddir)/src/$(BGL_MP_GUI_NAME)$(EXEEXT)
32-
BGL_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win64-setup$(EXEEXT)
76+
libsecp256k1_la_SOURCES = src/secp256k1.c
77+
libsecp256k1_la_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
78+
libsecp256k1_la_LIBADD = $(SECP_LIBS) $(COMMON_LIB)
3379

3480
empty :=
3581
space := $(empty) $(empty)
3682

37-
OSX_APP=BGL-Qt.app
38-
OSX_VOLNAME = $(PACKAGE)-Qt
39-
OSX_DMG = $(OSX_VOLNAME).dmg
40-
OSX_TEMP_ISO = $(OSX_DMG:.dmg=).temp.iso
41-
OSX_BACKGROUND_SVG=background.svg
42-
OSX_BACKGROUND_IMAGE=background.tiff
43-
OSX_BACKGROUND_IMAGE_DPIS=36 72
44-
OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus
45-
OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/BGL.icns
46-
OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed
47-
48-
DIST_CONTRIB = \
49-
$(top_srcdir)/test/sanitizer_suppressions/lsan \
50-
$(top_srcdir)/test/sanitizer_suppressions/tsan \
51-
$(top_srcdir)/test/sanitizer_suppressions/ubsan \
52-
$(top_srcdir)/contrib/linearize/linearize-data.py \
53-
$(top_srcdir)/contrib/linearize/linearize-hashes.py
54-
55-
DIST_SHARE = \
56-
$(top_srcdir)/share/genbuild.sh \
57-
$(top_srcdir)/share/rpcauth
58-
59-
BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
60-
$(top_srcdir)/contrib/devtools/security-check.py \
61-
$(top_srcdir)/contrib/devtools/utils.py \
62-
$(top_srcdir)/contrib/devtools/pixie.py
63-
64-
WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/BGL.ico \
65-
$(top_srcdir)/share/pixmaps/nsis-header.bmp \
66-
$(top_srcdir)/share/pixmaps/nsis-wizard.bmp \
67-
$(top_srcdir)/doc/README_windows.txt
68-
69-
OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_INSTALLER_ICONS) \
70-
$(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_SVG) \
71-
$(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \
72-
$(top_srcdir)/contrib/macdeploy/detached-sig-create.sh
73-
74-
COVERAGE_INFO = $(COV_TOOL_WRAPPER) baseline.info \
75-
test_BGL_filtered.info total_coverage.info \
76-
baseline_filtered.info functional_test.info functional_test_filtered.info \
77-
test_BGL_coverage.info test_BGL.info fuzz.info fuzz_filtered.info fuzz_coverage.info
78-
79-
dist-hook:
80-
-$(GIT) archive --format=tar HEAD -- src/clientversion.cpp | $(AMTAR) -C $(top_distdir) -xf -
81-
82-
if TARGET_WINDOWS
83-
$(BGL_WIN_INSTALLER): all-recursive
84-
$(MKDIR_P) $(top_builddir)/release
85-
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BGLD_BIN) $(top_builddir)/release
86-
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BGL_QT_BIN) $(top_builddir)/release
87-
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BGL_CLI_BIN) $(top_builddir)/release
88-
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BGL_TX_BIN) $(top_builddir)/release
89-
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BGL_WALLET_BIN) $(top_builddir)/release
90-
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BGL_UTIL_BIN) $(top_builddir)/release
91-
@test -f $(MAKENSIS) && echo 'OutFile "$@"' | cat $(top_builddir)/share/setup.nsi - | $(MAKENSIS) -V2 - || \
92-
echo error: could not build $@
93-
@echo built $@
94-
95-
deploy: $(BGL_WIN_INSTALLER)
83+
noinst_PROGRAMS =
84+
if USE_BENCHMARK
85+
noinst_PROGRAMS += bench_verify bench_sign bench_internal bench_ecmult
86+
bench_verify_SOURCES = src/bench_verify.c
87+
bench_verify_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
88+
# SECP_TEST_INCLUDES are only used here for CRYPTO_CPPFLAGS
89+
bench_verify_CPPFLAGS = $(SECP_TEST_INCLUDES)
90+
bench_sign_SOURCES = src/bench_sign.c
91+
bench_sign_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
92+
bench_internal_SOURCES = src/bench_internal.c
93+
bench_internal_LDADD = $(SECP_LIBS) $(COMMON_LIB)
94+
bench_internal_CPPFLAGS = $(SECP_INCLUDES)
95+
bench_ecmult_SOURCES = src/bench_ecmult.c
96+
bench_ecmult_LDADD = $(SECP_LIBS) $(COMMON_LIB)
97+
bench_ecmult_CPPFLAGS = $(SECP_INCLUDES)
9698
endif
9799

98-
if TARGET_DARWIN
99-
$(OSX_APP)/Contents/PkgInfo:
100-
$(MKDIR_P) $(@D)
101-
@echo "APPL????" > $@
102-
103-
$(OSX_APP)/Contents/Resources/empty.lproj:
104-
$(MKDIR_P) $(@D)
105-
@touch $@
106-
107-
$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST)
108-
$(MKDIR_P) $(@D)
109-
$(INSTALL_DATA) $< $@
110-
111-
$(OSX_APP)/Contents/Resources/BGL.icns: $(OSX_INSTALLER_ICONS)
112-
$(MKDIR_P) $(@D)
113-
$(INSTALL_DATA) $< $@
114-
115-
$(OSX_APP)/Contents/MacOS/BGL-Qt: all-recursive
116-
$(MKDIR_P) $(@D)
117-
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BGL_QT_BIN) $@
118-
119-
$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings:
120-
$(MKDIR_P) $(@D)
121-
echo '{ CFBundleDisplayName = "$(PACKAGE_NAME)"; CFBundleName = "$(PACKAGE_NAME)"; }' > $@
122-
123-
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
124-
$(OSX_APP)/Contents/Resources/BGL.icns $(OSX_APP)/Contents/Info.plist \
125-
$(OSX_APP)/Contents/MacOS/BGL-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
126-
127-
osx_volname:
128-
echo $(OSX_VOLNAME) >$@
129-
130-
if BUILD_DARWIN
131-
$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) $(OSX_BACKGROUND_IMAGE)
132-
@echo "TEST BUILD DARWIN"
133-
$(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR) -dmg
134-
135-
$(OSX_BACKGROUND_IMAGE).png: contrib/macdeploy/$(OSX_BACKGROUND_SVG)
136-
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 36 -p 36 -o $@
137-
$(OSX_BACKGROUND_IMAGE)@2x.png: contrib/macdeploy/$(OSX_BACKGROUND_SVG)
138-
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 72 -p 72 -o $@
139-
$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE).png $(OSX_BACKGROUND_IMAGE)@2x.png
140-
tiffutil -cathidpicheck $^ -out $@
141-
142-
deploydir: $(OSX_DMG)
143-
else !BUILD_DARWIN
144-
APP_DIST_DIR=$(top_builddir)/dist
145-
APP_DIST_EXTRAS=$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE) $(APP_DIST_DIR)/.DS_Store $(APP_DIST_DIR)/Applications
146-
147-
$(APP_DIST_DIR)/Applications:
148-
@rm -f $@
149-
@cd $(@D); $(LN_S) /Applications $(@F)
150-
151-
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/BGL-Qt
152-
153-
$(OSX_TEMP_ISO): $(APP_DIST_EXTRAS)
154-
$(XORRISOFS) -D -l -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -o $@ dist -- $(if $(SOURCE_DATE_EPOCH),-volume_date all_file_dates =$(SOURCE_DATE_EPOCH))
155-
156-
$(OSX_TEMP_ISO): $(APP_DIST_EXTRAS)
157-
$(XORRISOFS) -D -l -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -o $@ $(APP_DIST_DIR) -- $(if $(SOURCE_DATE_EPOCH),-volume_date all_file_dates =$(SOURCE_DATE_EPOCH))
158-
159-
$(OSX_DMG): $(OSX_TEMP_ISO)
160-
$(DMG) dmg "$<" "$@"
161-
162-
dpi%.$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_SVG)
163-
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d $* -p $* | $(IMAGEMAGICK_CONVERT) - $@
164-
OSX_BACKGROUND_IMAGE_DPIFILES := $(foreach dpi,$(OSX_BACKGROUND_IMAGE_DPIS),dpi$(dpi).$(OSX_BACKGROUND_IMAGE))
165-
$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE_DPIFILES)
166-
$(MKDIR_P) $(@D)
167-
$(TIFFCP) -c none $(OSX_BACKGROUND_IMAGE_DPIFILES) $@
168-
169-
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/BGL-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
170-
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR)
171-
172-
deploydir: $(APP_DIST_EXTRAS)
173-
endif !BUILD_DARWIN
100+
TESTS =
101+
if USE_TESTS
102+
noinst_PROGRAMS += tests
103+
tests_SOURCES = src/tests.c
104+
tests_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SECP_INCLUDES) $(SECP_TEST_INCLUDES)
105+
if VALGRIND_ENABLED
106+
tests_CPPFLAGS += -DVALGRIND
107+
noinst_PROGRAMS += valgrind_ctime_test
108+
valgrind_ctime_test_SOURCES = src/valgrind_ctime_test.c
109+
valgrind_ctime_test_LDADD = libsecp256k1.la $(SECP_LIBS) $(COMMON_LIB)
110+
endif
111+
if !ENABLE_COVERAGE
112+
tests_CPPFLAGS += -DVERIFY
113+
endif
114+
tests_LDADD = $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
115+
tests_LDFLAGS = -static
116+
TESTS += tests
117+
endif
174118

175-
appbundle: $(OSX_APP_BUILT)
176-
deploy: $(OSX_DMG)
119+
if USE_EXHAUSTIVE_TESTS
120+
noinst_PROGRAMS += exhaustive_tests
121+
exhaustive_tests_SOURCES = src/tests_exhaustive.c
122+
exhaustive_tests_CPPFLAGS = -I$(top_srcdir)/src $(SECP_INCLUDES)
123+
if !ENABLE_COVERAGE
124+
exhaustive_tests_CPPFLAGS += -DVERIFY
177125
endif
178126

179127
if TARGET_WINDOWS
@@ -183,11 +131,13 @@ endif
183131
$(BGL_QT_BIN): FORCE
184132
$(MAKE) -C src qt/$(@F)
185133

186-
$(BGLD_BIN): FORCE
187-
$(MAKE) -C src $(@F)
134+
gen_context_OBJECTS = gen_context.o
135+
gen_context_BIN = gen_context$(BUILD_EXEEXT)
136+
gen_%.o: src/gen_%.c src/libsecp256k1-config.h
137+
$(CC_FOR_BUILD) $(DEFS) $(CPPFLAGS_FOR_BUILD) $(SECP_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -c $< -o $@
188138

189-
$(BGL_CLI_BIN): FORCE
190-
$(MAKE) -C src $(@F)
139+
$(gen_context_BIN): $(gen_context_OBJECTS)
140+
$(CC_FOR_BUILD) $(SECP_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $^ -o $@
191141

192142
$(BGL_TX_BIN): FORCE
193143
$(MAKE) -C src $(@F)

README.md

+16-4
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,19 @@
5252

5353
![Product Name Screen Shot](https://github.com/BitgesellOfficial/bitgesell/blob/master/share/pixmaps/BGL64.png)
5454

55-
BGL is an experimental digital currency that enables instant payments to anyone, anywhere in the world. BGL uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. BGL Core is the name of open source software which enables the use of this currency.
56-
57-
<b>Bitgesell is a fork of bitcoin with the following changes:</b> <br>
55+
Features:
56+
* secp256k1 ECDSA signing/verification and key generation.
57+
* Additive and multiplicative tweaking of secret/public keys.
58+
* Serialization/parsing of secret keys, public keys, signatures.
59+
* Constant time, constant memory access signing and public key generation.
60+
* Derandomized ECDSA (via RFC6979 or with a caller provided function.)
61+
* Very efficient implementation.
62+
* Suitable for embedded systems.
63+
* Optional module for public key recovery.
64+
* Optional module for ECDH key exchange.
65+
* Optional module for Schnorr signatures according to [BIP-340](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) (experimental).
66+
67+
<b>Bitgesell is a fork of BGL with the following changes:</b> <br>
5868
* Block Reward [Burn rate is 90% of tx fees]
5969
```sh
6070
nFees*0.1 + GetBlockSubsidy()
@@ -67,7 +77,7 @@ BGL is an experimental digital currency that enables instant payments to anyone,
6777
```sh
6878
Eliminates problems with legacy type of transactions
6979
```
70-
* Halving Interval [Halving cycle of bitgetsell is 1yr while that of bitcoin is 4yr]
80+
* Halving Interval [Halving cycle of bitgetsell is 1yr while that of BGL is 4yr]
7181
```sh
7282
210000 blocks/4
7383
```
@@ -127,6 +137,8 @@ not straightforward.
127137
See the [open issues](https://github.com/BitgesellOfficial/bitgesell/issues) for a list of proposed features (and known issues).
128138

129139

140+
$ mkdir -p coverage
141+
$ gcovr --exclude 'src/bench*' --html --html-details -o coverage/coverage.html
130142

131143
<!-- CONTRIBUTING -->
132144
## Contributing

0 commit comments

Comments
 (0)