diff options
author | Gilles Chehade <gilles@poolp.org> | 2020-12-02 00:13:20 +0100 |
---|---|---|
committer | Gilles Chehade <gilles@poolp.org> | 2020-12-02 00:13:20 +0100 |
commit | 19c7f9e791894ffc586095f7f8ef25bd939d6585 (patch) | |
tree | c1648808aa9ef7d1b4d0e9cd4210ce8517302cde | |
parent | Merge branch 'master' into openssl-ecdsa (diff) | |
parent | whitespces (diff) | |
download | OpenSMTPD-19c7f9e791894ffc586095f7f8ef25bd939d6585.tar.xz OpenSMTPD-19c7f9e791894ffc586095f7f8ef25bd939d6585.zip |
Merge branch 'openssl-ecdsa' of ssh://github.com/OpenSMTPD/OpenSMTPD into openssl-ecdsa
-rw-r--r-- | usr.sbin/smtpd/ca.c | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/usr.sbin/smtpd/ca.c b/usr.sbin/smtpd/ca.c index a107eb31..a8862cdc 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) { @@ -656,9 +678,6 @@ ecdsae_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig, NULL, NULL); return (sign(type, dgst, dlen, sig, siglen, kinv, r, eckey)); - - - return 0; } @@ -867,6 +886,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); |