Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 1 | From 6c54899b07c7cc9615e98eba30781500f4b906c6 Mon Sep 17 00:00:00 2001 |
Antonio de Angelis | 90bee0f | 2022-07-13 11:22:41 +0100 | [diff] [blame] | 2 | From: Antonio de Angelis <Antonio.deAngelis@arm.com> |
| 3 | Date: Fri, 15 Jul 2022 12:41:34 +0100 |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 4 | Subject: [PATCH 3/6] Driver wrapper entry points for CC3XX |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 5 | |
Antonio de Angelis | 90bee0f | 2022-07-13 11:22:41 +0100 | [diff] [blame] | 6 | Manually hardcode PSA driver entry points for the CC3XX driver |
| 7 | into psa_crypto_driver_wrappers.c (and provide missing entry point |
| 8 | definitions if any). This is a temporary solution until the codegen |
| 9 | framework is available for automatic integration. |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 10 | |
| 11 | Signed-off-by: Summer Qin <summer.qin@arm.com> |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 12 | Signed-off-by: Salome Thirot <salome.thirot@arm.com> |
| 13 | Signed-off-by: Abbas Bracken Ziad <abbas.brackenziad@arm.com> |
| 14 | Signed-off-by: Georgios Vasilakis <georgios.vasilakis@nordicsemi.no> |
| 15 | Signed-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 + |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 19 | library/psa_crypto_driver_wrappers.c | 486 ++++++++++++++++-- |
| 20 | 3 files changed, 452 insertions(+), 52 deletions(-) |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 21 | |
| 22 | diff --git a/include/psa/crypto_driver_contexts_composites.h b/include/psa/crypto_driver_contexts_composites.h |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 23 | index 3f1c8af4..2fdf9561 100644 |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 24 | --- a/include/psa/crypto_driver_contexts_composites.h |
| 25 | +++ b/include/psa/crypto_driver_contexts_composites.h |
| 26 | @@ -41,6 +41,9 @@ |
| 27 | |
| 28 | /* Include the context structure definitions for those drivers that were |
| 29 | * declared during the autogeneration process. */ |
| 30 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 31 | +#include "cc3xx_crypto_primitives_private.h" |
| 32 | +#endif |
| 33 | |
| 34 | #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) |
| 35 | #include <libtestdriver1/include/psa/crypto.h> |
| 36 | @@ -104,6 +107,9 @@ typedef union { |
| 37 | mbedtls_transparent_test_driver_mac_operation_t transparent_test_driver_ctx; |
| 38 | mbedtls_opaque_test_driver_mac_operation_t opaque_test_driver_ctx; |
| 39 | #endif |
| 40 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 41 | + cc3xx_mac_operation_t cc3xx_driver_ctx; |
| 42 | +#endif |
| 43 | } psa_driver_mac_context_t; |
| 44 | |
| 45 | typedef union { |
| 46 | @@ -112,6 +118,9 @@ typedef union { |
| 47 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
| 48 | mbedtls_transparent_test_driver_aead_operation_t transparent_test_driver_ctx; |
| 49 | #endif |
| 50 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 51 | + cc3xx_aead_operation_t cc3xx_driver_ctx; |
| 52 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 53 | } psa_driver_aead_context_t; |
| 54 | |
| 55 | #endif /* PSA_CRYPTO_DRIVER_CONTEXTS_COMPOSITES_H */ |
| 56 | diff --git a/include/psa/crypto_driver_contexts_primitives.h b/include/psa/crypto_driver_contexts_primitives.h |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 57 | index 2bb01ed4..2bc0bda7 100644 |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 58 | --- a/include/psa/crypto_driver_contexts_primitives.h |
| 59 | +++ b/include/psa/crypto_driver_contexts_primitives.h |
| 60 | @@ -40,6 +40,9 @@ |
| 61 | |
| 62 | /* Include the context structure definitions for those drivers that were |
| 63 | * declared during the autogeneration process. */ |
| 64 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 65 | +#include "cc3xx_crypto_primitives_private.h" |
| 66 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 67 | |
| 68 | #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) |
| 69 | #include <libtestdriver1/include/psa/crypto.h> |
| 70 | @@ -102,6 +105,9 @@ typedef union { |
| 71 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
| 72 | mbedtls_transparent_test_driver_hash_operation_t test_driver_ctx; |
| 73 | #endif |
| 74 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 75 | + cc3xx_hash_operation_t cc3xx_driver_ctx; |
| 76 | +#endif |
| 77 | } psa_driver_hash_context_t; |
| 78 | |
| 79 | typedef union { |
| 80 | @@ -111,6 +117,9 @@ typedef union { |
| 81 | mbedtls_transparent_test_driver_cipher_operation_t transparent_test_driver_ctx; |
| 82 | mbedtls_opaque_test_driver_cipher_operation_t opaque_test_driver_ctx; |
| 83 | #endif |
| 84 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 85 | + cc3xx_cipher_operation_t cc3xx_driver_ctx; |
| 86 | +#endif |
| 87 | } psa_driver_cipher_context_t; |
| 88 | |
| 89 | #endif /* PSA_CRYPTO_DRIVER_CONTEXTS_PRIMITIVES_H */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 90 | diff --git a/library/psa_crypto_driver_wrappers.c b/library/psa_crypto_driver_wrappers.c |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 91 | index 19819413..e822eef0 100644 |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 92 | --- a/library/psa_crypto_driver_wrappers.c |
| 93 | +++ b/library/psa_crypto_driver_wrappers.c |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 94 | @@ -48,6 +48,16 @@ |
| 95 | |
| 96 | #endif |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 97 | |
| 98 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 99 | +#ifndef PSA_CRYPTO_DRIVER_PRESENT |
| 100 | +#define PSA_CRYPTO_DRIVER_PRESENT |
| 101 | +#endif |
| 102 | +#ifndef PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT |
| 103 | +#define PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT |
| 104 | +#endif |
| 105 | +#include "cc3xx.h" |
| 106 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 107 | + |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 108 | #endif /* MBEDTLS_PSA_CRYPTO_DRIVERS */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 109 | /* END-driver headers */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 110 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 111 | @@ -58,6 +68,9 @@ |
| 112 | #define PSA_CRYPTO_MBED_TLS_DRIVER_ID (1) |
| 113 | #define MBEDTLS_TEST_OPAQUE_DRIVER_ID (2) |
| 114 | #define MBEDTLS_TEST_TRANSPARENT_DRIVER_ID (3) |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 115 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 116 | +#define PSA_CRYPTO_CC3XX_DRIVER_ID (4) |
| 117 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 118 | |
| 119 | /* END-driver id */ |
| 120 | |
| 121 | @@ -79,6 +92,12 @@ psa_status_t psa_driver_wrapper_init( void ) |
Antonio de Angelis | 695d75b | 2022-08-22 15:06:24 +0100 | [diff] [blame] | 122 | { |
| 123 | psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; |
| 124 | |
| 125 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 126 | + status = cc3xx_init(); |
| 127 | + if (status != PSA_SUCCESS) |
| 128 | + return ( status ); |
| 129 | +#endif |
| 130 | + |
| 131 | #if defined(MBEDTLS_PSA_CRYPTO_SE_C) |
| 132 | status = psa_init_all_se_drivers( ); |
| 133 | if( status != PSA_SUCCESS ) |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 134 | @@ -101,6 +120,10 @@ psa_status_t psa_driver_wrapper_init( void ) |
Antonio de Angelis | 695d75b | 2022-08-22 15:06:24 +0100 | [diff] [blame] | 135 | |
| 136 | void psa_driver_wrapper_free( void ) |
| 137 | { |
| 138 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 139 | + (void)cc3xx_free(); |
| 140 | +#endif |
| 141 | + |
| 142 | #if defined(MBEDTLS_PSA_CRYPTO_SE_C) |
| 143 | /* Unregister all secure element drivers, so that we restart from |
| 144 | * a pristine state. */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 145 | @@ -150,8 +173,30 @@ psa_status_t psa_driver_wrapper_sign_message( |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 146 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 147 | return( status ); |
| 148 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 149 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 150 | + status = cc3xx_sign_message( |
| 151 | + attributes, |
| 152 | + key_buffer, |
| 153 | + key_buffer_size, |
| 154 | + alg, |
| 155 | + input, |
| 156 | + input_length, |
| 157 | + signature, |
| 158 | + signature_size, |
| 159 | + signature_length ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 160 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 161 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 162 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 163 | - break; |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 164 | + /* Fell through, meaning no accelerator supports this operation */ |
| 165 | + return( psa_sign_message_builtin( attributes, |
| 166 | + key_buffer, |
| 167 | + key_buffer_size, |
| 168 | + alg, |
| 169 | + input, |
| 170 | + input_length, |
| 171 | + signature, |
| 172 | + signature_size, |
| 173 | + signature_length ) ); |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 174 | |
| 175 | /* Add cases for opaque driver here */ |
| 176 | #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 177 | @@ -175,18 +220,10 @@ psa_status_t psa_driver_wrapper_sign_message( |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 178 | default: |
| 179 | /* Key is declared with a lifetime not known to us */ |
| 180 | (void)status; |
| 181 | - break; |
| 182 | + return( PSA_ERROR_INVALID_ARGUMENT ); |
| 183 | } |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 184 | |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 185 | - return( psa_sign_message_builtin( attributes, |
| 186 | - key_buffer, |
| 187 | - key_buffer_size, |
| 188 | - alg, |
| 189 | - input, |
| 190 | - input_length, |
| 191 | - signature, |
| 192 | - signature_size, |
| 193 | - signature_length ) ); |
| 194 | + return status; |
| 195 | } |
| 196 | |
| 197 | psa_status_t psa_driver_wrapper_verify_message( |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 198 | @@ -223,8 +260,28 @@ psa_status_t psa_driver_wrapper_verify_message( |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 199 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 200 | return( status ); |
| 201 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 202 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 203 | + status = cc3xx_verify_message( |
| 204 | + attributes, |
| 205 | + key_buffer, |
| 206 | + key_buffer_size, |
| 207 | + alg, |
| 208 | + input, |
| 209 | + input_length, |
| 210 | + signature, |
| 211 | + signature_length ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 212 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 213 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 214 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 215 | - break; |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 216 | + /* Fell through, meaning no accelerator supports this operation */ |
| 217 | + return( psa_verify_message_builtin( attributes, |
| 218 | + key_buffer, |
| 219 | + key_buffer_size, |
| 220 | + alg, |
| 221 | + input, |
| 222 | + input_length, |
| 223 | + signature, |
| 224 | + signature_length ) ); |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 225 | |
| 226 | /* Add cases for opaque driver here */ |
| 227 | #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 228 | @@ -247,17 +304,9 @@ psa_status_t psa_driver_wrapper_verify_message( |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 229 | default: |
| 230 | /* Key is declared with a lifetime not known to us */ |
| 231 | (void)status; |
| 232 | - break; |
| 233 | + return( PSA_ERROR_INVALID_ARGUMENT ); |
| 234 | } |
| 235 | - |
| 236 | - return( psa_verify_message_builtin( attributes, |
| 237 | - key_buffer, |
| 238 | - key_buffer_size, |
| 239 | - alg, |
| 240 | - input, |
| 241 | - input_length, |
| 242 | - signature, |
| 243 | - signature_length ) ); |
| 244 | + return status; |
| 245 | } |
| 246 | |
| 247 | psa_status_t psa_driver_wrapper_sign_hash( |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 248 | @@ -310,6 +359,18 @@ psa_status_t psa_driver_wrapper_sign_hash( |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 249 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 250 | return( status ); |
| 251 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 252 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 253 | + status = cc3xx_sign_hash( attributes, |
| 254 | + key_buffer, |
| 255 | + key_buffer_size, |
| 256 | + alg, |
| 257 | + hash, |
| 258 | + hash_length, |
| 259 | + signature, |
| 260 | + signature_size, |
| 261 | + signature_length ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 262 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 263 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 264 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 265 | /* Fell through, meaning no accelerator supports this operation */ |
| 266 | return( psa_sign_hash_builtin( attributes, |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 267 | @@ -380,6 +441,17 @@ psa_status_t psa_driver_wrapper_verify_hash( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 268 | /* Key is stored in the slot in export representation, so |
| 269 | * cycle through all known transparent accelerators */ |
| 270 | #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
| 271 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 272 | + status = cc3xx_verify_hash( attributes, |
| 273 | + key_buffer, |
| 274 | + key_buffer_size, |
| 275 | + alg, |
| 276 | + hash, |
| 277 | + hash_length, |
| 278 | + signature, |
| 279 | + signature_length ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 280 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 281 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 282 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
| 283 | status = mbedtls_test_transparent_signature_verify_hash( |
| 284 | attributes, |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 285 | @@ -555,6 +627,12 @@ psa_status_t psa_driver_wrapper_generate_key( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 286 | if( PSA_KEY_TYPE_IS_ASYMMETRIC( attributes->core.type ) ) |
| 287 | { |
| 288 | /* Cycle through all known transparent accelerators */ |
| 289 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 290 | + status = cc3xx_generate_key( |
| 291 | + attributes, key_buffer, key_buffer_size, |
| 292 | + key_buffer_length ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 293 | + break; |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 294 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 295 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
| 296 | status = mbedtls_test_transparent_generate_key( |
| 297 | attributes, key_buffer, key_buffer_size, |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 298 | @@ -804,7 +882,16 @@ psa_status_t psa_driver_wrapper_export_public_key( |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 299 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 300 | return( status ); |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 301 | #endif |
| 302 | - |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 303 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 304 | + status = cc3xx_export_public_key( |
| 305 | + attributes, |
| 306 | + key_buffer, |
| 307 | + key_buffer_size, |
| 308 | + data, |
| 309 | + data_size, |
| 310 | + data_length ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 311 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 312 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 313 | |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 314 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 315 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 316 | @@ -967,6 +1054,20 @@ psa_status_t psa_driver_wrapper_cipher_encrypt( |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 317 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 318 | return( status ); |
| 319 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 320 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 321 | + status = cc3xx_cipher_encrypt( attributes, |
| 322 | + key_buffer, |
| 323 | + key_buffer_size, |
| 324 | + alg, |
| 325 | + iv, |
| 326 | + iv_length, |
| 327 | + input, |
| 328 | + input_length, |
| 329 | + output, |
| 330 | + output_size, |
| 331 | + output_length ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 332 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 333 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 334 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 335 | |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 336 | #if defined(MBEDTLS_PSA_BUILTIN_CIPHER) |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 337 | @@ -1055,6 +1156,18 @@ psa_status_t psa_driver_wrapper_cipher_decrypt( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 338 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 339 | return( status ); |
| 340 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 341 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 342 | + status = cc3xx_cipher_decrypt( attributes, |
| 343 | + key_buffer, |
| 344 | + key_buffer_size, |
| 345 | + alg, |
| 346 | + input, |
| 347 | + input_length, |
| 348 | + output, |
| 349 | + output_size, |
| 350 | + output_length ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 351 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 352 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 353 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 354 | |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 355 | #if defined(MBEDTLS_PSA_BUILTIN_CIPHER) |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 356 | @@ -1132,6 +1245,16 @@ psa_status_t psa_driver_wrapper_cipher_encrypt_setup( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 357 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 358 | return( status ); |
| 359 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 360 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 361 | + status = cc3xx_cipher_encrypt_setup( |
| 362 | + &operation->ctx.cc3xx_driver_ctx, |
| 363 | + attributes, |
| 364 | + key_buffer, |
| 365 | + key_buffer_size, |
| 366 | + alg ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 367 | + operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID; |
| 368 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 369 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 370 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 371 | #if defined(MBEDTLS_PSA_BUILTIN_CIPHER) |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 372 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 373 | @@ -1205,6 +1328,16 @@ psa_status_t psa_driver_wrapper_cipher_decrypt_setup( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 374 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 375 | return( status ); |
| 376 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 377 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 378 | + status = cc3xx_cipher_decrypt_setup( |
| 379 | + &operation->ctx.cc3xx_driver_ctx, |
| 380 | + attributes, |
| 381 | + key_buffer, |
| 382 | + key_buffer_size, |
| 383 | + alg ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 384 | + operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID; |
| 385 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 386 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 387 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 388 | #if defined(MBEDTLS_PSA_BUILTIN_CIPHER) |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 389 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 390 | @@ -1273,6 +1406,12 @@ psa_status_t psa_driver_wrapper_cipher_set_iv( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 391 | &operation->ctx.opaque_test_driver_ctx, |
| 392 | iv, iv_length ) ); |
| 393 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 394 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 395 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 396 | + return( cc3xx_cipher_set_iv( |
| 397 | + &operation->ctx.cc3xx_driver_ctx, |
| 398 | + iv, iv_length ) ); |
| 399 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 400 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 401 | } |
| 402 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 403 | @@ -1316,6 +1455,13 @@ psa_status_t psa_driver_wrapper_cipher_update( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 404 | input, input_length, |
| 405 | output, output_size, output_length ) ); |
| 406 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 407 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 408 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 409 | + return( cc3xx_cipher_update( |
| 410 | + &operation->ctx.cc3xx_driver_ctx, |
| 411 | + input, input_length, |
| 412 | + output, output_size, output_length ) ); |
| 413 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 414 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 415 | } |
| 416 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 417 | @@ -1356,6 +1502,12 @@ psa_status_t psa_driver_wrapper_cipher_finish( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 418 | &operation->ctx.opaque_test_driver_ctx, |
| 419 | output, output_size, output_length ) ); |
| 420 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 421 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 422 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 423 | + return( cc3xx_cipher_finish( |
| 424 | + &operation->ctx.cc3xx_driver_ctx, |
| 425 | + output, output_size, output_length ) ); |
| 426 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX*/ |
| 427 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 428 | } |
| 429 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 430 | @@ -1396,6 +1548,15 @@ psa_status_t psa_driver_wrapper_cipher_abort( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 431 | sizeof( operation->ctx.opaque_test_driver_ctx ) ); |
| 432 | return( status ); |
| 433 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 434 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 435 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 436 | + status = cc3xx_cipher_abort( |
| 437 | + &operation->ctx.cc3xx_driver_ctx ); |
| 438 | + mbedtls_platform_zeroize( |
| 439 | + &operation->ctx.cc3xx_driver_ctx, |
| 440 | + sizeof( operation->ctx.cc3xx_driver_ctx ) ); |
| 441 | + return( status ); |
| 442 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 443 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 444 | } |
| 445 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 446 | @@ -1417,13 +1578,19 @@ psa_status_t psa_driver_wrapper_hash_compute( |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 447 | psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; |
| 448 | |
| 449 | /* Try accelerators first */ |
| 450 | +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
| 451 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
| 452 | status = mbedtls_test_transparent_hash_compute( |
| 453 | alg, input, input_length, hash, hash_size, hash_length ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 454 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 455 | return( status ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 456 | -#endif |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 457 | - |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 458 | +#endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 459 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 460 | + status = cc3xx_hash_compute(alg, input, input_length, hash, hash_size, |
| 461 | + hash_length); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 462 | + return status; |
| 463 | +#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */ |
| 464 | +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 465 | /* If software fallback is compiled in, try fallback */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 466 | #if defined(MBEDTLS_PSA_BUILTIN_HASH) |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 467 | status = mbedtls_psa_hash_compute( alg, input, input_length, |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 468 | @@ -1449,6 +1616,7 @@ psa_status_t psa_driver_wrapper_hash_setup( |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 469 | psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; |
| 470 | |
| 471 | /* Try setup on accelerators first */ |
| 472 | +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
| 473 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
| 474 | status = mbedtls_test_transparent_hash_setup( |
| 475 | &operation->ctx.test_driver_ctx, alg ); |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 476 | @@ -1457,17 +1625,23 @@ psa_status_t psa_driver_wrapper_hash_setup( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 477 | |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 478 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 479 | return( status ); |
| 480 | -#endif |
| 481 | +#endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 482 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 483 | + status = cc3xx_hash_setup(&operation->ctx.cc3xx_driver_ctx, alg); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 484 | + operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID; |
| 485 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 486 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 487 | +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 488 | |
| 489 | - /* If software fallback is compiled in, try fallback */ |
| 490 | #if defined(MBEDTLS_PSA_BUILTIN_HASH) |
| 491 | + /* If software fallback is compiled in, try fallback */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 492 | status = mbedtls_psa_hash_setup( &operation->ctx.mbedtls_ctx, alg ); |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 493 | if( status == PSA_SUCCESS ) |
| 494 | operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID; |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 495 | |
| 496 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 497 | return( status ); |
| 498 | -#endif |
| 499 | +#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */ |
| 500 | /* Nothing left to try if we fall through here */ |
| 501 | (void) status; |
| 502 | (void) operation; |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 503 | @@ -1481,19 +1655,29 @@ psa_status_t psa_driver_wrapper_hash_clone( |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 504 | { |
| 505 | switch( source_operation->id ) |
| 506 | { |
| 507 | -#if defined(MBEDTLS_PSA_BUILTIN_HASH) |
| 508 | - case PSA_CRYPTO_MBED_TLS_DRIVER_ID: |
| 509 | - target_operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID; |
| 510 | - return( mbedtls_psa_hash_clone( &source_operation->ctx.mbedtls_ctx, |
| 511 | - &target_operation->ctx.mbedtls_ctx ) ); |
| 512 | -#endif |
| 513 | +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
| 514 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 515 | case MBEDTLS_TEST_TRANSPARENT_DRIVER_ID: |
| 516 | target_operation->id = MBEDTLS_TEST_TRANSPARENT_DRIVER_ID; |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 517 | return( mbedtls_test_transparent_hash_clone( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 518 | &source_operation->ctx.test_driver_ctx, |
| 519 | &target_operation->ctx.test_driver_ctx ) ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 520 | -#endif |
| 521 | +#endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 522 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 523 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 524 | + target_operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID; |
| 525 | + return( cc3xx_hash_clone( |
| 526 | + &source_operation->ctx.cc3xx_driver_ctx, |
| 527 | + &target_operation->ctx.cc3xx_driver_ctx ) ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 528 | + |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 529 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 530 | +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 531 | +#if defined(MBEDTLS_PSA_BUILTIN_HASH) |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 532 | + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: |
| 533 | + target_operation->id = PSA_CRYPTO_MBED_TLS_DRIVER_ID; |
| 534 | + return( mbedtls_psa_hash_clone( &source_operation->ctx.mbedtls_ctx, |
| 535 | + &target_operation->ctx.mbedtls_ctx ) ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 536 | +#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 537 | default: |
| 538 | (void) target_operation; |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 539 | return( PSA_ERROR_BAD_STATE ); |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 540 | @@ -1507,17 +1691,25 @@ psa_status_t psa_driver_wrapper_hash_update( |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 541 | { |
| 542 | switch( operation->id ) |
| 543 | { |
| 544 | -#if defined(MBEDTLS_PSA_BUILTIN_HASH) |
| 545 | - case PSA_CRYPTO_MBED_TLS_DRIVER_ID: |
| 546 | - return( mbedtls_psa_hash_update( &operation->ctx.mbedtls_ctx, |
| 547 | - input, input_length ) ); |
| 548 | -#endif |
| 549 | +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
| 550 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 551 | case MBEDTLS_TEST_TRANSPARENT_DRIVER_ID: |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 552 | return( mbedtls_test_transparent_hash_update( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 553 | &operation->ctx.test_driver_ctx, |
| 554 | input, input_length ) ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 555 | -#endif |
| 556 | +#endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 557 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 558 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 559 | + return( cc3xx_hash_update( |
| 560 | + &operation->ctx.cc3xx_driver_ctx, |
| 561 | + input, input_length ) ); |
| 562 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 563 | +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 564 | +#if defined(MBEDTLS_PSA_BUILTIN_HASH) |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 565 | + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: |
| 566 | + return( mbedtls_psa_hash_update( &operation->ctx.mbedtls_ctx, |
| 567 | + input, input_length ) ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 568 | +#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 569 | default: |
| 570 | (void) input; |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 571 | (void) input_length; |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 572 | @@ -1533,17 +1725,25 @@ psa_status_t psa_driver_wrapper_hash_finish( |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 573 | { |
| 574 | switch( operation->id ) |
| 575 | { |
| 576 | -#if defined(MBEDTLS_PSA_BUILTIN_HASH) |
| 577 | - case PSA_CRYPTO_MBED_TLS_DRIVER_ID: |
| 578 | - return( mbedtls_psa_hash_finish( &operation->ctx.mbedtls_ctx, |
| 579 | - hash, hash_size, hash_length ) ); |
| 580 | -#endif |
| 581 | +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
| 582 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 583 | case MBEDTLS_TEST_TRANSPARENT_DRIVER_ID: |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 584 | return( mbedtls_test_transparent_hash_finish( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 585 | &operation->ctx.test_driver_ctx, |
| 586 | hash, hash_size, hash_length ) ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 587 | -#endif |
| 588 | +#endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 589 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 590 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 591 | + return( cc3xx_hash_finish( |
| 592 | + &operation->ctx.cc3xx_driver_ctx, |
| 593 | + hash, hash_size, hash_length ) ); |
| 594 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 595 | +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 596 | +#if defined(MBEDTLS_PSA_BUILTIN_HASH) |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 597 | + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: |
| 598 | + return( mbedtls_psa_hash_finish( &operation->ctx.mbedtls_ctx, |
| 599 | + hash, hash_size, hash_length ) ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 600 | +#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 601 | default: |
| 602 | (void) hash; |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 603 | (void) hash_size; |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 604 | @@ -1557,15 +1757,22 @@ psa_status_t psa_driver_wrapper_hash_abort( |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 605 | { |
| 606 | switch( operation->id ) |
| 607 | { |
| 608 | -#if defined(MBEDTLS_PSA_BUILTIN_HASH) |
| 609 | - case PSA_CRYPTO_MBED_TLS_DRIVER_ID: |
| 610 | - return( mbedtls_psa_hash_abort( &operation->ctx.mbedtls_ctx ) ); |
| 611 | -#endif |
| 612 | +#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
| 613 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 614 | case MBEDTLS_TEST_TRANSPARENT_DRIVER_ID: |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 615 | return( mbedtls_test_transparent_hash_abort( |
| 616 | &operation->ctx.test_driver_ctx ) ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 617 | -#endif |
| 618 | +#endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 619 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 620 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 621 | + return( cc3xx_hash_abort( |
| 622 | + &operation->ctx.cc3xx_driver_ctx ) ); |
| 623 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 624 | +#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 625 | +#if defined(MBEDTLS_PSA_BUILTIN_HASH) |
Summer Qin | 36f79f7 | 2022-07-05 14:53:35 +0800 | [diff] [blame] | 626 | + case PSA_CRYPTO_MBED_TLS_DRIVER_ID: |
| 627 | + return( mbedtls_psa_hash_abort( &operation->ctx.mbedtls_ctx ) ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 628 | +#endif /* defined(MBEDTLS_PSA_BUILTIN_HASH) */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 629 | default: |
| 630 | return( PSA_ERROR_BAD_STATE ); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 631 | } |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 632 | @@ -1603,6 +1810,17 @@ psa_status_t psa_driver_wrapper_aead_encrypt( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 633 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 634 | return( status ); |
| 635 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 636 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 637 | + status = cc3xx_aead_encrypt( |
Antonio de Angelis | 90bee0f | 2022-07-13 11:22:41 +0100 | [diff] [blame] | 638 | + attributes, key_buffer, key_buffer_size, |
| 639 | + alg, |
| 640 | + nonce, nonce_length, |
| 641 | + additional_data, additional_data_length, |
| 642 | + plaintext, plaintext_length, |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 643 | + ciphertext, ciphertext_size, ciphertext_length ); |
| 644 | + |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 645 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 646 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 647 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 648 | |
Antonio de Angelis | 90bee0f | 2022-07-13 11:22:41 +0100 | [diff] [blame] | 649 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 650 | @@ -1655,6 +1873,17 @@ psa_status_t psa_driver_wrapper_aead_decrypt( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 651 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 652 | return( status ); |
| 653 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 654 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 655 | + status = cc3xx_aead_decrypt( |
| 656 | + attributes, key_buffer, key_buffer_size, |
| 657 | + alg, |
| 658 | + nonce, nonce_length, |
| 659 | + additional_data, additional_data_length, |
| 660 | + ciphertext, ciphertext_length, |
| 661 | + plaintext, plaintext_size, plaintext_length ); |
| 662 | + |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 663 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 664 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 665 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 666 | |
| 667 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 668 | @@ -1703,6 +1932,15 @@ psa_status_t psa_driver_wrapper_aead_encrypt_setup( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 669 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 670 | return( status ); |
| 671 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 672 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 673 | + operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID; |
| 674 | + status = cc3xx_aead_encrypt_setup( |
| 675 | + &operation->ctx.cc3xx_driver_ctx, |
| 676 | + attributes, key_buffer, key_buffer_size, |
| 677 | + alg ); |
| 678 | + |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 679 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 680 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 681 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 682 | |
| 683 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 684 | @@ -1752,6 +1990,16 @@ psa_status_t psa_driver_wrapper_aead_decrypt_setup( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 685 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 686 | return( status ); |
| 687 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 688 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 689 | + operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID; |
| 690 | + status = cc3xx_aead_decrypt_setup( |
| 691 | + &operation->ctx.cc3xx_driver_ctx, |
| 692 | + attributes, |
| 693 | + key_buffer, key_buffer_size, |
| 694 | + alg ); |
| 695 | + |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 696 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 697 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 698 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 699 | |
| 700 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 701 | @@ -1798,6 +2046,13 @@ psa_status_t psa_driver_wrapper_aead_set_nonce( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 702 | /* Add cases for opaque driver here */ |
| 703 | |
| 704 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 705 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 706 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 707 | + return( cc3xx_aead_set_nonce( |
| 708 | + &operation->ctx.cc3xx_driver_ctx, |
| 709 | + nonce, nonce_length ) ); |
| 710 | + |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 711 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 712 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 713 | } |
| 714 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 715 | @@ -1832,6 +2087,13 @@ psa_status_t psa_driver_wrapper_aead_set_lengths( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 716 | /* Add cases for opaque driver here */ |
| 717 | |
| 718 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 719 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 720 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 721 | + return( cc3xx_aead_set_lengths( |
| 722 | + &operation->ctx.cc3xx_driver_ctx, |
| 723 | + ad_length, plaintext_length ) ); |
| 724 | + |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 725 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 726 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 727 | } |
| 728 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 729 | @@ -1866,6 +2128,13 @@ psa_status_t psa_driver_wrapper_aead_update_ad( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 730 | /* Add cases for opaque driver here */ |
| 731 | |
| 732 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 733 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 734 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 735 | + return( cc3xx_aead_update_ad( |
| 736 | + &operation->ctx.cc3xx_driver_ctx, |
| 737 | + input, input_length ) ); |
| 738 | + |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 739 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 740 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 741 | } |
| 742 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 743 | @@ -1905,6 +2174,14 @@ psa_status_t psa_driver_wrapper_aead_update( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 744 | /* Add cases for opaque driver here */ |
| 745 | |
| 746 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 747 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 748 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 749 | + return( cc3xx_aead_update( |
| 750 | + &operation->ctx.cc3xx_driver_ctx, |
| 751 | + input, input_length, output, output_size, |
| 752 | + output_length ) ); |
| 753 | + |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 754 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 755 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 756 | } |
| 757 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 758 | @@ -1949,6 +2226,14 @@ psa_status_t psa_driver_wrapper_aead_finish( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 759 | /* Add cases for opaque driver here */ |
| 760 | |
| 761 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 762 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 763 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 764 | + return( cc3xx_aead_finish( |
| 765 | + &operation->ctx.cc3xx_driver_ctx, |
| 766 | + ciphertext, ciphertext_size, |
| 767 | + ciphertext_length, tag, tag_size, tag_length ) ); |
| 768 | + |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 769 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 770 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 771 | } |
| 772 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 773 | @@ -2013,6 +2298,14 @@ psa_status_t psa_driver_wrapper_aead_verify( |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 774 | /* Add cases for opaque driver here */ |
| 775 | |
| 776 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 777 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 778 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 779 | + return( cc3xx_aead_verify( |
| 780 | + &operation->ctx.cc3xx_driver_ctx, |
| 781 | + plaintext, plaintext_size, |
| 782 | + plaintext_length, tag, tag_length ) ); |
| 783 | + |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 784 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 785 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 786 | } |
| 787 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 788 | @@ -2045,6 +2338,12 @@ psa_status_t psa_driver_wrapper_aead_abort( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 789 | /* Add cases for opaque driver here */ |
| 790 | |
| 791 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 792 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 793 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 794 | + return( cc3xx_aead_abort( |
| 795 | + &operation->ctx.cc3xx_driver_ctx ) ); |
| 796 | + |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 797 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 798 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 799 | } |
| 800 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 801 | @@ -2084,6 +2383,12 @@ psa_status_t psa_driver_wrapper_mac_compute( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 802 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 803 | return( status ); |
| 804 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 805 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 806 | + status = cc3xx_mac_compute(attributes, key_buffer, key_buffer_size, alg, |
| 807 | + input, input_length, |
| 808 | + mac, mac_size, mac_length); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 809 | + return( status ); |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 810 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 811 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 812 | #if defined(MBEDTLS_PSA_BUILTIN_MAC) |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 813 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 814 | @@ -2152,6 +2457,15 @@ psa_status_t psa_driver_wrapper_mac_sign_setup( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 815 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 816 | return( status ); |
| 817 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 818 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 819 | + status = cc3xx_mac_sign_setup( |
| 820 | + &operation->ctx.cc3xx_driver_ctx, |
| 821 | + attributes, |
| 822 | + key_buffer, key_buffer_size, |
| 823 | + alg); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 824 | + operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID; |
| 825 | + return status; |
| 826 | +#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */ |
| 827 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 828 | #if defined(MBEDTLS_PSA_BUILTIN_MAC) |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 829 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 830 | @@ -2224,6 +2538,15 @@ psa_status_t psa_driver_wrapper_mac_verify_setup( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 831 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 832 | return( status ); |
| 833 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 834 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 835 | + status = cc3xx_mac_verify_setup( |
| 836 | + &operation->ctx.cc3xx_driver_ctx, |
| 837 | + attributes, |
| 838 | + key_buffer, key_buffer_size, |
| 839 | + alg); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 840 | + operation->id = PSA_CRYPTO_CC3XX_DRIVER_ID; |
| 841 | + return status; |
| 842 | +#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */ |
| 843 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 844 | #if defined(MBEDTLS_PSA_BUILTIN_MAC) |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 845 | /* Fell through, meaning no accelerator supports this operation */ |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 846 | @@ -2291,6 +2614,10 @@ psa_status_t psa_driver_wrapper_mac_update( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 847 | &operation->ctx.opaque_test_driver_ctx, |
| 848 | input, input_length ) ); |
| 849 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 850 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 851 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 852 | + return(cc3xx_mac_update(&operation->ctx.cc3xx_driver_ctx, input, input_length)); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 853 | +#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 854 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 855 | default: |
| 856 | (void) input; |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 857 | @@ -2325,6 +2652,11 @@ psa_status_t psa_driver_wrapper_mac_sign_finish( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 858 | &operation->ctx.opaque_test_driver_ctx, |
| 859 | mac, mac_size, mac_length ) ); |
| 860 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 861 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 862 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 863 | + return(cc3xx_mac_sign_finish(&operation->ctx.cc3xx_driver_ctx, |
| 864 | + mac, mac_size, mac_length)); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 865 | +#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 866 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 867 | default: |
| 868 | (void) mac; |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 869 | @@ -2359,6 +2691,12 @@ psa_status_t psa_driver_wrapper_mac_verify_finish( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 870 | &operation->ctx.opaque_test_driver_ctx, |
| 871 | mac, mac_length ) ); |
| 872 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 873 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 874 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 875 | + return(cc3xx_mac_verify_finish( |
| 876 | + &operation->ctx.cc3xx_driver_ctx, |
| 877 | + mac, mac_length)); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 878 | +#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 879 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 880 | default: |
| 881 | (void) mac; |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 882 | @@ -2386,6 +2724,10 @@ psa_status_t psa_driver_wrapper_mac_abort( |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 883 | return( mbedtls_test_opaque_mac_abort( |
| 884 | &operation->ctx.opaque_test_driver_ctx ) ); |
| 885 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 886 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 887 | + case PSA_CRYPTO_CC3XX_DRIVER_ID: |
| 888 | + return(cc3xx_mac_abort(&operation->ctx.cc3xx_driver_ctx)); |
Raef Coles | 2350f72 | 2022-07-19 15:19:56 +0100 | [diff] [blame] | 889 | +#endif /* defined(PSA_CRYPTO_DRIVER_CC3XX) */ |
Antonio de Angelis | 90bee0f | 2022-07-13 11:22:41 +0100 | [diff] [blame] | 890 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
| 891 | default: |
| 892 | return( PSA_ERROR_INVALID_ARGUMENT ); |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 893 | @@ -2411,6 +2753,20 @@ psa_status_t psa_driver_wrapper_asymmetric_encrypt( |
Antonio de Angelis | 90bee0f | 2022-07-13 11:22:41 +0100 | [diff] [blame] | 894 | /* Key is stored in the slot in export representation, so |
| 895 | * cycle through all known transparent accelerators */ |
| 896 | #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 897 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 898 | + status = cc3xx_asymmetric_encrypt( attributes, |
| 899 | + key_buffer, |
| 900 | + key_buffer_size, |
| 901 | + alg, |
| 902 | + input, |
| 903 | + input_length, |
| 904 | + salt, |
| 905 | + salt_length, |
| 906 | + output, |
| 907 | + output_size, |
| 908 | + output_length ); |
| 909 | + return( status ); |
| 910 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Antonio de Angelis | 90bee0f | 2022-07-13 11:22:41 +0100 | [diff] [blame] | 911 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
| 912 | status = mbedtls_test_transparent_asymmetric_encrypt( attributes, |
| 913 | key_buffer, key_buffer_size, alg, input, input_length, |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 914 | @@ -2469,6 +2825,20 @@ psa_status_t psa_driver_wrapper_asymmetric_decrypt( |
Antonio de Angelis | 90bee0f | 2022-07-13 11:22:41 +0100 | [diff] [blame] | 915 | /* Key is stored in the slot in export representation, so |
| 916 | * cycle through all known transparent accelerators */ |
| 917 | #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 918 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 919 | + status = cc3xx_asymmetric_decrypt( attributes, |
| 920 | + key_buffer, |
| 921 | + key_buffer_size, |
| 922 | + alg, |
| 923 | + input, |
| 924 | + input_length, |
| 925 | + salt, |
| 926 | + salt_length, |
| 927 | + output, |
| 928 | + output_size, |
| 929 | + output_length ); |
| 930 | + return( status ); |
| 931 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
Antonio de Angelis | 90bee0f | 2022-07-13 11:22:41 +0100 | [diff] [blame] | 932 | #if defined(PSA_CRYPTO_DRIVER_TEST) |
| 933 | status = mbedtls_test_transparent_asymmetric_decrypt( attributes, |
| 934 | key_buffer, key_buffer_size, alg, input, input_length, |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 935 | @@ -2542,6 +2912,18 @@ psa_status_t psa_driver_wrapper_key_agreement( |
| 936 | if( status != PSA_ERROR_NOT_SUPPORTED ) |
| 937 | return( status ); |
| 938 | #endif /* PSA_CRYPTO_DRIVER_TEST */ |
| 939 | +#if defined(PSA_CRYPTO_DRIVER_CC3XX) |
| 940 | + status = cc3xx_key_agreement( attributes, |
| 941 | + key_buffer, |
| 942 | + key_buffer_size, |
| 943 | + peer_key, |
| 944 | + peer_key_length, |
| 945 | + shared_secret, |
| 946 | + shared_secret_size, |
| 947 | + shared_secret_length, |
| 948 | + alg ); |
| 949 | + return( status ); |
| 950 | +#endif /* PSA_CRYPTO_DRIVER_CC3XX */ |
| 951 | #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 952 | |
Summer Qin | 614002c | 2023-01-19 15:22:39 +0800 | [diff] [blame^] | 953 | /* Software Fallback */ |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 954 | -- |
Antonio de Angelis | 2718b58 | 2022-08-23 14:58:40 +0100 | [diff] [blame] | 955 | 2.25.1 |
Antonio de Angelis | 86b9831 | 2021-12-17 21:42:40 +0100 | [diff] [blame] | 956 | |