From 4895d13a55de93d72bf3bd0a31190ecc8f27eec4 Mon Sep 17 00:00:00 2001 From: Xavier Chapron Date: Fri, 18 Apr 2025 14:22:38 +0200 Subject: [PATCH] Constify cipher_wrap:mbedtls_cipher_supported Signed-off-by: Xavier Chapron --- library/cipher.c | 18 ----- library/cipher_wrap.c | 172 +++++++++++++++++++++++++++++++++++++++++- library/cipher_wrap.h | 2 +- 3 files changed, 172 insertions(+), 20 deletions(-) diff --git a/library/cipher.c b/library/cipher.c index 7f4c121492..7e70e023e0 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -53,8 +53,6 @@ #include "mbedtls/platform.h" -static int supported_init = 0; - static inline const mbedtls_cipher_base_t *mbedtls_cipher_get_base( const mbedtls_cipher_info_t *info) { @@ -63,22 +61,6 @@ static inline const mbedtls_cipher_base_t *mbedtls_cipher_get_base( const int *mbedtls_cipher_list(void) { - const mbedtls_cipher_definition_t *def; - int *type; - - if (!supported_init) { - def = mbedtls_cipher_definitions; - type = mbedtls_cipher_supported; - - while (def->type != 0) { - *type++ = (*def++).type; - } - - *type = 0; - - supported_init = 1; - } - return mbedtls_cipher_supported; } diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index d2fee22e2b..317064b8c7 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -2423,7 +2423,177 @@ const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = #define NUM_CIPHERS (sizeof(mbedtls_cipher_definitions) / \ sizeof(mbedtls_cipher_definitions[0])) -int mbedtls_cipher_supported[NUM_CIPHERS]; +const int mbedtls_cipher_supported[NUM_CIPHERS] = +{ +#if defined(MBEDTLS_AES_C) + MBEDTLS_CIPHER_AES_128_ECB, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_ECB, + MBEDTLS_CIPHER_AES_256_ECB, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CBC) + MBEDTLS_CIPHER_AES_128_CBC, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_CBC, + MBEDTLS_CIPHER_AES_256_CBC, +#endif +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + MBEDTLS_CIPHER_AES_128_CFB128, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_CFB128, + MBEDTLS_CIPHER_AES_256_CFB128, +#endif +#endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + MBEDTLS_CIPHER_AES_128_OFB, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_OFB, + MBEDTLS_CIPHER_AES_256_OFB, +#endif +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + MBEDTLS_CIPHER_AES_128_CTR, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_CTR, + MBEDTLS_CIPHER_AES_256_CTR, +#endif +#endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + MBEDTLS_CIPHER_AES_128_XTS, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_256_XTS, +#endif +#endif +#endif /* MBEDTLS_AES_C */ +#if defined(MBEDTLS_CIPHER_HAVE_GCM_AES_VIA_LEGACY_OR_USE_PSA) + MBEDTLS_CIPHER_AES_128_GCM, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_GCM, + MBEDTLS_CIPHER_AES_256_GCM, +#endif +#endif +#if defined(MBEDTLS_CIPHER_HAVE_CCM_AES_VIA_LEGACY_OR_USE_PSA) + MBEDTLS_CIPHER_AES_128_CCM, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_CCM, + MBEDTLS_CIPHER_AES_256_CCM, +#endif +#endif +#if defined(MBEDTLS_CIPHER_HAVE_CCM_STAR_NO_TAG_AES_VIA_LEGACY_OR_USE_PSA) + MBEDTLS_CIPHER_AES_128_CCM_STAR_NO_TAG, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_CCM_STAR_NO_TAG, + MBEDTLS_CIPHER_AES_256_CCM_STAR_NO_TAG, +#endif +#endif + +#if defined(MBEDTLS_CAMELLIA_C) + MBEDTLS_CIPHER_CAMELLIA_128_ECB, + MBEDTLS_CIPHER_CAMELLIA_192_ECB, + MBEDTLS_CIPHER_CAMELLIA_256_ECB, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + MBEDTLS_CIPHER_CAMELLIA_128_CBC, + MBEDTLS_CIPHER_CAMELLIA_192_CBC, + MBEDTLS_CIPHER_CAMELLIA_256_CBC, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + MBEDTLS_CIPHER_CAMELLIA_128_CFB128, + MBEDTLS_CIPHER_CAMELLIA_192_CFB128, + MBEDTLS_CIPHER_CAMELLIA_256_CFB128, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + MBEDTLS_CIPHER_CAMELLIA_128_CTR, + MBEDTLS_CIPHER_CAMELLIA_192_CTR, + MBEDTLS_CIPHER_CAMELLIA_256_CTR, +#endif +#if defined(MBEDTLS_GCM_C) + MBEDTLS_CIPHER_CAMELLIA_128_GCM, + MBEDTLS_CIPHER_CAMELLIA_192_GCM, + MBEDTLS_CIPHER_CAMELLIA_256_GCM, +#endif +#if defined(MBEDTLS_CCM_C) + MBEDTLS_CIPHER_CAMELLIA_128_CCM, + MBEDTLS_CIPHER_CAMELLIA_192_CCM, + MBEDTLS_CIPHER_CAMELLIA_256_CCM, + MBEDTLS_CIPHER_CAMELLIA_128_CCM_STAR_NO_TAG, + MBEDTLS_CIPHER_CAMELLIA_192_CCM_STAR_NO_TAG, + MBEDTLS_CIPHER_CAMELLIA_256_CCM_STAR_NO_TAG, +#endif +#endif /* MBEDTLS_CAMELLIA_C */ + +#if defined(MBEDTLS_ARIA_C) + MBEDTLS_CIPHER_ARIA_128_ECB, + MBEDTLS_CIPHER_ARIA_192_ECB, + MBEDTLS_CIPHER_ARIA_256_ECB, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + MBEDTLS_CIPHER_ARIA_128_CBC, + MBEDTLS_CIPHER_ARIA_192_CBC, + MBEDTLS_CIPHER_ARIA_256_CBC, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + MBEDTLS_CIPHER_ARIA_128_CFB128, + MBEDTLS_CIPHER_ARIA_192_CFB128, + MBEDTLS_CIPHER_ARIA_256_CFB128, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + MBEDTLS_CIPHER_ARIA_128_CTR, + MBEDTLS_CIPHER_ARIA_192_CTR, + MBEDTLS_CIPHER_ARIA_256_CTR, +#endif +#if defined(MBEDTLS_GCM_C) + MBEDTLS_CIPHER_ARIA_128_GCM, + MBEDTLS_CIPHER_ARIA_192_GCM, + MBEDTLS_CIPHER_ARIA_256_GCM, +#endif +#if defined(MBEDTLS_CCM_C) + MBEDTLS_CIPHER_ARIA_128_CCM, + MBEDTLS_CIPHER_ARIA_192_CCM, + MBEDTLS_CIPHER_ARIA_256_CCM, + MBEDTLS_CIPHER_ARIA_128_CCM_STAR_NO_TAG, + MBEDTLS_CIPHER_ARIA_192_CCM_STAR_NO_TAG, + MBEDTLS_CIPHER_ARIA_256_CCM_STAR_NO_TAG, +#endif +#endif /* MBEDTLS_ARIA_C */ + +#if defined(MBEDTLS_DES_C) + MBEDTLS_CIPHER_DES_ECB, + MBEDTLS_CIPHER_DES_EDE_ECB, + MBEDTLS_CIPHER_DES_EDE3_ECB, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + MBEDTLS_CIPHER_DES_CBC, + MBEDTLS_CIPHER_DES_EDE_CBC, + MBEDTLS_CIPHER_DES_EDE3_CBC, +#endif +#endif /* MBEDTLS_DES_C */ + +#if defined(MBEDTLS_CHACHA20_C) + MBEDTLS_CIPHER_CHACHA20, +#endif + +#if defined(MBEDTLS_CHACHAPOLY_C) + MBEDTLS_CIPHER_CHACHA20_POLY1305, +#endif + +#if defined(MBEDTLS_NIST_KW_C) + MBEDTLS_CIPHER_AES_128_KW, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_KW, + MBEDTLS_CIPHER_AES_256_KW, +#endif + MBEDTLS_CIPHER_AES_128_KWP, +#if !defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH) + MBEDTLS_CIPHER_AES_192_KWP, + MBEDTLS_CIPHER_AES_256_KWP, +#endif +#endif + +#if defined(MBEDTLS_CIPHER_NULL_CIPHER) + MBEDTLS_CIPHER_NULL, +#endif /* MBEDTLS_CIPHER_NULL_CIPHER */ + + MBEDTLS_CIPHER_NONE +}; const mbedtls_cipher_base_t *mbedtls_cipher_base_lookup_table[] = { #if defined(MBEDTLS_AES_C) diff --git a/library/cipher_wrap.h b/library/cipher_wrap.h index f22915120d..deefd95c5a 100644 --- a/library/cipher_wrap.h +++ b/library/cipher_wrap.h @@ -167,7 +167,7 @@ typedef struct { extern const mbedtls_cipher_definition_t mbedtls_cipher_definitions[]; -extern int mbedtls_cipher_supported[]; +extern const int mbedtls_cipher_supported[]; extern const mbedtls_cipher_base_t *mbedtls_cipher_base_lookup_table[];