#include <stddef.h>
#include <string.h>
#include <openssl/evp.h>
#include "ml_dsa_local.h"
#define ML_DSA_44_TAU 39
#define ML_DSA_44_LAMBDA 128
#define ML_DSA_44_K 4
#define ML_DSA_44_L 4
#define ML_DSA_44_ETA ML_DSA_ETA_2
#define ML_DSA_44_BETA 78
#define ML_DSA_44_OMEGA 80
#define ML_DSA_44_SECURITY_CATEGORY 2
#define ML_DSA_65_TAU 49
#define ML_DSA_65_LAMBDA 192
#define ML_DSA_65_K 6
#define ML_DSA_65_L 5
#define ML_DSA_65_ETA ML_DSA_ETA_4
#define ML_DSA_65_BETA 196
#define ML_DSA_65_OMEGA 55
#define ML_DSA_65_SECURITY_CATEGORY 3
#define ML_DSA_87_TAU 60
#define ML_DSA_87_LAMBDA 256
#define ML_DSA_87_K 8
#define ML_DSA_87_L 7
#define ML_DSA_87_ETA ML_DSA_ETA_2
#define ML_DSA_87_BETA 120
#define ML_DSA_87_OMEGA 75
#define ML_DSA_87_SECURITY_CATEGORY 5
static const ML_DSA_PARAMS ml_dsa_params[] = {
{ "ML-DSA-44",
EVP_PKEY_ML_DSA_44,
ML_DSA_44_TAU,
ML_DSA_44_LAMBDA,
ML_DSA_GAMMA1_TWO_POWER_17,
ML_DSA_GAMMA2_Q_MINUS1_DIV88,
ML_DSA_44_K,
ML_DSA_44_L,
ML_DSA_44_ETA,
ML_DSA_44_BETA,
ML_DSA_44_OMEGA,
ML_DSA_44_SECURITY_CATEGORY,
ML_DSA_44_PRIV_LEN,
ML_DSA_44_PUB_LEN,
ML_DSA_44_SIG_LEN },
{ "ML-DSA-65",
EVP_PKEY_ML_DSA_65,
ML_DSA_65_TAU,
ML_DSA_65_LAMBDA,
ML_DSA_GAMMA1_TWO_POWER_19,
ML_DSA_GAMMA2_Q_MINUS1_DIV32,
ML_DSA_65_K,
ML_DSA_65_L,
ML_DSA_65_ETA,
ML_DSA_65_BETA,
ML_DSA_65_OMEGA,
ML_DSA_65_SECURITY_CATEGORY,
ML_DSA_65_PRIV_LEN,
ML_DSA_65_PUB_LEN,
ML_DSA_65_SIG_LEN },
{ "ML-DSA-87",
EVP_PKEY_ML_DSA_87,
ML_DSA_87_TAU,
ML_DSA_87_LAMBDA,
ML_DSA_GAMMA1_TWO_POWER_19,
ML_DSA_GAMMA2_Q_MINUS1_DIV32,
ML_DSA_87_K,
ML_DSA_87_L,
ML_DSA_87_ETA,
ML_DSA_87_BETA,
ML_DSA_87_OMEGA,
ML_DSA_87_SECURITY_CATEGORY,
ML_DSA_87_PRIV_LEN,
ML_DSA_87_PUB_LEN,
ML_DSA_87_SIG_LEN },
{ NULL },
};
const ML_DSA_PARAMS *ossl_ml_dsa_params_get(int evp_type)
{
const ML_DSA_PARAMS *p;
for (p = ml_dsa_params; p->alg != NULL; ++p) {
if (p->evp_type == evp_type)
return p;
}
return NULL;
}