2
I was hoping that someone would be able to suggest something about this (the same process works perfectly fine on my Debian Jessy machine)
$ uname -a
Linux front 4.8.0-1-amd64 #1 SMP Debian 4.8.7-1 (2016-11-13) x86_64 GNU/Linux
$ git config --get remote.origin.url
https://github.com/bitcoin-core/secp256k1
$ git pull
Already up-to-date.
$ ./autogen.sh
...
$ ./configure
...
$ make
gcc -I. -g -O2 -Wall -Wextra -Wno-unused-function -c src/gen_context.c -o gen_context.o
gcc gen_context.o -o gen_context
./gen_context
CC src/libsecp256k1_la-secp256k1.lo
CCLD libsecp256k1.la
/usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
CC src/tests-tests.o
src/tests.c: In function ‘test_ecdsa_der_parse’:
src/tests.c:3702:52: error: dereferencing pointer to incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
valid_openssl = !BN_is_negative(sig_openssl->r) &&
!BN_is_negative(sig_openssl->s) && BN_num_bits(sig_openssl->r) > 0 &&
BN_num_bits(sig_openssl->r) <= 256 && BN_num_bits(sig_openssl->s) > 0 &&
BN_num_bits(sig_openssl->s) <= 256;
^~
Makefile:1050: recipe for target 'src/tests-tests.o' failed
make: *** [src/tests-tests.o] Error 1
EDIT: replacing ./configure by ./configure --enable-tests=no leads to a successful build. The command make check is also successful.
EDIT2: As indicated by Andrew, the answer is to use ./configure --enable-openssl-tests=no
EDIT3: This issue has been resolved on master branch, as far as I can tell
1Looks like OpenSSL has changed something out from under us ... for now you can compile with
--enable-openssl-tests=noto still get the tests, OpenSSL is only used in the test jig and only in a small way. Can you open an issue on the libsecp github? – Andrew Poelstra – 2016-11-30T19:00:57.747Hi Andrew, thank you. I can confirm that
--enable-openssl-tests=nosolves the issue while giving access to tests. Yes I will open an issue on libsecp github – Sven Williamson – 2016-11-30T20:17:11.6801Andrew I am guessing you don't care, but if you were to write a quick answer, I would obviously validate it since your comment closes this thread – Sven Williamson – 2016-11-30T20:47:07.727
2@AndrewPoelstra: yes, OpenSSL 1.1.0 makes some structs 'opaque' including ECDSA_SIG. You are now supposed to use
ECDSA_SIG_{set,get}0to access the fields. – dave_thompson_085 – 2016-12-02T22:37:15.827