blob: 7d672d641d311544271c9df6055ae8dd12f40e55 [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
Steven Cooreman37941cb2020-07-28 18:49:51 +020027/*
Ronald Cron9ba76912021-04-10 16:57:30 +020028 * Initialization and termination functions
29 */
Gilles Peskine449bd832023-01-11 14:50:10 +010030psa_status_t psa_driver_wrapper_init(void);
31void psa_driver_wrapper_free(void);
Ronald Cron9ba76912021-04-10 16:57:30 +020032
33/*
Steven Cooreman37941cb2020-07-28 18:49:51 +020034 * Signature functions
35 */
gabor-mezei-arm50eac352021-04-22 11:32:19 +020036psa_status_t psa_driver_wrapper_sign_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 uint8_t *signature,
44 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010045 size_t *signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +020046
47psa_status_t psa_driver_wrapper_verify_message(
48 const psa_key_attributes_t *attributes,
49 const uint8_t *key_buffer,
50 size_t key_buffer_size,
51 psa_algorithm_t alg,
52 const uint8_t *input,
53 size_t input_length,
54 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +010055 size_t signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +020056
Ronald Cron9f17aa42020-12-08 17:07:25 +010057psa_status_t psa_driver_wrapper_sign_hash(
58 const psa_key_attributes_t *attributes,
59 const uint8_t *key_buffer, size_t key_buffer_size,
60 psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010061 uint8_t *signature, size_t signature_size, size_t *signature_length);
Steven Cooremancd84cb42020-07-16 20:28:36 +020062
Ronald Cron9f17aa42020-12-08 17:07:25 +010063psa_status_t psa_driver_wrapper_verify_hash(
64 const psa_key_attributes_t *attributes,
65 const uint8_t *key_buffer, size_t key_buffer_size,
66 psa_algorithm_t alg, const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010067 const uint8_t *signature, size_t signature_length);
Steven Cooreman55ae2172020-07-17 19:46:15 +020068
Steven Cooreman04524762020-10-13 17:43:44 +020069/*
Paul Elliott2d247922022-11-29 14:54:44 +000070 * Interruptible Signature functions
71 */
72
Paul Elliott2d247922022-11-29 14:54:44 +000073uint32_t psa_driver_wrapper_sign_hash_get_num_ops(
Paul Elliott93d9ca82023-02-15 18:14:21 +000074 psa_sign_hash_interruptible_operation_t *operation);
Paul Elliott2d247922022-11-29 14:54:44 +000075
76uint32_t psa_driver_wrapper_verify_hash_get_num_ops(
Paul Elliott93d9ca82023-02-15 18:14:21 +000077 psa_verify_hash_interruptible_operation_t *operation);
Paul Elliott2d247922022-11-29 14:54:44 +000078
79psa_status_t psa_driver_wrapper_sign_hash_start(
80 psa_sign_hash_interruptible_operation_t *operation,
81 const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
82 size_t key_buffer_size, psa_algorithm_t alg,
83 const uint8_t *hash, size_t hash_length);
84
85psa_status_t psa_driver_wrapper_sign_hash_complete(
86 psa_sign_hash_interruptible_operation_t *operation,
87 uint8_t *signature, size_t signature_size,
88 size_t *signature_length);
89
90psa_status_t psa_driver_wrapper_sign_hash_abort(
91 psa_sign_hash_interruptible_operation_t *operation);
92
93psa_status_t psa_driver_wrapper_verify_hash_start(
94 psa_verify_hash_interruptible_operation_t *operation,
95 const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
96 size_t key_buffer_size, psa_algorithm_t alg,
97 const uint8_t *hash, size_t hash_length,
98 const uint8_t *signature, size_t signature_length);
99
100psa_status_t psa_driver_wrapper_verify_hash_complete(
101 psa_verify_hash_interruptible_operation_t *operation);
102
103psa_status_t psa_driver_wrapper_verify_hash_abort(
104 psa_verify_hash_interruptible_operation_t *operation);
105
106/*
Steven Cooreman04524762020-10-13 17:43:44 +0200107 * Key handling functions
108 */
109
Ronald Cron83282872020-11-22 14:02:39 +0100110psa_status_t psa_driver_wrapper_import_key(
111 const psa_key_attributes_t *attributes,
112 const uint8_t *data, size_t data_length,
113 uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100114 size_t *key_buffer_length, size_t *bits);
Steven Cooreman04524762020-10-13 17:43:44 +0200115
Ronald Cron67227982020-11-26 15:16:05 +0100116psa_status_t psa_driver_wrapper_export_key(
117 const psa_key_attributes_t *attributes,
118 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100119 uint8_t *data, size_t data_size, size_t *data_length);
Ronald Cron67227982020-11-26 15:16:05 +0100120
Ronald Cron84cc9942020-11-25 14:30:05 +0100121psa_status_t psa_driver_wrapper_export_public_key(
122 const psa_key_attributes_t *attributes,
123 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100124 uint8_t *data, size_t data_size, size_t *data_length);
Ronald Cron84cc9942020-11-25 14:30:05 +0100125
Ronald Cron9df74be2020-12-05 19:15:23 +0100126psa_status_t psa_driver_wrapper_get_key_buffer_size(
127 const psa_key_attributes_t *attributes,
Gilles Peskine449bd832023-01-11 14:50:10 +0100128 size_t *key_buffer_size);
Ronald Cron9df74be2020-12-05 19:15:23 +0100129
Archanad8a83dc2021-06-14 10:04:16 +0530130psa_status_t psa_driver_wrapper_get_key_buffer_size_from_key_data(
131 const psa_key_attributes_t *attributes,
132 const uint8_t *data,
133 size_t data_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100134 size_t *key_buffer_size);
Archanad8a83dc2021-06-14 10:04:16 +0530135
Ronald Cron84cc9942020-11-25 14:30:05 +0100136psa_status_t psa_driver_wrapper_generate_key(
137 const psa_key_attributes_t *attributes,
Gilles Peskine449bd832023-01-11 14:50:10 +0100138 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
Steven Cooremanb9b84422020-10-14 14:39:20 +0200139
Steven Cooreman6801f082021-02-19 17:21:22 +0100140psa_status_t psa_driver_wrapper_get_builtin_key(
141 psa_drv_slot_number_t slot_number,
142 psa_key_attributes_t *attributes,
Gilles Peskine449bd832023-01-11 14:50:10 +0100143 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
Steven Cooreman6801f082021-02-19 17:21:22 +0100144
Archana8a180362021-07-05 02:18:48 +0530145psa_status_t psa_driver_wrapper_copy_key(
146 psa_key_attributes_t *attributes,
Archana9d17bf42021-09-10 06:22:44 +0530147 const uint8_t *source_key, size_t source_key_length,
Archana449608b2021-09-08 15:36:05 +0530148 uint8_t *target_key_buffer, size_t target_key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100149 size_t *target_key_buffer_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200150/*
151 * Cipher functions
152 */
153psa_status_t psa_driver_wrapper_cipher_encrypt(
gabor-mezei-arma9449a02021-03-25 11:17:10 +0100154 const psa_key_attributes_t *attributes,
155 const uint8_t *key_buffer,
156 size_t key_buffer_size,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200157 psa_algorithm_t alg,
Ronald Cron9b674282021-07-09 09:19:35 +0200158 const uint8_t *iv,
159 size_t iv_length,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200160 const uint8_t *input,
161 size_t input_length,
162 uint8_t *output,
163 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100164 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200165
166psa_status_t psa_driver_wrapper_cipher_decrypt(
gabor-mezei-arma9449a02021-03-25 11:17:10 +0100167 const psa_key_attributes_t *attributes,
168 const uint8_t *key_buffer,
169 size_t key_buffer_size,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200170 psa_algorithm_t alg,
171 const uint8_t *input,
172 size_t input_length,
173 uint8_t *output,
174 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100175 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200176
177psa_status_t psa_driver_wrapper_cipher_encrypt_setup(
Ronald Crona4af55f2020-12-14 14:36:06 +0100178 psa_cipher_operation_t *operation,
179 const psa_key_attributes_t *attributes,
180 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100181 psa_algorithm_t alg);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200182
183psa_status_t psa_driver_wrapper_cipher_decrypt_setup(
Ronald Crona4af55f2020-12-14 14:36:06 +0100184 psa_cipher_operation_t *operation,
185 const psa_key_attributes_t *attributes,
186 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100187 psa_algorithm_t alg);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200188
Steven Cooreman37941cb2020-07-28 18:49:51 +0200189psa_status_t psa_driver_wrapper_cipher_set_iv(
Ronald Cron6056fe82020-12-15 13:58:07 +0100190 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200191 const uint8_t *iv,
Gilles Peskine449bd832023-01-11 14:50:10 +0100192 size_t iv_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200193
194psa_status_t psa_driver_wrapper_cipher_update(
Ronald Cron6056fe82020-12-15 13:58:07 +0100195 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200196 const uint8_t *input,
197 size_t input_length,
198 uint8_t *output,
199 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100200 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200201
202psa_status_t psa_driver_wrapper_cipher_finish(
Ronald Cron6056fe82020-12-15 13:58:07 +0100203 psa_cipher_operation_t *operation,
Steven Cooreman37941cb2020-07-28 18:49:51 +0200204 uint8_t *output,
205 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100206 size_t *output_length);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200207
208psa_status_t psa_driver_wrapper_cipher_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100209 psa_cipher_operation_t *operation);
Steven Cooreman37941cb2020-07-28 18:49:51 +0200210
Steven Cooreman1e582352021-02-18 17:24:37 +0100211/*
212 * Hashing functions
213 */
214psa_status_t psa_driver_wrapper_hash_compute(
215 psa_algorithm_t alg,
216 const uint8_t *input,
217 size_t input_length,
218 uint8_t *hash,
219 size_t hash_size,
220 size_t *hash_length);
221
222psa_status_t psa_driver_wrapper_hash_setup(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100223 psa_hash_operation_t *operation,
Gilles Peskine449bd832023-01-11 14:50:10 +0100224 psa_algorithm_t alg);
Steven Cooreman1e582352021-02-18 17:24:37 +0100225
226psa_status_t psa_driver_wrapper_hash_clone(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100227 const psa_hash_operation_t *source_operation,
Gilles Peskine449bd832023-01-11 14:50:10 +0100228 psa_hash_operation_t *target_operation);
Steven Cooreman1e582352021-02-18 17:24:37 +0100229
230psa_status_t psa_driver_wrapper_hash_update(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100231 psa_hash_operation_t *operation,
Steven Cooreman1e582352021-02-18 17:24:37 +0100232 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100233 size_t input_length);
Steven Cooreman1e582352021-02-18 17:24:37 +0100234
235psa_status_t psa_driver_wrapper_hash_finish(
Steven Cooremandbf8ced2021-03-04 13:01:18 +0100236 psa_hash_operation_t *operation,
Steven Cooreman1e582352021-02-18 17:24:37 +0100237 uint8_t *hash,
238 size_t hash_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100239 size_t *hash_length);
Steven Cooreman1e582352021-02-18 17:24:37 +0100240
241psa_status_t psa_driver_wrapper_hash_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100242 psa_hash_operation_t *operation);
Steven Cooreman1e582352021-02-18 17:24:37 +0100243
Ronald Cronde822812021-03-17 16:08:20 +0100244/*
245 * AEAD functions
246 */
247
248psa_status_t psa_driver_wrapper_aead_encrypt(
249 const psa_key_attributes_t *attributes,
250 const uint8_t *key_buffer, size_t key_buffer_size,
251 psa_algorithm_t alg,
252 const uint8_t *nonce, size_t nonce_length,
253 const uint8_t *additional_data, size_t additional_data_length,
254 const uint8_t *plaintext, size_t plaintext_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100255 uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length);
Ronald Cronde822812021-03-17 16:08:20 +0100256
257psa_status_t psa_driver_wrapper_aead_decrypt(
258 const psa_key_attributes_t *attributes,
259 const uint8_t *key_buffer, size_t key_buffer_size,
260 psa_algorithm_t alg,
261 const uint8_t *nonce, size_t nonce_length,
262 const uint8_t *additional_data, size_t additional_data_length,
263 const uint8_t *ciphertext, size_t ciphertext_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100264 uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length);
Ronald Cronde822812021-03-17 16:08:20 +0100265
Paul Elliott6504aa62021-04-20 17:09:36 +0100266psa_status_t psa_driver_wrapper_aead_encrypt_setup(
267 psa_aead_operation_t *operation,
268 const psa_key_attributes_t *attributes,
269 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100270 psa_algorithm_t alg);
Paul Elliott6504aa62021-04-20 17:09:36 +0100271
272psa_status_t psa_driver_wrapper_aead_decrypt_setup(
273 psa_aead_operation_t *operation,
274 const psa_key_attributes_t *attributes,
275 const uint8_t *key_buffer, size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100276 psa_algorithm_t alg);
Paul Elliott6504aa62021-04-20 17:09:36 +0100277
Paul Elliott6504aa62021-04-20 17:09:36 +0100278psa_status_t psa_driver_wrapper_aead_set_nonce(
279 psa_aead_operation_t *operation,
280 const uint8_t *nonce,
Gilles Peskine449bd832023-01-11 14:50:10 +0100281 size_t nonce_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100282
283psa_status_t psa_driver_wrapper_aead_set_lengths(
284 psa_aead_operation_t *operation,
285 size_t ad_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100286 size_t plaintext_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100287
288psa_status_t psa_driver_wrapper_aead_update_ad(
289 psa_aead_operation_t *operation,
290 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100291 size_t input_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100292
293psa_status_t psa_driver_wrapper_aead_update(
294 psa_aead_operation_t *operation,
295 const uint8_t *input,
296 size_t input_length,
297 uint8_t *output,
298 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100299 size_t *output_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100300
301psa_status_t psa_driver_wrapper_aead_finish(
302 psa_aead_operation_t *operation,
303 uint8_t *ciphertext,
304 size_t ciphertext_size,
305 size_t *ciphertext_length,
306 uint8_t *tag,
307 size_t tag_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100308 size_t *tag_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100309
310psa_status_t psa_driver_wrapper_aead_verify(
311 psa_aead_operation_t *operation,
312 uint8_t *plaintext,
313 size_t plaintext_size,
314 size_t *plaintext_length,
315 const uint8_t *tag,
Gilles Peskine449bd832023-01-11 14:50:10 +0100316 size_t tag_length);
Paul Elliott6504aa62021-04-20 17:09:36 +0100317
318psa_status_t psa_driver_wrapper_aead_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100319 psa_aead_operation_t *operation);
Paul Elliott6504aa62021-04-20 17:09:36 +0100320
Steven Cooremand13a70f2021-03-19 15:24:23 +0100321/*
322 * MAC functions
323 */
324psa_status_t psa_driver_wrapper_mac_compute(
325 const psa_key_attributes_t *attributes,
326 const uint8_t *key_buffer,
327 size_t key_buffer_size,
328 psa_algorithm_t alg,
329 const uint8_t *input,
330 size_t input_length,
331 uint8_t *mac,
332 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100333 size_t *mac_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100334
335psa_status_t psa_driver_wrapper_mac_sign_setup(
336 psa_mac_operation_t *operation,
337 const psa_key_attributes_t *attributes,
338 const uint8_t *key_buffer,
339 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100340 psa_algorithm_t alg);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100341
342psa_status_t psa_driver_wrapper_mac_verify_setup(
343 psa_mac_operation_t *operation,
344 const psa_key_attributes_t *attributes,
345 const uint8_t *key_buffer,
346 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100347 psa_algorithm_t alg);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100348
349psa_status_t psa_driver_wrapper_mac_update(
350 psa_mac_operation_t *operation,
351 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100352 size_t input_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100353
354psa_status_t psa_driver_wrapper_mac_sign_finish(
355 psa_mac_operation_t *operation,
356 uint8_t *mac,
357 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100358 size_t *mac_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100359
360psa_status_t psa_driver_wrapper_mac_verify_finish(
361 psa_mac_operation_t *operation,
362 const uint8_t *mac,
Gilles Peskine449bd832023-01-11 14:50:10 +0100363 size_t mac_length);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100364
365psa_status_t psa_driver_wrapper_mac_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100366 psa_mac_operation_t *operation);
Steven Cooremand13a70f2021-03-19 15:24:23 +0100367
Przemyslaw Stekielb6a66502021-12-09 11:11:54 +0100368/*
369 * Asymmetric cryptography
370 */
371psa_status_t psa_driver_wrapper_asymmetric_encrypt(
372 const psa_key_attributes_t *attributes,
373 const uint8_t *key_buffer,
374 size_t key_buffer_size,
375 psa_algorithm_t alg,
376 const uint8_t *input,
377 size_t input_length,
378 const uint8_t *salt,
379 size_t salt_length,
380 uint8_t *output,
381 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100382 size_t *output_length);
Przemyslaw Stekielb6a66502021-12-09 11:11:54 +0100383
Przemyslaw Stekiel71284ea2021-12-13 09:00:52 +0100384psa_status_t psa_driver_wrapper_asymmetric_decrypt(
385 const psa_key_attributes_t *attributes,
386 const uint8_t *key_buffer,
387 size_t key_buffer_size,
388 psa_algorithm_t alg,
389 const uint8_t *input,
390 size_t input_length,
391 const uint8_t *salt,
392 size_t salt_length,
393 uint8_t *output,
394 size_t output_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100395 size_t *output_length);
Przemyslaw Stekiel71284ea2021-12-13 09:00:52 +0100396
Aditya Deshpande17845b82022-10-13 17:21:01 +0100397/*
398 * Raw Key Agreement
399 */
Aditya Deshpandecfb441d2022-10-17 13:53:35 +0100400psa_status_t psa_driver_wrapper_key_agreement(
Aditya Deshpande17845b82022-10-13 17:21:01 +0100401 const psa_key_attributes_t *attributes,
402 const uint8_t *key_buffer,
403 size_t key_buffer_size,
404 psa_algorithm_t alg,
405 const uint8_t *peer_key,
406 size_t peer_key_length,
407 uint8_t *shared_secret,
408 size_t shared_secret_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100409 size_t *shared_secret_length);
Aditya Deshpande17845b82022-10-13 17:21:01 +0100410
Neil Armstrong7da8c562022-06-01 18:17:22 +0200411/*
412 * PAKE functions.
413 */
414psa_status_t psa_driver_wrapper_pake_setup(
415 psa_pake_operation_t *operation,
Przemek Stekiel51eac532022-12-07 11:04:51 +0100416 const psa_crypto_driver_pake_inputs_t *inputs);
Neil Armstrong7da8c562022-06-01 18:17:22 +0200417
418psa_status_t psa_driver_wrapper_pake_output(
419 psa_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +0100420 psa_crypto_driver_pake_step_t step,
Neil Armstrong7da8c562022-06-01 18:17:22 +0200421 uint8_t *output,
422 size_t output_size,
423 size_t *output_length);
424
425psa_status_t psa_driver_wrapper_pake_input(
426 psa_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +0100427 psa_crypto_driver_pake_step_t step,
Neil Armstrong7da8c562022-06-01 18:17:22 +0200428 const uint8_t *input,
429 size_t input_length);
430
431psa_status_t psa_driver_wrapper_pake_get_implicit_key(
432 psa_pake_operation_t *operation,
Przemek Stekiel6b648622023-02-19 22:55:33 +0100433 uint8_t *output, size_t output_size,
434 size_t *output_length);
Neil Armstrong7da8c562022-06-01 18:17:22 +0200435
436psa_status_t psa_driver_wrapper_pake_abort(
437 psa_pake_operation_t *operation);
438
Steven Cooremancd84cb42020-07-16 20:28:36 +0200439#endif /* PSA_CRYPTO_DRIVER_WRAPPERS_H */
440
441/* End of automatically generated file. */