23 #ifndef PSA_CRYPTO_BUILTIN_COMPOSITES_H
24 #define PSA_CRYPTO_BUILTIN_COMPOSITES_H
25 #include "mbedtls/private_access.h"
29 #include "mbedtls/private/cmac.h"
30 #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
31 #include "mbedtls/private/gcm.h"
33 #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
34 #include "mbedtls/private/ccm.h"
36 #include "mbedtls/private/chachapoly.h"
38 #if defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH)
39 #include "mbedtls/private/ecdh.h"
45 #if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) || \
46 defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC)
47 #define MBEDTLS_PSA_BUILTIN_MAC
50 #if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) || defined(PSA_CRYPTO_DRIVER_TEST)
60 #define MBEDTLS_PSA_HMAC_OPERATION_INIT { 0, PSA_HASH_OPERATION_INIT, { 0 } }
66 unsigned MBEDTLS_PRIVATE(dummy);
67 #if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) || defined(PSA_CRYPTO_DRIVER_TEST)
70 #if defined(MBEDTLS_PSA_BUILTIN_ALG_CMAC) || defined(PSA_CRYPTO_DRIVER_TEST)
71 mbedtls_cipher_context_t MBEDTLS_PRIVATE(cmac);
73 } MBEDTLS_PRIVATE(ctx);
76 #define MBEDTLS_PSA_MAC_OPERATION_INIT { 0, { 0 } }
78 #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM) || \
79 defined(MBEDTLS_PSA_BUILTIN_ALG_CCM) || \
80 defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
81 #define MBEDTLS_PSA_BUILTIN_AEAD 1
89 unsigned int MBEDTLS_PRIVATE(is_encrypt) : 1;
91 uint8_t MBEDTLS_PRIVATE(tag_length);
95 #if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
96 mbedtls_ccm_context MBEDTLS_PRIVATE(ccm);
98 #if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM)
99 mbedtls_gcm_context MBEDTLS_PRIVATE(gcm);
101 #if defined(MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305)
102 mbedtls_chachapoly_context MBEDTLS_PRIVATE(chachapoly);
109 #define MBEDTLS_PSA_AEAD_OPERATION_INIT { 0, 0, 0, 0, { 0 } }
111 #include "mbedtls/private/ecdsa.h"
115 #if (defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
116 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)) && \
117 defined(MBEDTLS_ECP_RESTARTABLE)
118 mbedtls_ecdsa_context *MBEDTLS_PRIVATE(ctx);
119 mbedtls_ecdsa_restart_ctx MBEDTLS_PRIVATE(restart_ctx);
121 uint32_t MBEDTLS_PRIVATE(num_ops);
123 size_t MBEDTLS_PRIVATE(coordinate_bytes);
127 size_t MBEDTLS_PRIVATE(hash_length);
131 unsigned MBEDTLS_PRIVATE(dummy);
138 #if (defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
139 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)) && \
140 defined(MBEDTLS_ECP_RESTARTABLE)
141 #define MBEDTLS_PSA_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT { { 0 }, { 0 }, 0, 0, 0, 0, 0, 0 }
143 #define MBEDTLS_PSA_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT { 0 }
149 #if (defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
150 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)) && \
151 defined(MBEDTLS_ECP_RESTARTABLE)
153 mbedtls_ecdsa_context *MBEDTLS_PRIVATE(ctx);
154 mbedtls_ecdsa_restart_ctx MBEDTLS_PRIVATE(restart_ctx);
156 uint32_t MBEDTLS_PRIVATE(num_ops);
159 size_t MBEDTLS_PRIVATE(hash_length);
161 mbedtls_mpi MBEDTLS_PRIVATE(r);
162 mbedtls_mpi MBEDTLS_PRIVATE(s);
166 unsigned MBEDTLS_PRIVATE(dummy);
174 #if (defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
175 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)) && \
176 defined(MBEDTLS_ECP_RESTARTABLE)
177 #define MBEDTLS_VERIFY_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT { { 0 }, { 0 }, 0, 0, 0, 0, { 0 }, \
180 #define MBEDTLS_VERIFY_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT { 0 }
186 #include "mbedtls/private/ecjpake.h"
188 #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
189 #define MBEDTLS_PSA_BUILTIN_PAKE 1
195 #define MBEDTLS_PSA_JPAKE_BUFFER_SIZE ((3 + 1 + 65 + 1 + 65 + 1 + 32) * 2)
200 uint8_t *MBEDTLS_PRIVATE(password);
201 size_t MBEDTLS_PRIVATE(password_len);
202 #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
203 mbedtls_ecjpake_role MBEDTLS_PRIVATE(role);
205 size_t MBEDTLS_PRIVATE(buffer_length);
206 size_t MBEDTLS_PRIVATE(buffer_offset);
210 unsigned int MBEDTLS_PRIVATE(dummy);
211 #if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
212 mbedtls_ecjpake_context MBEDTLS_PRIVATE(jpake);
214 } MBEDTLS_PRIVATE(ctx);
218 #define MBEDTLS_PSA_PAKE_OPERATION_INIT { { 0 } }
221 #if defined(MBEDTLS_ECP_C)
222 mbedtls_ecp_keypair MBEDTLS_PRIVATE(ecp);
226 unsigned MBEDTLS_PRIVATE(dummy);
230 #if defined(MBEDTLS_ECP_C)
231 #define MBEDTLS_PSA_GENERATE_KEY_IOP_INIT { MBEDTLS_ECP_KEYPAIR_INIT, 0 }
233 #define MBEDTLS_PSA_GENERATE_KEY_IOP_INIT { 0 }
238 #if defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) && defined(MBEDTLS_ECP_RESTARTABLE)
239 mbedtls_ecdh_context MBEDTLS_PRIVATE(ctx);
240 uint32_t MBEDTLS_PRIVATE(num_ops);
243 unsigned MBEDTLS_PRIVATE(dummy);
247 #if defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH) && defined(MBEDTLS_ECP_RESTARTABLE)
248 #define MBEDTLS_PSA_KEY_AGREEMENT_IOP_INIT { MBEDTLS_ECDH_CONTEXT_INIT, 0 }
250 #define MBEDTLS_PSA_KEY_AGREEMENT_IOP_INIT { 0 }
255 #if defined(MBEDTLS_ECP_C) && defined(MBEDTLS_ECP_RESTARTABLE)
256 mbedtls_ecp_keypair *MBEDTLS_PRIVATE(key);
257 mbedtls_ecp_restart_ctx MBEDTLS_PRIVATE(restart_ctx);
258 uint32_t MBEDTLS_PRIVATE(num_ops);
261 unsigned MBEDTLS_PRIVATE(dummy);
265 #if defined(MBEDTLS_ECP_C) && defined(MBEDTLS_ECP_RESTARTABLE)
266 #define MBEDTLS_PSA_EXPORT_PUBLIC_KEY_IOP_INIT { NULL, MBEDTLS_ECP_RESTART_INIT, 0 }
268 #define MBEDTLS_PSA_EXPORT_PUBLIC_KEY_IOP_INIT { 0 }
#define PSA_HMAC_MAX_HASH_BLOCK_SIZE
#define MBEDTLS_PSA_JPAKE_BUFFER_SIZE
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
uint16_t psa_key_type_t
Encoding of a key type.
Definitions for all PSA crypto drivers.
mbedtls_md_type_t
Supported message digests.
#define PSA_VENDOR_ECC_MAX_CURVE_BITS
#define PSA_BITS_TO_BYTES(bits)