apps/speed.c: support algorithm name aliases in kem and sig lookup

Fixes #29355

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/29571)
This commit is contained in:
Heath Dutton🕴️
2026-01-07 14:37:55 -05:00
committed by Norbert Pocs
parent b45fb748bd
commit d2e4f588b6

View File

@@ -1895,6 +1895,8 @@ static void collect_kem(EVP_KEM *kem, void *stack)
static int kem_locate(const char *algo, unsigned int *idx)
{
unsigned int i;
EVP_KEM *kem;
const char *canonical_name;
for (i = 0; i < kems_algs_len; i++) {
if (strcmp(kems_algname[i], algo) == 0) {
@@ -1902,6 +1904,18 @@ static int kem_locate(const char *algo, unsigned int *idx)
return 1;
}
}
kem = EVP_KEM_fetch(app_get0_libctx(), algo, app_get0_propq());
if (kem != NULL) {
canonical_name = EVP_KEM_get0_name(kem);
for (i = 0; i < kems_algs_len; i++) {
if (strcmp(kems_algname[i], canonical_name) == 0) {
*idx = i;
EVP_KEM_free(kem);
return 1;
}
}
EVP_KEM_free(kem);
}
return 0;
}
@@ -1927,6 +1941,8 @@ static void collect_signatures(EVP_SIGNATURE *sig, void *stack)
static int sig_locate(const char *algo, unsigned int *idx)
{
unsigned int i;
EVP_SIGNATURE *sig;
const char *canonical_name;
for (i = 0; i < sigs_algs_len; i++) {
if (strcmp(sigs_algname[i], algo) == 0) {
@@ -1934,6 +1950,18 @@ static int sig_locate(const char *algo, unsigned int *idx)
return 1;
}
}
sig = EVP_SIGNATURE_fetch(app_get0_libctx(), algo, app_get0_propq());
if (sig != NULL) {
canonical_name = EVP_SIGNATURE_get0_name(sig);
for (i = 0; i < sigs_algs_len; i++) {
if (strcmp(sigs_algname[i], canonical_name) == 0) {
*idx = i;
EVP_SIGNATURE_free(sig);
return 1;
}
}
EVP_SIGNATURE_free(sig);
}
return 0;
}