From: slontis Date: Tue, 12 Nov 2024 23:59:10 +0000 (+1100) Subject: Address style check nits for SLH-DSA X-Git-Tag: openssl-3.5.0-alpha1~186 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db5846a7e094101117543fa5f2d668fb308f508c;p=thirdparty%2Fopenssl.git Address style check nits for SLH-DSA Reviewed-by: Paul Dale Reviewed-by: Viktor Dukhovni Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/25882) --- diff --git a/crypto/slh_dsa/slh_adrs.c b/crypto/slh_dsa/slh_adrs.c index 3292d3928bf..32b9863d2fe 100644 --- a/crypto/slh_dsa/slh_adrs.c +++ b/crypto/slh_dsa/slh_adrs.c @@ -12,15 +12,15 @@ /* See FIPS 205 - Section 4.3 Table 1 Uncompressed Addresses */ #define SLH_ADRS_OFF_LAYER_ADR 0 #define SLH_ADRS_OFF_TREE_ADR 4 -#define SLH_ADRS_OFF_TYPE 16 -#define SLH_ADRS_OFF_KEYPAIR_ADDR 20 -#define SLH_ADRS_OFF_CHAIN_ADDR 24 -#define SLH_ADRS_OFF_HASH_ADDR 28 -#define SLH_ADRS_OFF_TREE_INDEX SLH_ADRS_OFF_HASH_ADDR +#define SLH_ADRS_OFF_TYPE 16 +#define SLH_ADRS_OFF_KEYPAIR_ADDR 20 +#define SLH_ADRS_OFF_CHAIN_ADDR 24 +#define SLH_ADRS_OFF_HASH_ADDR 28 +#define SLH_ADRS_OFF_TREE_INDEX SLH_ADRS_OFF_HASH_ADDR #define SLH_ADRS_SIZE_TYPE 4 /* Number of bytes after type to clear */ -#define SLH_ADRS_SIZE_TYPECLEAR SLH_ADRS_SIZE - (SLH_ADRS_OFF_TYPE + SLH_ADRS_SIZE_TYPE) -#define SLH_ADRS_SIZE_KEYPAIR_ADDR 4 +#define SLH_ADRS_SIZE_TYPECLEAR SLH_ADRS_SIZE - (SLH_ADRS_OFF_TYPE + SLH_ADRS_SIZE_TYPE) +#define SLH_ADRS_SIZE_KEYPAIR_ADDR 4 /* See FIPS 205 - Section 11.2 Table 3 Compressed Addresses */ #define SLH_ADRSC_OFF_LAYER_ADR 0 diff --git a/crypto/slh_dsa/slh_dsa.c b/crypto/slh_dsa/slh_dsa.c index 0fdef850349..c271c21db04 100644 --- a/crypto/slh_dsa/slh_dsa.c +++ b/crypto/slh_dsa/slh_dsa.c @@ -46,9 +46,6 @@ static int slh_sign_internal(SLH_DSA_CTX *ctx, const SLH_DSA_KEY *priv, int ret = 0; const SLH_DSA_PARAMS *params = ctx->params; size_t sig_len_expected = params->sig_len; - SLH_HASH_FUNC_DECLARE(ctx, hashf, hctx); - SLH_ADRS_FUNC_DECLARE(ctx, adrsf); - SLH_ADRS_DECLARE(adrs); uint8_t m_digest[SLH_MAX_M]; const uint8_t *md; /* The first md_len bytes of m_digest */ size_t md_len = MD_LEN(params); /* The size of the digest |md| */ @@ -61,6 +58,10 @@ static int slh_sign_internal(SLH_DSA_CTX *ctx, const SLH_DSA_KEY *priv, uint64_t tree_id; uint32_t leaf_id; + SLH_ADRS_DECLARE(adrs); + SLH_HASH_FUNC_DECLARE(ctx, hashf, hctx); + SLH_ADRS_FUNC_DECLARE(ctx, adrsf); + if (sig_len != NULL) *sig_len = sig_len_expected; diff --git a/crypto/slh_dsa/slh_dsa_local.h b/crypto/slh_dsa/slh_dsa_local.h index 8b4a40941d6..d48952e55bb 100644 --- a/crypto/slh_dsa/slh_dsa_local.h +++ b/crypto/slh_dsa/slh_dsa_local.h @@ -50,8 +50,8 @@ __owur int ossl_slh_wots_pk_gen(SLH_DSA_CTX *ctx, const uint8_t *sk_seed, const uint8_t *pk_seed, SLH_ADRS adrs, uint8_t *pk_out, size_t pk_out_len); __owur int ossl_slh_wots_sign(SLH_DSA_CTX *ctx, const uint8_t *msg, - const uint8_t *sk_seed, const uint8_t *pk_seed, - SLH_ADRS adrs, WPACKET *sig_wpkt); + const uint8_t *sk_seed, const uint8_t *pk_seed, + SLH_ADRS adrs, WPACKET *sig_wpkt); __owur int ossl_slh_wots_pk_from_sig(SLH_DSA_CTX *ctx, PACKET *sig_rpkt, const uint8_t *msg, const uint8_t *pk_seed, SLH_ADRS adrs, diff --git a/crypto/slh_dsa/slh_fors.c b/crypto/slh_dsa/slh_fors.c index e3f8655b1cb..200f0f58165 100644 --- a/crypto/slh_dsa/slh_fors.c +++ b/crypto/slh_dsa/slh_fors.c @@ -79,10 +79,11 @@ static int slh_fors_node(SLH_DSA_CTX *ctx, const uint8_t *sk_seed, uint32_t height, uint8_t *node, size_t node_len) { int ret = 0; - SLH_ADRS_FUNC_DECLARE(ctx, adrsf); uint8_t sk[SLH_MAX_N], lnode[SLH_MAX_N], rnode[SLH_MAX_N]; uint32_t n = ctx->params->n; + SLH_ADRS_FUNC_DECLARE(ctx, adrsf); + if (height == 0) { /* Gets here for leaf nodes */ if (!slh_fors_sk_gen(ctx, sk_seed, pk_seed, adrs, node_id, @@ -179,7 +180,7 @@ int ossl_slh_fors_sign(SLH_DSA_CTX *ctx, const uint8_t *md, if (!slh_fors_node(ctx, sk_seed, pk_seed, adrs, s + tree_offset, layer, out, sizeof(out))) return 0; - node_id >>= 1;/* Get the parent node id */ + node_id >>= 1; /* Get the parent node id */ tree_offset >>= 1; /* Each layer up has half as many nodes */ WPACKET_memcpy(sig_wpkt, out, n); } @@ -211,13 +212,6 @@ int ossl_slh_fors_pk_from_sig(SLH_DSA_CTX *ctx, PACKET *fors_sig_rpkt, SLH_ADRS adrs, uint8_t *pk_out, size_t pk_out_len) { int ret = 0; - SLH_ADRS_DECLARE(pk_adrs); - SLH_ADRS_FUNC_DECLARE(ctx, adrsf); - SLH_ADRS_FN_DECLARE(adrsf, set_tree_index); - SLH_ADRS_FN_DECLARE(adrsf, set_tree_height); - SLH_HASH_FUNC_DECLARE(ctx, hashf, hctx); - SLH_HASH_FN_DECLARE(hashf, F); - SLH_HASH_FN_DECLARE(hashf, H); uint32_t i, j, aoff = 0; uint32_t ids[SLH_MAX_K]; const SLH_DSA_PARAMS *params = ctx->params; @@ -231,6 +225,14 @@ int ossl_slh_fors_pk_from_sig(SLH_DSA_CTX *ctx, PACKET *fors_sig_rpkt, uint8_t *node0, *node1; /* Pointers into roots[] */ WPACKET root_pkt, *wroot_pkt = &root_pkt; /* Points to |roots| buffer */ + SLH_ADRS_DECLARE(pk_adrs); + SLH_ADRS_FUNC_DECLARE(ctx, adrsf); + SLH_ADRS_FN_DECLARE(adrsf, set_tree_index); + SLH_ADRS_FN_DECLARE(adrsf, set_tree_height); + SLH_HASH_FUNC_DECLARE(ctx, hashf, hctx); + SLH_HASH_FN_DECLARE(hashf, F); + SLH_HASH_FN_DECLARE(hashf, H); + if (!WPACKET_init_static_len(wroot_pkt, roots, sizeof(roots), 0)) return 0; diff --git a/crypto/slh_dsa/slh_hash.c b/crypto/slh_dsa/slh_hash.c index 7f240276d5f..652318399b6 100644 --- a/crypto/slh_dsa/slh_hash.c +++ b/crypto/slh_dsa/slh_hash.c @@ -129,31 +129,31 @@ void ossl_slh_hash_ctx_cleanup(SLH_HASH_CTX *ctx) } static ossl_inline int xof_digest_3(EVP_MD_CTX *ctx, - const uint8_t *in1, size_t in1_len, - const uint8_t *in2, size_t in2_len, - const uint8_t *in3, size_t in3_len, - uint8_t *out, size_t out_len) + const uint8_t *in1, size_t in1_len, + const uint8_t *in2, size_t in2_len, + const uint8_t *in3, size_t in3_len, + uint8_t *out, size_t out_len) { return (EVP_DigestInit_ex2(ctx, NULL, NULL) == 1 - && EVP_DigestUpdate(ctx, in1, in1_len) == 1 - && EVP_DigestUpdate(ctx, in2, in2_len) == 1 - && EVP_DigestUpdate(ctx, in3, in3_len) == 1 - && EVP_DigestFinalXOF(ctx, out, out_len) == 1); + && EVP_DigestUpdate(ctx, in1, in1_len) == 1 + && EVP_DigestUpdate(ctx, in2, in2_len) == 1 + && EVP_DigestUpdate(ctx, in3, in3_len) == 1 + && EVP_DigestFinalXOF(ctx, out, out_len) == 1); } static ossl_inline int xof_digest_4(EVP_MD_CTX *ctx, - const uint8_t *in1, size_t in1_len, - const uint8_t *in2, size_t in2_len, - const uint8_t *in3, size_t in3_len, - const uint8_t *in4, size_t in4_len, - uint8_t *out, size_t out_len) + const uint8_t *in1, size_t in1_len, + const uint8_t *in2, size_t in2_len, + const uint8_t *in3, size_t in3_len, + const uint8_t *in4, size_t in4_len, + uint8_t *out, size_t out_len) { return (EVP_DigestInit_ex2(ctx, NULL, NULL) == 1 - && EVP_DigestUpdate(ctx, in1, in1_len) == 1 - && EVP_DigestUpdate(ctx, in2, in2_len) == 1 - && EVP_DigestUpdate(ctx, in3, in3_len) == 1 - && EVP_DigestUpdate(ctx, in4, in4_len) == 1 - && EVP_DigestFinalXOF(ctx, out, out_len) == 1); + && EVP_DigestUpdate(ctx, in1, in1_len) == 1 + && EVP_DigestUpdate(ctx, in2, in2_len) == 1 + && EVP_DigestUpdate(ctx, in3, in3_len) == 1 + && EVP_DigestUpdate(ctx, in4, in4_len) == 1 + && EVP_DigestFinalXOF(ctx, out, out_len) == 1); } /* See FIPS 205 Section 11.1 */ diff --git a/crypto/slh_dsa/slh_hash.h b/crypto/slh_dsa/slh_hash.h index a48b7f2ff4d..54fc0eeadfc 100644 --- a/crypto/slh_dsa/slh_hash.h +++ b/crypto/slh_dsa/slh_hash.h @@ -40,27 +40,33 @@ typedef struct slh_hash_ctx_st { * @params out is |m| bytes which ranges from (30..49) bytes */ typedef int (OSSL_SLH_HASHFUNC_H_MSG)(SLH_HASH_CTX *ctx, const uint8_t *r, - const uint8_t *pk_seed, const uint8_t *pk_root, - const uint8_t *msg, size_t msg_len, uint8_t *out, size_t out_len); + const uint8_t *pk_seed, const uint8_t *pk_root, + const uint8_t *msg, size_t msg_len, + uint8_t *out, size_t out_len); typedef int (OSSL_SLH_HASHFUNC_PRF)(SLH_HASH_CTX *ctx, const uint8_t *pk_seed, - const uint8_t *sk_seed, const SLH_ADRS adrs, - uint8_t *out, size_t out_len); + const uint8_t *sk_seed, const SLH_ADRS adrs, + uint8_t *out, size_t out_len); typedef int (OSSL_SLH_HASHFUNC_PRF_MSG)(SLH_HASH_CTX *ctx, const uint8_t *sk_prf, - const uint8_t *opt_rand, const uint8_t *msg, size_t msg_len, WPACKET *pkt); + const uint8_t *opt_rand, + const uint8_t *msg, size_t msg_len, + WPACKET *pkt); typedef int (OSSL_SLH_HASHFUNC_F)(SLH_HASH_CTX *ctx, const uint8_t *pk_seed, - const SLH_ADRS adrs, const uint8_t *m1, size_t m1_len, - uint8_t *out, size_t out_len); + const SLH_ADRS adrs, + const uint8_t *m1, size_t m1_len, + uint8_t *out, size_t out_len); typedef int (OSSL_SLH_HASHFUNC_H)(SLH_HASH_CTX *ctx, const uint8_t *pk_seed, - const SLH_ADRS adrs, const uint8_t *m1, const uint8_t *m2, - uint8_t *out, size_t out_len); + const SLH_ADRS adrs, + const uint8_t *m1, const uint8_t *m2, + uint8_t *out, size_t out_len); typedef int (OSSL_SLH_HASHFUNC_T)(SLH_HASH_CTX *ctx, const uint8_t *pk_seed, - const SLH_ADRS adrs, const uint8_t *m1, size_t m1_len, - uint8_t *out, size_t out_len); + const SLH_ADRS adrs, + const uint8_t *m1, size_t m1_len, + uint8_t *out, size_t out_len); typedef struct slh_hash_func_st { OSSL_SLH_HASHFUNC_H_MSG *H_MSG; diff --git a/crypto/slh_dsa/slh_hypertree.c b/crypto/slh_dsa/slh_hypertree.c index e916fa8eff1..9241716c57e 100644 --- a/crypto/slh_dsa/slh_hypertree.c +++ b/crypto/slh_dsa/slh_hypertree.c @@ -22,7 +22,7 @@ * @param sk_seed The private key seed of size |n| * @param pk_seed The public key seed of size |n| * @param tree_id Index of the XMSS tree that will sign the message - * @param leaf_id Index of the WOTS+ key within the XMSS tree that will signed the message + * @param leaf_id Index of the WOTS+ key within the XMSS tree that will sign the message * @param sig_wpkt A WPACKET object to write the Hypertree Signature to. * @returns 1 on success, or 0 on error. */ @@ -54,7 +54,7 @@ int ossl_slh_ht_sign(SLH_DSA_CTX *ctx, if (!ossl_slh_xmss_sign(ctx, root, sk_seed, leaf_id, pk_seed, adrs, sig_wpkt)) return 0; - if (!PACKET_buf_init(xmss_sig_rpkt, psig, WPACKET_get_curr(sig_wpkt) - psig)) + if (!PACKET_buf_init(xmss_sig_rpkt, psig, WPACKET_get_curr(sig_wpkt) - psig)) return 0; if (layer < d - 1) { if (!ossl_slh_xmss_pk_from_sig(ctx, leaf_id, xmss_sig_rpkt, root, diff --git a/crypto/slh_dsa/slh_wots.c b/crypto/slh_dsa/slh_wots.c index 7f56dd45754..783b1649091 100644 --- a/crypto/slh_dsa/slh_wots.c +++ b/crypto/slh_dsa/slh_wots.c @@ -13,14 +13,14 @@ #include "slh_dsa_local.h" /* For the parameter sets defined there is only one w value */ -#define SLH_WOTS_LOGW 4 -#define SLH_WOTS_W 16 -#define SLH_WOTS_LEN1(n) (2 * (n)) -#define SLH_WOTS_LEN2 3 -#define SLH_WOTS_CHECKSUM_LEN ((SLH_WOTS_LEN2 + SLH_WOTS_LOGW + 7) / 8) -#define SLH_WOTS_LEN_MAX SLH_WOTS_LEN(SLH_MAX_N) -#define NIBBLE_MASK 15 -#define NIBBLE_SHIFT 4 +#define SLH_WOTS_LOGW 4 +#define SLH_WOTS_W 16 +#define SLH_WOTS_LEN1(n) (2 * (n)) +#define SLH_WOTS_LEN2 3 +#define SLH_WOTS_CHECKSUM_LEN ((SLH_WOTS_LEN2 + SLH_WOTS_LOGW + 7) / 8) +#define SLH_WOTS_LEN_MAX SLH_WOTS_LEN(SLH_MAX_N) +#define NIBBLE_MASK 15 +#define NIBBLE_SHIFT 4 /* * @brief Convert a byte array to a byte array of (4 bit) nibbles @@ -142,18 +142,19 @@ int ossl_slh_wots_pk_gen(SLH_DSA_CTX *ctx, SLH_ADRS adrs, uint8_t *pk_out, size_t pk_out_len) { int ret = 0; + size_t n = ctx->params->n; + size_t i, len = SLH_WOTS_LEN(n); /* 2 * n + 3 */ + uint8_t sk[SLH_MAX_N]; + uint8_t tmp[SLH_WOTS_LEN_MAX * SLH_MAX_N]; + WPACKET pkt, *tmp_wpkt = &pkt; /* Points to the |tmp| buffer */ + size_t tmp_len = 0; + SLH_HASH_FUNC_DECLARE(ctx, hashf, hctx); SLH_ADRS_FUNC_DECLARE(ctx, adrsf); SLH_HASH_FN_DECLARE(hashf, PRF); SLH_ADRS_FN_DECLARE(adrsf, set_chain_address); SLH_ADRS_DECLARE(sk_adrs); SLH_ADRS_DECLARE(wots_pk_adrs); - size_t n = ctx->params->n; - size_t i, len = SLH_WOTS_LEN(n); /*2 * n + 3 */ - uint8_t sk[SLH_MAX_N]; - uint8_t tmp[SLH_WOTS_LEN_MAX * SLH_MAX_N]; - WPACKET pkt, *tmp_wpkt = &pkt; /* Points to the |tmp| buffer */ - size_t tmp_len = 0; if (!WPACKET_init_static_len(tmp_wpkt, tmp, sizeof(tmp), 0)) return 0; @@ -206,18 +207,18 @@ int ossl_slh_wots_sign(SLH_DSA_CTX *ctx, const uint8_t *msg, SLH_ADRS adrs, WPACKET *sig_wpkt) { int ret = 0; - SLH_HASH_FUNC_DECLARE(ctx, hashf, hctx); - SLH_ADRS_FUNC_DECLARE(ctx, adrsf); - SLH_HASH_FN_DECLARE(hashf, PRF); - SLH_ADRS_FN_DECLARE(adrsf, set_chain_address); - SLH_ADRS_DECLARE(sk_adrs); uint8_t msg_and_csum_nibbles[SLH_WOTS_LEN_MAX]; /* size is >= 2 * n + 3 */ uint8_t sk[SLH_MAX_N]; - size_t i, len1, len; + size_t i; size_t n = ctx->params->n; + size_t len1 = SLH_WOTS_LEN1(n); /* 2 * n = the msg length in nibbles */ + size_t len = len1 + SLH_WOTS_LEN2; /* 2 * n + 3 (3 checksum nibbles) */ - len1 = SLH_WOTS_LEN1(n); /* 2 * n is for the message length in nibbles */ - len = len1 + SLH_WOTS_LEN2; /* 2 * n + 3 (3 checksum nibbles) */ + SLH_ADRS_DECLARE(sk_adrs); + SLH_HASH_FUNC_DECLARE(ctx, hashf, hctx); + SLH_ADRS_FUNC_DECLARE(ctx, adrsf); + SLH_HASH_FN_DECLARE(hashf, PRF); + SLH_ADRS_FN_DECLARE(adrsf, set_chain_address); /* * Convert n message bytes to 2*n base w=16 integers @@ -269,19 +270,20 @@ int ossl_slh_wots_pk_from_sig(SLH_DSA_CTX *ctx, uint8_t *pk_out, size_t pk_out_len) { int ret = 0; - SLH_HASH_FUNC_DECLARE(ctx, hashf, hctx); - SLH_ADRS_FUNC_DECLARE(ctx, adrsf); - SLH_ADRS_FN_DECLARE(adrsf, set_chain_address); - SLH_ADRS_DECLARE(wots_pk_adrs); uint8_t msg_and_csum_nibbles[SLH_WOTS_LEN_MAX]; - size_t i, len1, len, n = ctx->params->n; - const uint8_t *sig_i; /* Pointer into |pkt_sig| buffer */ + size_t i; + size_t n = ctx->params->n; + size_t len1 = SLH_WOTS_LEN1(n); + size_t len = len1 + SLH_WOTS_LEN2; /* 2n + 3 */ + const uint8_t *sig_i; /* Pointer into |sig_rpkt| buffer */ uint8_t tmp[SLH_WOTS_LEN_MAX * SLH_MAX_N]; WPACKET pkt, *tmp_pkt = &pkt; size_t tmp_len = 0; - len1 = SLH_WOTS_LEN1(n); - len = len1 + SLH_WOTS_LEN2; /* 2n + 3 */ + SLH_HASH_FUNC_DECLARE(ctx, hashf, hctx); + SLH_ADRS_FUNC_DECLARE(ctx, adrsf); + SLH_ADRS_FN_DECLARE(adrsf, set_chain_address); + SLH_ADRS_DECLARE(wots_pk_adrs); if (!WPACKET_init_static_len(tmp_pkt, tmp, sizeof(tmp), 0)) return 0; @@ -305,7 +307,7 @@ int ossl_slh_wots_pk_from_sig(SLH_DSA_CTX *ctx, if (!WPACKET_get_total_written(tmp_pkt, &tmp_len)) goto err; ret = hashf->T(hctx, pk_seed, wots_pk_adrs, tmp, tmp_len, - pk_out, pk_out_len); + pk_out, pk_out_len); err: if (!WPACKET_finish(tmp_pkt)) ret = 0; diff --git a/crypto/slh_dsa/slh_xmss.c b/crypto/slh_dsa/slh_xmss.c index eb9125aec33..b7dcf6eb968 100644 --- a/crypto/slh_dsa/slh_xmss.c +++ b/crypto/slh_dsa/slh_xmss.c @@ -33,9 +33,9 @@ * @returns 1 on success, or 0 on error. */ int ossl_slh_xmss_node(SLH_DSA_CTX *ctx, const uint8_t *sk_seed, - uint32_t node_id, uint32_t h, - const uint8_t *pk_seed, SLH_ADRS adrs, - uint8_t *pk_out, size_t pk_out_len) + uint32_t node_id, uint32_t h, + const uint8_t *pk_seed, SLH_ADRS adrs, + uint8_t *pk_out, size_t pk_out_len) { SLH_ADRS_FUNC_DECLARE(ctx, adrsf); diff --git a/providers/defltprov.c b/providers/defltprov.c index 81cdf21c825..557a5178229 100644 --- a/providers/defltprov.c +++ b/providers/defltprov.c @@ -463,30 +463,30 @@ static const OSSL_ALGORITHM deflt_signature[] = { { PROV_NAMES_CMAC, "provider=default", ossl_mac_legacy_cmac_signature_functions }, #endif #ifndef OPENSSL_NO_SLH_DSA - { PROV_NAMES_SLH_DSA_SHA2_128S, "provider=default", ossl_slh_dsa_sha2_128s_signature_functions, - PROV_DESCS_SLH_DSA_SHA2_128S }, - { PROV_NAMES_SLH_DSA_SHA2_128F, "provider=default", ossl_slh_dsa_sha2_128f_signature_functions, - PROV_DESCS_SLH_DSA_SHA2_128F }, - { PROV_NAMES_SLH_DSA_SHA2_192S, "provider=default", ossl_slh_dsa_sha2_192s_signature_functions, - PROV_DESCS_SLH_DSA_SHA2_192S }, - { PROV_NAMES_SLH_DSA_SHA2_192F, "provider=default", ossl_slh_dsa_sha2_192f_signature_functions, - PROV_DESCS_SLH_DSA_SHA2_192F }, - { PROV_NAMES_SLH_DSA_SHA2_256S, "provider=default", ossl_slh_dsa_sha2_256s_signature_functions, - PROV_DESCS_SLH_DSA_SHA2_256S }, - { PROV_NAMES_SLH_DSA_SHA2_256F, "provider=default", ossl_slh_dsa_sha2_256f_signature_functions, - PROV_DESCS_SLH_DSA_SHA2_256F }, - { PROV_NAMES_SLH_DSA_SHAKE_128S, "provider=default", ossl_slh_dsa_shake_128s_signature_functions, - PROV_DESCS_SLH_DSA_SHAKE_128S }, - { PROV_NAMES_SLH_DSA_SHAKE_128F, "provider=default", ossl_slh_dsa_shake_128f_signature_functions, - PROV_DESCS_SLH_DSA_SHAKE_128F }, - { PROV_NAMES_SLH_DSA_SHAKE_192S, "provider=default", ossl_slh_dsa_shake_192s_signature_functions, - PROV_DESCS_SLH_DSA_SHAKE_192S }, - { PROV_NAMES_SLH_DSA_SHAKE_192F, "provider=default", ossl_slh_dsa_shake_192f_signature_functions, - PROV_DESCS_SLH_DSA_SHAKE_192F }, - { PROV_NAMES_SLH_DSA_SHAKE_256S, "provider=default", ossl_slh_dsa_shake_256s_signature_functions, - PROV_DESCS_SLH_DSA_SHAKE_256S }, - { PROV_NAMES_SLH_DSA_SHAKE_256F, "provider=default", ossl_slh_dsa_shake_256f_signature_functions, - PROV_DESCS_SLH_DSA_SHAKE_256F }, + { PROV_NAMES_SLH_DSA_SHA2_128S, "provider=default", + ossl_slh_dsa_sha2_128s_signature_functions, PROV_DESCS_SLH_DSA_SHA2_128S }, + { PROV_NAMES_SLH_DSA_SHA2_128F, "provider=default", + ossl_slh_dsa_sha2_128f_signature_functions, PROV_DESCS_SLH_DSA_SHA2_128F }, + { PROV_NAMES_SLH_DSA_SHA2_192S, "provider=default", + ossl_slh_dsa_sha2_192s_signature_functions, PROV_DESCS_SLH_DSA_SHA2_192S }, + { PROV_NAMES_SLH_DSA_SHA2_192F, "provider=default", + ossl_slh_dsa_sha2_192f_signature_functions, PROV_DESCS_SLH_DSA_SHA2_192F }, + { PROV_NAMES_SLH_DSA_SHA2_256S, "provider=default", + ossl_slh_dsa_sha2_256s_signature_functions, PROV_DESCS_SLH_DSA_SHA2_256S }, + { PROV_NAMES_SLH_DSA_SHA2_256F, "provider=default", + ossl_slh_dsa_sha2_256f_signature_functions, PROV_DESCS_SLH_DSA_SHA2_256F }, + { PROV_NAMES_SLH_DSA_SHAKE_128S, "provider=default", + ossl_slh_dsa_shake_128s_signature_functions, PROV_DESCS_SLH_DSA_SHAKE_128S }, + { PROV_NAMES_SLH_DSA_SHAKE_128F, "provider=default", + ossl_slh_dsa_shake_128f_signature_functions, PROV_DESCS_SLH_DSA_SHAKE_128F }, + { PROV_NAMES_SLH_DSA_SHAKE_192S, "provider=default", + ossl_slh_dsa_shake_192s_signature_functions, PROV_DESCS_SLH_DSA_SHAKE_192S }, + { PROV_NAMES_SLH_DSA_SHAKE_192F, "provider=default", + ossl_slh_dsa_shake_192f_signature_functions, PROV_DESCS_SLH_DSA_SHAKE_192F }, + { PROV_NAMES_SLH_DSA_SHAKE_256S, "provider=default", + ossl_slh_dsa_shake_256s_signature_functions, PROV_DESCS_SLH_DSA_SHAKE_256S }, + { PROV_NAMES_SLH_DSA_SHAKE_256F, "provider=default", + ossl_slh_dsa_shake_256f_signature_functions, PROV_DESCS_SLH_DSA_SHAKE_256F }, #endif /* OPENSSL_NO_SLH_DSA */ { NULL, NULL, NULL } }; diff --git a/providers/implementations/keymgmt/slh_dsa_kmgmt.c b/providers/implementations/keymgmt/slh_dsa_kmgmt.c index 7deb42b3450..a5463edda1c 100644 --- a/providers/implementations/keymgmt/slh_dsa_kmgmt.c +++ b/providers/implementations/keymgmt/slh_dsa_kmgmt.c @@ -162,7 +162,7 @@ static int slh_dsa_get_params(void *keydata, OSSL_PARAM params[]) } static int slh_dsa_export(void *keydata, int selection, OSSL_CALLBACK *param_cb, - void *cbarg) + void *cbarg) { SLH_DSA_KEY *key = keydata; OSSL_PARAM_BLD *tmpl; @@ -307,37 +307,37 @@ static void slh_dsa_gen_cleanup(void *genctx) } #define MAKE_KEYMGMT_FUNCTIONS(alg, fn) \ -static OSSL_FUNC_keymgmt_new_fn slh_dsa_##fn##_new_key; \ -static OSSL_FUNC_keymgmt_gen_fn slh_dsa_##fn##_gen; \ -static void *slh_dsa_##fn##_new_key(void *provctx) \ -{ \ - return slh_dsa_new_key(provctx, alg); \ -} \ -static void *slh_dsa_##fn##_gen(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg)\ -{ \ - return slh_dsa_gen(genctx, alg); \ -} \ -const OSSL_DISPATCH ossl_slh_dsa_##fn##_keymgmt_functions[] = { \ - { OSSL_FUNC_KEYMGMT_NEW, (void (*)(void))slh_dsa_##fn##_new_key }, \ - { OSSL_FUNC_KEYMGMT_FREE, (void (*)(void))slh_dsa_free_key }, \ - { OSSL_FUNC_KEYMGMT_HAS, (void (*)(void))slh_dsa_has }, \ - { OSSL_FUNC_KEYMGMT_MATCH, (void (*)(void))slh_dsa_match }, \ - { OSSL_FUNC_KEYMGMT_IMPORT, (void (*)(void))slh_dsa_import }, \ - { OSSL_FUNC_KEYMGMT_IMPORT_TYPES, (void (*)(void))slh_dsa_imexport_types },\ - { OSSL_FUNC_KEYMGMT_EXPORT, (void (*)(void))slh_dsa_export }, \ - { OSSL_FUNC_KEYMGMT_EXPORT_TYPES, (void (*)(void))slh_dsa_imexport_types },\ - { OSSL_FUNC_KEYMGMT_LOAD, (void (*)(void))slh_dsa_load }, \ - { OSSL_FUNC_KEYMGMT_GET_PARAMS, (void (*) (void))slh_dsa_get_params }, \ - { OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS, (void (*) (void))slh_dsa_gettable_params }, \ - { OSSL_FUNC_KEYMGMT_GEN_INIT, (void (*)(void))slh_dsa_gen_init }, \ - { OSSL_FUNC_KEYMGMT_GEN, (void (*)(void))slh_dsa_##fn##_gen }, \ - { OSSL_FUNC_KEYMGMT_GEN_CLEANUP, (void (*)(void))slh_dsa_gen_cleanup }, \ - { OSSL_FUNC_KEYMGMT_GEN_SET_PARAMS, \ - (void (*)(void))slh_dsa_gen_set_params }, \ - { OSSL_FUNC_KEYMGMT_GEN_SETTABLE_PARAMS, \ - (void (*)(void))slh_dsa_gen_settable_params }, \ - OSSL_DISPATCH_END \ -} + static OSSL_FUNC_keymgmt_new_fn slh_dsa_##fn##_new_key; \ + static OSSL_FUNC_keymgmt_gen_fn slh_dsa_##fn##_gen; \ + static void *slh_dsa_##fn##_new_key(void *provctx) \ + { \ + return slh_dsa_new_key(provctx, alg); \ + } \ + static void *slh_dsa_##fn##_gen(void *genctx, OSSL_CALLBACK *osslcb, void *cbarg)\ + { \ + return slh_dsa_gen(genctx, alg); \ + } \ + const OSSL_DISPATCH ossl_slh_dsa_##fn##_keymgmt_functions[] = { \ + { OSSL_FUNC_KEYMGMT_NEW, (void (*)(void))slh_dsa_##fn##_new_key }, \ + { OSSL_FUNC_KEYMGMT_FREE, (void (*)(void))slh_dsa_free_key }, \ + { OSSL_FUNC_KEYMGMT_HAS, (void (*)(void))slh_dsa_has }, \ + { OSSL_FUNC_KEYMGMT_MATCH, (void (*)(void))slh_dsa_match }, \ + { OSSL_FUNC_KEYMGMT_IMPORT, (void (*)(void))slh_dsa_import }, \ + { OSSL_FUNC_KEYMGMT_IMPORT_TYPES, (void (*)(void))slh_dsa_imexport_types },\ + { OSSL_FUNC_KEYMGMT_EXPORT, (void (*)(void))slh_dsa_export }, \ + { OSSL_FUNC_KEYMGMT_EXPORT_TYPES, (void (*)(void))slh_dsa_imexport_types },\ + { OSSL_FUNC_KEYMGMT_LOAD, (void (*)(void))slh_dsa_load }, \ + { OSSL_FUNC_KEYMGMT_GET_PARAMS, (void (*) (void))slh_dsa_get_params }, \ + { OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS, (void (*) (void))slh_dsa_gettable_params },\ + { OSSL_FUNC_KEYMGMT_GEN_INIT, (void (*)(void))slh_dsa_gen_init }, \ + { OSSL_FUNC_KEYMGMT_GEN, (void (*)(void))slh_dsa_##fn##_gen }, \ + { OSSL_FUNC_KEYMGMT_GEN_CLEANUP, (void (*)(void))slh_dsa_gen_cleanup },\ + { OSSL_FUNC_KEYMGMT_GEN_SET_PARAMS, \ + (void (*)(void))slh_dsa_gen_set_params }, \ + { OSSL_FUNC_KEYMGMT_GEN_SETTABLE_PARAMS, \ + (void (*)(void))slh_dsa_gen_settable_params }, \ + OSSL_DISPATCH_END \ + } MAKE_KEYMGMT_FUNCTIONS("SLH-DSA-SHA2-128s", sha2_128s); MAKE_KEYMGMT_FUNCTIONS("SLH-DSA-SHA2-128f", sha2_128f); diff --git a/providers/implementations/signature/slh_dsa_sig.c b/providers/implementations/signature/slh_dsa_sig.c index 5e7b3692581..e32a0f93a0b 100644 --- a/providers/implementations/signature/slh_dsa_sig.c +++ b/providers/implementations/signature/slh_dsa_sig.c @@ -147,15 +147,13 @@ static int slh_sign(void *vctx, unsigned char *sig, size_t *siglen, return ret; } -static int slh_verify_msg_init(void *vctx, void *vkey, - const OSSL_PARAM params[]) +static int slh_verify_msg_init(void *vctx, void *vkey, const OSSL_PARAM params[]) { return slh_signverify_msg_init(vctx, vkey, params, EVP_PKEY_OP_VERIFY, "SLH_DSA Verify Init"); } -static int slh_verify(void *vctx, - const unsigned char *sig, size_t siglen, +static int slh_verify(void *vctx, const unsigned char *sig, size_t siglen, const unsigned char *msg, size_t msg_len) { PROV_SLH_DSA_CTX *ctx = (PROV_SLH_DSA_CTX *)vctx; @@ -226,25 +224,25 @@ static const OSSL_PARAM *slh_settable_ctx_params(void *vctx, } #define MAKE_SIGNATURE_FUNCTIONS(alg, fn) \ -static OSSL_FUNC_signature_newctx_fn slh_##fn##_newctx; \ -static void *slh_##fn##_newctx(void *provctx, const char *propq) \ -{ \ - return slh_newctx(provctx, alg, propq); \ -} \ -const OSSL_DISPATCH ossl_slh_dsa_##fn##_signature_functions[] = { \ - { OSSL_FUNC_SIGNATURE_NEWCTX, (void (*)(void))slh_##fn##_newctx }, \ - { OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_INIT, \ - (void (*)(void))slh_sign_msg_init }, \ - { OSSL_FUNC_SIGNATURE_SIGN, (void (*)(void))slh_sign }, \ - { OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_INIT, \ - (void (*)(void))slh_verify_msg_init }, \ - { OSSL_FUNC_SIGNATURE_VERIFY, (void (*)(void))slh_verify }, \ - { OSSL_FUNC_SIGNATURE_FREECTX, (void (*)(void))slh_freectx }, \ - { OSSL_FUNC_SIGNATURE_SET_CTX_PARAMS, (void (*)(void))slh_set_ctx_params },\ - { OSSL_FUNC_SIGNATURE_SETTABLE_CTX_PARAMS, \ - (void (*)(void))slh_settable_ctx_params }, \ - OSSL_DISPATCH_END \ -} + static OSSL_FUNC_signature_newctx_fn slh_##fn##_newctx; \ + static void *slh_##fn##_newctx(void *provctx, const char *propq) \ + { \ + return slh_newctx(provctx, alg, propq); \ + } \ + const OSSL_DISPATCH ossl_slh_dsa_##fn##_signature_functions[] = { \ + { OSSL_FUNC_SIGNATURE_NEWCTX, (void (*)(void))slh_##fn##_newctx }, \ + { OSSL_FUNC_SIGNATURE_SIGN_MESSAGE_INIT, \ + (void (*)(void))slh_sign_msg_init }, \ + { OSSL_FUNC_SIGNATURE_SIGN, (void (*)(void))slh_sign }, \ + { OSSL_FUNC_SIGNATURE_VERIFY_MESSAGE_INIT, \ + (void (*)(void))slh_verify_msg_init }, \ + { OSSL_FUNC_SIGNATURE_VERIFY, (void (*)(void))slh_verify }, \ + { OSSL_FUNC_SIGNATURE_FREECTX, (void (*)(void))slh_freectx }, \ + { OSSL_FUNC_SIGNATURE_SET_CTX_PARAMS, (void (*)(void))slh_set_ctx_params },\ + { OSSL_FUNC_SIGNATURE_SETTABLE_CTX_PARAMS, \ + (void (*)(void))slh_settable_ctx_params }, \ + OSSL_DISPATCH_END \ + } MAKE_SIGNATURE_FUNCTIONS("SLH-DSA-SHA2-128s", sha2_128s); MAKE_SIGNATURE_FUNCTIONS("SLH-DSA-SHA2-128f", sha2_128f); diff --git a/test/slh_dsa_test.c b/test/slh_dsa_test.c index ef026e2d350..d80f7238c92 100644 --- a/test/slh_dsa_test.c +++ b/test/slh_dsa_test.c @@ -237,7 +237,7 @@ static int slh_dsa_sign_verify_test(int tst_id) || !TEST_int_eq(EVP_PKEY_sign(sctx, NULL, &psig_len, td->msg, td->msg_len), 1) || !TEST_true(EVP_PKEY_get_size_t_param(pkey, OSSL_PKEY_PARAM_MAX_SIZE, - &sig_len2)) + &sig_len2)) || !TEST_int_eq(sig_len2, psig_len) || !TEST_ptr(psig = OPENSSL_zalloc(psig_len)) || !TEST_int_eq(EVP_PKEY_sign(sctx, psig, &psig_len,