aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGilles CHEHADE <gchehade@veepee.com>2020-12-01 18:23:01 +0100
committerGilles CHEHADE <gchehade@veepee.com>2020-12-01 18:23:01 +0100
commit7e7f97f26ee419f5f074e09cea2761470db93d46 (patch)
treeea6a2e88219df3cd7f4cb8efbd5a93db4795aed4
parentadd missing method in engine (diff)
downloadOpenSMTPD-7e7f97f26ee419f5f074e09cea2761470db93d46.tar.xz
OpenSMTPD-7e7f97f26ee419f5f074e09cea2761470db93d46.zip
missing operations for ECDSA
-rw-r--r--usr.sbin/smtpd/ca.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/usr.sbin/smtpd/ca.c b/usr.sbin/smtpd/ca.c
index a107eb31..56c5be2a 100644
--- a/usr.sbin/smtpd/ca.c
+++ b/usr.sbin/smtpd/ca.c
@@ -641,6 +641,28 @@ ecdsae_do_verify(const unsigned char *dgst, int dgst_len,
}
#else
int
+ecdsae_keygen(EC_KEY *eckey)
+{
+ int (*keygen)(EC_KEY *key);
+ EC_KEY_METHOD_get_keygen(ecdsa_default,
+ &keygen);
+ return keygen(eckey);
+}
+
+int
+ecdsae_compute_key(unsigned char **psec, size_t *pseclen,
+ const EC_POINT *pub_key, const EC_KEY *ecdh)
+{
+ int (*ckey)(unsigned char **psec,
+ size_t *pseclen,
+ const EC_POINT *pub_key,
+ const EC_KEY *ecdh);
+ EC_KEY_METHOD_get_compute_key(ecdsa_default,
+ &ckey);
+ return ckey(psec, pseclen, pub_key, ecdh);
+}
+
+int
ecdsae_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig,
unsigned int *siglen, const BIGNUM *kinv, const BIGNUM *r, EC_KEY *eckey)
{
@@ -867,6 +889,8 @@ ecdsa_engine_init(void)
goto fail;
}
+ EC_KEY_METHOD_set_keygen(ecdsae_method, ecdsae_keygen);
+ EC_KEY_METHOD_set_compute_key(ecdsae_method, ecdsae_compute_key);
EC_KEY_METHOD_set_sign(ecdsae_method, ecdsae_sign, ecdsae_sign_setup,
ecdsae_do_sign);
EC_KEY_METHOD_set_verify(ecdsae_method, ecdsae_verify, ecdsae_do_verify);