X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fevp%2Fevp_lib.c;h=d548ad1d31b17cdf0bfa9f4e745e72ec93f1db9f;hp=c5509a9fb92fbc1fc3bf375a26195aaa49fae0c0;hb=813cfd9c0a55458397bf017f661bf9d97cb29cc2;hpb=976c58302b13d085edb3ab822f5eac4b2f1bff95 diff --git a/crypto/evp/evp_lib.c b/crypto/evp/evp_lib.c index c5509a9fb9..d548ad1d31 100644 --- a/crypto/evp/evp_lib.c +++ b/crypto/evp/evp_lib.c @@ -62,6 +62,7 @@ #include #ifdef OPENSSL_FIPS #include +#include "evp_locl.h" #endif int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type) @@ -298,11 +299,27 @@ int EVP_MD_size(const EVP_MD *md) return md->md_size; } +#ifdef OPENSSL_FIPS + +const EVP_MD *evp_get_fips_md(const EVP_MD *md) + { + int nid = EVP_MD_type(md); + if (nid == NID_dsa) + return FIPS_evp_dss1(); + else if (nid == NID_dsaWithSHA) + return FIPS_evp_dss(); + else if (nid == NID_ecdsa_with_SHA1) + return FIPS_evp_ecdsa(); + else + return FIPS_get_digestbynid(nid); + } +#endif + unsigned long EVP_MD_flags(const EVP_MD *md) { #ifdef OPENSSL_FIPS const EVP_MD *fmd; - fmd = FIPS_get_digestbynid(EVP_MD_type(md)); + fmd = evp_get_fips_md(md); if (fmd && fmd->flags & EVP_MD_FLAG_FIPS) return md->flags | EVP_MD_FLAG_FIPS; #endif