Adapt size macros for FFDH
Signed-off-by: Przemek Stekiel <przemyslaw.stekiel@mobica.com>
This commit is contained in:
parent
fedd134300
commit
ed23b61020
1 changed files with 39 additions and 5 deletions
|
@ -195,6 +195,12 @@
|
||||||
* operations, and does not need to accept all key sizes up to the limit. */
|
* operations, and does not need to accept all key sizes up to the limit. */
|
||||||
#define PSA_VENDOR_RSA_MAX_KEY_BITS 4096
|
#define PSA_VENDOR_RSA_MAX_KEY_BITS 4096
|
||||||
|
|
||||||
|
/* The maximum size of an FFDH key on this implementation, in bits.
|
||||||
|
*
|
||||||
|
* Note that an implementation may set different size limits for different
|
||||||
|
* operations, and does not need to accept all key sizes up to the limit. */
|
||||||
|
#define PSA_VENDOR_FFDH_MAX_KEY_BITS 8192
|
||||||
|
|
||||||
/* The maximum size of an ECC key on this implementation, in bits.
|
/* The maximum size of an ECC key on this implementation, in bits.
|
||||||
* This is a vendor-specific macro. */
|
* This is a vendor-specific macro. */
|
||||||
#if defined(PSA_WANT_ECC_SECP_R1_521)
|
#if defined(PSA_WANT_ECC_SECP_R1_521)
|
||||||
|
@ -804,6 +810,18 @@
|
||||||
#define PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) \
|
#define PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) \
|
||||||
(PSA_BITS_TO_BYTES(key_bits))
|
(PSA_BITS_TO_BYTES(key_bits))
|
||||||
|
|
||||||
|
/* Maximum size of the export encoding of an FFDH key pair.
|
||||||
|
*
|
||||||
|
* An FFDH key pair is represented by the secret value.
|
||||||
|
*/
|
||||||
|
#define PSA_KEY_EXPORT_FFDH_KEY_PAIR_MAX_SIZE(key_bits) \
|
||||||
|
(PSA_BITS_TO_BYTES(key_bits))
|
||||||
|
|
||||||
|
/* Maximum size of the export encoding of an FFDH public key.
|
||||||
|
*/
|
||||||
|
#define PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(key_bits) \
|
||||||
|
(PSA_BITS_TO_BYTES(key_bits))
|
||||||
|
|
||||||
/** Sufficient output buffer size for psa_export_key() or
|
/** Sufficient output buffer size for psa_export_key() or
|
||||||
* psa_export_public_key().
|
* psa_export_public_key().
|
||||||
*
|
*
|
||||||
|
@ -845,6 +863,7 @@
|
||||||
*/
|
*/
|
||||||
#define PSA_EXPORT_KEY_OUTPUT_SIZE(key_type, key_bits) \
|
#define PSA_EXPORT_KEY_OUTPUT_SIZE(key_type, key_bits) \
|
||||||
(PSA_KEY_TYPE_IS_UNSTRUCTURED(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \
|
(PSA_KEY_TYPE_IS_UNSTRUCTURED(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \
|
||||||
|
PSA_KEY_TYPE_IS_DH(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \
|
||||||
(key_type) == PSA_KEY_TYPE_RSA_KEY_PAIR ? PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) : \
|
(key_type) == PSA_KEY_TYPE_RSA_KEY_PAIR ? PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) : \
|
||||||
(key_type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \
|
(key_type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \
|
||||||
(key_type) == PSA_KEY_TYPE_DSA_KEY_PAIR ? PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) : \
|
(key_type) == PSA_KEY_TYPE_DSA_KEY_PAIR ? PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) : \
|
||||||
|
@ -901,6 +920,7 @@
|
||||||
#define PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(key_type, key_bits) \
|
#define PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(key_type, key_bits) \
|
||||||
(PSA_KEY_TYPE_IS_RSA(key_type) ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \
|
(PSA_KEY_TYPE_IS_RSA(key_type) ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \
|
||||||
PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \
|
PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \
|
||||||
|
PSA_KEY_TYPE_IS_DH(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \
|
||||||
0)
|
0)
|
||||||
|
|
||||||
/** Sufficient buffer size for exporting any asymmetric key pair.
|
/** Sufficient buffer size for exporting any asymmetric key pair.
|
||||||
|
@ -914,8 +934,14 @@
|
||||||
#define 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) > \
|
(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) ? \
|
PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) ? \
|
||||||
|
PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) > \
|
||||||
|
PSA_KEY_EXPORT_FFDH_KEY_PAIR_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS) ? \
|
||||||
PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) : \
|
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))
|
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_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_KEY_EXPORT_FFDH_KEY_PAIR_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS))
|
||||||
|
|
||||||
/** Sufficient buffer size for exporting any asymmetric public key.
|
/** Sufficient buffer size for exporting any asymmetric public key.
|
||||||
*
|
*
|
||||||
|
@ -929,8 +955,14 @@
|
||||||
#define 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) > \
|
(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_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) ? \
|
||||||
|
PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) > \
|
||||||
|
PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS) ? \
|
||||||
PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) : \
|
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) : \
|
||||||
|
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) ? \
|
||||||
|
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))
|
||||||
|
|
||||||
/** Sufficient output buffer size for psa_raw_key_agreement().
|
/** Sufficient output buffer size for psa_raw_key_agreement().
|
||||||
*
|
*
|
||||||
|
@ -955,11 +987,13 @@
|
||||||
* If the parameters are not valid,
|
* If the parameters are not valid,
|
||||||
* the return value is unspecified.
|
* the return value is unspecified.
|
||||||
*/
|
*/
|
||||||
/* FFDH is not yet supported in PSA. */
|
|
||||||
#define PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE(key_type, key_bits) \
|
#define PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE(key_type, key_bits) \
|
||||||
(PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type) ? \
|
(PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type) ? \
|
||||||
PSA_BITS_TO_BYTES(key_bits) : \
|
PSA_BITS_TO_BYTES(key_bits) : \
|
||||||
0)
|
PSA_KEY_TYPE_IS_DH_KEY_PAIR(key_type) ? \
|
||||||
|
PSA_BITS_TO_BYTES(key_bits) : \
|
||||||
|
0 \
|
||||||
|
)
|
||||||
|
|
||||||
/** Maximum size of the output from psa_raw_key_agreement().
|
/** Maximum size of the output from psa_raw_key_agreement().
|
||||||
*
|
*
|
||||||
|
@ -969,7 +1003,7 @@
|
||||||
* 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 \
|
||||||
(PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS))
|
(PSA_BITS_TO_BYTES(PSA_VENDOR_FFDH_MAX_KEY_BITS))
|
||||||
|
|
||||||
/** The default IV size for a cipher algorithm, in bytes.
|
/** The default IV size for a cipher algorithm, in bytes.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue