| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*
- * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
- *
- * Licensed under the Apache License 2.0 (the "License"). You may not use
- * this file except in compliance with the License. You can obtain a copy
- * in the file LICENSE in the source distribution or at
- * https://www.openssl.org/source/license.html
- */
- #include <stddef.h>
- #include <string.h>
- #include <openssl/evp.h>
- #include "ml_dsa_local.h"
- /* See FIPS 204 Section 4 Table 1 & Table 2 */
- #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
- /* See FIPS 204 Section 4 Table 1 & Table 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
- /* See FIPS 204 Section 4 Table 1 & Table 2 */
- #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},
- };
- /**
- * @brief A getter to convert an algorithm name into a ML_DSA_PARAMS object
- */
- 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;
- }
|