mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2026-05-09 11:14:26 +02:00
PK: use smarter size for stack buffer
The original macro was accounting for the size of public FFDH keys, which are not a concern for PK. Use sizes for key types supported by PK, this brings the size of the buffer from 1kB to 528 bytes in the default config. Signed-off-by: Manuel Pégourié-Gonnard <manuel.pegourie-gonnard@arm.com>
This commit is contained in:
21
library/pk.c
21
library/pk.c
@@ -39,6 +39,25 @@
|
||||
#include "mbedtls/platform.h" // for calloc/free
|
||||
#endif
|
||||
|
||||
#define MBEDTLS_PK_MAX_EC_PUBKEY_RAW_LEN \
|
||||
PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
|
||||
|
||||
#define MBEDTLS_PK_MAX_RSA_PUBKEY_RAW_LEN \
|
||||
PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS)
|
||||
|
||||
#define MBEDTLS_PK_MAX_PUBKEY_RAW_LEN 0
|
||||
#if (defined(MBEDTLS_ECP_C) || \
|
||||
(defined(MBEDTLS_USE_PSA_CRYPTO) && defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY))) && \
|
||||
MBEDTLS_PK_MAX_EC_PUBKEY_RAW_LEN > MBEDTLS_PK_MAX_PUBKEY_RAW_LEN
|
||||
#undef MBEDTLS_PK_MAX_PUBKEY_RAW_LEN
|
||||
#define MBEDTLS_PK_MAX_PUBKEY_RAW_LEN MBEDTLS_PK_MAX_EC_PUBKEY_RAW_LEN
|
||||
#endif
|
||||
#if (defined(MBEDTLS_RSA_C) || \
|
||||
(defined(MBEDTLS_USE_PSA_CRYPTO) && defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY))) && \
|
||||
MBEDTLS_PK_MAX_RSA_PUBKEY_RAW_LEN > MBEDTLS_PK_MAX_PUBKEY_RAW_LEN
|
||||
#undef MBEDTLS_PK_MAX_PUBKEY_RAW_LEN
|
||||
#define MBEDTLS_PK_MAX_PUBKEY_RAW_LEN MBEDTLS_PK_MAX_RSA_PUBKEY_RAW_LEN
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Initialise a mbedtls_pk_context
|
||||
@@ -779,7 +798,7 @@ static int import_public_into_psa(const mbedtls_pk_context *pk,
|
||||
#if defined(MBEDTLS_RSA_C) || \
|
||||
(defined(MBEDTLS_PK_HAVE_ECC_KEYS) && !defined(MBEDTLS_PK_USE_PSA_EC_DATA)) || \
|
||||
defined(MBEDTLS_USE_PSA_CRYPTO)
|
||||
unsigned char key_buffer[PSA_EXPORT_PUBLIC_KEY_MAX_SIZE];
|
||||
unsigned char key_buffer[MBEDTLS_PK_MAX_PUBKEY_RAW_LEN];
|
||||
#endif
|
||||
unsigned char *key_data = NULL;
|
||||
size_t key_length = 0;
|
||||
|
||||
Reference in New Issue
Block a user