Make EVP_CIPHER_is_a() work with legacy cipher implementations too
authorRichard Levitte <levitte@openssl.org>
Wed, 25 Sep 2019 07:15:42 +0000 (09:15 +0200)
committerRichard Levitte <levitte@openssl.org>
Tue, 1 Oct 2019 20:51:00 +0000 (22:51 +0200)
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/10008)

crypto/evp/evp_lib.c

index 5c935075dcc9048693b1d476ef80fba0b6e3f782..3abea33d1969f327d7f70b496117a74c778a984e 100644 (file)
@@ -504,6 +504,13 @@ int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx)
 
 int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name)
 {
+#ifndef FIPS_MODE
+    if (cipher->prov == NULL) {
+        int nid = EVP_CIPHER_nid(cipher);
+
+        return nid == OBJ_sn2nid(name) || nid == OBJ_ln2nid(name);
+    }
+#endif
     return evp_is_a(cipher->prov, cipher->name_id, name);
 }