blob: 5257671ea2b0abeee9edc47a53d0a59cdc961a41 [file] [log] [blame]
Antonio de Angelis695d75b2022-08-22 15:06:24 +01001From 786620d885004e49e9c306558f088fb2023c4736 Mon Sep 17 00:00:00 2001
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01002From: Antonio de Angelis <Antonio.deAngelis@arm.com>
3Date: Fri, 15 Jul 2022 12:41:34 +0100
Antonio de Angelis2718b582022-08-23 14:58:40 +01004Subject: [PATCH 4/9] Driver wrapper entry points for CC3XX
Antonio de Angelis86b98312021-12-17 21:42:40 +01005
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01006Manually hardcode PSA driver entry points for the CC3XX driver
7into psa_crypto_driver_wrappers.c (and provide missing entry point
8definitions if any). This is a temporary solution until the codegen
9framework is available for automatic integration.
Summer Qin36f79f72022-07-05 14:53:35 +080010
11Signed-off-by: Summer Qin <summer.qin@arm.com>
Antonio de Angelis86b98312021-12-17 21:42:40 +010012Signed-off-by: Salome Thirot <salome.thirot@arm.com>
13Signed-off-by: Abbas Bracken Ziad <abbas.brackenziad@arm.com>
14Signed-off-by: Georgios Vasilakis <georgios.vasilakis@nordicsemi.no>
15Signed-off-by: Antonio de Angelis <antonio.deangelis@arm.com>
16---
17 .../psa/crypto_driver_contexts_composites.h | 9 +
18 .../psa/crypto_driver_contexts_primitives.h | 9 +
Antonio de Angelis90bee0f2022-07-13 11:22:41 +010019 library/psa_crypto.c | 21 +-
Antonio de Angelis695d75b2022-08-22 15:06:24 +010020 library/psa_crypto_driver_wrappers.c | 556 ++++++++++++++++--
Antonio de Angelis90bee0f2022-07-13 11:22:41 +010021 library/psa_crypto_driver_wrappers.h | 14 +
Antonio de Angelis695d75b2022-08-22 15:06:24 +010022 5 files changed, 546 insertions(+), 63 deletions(-)
Antonio de Angelis86b98312021-12-17 21:42:40 +010023
24diff --git a/include/psa/crypto_driver_contexts_composites.h b/include/psa/crypto_driver_contexts_composites.h
Antonio de Angelis90bee0f2022-07-13 11:22:41 +010025index 3f1c8af4b..2fdf9561f 100644
Antonio de Angelis86b98312021-12-17 21:42:40 +010026--- a/include/psa/crypto_driver_contexts_composites.h
27+++ b/include/psa/crypto_driver_contexts_composites.h
28@@ -41,6 +41,9 @@
29
30 /* Include the context structure definitions for those drivers that were
31 * declared during the autogeneration process. */
32+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
33+#include "cc3xx_crypto_primitives_private.h"
34+#endif
35
36 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
37 #include <libtestdriver1/include/psa/crypto.h>
38@@ -104,6 +107,9 @@ typedef union {
39 mbedtls_transparent_test_driver_mac_operation_t transparent_test_driver_ctx;
40 mbedtls_opaque_test_driver_mac_operation_t opaque_test_driver_ctx;
41 #endif
42+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
43+ cc3xx_mac_operation_t cc3xx_driver_ctx;
44+#endif
45 } psa_driver_mac_context_t;
46
47 typedef union {
48@@ -112,6 +118,9 @@ typedef union {
49 #if defined(PSA_CRYPTO_DRIVER_TEST)
50 mbedtls_transparent_test_driver_aead_operation_t transparent_test_driver_ctx;
51 #endif
52+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
53+ cc3xx_aead_operation_t cc3xx_driver_ctx;
54+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
55 } psa_driver_aead_context_t;
56
57 #endif /* PSA_CRYPTO_DRIVER_CONTEXTS_COMPOSITES_H */
58diff --git a/include/psa/crypto_driver_contexts_primitives.h b/include/psa/crypto_driver_contexts_primitives.h
Antonio de Angelis90bee0f2022-07-13 11:22:41 +010059index 2bb01ed43..2bc0bda70 100644
Antonio de Angelis86b98312021-12-17 21:42:40 +010060--- a/include/psa/crypto_driver_contexts_primitives.h
61+++ b/include/psa/crypto_driver_contexts_primitives.h
62@@ -40,6 +40,9 @@
63
64 /* Include the context structure definitions for those drivers that were
65 * declared during the autogeneration process. */
66+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
67+#include "cc3xx_crypto_primitives_private.h"
68+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
69
70 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
71 #include <libtestdriver1/include/psa/crypto.h>
72@@ -102,6 +105,9 @@ typedef union {
73 #if defined(PSA_CRYPTO_DRIVER_TEST)
74 mbedtls_transparent_test_driver_hash_operation_t test_driver_ctx;
75 #endif
76+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
77+ cc3xx_hash_operation_t cc3xx_driver_ctx;
78+#endif
79 } psa_driver_hash_context_t;
80
81 typedef union {
82@@ -111,6 +117,9 @@ typedef union {
83 mbedtls_transparent_test_driver_cipher_operation_t transparent_test_driver_ctx;
84 mbedtls_opaque_test_driver_cipher_operation_t opaque_test_driver_ctx;
85 #endif
86+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
87+ cc3xx_cipher_operation_t cc3xx_driver_ctx;
88+#endif
89 } psa_driver_cipher_context_t;
90
91 #endif /* PSA_CRYPTO_DRIVER_CONTEXTS_PRIMITIVES_H */
92diff --git a/library/psa_crypto.c b/library/psa_crypto.c
Antonio de Angelis90bee0f2022-07-13 11:22:41 +010093index b0116ddfb..0e33f409c 100644
Antonio de Angelis86b98312021-12-17 21:42:40 +010094--- a/library/psa_crypto.c
95+++ b/library/psa_crypto.c
Antonio de Angelis90bee0f2022-07-13 11:22:41 +010096@@ -5862,11 +5862,24 @@ psa_status_t psa_raw_key_agreement( psa_algorithm_t alg,
Antonio de Angelis86b98312021-12-17 21:42:40 +010097 goto exit;
98 }
99
Antonio de Angelis86b98312021-12-17 21:42:40 +0100100- status = psa_key_agreement_raw_internal( alg, slot,
101- peer_key, peer_key_length,
102- output, output_size,
103- output_length );
104+ psa_key_attributes_t attributes = {
105+ .core = slot->attr
106+ };
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100107+
108+ status = psa_driver_wrapper_key_agreement( alg, &attributes,
Antonio de Angelis86b98312021-12-17 21:42:40 +0100109+ slot->key.data,
110+ slot->key.bytes,
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100111+ peer_key, peer_key_length,
112+ output, output_size,
113+ output_length );
114
115+ if (status == PSA_ERROR_NOT_SUPPORTED)
Antonio de Angelis86b98312021-12-17 21:42:40 +0100116+ {
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100117+ status = psa_key_agreement_raw_internal( alg, slot,
118+ peer_key, peer_key_length,
119+ output, output_size,
120+ output_length );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100121+ }
122 exit:
123 if( status != PSA_SUCCESS )
124 {
125diff --git a/library/psa_crypto_driver_wrappers.c b/library/psa_crypto_driver_wrappers.c
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100126index a5ae6a29e..a93e155ba 100644
Antonio de Angelis86b98312021-12-17 21:42:40 +0100127--- a/library/psa_crypto_driver_wrappers.c
128+++ b/library/psa_crypto_driver_wrappers.c
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100129@@ -45,6 +45,16 @@
Antonio de Angelis86b98312021-12-17 21:42:40 +0100130 #include "test/drivers/test_driver.h"
131 #endif /* PSA_CRYPTO_DRIVER_TEST */
132
133+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
134+#ifndef PSA_CRYPTO_DRIVER_PRESENT
135+#define PSA_CRYPTO_DRIVER_PRESENT
136+#endif
137+#ifndef PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT
138+#define PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT
139+#endif
140+#include "cc3xx.h"
141+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
142+
143 /* Repeat above block for each JSON-declared driver during autogeneration */
144 #endif /* MBEDTLS_PSA_CRYPTO_DRIVERS */
145
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100146@@ -58,6 +68,10 @@
Antonio de Angelis86b98312021-12-17 21:42:40 +0100147 #define PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID (3)
148 #endif /* PSA_CRYPTO_DRIVER_TEST */
149
150+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
151+#define PSA_CRYPTO_CC3XX_DRIVER_ID (4)
152+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
153+
154 /* Support the 'old' SE interface when asked to */
155 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
156 /* PSA_CRYPTO_DRIVER_PRESENT is defined when either a new-style or old-style
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100157@@ -72,6 +86,12 @@ psa_status_t psa_driver_wrapper_init( void )
158 {
159 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
160
161+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
162+ status = cc3xx_init();
163+ if (status != PSA_SUCCESS)
164+ return ( status );
165+#endif
166+
167 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
168 status = psa_init_all_se_drivers( );
169 if( status != PSA_SUCCESS )
170@@ -94,6 +114,10 @@ psa_status_t psa_driver_wrapper_init( void )
171
172 void psa_driver_wrapper_free( void )
173 {
174+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
175+ (void)cc3xx_free();
176+#endif
177+
178 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
179 /* Unregister all secure element drivers, so that we restart from
180 * a pristine state. */
181@@ -143,8 +167,30 @@ psa_status_t psa_driver_wrapper_sign_message(
Raef Coles2350f722022-07-19 15:19:56 +0100182 if( status != PSA_ERROR_NOT_SUPPORTED )
183 return( status );
184 #endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100185+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
186+ status = cc3xx_sign_message(
187+ attributes,
188+ key_buffer,
189+ key_buffer_size,
190+ alg,
191+ input,
192+ input_length,
193+ signature,
194+ signature_size,
195+ signature_length );
Raef Coles2350f722022-07-19 15:19:56 +0100196+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100197+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100198 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
199- break;
Summer Qin36f79f72022-07-05 14:53:35 +0800200+ /* Fell through, meaning no accelerator supports this operation */
201+ return( psa_sign_message_builtin( attributes,
202+ key_buffer,
203+ key_buffer_size,
204+ alg,
205+ input,
206+ input_length,
207+ signature,
208+ signature_size,
209+ signature_length ) );
Summer Qin36f79f72022-07-05 14:53:35 +0800210
211 /* Add cases for opaque driver here */
212 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100213@@ -168,18 +214,9 @@ psa_status_t psa_driver_wrapper_sign_message(
Summer Qin36f79f72022-07-05 14:53:35 +0800214 default:
215 /* Key is declared with a lifetime not known to us */
216 (void)status;
217- break;
218+ return( PSA_ERROR_INVALID_ARGUMENT );
219 }
220-
221- return( psa_sign_message_builtin( attributes,
222- key_buffer,
223- key_buffer_size,
224- alg,
225- input,
226- input_length,
227- signature,
228- signature_size,
229- signature_length ) );
230+ return status;
231 }
232
233 psa_status_t psa_driver_wrapper_verify_message(
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100234@@ -216,8 +253,28 @@ psa_status_t psa_driver_wrapper_verify_message(
Raef Coles2350f722022-07-19 15:19:56 +0100235 if( status != PSA_ERROR_NOT_SUPPORTED )
236 return( status );
237 #endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100238+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
239+ status = cc3xx_verify_message(
240+ attributes,
241+ key_buffer,
242+ key_buffer_size,
243+ alg,
244+ input,
245+ input_length,
246+ signature,
247+ signature_length );
Raef Coles2350f722022-07-19 15:19:56 +0100248+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100249+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100250 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
251- break;
Summer Qin36f79f72022-07-05 14:53:35 +0800252+ /* Fell through, meaning no accelerator supports this operation */
253+ return( psa_verify_message_builtin( attributes,
254+ key_buffer,
255+ key_buffer_size,
256+ alg,
257+ input,
258+ input_length,
259+ signature,
260+ signature_length ) );
Summer Qin36f79f72022-07-05 14:53:35 +0800261
262 /* Add cases for opaque driver here */
263 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100264@@ -240,17 +297,9 @@ psa_status_t psa_driver_wrapper_verify_message(
Summer Qin36f79f72022-07-05 14:53:35 +0800265 default:
266 /* Key is declared with a lifetime not known to us */
267 (void)status;
268- break;
269+ return( PSA_ERROR_INVALID_ARGUMENT );
270 }
271-
272- return( psa_verify_message_builtin( attributes,
273- key_buffer,
274- key_buffer_size,
275- alg,
276- input,
277- input_length,
278- signature,
279- signature_length ) );
280+ return status;
281 }
282
283 psa_status_t psa_driver_wrapper_sign_hash(
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100284@@ -303,6 +352,18 @@ psa_status_t psa_driver_wrapper_sign_hash(
Raef Coles2350f722022-07-19 15:19:56 +0100285 if( status != PSA_ERROR_NOT_SUPPORTED )
286 return( status );
287 #endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100288+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
289+ status = cc3xx_sign_hash( attributes,
290+ key_buffer,
291+ key_buffer_size,
292+ alg,
293+ hash,
294+ hash_length,
295+ signature,
296+ signature_size,
297+ signature_length );
Raef Coles2350f722022-07-19 15:19:56 +0100298+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100299+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100300 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Summer Qin36f79f72022-07-05 14:53:35 +0800301 /* Fell through, meaning no accelerator supports this operation */
302 return( psa_sign_hash_builtin( attributes,
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100303@@ -373,6 +434,17 @@ psa_status_t psa_driver_wrapper_verify_hash(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100304 /* Key is stored in the slot in export representation, so
305 * cycle through all known transparent accelerators */
306 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
307+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
308+ status = cc3xx_verify_hash( attributes,
309+ key_buffer,
310+ key_buffer_size,
311+ alg,
312+ hash,
313+ hash_length,
314+ signature,
315+ signature_length );
Raef Coles2350f722022-07-19 15:19:56 +0100316+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100317+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
318 #if defined(PSA_CRYPTO_DRIVER_TEST)
319 status = mbedtls_test_transparent_signature_verify_hash(
320 attributes,
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100321@@ -548,6 +620,12 @@ psa_status_t psa_driver_wrapper_generate_key(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100322 if( PSA_KEY_TYPE_IS_ASYMMETRIC( attributes->core.type ) )
323 {
324 /* Cycle through all known transparent accelerators */
325+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
Summer Qin36f79f72022-07-05 14:53:35 +0800326+ status = cc3xx_generate_key(
327+ attributes, key_buffer, key_buffer_size,
328+ key_buffer_length );
Raef Coles2350f722022-07-19 15:19:56 +0100329+ break;
Antonio de Angelis86b98312021-12-17 21:42:40 +0100330+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
331 #if defined(PSA_CRYPTO_DRIVER_TEST)
332 status = mbedtls_test_transparent_generate_key(
333 attributes, key_buffer, key_buffer_size,
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100334@@ -771,6 +849,16 @@ psa_status_t psa_driver_wrapper_export_public_key(
Raef Coles2350f722022-07-19 15:19:56 +0100335 if( status != PSA_ERROR_NOT_SUPPORTED )
336 return( status );
337 #endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100338+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
339+ status = cc3xx_export_public_key(
340+ attributes,
341+ key_buffer,
342+ key_buffer_size,
343+ data,
344+ data_size,
345+ data_length );
Raef Coles2350f722022-07-19 15:19:56 +0100346+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100347+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100348 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Summer Qin36f79f72022-07-05 14:53:35 +0800349 /* Fell through, meaning no accelerator supports this operation */
350 return( psa_export_public_key_internal( attributes,
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100351@@ -908,6 +996,20 @@ psa_status_t psa_driver_wrapper_cipher_encrypt(
Summer Qin36f79f72022-07-05 14:53:35 +0800352 if( status != PSA_ERROR_NOT_SUPPORTED )
353 return( status );
354 #endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100355+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
356+ status = cc3xx_cipher_encrypt( attributes,
357+ key_buffer,
358+ key_buffer_size,
359+ alg,
360+ iv,
361+ iv_length,
362+ input,
363+ input_length,
364+ output,
365+ output_size,
366+ output_length );
Raef Coles2350f722022-07-19 15:19:56 +0100367+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100368+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100369 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100370
Raef Coles2350f722022-07-19 15:19:56 +0100371 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100372@@ -996,6 +1098,18 @@ psa_status_t psa_driver_wrapper_cipher_decrypt(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100373 if( status != PSA_ERROR_NOT_SUPPORTED )
374 return( status );
375 #endif /* PSA_CRYPTO_DRIVER_TEST */
376+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
377+ status = cc3xx_cipher_decrypt( attributes,
378+ key_buffer,
379+ key_buffer_size,
380+ alg,
381+ input,
382+ input_length,
383+ output,
384+ output_size,
385+ output_length );
Raef Coles2350f722022-07-19 15:19:56 +0100386+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100387+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100388 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100389
Raef Coles2350f722022-07-19 15:19:56 +0100390 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100391@@ -1073,6 +1187,16 @@ psa_status_t psa_driver_wrapper_cipher_encrypt_setup(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100392 if( status != PSA_ERROR_NOT_SUPPORTED )
393 return( status );
394 #endif /* PSA_CRYPTO_DRIVER_TEST */
395+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
396+ status = cc3xx_cipher_encrypt_setup(
397+ &operation->ctx.cc3xx_driver_ctx,
398+ attributes,
399+ key_buffer,
400+ key_buffer_size,
401+ alg );
Raef Coles2350f722022-07-19 15:19:56 +0100402+ operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID;
403+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100404+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100405 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
406 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
Antonio de Angelis86b98312021-12-17 21:42:40 +0100407 /* Fell through, meaning no accelerator supports this operation */
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100408@@ -1146,6 +1270,16 @@ psa_status_t psa_driver_wrapper_cipher_decrypt_setup(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100409 if( status != PSA_ERROR_NOT_SUPPORTED )
410 return( status );
411 #endif /* PSA_CRYPTO_DRIVER_TEST */
412+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
413+ status = cc3xx_cipher_decrypt_setup(
414+ &operation->ctx.cc3xx_driver_ctx,
415+ attributes,
416+ key_buffer,
417+ key_buffer_size,
418+ alg );
Raef Coles2350f722022-07-19 15:19:56 +0100419+ operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID;
420+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100421+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100422 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
423 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
Antonio de Angelis86b98312021-12-17 21:42:40 +0100424 /* Fell through, meaning no accelerator supports this operation */
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100425@@ -1214,6 +1348,12 @@ psa_status_t psa_driver_wrapper_cipher_set_iv(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100426 &operation->ctx.opaque_test_driver_ctx,
427 iv, iv_length ) );
428 #endif /* PSA_CRYPTO_DRIVER_TEST */
429+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
430+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
431+ return( cc3xx_cipher_set_iv(
432+ &operation->ctx.cc3xx_driver_ctx,
433+ iv, iv_length ) );
434+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
435 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
436 }
437
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100438@@ -1257,6 +1397,13 @@ psa_status_t psa_driver_wrapper_cipher_update(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100439 input, input_length,
440 output, output_size, output_length ) );
441 #endif /* PSA_CRYPTO_DRIVER_TEST */
442+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
443+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
444+ return( cc3xx_cipher_update(
445+ &operation->ctx.cc3xx_driver_ctx,
446+ input, input_length,
447+ output, output_size, output_length ) );
448+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
449 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
450 }
451
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100452@@ -1297,6 +1444,12 @@ psa_status_t psa_driver_wrapper_cipher_finish(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100453 &operation->ctx.opaque_test_driver_ctx,
454 output, output_size, output_length ) );
455 #endif /* PSA_CRYPTO_DRIVER_TEST */
456+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
457+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
458+ return( cc3xx_cipher_finish(
459+ &operation->ctx.cc3xx_driver_ctx,
460+ output, output_size, output_length ) );
461+#endif /* PSA_CRYPTO_DRIVER_CC3XX*/
462 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
463 }
464
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100465@@ -1337,6 +1490,15 @@ psa_status_t psa_driver_wrapper_cipher_abort(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100466 sizeof( operation->ctx.opaque_test_driver_ctx ) );
467 return( status );
468 #endif /* PSA_CRYPTO_DRIVER_TEST */
469+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
470+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
471+ status = cc3xx_cipher_abort(
472+ &operation->ctx.cc3xx_driver_ctx );
473+ mbedtls_platform_zeroize(
474+ &operation->ctx.cc3xx_driver_ctx,
475+ sizeof( operation->ctx.cc3xx_driver_ctx ) );
476+ return( status );
477+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
478 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
479 }
480
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100481@@ -1358,13 +1520,19 @@ psa_status_t psa_driver_wrapper_hash_compute(
Summer Qin36f79f72022-07-05 14:53:35 +0800482 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
483
484 /* Try accelerators first */
485+#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
486 #if defined(PSA_CRYPTO_DRIVER_TEST)
487 status = mbedtls_test_transparent_hash_compute(
488 alg, input, input_length, hash, hash_size, hash_length );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100489 if( status != PSA_ERROR_NOT_SUPPORTED )
490 return( status );
Raef Coles2350f722022-07-19 15:19:56 +0100491-#endif
Summer Qin36f79f72022-07-05 14:53:35 +0800492-
Raef Coles2350f722022-07-19 15:19:56 +0100493+#endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100494+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
495+ status = cc3xx_hash_compute(alg, input, input_length, hash, hash_size,
496+ hash_length);
Raef Coles2350f722022-07-19 15:19:56 +0100497+ return status;
498+#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */
499+#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100500 /* If software fallback is compiled in, try fallback */
Raef Coles2350f722022-07-19 15:19:56 +0100501 #if defined(MBEDTLS_PSA_BUILTIN_HASH)
Summer Qin36f79f72022-07-05 14:53:35 +0800502 status = mbedtls_psa_hash_compute( alg, input, input_length,
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100503@@ -1390,6 +1558,7 @@ psa_status_t psa_driver_wrapper_hash_setup(
Summer Qin36f79f72022-07-05 14:53:35 +0800504 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
505
506 /* Try setup on accelerators first */
507+#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
508 #if defined(PSA_CRYPTO_DRIVER_TEST)
509 status = mbedtls_test_transparent_hash_setup(
510 &operation->ctx.test_driver_ctx, alg );
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100511@@ -1398,17 +1567,23 @@ psa_status_t psa_driver_wrapper_hash_setup(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100512
Raef Coles2350f722022-07-19 15:19:56 +0100513 if( status != PSA_ERROR_NOT_SUPPORTED )
514 return( status );
515-#endif
516+#endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100517+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
518+ status = cc3xx_hash_setup(&operation->ctx.cc3xx_driver_ctx, alg);
Raef Coles2350f722022-07-19 15:19:56 +0100519+ operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID;
520+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100521+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100522+#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
523
524- /* If software fallback is compiled in, try fallback */
525 #if defined(MBEDTLS_PSA_BUILTIN_HASH)
526+ /* If software fallback is compiled in, try fallback */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100527 status = mbedtls_psa_hash_setup( &operation->ctx.mbedtls_ctx, alg );
Summer Qin36f79f72022-07-05 14:53:35 +0800528 if( status == PSA_SUCCESS )
529 operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID;
Raef Coles2350f722022-07-19 15:19:56 +0100530
531 if( status != PSA_ERROR_NOT_SUPPORTED )
532 return( status );
533-#endif
534+#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */
535 /* Nothing left to try if we fall through here */
536 (void) status;
537 (void) operation;
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100538@@ -1422,19 +1597,29 @@ psa_status_t psa_driver_wrapper_hash_clone(
Summer Qin36f79f72022-07-05 14:53:35 +0800539 {
540 switch( source_operation->id )
541 {
542-#if defined(MBEDTLS_PSA_BUILTIN_HASH)
543- case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
544- target_operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID;
545- return( mbedtls_psa_hash_clone( &source_operation->ctx.mbedtls_ctx,
546- &target_operation->ctx.mbedtls_ctx ) );
547-#endif
548+#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
549 #if defined(PSA_CRYPTO_DRIVER_TEST)
550 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
551 target_operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
552 return( mbedtls_test_transparent_hash_clone(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100553 &source_operation->ctx.test_driver_ctx,
554 &target_operation->ctx.test_driver_ctx ) );
Raef Coles2350f722022-07-19 15:19:56 +0100555-#endif
556+#endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100557+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
558+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
559+ target_operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID;
560+ return( cc3xx_hash_clone(
561+ &source_operation->ctx.cc3xx_driver_ctx,
562+ &target_operation->ctx.cc3xx_driver_ctx ) );
Raef Coles2350f722022-07-19 15:19:56 +0100563+
Antonio de Angelis86b98312021-12-17 21:42:40 +0100564+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100565+#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
566+#if defined(MBEDTLS_PSA_BUILTIN_HASH)
Summer Qin36f79f72022-07-05 14:53:35 +0800567+ case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
568+ target_operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID;
569+ return( mbedtls_psa_hash_clone( &source_operation->ctx.mbedtls_ctx,
570+ &target_operation->ctx.mbedtls_ctx ) );
Raef Coles2350f722022-07-19 15:19:56 +0100571+#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100572 default:
573 (void) target_operation;
Raef Coles2350f722022-07-19 15:19:56 +0100574 return( PSA_ERROR_BAD_STATE );
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100575@@ -1448,17 +1633,25 @@ psa_status_t psa_driver_wrapper_hash_update(
Summer Qin36f79f72022-07-05 14:53:35 +0800576 {
577 switch( operation->id )
578 {
579-#if defined(MBEDTLS_PSA_BUILTIN_HASH)
580- case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
581- return( mbedtls_psa_hash_update( &operation->ctx.mbedtls_ctx,
582- input, input_length ) );
583-#endif
584+#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
585 #if defined(PSA_CRYPTO_DRIVER_TEST)
586 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
587 return( mbedtls_test_transparent_hash_update(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100588 &operation->ctx.test_driver_ctx,
589 input, input_length ) );
Raef Coles2350f722022-07-19 15:19:56 +0100590-#endif
591+#endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100592+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
593+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
594+ return( cc3xx_hash_update(
595+ &operation->ctx.cc3xx_driver_ctx,
596+ input, input_length ) );
597+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100598+#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
599+#if defined(MBEDTLS_PSA_BUILTIN_HASH)
Summer Qin36f79f72022-07-05 14:53:35 +0800600+ case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
601+ return( mbedtls_psa_hash_update( &operation->ctx.mbedtls_ctx,
602+ input, input_length ) );
Raef Coles2350f722022-07-19 15:19:56 +0100603+#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100604 default:
605 (void) input;
Raef Coles2350f722022-07-19 15:19:56 +0100606 (void) input_length;
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100607@@ -1474,17 +1667,25 @@ psa_status_t psa_driver_wrapper_hash_finish(
Summer Qin36f79f72022-07-05 14:53:35 +0800608 {
609 switch( operation->id )
610 {
611-#if defined(MBEDTLS_PSA_BUILTIN_HASH)
612- case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
613- return( mbedtls_psa_hash_finish( &operation->ctx.mbedtls_ctx,
614- hash, hash_size, hash_length ) );
615-#endif
616+#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
617 #if defined(PSA_CRYPTO_DRIVER_TEST)
618 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
619 return( mbedtls_test_transparent_hash_finish(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100620 &operation->ctx.test_driver_ctx,
621 hash, hash_size, hash_length ) );
Raef Coles2350f722022-07-19 15:19:56 +0100622-#endif
623+#endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100624+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
625+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
626+ return( cc3xx_hash_finish(
627+ &operation->ctx.cc3xx_driver_ctx,
628+ hash, hash_size, hash_length ) );
629+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100630+#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
631+#if defined(MBEDTLS_PSA_BUILTIN_HASH)
Summer Qin36f79f72022-07-05 14:53:35 +0800632+ case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
633+ return( mbedtls_psa_hash_finish( &operation->ctx.mbedtls_ctx,
634+ hash, hash_size, hash_length ) );
Raef Coles2350f722022-07-19 15:19:56 +0100635+#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100636 default:
637 (void) hash;
Raef Coles2350f722022-07-19 15:19:56 +0100638 (void) hash_size;
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100639@@ -1498,15 +1699,22 @@ psa_status_t psa_driver_wrapper_hash_abort(
Summer Qin36f79f72022-07-05 14:53:35 +0800640 {
641 switch( operation->id )
642 {
643-#if defined(MBEDTLS_PSA_BUILTIN_HASH)
644- case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
645- return( mbedtls_psa_hash_abort( &operation->ctx.mbedtls_ctx ) );
646-#endif
647+#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
648 #if defined(PSA_CRYPTO_DRIVER_TEST)
649 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
Antonio de Angelis86b98312021-12-17 21:42:40 +0100650 return( mbedtls_test_transparent_hash_abort(
651 &operation->ctx.test_driver_ctx ) );
Raef Coles2350f722022-07-19 15:19:56 +0100652-#endif
653+#endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100654+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
655+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
656+ return( cc3xx_hash_abort(
657+ &operation->ctx.cc3xx_driver_ctx ) );
658+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100659+#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
660+#if defined(MBEDTLS_PSA_BUILTIN_HASH)
Summer Qin36f79f72022-07-05 14:53:35 +0800661+ case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
662+ return( mbedtls_psa_hash_abort( &operation->ctx.mbedtls_ctx ) );
Raef Coles2350f722022-07-19 15:19:56 +0100663+#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100664 default:
665 return( PSA_ERROR_BAD_STATE );
Raef Coles2350f722022-07-19 15:19:56 +0100666 }
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100667@@ -1544,6 +1752,17 @@ psa_status_t psa_driver_wrapper_aead_encrypt(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100668 if( status != PSA_ERROR_NOT_SUPPORTED )
669 return( status );
670 #endif /* PSA_CRYPTO_DRIVER_TEST */
671+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
672+ status = cc3xx_aead_encrypt(
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100673+ attributes, key_buffer, key_buffer_size,
674+ alg,
675+ nonce, nonce_length,
676+ additional_data, additional_data_length,
677+ plaintext, plaintext_length,
Antonio de Angelis86b98312021-12-17 21:42:40 +0100678+ ciphertext, ciphertext_size, ciphertext_length );
679+
Raef Coles2350f722022-07-19 15:19:56 +0100680+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100681+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100682 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100683
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100684 /* Fell through, meaning no accelerator supports this operation */
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100685@@ -1596,6 +1815,17 @@ psa_status_t psa_driver_wrapper_aead_decrypt(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100686 if( status != PSA_ERROR_NOT_SUPPORTED )
687 return( status );
688 #endif /* PSA_CRYPTO_DRIVER_TEST */
689+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
690+ status = cc3xx_aead_decrypt(
691+ attributes, key_buffer, key_buffer_size,
692+ alg,
693+ nonce, nonce_length,
694+ additional_data, additional_data_length,
695+ ciphertext, ciphertext_length,
696+ plaintext, plaintext_size, plaintext_length );
697+
Raef Coles2350f722022-07-19 15:19:56 +0100698+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100699+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100700 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100701
702 /* Fell through, meaning no accelerator supports this operation */
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100703@@ -1622,14 +1852,30 @@ psa_status_t psa_driver_get_tag_len( psa_aead_operation_t *operation,
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100704 if( operation == NULL || tag_len == NULL )
705 return( PSA_ERROR_INVALID_ARGUMENT );
706
707+ switch( operation->id )
708+ {
709 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
710+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
711+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
712+ *tag_len = operation->ctx.cc3xx_driver_ctx.tag_length;
713+ return ( PSA_SUCCESS );
714+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
715 #if defined(PSA_CRYPTO_DRIVER_TEST)
716- *tag_len = operation->ctx.transparent_test_driver_ctx.tag_length;
717- return ( PSA_SUCCESS );
718-#endif
Raef Coles2350f722022-07-19 15:19:56 +0100719-#endif
720- *tag_len = operation->ctx.mbedtls_ctx.tag_length;
721- return ( PSA_SUCCESS );
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100722+ case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
723+ *tag_len = operation->ctx.transparent_test_driver_ctx.tag_length;
724+ return ( PSA_SUCCESS );
Raef Coles2350f722022-07-19 15:19:56 +0100725+#endif /* defined(PSA_CRYPTO_DRIVER_TEST) */
726+#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
727+#if defined(MBEDTLS_PSA_BUILTIN_AEAD)
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100728+ case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
729+ *tag_len = operation->ctx.mbedtls_ctx.tag_length;
730+ return ( PSA_SUCCESS );
Raef Coles2350f722022-07-19 15:19:56 +0100731+#endif /* defined(MBEDTLS_PSA_BUILTIN_AEAD) */
732+ default:
733+ return( PSA_ERROR_INVALID_ARGUMENT );
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100734+ }
735+
736+ return( PSA_ERROR_INVALID_ARGUMENT );
737 }
738
Summer Qin36f79f72022-07-05 14:53:35 +0800739 psa_status_t psa_driver_wrapper_aead_encrypt_setup(
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100740@@ -1660,6 +1906,15 @@ psa_status_t psa_driver_wrapper_aead_encrypt_setup(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100741 if( status != PSA_ERROR_NOT_SUPPORTED )
742 return( status );
743 #endif /* PSA_CRYPTO_DRIVER_TEST */
744+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
745+ operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID;
746+ status = cc3xx_aead_encrypt_setup(
747+ &operation->ctx.cc3xx_driver_ctx,
748+ attributes, key_buffer, key_buffer_size,
749+ alg );
750+
Raef Coles2350f722022-07-19 15:19:56 +0100751+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100752+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100753 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100754
755 /* Fell through, meaning no accelerator supports this operation */
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100756@@ -1709,6 +1964,16 @@ psa_status_t psa_driver_wrapper_aead_decrypt_setup(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100757 if( status != PSA_ERROR_NOT_SUPPORTED )
758 return( status );
759 #endif /* PSA_CRYPTO_DRIVER_TEST */
760+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
761+ operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID;
762+ status = cc3xx_aead_decrypt_setup(
763+ &operation->ctx.cc3xx_driver_ctx,
764+ attributes,
765+ key_buffer, key_buffer_size,
766+ alg );
767+
Raef Coles2350f722022-07-19 15:19:56 +0100768+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100769+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100770 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100771
772 /* Fell through, meaning no accelerator supports this operation */
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100773@@ -1755,6 +2020,13 @@ psa_status_t psa_driver_wrapper_aead_set_nonce(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100774 /* Add cases for opaque driver here */
775
776 #endif /* PSA_CRYPTO_DRIVER_TEST */
777+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
778+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
779+ return( cc3xx_aead_set_nonce(
780+ &operation->ctx.cc3xx_driver_ctx,
781+ nonce, nonce_length ) );
782+
Antonio de Angelis86b98312021-12-17 21:42:40 +0100783+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
784 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
785 }
786
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100787@@ -1789,6 +2061,13 @@ psa_status_t psa_driver_wrapper_aead_set_lengths(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100788 /* Add cases for opaque driver here */
789
790 #endif /* PSA_CRYPTO_DRIVER_TEST */
791+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
792+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
793+ return( cc3xx_aead_set_lengths(
794+ &operation->ctx.cc3xx_driver_ctx,
795+ ad_length, plaintext_length ) );
796+
Antonio de Angelis86b98312021-12-17 21:42:40 +0100797+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
798 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
799 }
800
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100801@@ -1823,6 +2102,13 @@ psa_status_t psa_driver_wrapper_aead_update_ad(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100802 /* Add cases for opaque driver here */
803
804 #endif /* PSA_CRYPTO_DRIVER_TEST */
805+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
806+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
807+ return( cc3xx_aead_update_ad(
808+ &operation->ctx.cc3xx_driver_ctx,
809+ input, input_length ) );
810+
Antonio de Angelis86b98312021-12-17 21:42:40 +0100811+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
812 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
813 }
814
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100815@@ -1862,6 +2148,14 @@ psa_status_t psa_driver_wrapper_aead_update(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100816 /* Add cases for opaque driver here */
817
818 #endif /* PSA_CRYPTO_DRIVER_TEST */
819+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
820+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
821+ return( cc3xx_aead_update(
822+ &operation->ctx.cc3xx_driver_ctx,
823+ input, input_length, output, output_size,
824+ output_length ) );
825+
Antonio de Angelis86b98312021-12-17 21:42:40 +0100826+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
827 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
828 }
829
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100830@@ -1906,6 +2200,14 @@ psa_status_t psa_driver_wrapper_aead_finish(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100831 /* Add cases for opaque driver here */
832
833 #endif /* PSA_CRYPTO_DRIVER_TEST */
834+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
835+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
836+ return( cc3xx_aead_finish(
837+ &operation->ctx.cc3xx_driver_ctx,
838+ ciphertext, ciphertext_size,
839+ ciphertext_length, tag, tag_size, tag_length ) );
840+
Antonio de Angelis86b98312021-12-17 21:42:40 +0100841+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
842 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
843 }
844
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100845@@ -1970,6 +2272,14 @@ psa_status_t psa_driver_wrapper_aead_verify(
Raef Coles2350f722022-07-19 15:19:56 +0100846 /* Add cases for opaque driver here */
847
848 #endif /* PSA_CRYPTO_DRIVER_TEST */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100849+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
850+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
851+ return( cc3xx_aead_verify(
852+ &operation->ctx.cc3xx_driver_ctx,
853+ plaintext, plaintext_size,
854+ plaintext_length, tag, tag_length ) );
855+
Antonio de Angelis86b98312021-12-17 21:42:40 +0100856+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
857 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
858 }
859
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100860@@ -2002,6 +2312,12 @@ psa_status_t psa_driver_wrapper_aead_abort(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100861 /* Add cases for opaque driver here */
862
863 #endif /* PSA_CRYPTO_DRIVER_TEST */
864+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
865+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
866+ return( cc3xx_aead_abort(
867+ &operation->ctx.cc3xx_driver_ctx ) );
868+
Antonio de Angelis86b98312021-12-17 21:42:40 +0100869+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
870 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
871 }
872
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100873@@ -2041,6 +2357,12 @@ psa_status_t psa_driver_wrapper_mac_compute(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100874 if( status != PSA_ERROR_NOT_SUPPORTED )
875 return( status );
876 #endif /* PSA_CRYPTO_DRIVER_TEST */
877+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
878+ status = cc3xx_mac_compute(attributes, key_buffer, key_buffer_size, alg,
879+ input, input_length,
880+ mac, mac_size, mac_length);
Raef Coles2350f722022-07-19 15:19:56 +0100881+ return( status );
Antonio de Angelis86b98312021-12-17 21:42:40 +0100882+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Raef Coles2350f722022-07-19 15:19:56 +0100883 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
884 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
Antonio de Angelis86b98312021-12-17 21:42:40 +0100885 /* Fell through, meaning no accelerator supports this operation */
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100886@@ -2109,6 +2431,15 @@ psa_status_t psa_driver_wrapper_mac_sign_setup(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100887 if( status != PSA_ERROR_NOT_SUPPORTED )
888 return( status );
889 #endif /* PSA_CRYPTO_DRIVER_TEST */
890+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
891+ status = cc3xx_mac_sign_setup(
892+ &operation->ctx.cc3xx_driver_ctx,
893+ attributes,
894+ key_buffer, key_buffer_size,
895+ alg);
Raef Coles2350f722022-07-19 15:19:56 +0100896+ operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID;
897+ return status;
898+#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */
899 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
900 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
Antonio de Angelis86b98312021-12-17 21:42:40 +0100901 /* Fell through, meaning no accelerator supports this operation */
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100902@@ -2181,6 +2512,15 @@ psa_status_t psa_driver_wrapper_mac_verify_setup(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100903 if( status != PSA_ERROR_NOT_SUPPORTED )
904 return( status );
905 #endif /* PSA_CRYPTO_DRIVER_TEST */
906+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
907+ status = cc3xx_mac_verify_setup(
908+ &operation->ctx.cc3xx_driver_ctx,
909+ attributes,
910+ key_buffer, key_buffer_size,
911+ alg);
Raef Coles2350f722022-07-19 15:19:56 +0100912+ operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID;
913+ return status;
914+#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */
915 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
916 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
Antonio de Angelis86b98312021-12-17 21:42:40 +0100917 /* Fell through, meaning no accelerator supports this operation */
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100918@@ -2248,6 +2588,10 @@ psa_status_t psa_driver_wrapper_mac_update(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100919 &operation->ctx.opaque_test_driver_ctx,
920 input, input_length ) );
921 #endif /* PSA_CRYPTO_DRIVER_TEST */
922+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
923+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
924+ return(cc3xx_mac_update(&operation->ctx.cc3xx_driver_ctx, input, input_length));
Raef Coles2350f722022-07-19 15:19:56 +0100925+#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100926 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
927 default:
928 (void) input;
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100929@@ -2282,6 +2626,11 @@ psa_status_t psa_driver_wrapper_mac_sign_finish(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100930 &operation->ctx.opaque_test_driver_ctx,
931 mac, mac_size, mac_length ) );
932 #endif /* PSA_CRYPTO_DRIVER_TEST */
933+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
934+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
935+ return(cc3xx_mac_sign_finish(&operation->ctx.cc3xx_driver_ctx,
936+ mac, mac_size, mac_length));
Raef Coles2350f722022-07-19 15:19:56 +0100937+#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100938 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
939 default:
940 (void) mac;
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100941@@ -2316,6 +2665,12 @@ psa_status_t psa_driver_wrapper_mac_verify_finish(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100942 &operation->ctx.opaque_test_driver_ctx,
943 mac, mac_length ) );
944 #endif /* PSA_CRYPTO_DRIVER_TEST */
945+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
946+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
947+ return(cc3xx_mac_verify_finish(
948+ &operation->ctx.cc3xx_driver_ctx,
949+ mac, mac_length));
Raef Coles2350f722022-07-19 15:19:56 +0100950+#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */
Antonio de Angelis86b98312021-12-17 21:42:40 +0100951 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
952 default:
953 (void) mac;
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100954@@ -2343,6 +2698,10 @@ psa_status_t psa_driver_wrapper_mac_abort(
Antonio de Angelis86b98312021-12-17 21:42:40 +0100955 return( mbedtls_test_opaque_mac_abort(
956 &operation->ctx.opaque_test_driver_ctx ) );
957 #endif /* PSA_CRYPTO_DRIVER_TEST */
958+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
959+ case PSA_CRYPTO_CC3XX_DRIVER_ID:
960+ return(cc3xx_mac_abort(&operation->ctx.cc3xx_driver_ctx));
Raef Coles2350f722022-07-19 15:19:56 +0100961+#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100962 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
963 default:
964 return( PSA_ERROR_INVALID_ARGUMENT );
Antonio de Angelis695d75b2022-08-22 15:06:24 +0100965@@ -2350,7 +2709,58 @@ psa_status_t psa_driver_wrapper_mac_abort(
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100966 }
967
968 /*
969- * Asymmetric cryptography
Antonio de Angelis86b98312021-12-17 21:42:40 +0100970+ * Key agreement functions
971+ */
972+psa_status_t psa_driver_wrapper_key_agreement(
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100973+ psa_algorithm_t alg,
Antonio de Angelis86b98312021-12-17 21:42:40 +0100974+ const psa_key_attributes_t *attributes,
975+ const uint8_t *priv_key, size_t priv_key_size,
976+ const uint8_t *publ_key, size_t publ_key_size,
Antonio de Angelis90bee0f2022-07-13 11:22:41 +0100977+ uint8_t *output, size_t output_size, size_t *output_length )
Antonio de Angelis86b98312021-12-17 21:42:40 +0100978+{
979+ psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
980+
981+ psa_key_location_t location =
982+ PSA_KEY_LIFETIME_GET_LOCATION( attributes->core.lifetime );
983+
984+ switch( location )
985+ {
986+ case PSA_KEY_LOCATION_LOCAL_STORAGE:
987+ /* Key is stored in the slot in export representation, so
988+ * cycle through all known transparent accelerators */
989+#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
990+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
991+ status = cc3xx_key_agreement( attributes,
992+ priv_key,
993+ priv_key_size,
994+ publ_key,
995+ publ_key_size,
996+ output,
997+ output_size,
998+ output_length,
999+ alg );
1000+ return( status );
1001+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001002+#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
Antonio de Angelis86b98312021-12-17 21:42:40 +01001003+ (void) status;
1004+ return ( PSA_ERROR_NOT_SUPPORTED );
1005+ default:
1006+ /* Key is declared with a lifetime not known to us */
1007+ (void) priv_key;
1008+ (void) priv_key_size;
1009+ (void) publ_key;
1010+ (void) publ_key_size;
1011+ (void) output;
1012+ (void) output_size;
1013+ (void) output_length;
1014+ (void) alg;
1015+
1016+ return( PSA_ERROR_INVALID_ARGUMENT );
1017+ }
1018+}
1019+
1020+/*
1021+ * Asymmetric operations
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001022 */
1023 psa_status_t psa_driver_wrapper_asymmetric_encrypt(
1024 const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
Antonio de Angelis695d75b2022-08-22 15:06:24 +01001025@@ -2368,6 +2778,20 @@ psa_status_t psa_driver_wrapper_asymmetric_encrypt(
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001026 /* Key is stored in the slot in export representation, so
1027 * cycle through all known transparent accelerators */
1028 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
Antonio de Angelis86b98312021-12-17 21:42:40 +01001029+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
1030+ status = cc3xx_asymmetric_encrypt( attributes,
1031+ key_buffer,
1032+ key_buffer_size,
1033+ alg,
1034+ input,
1035+ input_length,
1036+ salt,
1037+ salt_length,
1038+ output,
1039+ output_size,
1040+ output_length );
1041+ return( status );
1042+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001043 #if defined(PSA_CRYPTO_DRIVER_TEST)
1044 status = mbedtls_test_transparent_asymmetric_encrypt( attributes,
1045 key_buffer, key_buffer_size, alg, input, input_length,
Antonio de Angelis695d75b2022-08-22 15:06:24 +01001046@@ -2426,6 +2850,20 @@ psa_status_t psa_driver_wrapper_asymmetric_decrypt(
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001047 /* Key is stored in the slot in export representation, so
1048 * cycle through all known transparent accelerators */
1049 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
Antonio de Angelis86b98312021-12-17 21:42:40 +01001050+#if defined(PSA_CRYPTO_DRIVER_CC3XX)
1051+ status = cc3xx_asymmetric_decrypt( attributes,
1052+ key_buffer,
1053+ key_buffer_size,
1054+ alg,
1055+ input,
1056+ input_length,
1057+ salt,
1058+ salt_length,
1059+ output,
1060+ output_size,
1061+ output_length );
1062+ return( status );
1063+#endif /* PSA_CRYPTO_DRIVER_CC3XX */
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001064 #if defined(PSA_CRYPTO_DRIVER_TEST)
1065 status = mbedtls_test_transparent_asymmetric_decrypt( attributes,
1066 key_buffer, key_buffer_size, alg, input, input_length,
Antonio de Angelis86b98312021-12-17 21:42:40 +01001067diff --git a/library/psa_crypto_driver_wrappers.h b/library/psa_crypto_driver_wrappers.h
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001068index 12c649da3..ac0cd1d89 100644
Antonio de Angelis86b98312021-12-17 21:42:40 +01001069--- a/library/psa_crypto_driver_wrappers.h
1070+++ b/library/psa_crypto_driver_wrappers.h
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001071@@ -361,6 +361,20 @@ psa_status_t psa_driver_wrapper_asymmetric_decrypt(
1072 size_t output_size,
1073 size_t *output_length );
Antonio de Angelis86b98312021-12-17 21:42:40 +01001074
1075+/*
1076+ * Key agreement functions
1077+ */
1078+psa_status_t psa_driver_wrapper_key_agreement(
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001079+ psa_algorithm_t alg,
Antonio de Angelis86b98312021-12-17 21:42:40 +01001080+ const psa_key_attributes_t *attributes,
Antonio de Angelis90bee0f2022-07-13 11:22:41 +01001081+ const uint8_t *priv_key,
1082+ size_t priv_key_size,
1083+ const uint8_t *publ_key,
1084+ size_t peer_key_size,
1085+ uint8_t *output,
1086+ size_t output_size,
1087+ size_t *output_length );
Antonio de Angelis86b98312021-12-17 21:42:40 +01001088+
1089 #endif /* PSA_CRYPTO_DRIVER_WRAPPERS_H */
1090
1091 /* End of automatically generated file. */
1092--
Antonio de Angelis2718b582022-08-23 14:58:40 +010010932.25.1
Antonio de Angelis86b98312021-12-17 21:42:40 +01001094