From 4b3ecbd3c14cabdb728e4d813c70e9fc6f29c37f Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Tue, 14 Apr 2020 15:23:20 +0300 Subject: [PATCH] lib-dcrypt: Require ECDSA signature size is even Valid ECDSA signature has two parts of equal sizes --- src/lib-dcrypt/dcrypt-openssl.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib-dcrypt/dcrypt-openssl.c b/src/lib-dcrypt/dcrypt-openssl.c index b65630ff80..981392da30 100644 --- a/src/lib-dcrypt/dcrypt-openssl.c +++ b/src/lib-dcrypt/dcrypt-openssl.c @@ -3314,6 +3314,12 @@ dcrypt_openssl_verify_ecdsa(struct dcrypt_public_key *key, const char *algorithm const unsigned char *signature, size_t signature_len, bool *valid_r, const char **error_r) { + if ((signature_len % 2) != 0) { + if (error_r != NULL) + *error_r = "Truncated signature"; + return FALSE; + } + EVP_PKEY *pkey = key->key; EC_KEY *ec_key = EVP_PKEY_get0_EC_KEY(pkey); int ec; -- 2.47.3