blob: a8cb87e2e318c163d50b696c432e73a3a0615b5e [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/*
32 * Signature functions
33 */
Thomas Daubney70464682023-07-04 14:38:06 +010034static inline psa_status_t psa_driver_wrapper_sign_message(
gabor-mezei-arm50eac352021-04-22 11:32:19 +020035 const psa_key_attributes_t *attributes,
36 const uint8_t *key_buffer,
37 size_t key_buffer_size,
38 psa_algorithm_t alg,
39 const uint8_t *input,
40 size_t input_length,
41 uint8_t *signature,
42 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010043 size_t *signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +020044
Thomas Daubney70464682023-07-04 14:38:06 +010045static inline psa_status_t psa_driver_wrapper_verify_message(
gabor-mezei-arm50eac352021-04-22 11:32:19 +020046 const psa_key_attributes_t *attributes,
47 const uint8_t *key_buffer,
48 size_t key_buffer_size,
49 psa_algorithm_t alg,
50 const uint8_t *input,
51 size_t input_length,
52 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +010053 size_t signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +020054
Thomas Daubney70464682023-07-04 14:38:06 +010055static inline psa_status_t psa_driver_wrapper_sign_hash(
Ronald Cron9f17aa42020-12-08 17:07:25 +010056 const psa_key_attributes_t *attributes,
57 const uint8_t *key_buffer, size_t key_buffer_size,
58 psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010059 uint8_t *signature, size_t signature_size, size_t *signature_length);
Steven Cooremancd84cb42020-07-16 20:28:36 +020060
Thomas Daubney70464682023-07-04 14:38:06 +010061static inline psa_status_t psa_driver_wrapper_verify_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 const uint8_t *signature, size_t signature_length);
Steven Cooreman55ae2172020-07-17 19:46:15 +020066
Steven Cooreman04524762020-10-13 17:43:44 +020067/*
Paul Elliott2d247922022-11-29 14:54:44 +000068 * Interruptible Signature functions
69 */
70
Thomas Daubney70464682023-07-04 14:38:06 +010071static inline uint32_t psa_driver_wrapper_sign_hash_get_num_ops(
Paul Elliott93d9ca82023-02-15 18:14:21 +000072 psa_sign_hash_interruptible_operation_t *operation);
Paul Elliott2d247922022-11-29 14:54:44 +000073
Thomas Daubney70464682023-07-04 14:38:06 +010074static inline uint32_t psa_driver_wrapper_verify_hash_get_num_ops(
Paul Elliott93d9ca82023-02-15 18:14:21 +000075 psa_verify_hash_interruptible_operation_t *operation);
Paul Elliott2d247922022-11-29 14:54:44 +000076
Thomas Daubney70464682023-07-04 14:38:06 +010077static inline psa_status_t psa_driver_wrapper_sign_hash_start(
Paul Elliott2d247922022-11-29 14:54:44 +000078 psa_sign_hash_interruptible_operation_t *operation,
79 const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
80 size_t key_buffer_size, psa_algorithm_t alg,
81 const uint8_t *hash, size_t hash_length);
82
Thomas Daubney70464682023-07-04 14:38:06 +010083static inline psa_status_t psa_driver_wrapper_sign_hash_complete(
Paul Elliott2d247922022-11-29 14:54:44 +000084 psa_sign_hash_interruptible_operation_t *operation,
85 uint8_t *signature, size_t signature_size,
86 size_t *signature_length);
87
Thomas Daubney70464682023-07-04 14:38:06 +010088static inline psa_status_t psa_driver_wrapper_sign_hash_abort(
Paul Elliott2d247922022-11-29 14:54:44 +000089 psa_sign_hash_interruptible_operation_t *operation);
90
Thomas Daubney70464682023-07-04 14:38:06 +010091static inline psa_status_t psa_driver_wrapper_verify_hash_start(
Paul Elliott2d247922022-11-29 14:54:44 +000092 psa_verify_hash_interruptible_operation_t *operation,
93 const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
94 size_t key_buffer_size, psa_algorithm_t alg,
95 const uint8_t *hash, size_t hash_length,
96 const uint8_t *signature, size_t signature_length);
97
Thomas Daubney70464682023-07-04 14:38:06 +010098static inline psa_status_t psa_driver_wrapper_verify_hash_complete(
Paul Elliott2d247922022-11-29 14:54:44 +000099 psa_verify_hash_interruptible_operation_t *operation);
100
Thomas Daubney70464682023-07-04 14:38:06 +0100101static inline psa_status_t psa_driver_wrapper_verify_hash_abort(
Paul Elliott2d247922022-11-29 14:54:44 +0000102 psa_verify_hash_interruptible_operation_t *operation);
103
104/*
Steven Cooreman04524762020-10-13 17:43:44 +0200105 * Key handling functions
106 */
107
Thomas Daubney70464682023-07-04 14:38:06 +0100108static inline psa_status_t psa_driver_wrapper_import_key(
Ronald Cron83282872020-11-22 14:02:39 +0100109 const psa_key_attributes_t *attributes,
110 const uint8_t *data, size_t data_length,
111 uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100112 size_t *key_buffer_length, size_t *bits);
Steven Cooreman04524762020-10-13 17:43:44 +0200113
Thomas Daubney70464682023-07-04 14:38:06 +0100114static inline psa_status_t psa_driver_wrapper_export_key(
Ronald Cron67227982020-11-26 15:16:05 +0100115 const psa_key_attributes_t *attributes,
116 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100117 uint8_t *data, size_t data_size, size_t *data_length);
Ronald Cron67227982020-11-26 15:16:05 +0100118
Thomas Daubney70464682023-07-04 14:38:06 +0100119static inline psa_status_t psa_driver_wrapper_export_public_key(
Ronald Cron84cc9942020-11-25 14:30:05 +0100120 const psa_key_attributes_t *attributes,
121 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100122 uint8_t *data, size_t data_size, size_t *data_length);
Ronald Cron84cc9942020-11-25 14:30:05 +0100123
Thomas Daubney70464682023-07-04 14:38:06 +0100124static inline psa_status_t psa_driver_wrapper_get_key_buffer_size(
Ronald Cron9df74be2020-12-05 19:15:23 +0100125 const psa_key_attributes_t *attributes,
Gilles Peskine449bd832023-01-11 14:50:10 +0100126 size_t *key_buffer_size);
Ronald Cron9df74be2020-12-05 19:15:23 +0100127
Thomas Daubney70464682023-07-04 14:38:06 +0100128static inline psa_status_t psa_driver_wrapper_get_key_buffer_size_from_key_data(
Archanad8a83dc2021-06-14 10:04:16 +0530129 const psa_key_attributes_t *attributes,
130 const uint8_t *data,
131 size_t data_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100132 size_t *key_buffer_size);
Archanad8a83dc2021-06-14 10:04:16 +0530133
Thomas Daubney70464682023-07-04 14:38:06 +0100134static inline psa_status_t psa_driver_wrapper_generate_key(
Ronald Cron84cc9942020-11-25 14:30:05 +0100135 const psa_key_attributes_t *attributes,
Gilles Peskine449bd832023-01-11 14:50:10 +0100136 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
Steven Cooremanb9b84422020-10-14 14:39:20 +0200137
Thomas Daubney70464682023-07-04 14:38:06 +0100138static inline psa_status_t psa_driver_wrapper_get_builtin_key(
Steven Cooreman6801f082021-02-19 17:21:22 +0100139 psa_drv_slot_number_t slot_number,
140 psa_key_attributes_t *attributes,
Gilles Peskine449bd832023-01-11 14:50:10 +0100141 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
Steven Cooreman6801f082021-02-19 17:21:22 +0100142
Thomas Daubney70464682023-07-04 14:38:06 +0100143static inline psa_status_t psa_driver_wrapper_copy_key(
Archana8a180362021-07-05 02:18:48 +0530144 psa_key_attributes_t *attributes,
Archana9d17bf42021-09-10 06:22:44 +0530145 const uint8_t *source_key, size_t source_key_length,
Archana449608b2021-09-08 15:36:05 +0530146 uint8_t *target_key_buffer, size_t target_key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100147 size_t *target_key_buffer_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200148/*
149 * Cipher functions
150 */
Thomas Daubney70464682023-07-04 14:38:06 +0100151static inline psa_status_t psa_driver_wrapper_cipher_encrypt(
gabor-mezei-arma9449a02021-03-25 11:17:10 +0100152 const psa_key_attributes_t *attributes,
153 const uint8_t *key_buffer,
154 size_t key_buffer_size,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200155 psa_algorithm_t alg,
Ronald Cron9b674282021-07-09 09:19:35 +0200156 const uint8_t *iv,
157 size_t iv_length,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200158 const uint8_t *input,
159 size_t input_length,
160 uint8_t *output,
161 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100162 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200163
Thomas Daubney70464682023-07-04 14:38:06 +0100164static inline psa_status_t psa_driver_wrapper_cipher_decrypt(
gabor-mezei-arma9449a02021-03-25 11:17:10 +0100165 const psa_key_attributes_t *attributes,
166 const uint8_t *key_buffer,
167 size_t key_buffer_size,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200168 psa_algorithm_t alg,
169 const uint8_t *input,
170 size_t input_length,
171 uint8_t *output,
172 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100173 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200174
Thomas Daubney70464682023-07-04 14:38:06 +0100175static inline psa_status_t psa_driver_wrapper_cipher_encrypt_setup(
Ronald Crona4af55f2020-12-14 14:36:06 +0100176 psa_cipher_operation_t *operation,
177 const psa_key_attributes_t *attributes,
178 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100179 psa_algorithm_t alg);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200180
Thomas Daubney70464682023-07-04 14:38:06 +0100181static inline psa_status_t psa_driver_wrapper_cipher_decrypt_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_set_iv(
Ronald Cron6056fe82020-12-15 13:58:07 +0100188 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200189 const uint8_t *iv,
Gilles Peskine449bd832023-01-11 14:50:10 +0100190 size_t iv_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200191
Thomas Daubney70464682023-07-04 14:38:06 +0100192static inline psa_status_t psa_driver_wrapper_cipher_update(
Ronald Cron6056fe82020-12-15 13:58:07 +0100193 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200194 const uint8_t *input,
195 size_t input_length,
196 uint8_t *output,
197 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100198 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200199
Thomas Daubney70464682023-07-04 14:38:06 +0100200static inline psa_status_t psa_driver_wrapper_cipher_finish(
Ronald Cron6056fe82020-12-15 13:58:07 +0100201 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200202 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_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100207 psa_cipher_operation_t *operation);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200208
Steven Cooreman1e582352021-02-18 17:24:37 +0100209/*
210 * Hashing functions
211 */
Thomas Daubney70464682023-07-04 14:38:06 +0100212static inline psa_status_t psa_driver_wrapper_hash_compute(
Steven Cooreman1e582352021-02-18 17:24:37 +0100213 psa_algorithm_t alg,
214 const uint8_t *input,
215 size_t input_length,
216 uint8_t *hash,
217 size_t hash_size,
218 size_t *hash_length);
219
Thomas Daubney70464682023-07-04 14:38:06 +0100220static inline psa_status_t psa_driver_wrapper_hash_setup(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100221 psa_hash_operation_t *operation,
Gilles Peskine449bd832023-01-11 14:50:10 +0100222 psa_algorithm_t alg);
Steven Cooreman1e582352021-02-18 17:24:37 +0100223
Thomas Daubney70464682023-07-04 14:38:06 +0100224static inline psa_status_t psa_driver_wrapper_hash_clone(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100225 const psa_hash_operation_t *source_operation,
Gilles Peskine449bd832023-01-11 14:50:10 +0100226 psa_hash_operation_t *target_operation);
Steven Cooreman1e582352021-02-18 17:24:37 +0100227
Thomas Daubney70464682023-07-04 14:38:06 +0100228static inline psa_status_t psa_driver_wrapper_hash_update(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100229 psa_hash_operation_t *operation,
Steven Cooreman1e582352021-02-18 17:24:37 +0100230 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100231 size_t input_length);
Steven Cooreman1e582352021-02-18 17:24:37 +0100232
Thomas Daubney70464682023-07-04 14:38:06 +0100233static inline psa_status_t psa_driver_wrapper_hash_finish(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100234 psa_hash_operation_t *operation,
Steven Cooreman1e582352021-02-18 17:24:37 +0100235 uint8_t *hash,
236 size_t hash_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100237 size_t *hash_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_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100240 psa_hash_operation_t *operation);
Steven Cooreman1e582352021-02-18 17:24:37 +0100241
Ronald Cronde822812021-03-17 16:08:20 +0100242/*
243 * AEAD functions
244 */
245
Thomas Daubney70464682023-07-04 14:38:06 +0100246static inline psa_status_t psa_driver_wrapper_aead_encrypt(
Ronald Cronde822812021-03-17 16:08:20 +0100247 const psa_key_attributes_t *attributes,
248 const uint8_t *key_buffer, size_t key_buffer_size,
249 psa_algorithm_t alg,
250 const uint8_t *nonce, size_t nonce_length,
251 const uint8_t *additional_data, size_t additional_data_length,
252 const uint8_t *plaintext, size_t plaintext_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100253 uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length);
Ronald Cronde822812021-03-17 16:08:20 +0100254
Thomas Daubney70464682023-07-04 14:38:06 +0100255static inline psa_status_t psa_driver_wrapper_aead_decrypt(
Ronald Cronde822812021-03-17 16:08:20 +0100256 const psa_key_attributes_t *attributes,
257 const uint8_t *key_buffer, size_t key_buffer_size,
258 psa_algorithm_t alg,
259 const uint8_t *nonce, size_t nonce_length,
260 const uint8_t *additional_data, size_t additional_data_length,
261 const uint8_t *ciphertext, size_t ciphertext_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100262 uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length);
Ronald Cronde822812021-03-17 16:08:20 +0100263
Thomas Daubney70464682023-07-04 14:38:06 +0100264static inline psa_status_t psa_driver_wrapper_aead_encrypt_setup(
Paul Elliott6504aa62021-04-20 17:09:36 +0100265 psa_aead_operation_t *operation,
266 const psa_key_attributes_t *attributes,
267 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100268 psa_algorithm_t alg);
Paul Elliott6504aa62021-04-20 17:09:36 +0100269
Thomas Daubney70464682023-07-04 14:38:06 +0100270static inline psa_status_t psa_driver_wrapper_aead_decrypt_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_set_nonce(
Paul Elliott6504aa62021-04-20 17:09:36 +0100277 psa_aead_operation_t *operation,
278 const uint8_t *nonce,
Gilles Peskine449bd832023-01-11 14:50:10 +0100279 size_t nonce_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100280
Thomas Daubney70464682023-07-04 14:38:06 +0100281static inline psa_status_t psa_driver_wrapper_aead_set_lengths(
Paul Elliott6504aa62021-04-20 17:09:36 +0100282 psa_aead_operation_t *operation,
283 size_t ad_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100284 size_t plaintext_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100285
Thomas Daubney70464682023-07-04 14:38:06 +0100286static inline psa_status_t psa_driver_wrapper_aead_update_ad(
Paul Elliott6504aa62021-04-20 17:09:36 +0100287 psa_aead_operation_t *operation,
288 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100289 size_t input_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100290
Thomas Daubney70464682023-07-04 14:38:06 +0100291static inline psa_status_t psa_driver_wrapper_aead_update(
Paul Elliott6504aa62021-04-20 17:09:36 +0100292 psa_aead_operation_t *operation,
293 const uint8_t *input,
294 size_t input_length,
295 uint8_t *output,
296 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100297 size_t *output_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100298
Thomas Daubney70464682023-07-04 14:38:06 +0100299static inline psa_status_t psa_driver_wrapper_aead_finish(
Paul Elliott6504aa62021-04-20 17:09:36 +0100300 psa_aead_operation_t *operation,
301 uint8_t *ciphertext,
302 size_t ciphertext_size,
303 size_t *ciphertext_length,
304 uint8_t *tag,
305 size_t tag_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100306 size_t *tag_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100307
Thomas Daubney70464682023-07-04 14:38:06 +0100308static inline psa_status_t psa_driver_wrapper_aead_verify(
Paul Elliott6504aa62021-04-20 17:09:36 +0100309 psa_aead_operation_t *operation,
310 uint8_t *plaintext,
311 size_t plaintext_size,
312 size_t *plaintext_length,
313 const uint8_t *tag,
Gilles Peskine449bd832023-01-11 14:50:10 +0100314 size_t tag_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100315
Thomas Daubney70464682023-07-04 14:38:06 +0100316static inline psa_status_t psa_driver_wrapper_aead_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100317 psa_aead_operation_t *operation);
Paul Elliott6504aa62021-04-20 17:09:36 +0100318
Steven Cooremand13a70f2021-03-19 15:24:23 +0100319/*
320 * MAC functions
321 */
Thomas Daubney70464682023-07-04 14:38:06 +0100322static inline psa_status_t psa_driver_wrapper_mac_compute(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100323 const psa_key_attributes_t *attributes,
324 const uint8_t *key_buffer,
325 size_t key_buffer_size,
326 psa_algorithm_t alg,
327 const uint8_t *input,
328 size_t input_length,
329 uint8_t *mac,
330 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100331 size_t *mac_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100332
Thomas Daubney70464682023-07-04 14:38:06 +0100333static inline psa_status_t psa_driver_wrapper_mac_sign_setup(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100334 psa_mac_operation_t *operation,
335 const psa_key_attributes_t *attributes,
336 const uint8_t *key_buffer,
337 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100338 psa_algorithm_t alg);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100339
Thomas Daubney70464682023-07-04 14:38:06 +0100340static inline psa_status_t psa_driver_wrapper_mac_verify_setup(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100341 psa_mac_operation_t *operation,
342 const psa_key_attributes_t *attributes,
343 const uint8_t *key_buffer,
344 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100345 psa_algorithm_t alg);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100346
Thomas Daubney70464682023-07-04 14:38:06 +0100347static inline psa_status_t psa_driver_wrapper_mac_update(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100348 psa_mac_operation_t *operation,
349 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100350 size_t input_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100351
Thomas Daubney70464682023-07-04 14:38:06 +0100352static inline psa_status_t psa_driver_wrapper_mac_sign_finish(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100353 psa_mac_operation_t *operation,
354 uint8_t *mac,
355 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100356 size_t *mac_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_verify_finish(
Steven Cooremand13a70f2021-03-19 15:24:23 +0100359 psa_mac_operation_t *operation,
360 const uint8_t *mac,
Gilles Peskine449bd832023-01-11 14:50:10 +0100361 size_t mac_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100362
Thomas Daubney70464682023-07-04 14:38:06 +0100363static inline psa_status_t psa_driver_wrapper_mac_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100364 psa_mac_operation_t *operation);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100365
Przemyslaw Stekielb6a66502021-12-09 11:11:54 +0100366/*
367 * Asymmetric cryptography
368 */
Thomas Daubney70464682023-07-04 14:38:06 +0100369static inline psa_status_t psa_driver_wrapper_asymmetric_encrypt(
Przemyslaw Stekielb6a66502021-12-09 11:11:54 +0100370 const psa_key_attributes_t *attributes,
371 const uint8_t *key_buffer,
372 size_t key_buffer_size,
373 psa_algorithm_t alg,
374 const uint8_t *input,
375 size_t input_length,
376 const uint8_t *salt,
377 size_t salt_length,
378 uint8_t *output,
379 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100380 size_t *output_length);
Przemyslaw Stekielb6a66502021-12-09 11:11:54 +0100381
Thomas Daubney70464682023-07-04 14:38:06 +0100382static inline psa_status_t psa_driver_wrapper_asymmetric_decrypt(
Przemyslaw Stekiel71284ea2021-12-13 09:00:52 +0100383 const psa_key_attributes_t *attributes,
384 const uint8_t *key_buffer,
385 size_t key_buffer_size,
386 psa_algorithm_t alg,
387 const uint8_t *input,
388 size_t input_length,
389 const uint8_t *salt,
390 size_t salt_length,
391 uint8_t *output,
392 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100393 size_t *output_length);
Przemyslaw Stekiel71284ea2021-12-13 09:00:52 +0100394
Aditya Deshpande17845b82022-10-13 17:21:01 +0100395/*
396 * Raw Key Agreement
397 */
Thomas Daubney70464682023-07-04 14:38:06 +0100398static inline psa_status_t psa_driver_wrapper_key_agreement(
Aditya Deshpande17845b82022-10-13 17:21:01 +0100399 const psa_key_attributes_t *attributes,
400 const uint8_t *key_buffer,
401 size_t key_buffer_size,
402 psa_algorithm_t alg,
403 const uint8_t *peer_key,
404 size_t peer_key_length,
405 uint8_t *shared_secret,
406 size_t shared_secret_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100407 size_t *shared_secret_length);
Aditya Deshpande17845b82022-10-13 17:21:01 +0100408
Neil Armstrong7da8c562022-06-01 18:17:22 +0200409/*
410 * PAKE functions.
411 */
Thomas Daubney70464682023-07-04 14:38:06 +0100412static inline psa_status_t psa_driver_wrapper_pake_setup(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200413 psa_pake_operation_t *operation,
Przemek Stekiel51eac532022-12-07 11:04:51 +0100414 const psa_crypto_driver_pake_inputs_t *inputs);
Neil Armstrong7da8c562022-06-01 18:17:22 +0200415
Thomas Daubney70464682023-07-04 14:38:06 +0100416static inline psa_status_t psa_driver_wrapper_pake_output(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200417 psa_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +0100418 psa_crypto_driver_pake_step_t step,
Neil Armstrong7da8c562022-06-01 18:17:22 +0200419 uint8_t *output,
420 size_t output_size,
421 size_t *output_length);
422
Thomas Daubney70464682023-07-04 14:38:06 +0100423static inline psa_status_t psa_driver_wrapper_pake_input(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200424 psa_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +0100425 psa_crypto_driver_pake_step_t step,
Neil Armstrong7da8c562022-06-01 18:17:22 +0200426 const uint8_t *input,
427 size_t input_length);
428
Thomas Daubney70464682023-07-04 14:38:06 +0100429static inline psa_status_t psa_driver_wrapper_pake_get_implicit_key(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200430 psa_pake_operation_t *operation,
Przemek Stekiel6b648622023-02-19 22:55:33 +0100431 uint8_t *output, size_t output_size,
432 size_t *output_length);
Neil Armstrong7da8c562022-06-01 18:17:22 +0200433
Thomas Daubney70464682023-07-04 14:38:06 +0100434static inline psa_status_t psa_driver_wrapper_pake_abort(
Neil Armstrong7da8c562022-06-01 18:17:22 +0200435 psa_pake_operation_t *operation);
436
Steven Cooremancd84cb42020-07-16 20:28:36 +0200437#endif /* PSA_CRYPTO_DRIVER_WRAPPERS_H */
438
439/* End of automatically generated file. */