blob: 7e769777cfdf5b218a2292edfedeaa980ad05f99 [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 Cooreman56250fd2020-09-04 13:07:15 +02004 * Warning: This file will be auto-generated in the future.
Steven Cooremancd84cb42020-07-16 20:28:36 +02005 */
Steven Cooreman2c7b2f82020-09-02 13:43:46 +02006/* Copyright The Mbed TLS Contributors
Dave Rodgman7ff79652023-11-03 12:04:52 +00007 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Steven Cooremancd84cb42020-07-16 20:28:36 +02008 */
9
10#ifndef PSA_CRYPTO_DRIVER_WRAPPERS_H
11#define PSA_CRYPTO_DRIVER_WRAPPERS_H
12
13#include "psa/crypto.h"
14#include "psa/crypto_driver_common.h"
15
Steven Cooreman37941cb2020-07-28 18:49:51 +020016/*
Ronald Cron088d5d02021-04-10 16:57:30 +020017 * Initialization and termination functions
18 */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010019psa_status_t psa_driver_wrapper_init(void);
20void psa_driver_wrapper_free(void);
Ronald Cron088d5d02021-04-10 16:57:30 +020021
22/*
Steven Cooreman37941cb2020-07-28 18:49:51 +020023 * Signature functions
24 */
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020025psa_status_t psa_driver_wrapper_sign_message(
26 const psa_key_attributes_t *attributes,
27 const uint8_t *key_buffer,
28 size_t key_buffer_size,
29 psa_algorithm_t alg,
30 const uint8_t *input,
31 size_t input_length,
32 uint8_t *signature,
33 size_t signature_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010034 size_t *signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020035
36psa_status_t psa_driver_wrapper_verify_message(
37 const psa_key_attributes_t *attributes,
38 const uint8_t *key_buffer,
39 size_t key_buffer_size,
40 psa_algorithm_t alg,
41 const uint8_t *input,
42 size_t input_length,
43 const uint8_t *signature,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010044 size_t signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020045
Ronald Cron9f17aa42020-12-08 17:07:25 +010046psa_status_t psa_driver_wrapper_sign_hash(
47 const psa_key_attributes_t *attributes,
48 const uint8_t *key_buffer, size_t key_buffer_size,
49 psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010050 uint8_t *signature, size_t signature_size, size_t *signature_length);
Steven Cooremancd84cb42020-07-16 20:28:36 +020051
Ronald Cron9f17aa42020-12-08 17:07:25 +010052psa_status_t psa_driver_wrapper_verify_hash(
53 const psa_key_attributes_t *attributes,
54 const uint8_t *key_buffer, size_t key_buffer_size,
55 psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010056 const uint8_t *signature, size_t signature_length);
Steven Cooreman55ae2172020-07-17 19:46:15 +020057
Steven Cooreman04524762020-10-13 17:43:44 +020058/*
59 * Key handling functions
60 */
61
Ronald Cron83282872020-11-22 14:02:39 +010062psa_status_t psa_driver_wrapper_import_key(
63 const psa_key_attributes_t *attributes,
64 const uint8_t *data, size_t data_length,
65 uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010066 size_t *key_buffer_length, size_t *bits);
Steven Cooreman04524762020-10-13 17:43:44 +020067
Ronald Cron67227982020-11-26 15:16:05 +010068psa_status_t psa_driver_wrapper_export_key(
69 const psa_key_attributes_t *attributes,
70 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010071 uint8_t *data, size_t data_size, size_t *data_length);
Ronald Cron67227982020-11-26 15:16:05 +010072
Ronald Cron84cc9942020-11-25 14:30:05 +010073psa_status_t psa_driver_wrapper_export_public_key(
74 const psa_key_attributes_t *attributes,
75 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010076 uint8_t *data, size_t data_size, size_t *data_length);
Ronald Cron84cc9942020-11-25 14:30:05 +010077
Ronald Cron9df74be2020-12-05 19:15:23 +010078psa_status_t psa_driver_wrapper_get_key_buffer_size(
79 const psa_key_attributes_t *attributes,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010080 size_t *key_buffer_size);
Ronald Cron9df74be2020-12-05 19:15:23 +010081
Ronald Cron84cc9942020-11-25 14:30:05 +010082psa_status_t psa_driver_wrapper_generate_key(
83 const psa_key_attributes_t *attributes,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010084 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
Steven Cooremanb9b84422020-10-14 14:39:20 +020085
Steven Cooreman6801f082021-02-19 17:21:22 +010086psa_status_t psa_driver_wrapper_get_builtin_key(
87 psa_drv_slot_number_t slot_number,
88 psa_key_attributes_t *attributes,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010089 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
Steven Cooreman6801f082021-02-19 17:21:22 +010090
Steven Cooreman37941cb2020-07-28 18:49:51 +020091/*
92 * Cipher functions
93 */
94psa_status_t psa_driver_wrapper_cipher_encrypt(
gabor-mezei-armfa990b52021-03-25 11:17:10 +010095 const psa_key_attributes_t *attributes,
96 const uint8_t *key_buffer,
97 size_t key_buffer_size,
Steven Cooreman37941cb2020-07-28 18:49:51 +020098 psa_algorithm_t alg,
Ronald Crona8331692021-07-09 09:19:35 +020099 const uint8_t *iv,
100 size_t iv_length,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200101 const uint8_t *input,
102 size_t input_length,
103 uint8_t *output,
104 size_t output_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100105 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200106
107psa_status_t psa_driver_wrapper_cipher_decrypt(
gabor-mezei-armfa990b52021-03-25 11:17:10 +0100108 const psa_key_attributes_t *attributes,
109 const uint8_t *key_buffer,
110 size_t key_buffer_size,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200111 psa_algorithm_t alg,
112 const uint8_t *input,
113 size_t input_length,
114 uint8_t *output,
115 size_t output_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100116 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200117
118psa_status_t psa_driver_wrapper_cipher_encrypt_setup(
Ronald Crona4af55f2020-12-14 14:36:06 +0100119 psa_cipher_operation_t *operation,
120 const psa_key_attributes_t *attributes,
121 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100122 psa_algorithm_t alg);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200123
124psa_status_t psa_driver_wrapper_cipher_decrypt_setup(
Ronald Crona4af55f2020-12-14 14:36:06 +0100125 psa_cipher_operation_t *operation,
126 const psa_key_attributes_t *attributes,
127 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100128 psa_algorithm_t alg);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200129
Steven Cooreman37941cb2020-07-28 18:49:51 +0200130psa_status_t psa_driver_wrapper_cipher_set_iv(
Ronald Cron6056fe82020-12-15 13:58:07 +0100131 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200132 const uint8_t *iv,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100133 size_t iv_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200134
135psa_status_t psa_driver_wrapper_cipher_update(
Ronald Cron6056fe82020-12-15 13:58:07 +0100136 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200137 const uint8_t *input,
138 size_t input_length,
139 uint8_t *output,
140 size_t output_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100141 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200142
143psa_status_t psa_driver_wrapper_cipher_finish(
Ronald Cron6056fe82020-12-15 13:58:07 +0100144 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200145 uint8_t *output,
146 size_t output_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100147 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200148
149psa_status_t psa_driver_wrapper_cipher_abort(
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100150 psa_cipher_operation_t *operation);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200151
Steven Cooreman1e582352021-02-18 17:24:37 +0100152/*
153 * Hashing functions
154 */
155psa_status_t psa_driver_wrapper_hash_compute(
156 psa_algorithm_t alg,
157 const uint8_t *input,
158 size_t input_length,
159 uint8_t *hash,
160 size_t hash_size,
161 size_t *hash_length);
162
163psa_status_t psa_driver_wrapper_hash_setup(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100164 psa_hash_operation_t *operation,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100165 psa_algorithm_t alg);
Steven Cooreman1e582352021-02-18 17:24:37 +0100166
167psa_status_t psa_driver_wrapper_hash_clone(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100168 const psa_hash_operation_t *source_operation,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100169 psa_hash_operation_t *target_operation);
Steven Cooreman1e582352021-02-18 17:24:37 +0100170
171psa_status_t psa_driver_wrapper_hash_update(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100172 psa_hash_operation_t *operation,
Steven Cooreman1e582352021-02-18 17:24:37 +0100173 const uint8_t *input,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100174 size_t input_length);
Steven Cooreman1e582352021-02-18 17:24:37 +0100175
176psa_status_t psa_driver_wrapper_hash_finish(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100177 psa_hash_operation_t *operation,
Steven Cooreman1e582352021-02-18 17:24:37 +0100178 uint8_t *hash,
179 size_t hash_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100180 size_t *hash_length);
Steven Cooreman1e582352021-02-18 17:24:37 +0100181
182psa_status_t psa_driver_wrapper_hash_abort(
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100183 psa_hash_operation_t *operation);
Steven Cooreman1e582352021-02-18 17:24:37 +0100184
Ronald Cronde822812021-03-17 16:08:20 +0100185/*
186 * AEAD functions
187 */
188
189psa_status_t psa_driver_wrapper_aead_encrypt(
190 const psa_key_attributes_t *attributes,
191 const uint8_t *key_buffer, size_t key_buffer_size,
192 psa_algorithm_t alg,
193 const uint8_t *nonce, size_t nonce_length,
194 const uint8_t *additional_data, size_t additional_data_length,
195 const uint8_t *plaintext, size_t plaintext_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100196 uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length);
Ronald Cronde822812021-03-17 16:08:20 +0100197
198psa_status_t psa_driver_wrapper_aead_decrypt(
199 const psa_key_attributes_t *attributes,
200 const uint8_t *key_buffer, size_t key_buffer_size,
201 psa_algorithm_t alg,
202 const uint8_t *nonce, size_t nonce_length,
203 const uint8_t *additional_data, size_t additional_data_length,
204 const uint8_t *ciphertext, size_t ciphertext_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100205 uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length);
Ronald Cronde822812021-03-17 16:08:20 +0100206
Steven Cooreman896d51e2021-03-19 15:24:23 +0100207/*
208 * MAC functions
209 */
210psa_status_t psa_driver_wrapper_mac_compute(
211 const psa_key_attributes_t *attributes,
212 const uint8_t *key_buffer,
213 size_t key_buffer_size,
214 psa_algorithm_t alg,
215 const uint8_t *input,
216 size_t input_length,
217 uint8_t *mac,
218 size_t mac_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100219 size_t *mac_length);
Steven Cooreman896d51e2021-03-19 15:24:23 +0100220
221psa_status_t psa_driver_wrapper_mac_sign_setup(
222 psa_mac_operation_t *operation,
223 const psa_key_attributes_t *attributes,
224 const uint8_t *key_buffer,
225 size_t key_buffer_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100226 psa_algorithm_t alg);
Steven Cooreman896d51e2021-03-19 15:24:23 +0100227
228psa_status_t psa_driver_wrapper_mac_verify_setup(
229 psa_mac_operation_t *operation,
230 const psa_key_attributes_t *attributes,
231 const uint8_t *key_buffer,
232 size_t key_buffer_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100233 psa_algorithm_t alg);
Steven Cooreman896d51e2021-03-19 15:24:23 +0100234
235psa_status_t psa_driver_wrapper_mac_update(
236 psa_mac_operation_t *operation,
237 const uint8_t *input,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100238 size_t input_length);
Steven Cooreman896d51e2021-03-19 15:24:23 +0100239
240psa_status_t psa_driver_wrapper_mac_sign_finish(
241 psa_mac_operation_t *operation,
242 uint8_t *mac,
243 size_t mac_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100244 size_t *mac_length);
Steven Cooreman896d51e2021-03-19 15:24:23 +0100245
246psa_status_t psa_driver_wrapper_mac_verify_finish(
247 psa_mac_operation_t *operation,
248 const uint8_t *mac,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100249 size_t mac_length);
Steven Cooreman896d51e2021-03-19 15:24:23 +0100250
251psa_status_t psa_driver_wrapper_mac_abort(
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100252 psa_mac_operation_t *operation);
Steven Cooreman896d51e2021-03-19 15:24:23 +0100253
Steven Cooremancd84cb42020-07-16 20:28:36 +0200254#endif /* PSA_CRYPTO_DRIVER_WRAPPERS_H */
255
256/* End of automatically generated file. */