botan: SHA-3 support

This commit is contained in:
Andreas Steffen
2018-10-30 16:06:15 +01:00
parent ae271810dc
commit 9be6dee6a4
19 changed files with 373 additions and 0 deletions
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2018 Tobias Brunner
* Copyright (C) 2018 Andreas Steffen
* HSR Hochschule fuer Technik Rapperswil
*
* Copyright (C) 2018 René Korthaus
@@ -164,6 +165,13 @@ METHOD(plugin_t, get_features, int,
PLUGIN_PROVIDE(HASHER, HASH_SHA384),
PLUGIN_PROVIDE(HASHER, HASH_SHA512),
#endif
#ifdef BOTAN_HAS_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
/* prfs */
#ifdef BOTAN_HAS_HMAC
PLUGIN_REGISTER(PRF, botan_hmac_prf_create),
@@ -254,6 +262,16 @@ METHOD(plugin_t, get_features, int,
PLUGIN_PROVIDE(PUBKEY_VERIFY, SIGN_RSA_EMSA_PKCS1_SHA2_384),
PLUGIN_PROVIDE(PUBKEY_VERIFY, SIGN_RSA_EMSA_PKCS1_SHA2_512),
#endif
#ifdef BOTAN_HAS_SHA3
PLUGIN_PROVIDE(PRIVKEY_SIGN, SIGN_RSA_EMSA_PKCS1_SHA3_224),
PLUGIN_PROVIDE(PRIVKEY_SIGN, SIGN_RSA_EMSA_PKCS1_SHA3_256),
PLUGIN_PROVIDE(PRIVKEY_SIGN, SIGN_RSA_EMSA_PKCS1_SHA3_384),
PLUGIN_PROVIDE(PRIVKEY_SIGN, SIGN_RSA_EMSA_PKCS1_SHA3_512),
PLUGIN_PROVIDE(PUBKEY_VERIFY, SIGN_RSA_EMSA_PKCS1_SHA3_224),
PLUGIN_PROVIDE(PUBKEY_VERIFY, SIGN_RSA_EMSA_PKCS1_SHA3_256),
PLUGIN_PROVIDE(PUBKEY_VERIFY, SIGN_RSA_EMSA_PKCS1_SHA3_384),
PLUGIN_PROVIDE(PUBKEY_VERIFY, SIGN_RSA_EMSA_PKCS1_SHA3_512),
#endif
#endif
#ifdef BOTAN_HAS_EMSA_PSSR
PLUGIN_PROVIDE(PRIVKEY_SIGN, SIGN_RSA_EMSA_PSS),
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2018 Tobias Brunner
* Copyright (C) 2018 Andreas Steffen
* HSR Hochschule fuer Technik Rapperswil
*
* Copyright (C) 2018 René Korthaus
@@ -135,6 +136,18 @@ METHOD(private_key_t, sign, bool,
case SIGN_RSA_EMSA_PKCS1_SHA2_512:
return botan_get_signature(this->key, "EMSA_PKCS1(SHA-512)", data,
signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_224:
return botan_get_signature(this->key, "EMSA_PKCS1(SHA-3(224))", data,
signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_256:
return botan_get_signature(this->key, "EMSA_PKCS1(SHA-3(256))", data,
signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_384:
return botan_get_signature(this->key, "EMSA_PKCS1(SHA-3(384))", data,
signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_512:
return botan_get_signature(this->key, "EMSA_PKCS1(SHA-3(512))", data,
signature);
case SIGN_RSA_EMSA_PSS:
return build_emsa_pss_signature(this, params, data, signature);
default:
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2018 Tobias Brunner
* Copyright (C) 2018 Andreas Steffen
* HSR Hochschule fuer Technik Rapperswil
*
* Copyright (C) 2018 René Korthaus
@@ -115,6 +116,18 @@ METHOD(public_key_t, verify, bool,
case SIGN_RSA_EMSA_PKCS1_SHA2_512:
return botan_verify_signature(this->key, "EMSA_PKCS1(SHA-512)",
data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_224:
return botan_verify_signature(this->key, "EMSA_PKCS1(SHA-3(224)",
data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_256:
return botan_verify_signature(this->key, "EMSA_PKCS1(SHA-3(256))",
data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_384:
return botan_verify_signature(this->key, "EMSA_PKCS1(SHA-3(384))",
data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_512:
return botan_verify_signature(this->key, "EMSA_PKCS1(SHA-3(512))",
data, signature);
case SIGN_RSA_EMSA_PSS:
return verify_emsa_pss_signature(this, params, data, signature);
default:
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2018 Tobias Brunner
* Copyright (C) 2018 Andreas Steffen
* HSR Hochschule fuer Technik Rapperswil
*
* Copyright (C) 2018 René Korthaus
@@ -67,6 +68,14 @@ const char *botan_get_hash(hash_algorithm_t hash)
return "SHA-384";
case HASH_SHA512:
return "SHA-512";
case HASH_SHA3_224:
return "SHA-3(224)";
case HASH_SHA3_256:
return "SHA-3(256)";
case HASH_SHA3_384:
return "SHA-3(384)";
case HASH_SHA3_512:
return "SHA-3(512)";
default:
return NULL;
}