diff options
author | Gilles CHEHADE <gchehade@veepee.com> | 2020-12-01 18:23:01 +0100 |
---|---|---|
committer | Gilles CHEHADE <gchehade@veepee.com> | 2020-12-01 18:23:01 +0100 |
commit | 7e7f97f26ee419f5f074e09cea2761470db93d46 (patch) | |
tree | ea6a2e88219df3cd7f4cb8efbd5a93db4795aed4 | |
parent | add missing method in engine (diff) | |
download | OpenSMTPD-7e7f97f26ee419f5f074e09cea2761470db93d46.tar.xz OpenSMTPD-7e7f97f26ee419f5f074e09cea2761470db93d46.zip |
missing operations for ECDSA
-rw-r--r-- | usr.sbin/smtpd/ca.c | 24 |
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); |