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

$ 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
  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

  • 1
    Looks like OpenSSL has changed something out from under us ... for now you can compile with --enable-openssl-tests=no to 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 Nov 30 '16 at 19:00
  • Hi Andrew, thank you. I can confirm that --enable-openssl-tests=no solves the issue while giving access to tests. Yes I will open an issue on libsecp github – Sven Williamson Nov 30 '16 at 20:17
  • 1
    Andrew 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 Nov 30 '16 at 20:47
  • 2
    @AndrewPoelstra: yes, OpenSSL 1.1.0 makes some structs 'opaque' including ECDSA_SIG. You are now supposed to use ECDSA_SIG_{set,get}0 to access the fields. – dave_thompson_085 Dec 2 '16 at 22:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.