 |
 |
Go to the documentation of this file. 44 #ifndef PSA_CRYPTO_SIZES_H 45 #define PSA_CRYPTO_SIZES_H 50 #if defined(MBEDTLS_CONFIG_FILE) 51 #include MBEDTLS_CONFIG_FILE 54 #define PSA_BITS_TO_BYTES(bits) (((bits) + 7u) / 8u) 55 #define PSA_BYTES_TO_BITS(bytes) ((bytes) * 8u) 56 #define PSA_MAX_OF_THREE(a, b, c) ((a) <= (b) ? (b) <= (c) ? \ 57 (c) : (b) : (a) <= (c) ? (c) : (a)) 59 #define PSA_ROUND_UP_TO_MULTIPLE(block_size, length) \ 60 (((length) + (block_size) - 1) / (block_size) * (block_size)) 74 #define PSA_HASH_LENGTH(alg) \ 76 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16u : \ 77 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20u : \ 78 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20u : \ 79 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28u : \ 80 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32u : \ 81 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48u : \ 82 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64u : \ 83 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28u : \ 84 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32u : \ 85 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28u : \ 86 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32u : \ 87 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48u : \ 88 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64u : \ 106 #define PSA_HASH_BLOCK_LENGTH(alg) \ 108 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 64u : \ 109 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 64u : \ 110 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 64u : \ 111 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 64u : \ 112 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 64u : \ 113 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 128u : \ 114 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 128u : \ 115 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 128u : \ 116 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 128u : \ 117 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 144u : \ 118 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 136u : \ 119 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 104u : \ 120 PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 72u : \ 135 #if defined(PSA_WANT_ALG_SHA3_224) 136 #define PSA_HMAC_MAX_HASH_BLOCK_SIZE 144u 137 #elif defined(PSA_WANT_ALG_SHA3_256) 138 #define PSA_HMAC_MAX_HASH_BLOCK_SIZE 136u 139 #elif defined(PSA_WANT_ALG_SHA_512) 140 #define PSA_HMAC_MAX_HASH_BLOCK_SIZE 128u 141 #elif defined(PSA_WANT_ALG_SHA_384) 142 #define PSA_HMAC_MAX_HASH_BLOCK_SIZE 128u 143 #elif defined(PSA_WANT_ALG_SHA3_384) 144 #define PSA_HMAC_MAX_HASH_BLOCK_SIZE 104u 145 #elif defined(PSA_WANT_ALG_SHA3_512) 146 #define PSA_HMAC_MAX_HASH_BLOCK_SIZE 72u 147 #elif defined(PSA_WANT_ALG_SHA_256) 148 #define PSA_HMAC_MAX_HASH_BLOCK_SIZE 64u 149 #elif defined(PSA_WANT_ALG_SHA_224) 150 #define PSA_HMAC_MAX_HASH_BLOCK_SIZE 64u 152 #define PSA_HMAC_MAX_HASH_BLOCK_SIZE 64u 155 #if defined(PSA_WANT_ALG_SHA_512) || defined(PSA_WANT_ALG_SHA3_512) 156 #define PSA_HASH_MAX_SIZE 64u 157 #elif defined(PSA_WANT_ALG_SHA_384) || defined(PSA_WANT_ALG_SHA3_384) 158 #define PSA_HASH_MAX_SIZE 48u 159 #elif defined(PSA_WANT_ALG_SHA_256) || defined(PSA_WANT_ALG_SHA3_256) 160 #define PSA_HASH_MAX_SIZE 32u 161 #elif defined(PSA_WANT_ALG_SHA_224) || defined(PSA_WANT_ALG_SHA3_224) 162 #define PSA_HASH_MAX_SIZE 28u 164 #define PSA_HASH_MAX_SIZE 20u 171 #define PSA_HASH_SUSPEND_INPUT_LENGTH_FIELD_LENGTH(alg) \ 172 (((alg == PSA_ALG_SHA_224) || (alg == PSA_ALG_SHA_256)) ? 8u : \ 173 ((alg == PSA_ALG_SHA_384) || (alg == PSA_ALG_SHA_512)) ? 16u : \ 180 #define PSA_HASH_SUSPEND_HASH_STATE_FIELD_LENGTH(alg) \ 181 (((alg == PSA_ALG_SHA_224) || (alg == PSA_ALG_SHA_256)) ? 32u : \ 182 ((alg == PSA_ALG_SHA_384) || (alg == PSA_ALG_SHA_512)) ? 64u : \ 189 #define PSA_HASH_SUSPEND_OUTPUT_SIZE(alg) \ 191 PSA_HASH_SUSPEND_INPUT_LENGTH_FIELD_LENGTH(alg) + \ 192 PSA_HASH_SUSPEND_HASH_STATE_FIELD_LENGTH(alg) + \ 193 (PSA_HASH_BLOCK_LENGTH(alg) - 1u) ) 199 #define PSA_HASH_SUSPEND_OUTPUT_MAX_SIZE \ 200 PSA_HASH_SUSPEND_OUTPUT_SIZE(PSA_ALG_SHA_512) 214 #define PSA_MAC_MAX_SIZE PSA_HASH_MAX_SIZE 237 #define PSA_AEAD_TAG_LENGTH(key_type, key_bits, alg) \ 238 (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 ? \ 239 PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \ 240 ((void) (key_bits), 0u)) 246 #define PSA_AEAD_TAG_MAX_SIZE 16u 261 #define PSA_VENDOR_RSA_MAX_KEY_BITS 4096u 269 #if defined(MBEDTLS_RSA_GEN_KEY_MIN_BITS) 270 #define PSA_VENDOR_RSA_GENERATE_MIN_KEY_BITS MBEDTLS_RSA_GEN_KEY_MIN_BITS 272 #define PSA_VENDOR_RSA_GENERATE_MIN_KEY_BITS 1024 279 #define PSA_VENDOR_FFDH_MAX_KEY_BITS 8192u 283 #if defined(PSA_WANT_ECC_SECP_R1_521) 284 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 521u 285 #elif defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512) 286 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 512u 287 #elif defined(PSA_WANT_ECC_MONTGOMERY_448) 288 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 448u 289 #elif defined(PSA_WANT_ECC_SECP_R1_384) 290 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 384u 291 #elif defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384) 292 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 384u 293 #elif defined(PSA_WANT_ECC_SECP_R1_256) 294 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 256u 295 #elif defined(PSA_WANT_ECC_SECP_K1_256) 296 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 256u 297 #elif defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256) 298 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 256u 299 #elif defined(PSA_WANT_ECC_MONTGOMERY_255) 300 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 255u 301 #elif defined(PSA_WANT_ECC_SECP_R1_224) 302 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 224u 303 #elif defined(PSA_WANT_ECC_SECP_K1_224) 304 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 224u 305 #elif defined(PSA_WANT_ECC_SECP_R1_192) 306 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 192u 307 #elif defined(PSA_WANT_ECC_SECP_K1_192) 308 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 192u 310 #define PSA_VENDOR_ECC_MAX_CURVE_BITS 0u 328 #define PSA_TLS12_PSK_TO_MS_PSK_MAX_SIZE 128u 332 #define PSA_TLS12_ECJPAKE_TO_PMS_INPUT_SIZE 65u 337 #define PSA_TLS12_ECJPAKE_TO_PMS_DATA_SIZE 32u 341 #define PSA_VENDOR_PBKDF2_MAX_ITERATIONS 0xffffffffU 344 #define PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE 16u 367 #define PSA_MAC_LENGTH(key_type, key_bits, alg) \ 368 ((alg) & PSA_ALG_MAC_TRUNCATION_MASK ? PSA_MAC_TRUNCATED_LENGTH(alg) : \ 369 PSA_ALG_IS_HMAC(alg) ? PSA_HASH_LENGTH(PSA_ALG_HMAC_GET_HASH(alg)) : \ 370 PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) ? PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ 371 ((void) (key_type), (void) (key_bits), 0u)) 399 #define PSA_AEAD_ENCRYPT_OUTPUT_SIZE(key_type, alg, plaintext_length) \ 400 (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 ? \ 401 (plaintext_length) + PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \ 422 #define PSA_AEAD_ENCRYPT_OUTPUT_MAX_SIZE(plaintext_length) \ 423 ((plaintext_length) + PSA_AEAD_TAG_MAX_SIZE) 452 #define PSA_AEAD_DECRYPT_OUTPUT_SIZE(key_type, alg, ciphertext_length) \ 453 (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 && \ 454 (ciphertext_length) > PSA_ALG_AEAD_GET_TAG_LENGTH(alg) ? \ 455 (ciphertext_length) - PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \ 476 #define PSA_AEAD_DECRYPT_OUTPUT_MAX_SIZE(ciphertext_length) \ 504 #define PSA_AEAD_NONCE_LENGTH(key_type, alg) \ 505 (PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) == 16 ? \ 506 MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_CCM) ? 13u : \ 507 MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_GCM) ? 12u : \ 509 (key_type) == PSA_KEY_TYPE_CHACHA20 && \ 510 MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_CHACHA20_POLY1305) ? 12u : \ 524 #define PSA_AEAD_NONCE_MAX_SIZE 13u 556 #define PSA_AEAD_UPDATE_OUTPUT_SIZE(key_type, alg, input_length) \ 557 (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 ? \ 558 PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ 559 PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), (input_length)) : \ 573 #define PSA_AEAD_UPDATE_OUTPUT_MAX_SIZE(input_length) \ 574 (PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE, (input_length))) 597 #define PSA_AEAD_FINISH_OUTPUT_SIZE(key_type, alg) \ 598 (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 && \ 599 PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ 600 PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ 608 #define PSA_AEAD_FINISH_OUTPUT_MAX_SIZE (PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE) 631 #define PSA_AEAD_VERIFY_OUTPUT_SIZE(key_type, alg) \ 632 (PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 && \ 633 PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ 634 PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ 642 #define PSA_AEAD_VERIFY_OUTPUT_MAX_SIZE (PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE) 644 #define PSA_RSA_MINIMUM_PADDING_SIZE(alg) \ 645 (PSA_ALG_IS_RSA_OAEP(alg) ? \ 646 2u * PSA_HASH_LENGTH(PSA_ALG_RSA_OAEP_GET_HASH(alg)) + 1u : \ 657 #define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \ 658 (PSA_BITS_TO_BYTES(curve_bits) * 2u) 685 #define PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \ 686 (PSA_KEY_TYPE_IS_RSA(key_type) ? ((void) alg, PSA_BITS_TO_BYTES(key_bits)) : \ 687 PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \ 690 #define PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE \ 691 PSA_ECDSA_SIGNATURE_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) 700 #define PSA_SIGNATURE_MAX_SIZE 1 702 #if (defined(PSA_WANT_ALG_ECDSA) || defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA)) && \ 703 (PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE > PSA_SIGNATURE_MAX_SIZE) 704 #undef PSA_SIGNATURE_MAX_SIZE 705 #define PSA_SIGNATURE_MAX_SIZE PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE 707 #if (defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) || defined(PSA_WANT_ALG_RSA_PSS)) && \ 708 (PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) > PSA_SIGNATURE_MAX_SIZE) 709 #undef PSA_SIGNATURE_MAX_SIZE 710 #define PSA_SIGNATURE_MAX_SIZE PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) 738 #define PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \ 739 (PSA_KEY_TYPE_IS_RSA(key_type) ? \ 740 ((void) alg, PSA_BITS_TO_BYTES(key_bits)) : \ 749 #define PSA_ASYMMETRIC_ENCRYPT_OUTPUT_MAX_SIZE \ 750 (PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS)) 777 #define PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \ 778 (PSA_KEY_TYPE_IS_RSA(key_type) ? \ 779 PSA_BITS_TO_BYTES(key_bits) - PSA_RSA_MINIMUM_PADDING_SIZE(alg) : \ 789 #define PSA_ASYMMETRIC_DECRYPT_OUTPUT_MAX_SIZE \ 790 (PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS)) 802 #define PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(bits) \ 816 #define PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) \ 817 (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) + 11u) 841 #define PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) \ 842 (9u * PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE((key_bits) / 2u + 1u) + 14u) 860 #define PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) \ 861 (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3u + 59u) 879 #define PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) \ 880 (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3u + 75u) 892 #define PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) \ 893 (2u * PSA_BITS_TO_BYTES(key_bits) + 1u) 899 #define PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) \ 900 (PSA_BITS_TO_BYTES(key_bits)) 906 #define PSA_KEY_EXPORT_FFDH_KEY_PAIR_MAX_SIZE(key_bits) \ 907 (PSA_BITS_TO_BYTES(key_bits)) 911 #define PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(key_bits) \ 912 (PSA_BITS_TO_BYTES(key_bits)) 953 #define PSA_EXPORT_KEY_OUTPUT_SIZE(key_type, key_bits) \ 954 (PSA_KEY_TYPE_IS_UNSTRUCTURED(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \ 955 PSA_KEY_TYPE_IS_DH(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \ 956 (key_type) == PSA_KEY_TYPE_RSA_KEY_PAIR ? PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) : \ 957 (key_type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ 958 (key_type) == PSA_KEY_TYPE_DSA_KEY_PAIR ? PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) : \ 959 (key_type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY ? PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ 960 PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type) ? PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) : \ 961 PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \ 1009 #define PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(key_type, key_bits) \ 1010 (PSA_KEY_TYPE_IS_RSA(key_type) ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ 1011 PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \ 1012 PSA_KEY_TYPE_IS_DH(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \ 1023 #define PSA_EXPORT_KEY_PAIR_MAX_SIZE 1 1025 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) && \ 1026 (PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) > \ 1027 PSA_EXPORT_KEY_PAIR_MAX_SIZE) 1028 #undef PSA_EXPORT_KEY_PAIR_MAX_SIZE 1029 #define PSA_EXPORT_KEY_PAIR_MAX_SIZE \ 1030 PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) 1032 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) && \ 1033 (PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) > \ 1034 PSA_EXPORT_KEY_PAIR_MAX_SIZE) 1035 #undef PSA_EXPORT_KEY_PAIR_MAX_SIZE 1036 #define PSA_EXPORT_KEY_PAIR_MAX_SIZE \ 1037 PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) 1039 #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC) && \ 1040 (PSA_KEY_EXPORT_FFDH_KEY_PAIR_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS) > \ 1041 PSA_EXPORT_KEY_PAIR_MAX_SIZE) 1042 #undef PSA_EXPORT_KEY_PAIR_MAX_SIZE 1043 #define PSA_EXPORT_KEY_PAIR_MAX_SIZE \ 1044 PSA_KEY_EXPORT_FFDH_KEY_PAIR_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS) 1056 #define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE 1 1058 #if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) && \ 1059 (PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) > \ 1060 PSA_EXPORT_PUBLIC_KEY_MAX_SIZE) 1061 #undef PSA_EXPORT_PUBLIC_KEY_MAX_SIZE 1062 #define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \ 1063 PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) 1065 #if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) && \ 1066 (PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) > \ 1067 PSA_EXPORT_PUBLIC_KEY_MAX_SIZE) 1068 #undef PSA_EXPORT_PUBLIC_KEY_MAX_SIZE 1069 #define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \ 1070 PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) 1072 #if defined(PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY) && \ 1073 (PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS) > \ 1074 PSA_EXPORT_PUBLIC_KEY_MAX_SIZE) 1075 #undef PSA_EXPORT_PUBLIC_KEY_MAX_SIZE 1076 #define PSA_EXPORT_PUBLIC_KEY_MAX_SIZE \ 1077 PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS) 1103 #define PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE(key_type, key_bits) \ 1104 ((PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type) || \ 1105 PSA_KEY_TYPE_IS_DH_KEY_PAIR(key_type)) ? PSA_BITS_TO_BYTES(key_bits) : 0u) 1114 #define PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE 1 1116 #if defined(PSA_WANT_ALG_ECDH) && \ 1117 (PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS) > PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE) 1118 #undef PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE 1119 #define PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE PSA_BITS_TO_BYTES(PSA_VENDOR_ECC_MAX_CURVE_BITS) 1121 #if defined(PSA_WANT_ALG_FFDH) && \ 1122 (PSA_BITS_TO_BYTES(PSA_VENDOR_FFDH_MAX_KEY_BITS) > PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE) 1123 #undef PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE 1124 #define PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE PSA_BITS_TO_BYTES(PSA_VENDOR_FFDH_MAX_KEY_BITS) 1151 #define PSA_CIPHER_IV_LENGTH(key_type, alg) \ 1152 (PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) > 1 && \ 1153 ((alg) == PSA_ALG_CTR || \ 1154 (alg) == PSA_ALG_CFB || \ 1155 (alg) == PSA_ALG_OFB || \ 1156 (alg) == PSA_ALG_XTS || \ 1157 (alg) == PSA_ALG_CBC_NO_PADDING || \ 1158 (alg) == PSA_ALG_CBC_PKCS7) ? PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ 1159 (key_type) == PSA_KEY_TYPE_CHACHA20 && \ 1160 (alg) == PSA_ALG_STREAM_CIPHER ? 12u : \ 1161 (alg) == PSA_ALG_CCM_STAR_NO_TAG ? 13u : \ 1168 #define PSA_CIPHER_IV_MAX_SIZE 16u 1193 #define PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(key_type, alg, input_length) \ 1194 (alg == PSA_ALG_CBC_PKCS7 ? \ 1195 (PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) != 0 ? \ 1196 PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), \ 1197 (input_length) + 1u) + \ 1198 PSA_CIPHER_IV_LENGTH((key_type), (alg)) : 0u) : \ 1199 (PSA_ALG_IS_CIPHER(alg) ? \ 1200 (input_length) + PSA_CIPHER_IV_LENGTH((key_type), (alg)) : \ 1214 #define PSA_CIPHER_ENCRYPT_OUTPUT_MAX_SIZE(input_length) \ 1215 (PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE, \ 1216 (input_length) + 1u) + \ 1217 PSA_CIPHER_IV_MAX_SIZE) 1238 #define PSA_CIPHER_DECRYPT_OUTPUT_SIZE(key_type, alg, input_length) \ 1239 (PSA_ALG_IS_CIPHER(alg) && \ 1240 ((key_type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC ? \ 1254 #define PSA_CIPHER_DECRYPT_OUTPUT_MAX_SIZE(input_length) \ 1275 #define PSA_CIPHER_UPDATE_OUTPUT_SIZE(key_type, alg, input_length) \ 1276 (PSA_ALG_IS_CIPHER(alg) ? \ 1277 (PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) != 0 ? \ 1278 (((alg) == PSA_ALG_CBC_PKCS7 || \ 1279 (alg) == PSA_ALG_CBC_NO_PADDING || \ 1280 (alg) == PSA_ALG_ECB_NO_PADDING) ? \ 1281 PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), \ 1283 (input_length)) : 0u) : \ 1296 #define PSA_CIPHER_UPDATE_OUTPUT_MAX_SIZE(input_length) \ 1297 (PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE, input_length)) 1316 #define PSA_CIPHER_FINISH_OUTPUT_SIZE(key_type, alg) \ 1317 (PSA_ALG_IS_CIPHER(alg) ? \ 1318 (alg == PSA_ALG_CBC_PKCS7 ? \ 1319 PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \ 1328 #define PSA_CIPHER_FINISH_OUTPUT_MAX_SIZE \ 1329 (PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE)
© Copyright 1995-2026, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale