From 90a91f041c10cf45c3a3ffb178346cace93a5453 Mon Sep 17 00:00:00 2001 From: Paul Elliott Date: Tue, 24 Jan 2023 15:23:25 +0000 Subject: [PATCH] Ensure structs are not empty even if ECDSA not supported Also make previous changes apply to both interruptible sign hash operation structures rather than just the one as it was. Signed-off-by: Paul Elliott --- include/psa/crypto_builtin_composites.h | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/include/psa/crypto_builtin_composites.h b/include/psa/crypto_builtin_composites.h index c5a37e63d2..ac065c1630 100644 --- a/include/psa/crypto_builtin_composites.h +++ b/include/psa/crypto_builtin_composites.h @@ -111,13 +111,11 @@ typedef struct { /* Context structure for the Mbed TLS interruptible sign hash implementation. */ typedef struct { - -#if defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \ - defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA) +#if (defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \ + defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)) && \ + defined(MBEDTLS_ECP_RESTARTABLE) mbedtls_ecdsa_context *MBEDTLS_PRIVATE(ctx); -#if defined(MBEDTLS_ECP_RESTARTABLE) mbedtls_ecdsa_restart_ctx MBEDTLS_PRIVATE(restart_ctx); -#endif /* MBEDTLS_ECP_RESTARTABLE */ size_t MBEDTLS_PRIVATE(curve_bytes); psa_algorithm_t MBEDTLS_PRIVATE(alg); @@ -128,8 +126,13 @@ typedef struct { mbedtls_mpi MBEDTLS_PRIVATE(r); mbedtls_mpi MBEDTLS_PRIVATE(s); -#endif /* MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA */ +#else + /* Make the struct non-empty if algs not supported. */ + unsigned MBEDTLS_PRIVATE(dummy); +#endif /* MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || + * MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA && + * MBEDTLS_ECP_RESTARTABLE */ } mbedtls_psa_sign_hash_interruptible_operation_t; #define MBEDTLS_PSA_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT { { 0 }, { 0 }, 0, 0, 0, 0, 0, { 0 }, \ @@ -152,6 +155,10 @@ typedef struct { mbedtls_mpi MBEDTLS_PRIVATE(r); mbedtls_mpi MBEDTLS_PRIVATE(s); +#else + /* Make the struct non-empty if algs not supported. */ + unsigned MBEDTLS_PRIVATE(dummy); + #endif /* MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || * MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA && * MBEDTLS_ECP_RESTARTABLE */