From 58a0a26dff3b7a824894ab519235e18ab45a2b6b Mon Sep 17 00:00:00 2001 From: Nghi Ho Date: Fri, 7 Mar 2025 16:22:58 -0800 Subject: [PATCH] Add missing algorithms to benchmark (#2056) ### Issues: Resolves i/CryptoAlg-2808 ### Description of changes: Add the following missing algorithms to `speed.cc` so we can view the benchmark on our dashboards: - Ciphers: `rc4` - Digests: `md5-sha1`,`ripemd-160`, `shake128`, `shake256` ### Call-outs: N/A ### Testing: CI. Verified that `bssl` runs successfully locally. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and the ISC license. --- tool/speed.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tool/speed.cc b/tool/speed.cc index c95a967dd4..329da5ea13 100644 --- a/tool/speed.cc +++ b/tool/speed.cc @@ -1128,7 +1128,12 @@ static bool SpeedHashChunk(const EVP_MD *md, std::string name, return EVP_DigestInit_ex(ctx.get(), md, NULL /* ENGINE */) && EVP_DigestUpdate(ctx.get(), input.get(), chunk_len) && +#if (!defined(OPENSSL_1_0_BENCHMARK) && !defined(BORINGSSL_BENCHMARK) && !defined(OPENSSL_IS_AWSLC)) || AWSLC_API_VERSION >= 22 + (EVP_MD_flags(md) & EVP_MD_FLAG_XOF) ? + EVP_DigestFinalXOF(ctx.get(), digest, 32) : EVP_DigestFinal_ex(ctx.get(), digest, &md_len); +#else EVP_DigestFinal_ex(ctx.get(), digest, &md_len); +#endif })) { fprintf(stderr, "EVP_DigestInit_ex failed.\n"); ERR_print_errors_fp(stderr); @@ -2871,8 +2876,12 @@ bool Speed(const std::vector &args) { !SpeedEvpCipherGeneric(EVP_aes_192_ctr(), "EVP-AES-192-CTR", kTLSADLen, selected) || !SpeedEvpCipherGeneric(EVP_aes_256_ctr(), "EVP-AES-256-CTR", kTLSADLen, selected) || !SpeedAES256XTS("AES-256-XTS", selected) || - // OpenSSL 3.0 doesn't allow MD4 calls #if !defined(OPENSSL_3_0_BENCHMARK) + // OpenSSL 3.0 deprecated RC4 + !SpeedEvpCipherGeneric(EVP_rc4(), "EVP-RC4", kTLSADLen, selected) || +#endif +#if !defined(OPENSSL_3_0_BENCHMARK) + // OpenSSL 3.0 doesn't allow MD4 calls !SpeedHash(EVP_md4(), "MD4", selected) || #endif !SpeedHash(EVP_md5(), "MD5", selected) || @@ -2887,6 +2896,18 @@ bool Speed(const std::vector &args) { !SpeedHash(EVP_sha3_256(), "SHA3-256", selected) || !SpeedHash(EVP_sha3_384(), "SHA3-384", selected) || !SpeedHash(EVP_sha3_512(), "SHA3-512", selected) || +#endif +#if (!defined(OPENSSL_1_0_BENCHMARK) && !defined(BORINGSSL_BENCHMARK) && !defined(OPENSSL_IS_AWSLC)) || AWSLC_API_VERSION >= 22 + // OpenSSL 1.0 and BoringSSL don't support SHAKE + !SpeedHash(EVP_shake128(), "SHAKE-128", selected) || + !SpeedHash(EVP_shake256(), "SHAKE-256", selected) || +#endif +#if (!defined(BORINGSSL_BENCHMARK) && !defined(OPENSSL_IS_AWSLC)) || AWSLC_API_VERSION >= 20 + // BoringSSL doesn't support ripemd160 + !SpeedHash(EVP_ripemd160(), "RIPEMD-160", selected) || +#endif +#if !defined(OPENSSL_1_0_BENCHMARK) + !SpeedHash(EVP_md5_sha1(), "MD5-SHA-1", selected) || #endif !SpeedHmac(EVP_md5(), "HMAC-MD5", selected) || !SpeedHmac(EVP_sha1(), "HMAC-SHA1", selected) ||