openssl: Add support for SHA-3

This commit is contained in:
Tobias Brunner
2020-03-10 14:12:34 +01:00
parent bbedad78c3
commit 112de13f1f
2 changed files with 15 additions and 2 deletions
@@ -93,14 +93,19 @@ METHOD(hasher_t, destroy, void,
*/ */
const EVP_MD *openssl_get_md(hash_algorithm_t hash) const EVP_MD *openssl_get_md(hash_algorithm_t hash)
{ {
const EVP_MD *md;
char *name; char *name;
name = enum_to_name(hash_algorithm_short_names, hash); name = strdupnull(enum_to_name(hash_algorithm_short_names, hash));
if (!name) if (!name)
{ {
return NULL; return NULL;
} }
return EVP_get_digestbyname(name); /* for SHA3, we use underscores, while OpenSSL uses dashes */
translate(name, "_", "-");
md = EVP_get_digestbyname(name);
free(name);
return md;
} }
/* /*
@@ -546,6 +546,14 @@ METHOD(plugin_t, get_features, int,
PLUGIN_PROVIDE(HASHER, HASH_SHA384), PLUGIN_PROVIDE(HASHER, HASH_SHA384),
PLUGIN_PROVIDE(HASHER, HASH_SHA512), PLUGIN_PROVIDE(HASHER, HASH_SHA512),
#endif #endif
/* SHA3 was added with OpenSSL 1.1.1, it doesn't seem to be possible to
* disable it, defining the checked var prevents registration, though */
#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_SHA3)
PLUGIN_PROVIDE(HASHER, HASH_SHA3_224),
PLUGIN_PROVIDE(HASHER, HASH_SHA3_256),
PLUGIN_PROVIDE(HASHER, HASH_SHA3_384),
PLUGIN_PROVIDE(HASHER, HASH_SHA3_512),
#endif
#ifndef OPENSSL_NO_SHA1 #ifndef OPENSSL_NO_SHA1
/* keyed sha1 hasher (aka prf) */ /* keyed sha1 hasher (aka prf) */
PLUGIN_REGISTER(PRF, openssl_sha1_prf_create), PLUGIN_REGISTER(PRF, openssl_sha1_prf_create),