openssl: Support SHA-3 based RSA_EMSA_PKCS1 signatures

This commit is contained in:
Andreas Steffen 2021-06-03 12:24:19 +02:00
parent de5ca4021a
commit 5688e631e3
3 changed files with 30 additions and 0 deletions

View File

@ -694,6 +694,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
#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_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
#ifndef OPENSSL_NO_MD5
PLUGIN_PROVIDE(PRIVKEY_SIGN, SIGN_RSA_EMSA_PKCS1_MD5),
PLUGIN_PROVIDE(PUBKEY_VERIFY, SIGN_RSA_EMSA_PKCS1_MD5),

View File

@ -279,6 +279,16 @@ METHOD(private_key_t, sign, bool,
return build_emsa_pkcs1_signature(this, NID_sha384, data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA2_512:
return build_emsa_pkcs1_signature(this, NID_sha512, data, signature);
#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_SHA3) && !defined(OPENSSL_IS_BORINGSSL)
case SIGN_RSA_EMSA_PKCS1_SHA3_224:
return build_emsa_pkcs1_signature(this, NID_sha3_224, data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_256:
return build_emsa_pkcs1_signature(this, NID_sha3_256, data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_384:
return build_emsa_pkcs1_signature(this, NID_sha3_384, data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_512:
return build_emsa_pkcs1_signature(this, NID_sha3_512, data, signature);
#endif
case SIGN_RSA_EMSA_PKCS1_SHA1:
return build_emsa_pkcs1_signature(this, NID_sha1, data, signature);
case SIGN_RSA_EMSA_PKCS1_MD5:

View File

@ -280,6 +280,16 @@ METHOD(public_key_t, verify, bool,
return verify_emsa_pkcs1_signature(this, NID_sha384, data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA2_512:
return verify_emsa_pkcs1_signature(this, NID_sha512, data, signature);
#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_SHA3) && !defined(OPENSSL_IS_BORINGSSL)
case SIGN_RSA_EMSA_PKCS1_SHA3_224:
return verify_emsa_pkcs1_signature(this, NID_sha3_224, data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_256:
return verify_emsa_pkcs1_signature(this, NID_sha3_256, data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_384:
return verify_emsa_pkcs1_signature(this, NID_sha3_384, data, signature);
case SIGN_RSA_EMSA_PKCS1_SHA3_512:
return verify_emsa_pkcs1_signature(this, NID_sha3_512, data, signature);
#endif
case SIGN_RSA_EMSA_PKCS1_SHA1:
return verify_emsa_pkcs1_signature(this, NID_sha1, data, signature);
case SIGN_RSA_EMSA_PKCS1_MD5: