mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-03-31 19:21:18 +00:00
Merge pull request #8002 from valeriosetti/issue7904
PSA maximum size macro definitions should take support into account
This commit is contained in:
commit
895074e3f9
@ -633,10 +633,18 @@
|
|||||||
* This macro expands to a compile-time constant integer. This value
|
* This macro expands to a compile-time constant integer. This value
|
||||||
* is the maximum size of a signature in bytes.
|
* is the maximum size of a signature in bytes.
|
||||||
*/
|
*/
|
||||||
#define PSA_SIGNATURE_MAX_SIZE \
|
#define PSA_SIGNATURE_MAX_SIZE 1
|
||||||
(PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) > PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE ? \
|
|
||||||
PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) : \
|
#if (defined(PSA_WANT_ALG_ECDSA) || defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA)) && \
|
||||||
PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE)
|
(PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE > PSA_SIGNATURE_MAX_SIZE)
|
||||||
|
#undef PSA_SIGNATURE_MAX_SIZE
|
||||||
|
#define PSA_SIGNATURE_MAX_SIZE PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE
|
||||||
|
#endif
|
||||||
|
#if (defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) || defined(PSA_WANT_ALG_RSA_PSS)) && \
|
||||||
|
(PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) > PSA_SIGNATURE_MAX_SIZE)
|
||||||
|
#undef PSA_SIGNATURE_MAX_SIZE
|
||||||
|
#define PSA_SIGNATURE_MAX_SIZE PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS)
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Sufficient output buffer size for psa_asymmetric_encrypt().
|
/** Sufficient output buffer size for psa_asymmetric_encrypt().
|
||||||
*
|
*
|
||||||
@ -948,10 +956,29 @@
|
|||||||
*
|
*
|
||||||
* See also #PSA_EXPORT_KEY_OUTPUT_SIZE(\p key_type, \p key_bits).
|
* See also #PSA_EXPORT_KEY_OUTPUT_SIZE(\p key_type, \p key_bits).
|
||||||
*/
|
*/
|
||||||
#define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
|
#define PSA_EXPORT_KEY_PAIR_MAX_SIZE 1
|
||||||
PSA_MAX_OF_THREE(PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS), \
|
|
||||||
PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS), \
|
#if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) && \
|
||||||
PSA_KEY_EXPORT_FFDH_KEY_PAIR_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS))
|
(PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) > \
|
||||||
|
PSA_EXPORT_KEY_PAIR_MAX_SIZE)
|
||||||
|
#undef PSA_EXPORT_KEY_PAIR_MAX_SIZE
|
||||||
|
#define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
|
||||||
|
PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
|
||||||
|
#endif
|
||||||
|
#if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) && \
|
||||||
|
(PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) > \
|
||||||
|
PSA_EXPORT_KEY_PAIR_MAX_SIZE)
|
||||||
|
#undef PSA_EXPORT_KEY_PAIR_MAX_SIZE
|
||||||
|
#define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
|
||||||
|
PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS)
|
||||||
|
#endif
|
||||||
|
#if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC) && \
|
||||||
|
(PSA_KEY_EXPORT_FFDH_KEY_PAIR_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS) > \
|
||||||
|
PSA_EXPORT_KEY_PAIR_MAX_SIZE)
|
||||||
|
#undef PSA_EXPORT_KEY_PAIR_MAX_SIZE
|
||||||
|
#define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
|
||||||
|
PSA_KEY_EXPORT_FFDH_KEY_PAIR_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS)
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Sufficient buffer size for exporting any asymmetric public key.
|
/** Sufficient buffer size for exporting any asymmetric public key.
|
||||||
*
|
*
|
||||||
@ -962,11 +989,29 @@
|
|||||||
*
|
*
|
||||||
* See also #PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(\p key_type, \p key_bits).
|
* See also #PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(\p key_type, \p key_bits).
|
||||||
*/
|
*/
|
||||||
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
|
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE 1
|
||||||
PSA_MAX_OF_THREE(PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS), \
|
|
||||||
PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS), \
|
|
||||||
PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS))
|
|
||||||
|
|
||||||
|
#if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) && \
|
||||||
|
(PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) > \
|
||||||
|
PSA_EXPORT_PUBLIC_KEY_MAX_SIZE)
|
||||||
|
#undef PSA_EXPORT_PUBLIC_KEY_MAX_SIZE
|
||||||
|
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
|
||||||
|
PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
|
||||||
|
#endif
|
||||||
|
#if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) && \
|
||||||
|
(PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) > \
|
||||||
|
PSA_EXPORT_PUBLIC_KEY_MAX_SIZE)
|
||||||
|
#undef PSA_EXPORT_PUBLIC_KEY_MAX_SIZE
|
||||||
|
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
|
||||||
|
PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS)
|
||||||
|
#endif
|
||||||
|
#if defined(PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY) && \
|
||||||
|
(PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS) > \
|
||||||
|
PSA_EXPORT_PUBLIC_KEY_MAX_SIZE)
|
||||||
|
#undef PSA_EXPORT_PUBLIC_KEY_MAX_SIZE
|
||||||
|
#define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
|
||||||
|
PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS)
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Sufficient output buffer size for psa_raw_key_agreement().
|
/** Sufficient output buffer size for psa_raw_key_agreement().
|
||||||
*
|
*
|
||||||
@ -1002,11 +1047,18 @@
|
|||||||
*
|
*
|
||||||
* See also #PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE(\p key_type, \p key_bits).
|
* See also #PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE(\p key_type, \p key_bits).
|
||||||
*/
|
*/
|
||||||
#define PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE \
|
#define PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE 1
|
||||||
(PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS) > \
|
|
||||||
PSA_BITS_TO_BYTES(PSA_VENDOR_FFDH_MAX_KEY_BITS) ? \
|
#if defined(PSA_WANT_ALG_ECDH) && \
|
||||||
PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS) : \
|
(PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS) > PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE)
|
||||||
PSA_BITS_TO_BYTES(PSA_VENDOR_FFDH_MAX_KEY_BITS))
|
#undef PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE
|
||||||
|
#define PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS)
|
||||||
|
#endif
|
||||||
|
#if defined(PSA_WANT_ALG_FFDH) && \
|
||||||
|
(PSA_BITS_TO_BYTES(PSA_VENDOR_FFDH_MAX_KEY_BITS) > PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE)
|
||||||
|
#undef PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE
|
||||||
|
#define PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE PSA_BITS_TO_BYTES(PSA_VENDOR_FFDH_MAX_KEY_BITS)
|
||||||
|
#endif
|
||||||
|
|
||||||
/** The default IV size for a cipher algorithm, in bytes.
|
/** The default IV size for a cipher algorithm, in bytes.
|
||||||
*
|
*
|
||||||
|
@ -1590,7 +1590,11 @@ void import_export(data_t *data,
|
|||||||
TEST_LE_U(exported_length,
|
TEST_LE_U(exported_length,
|
||||||
PSA_EXPORT_KEY_OUTPUT_SIZE(type,
|
PSA_EXPORT_KEY_OUTPUT_SIZE(type,
|
||||||
psa_get_key_bits(&got_attributes)));
|
psa_get_key_bits(&got_attributes)));
|
||||||
TEST_LE_U(exported_length, PSA_EXPORT_KEY_PAIR_MAX_SIZE);
|
if (PSA_KEY_TYPE_IS_KEY_PAIR(type)) {
|
||||||
|
TEST_LE_U(exported_length, PSA_EXPORT_KEY_PAIR_MAX_SIZE);
|
||||||
|
} else if (PSA_KEY_TYPE_IS_PUBLIC_KEY(type)) {
|
||||||
|
TEST_LE_U(exported_length, PSA_EXPORT_PUBLIC_KEY_MAX_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
destroy:
|
destroy:
|
||||||
/* Destroy the key */
|
/* Destroy the key */
|
||||||
|
@ -360,7 +360,7 @@ void key_agreement_fail(int key_type_arg, data_t *key_data,
|
|||||||
mbedtls_svc_key_id_t key_id = MBEDTLS_SVC_KEY_ID_INIT;
|
mbedtls_svc_key_id_t key_id = MBEDTLS_SVC_KEY_ID_INIT;
|
||||||
uint8_t public_key[PSA_EXPORT_PUBLIC_KEY_MAX_SIZE] = { 0 };
|
uint8_t public_key[PSA_EXPORT_PUBLIC_KEY_MAX_SIZE] = { 0 };
|
||||||
size_t public_key_length = SIZE_MAX;
|
size_t public_key_length = SIZE_MAX;
|
||||||
uint8_t output[PSA_SIGNATURE_MAX_SIZE] = { 0 };
|
uint8_t output[PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE] = { 0 };
|
||||||
size_t length = SIZE_MAX;
|
size_t length = SIZE_MAX;
|
||||||
psa_key_derivation_operation_t operation = PSA_KEY_DERIVATION_OPERATION_INIT;
|
psa_key_derivation_operation_t operation = PSA_KEY_DERIVATION_OPERATION_INIT;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user