34 #define PSA_INVALID_OPERATION (0xFF)
42 PSA_CBC_NO_PAD_AES_128,
43 PSA_CBC_NO_PAD_AES_192,
44 PSA_CBC_NO_PAD_AES_256,
45 PSA_CBC_PKCS7_AES_256,
46 PSA_STREAM_CIPHER_CHACHA20
89 #define PSA_ENCODE_ECC_KEY_TYPE_SECPR1(bits) \
90 ((bits == 256) || (bits == 520) ? PSA_ECC_P256_R1 : \
91 (bits == 192) || (bits == 392) ? PSA_ECC_P192_R1 : \
92 PSA_INVALID_OPERATION)
102 #define PSA_ENCODE_ECC_KEY_TYPE_EDWARDS(bits) \
103 ((bits == 255) || (bits == 256) ? PSA_ECC_ED25519 : \
104 PSA_INVALID_OPERATION)
115 #define PSA_ENCODE_ECC_KEY_TYPE(bits, curve) \
116 ((curve == PSA_ECC_FAMILY_SECP_R1) ? PSA_ENCODE_ECC_KEY_TYPE_SECPR1(bits) : \
117 (curve == PSA_ECC_FAMILY_TWISTED_EDWARDS) ? PSA_ENCODE_ECC_KEY_TYPE_EDWARDS(bits) : \
118 PSA_INVALID_OPERATION)
129 #define GET_CBC_NO_PADDING_OPERATION(type, bits) \
130 ((type == PSA_KEY_TYPE_AES) ? \
131 ((bits == 128) ? PSA_CBC_NO_PAD_AES_128 : \
132 (bits == 192) ? PSA_CBC_NO_PAD_AES_192 : \
133 (bits == 256) ? PSA_CBC_NO_PAD_AES_256 : \
134 PSA_INVALID_OPERATION) : \
135 PSA_INVALID_OPERATION)
146 #define GET_AES_CCM_OPERATION(type, bits) \
147 ((type == PSA_KEY_TYPE_AES) ? \
148 ((bits == 128) ? PSA_CCM_AES_128 : \
149 (bits == 192) ? PSA_CCM_AES_192 : \
150 (bits == 256) ? PSA_CCM_AES_256 : \
151 PSA_INVALID_OPERATION) : \
152 PSA_INVALID_OPERATION)
163 #define GET_CBC_PKCS7_OPERATION(type, bits) \
164 (((alg == PSA_ALG_CBC_PKCS7) && (type == PSA_KEY_TYPE_AES)) ? PSA_CBC_PKCS7_AES_256 : \
165 PSA_INVALID_OPERATION)
176 #define GET_CFB_OPERATION(type, bits) \
177 (PSA_INVALID_OPERATION)
188 #define GET_CTR_OPERATION(type, bits) \
189 (PSA_INVALID_OPERATION)
200 #define GET_ECB_NO_PADDING_OPERATION(type, bits) \
201 (PSA_INVALID_OPERATION)
212 #define GET_OFB_OPERATION(type, bits) \
213 (PSA_INVALID_OPERATION)
224 #define GET_STREAM_CIPHER_OPERATION(type, bits) \
225 (((type == PSA_KEY_TYPE_CHACHA20) && (bits == 256)) ? PSA_STREAM_CIPHER_CHACHA20 : \
226 PSA_INVALID_OPERATION)
237 #define GET_XTS_OPERATION(type, bits) \
238 (PSA_INVALID_OPERATION)
250 #define PSA_ENCODE_CIPHER_OPERATION(alg, type, bits) \
251 ((alg == PSA_ALG_CBC_NO_PADDING) ? GET_CBC_NO_PADDING_OPERATION(type, bits) : \
252 (alg == PSA_ALG_CBC_PKCS7) ? GET_CBC_PKCS7_OPERATION(type, bits) : \
253 (alg == PSA_ALG_CFB) ? GET_CFB_OPERATION(type, bits) : \
254 (alg == PSA_ALG_CTR) ? GET_CTR_OPERATION(type, bits) : \
255 (alg == PSA_ALG_ECB_NO_PADDING) ? GET_ECB_NO_PADDING_OPERATION(type, bits) : \
256 (alg == PSA_ALG_OFB) ? GET_OFB_OPERATION(type, bits) : \
257 (alg == PSA_ALG_STREAM_CIPHER) ? GET_STREAM_CIPHER_OPERATION(type, bits) : \
258 (alg == PSA_ALG_XTS) ? GET_XTS_OPERATION(type, bits) : \
259 PSA_INVALID_OPERATION)
271 #define PSA_ENCODE_AEAD_OPERATION(alg, type, bits) \
272 ((PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(alg) == PSA_ALG_CCM) ? \
273 GET_AES_CCM_OPERATION(type, bits) : PSA_INVALID_OPERATION)
AEAD algorithm definitions for the PSA Crypto API.
Cipher algorithm definitions for the PSA Crypto API.
psa_cipher_op_t
Enum encoding available cipher operations.
psa_aead_op_t
Enum encoding available aead operations.
psa_asym_key_t
Enum encoding available asymmetric key types and sizes.