39 #if (IS_USED(MODULE_PSA_MAC_HMAC_SHA_256))
40 #define CONFIG_PSA_MAX_KEY_SIZE 64
41 #elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P256R1) || \
42 IS_USED(MODULE_PSA_ASYMMETRIC_ECC_ED25519) || \
43 IS_USED(MODULE_PSA_CIPHER_AES_256_CBC) || \
44 IS_USED(MODULE_PSA_AEAD_AES_256_CCM) || \
45 IS_USED(MODULE_PSA_SECURE_ELEMENT_ATECCX08A_ECC_P256) || \
46 IS_USED(MODULE_PSA_CIPHER_CHACHA20))
47 #define CONFIG_PSA_MAX_KEY_SIZE 32
48 #elif (IS_USED(MODULE_PSA_CIPHER_AES_192_CBC) || \
49 IS_USED(MODULE_PSA_AEAD_AES_192_CCM) || \
50 IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P192R1))
51 #define CONFIG_PSA_MAX_KEY_SIZE 24
52 #elif (IS_USED(MODULE_PSA_CIPHER_AES_128_CBC)) || \
53 (IS_USED(MODULE_PSA_AEAD_AES_128_CCM)) || \
54 (IS_USED(MODULE_PSA_CIPHER_AES_128_ECB))
55 #define CONFIG_PSA_MAX_KEY_SIZE 16
57 #define CONFIG_PSA_MAX_KEY_SIZE 0
70 #define PSA_KEY_EXPORT_ECC_KEY_MAX_SIZE(key_type, key_bits) \
72 (PSA_KEY_TYPE_ECC_GET_FAMILY(key_type) == PSA_ECC_FAMILY_TWISTED_EDWARDS ? 32 : \
73 (PSA_KEY_TYPE_ECC_GET_FAMILY(key_type) == PSA_ECC_FAMILY_SECP_R1 ? \
74 PSA_BITS_TO_BYTES(key_bits) : \
113 #define PSA_EXPORT_KEY_OUTPUT_SIZE(key_type, key_bits) \
114 (PSA_KEY_TYPE_IS_PUBLIC_KEY(key_type) ? \
115 PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(key_type, key_bits) : \
116 (PSA_KEY_TYPE_IS_ECC(key_type) ? \
117 PSA_KEY_EXPORT_ECC_KEY_MAX_SIZE(key_type, key_bits) : \
126 #define PSA_ECC_KEY_SIZE_IS_VALID(type, bits) \
127 (PSA_KEY_TYPE_ECC_GET_FAMILY(type) == PSA_ECC_FAMILY_TWISTED_EDWARDS ? \
129 (PSA_KEY_TYPE_ECC_GET_FAMILY(type) == PSA_ECC_FAMILY_SECP_R1 ? \
140 #define PSA_MAX_PRIV_KEY_SIZE (PSA_BYTES_TO_BITS(CONFIG_PSA_MAX_KEY_SIZE))
151 #if (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P256R1) || \
152 IS_USED(MODULE_PSA_SECURE_ELEMENT_ATECCX08A_ECC_P256))
153 #define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
154 (PSA_EXPORT_KEY_OUTPUT_SIZE(PSA_ECC_FAMILY_SECT_R1, 256))
155 #elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_ED25519))
156 #define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
157 (PSA_EXPORT_KEY_OUTPUT_SIZE(PSA_ECC_FAMILY_TWISTED_EDWARDS, 255))
158 #elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P192R1))
159 #define PSA_EXPORT_KEY_PAIR_MAX_SIZE \
160 (PSA_EXPORT_KEY_OUTPUT_SIZE(PSA_ECC_FAMILY_SECT_R1, 192))
162 #define PSA_EXPORT_KEY_PAIR_MAX_SIZE 0
177 #define PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_type, key_bits) \
178 (PSA_KEY_TYPE_ECC_GET_FAMILY(key_type) == PSA_ECC_FAMILY_TWISTED_EDWARDS ? 32 : \
179 ((size_t)(2 * PSA_BITS_TO_BYTES(key_bits) + 1)))
221 #define PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(key_type, key_bits) \
222 (PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_type, key_bits) : \
235 #if (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P256R1) || \
236 IS_USED(MODULE_PSA_SECURE_ELEMENT_ATECCX08A_ECC_P256))
237 #define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
238 (PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_ECC_FAMILY_SECT_R1, 256))
239 #elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_P192R1))
240 #define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
241 (PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_ECC_FAMILY_SECT_R1, 192))
242 #elif (IS_USED(MODULE_PSA_ASYMMETRIC_ECC_ED25519))
243 #define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \
244 (PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_ECC_FAMILY_TWISTED_EDWARDS, 255))
246 #define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE 0
254 #define PSA_MAX_PRIV_KEY_BUFFER_SIZE (PSA_BITS_TO_BYTES(PSA_MAX_PRIV_KEY_SIZE))
259 #define PSA_MAX_ASYMMETRIC_KEYPAIR_SIZE (PSA_BITS_TO_BYTES(PSA_MAX_PRIV_KEY_SIZE) + \
260 PSA_EXPORT_PUBLIC_KEY_MAX_SIZE)
265 #if IS_USED(MODULE_PSA_ASYMMETRIC)
266 #define PSA_MAX_KEY_DATA_SIZE (PSA_EXPORT_PUBLIC_KEY_MAX_SIZE)
268 #define PSA_MAX_KEY_DATA_SIZE (CONFIG_PSA_MAX_KEY_SIZE)
274 #define PSA_MAX_UNSTRUCTURED_KEY_SIZE (CONFIG_PSA_MAX_KEY_SIZE)
Common macros and compiler attributes/pragmas configuration.
Key type definitions for the PSA Crypto API.
Size definitions for the PSA Crypto API.