aboutsummaryrefslogtreecommitdiff
path: root/crypto.c
diff options
context:
space:
mode:
authorOmar Polo <op@omarpolo.com>2023-06-11 11:30:20 +0000
committerOmar Polo <op@omarpolo.com>2023-06-11 11:30:20 +0000
commitec96a0ad3b80dd46a4d68359807c0c09560100cb (patch)
tree1ed76a8a7d9f7fcc90f3060862b5a3e29072aff8 /crypto.c
parent86693a33abd5e8c31530adb3045c9f4664d4d6c9 (diff)
work around different signature for ecdsae_compute_key
Diffstat (limited to 'crypto.c')
-rw-r--r--crypto.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/crypto.c b/crypto.c
index 9b4f060..ecac97b 100644
--- a/crypto.c
+++ b/crypto.c
@@ -562,6 +562,7 @@ ecdsae_keygen(EC_KEY *eckey)
return (keygen(eckey));
}
+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER <= 0x3080100fL
static int
ecdsae_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
EC_KEY *ecdh, void *(*kdf)(const void *, size_t, void *, size_t *))
@@ -573,6 +574,19 @@ ecdsae_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
EC_KEY_METHOD_get_compute_key(ecdsa_default, &ckey);
return (ckey(out, outlen, pub_key, ecdh, kdf));
}
+#else
+static int
+ecdsae_compute_key(unsigned char **psec, size_t *pseclen,
+ const EC_POINT *pub_key, const EC_KEY *ecdh)
+{
+ int (*ckey)(unsigned char **, size_t *, const EC_POINT *,
+ const EC_KEY *);
+
+ log_debug("debug: %s", __func__);
+ EC_KEY_METHOD_get_compute_key(ecdsa_default, &ckey);
+ return (ckey(psec, pseclen, pub_key, ecdh));
+}
+#endif
static int
ecdsae_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig,