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? Nov 30, 2016 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 Nov 30, 2016 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 Nov 30, 2016 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. Dec 2, 2016 at 22:37


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.