You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-03 16:55:53 +00:00
mbedTLS: Update to version 3.6.3
(cherry picked from commit 0b0655aee4)
This commit is contained in:
committed by
Rémi Verschelde
parent
abef5e0d23
commit
1e37886e19
@@ -26,16 +26,16 @@
|
||||
*/
|
||||
#define MBEDTLS_VERSION_MAJOR 3
|
||||
#define MBEDTLS_VERSION_MINOR 6
|
||||
#define MBEDTLS_VERSION_PATCH 2
|
||||
#define MBEDTLS_VERSION_PATCH 3
|
||||
|
||||
/**
|
||||
* The single version number has the following structure:
|
||||
* MMNNPP00
|
||||
* Major version | Minor version | Patch version
|
||||
*/
|
||||
#define MBEDTLS_VERSION_NUMBER 0x03060200
|
||||
#define MBEDTLS_VERSION_STRING "3.6.2"
|
||||
#define MBEDTLS_VERSION_STRING_FULL "Mbed TLS 3.6.2"
|
||||
#define MBEDTLS_VERSION_NUMBER 0x03060300
|
||||
#define MBEDTLS_VERSION_STRING "3.6.3"
|
||||
#define MBEDTLS_VERSION_STRING_FULL "Mbed TLS 3.6.3"
|
||||
|
||||
/* Macros for build-time platform detection */
|
||||
|
||||
|
||||
@@ -247,6 +247,9 @@
|
||||
#if defined(MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN) && !defined(MBEDTLS_HAS_MEMSAN)
|
||||
#error "MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN requires building with MemorySanitizer"
|
||||
#endif
|
||||
#if defined(MBEDTLS_HAS_MEMSAN) && defined(MBEDTLS_HAVE_ASM)
|
||||
#error "MemorySanitizer does not support assembly implementation"
|
||||
#endif
|
||||
#undef MBEDTLS_HAS_MEMSAN // temporary macro defined above
|
||||
|
||||
#if defined(MBEDTLS_CCM_C) && \
|
||||
@@ -738,6 +741,11 @@
|
||||
#error "MBEDTLS_PSA_INJECT_ENTROPY is not compatible with MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PSA_KEY_STORE_DYNAMIC) && \
|
||||
defined(MBEDTLS_PSA_STATIC_KEY_SLOTS)
|
||||
#error "MBEDTLS_PSA_KEY_STORE_DYNAMIC and MBEDTLS_PSA_STATIC_KEY_SLOTS cannot be defined simultaneously"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PSA_ITS_FILE_C) && \
|
||||
!defined(MBEDTLS_FS_IO)
|
||||
#error "MBEDTLS_PSA_ITS_FILE_C defined, but not all prerequisites"
|
||||
|
||||
@@ -48,6 +48,13 @@
|
||||
#endif
|
||||
#endif /* _MINGW32__ || (_MSC_VER && (_MSC_VER <= 1900)) */
|
||||
|
||||
/* If MBEDTLS_PSA_CRYPTO_C is defined, make sure MBEDTLS_PSA_CRYPTO_CLIENT
|
||||
* is defined as well to include all PSA code.
|
||||
*/
|
||||
#if defined(MBEDTLS_PSA_CRYPTO_C)
|
||||
#define MBEDTLS_PSA_CRYPTO_CLIENT
|
||||
#endif /* MBEDTLS_PSA_CRYPTO_C */
|
||||
|
||||
/* Auto-enable CIPHER_C when any of the unauthenticated ciphers is builtin
|
||||
* in PSA. */
|
||||
#if defined(MBEDTLS_PSA_CRYPTO_C) && \
|
||||
@@ -158,7 +165,66 @@
|
||||
#define MBEDTLS_MD_SHA3_512_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#endif /* MBEDTLS_PSA_CRYPTO_C */
|
||||
|
||||
#elif defined(MBEDTLS_PSA_CRYPTO_CLIENT)
|
||||
|
||||
#if defined(PSA_WANT_ALG_MD5)
|
||||
#define MBEDTLS_MD_CAN_MD5
|
||||
#define MBEDTLS_MD_MD5_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_SHA_1)
|
||||
#define MBEDTLS_MD_CAN_SHA1
|
||||
#define MBEDTLS_MD_SHA1_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_SHA_224)
|
||||
#define MBEDTLS_MD_CAN_SHA224
|
||||
#define MBEDTLS_MD_SHA224_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_SHA_256)
|
||||
#define MBEDTLS_MD_CAN_SHA256
|
||||
#define MBEDTLS_MD_SHA256_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_SHA_384)
|
||||
#define MBEDTLS_MD_CAN_SHA384
|
||||
#define MBEDTLS_MD_SHA384_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_SHA_512)
|
||||
#define MBEDTLS_MD_CAN_SHA512
|
||||
#define MBEDTLS_MD_SHA512_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_RIPEMD160)
|
||||
#define MBEDTLS_MD_CAN_RIPEMD160
|
||||
#define MBEDTLS_MD_RIPEMD160_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_SHA3_224)
|
||||
#define MBEDTLS_MD_CAN_SHA3_224
|
||||
#define MBEDTLS_MD_SHA3_224_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_SHA3_256)
|
||||
#define MBEDTLS_MD_CAN_SHA3_256
|
||||
#define MBEDTLS_MD_SHA3_256_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_SHA3_384)
|
||||
#define MBEDTLS_MD_CAN_SHA3_384
|
||||
#define MBEDTLS_MD_SHA3_384_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
#if defined(PSA_WANT_ALG_SHA3_512)
|
||||
#define MBEDTLS_MD_CAN_SHA3_512
|
||||
#define MBEDTLS_MD_SHA3_512_VIA_PSA
|
||||
#define MBEDTLS_MD_SOME_PSA
|
||||
#endif
|
||||
|
||||
#endif /* !MBEDTLS_PSA_CRYPTO_CLIENT && !MBEDTLS_PSA_CRYPTO_C */
|
||||
|
||||
/* Built-in implementations */
|
||||
#if defined(MBEDTLS_MD5_C)
|
||||
@@ -352,13 +418,6 @@
|
||||
#define MBEDTLS_PK_CAN_ECDSA_SOME
|
||||
#endif
|
||||
|
||||
/* If MBEDTLS_PSA_CRYPTO_C is defined, make sure MBEDTLS_PSA_CRYPTO_CLIENT
|
||||
* is defined as well to include all PSA code.
|
||||
*/
|
||||
#if defined(MBEDTLS_PSA_CRYPTO_C)
|
||||
#define MBEDTLS_PSA_CRYPTO_CLIENT
|
||||
#endif /* MBEDTLS_PSA_CRYPTO_C */
|
||||
|
||||
/* Helpers to state that each key is supported either on the builtin or PSA side. */
|
||||
#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) || defined(PSA_WANT_ECC_SECP_R1_521)
|
||||
#define MBEDTLS_ECP_HAVE_SECP521R1
|
||||
|
||||
@@ -69,7 +69,6 @@
|
||||
(defined(PSA_WANT_ECC_SECP_R1_384) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384)) || \
|
||||
(defined(PSA_WANT_ECC_SECP_R1_521) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521)) || \
|
||||
(defined(PSA_WANT_ECC_SECP_K1_192) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192)) || \
|
||||
(defined(PSA_WANT_ECC_SECP_K1_224) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224)) || \
|
||||
(defined(PSA_WANT_ECC_SECP_K1_256) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256))
|
||||
#define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES
|
||||
#define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_WEIERSTRASS_CURVES
|
||||
@@ -225,17 +224,6 @@
|
||||
#endif /* missing accel */
|
||||
#endif /* PSA_WANT_ECC_SECP_K1_192 */
|
||||
|
||||
#if defined(PSA_WANT_ECC_SECP_K1_224)
|
||||
#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224) || \
|
||||
defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
|
||||
defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
|
||||
#define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_224 1
|
||||
#define MBEDTLS_ECP_DP_SECP224K1_ENABLED
|
||||
/* https://github.com/Mbed-TLS/mbedtls/issues/3541 */
|
||||
#error "SECP224K1 is buggy via the PSA API in Mbed TLS."
|
||||
#endif /* missing accel */
|
||||
#endif /* PSA_WANT_ECC_SECP_K1_224 */
|
||||
|
||||
#if defined(PSA_WANT_ECC_SECP_K1_256)
|
||||
#if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256) || \
|
||||
defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
|
||||
@@ -782,13 +770,6 @@
|
||||
#define PSA_HAVE_SOFT_BLOCK_CIPHER 1
|
||||
#endif
|
||||
|
||||
#if defined(PSA_WANT_ALG_CBC_MAC)
|
||||
#if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_MAC)
|
||||
#error "CBC-MAC is not yet supported via the PSA API in Mbed TLS."
|
||||
#define MBEDTLS_PSA_BUILTIN_ALG_CBC_MAC 1
|
||||
#endif /* !MBEDTLS_PSA_ACCEL_ALG_CBC_MAC */
|
||||
#endif /* PSA_WANT_ALG_CBC_MAC */
|
||||
|
||||
#if defined(PSA_WANT_ALG_CMAC)
|
||||
#if !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC) || \
|
||||
defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
|
||||
|
||||
@@ -136,13 +136,6 @@
|
||||
#endif /* PSA_WANT_ECC_SECP_K1_192 */
|
||||
#endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
|
||||
|
||||
/* SECP224K1 is buggy via the PSA API (https://github.com/Mbed-TLS/mbedtls/issues/3541) */
|
||||
#if 0 && defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
|
||||
#if !defined(PSA_WANT_ECC_SECP_K1_224)
|
||||
#define PSA_WANT_ECC_SECP_K1_224 1
|
||||
#endif /* PSA_WANT_ECC_SECP_K1_224 */
|
||||
#endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
|
||||
|
||||
#if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
|
||||
#if !defined(PSA_WANT_ECC_SECP_K1_256)
|
||||
#define PSA_WANT_ECC_SECP_K1_256 1
|
||||
|
||||
6
thirdparty/mbedtls/include/mbedtls/debug.h
vendored
6
thirdparty/mbedtls/include/mbedtls/debug.h
vendored
@@ -108,16 +108,16 @@
|
||||
*
|
||||
* This module provides debugging functions.
|
||||
*/
|
||||
#if (defined(__MINGW32__) && __USE_MINGW_ANSI_STDIO == 0) || (defined(_MSC_VER) && _MSC_VER < 1800)
|
||||
#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER < 1900)
|
||||
#include <inttypes.h>
|
||||
#define MBEDTLS_PRINTF_SIZET PRIuPTR
|
||||
#define MBEDTLS_PRINTF_LONGLONG "I64d"
|
||||
#else \
|
||||
/* (defined(__MINGW32__) && __USE_MINGW_ANSI_STDIO == 0) || (defined(_MSC_VER) && _MSC_VER < 1800) */
|
||||
/* defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER < 1900) */
|
||||
#define MBEDTLS_PRINTF_SIZET "zu"
|
||||
#define MBEDTLS_PRINTF_LONGLONG "lld"
|
||||
#endif \
|
||||
/* (defined(__MINGW32__) && __USE_MINGW_ANSI_STDIO == 0) || (defined(_MSC_VER) && _MSC_VER < 1800) */
|
||||
/* defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER < 1900) */
|
||||
|
||||
#if !defined(MBEDTLS_PRINTF_MS_TIME)
|
||||
#include <inttypes.h>
|
||||
|
||||
5
thirdparty/mbedtls/include/mbedtls/entropy.h
vendored
5
thirdparty/mbedtls/include/mbedtls/entropy.h
vendored
@@ -17,12 +17,13 @@
|
||||
|
||||
#include "md.h"
|
||||
|
||||
#if defined(MBEDTLS_MD_CAN_SHA512) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256)
|
||||
#if (defined(MBEDTLS_MD_CAN_SHA512) || defined(PSA_WANT_ALG_SHA_512)) && \
|
||||
!defined(MBEDTLS_ENTROPY_FORCE_SHA256)
|
||||
#define MBEDTLS_ENTROPY_SHA512_ACCUMULATOR
|
||||
#define MBEDTLS_ENTROPY_MD MBEDTLS_MD_SHA512
|
||||
#define MBEDTLS_ENTROPY_BLOCK_SIZE 64 /**< Block size of entropy accumulator (SHA-512) */
|
||||
#else
|
||||
#if defined(MBEDTLS_MD_CAN_SHA256)
|
||||
#if (defined(MBEDTLS_MD_CAN_SHA256) || defined(PSA_WANT_ALG_SHA_256))
|
||||
#define MBEDTLS_ENTROPY_SHA256_ACCUMULATOR
|
||||
#define MBEDTLS_ENTROPY_MD MBEDTLS_MD_SHA256
|
||||
#define MBEDTLS_ENTROPY_BLOCK_SIZE 32 /**< Block size of entropy accumulator (SHA-256) */
|
||||
|
||||
2
thirdparty/mbedtls/include/mbedtls/error.h
vendored
2
thirdparty/mbedtls/include/mbedtls/error.h
vendored
@@ -81,7 +81,7 @@
|
||||
* MD 5 5
|
||||
* HKDF 5 1 (Started from top)
|
||||
* PKCS7 5 12 (Started from 0x5300)
|
||||
* SSL 5 2 (Started from 0x5F00)
|
||||
* SSL 5 3 (Started from 0x5F00)
|
||||
* CIPHER 6 8 (Started from 0x6080)
|
||||
* SSL 6 22 (Started from top, plus 0x6000)
|
||||
* SSL 7 20 (Started from 0x7000, gaps at
|
||||
|
||||
23
thirdparty/mbedtls/include/mbedtls/gcm.h
vendored
23
thirdparty/mbedtls/include/mbedtls/gcm.h
vendored
@@ -115,10 +115,9 @@ int mbedtls_gcm_setkey(mbedtls_gcm_context *ctx,
|
||||
/**
|
||||
* \brief This function performs GCM encryption or decryption of a buffer.
|
||||
*
|
||||
* \note For encryption, the output buffer can be the same as the
|
||||
* input buffer. For decryption, the output buffer cannot be
|
||||
* the same as input buffer. If the buffers overlap, the output
|
||||
* buffer must trail at least 8 Bytes behind the input buffer.
|
||||
* \note The output buffer \p output can be the same as the input
|
||||
* buffer \p input. If \p output is greater than \p input, they
|
||||
* cannot overlap.
|
||||
*
|
||||
* \warning When this function performs a decryption, it outputs the
|
||||
* authentication tag and does not verify that the data is
|
||||
@@ -179,9 +178,11 @@ int mbedtls_gcm_crypt_and_tag(mbedtls_gcm_context *ctx,
|
||||
* \brief This function performs a GCM authenticated decryption of a
|
||||
* buffer.
|
||||
*
|
||||
* \note For decryption, the output buffer cannot be the same as
|
||||
* input buffer. If the buffers overlap, the output buffer
|
||||
* must trail at least 8 Bytes behind the input buffer.
|
||||
* \note The output buffer \p output can be the same as the input
|
||||
* buffer \p input. If \p output is greater than \p input, they
|
||||
* cannot overlap. Implementations which require
|
||||
* MBEDTLS_GCM_ALT to be enabled may not provide support for
|
||||
* overlapping buffers.
|
||||
*
|
||||
* \param ctx The GCM context. This must be initialized.
|
||||
* \param length The length of the ciphertext to decrypt, which is also
|
||||
@@ -287,9 +288,11 @@ int mbedtls_gcm_update_ad(mbedtls_gcm_context *ctx,
|
||||
* to this function during an operation, then it is
|
||||
* correct to use \p output_size = \p input_length.
|
||||
*
|
||||
* \note For decryption, the output buffer cannot be the same as
|
||||
* input buffer. If the buffers overlap, the output buffer
|
||||
* must trail at least 8 Bytes behind the input buffer.
|
||||
* \note The output buffer \p output can be the same as the input
|
||||
* buffer \p input. If \p output is greater than \p input, they
|
||||
* cannot overlap. Implementations which require
|
||||
* MBEDTLS_GCM_ALT to be enabled may not provide support for
|
||||
* overlapping buffers.
|
||||
*
|
||||
* \param ctx The GCM context. This must be initialized.
|
||||
* \param input The buffer holding the input data. If \p input_length
|
||||
|
||||
129
thirdparty/mbedtls/include/mbedtls/mbedtls_config.h
vendored
129
thirdparty/mbedtls/include/mbedtls/mbedtls_config.h
vendored
@@ -1622,6 +1622,46 @@
|
||||
*/
|
||||
//#define MBEDTLS_SSL_ASYNC_PRIVATE
|
||||
|
||||
/** \def MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
|
||||
*
|
||||
* In TLS clients, when a client authenticates a server through its
|
||||
* certificate, the client normally checks three things:
|
||||
* - the certificate chain must be valid;
|
||||
* - the chain must start from a trusted CA;
|
||||
* - the certificate must cover the server name that is expected by the client.
|
||||
*
|
||||
* Omitting any of these checks is generally insecure, and can allow a
|
||||
* malicious server to impersonate a legitimate server.
|
||||
*
|
||||
* The third check may be safely skipped in some unusual scenarios,
|
||||
* such as networks where eavesdropping is a risk but not active attacks,
|
||||
* or a private PKI where the client equally trusts all servers that are
|
||||
* accredited by the root CA.
|
||||
*
|
||||
* You should call mbedtls_ssl_set_hostname() with the expected server name
|
||||
* before starting a TLS handshake on a client (unless the client is
|
||||
* set up to only use PSK-based authentication, which does not rely on the
|
||||
* host name). This configuration option controls what happens if a TLS client
|
||||
* is configured with the authentication mode #MBEDTLS_SSL_VERIFY_REQUIRED
|
||||
* (default), certificate authentication is enabled and the client does not
|
||||
* call mbedtls_ssl_set_hostname():
|
||||
*
|
||||
* - If this option is unset (default), the connection attempt is aborted
|
||||
* with the error #MBEDTLS_ERR_SSL_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME.
|
||||
* - If this option is set, the TLS library does not check the server name
|
||||
* that the certificate is valid for. This is the historical behavior
|
||||
* of Mbed TLS, but may be insecure as explained above.
|
||||
*
|
||||
* Enable this option for strict backward compatibility if you have
|
||||
* determined that it is secure in the scenario where you are using
|
||||
* Mbed TLS.
|
||||
*
|
||||
* \deprecated This option exists only for backward compatibility and will
|
||||
* be removed in the next major version of Mbed TLS.
|
||||
*
|
||||
*/
|
||||
//#define MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
|
||||
|
||||
/**
|
||||
* \def MBEDTLS_SSL_CONTEXT_SERIALIZATION
|
||||
*
|
||||
@@ -1807,6 +1847,11 @@
|
||||
* running handshake hash) only use PSA crypto if
|
||||
* #MBEDTLS_USE_PSA_CRYPTO is enabled.
|
||||
*
|
||||
* \note In multithreaded applications, you must also enable
|
||||
* #MBEDTLS_THREADING_C, even if individual TLS contexts are not
|
||||
* shared between threads, unless only one thread ever calls
|
||||
* TLS functions.
|
||||
*
|
||||
* Uncomment this macro to enable the support for TLS 1.3.
|
||||
*/
|
||||
#define MBEDTLS_SSL_PROTO_TLS1_3
|
||||
@@ -2125,6 +2170,10 @@
|
||||
* before calling any function from the SSL/TLS, X.509 or PK modules, except
|
||||
* for the various mbedtls_xxx_init() functions which can be called at any time.
|
||||
*
|
||||
* \warning In multithreaded applications, you must also enable
|
||||
* #MBEDTLS_THREADING_C, unless only one thread ever calls PSA functions
|
||||
* (`psa_xxx()`), including indirect calls through SSL/TLS, X.509 or PK.
|
||||
*
|
||||
* \note An important and desirable effect of this option is that it allows
|
||||
* PK, X.509 and TLS to take advantage of PSA drivers. For example, enabling
|
||||
* this option is what allows use of drivers for ECDSA, ECDH and EC J-PAKE in
|
||||
@@ -3211,7 +3260,18 @@
|
||||
/**
|
||||
* \def MBEDTLS_PSA_CRYPTO_C
|
||||
*
|
||||
* Enable the Platform Security Architecture cryptography API.
|
||||
* Enable the Platform Security Architecture (PSA) cryptography API.
|
||||
*
|
||||
* \note In multithreaded applications, you must enable #MBEDTLS_THREADING_C,
|
||||
* unless only one thread ever calls `psa_xxx()` functions.
|
||||
* That includes indirect calls, such as:
|
||||
* - performing a TLS handshake if support for TLS 1.3 is enabled;
|
||||
* - using a TLS 1.3 connection;
|
||||
* - indirect calls from PK, X.509 or SSL functions when
|
||||
* #MBEDTLS_USE_PSA_CRYPTO is enabled;
|
||||
* - indirect calls to calculate a hash when #MBEDTLS_MD_C is disabled;
|
||||
* - any other call to a function that requires calling psa_crypto_init()
|
||||
* beforehand.
|
||||
*
|
||||
* Module: library/psa_crypto.c
|
||||
*
|
||||
@@ -3268,6 +3328,26 @@
|
||||
*/
|
||||
#define MBEDTLS_PSA_ITS_FILE_C
|
||||
|
||||
/**
|
||||
* \def MBEDTLS_PSA_STATIC_KEY_SLOTS
|
||||
*
|
||||
* Statically preallocate memory to store keys' material in PSA instead
|
||||
* of allocating it dynamically when required. This allows builds without a
|
||||
* heap, if none of the enabled cryptographic implementations or other features
|
||||
* require it.
|
||||
* This feature affects both volatile and persistent keys which means that
|
||||
* it's not possible to persistently store a key which is larger than
|
||||
* #MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE.
|
||||
*
|
||||
* \note This feature comes with a (potentially) higher RAM usage since:
|
||||
* - All the key slots are allocated no matter if they are used or not.
|
||||
* - Each key buffer's length is #MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE bytes.
|
||||
*
|
||||
* Requires: MBEDTLS_PSA_CRYPTO_C
|
||||
*
|
||||
*/
|
||||
//#define MBEDTLS_PSA_STATIC_KEY_SLOTS
|
||||
|
||||
/**
|
||||
* \def MBEDTLS_RIPEMD160_C
|
||||
*
|
||||
@@ -3611,10 +3691,38 @@
|
||||
* \def MBEDTLS_THREADING_C
|
||||
*
|
||||
* Enable the threading abstraction layer.
|
||||
* By default Mbed TLS assumes it is used in a non-threaded environment or that
|
||||
* contexts are not shared between threads. If you do intend to use contexts
|
||||
*
|
||||
* Traditionally, Mbed TLS assumes it is used in a non-threaded environment or
|
||||
* that contexts are not shared between threads. If you do intend to use contexts
|
||||
* between threads, you will need to enable this layer to prevent race
|
||||
* conditions. See also our Knowledge Base article about threading:
|
||||
* conditions.
|
||||
*
|
||||
* The PSA subsystem has an implicit shared context. Therefore, you must
|
||||
* enable this option if more than one thread may use any part of
|
||||
* Mbed TLS that is implemented on top of the PSA subsystem.
|
||||
*
|
||||
* You must enable this option in multithreaded applications where more than
|
||||
* one thread performs any of the following operations:
|
||||
*
|
||||
* - Any call to a PSA function (`psa_xxx()`).
|
||||
* - Any call to a TLS, X.509 or PK function (`mbedtls_ssl_xxx()`,
|
||||
* `mbedtls_x509_xxx()`, `mbedtls_pkcs7_xxx()`, `mbedtls_pk_xxx()`)
|
||||
* if `MBEDTLS_USE_PSA_CRYPTO` is enabled (regardless of whether individual
|
||||
* TLS, X.509 or PK contexts are shared between threads).
|
||||
* - A TLS 1.3 connection, regardless of the compile-time configuration.
|
||||
* - Any library feature that calculates a hash, if `MBEDTLS_MD_C` is disabled.
|
||||
* As an exception, algorithm-specific low-level modules do not require
|
||||
* threading protection unless the contexts are shared between threads.
|
||||
* - Any library feature that performs symmetric encryption or decryption,
|
||||
* if `MBEDTLS_CIPHER_C` is disabled.
|
||||
* As an exception, algorithm-specific low-level modules do not require
|
||||
* threading protection unless the contexts are shared between threads.
|
||||
* - Any use of a cryptographic context if the same context is used in
|
||||
* multiple threads.
|
||||
* - Any call to a function where the documentation specifies that
|
||||
* psa_crypto_init() must be called prior to that function.
|
||||
*
|
||||
* See also our Knowledge Base article about threading:
|
||||
* https://mbed-tls.readthedocs.io/en/latest/kb/development/thread-safety-and-multi-threading
|
||||
*
|
||||
* Module: library/threading.c
|
||||
@@ -4069,6 +4177,19 @@
|
||||
*/
|
||||
//#define MBEDTLS_PSA_KEY_SLOT_COUNT 32
|
||||
|
||||
/**
|
||||
* \def MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE
|
||||
*
|
||||
* Define the size (in bytes) of each static key buffer when
|
||||
* #MBEDTLS_PSA_STATIC_KEY_SLOTS is set. If not
|
||||
* explicitly defined then it's automatically guessed from available PSA keys
|
||||
* enabled in the build through PSA_WANT_xxx symbols.
|
||||
* If required by the application this parameter can be set to higher values
|
||||
* in order to store larger objects (ex: raw keys), but please note that this
|
||||
* will increase RAM usage.
|
||||
*/
|
||||
//#define MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE 256
|
||||
|
||||
/* RSA OPTIONS */
|
||||
//#define MBEDTLS_RSA_GEN_KEY_MIN_BITS 1024 /**< Minimum RSA key size that can be generated in bits (Minimum possible value is 128 bits) */
|
||||
|
||||
|
||||
@@ -229,7 +229,7 @@ int mbedtls_net_recv(void *ctx, unsigned char *buf, size_t len);
|
||||
|
||||
/**
|
||||
* \brief Write at most 'len' characters. If no error occurs,
|
||||
* the actual amount read is returned.
|
||||
* the actual amount written is returned.
|
||||
*
|
||||
* \param ctx Socket
|
||||
* \param buf The buffer to read from
|
||||
|
||||
19
thirdparty/mbedtls/include/mbedtls/psa_util.h
vendored
19
thirdparty/mbedtls/include/mbedtls/psa_util.h
vendored
@@ -161,6 +161,16 @@ static inline mbedtls_md_type_t mbedtls_md_type_from_psa_alg(psa_algorithm_t psa
|
||||
* \param[out] der_len On success it contains the amount of valid data
|
||||
* (in bytes) written to \p der. It's undefined
|
||||
* in case of failure.
|
||||
*
|
||||
* \note The behavior is undefined if \p der is null,
|
||||
* even if \p der_size is 0.
|
||||
*
|
||||
* \return 0 if successful.
|
||||
* \return #MBEDTLS_ERR_ASN1_BUF_TOO_SMALL if \p der_size
|
||||
* is too small or if \p bits is larger than the
|
||||
* largest supported curve.
|
||||
* \return #MBEDTLS_ERR_ASN1_INVALID_DATA if one of the
|
||||
* numbers in the signature is 0.
|
||||
*/
|
||||
int mbedtls_ecdsa_raw_to_der(size_t bits, const unsigned char *raw, size_t raw_len,
|
||||
unsigned char *der, size_t der_size, size_t *der_len);
|
||||
@@ -177,6 +187,15 @@ int mbedtls_ecdsa_raw_to_der(size_t bits, const unsigned char *raw, size_t raw_l
|
||||
* \param[out] raw_len On success it is updated with the amount of valid
|
||||
* data (in bytes) written to \p raw. It's undefined
|
||||
* in case of failure.
|
||||
*
|
||||
* \return 0 if successful.
|
||||
* \return #MBEDTLS_ERR_ASN1_BUF_TOO_SMALL if \p raw_size
|
||||
* is too small or if \p bits is larger than the
|
||||
* largest supported curve.
|
||||
* \return #MBEDTLS_ERR_ASN1_INVALID_DATA if the data in
|
||||
* \p der is inconsistent with \p bits.
|
||||
* \return An \c MBEDTLS_ERR_ASN1_xxx error code if
|
||||
* \p der is malformed.
|
||||
*/
|
||||
int mbedtls_ecdsa_der_to_raw(size_t bits, const unsigned char *der, size_t der_len,
|
||||
unsigned char *raw, size_t raw_size, size_t *raw_len);
|
||||
|
||||
124
thirdparty/mbedtls/include/mbedtls/ssl.h
vendored
124
thirdparty/mbedtls/include/mbedtls/ssl.h
vendored
@@ -166,6 +166,42 @@
|
||||
#define MBEDTLS_ERR_SSL_VERSION_MISMATCH -0x5F00
|
||||
/** Invalid value in SSL config */
|
||||
#define MBEDTLS_ERR_SSL_BAD_CONFIG -0x5E80
|
||||
/* Error space gap */
|
||||
/** Attempt to verify a certificate without an expected hostname.
|
||||
* This is usually insecure.
|
||||
*
|
||||
* In TLS clients, when a client authenticates a server through its
|
||||
* certificate, the client normally checks three things:
|
||||
* - the certificate chain must be valid;
|
||||
* - the chain must start from a trusted CA;
|
||||
* - the certificate must cover the server name that is expected by the client.
|
||||
*
|
||||
* Omitting any of these checks is generally insecure, and can allow a
|
||||
* malicious server to impersonate a legitimate server.
|
||||
*
|
||||
* The third check may be safely skipped in some unusual scenarios,
|
||||
* such as networks where eavesdropping is a risk but not active attacks,
|
||||
* or a private PKI where the client equally trusts all servers that are
|
||||
* accredited by the root CA.
|
||||
*
|
||||
* You should call mbedtls_ssl_set_hostname() with the expected server name
|
||||
* before starting a TLS handshake on a client (unless the client is
|
||||
* set up to only use PSK-based authentication, which does not rely on the
|
||||
* host name). If you have determined that server name verification is not
|
||||
* required for security in your scenario, call mbedtls_ssl_set_hostname()
|
||||
* with \p NULL as the server name.
|
||||
*
|
||||
* This error is raised if all of the following conditions are met:
|
||||
*
|
||||
* - A TLS client is configured with the authentication mode
|
||||
* #MBEDTLS_SSL_VERIFY_REQUIRED (default).
|
||||
* - Certificate authentication is enabled.
|
||||
* - The client does not call mbedtls_ssl_set_hostname().
|
||||
* - The configuration option
|
||||
* #MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
|
||||
* is not enabled.
|
||||
*/
|
||||
#define MBEDTLS_ERR_SSL_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME -0x5D80
|
||||
|
||||
/*
|
||||
* Constants from RFC 8446 for TLS 1.3 PSK modes
|
||||
@@ -1893,8 +1929,35 @@ struct mbedtls_ssl_context {
|
||||
* User settings
|
||||
*/
|
||||
#if defined(MBEDTLS_X509_CRT_PARSE_C)
|
||||
char *MBEDTLS_PRIVATE(hostname); /*!< expected peer CN for verification
|
||||
(and SNI if available) */
|
||||
/** Expected peer CN for verification.
|
||||
*
|
||||
* Also used on clients for SNI,
|
||||
* and for TLS 1.3 session resumption using tickets.
|
||||
*
|
||||
* The value of this field can be:
|
||||
* - \p NULL in a newly initialized or reset context.
|
||||
* - A heap-allocated copy of the last value passed to
|
||||
* mbedtls_ssl_set_hostname(), if the last call had a non-null
|
||||
* \p hostname argument.
|
||||
* - A special value to indicate that mbedtls_ssl_set_hostname()
|
||||
* was called with \p NULL (as opposed to never having been called).
|
||||
* See `mbedtls_ssl_get_hostname_pointer()` in `ssl_tls.c`.
|
||||
*
|
||||
* If this field contains the value \p NULL and the configuration option
|
||||
* #MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
|
||||
* is unset, on a TLS client, attempting to verify a server certificate
|
||||
* results in the error
|
||||
* #MBEDTLS_ERR_SSL_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME.
|
||||
*
|
||||
* If this field contains the special value described above, or if
|
||||
* the value is \p NULL and the configuration option
|
||||
* #MBEDTLS_SSL_CLI_ALLOW_WEAK_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
|
||||
* is set, then the peer name verification is skipped, which may be
|
||||
* insecure, especially on a client. Furthermore, on a client, the
|
||||
* server_name extension is not sent, and the server name is ignored
|
||||
* in TLS 1.3 session resumption using tickets.
|
||||
*/
|
||||
char *MBEDTLS_PRIVATE(hostname);
|
||||
#endif /* MBEDTLS_X509_CRT_PARSE_C */
|
||||
|
||||
#if defined(MBEDTLS_SSL_ALPN)
|
||||
@@ -2002,6 +2065,14 @@ void mbedtls_ssl_init(mbedtls_ssl_context *ssl);
|
||||
* Calling mbedtls_ssl_setup again is not supported, even
|
||||
* if no session is active.
|
||||
*
|
||||
* \warning After setting up a client context, if certificate-based
|
||||
* authentication is enabled, you should call
|
||||
* mbedtls_ssl_set_hostname() to specifiy the expected
|
||||
* name of the server. Without this, in most scenarios,
|
||||
* the TLS connection is insecure. See
|
||||
* #MBEDTLS_ERR_SSL_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
|
||||
* for more information.
|
||||
*
|
||||
* \note If #MBEDTLS_USE_PSA_CRYPTO is enabled, the PSA crypto
|
||||
* subsystem must have been initialized by calling
|
||||
* psa_crypto_init() before calling this function.
|
||||
@@ -3976,16 +4047,29 @@ void mbedtls_ssl_conf_sig_algs(mbedtls_ssl_config *conf,
|
||||
#if defined(MBEDTLS_X509_CRT_PARSE_C)
|
||||
/**
|
||||
* \brief Set or reset the hostname to check against the received
|
||||
* server certificate. It sets the ServerName TLS extension,
|
||||
* too, if that extension is enabled. (client-side only)
|
||||
* peer certificate. On a client, this also sets the
|
||||
* ServerName TLS extension, if that extension is enabled.
|
||||
* On a TLS 1.3 client, this also sets the server name in
|
||||
* the session resumption ticket, if that feature is enabled.
|
||||
*
|
||||
* \param ssl SSL context
|
||||
* \param hostname the server hostname, may be NULL to clear hostname
|
||||
|
||||
* \note Maximum hostname length MBEDTLS_SSL_MAX_HOST_NAME_LEN.
|
||||
* \param hostname The server hostname. This may be \c NULL to clear
|
||||
* the hostname.
|
||||
*
|
||||
* \return 0 if successful, MBEDTLS_ERR_SSL_ALLOC_FAILED on
|
||||
* allocation failure, MBEDTLS_ERR_SSL_BAD_INPUT_DATA on
|
||||
* \note Maximum hostname length #MBEDTLS_SSL_MAX_HOST_NAME_LEN.
|
||||
*
|
||||
* \note If the hostname is \c NULL on a client, then the server
|
||||
* is not authenticated: it only needs to have a valid
|
||||
* certificate, not a certificate matching its name.
|
||||
* Therefore you should always call this function on a client,
|
||||
* unless the connection is set up to only allow
|
||||
* pre-shared keys, or in scenarios where server
|
||||
* impersonation is not a concern. See the documentation of
|
||||
* #MBEDTLS_ERR_SSL_CERTIFICATE_VERIFICATION_WITHOUT_HOSTNAME
|
||||
* for more details.
|
||||
*
|
||||
* \return 0 if successful, #MBEDTLS_ERR_SSL_ALLOC_FAILED on
|
||||
* allocation failure, #MBEDTLS_ERR_SSL_BAD_INPUT_DATA on
|
||||
* too long input hostname.
|
||||
*
|
||||
* Hostname set to the one provided on success (cleared
|
||||
@@ -4449,6 +4533,10 @@ void mbedtls_ssl_conf_cert_req_ca_list(mbedtls_ssl_config *conf,
|
||||
* with \c mbedtls_ssl_read()), not handshake messages.
|
||||
* With DTLS, this affects both ApplicationData and handshake.
|
||||
*
|
||||
* \note Defragmentation of TLS handshake messages is supported
|
||||
* with some limitations. See the documentation of
|
||||
* mbedtls_ssl_handshake() for details.
|
||||
*
|
||||
* \note This sets the maximum length for a record's payload,
|
||||
* excluding record overhead that will be added to it, see
|
||||
* \c mbedtls_ssl_get_record_expansion().
|
||||
@@ -4979,6 +5067,24 @@ int mbedtls_ssl_get_session(const mbedtls_ssl_context *ssl,
|
||||
* if a negotiation involving TLS 1.3 takes place (this may
|
||||
* be the case even if TLS 1.3 is offered but eventually
|
||||
* not selected).
|
||||
*
|
||||
* \note In TLS, reception of fragmented handshake messages is
|
||||
* supported with some limitations (those limitations do
|
||||
* not apply to DTLS, where defragmentation is fully
|
||||
* supported):
|
||||
* - On an Mbed TLS server that only accepts TLS 1.2,
|
||||
* the initial ClientHello message must not be fragmented.
|
||||
* A TLS 1.2 ClientHello may be fragmented if the server
|
||||
* also accepts TLS 1.3 connections (meaning
|
||||
* that #MBEDTLS_SSL_PROTO_TLS1_3 enabled, and the
|
||||
* accepted versions have not been restricted with
|
||||
* mbedtls_ssl_conf_max_tls_version() or the like).
|
||||
* - The first fragment of a handshake message must be
|
||||
* at least 4 bytes long.
|
||||
* - Non-handshake records must not be interleaved between
|
||||
* the fragments of a handshake message. (This is permitted
|
||||
* in TLS 1.2 but not in TLS 1.3, but Mbed TLS rejects it
|
||||
* even in TLS 1.2.)
|
||||
*/
|
||||
int mbedtls_ssl_handshake(mbedtls_ssl_context *ssl);
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ typedef struct mbedtls_threading_mutex_t {
|
||||
pthread_mutex_t MBEDTLS_PRIVATE(mutex);
|
||||
|
||||
/* WARNING - state should only be accessed when holding the mutex lock in
|
||||
* tests/src/threading_helpers.c, otherwise corruption can occur.
|
||||
* framework/tests/src/threading_helpers.c, otherwise corruption can occur.
|
||||
* state will be 0 after a failed init or a free, and nonzero after a
|
||||
* successful init. This field is for testing only and thus not considered
|
||||
* part of the public API of Mbed TLS and may change without notice.*/
|
||||
|
||||
14
thirdparty/mbedtls/include/psa/crypto_config.h
vendored
14
thirdparty/mbedtls/include/psa/crypto_config.h
vendored
@@ -38,10 +38,6 @@
|
||||
#ifndef PSA_CRYPTO_CONFIG_H
|
||||
#define PSA_CRYPTO_CONFIG_H
|
||||
|
||||
/*
|
||||
* CBC-MAC is not yet supported via the PSA API in Mbed TLS.
|
||||
*/
|
||||
//#define PSA_WANT_ALG_CBC_MAC 1
|
||||
#define PSA_WANT_ALG_CBC_NO_PADDING 1
|
||||
#define PSA_WANT_ALG_CBC_PKCS7 1
|
||||
#define PSA_WANT_ALG_CCM 1
|
||||
@@ -84,22 +80,12 @@
|
||||
#define PSA_WANT_ALG_TLS12_PSK_TO_MS 1
|
||||
#define PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS 1
|
||||
|
||||
/* XTS is not yet supported via the PSA API in Mbed TLS.
|
||||
* Note: when adding support, also adjust include/mbedtls/config_psa.h */
|
||||
//#define PSA_WANT_ALG_XTS 1
|
||||
|
||||
#define PSA_WANT_ECC_BRAINPOOL_P_R1_256 1
|
||||
#define PSA_WANT_ECC_BRAINPOOL_P_R1_384 1
|
||||
#define PSA_WANT_ECC_BRAINPOOL_P_R1_512 1
|
||||
#define PSA_WANT_ECC_MONTGOMERY_255 1
|
||||
#define PSA_WANT_ECC_MONTGOMERY_448 1
|
||||
#define PSA_WANT_ECC_SECP_K1_192 1
|
||||
/*
|
||||
* SECP224K1 is buggy via the PSA API in Mbed TLS
|
||||
* (https://github.com/Mbed-TLS/mbedtls/issues/3541). Thus, do not enable it by
|
||||
* default.
|
||||
*/
|
||||
//#define PSA_WANT_ECC_SECP_K1_224 1
|
||||
#define PSA_WANT_ECC_SECP_K1_256 1
|
||||
#define PSA_WANT_ECC_SECP_R1_192 1
|
||||
#define PSA_WANT_ECC_SECP_R1_224 1
|
||||
|
||||
39
thirdparty/mbedtls/include/psa/crypto_extra.h
vendored
39
thirdparty/mbedtls/include/psa/crypto_extra.h
vendored
@@ -32,6 +32,16 @@ extern "C" {
|
||||
#define MBEDTLS_PSA_KEY_SLOT_COUNT 32
|
||||
#endif
|
||||
|
||||
/* If the size of static key slots is not explicitly defined by the user, then
|
||||
* set it to the maximum between PSA_EXPORT_KEY_PAIR_OR_PUBLIC_MAX_SIZE and
|
||||
* PSA_CIPHER_MAX_KEY_LENGTH.
|
||||
* See mbedtls_config.h for the definition. */
|
||||
#if !defined(MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE)
|
||||
#define MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE \
|
||||
((PSA_EXPORT_KEY_PAIR_OR_PUBLIC_MAX_SIZE > PSA_CIPHER_MAX_KEY_LENGTH) ? \
|
||||
PSA_EXPORT_KEY_PAIR_OR_PUBLIC_MAX_SIZE : PSA_CIPHER_MAX_KEY_LENGTH)
|
||||
#endif /* !MBEDTLS_PSA_STATIC_KEY_SLOT_BUFFER_SIZE*/
|
||||
|
||||
/** \addtogroup attributes
|
||||
* @{
|
||||
*/
|
||||
@@ -573,6 +583,35 @@ psa_status_t mbedtls_psa_platform_get_builtin_key(
|
||||
|
||||
/** @} */
|
||||
|
||||
/** \defgroup psa_crypto_client Functions defined by a client provider
|
||||
*
|
||||
* The functions in this group are meant to be implemented by providers of
|
||||
* the PSA Crypto client interface. They are provided by the library when
|
||||
* #MBEDTLS_PSA_CRYPTO_C is enabled.
|
||||
*
|
||||
* \note All functions in this group are experimental, as using
|
||||
* alternative client interface providers is experimental.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** Check if PSA is capable of handling the specified hash algorithm.
|
||||
*
|
||||
* This means that PSA core was built with the corresponding PSA_WANT_ALG_xxx
|
||||
* set and that psa_crypto_init has already been called.
|
||||
*
|
||||
* \note When using Mbed TLS version of PSA core (i.e. MBEDTLS_PSA_CRYPTO_C is
|
||||
* set) for now this function only checks the state of the driver
|
||||
* subsystem, not the algorithm. This might be improved in the future.
|
||||
*
|
||||
* \param hash_alg The hash algorithm.
|
||||
*
|
||||
* \return 1 if the PSA can handle \p hash_alg, 0 otherwise.
|
||||
*/
|
||||
int psa_can_do_hash(psa_algorithm_t hash_alg);
|
||||
|
||||
/**@}*/
|
||||
|
||||
/** \addtogroup crypto_types
|
||||
* @{
|
||||
*/
|
||||
|
||||
25
thirdparty/mbedtls/include/psa/crypto_sizes.h
vendored
25
thirdparty/mbedtls/include/psa/crypto_sizes.h
vendored
@@ -1038,6 +1038,10 @@
|
||||
PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS)
|
||||
#endif
|
||||
|
||||
#define PSA_EXPORT_KEY_PAIR_OR_PUBLIC_MAX_SIZE \
|
||||
((PSA_EXPORT_KEY_PAIR_MAX_SIZE > PSA_EXPORT_PUBLIC_KEY_MAX_SIZE) ? \
|
||||
PSA_EXPORT_KEY_PAIR_MAX_SIZE : PSA_EXPORT_PUBLIC_KEY_MAX_SIZE)
|
||||
|
||||
/** Sufficient output buffer size for psa_raw_key_agreement().
|
||||
*
|
||||
* This macro returns a compile-time constant if its arguments are
|
||||
@@ -1085,6 +1089,27 @@
|
||||
#define PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE PSA_BITS_TO_BYTES(PSA_VENDOR_FFDH_MAX_KEY_BITS)
|
||||
#endif
|
||||
|
||||
/** Maximum key length for ciphers.
|
||||
*
|
||||
* Since there is no additional PSA_WANT_xxx symbol to specifiy the size of
|
||||
* the key once a cipher is enabled (as it happens for asymmetric keys for
|
||||
* example), the maximum key length is taken into account for each cipher.
|
||||
* The resulting value will be the maximum cipher's key length given depending
|
||||
* on which ciphers are enabled.
|
||||
*
|
||||
* Note: max value for AES used below would be doubled if XTS were enabled, but
|
||||
* this mode is currently not supported in Mbed TLS implementation of PSA
|
||||
* APIs.
|
||||
*/
|
||||
#if (defined(PSA_WANT_KEY_TYPE_AES) || defined(PSA_WANT_KEY_TYPE_ARIA) || \
|
||||
defined(PSA_WANT_KEY_TYPE_CAMELLIA) || defined(PSA_WANT_KEY_TYPE_CHACHA20))
|
||||
#define PSA_CIPHER_MAX_KEY_LENGTH 32u
|
||||
#elif defined(PSA_WANT_KEY_TYPE_DES)
|
||||
#define PSA_CIPHER_MAX_KEY_LENGTH 24u
|
||||
#else
|
||||
#define PSA_CIPHER_MAX_KEY_LENGTH 0u
|
||||
#endif
|
||||
|
||||
/** The default IV size for a cipher algorithm, in bytes.
|
||||
*
|
||||
* The IV that is generated as part of a call to #psa_cipher_encrypt() is always
|
||||
|
||||
Reference in New Issue
Block a user