]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-dcrypt: Require ECDSA signature size is even
authorAki Tuomi <aki.tuomi@open-xchange.com>
Tue, 14 Apr 2020 12:23:20 +0000 (15:23 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Tue, 14 Apr 2020 12:23:20 +0000 (15:23 +0300)
Valid ECDSA signature has two parts of equal sizes

src/lib-dcrypt/dcrypt-openssl.c

index b65630ff80df16a50212efeba76c40924217caf0..981392da30c1e79e6a5dd56f9d1623e2e9af0de0 100644 (file)
@@ -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;