44 #define PSA_BLOCK_CIPHER_BLOCK_LENGTH(type) \
45 (1u << (((type) >> 8) & 7))
52 #define PSA_BLOCK_CIPHER_BLOCK_MAX_SIZE 64
80 #define PSA_CIPHER_IV_LENGTH(key_type, alg) \
81 ((PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) > 1 && \
82 ((alg) == PSA_ALG_CBC_NO_PADDING)) ? 16 : \
83 (key_type == PSA_KEY_TYPE_CHACHA20) ? 12 : 0)
94 #define PSA_CIPHER_IV_MAX_SIZE 16
114 #define PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(key_type, alg, input_length) \
115 (input_length + PSA_CIPHER_IV_LENGTH(key_type, alg))
128 #define PSA_CIPHER_ENCRYPT_OUTPUT_MAX_SIZE(input_length) \
129 (PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(PSA_KEY_TYPE_AES, PSA_ALG_CBC_NO_PADDING, input_length) \
130 > PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(PSA_KEY_TYPE_CHACHA20, PSA_ALG_STREAM_CIPHER, input_length) \
131 ? PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(PSA_KEY_TYPE_AES, PSA_ALG_CBC_NO_PADDING, input_length) \
132 : PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(PSA_KEY_TYPE_CHACHA20, PSA_ALG_STREAM_CIPHER, input_length))
152 #define PSA_CIPHER_DECRYPT_OUTPUT_SIZE(key_type, alg, input_length) \
153 (input_length - PSA_CIPHER_IV_LENGTH(key_type, alg))
166 #define PSA_CIPHER_DECRYPT_OUTPUT_MAX_SIZE(input_length) \
188 #define PSA_CIPHER_UPDATE_OUTPUT_SIZE(key_type, alg, input_length) \
189 ((key_type == PSA_KEY_TYPE_CHACHA20 \
190 && alg == PSA_ALG_STREAM_CIPHER) ? (input_length + 64) : 0)
204 #define PSA_CIPHER_UPDATE_OUTPUT_MAX_SIZE(input_length) \
224 #define PSA_CIPHER_FINISH_OUTPUT_SIZE(key_type, alg) \
225 ((key_type == PSA_KEY_TYPE_CHACHA20) ? 64 : 0 )
236 #define PSA_CIPHER_FINISH_OUTPUT_MAX_SIZE 64
Cipher algorithm definitions for the PSA Crypto API.
Common macros and compiler attributes/pragmas configuration.
Key type definitions for the PSA Crypto API.