blob: e011594bef2a9a7d7a6f512073a5761bee984996 [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
73void psa_driver_wrapper_interruptible_set_max_ops(uint32_t max_ops);
74
75uint32_t psa_driver_wrapper_interruptible_get_max_ops(void);
76
77uint32_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
80uint32_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
83psa_status_t psa_driver_wrapper_sign_hash_start(
84 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
89psa_status_t psa_driver_wrapper_sign_hash_complete(
90 psa_sign_hash_interruptible_operation_t *operation,
91 uint8_t *signature, size_t signature_size,
92 size_t *signature_length);
93
94psa_status_t psa_driver_wrapper_sign_hash_abort(
95 psa_sign_hash_interruptible_operation_t *operation);
96
97psa_status_t psa_driver_wrapper_verify_hash_start(
98 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
104psa_status_t psa_driver_wrapper_verify_hash_complete(
105 psa_verify_hash_interruptible_operation_t *operation);
106
107psa_status_t psa_driver_wrapper_verify_hash_abort(
108 psa_verify_hash_interruptible_operation_t *operation);
109
110/*
Steven Cooreman04524762020-10-13 17:43:44 +0200111 * Key handling functions
112 */
113
Ronald Cron83282872020-11-22 14:02:39 +0100114psa_status_t psa_driver_wrapper_import_key(
115 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
Ronald Cron67227982020-11-26 15:16:05 +0100120psa_status_t psa_driver_wrapper_export_key(
121 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
Ronald Cron84cc9942020-11-25 14:30:05 +0100125psa_status_t psa_driver_wrapper_export_public_key(
126 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
Ronald Cron9df74be2020-12-05 19:15:23 +0100130psa_status_t psa_driver_wrapper_get_key_buffer_size(
131 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
Archanad8a83dc2021-06-14 10:04:16 +0530134psa_status_t psa_driver_wrapper_get_key_buffer_size_from_key_data(
135 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
Ronald Cron84cc9942020-11-25 14:30:05 +0100140psa_status_t psa_driver_wrapper_generate_key(
141 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
Steven Cooreman6801f082021-02-19 17:21:22 +0100144psa_status_t psa_driver_wrapper_get_builtin_key(
145 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
Archana8a180362021-07-05 02:18:48 +0530149psa_status_t psa_driver_wrapper_copy_key(
150 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 */
157psa_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
170psa_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
181psa_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
187psa_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
Steven Cooreman37941cb2020-07-28 18:49:51 +0200193psa_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
198psa_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
206psa_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
212psa_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 */
218psa_status_t psa_driver_wrapper_hash_compute(
219 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
226psa_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
230psa_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
234psa_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
239psa_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
245psa_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
252psa_status_t psa_driver_wrapper_aead_encrypt(
253 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
261psa_status_t psa_driver_wrapper_aead_decrypt(
262 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
Paul Elliott6504aa62021-04-20 17:09:36 +0100270psa_status_t psa_driver_wrapper_aead_encrypt_setup(
271 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
276psa_status_t psa_driver_wrapper_aead_decrypt_setup(
277 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
Paul Elliott6504aa62021-04-20 17:09:36 +0100282psa_status_t psa_driver_wrapper_aead_set_nonce(
283 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
287psa_status_t psa_driver_wrapper_aead_set_lengths(
288 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
292psa_status_t psa_driver_wrapper_aead_update_ad(
293 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
297psa_status_t psa_driver_wrapper_aead_update(
298 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
305psa_status_t psa_driver_wrapper_aead_finish(
306 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
314psa_status_t psa_driver_wrapper_aead_verify(
315 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
322psa_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 */
328psa_status_t psa_driver_wrapper_mac_compute(
329 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
339psa_status_t psa_driver_wrapper_mac_sign_setup(
340 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
346psa_status_t psa_driver_wrapper_mac_verify_setup(
347 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
353psa_status_t psa_driver_wrapper_mac_update(
354 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
358psa_status_t psa_driver_wrapper_mac_sign_finish(
359 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
364psa_status_t psa_driver_wrapper_mac_verify_finish(
365 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
369psa_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 */
375psa_status_t psa_driver_wrapper_asymmetric_encrypt(
376 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
Przemyslaw Stekiel71284ea2021-12-13 09:00:52 +0100388psa_status_t psa_driver_wrapper_asymmetric_decrypt(
389 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 */
Aditya Deshpandecfb441d2022-10-17 13:53:35 +0100404psa_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 */
418psa_status_t psa_driver_wrapper_pake_setup(
419 psa_pake_operation_t *operation,
420 const psa_pake_cipher_suite_t *cipher_suite);
421
422psa_status_t psa_driver_wrapper_pake_set_password_key(
423 psa_pake_operation_t *operation,
424 mbedtls_svc_key_id_t password);
425
426psa_status_t psa_driver_wrapper_pake_set_user(
427 psa_pake_operation_t *operation,
428 const uint8_t *user_id,
429 size_t user_id_len);
430
431psa_status_t psa_driver_wrapper_pake_set_peer(
432 psa_pake_operation_t *operation,
433 const uint8_t *peer_id,
434 size_t peer_id_len);
435
436psa_status_t psa_driver_wrapper_pake_set_role(
437 psa_pake_operation_t *operation,
438 psa_pake_role_t role);
439
440psa_status_t psa_driver_wrapper_pake_output(
441 psa_pake_operation_t *operation,
442 psa_pake_step_t step,
443 uint8_t *output,
444 size_t output_size,
445 size_t *output_length);
446
447psa_status_t psa_driver_wrapper_pake_input(
448 psa_pake_operation_t *operation,
449 psa_pake_step_t step,
450 const uint8_t *input,
451 size_t input_length);
452
453psa_status_t psa_driver_wrapper_pake_get_implicit_key(
454 psa_pake_operation_t *operation,
455 psa_key_derivation_operation_t *output);
456
457psa_status_t psa_driver_wrapper_pake_abort(
458 psa_pake_operation_t *operation);
459
Steven Cooremancd84cb42020-07-16 20:28:36 +0200460#endif /* PSA_CRYPTO_DRIVER_WRAPPERS_H */
461
462/* End of automatically generated file. */