aboutsummaryrefslogtreecommitdiff
path: root/src/secp256k1/build-aux/m4
diff options
context:
space:
mode:
authorPieter Wuille <pieter@wuille.net>2020-10-27 23:08:48 -0700
committerPieter Wuille <pieter@wuille.net>2020-10-27 23:08:48 -0700
commit5803f5f5f6030e69b46a46f0511b8173bf89de0d (patch)
tree381329c0966970c2ed11ed62bd9e904b9b41722b /src/secp256k1/build-aux/m4
parent55b1ffcd259cc64139dad646a52fab5c597c95c2 (diff)
parent6c0259fc2f8bd34ba83ad10a6a11d6d99e8d1fc7 (diff)
Update secp256k1 subtree to latest master
Diffstat (limited to 'src/secp256k1/build-aux/m4')
-rw-r--r--src/secp256k1/build-aux/m4/bitcoin_secp.m427
1 files changed, 25 insertions, 2 deletions
diff --git a/src/secp256k1/build-aux/m4/bitcoin_secp.m4 b/src/secp256k1/build-aux/m4/bitcoin_secp.m4
index 57595f4499..ece3d655ed 100644
--- a/src/secp256k1/build-aux/m4/bitcoin_secp.m4
+++ b/src/secp256k1/build-aux/m4/bitcoin_secp.m4
@@ -36,16 +36,39 @@ if test x"$has_libcrypto" = x"yes" && test x"$has_openssl_ec" = x; then
CPPFLAGS_TEMP="$CPPFLAGS"
CPPFLAGS="$CRYPTO_CPPFLAGS $CPPFLAGS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <openssl/bn.h>
#include <openssl/ec.h>
#include <openssl/ecdsa.h>
#include <openssl/obj_mac.h>]],[[
- EC_KEY *eckey = EC_KEY_new_by_curve_name(NID_secp256k1);
- ECDSA_sign(0, NULL, 0, NULL, NULL, eckey);
+ # if OPENSSL_VERSION_NUMBER < 0x10100000L
+ void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps) {(void)sig->r; (void)sig->s;}
+ # endif
+
+ unsigned int zero = 0;
+ const unsigned char *zero_ptr = (unsigned char*)&zero;
+ EC_KEY_free(EC_KEY_new_by_curve_name(NID_secp256k1));
+ EC_KEY *eckey = EC_KEY_new();
+ EC_GROUP *group = EC_GROUP_new_by_curve_name(NID_secp256k1);
+ EC_KEY_set_group(eckey, group);
+ ECDSA_sign(0, NULL, 0, NULL, &zero, eckey);
ECDSA_verify(0, NULL, 0, NULL, 0, eckey);
+ o2i_ECPublicKey(&eckey, &zero_ptr, 0);
+ d2i_ECPrivateKey(&eckey, &zero_ptr, 0);
+ EC_KEY_check_key(eckey);
EC_KEY_free(eckey);
+ EC_GROUP_free(group);
ECDSA_SIG *sig_openssl;
sig_openssl = ECDSA_SIG_new();
+ d2i_ECDSA_SIG(&sig_openssl, &zero_ptr, 0);
+ i2d_ECDSA_SIG(sig_openssl, NULL);
+ ECDSA_SIG_get0(sig_openssl, NULL, NULL);
ECDSA_SIG_free(sig_openssl);
+ const BIGNUM *bignum = BN_value_one();
+ BN_is_negative(bignum);
+ BN_num_bits(bignum);
+ if (sizeof(zero) >= BN_num_bytes(bignum)) {
+ BN_bn2bin(bignum, (unsigned char*)&zero);
+ }
]])],[has_openssl_ec=yes],[has_openssl_ec=no])
AC_MSG_RESULT([$has_openssl_ec])
CPPFLAGS="$CPPFLAGS_TEMP"