From: Simo Sorce Date: Fri, 11 Apr 2025 17:38:20 +0000 (-0400) Subject: Make public ml_dsa_mu_.. helpers X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5c16db8cdcd1c1519eb533538fcd6180b40f0fd2;p=thirdparty%2Fopenssl.git Make public ml_dsa_mu_.. helpers Signed-off-by: Simo Sorce Reviewed-by: Viktor Dukhovni Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/27342) --- diff --git a/crypto/ml_dsa/ml_dsa_sign.c b/crypto/ml_dsa/ml_dsa_sign.c index bbeb95e2a35..cb375f698c3 100644 --- a/crypto/ml_dsa/ml_dsa_sign.c +++ b/crypto/ml_dsa/ml_dsa_sign.c @@ -66,8 +66,8 @@ static void signature_init(ML_DSA_SIG *sig, * @returns an EVP_MD_CTX if the operation is successful, NULL otherwise. */ -static EVP_MD_CTX *ml_dsa_mu_init(const ML_DSA_KEY *key, int encode, - const uint8_t *ctx, size_t ctx_len) +EVP_MD_CTX *ossl_ml_dsa_mu_init(const ML_DSA_KEY *key, int encode, + const uint8_t *ctx, size_t ctx_len) { EVP_MD_CTX *md_ctx; uint8_t itb[2]; @@ -116,8 +116,7 @@ err: * @param msg_len: The length of the msg buffer to process * @returns 1 on success, 0 on error */ -static int ml_dsa_mu_update(EVP_MD_CTX *md_ctx, - const uint8_t *msg, size_t msg_len) +int ossl_ml_dsa_mu_update(EVP_MD_CTX *md_ctx, const uint8_t *msg, size_t msg_len) { return EVP_DigestUpdate(md_ctx, msg, msg_len); } @@ -130,7 +129,7 @@ static int ml_dsa_mu_update(EVP_MD_CTX *md_ctx, * @param mu_len: The size of the output buffer * @returns 1 on success, 0 on error */ -static int ml_dsa_mu_finalize(EVP_MD_CTX *md_ctx, uint8_t *mu, size_t mu_len) +int ossl_ml_dsa_mu_finalize(EVP_MD_CTX *md_ctx, uint8_t *mu, size_t mu_len) { if (!ossl_assert(mu_len == ML_DSA_MU_BYTES)) { ERR_raise(ERR_LIB_PROV, PROV_R_BAD_LENGTH); @@ -445,14 +444,14 @@ int ossl_ml_dsa_sign(const ML_DSA_KEY *priv, int msg_is_mu, mu_ptr = msg; mu_len = msg_len; } else { - md_ctx = ml_dsa_mu_init(priv, encode, context, context_len); + md_ctx = ossl_ml_dsa_mu_init(priv, encode, context, context_len); if (md_ctx == NULL) return 0; - if (!ml_dsa_mu_update(md_ctx, msg, msg_len)) + if (!ossl_ml_dsa_mu_update(md_ctx, msg, msg_len)) goto err; - if (!ml_dsa_mu_finalize(md_ctx, mu, mu_len)) + if (!ossl_ml_dsa_mu_finalize(md_ctx, mu, mu_len)) goto err; } @@ -485,14 +484,14 @@ int ossl_ml_dsa_verify(const ML_DSA_KEY *pub, int msg_is_mu, mu_ptr = msg; mu_len = msg_len; } else { - md_ctx = ml_dsa_mu_init(pub, encode, context, context_len); + md_ctx = ossl_ml_dsa_mu_init(pub, encode, context, context_len); if (md_ctx == NULL) return 0; - if (!ml_dsa_mu_update(md_ctx, msg, msg_len)) + if (!ossl_ml_dsa_mu_update(md_ctx, msg, msg_len)) goto err; - if (!ml_dsa_mu_finalize(md_ctx, mu, mu_len)) + if (!ossl_ml_dsa_mu_finalize(md_ctx, mu, mu_len)) goto err; } diff --git a/include/crypto/ml_dsa.h b/include/crypto/ml_dsa.h index 0df86dfb8c8..e8054c61027 100644 --- a/include/crypto/ml_dsa.h +++ b/include/crypto/ml_dsa.h @@ -106,6 +106,11 @@ __owur int ossl_ml_dsa_key_public_from_private(ML_DSA_KEY *key); __owur int ossl_ml_dsa_pk_decode(ML_DSA_KEY *key, const uint8_t *in, size_t in_len); __owur int ossl_ml_dsa_sk_decode(ML_DSA_KEY *key, const uint8_t *in, size_t in_len); +EVP_MD_CTX *ossl_ml_dsa_mu_init(const ML_DSA_KEY *key, int encode, + const uint8_t *ctx, size_t ctx_len); +__owur int ossl_ml_dsa_mu_update(EVP_MD_CTX *md_ctx, const uint8_t *msg, size_t msg_len); +__owur int ossl_ml_dsa_mu_finalize(EVP_MD_CTX *md_ctx, uint8_t *mu, size_t mu_len); + __owur int ossl_ml_dsa_sign(const ML_DSA_KEY *priv, int msg_is_mu, const uint8_t *msg, size_t msg_len, const uint8_t *context, size_t context_len,