blob: c7840343141d2872c5be71d36b36c437aa60772d [file] [log] [blame]
Steven Cooremancd84cb42020-07-16 20:28:36 +02001/*
2 * Function signatures for functionality that can be provided by
3 * cryptographic accelerators.
Steven Cooremancd84cb42020-07-16 20:28:36 +02004 */
Steven Cooreman2c7b2f82020-09-02 13:43:46 +02005/* Copyright The Mbed TLS Contributors
Steven Cooremancd84cb42020-07-16 20:28:36 +02006 * SPDX-License-Identifier: Apache-2.0
7 *
8 * Licensed under the Apache License, Version 2.0 (the "License"); you may
9 * not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
Steven Cooremancd84cb42020-07-16 20:28:36 +020019 */
20
21#ifndef PSA_CRYPTO_DRIVER_WRAPPERS_H
22#define PSA_CRYPTO_DRIVER_WRAPPERS_H
23
24#include "psa/crypto.h"
25#include "psa/crypto_driver_common.h"
26
Gilles Peskineefaee9a2023-09-20 20:49:47 +020027#if defined(MBEDTLS_PSA_P256M_DRIVER_ENABLED)
Aditya Deshpandee41f7e42023-01-12 16:29:02 +000028#include "../3rdparty/p256-m/p256-m_driver_entrypoints.h"
Gilles Peskineefaee9a2023-09-20 20:49:47 +020029#endif /* MBEDTLS_PSA_P256M_DRIVER_ENABLED */
Aditya Deshpandee41f7e42023-01-12 16:29:02 +000030
Steven Cooreman37941cb2020-07-28 18:49:51 +020031/*
Ronald Cron9ba76912021-04-10 16:57:30 +020032 * Initialization and termination functions
33 */
Thomas Daubney70464682023-07-04 14:38:06 +010034static inline psa_status_t psa_driver_wrapper_init(void);
35static inline void psa_driver_wrapper_free(void);
Ronald Cron9ba76912021-04-10 16:57:30 +020036
37/*
Steven Cooreman37941cb2020-07-28 18:49:51 +020038 * Signature functions
39 */
Thomas Daubney70464682023-07-04 14:38:06 +010040static inline psa_status_t psa_driver_wrapper_sign_message(
gabor-mezei-arm50eac352021-04-22 11:32:19 +020041 const psa_key_attributes_t *attributes,
42 const uint8_t *key_buffer,
43 size_t key_buffer_size,
44 psa_algorithm_t alg,
45 const uint8_t *input,
46 size_t input_length,
47 uint8_t *signature,
48 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010049 size_t *signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +020050
Thomas Daubney70464682023-07-04 14:38:06 +010051static inline psa_status_t psa_driver_wrapper_verify_message(
gabor-mezei-arm50eac352021-04-22 11:32:19 +020052 const psa_key_attributes_t *attributes,
53 const uint8_t *key_buffer,
54 size_t key_buffer_size,
55 psa_algorithm_t alg,
56 const uint8_t *input,
57 size_t input_length,
58 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +010059 size_t signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +020060
Thomas Daubney70464682023-07-04 14:38:06 +010061static inline psa_status_t psa_driver_wrapper_sign_hash(
Ronald Cron9f17aa42020-12-08 17:07:25 +010062 const psa_key_attributes_t *attributes,
63 const uint8_t *key_buffer, size_t key_buffer_size,
64 psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010065 uint8_t *signature, size_t signature_size, size_t *signature_length);
Steven Cooremancd84cb42020-07-16 20:28:36 +020066
Thomas Daubney70464682023-07-04 14:38:06 +010067static inline psa_status_t psa_driver_wrapper_verify_hash(
Ronald Cron9f17aa42020-12-08 17:07:25 +010068 const psa_key_attributes_t *attributes,
69 const uint8_t *key_buffer, size_t key_buffer_size,
70 psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010071 const uint8_t *signature, size_t signature_length);
Steven Cooreman55ae2172020-07-17 19:46:15 +020072
Steven Cooreman04524762020-10-13 17:43:44 +020073/*
Paul Elliott2d247922022-11-29 14:54:44 +000074 * Interruptible Signature functions
75 */
76
Thomas Daubney70464682023-07-04 14:38:06 +010077static inline uint32_t psa_driver_wrapper_sign_hash_get_num_ops(
Paul Elliott93d9ca82023-02-15 18:14:21 +000078 psa_sign_hash_interruptible_operation_t *operation);
Paul Elliott2d247922022-11-29 14:54:44 +000079
Thomas Daubney70464682023-07-04 14:38:06 +010080static inline uint32_t psa_driver_wrapper_verify_hash_get_num_ops(
Paul Elliott93d9ca82023-02-15 18:14:21 +000081 psa_verify_hash_interruptible_operation_t *operation);
Paul Elliott2d247922022-11-29 14:54:44 +000082
Thomas Daubney70464682023-07-04 14:38:06 +010083static inline psa_status_t psa_driver_wrapper_sign_hash_start(
Paul Elliott2d247922022-11-29 14:54:44 +000084 psa_sign_hash_interruptible_operation_t *operation,
85 const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
86 size_t key_buffer_size, psa_algorithm_t alg,
87 const uint8_t *hash, size_t hash_length);
88
Thomas Daubney70464682023-07-04 14:38:06 +010089static inline psa_status_t psa_driver_wrapper_sign_hash_complete(
Paul Elliott2d247922022-11-29 14:54:44 +000090 psa_sign_hash_interruptible_operation_t *operation,
91 uint8_t *signature, size_t signature_size,
92 size_t *signature_length);
93
Thomas Daubney70464682023-07-04 14:38:06 +010094static inline psa_status_t psa_driver_wrapper_sign_hash_abort(
Paul Elliott2d247922022-11-29 14:54:44 +000095 psa_sign_hash_interruptible_operation_t *operation);
96
Thomas Daubney70464682023-07-04 14:38:06 +010097static inline psa_status_t psa_driver_wrapper_verify_hash_start(
Paul Elliott2d247922022-11-29 14:54:44 +000098 psa_verify_hash_interruptible_operation_t *operation,
99 const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
100 size_t key_buffer_size, psa_algorithm_t alg,
101 const uint8_t *hash, size_t hash_length,
102 const uint8_t *signature, size_t signature_length);
103
Thomas Daubney70464682023-07-04 14:38:06 +0100104static inline psa_status_t psa_driver_wrapper_verify_hash_complete(
Paul Elliott2d247922022-11-29 14:54:44 +0000105 psa_verify_hash_interruptible_operation_t *operation);
106
Thomas Daubney70464682023-07-04 14:38:06 +0100107static inline psa_status_t psa_driver_wrapper_verify_hash_abort(
Paul Elliott2d247922022-11-29 14:54:44 +0000108 psa_verify_hash_interruptible_operation_t *operation);
109
110/*
Steven Cooreman04524762020-10-13 17:43:44 +0200111 * Key handling functions
112 */
113
Thomas Daubney70464682023-07-04 14:38:06 +0100114static inline psa_status_t psa_driver_wrapper_import_key(
Ronald Cron83282872020-11-22 14:02:39 +0100115 const psa_key_attributes_t *attributes,
116 const uint8_t *data, size_t data_length,
117 uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100118 size_t *key_buffer_length, size_t *bits);
Steven Cooreman04524762020-10-13 17:43:44 +0200119
Thomas Daubney70464682023-07-04 14:38:06 +0100120static inline psa_status_t psa_driver_wrapper_export_key(
Ronald Cron67227982020-11-26 15:16:05 +0100121 const psa_key_attributes_t *attributes,
122 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100123 uint8_t *data, size_t data_size, size_t *data_length);
Ronald Cron67227982020-11-26 15:16:05 +0100124
Thomas Daubney70464682023-07-04 14:38:06 +0100125static inline psa_status_t psa_driver_wrapper_export_public_key(
Ronald Cron84cc9942020-11-25 14:30:05 +0100126 const psa_key_attributes_t *attributes,
127 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100128 uint8_t *data, size_t data_size, size_t *data_length);
Ronald Cron84cc9942020-11-25 14:30:05 +0100129
Thomas Daubney70464682023-07-04 14:38:06 +0100130static inline psa_status_t psa_driver_wrapper_get_key_buffer_size(
Ronald Cron9df74be2020-12-05 19:15:23 +0100131 const psa_key_attributes_t *attributes,
Gilles Peskine449bd832023-01-11 14:50:10 +0100132 size_t *key_buffer_size);
Ronald Cron9df74be2020-12-05 19:15:23 +0100133
Thomas Daubney70464682023-07-04 14:38:06 +0100134static inline psa_status_t psa_driver_wrapper_get_key_buffer_size_from_key_data(
Archanad8a83dc2021-06-14 10:04:16 +0530135 const psa_key_attributes_t *attributes,
136 const uint8_t *data,
137 size_t data_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100138 size_t *key_buffer_size);
Archanad8a83dc2021-06-14 10:04:16 +0530139
Thomas Daubney70464682023-07-04 14:38:06 +0100140static inline psa_status_t psa_driver_wrapper_generate_key(
Ronald Cron84cc9942020-11-25 14:30:05 +0100141 const psa_key_attributes_t *attributes,
Gilles Peskine449bd832023-01-11 14:50:10 +0100142 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
Steven Cooremanb9b84422020-10-14 14:39:20 +0200143
Thomas Daubney70464682023-07-04 14:38:06 +0100144static inline psa_status_t psa_driver_wrapper_get_builtin_key(
Steven Cooreman6801f082021-02-19 17:21:22 +0100145 psa_drv_slot_number_t slot_number,
146 psa_key_attributes_t *attributes,
Gilles Peskine449bd832023-01-11 14:50:10 +0100147 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
Steven Cooreman6801f082021-02-19 17:21:22 +0100148
Thomas Daubney70464682023-07-04 14:38:06 +0100149static inline psa_status_t psa_driver_wrapper_copy_key(
Archana8a180362021-07-05 02:18:48 +0530150 psa_key_attributes_t *attributes,
Archana9d17bf42021-09-10 06:22:44 +0530151 const uint8_t *source_key, size_t source_key_length,
Archana449608b2021-09-08 15:36:05 +0530152 uint8_t *target_key_buffer, size_t target_key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100153 size_t *target_key_buffer_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200154/*
155 * Cipher functions
156 */
Thomas Daubney70464682023-07-04 14:38:06 +0100157static inline psa_status_t psa_driver_wrapper_cipher_encrypt(
gabor-mezei-arma9449a02021-03-25 11:17:10 +0100158 const psa_key_attributes_t *attributes,
159 const uint8_t *key_buffer,
160 size_t key_buffer_size,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200161 psa_algorithm_t alg,
Ronald Cron9b674282021-07-09 09:19:35 +0200162 const uint8_t *iv,
163 size_t iv_length,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200164 const uint8_t *input,
165 size_t input_length,
166 uint8_t *output,
167 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100168 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200169
Thomas Daubney70464682023-07-04 14:38:06 +0100170static inline psa_status_t psa_driver_wrapper_cipher_decrypt(
gabor-mezei-arma9449a02021-03-25 11:17:10 +0100171 const psa_key_attributes_t *attributes,
172 const uint8_t *key_buffer,
173 size_t key_buffer_size,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200174 psa_algorithm_t alg,
175 const uint8_t *input,
176 size_t input_length,
177 uint8_t *output,
178 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100179 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200180
Thomas Daubney70464682023-07-04 14:38:06 +0100181static inline psa_status_t psa_driver_wrapper_cipher_encrypt_setup(
Ronald Crona4af55f2020-12-14 14:36:06 +0100182 psa_cipher_operation_t *operation,
183 const psa_key_attributes_t *attributes,
184 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100185 psa_algorithm_t alg);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200186
Thomas Daubney70464682023-07-04 14:38:06 +0100187static inline psa_status_t psa_driver_wrapper_cipher_decrypt_setup(
Ronald Crona4af55f2020-12-14 14:36:06 +0100188 psa_cipher_operation_t *operation,
189 const psa_key_attributes_t *attributes,
190 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100191 psa_algorithm_t alg);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200192
Thomas Daubney70464682023-07-04 14:38:06 +0100193static inline psa_status_t psa_driver_wrapper_cipher_set_iv(
Ronald Cron6056fe82020-12-15 13:58:07 +0100194 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200195 const uint8_t *iv,
Gilles Peskine449bd832023-01-11 14:50:10 +0100196 size_t iv_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200197
Thomas Daubney70464682023-07-04 14:38:06 +0100198static inline psa_status_t psa_driver_wrapper_cipher_update(
Ronald Cron6056fe82020-12-15 13:58:07 +0100199 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200200 const uint8_t *input,
201 size_t input_length,
202 uint8_t *output,
203 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100204 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200205
Thomas Daubney70464682023-07-04 14:38:06 +0100206static inline psa_status_t psa_driver_wrapper_cipher_finish(
Ronald Cron6056fe82020-12-15 13:58:07 +0100207 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200208 uint8_t *output,
209 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100210 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200211
Thomas Daubney70464682023-07-04 14:38:06 +0100212static inline psa_status_t psa_driver_wrapper_cipher_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100213 psa_cipher_operation_t *operation);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200214
Steven Cooreman1e582352021-02-18 17:24:37 +0100215/*
216 * Hashing functions
217 */
Thomas Daubney70464682023-07-04 14:38:06 +0100218static inline psa_status_t psa_driver_wrapper_hash_compute(
Steven Cooreman1e582352021-02-18 17:24:37 +0100219 psa_algorithm_t alg,
220 const uint8_t *input,
221 size_t input_length,
222 uint8_t *hash,
223 size_t hash_size,
224 size_t *hash_length);
225
Thomas Daubney70464682023-07-04 14:38:06 +0100226static inline psa_status_t psa_driver_wrapper_hash_setup(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100227 psa_hash_operation_t *operation,
Gilles Peskine449bd832023-01-11 14:50:10 +0100228 psa_algorithm_t alg);
Steven Cooreman1e582352021-02-18 17:24:37 +0100229
Thomas Daubney70464682023-07-04 14:38:06 +0100230static inline psa_status_t psa_driver_wrapper_hash_clone(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100231 const psa_hash_operation_t *source_operation,
Gilles Peskine449bd832023-01-11 14:50:10 +0100232 psa_hash_operation_t *target_operation);
Steven Cooreman1e582352021-02-18 17:24:37 +0100233
Thomas Daubney70464682023-07-04 14:38:06 +0100234static inline psa_status_t psa_driver_wrapper_hash_update(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100235 psa_hash_operation_t *operation,
Steven Cooreman1e582352021-02-18 17:24:37 +0100236 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100237 size_t input_length);
Steven Cooreman1e582352021-02-18 17:24:37 +0100238
Thomas Daubney70464682023-07-04 14:38:06 +0100239static inline psa_status_t psa_driver_wrapper_hash_finish(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100240 psa_hash_operation_t *operation,
Steven Cooreman1e582352021-02-18 17:24:37 +0100241 uint8_t *hash,
242 size_t hash_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100243 size_t *hash_length);
Steven Cooreman1e582352021-02-18 17:24:37 +0100244
Thomas Daubney70464682023-07-04 14:38:06 +0100245static inline psa_status_t psa_driver_wrapper_hash_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100246 psa_hash_operation_t *operation);
Steven Cooreman1e582352021-02-18 17:24:37 +0100247
Ronald Cronde822812021-03-17 16:08:20 +0100248/*
249 * AEAD functions
250 */
251
Thomas Daubney70464682023-07-04 14:38:06 +0100252static inline psa_status_t psa_driver_wrapper_aead_encrypt(
Ronald Cronde822812021-03-17 16:08:20 +0100253 const psa_key_attributes_t *attributes,
254 const uint8_t *key_buffer, size_t key_buffer_size,
255 psa_algorithm_t alg,
256 const uint8_t *nonce, size_t nonce_length,
257 const uint8_t *additional_data, size_t additional_data_length,
258 const uint8_t *plaintext, size_t plaintext_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100259 uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length);
Ronald Cronde822812021-03-17 16:08:20 +0100260
Thomas Daubney70464682023-07-04 14:38:06 +0100261static inline psa_status_t psa_driver_wrapper_aead_decrypt(
Ronald Cronde822812021-03-17 16:08:20 +0100262 const psa_key_attributes_t *attributes,
263 const uint8_t *key_buffer, size_t key_buffer_size,
264 psa_algorithm_t alg,
265 const uint8_t *nonce, size_t nonce_length,
266 const uint8_t *additional_data, size_t additional_data_length,
267 const uint8_t *ciphertext, size_t ciphertext_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100268 uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length);
Ronald Cronde822812021-03-17 16:08:20 +0100269
Thomas Daubney70464682023-07-04 14:38:06 +0100270static inline psa_status_t psa_driver_wrapper_aead_encrypt_setup(
Paul Elliott6504aa62021-04-20 17:09:36 +0100271 psa_aead_operation_t *operation,
272 const psa_key_attributes_t *attributes,
273 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100274 psa_algorithm_t alg);
Paul Elliott6504aa62021-04-20 17:09:36 +0100275
Thomas Daubney70464682023-07-04 14:38:06 +0100276static inline psa_status_t psa_driver_wrapper_aead_decrypt_setup(
Paul Elliott6504aa62021-04-20 17:09:36 +0100277 psa_aead_operation_t *operation,
278 const psa_key_attributes_t *attributes,
279 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100280 psa_algorithm_t alg);
Paul Elliott6504aa62021-04-20 17:09:36 +0100281
Thomas Daubney70464682023-07-04 14:38:06 +0100282static inline psa_status_t psa_driver_wrapper_aead_set_nonce(
Paul Elliott6504aa62021-04-20 17:09:36 +0100283 psa_aead_operation_t *operation,
284 const uint8_t *nonce,
Gilles Peskine449bd832023-01-11 14:50:10 +0100285 size_t nonce_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100286
Thomas Daubney70464682023-07-04 14:38:06 +0100287static inline psa_status_t psa_driver_wrapper_aead_set_lengths(
Paul Elliott6504aa62021-04-20 17:09:36 +0100288 psa_aead_operation_t *operation,
289 size_t ad_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100290 size_t plaintext_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100291
Thomas Daubney70464682023-07-04 14:38:06 +0100292static inline psa_status_t psa_driver_wrapper_aead_update_ad(
Paul Elliott6504aa62021-04-20 17:09:36 +0100293 psa_aead_operation_t *operation,
294 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100295 size_t input_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100296
Thomas Daubney70464682023-07-04 14:38:06 +0100297static inline psa_status_t psa_driver_wrapper_aead_update(
Paul Elliott6504aa62021-04-20 17:09:36 +0100298 psa_aead_operation_t *operation,
299 const uint8_t *input,
300 size_t input_length,
301 uint8_t *output,
302 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100303 size_t *output_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100304
Thomas Daubney70464682023-07-04 14:38:06 +0100305static inline psa_status_t psa_driver_wrapper_aead_finish(
Paul Elliott6504aa62021-04-20 17:09:36 +0100306 psa_aead_operation_t *operation,
307 uint8_t *ciphertext,
308 size_t ciphertext_size,
309 size_t *ciphertext_length,
310 uint8_t *tag,
311 size_t tag_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100312 size_t *tag_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100313
Thomas Daubney70464682023-07-04 14:38:06 +0100314static inline psa_status_t psa_driver_wrapper_aead_verify(
Paul Elliott6504aa62021-04-20 17:09:36 +0100315 psa_aead_operation_t *operation,
316 uint8_t *plaintext,
317 size_t plaintext_size,
318 size_t *plaintext_length,
319 const uint8_t *tag,
Gilles Peskine449bd832023-01-11 14:50:10 +0100320 size_t tag_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100321
Thomas Daubney70464682023-07-04 14:38:06 +0100322static inline psa_status_t psa_driver_wrapper_aead_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100323 psa_aead_operation_t *operation);
Paul Elliott6504aa62021-04-20 17:09:36 +0100324
Steven Cooremand13a70f2021-03-19 15:24:23 +0100325/*
326 * MAC functions
327 */
Thomas Daubney70464682023-07-04 14:38:06 +0100328static inline psa_status_t psa_driver_wrapper_mac_compute(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100329 const psa_key_attributes_t *attributes,
330 const uint8_t *key_buffer,
331 size_t key_buffer_size,
332 psa_algorithm_t alg,
333 const uint8_t *input,
334 size_t input_length,
335 uint8_t *mac,
336 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100337 size_t *mac_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100338
Thomas Daubney70464682023-07-04 14:38:06 +0100339static inline psa_status_t psa_driver_wrapper_mac_sign_setup(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100340 psa_mac_operation_t *operation,
341 const psa_key_attributes_t *attributes,
342 const uint8_t *key_buffer,
343 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100344 psa_algorithm_t alg);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100345
Thomas Daubney70464682023-07-04 14:38:06 +0100346static inline psa_status_t psa_driver_wrapper_mac_verify_setup(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100347 psa_mac_operation_t *operation,
348 const psa_key_attributes_t *attributes,
349 const uint8_t *key_buffer,
350 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100351 psa_algorithm_t alg);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100352
Thomas Daubney70464682023-07-04 14:38:06 +0100353static inline psa_status_t psa_driver_wrapper_mac_update(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100354 psa_mac_operation_t *operation,
355 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100356 size_t input_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100357
Thomas Daubney70464682023-07-04 14:38:06 +0100358static inline psa_status_t psa_driver_wrapper_mac_sign_finish(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100359 psa_mac_operation_t *operation,
360 uint8_t *mac,
361 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100362 size_t *mac_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100363
Thomas Daubney70464682023-07-04 14:38:06 +0100364static inline psa_status_t psa_driver_wrapper_mac_verify_finish(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100365 psa_mac_operation_t *operation,
366 const uint8_t *mac,
Gilles Peskine449bd832023-01-11 14:50:10 +0100367 size_t mac_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100368
Thomas Daubney70464682023-07-04 14:38:06 +0100369static inline psa_status_t psa_driver_wrapper_mac_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100370 psa_mac_operation_t *operation);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100371
Przemyslaw Stekielb6a66502021-12-09 11:11:54 +0100372/*
373 * Asymmetric cryptography
374 */
Thomas Daubney70464682023-07-04 14:38:06 +0100375static inline psa_status_t psa_driver_wrapper_asymmetric_encrypt(
Przemyslaw Stekielb6a66502021-12-09 11:11:54 +0100376 const psa_key_attributes_t *attributes,
377 const uint8_t *key_buffer,
378 size_t key_buffer_size,
379 psa_algorithm_t alg,
380 const uint8_t *input,
381 size_t input_length,
382 const uint8_t *salt,
383 size_t salt_length,
384 uint8_t *output,
385 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100386 size_t *output_length);
Przemyslaw Stekielb6a66502021-12-09 11:11:54 +0100387
Thomas Daubney70464682023-07-04 14:38:06 +0100388static inline psa_status_t psa_driver_wrapper_asymmetric_decrypt(
Przemyslaw Stekiel71284ea2021-12-13 09:00:52 +0100389 const psa_key_attributes_t *attributes,
390 const uint8_t *key_buffer,
391 size_t key_buffer_size,
392 psa_algorithm_t alg,
393 const uint8_t *input,
394 size_t input_length,
395 const uint8_t *salt,
396 size_t salt_length,
397 uint8_t *output,
398 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100399 size_t *output_length);
Przemyslaw Stekiel71284ea2021-12-13 09:00:52 +0100400
Aditya Deshpande17845b82022-10-13 17:21:01 +0100401/*
402 * Raw Key Agreement
403 */
Thomas Daubney70464682023-07-04 14:38:06 +0100404static inline psa_status_t psa_driver_wrapper_key_agreement(
Aditya Deshpande17845b82022-10-13 17:21:01 +0100405 const psa_key_attributes_t *attributes,
406 const uint8_t *key_buffer,
407 size_t key_buffer_size,
408 psa_algorithm_t alg,
409 const uint8_t *peer_key,
410 size_t peer_key_length,
411 uint8_t *shared_secret,
412 size_t shared_secret_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100413 size_t *shared_secret_length);
Aditya Deshpande17845b82022-10-13 17:21:01 +0100414
Neil Armstrong7da8c562022-06-01 18:17:22 +0200415/*
416 * PAKE functions.
417 */
Thomas Daubney70464682023-07-04 14:38:06 +0100418static inline psa_status_t psa_driver_wrapper_pake_setup(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200419 psa_pake_operation_t *operation,
Przemek Stekiel51eac532022-12-07 11:04:51 +0100420 const psa_crypto_driver_pake_inputs_t *inputs);
Neil Armstrong7da8c562022-06-01 18:17:22 +0200421
Thomas Daubney70464682023-07-04 14:38:06 +0100422static inline psa_status_t psa_driver_wrapper_pake_output(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200423 psa_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +0100424 psa_crypto_driver_pake_step_t step,
Neil Armstrong7da8c562022-06-01 18:17:22 +0200425 uint8_t *output,
426 size_t output_size,
427 size_t *output_length);
428
Thomas Daubney70464682023-07-04 14:38:06 +0100429static inline psa_status_t psa_driver_wrapper_pake_input(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200430 psa_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +0100431 psa_crypto_driver_pake_step_t step,
Neil Armstrong7da8c562022-06-01 18:17:22 +0200432 const uint8_t *input,
433 size_t input_length);
434
Thomas Daubney70464682023-07-04 14:38:06 +0100435static inline psa_status_t psa_driver_wrapper_pake_get_implicit_key(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200436 psa_pake_operation_t *operation,
Przemek Stekiel6b648622023-02-19 22:55:33 +0100437 uint8_t *output, size_t output_size,
438 size_t *output_length);
Neil Armstrong7da8c562022-06-01 18:17:22 +0200439
Thomas Daubney70464682023-07-04 14:38:06 +0100440static inline psa_status_t psa_driver_wrapper_pake_abort(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200441 psa_pake_operation_t *operation);
442
Steven Cooremancd84cb42020-07-16 20:28:36 +0200443#endif /* PSA_CRYPTO_DRIVER_WRAPPERS_H */
444
445/* End of automatically generated file. */