psa_crypto_location_dispatch.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2021 HAW Hamburg
3  * SPDX-License-Identifier: LGPL-2.1-only
4  */
5 
6 #pragma once
7 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 #include <stdlib.h>
24 #include "kernel_defines.h"
25 #include "psa/crypto.h"
26 
27 #if IS_USED(MODULE_PSA_ASYMMETRIC)
32 psa_status_t psa_location_dispatch_sign_hash( const psa_key_attributes_t *attributes,
33  psa_algorithm_t alg,
34  const psa_key_slot_t *slot,
35  const uint8_t *hash,
36  size_t hash_length,
37  uint8_t *signature,
38  size_t signature_size,
39  size_t *signature_length);
40 
45 psa_status_t psa_location_dispatch_sign_message(const psa_key_attributes_t *attributes,
46  psa_algorithm_t alg,
47  const psa_key_slot_t *slot,
48  const uint8_t *input,
49  size_t input_length,
50  uint8_t *signature,
51  size_t signature_size,
52  size_t *signature_length);
53 
58 psa_status_t psa_location_dispatch_verify_hash( const psa_key_attributes_t *attributes,
59  psa_algorithm_t alg,
60  const psa_key_slot_t *slot,
61  const uint8_t *hash,
62  size_t hash_length,
63  const uint8_t *signature,
64  size_t signature_length);
65 
70 psa_status_t psa_location_dispatch_verify_message(const psa_key_attributes_t *attributes,
71  psa_algorithm_t alg,
72  const psa_key_slot_t *slot,
73  const uint8_t *input,
74  size_t input_length,
75  const uint8_t *signature,
76  size_t signature_length);
77 #endif /* MODULE_PSA_ASYMMETRIC */
78 
79 #if IS_USED(MODULE_PSA_MAC)
84 psa_status_t psa_location_dispatch_mac_compute(const psa_key_attributes_t *attributes,
85  psa_algorithm_t alg,
86  const psa_key_slot_t *slot,
87  const uint8_t *input,
88  size_t input_length,
89  uint8_t *mac,
90  size_t mac_size,
91  size_t *mac_length);
92 
97 psa_status_t psa_location_dispatch_mac_verify(const psa_key_attributes_t *attributes,
98  psa_algorithm_t alg,
99  const psa_key_slot_t *slot,
100  const uint8_t *input,
101  size_t input_length,
102  const uint8_t *mac,
103  size_t mac_length);
104 
109 psa_status_t psa_location_dispatch_mac_sign_setup(psa_mac_operation_t *operation,
110  const psa_key_attributes_t *attributes,
111  const psa_key_slot_t *slot,
112  psa_algorithm_t alg);
113 
118 psa_status_t psa_location_dispatch_mac_verify_setup(psa_mac_operation_t *operation,
119  const psa_key_attributes_t *attributes,
120  const psa_key_slot_t *slot,
121  psa_algorithm_t alg);
122 
127 psa_status_t psa_location_dispatch_mac_update(psa_mac_operation_t *operation,
128  const uint8_t *input,
129  size_t input_length);
130 
135 psa_status_t psa_location_dispatch_mac_sign_finish(psa_mac_operation_t *operation,
136  uint8_t *mac,
137  size_t mac_size,
138  size_t *mac_length);
139 
144 psa_status_t psa_location_dispatch_mac_verify_finish(psa_mac_operation_t *operation,
145  const uint8_t *mac,
146  size_t mac_length);
147 
152 psa_status_t psa_location_dispatch_mac_abort(psa_mac_operation_t *operation);
153 #endif /* MODULE_PSA_MAC */
154 
155 #if IS_USED(MODULE_PSA_KEY_MANAGEMENT)
160 psa_status_t psa_location_dispatch_generate_key(const psa_key_attributes_t *attributes,
161  psa_key_slot_t *slot);
162 
167 psa_status_t psa_location_dispatch_import_key( const psa_key_attributes_t *attributes,
168  const uint8_t *data, size_t data_length,
169  psa_key_slot_t *slot, size_t *bits);
170 #endif /* MODULE_PSA_KEY_MANAGEMENT */
171 
172 #if IS_USED(MODULE_PSA_CIPHER)
177 psa_status_t psa_location_dispatch_cipher_encrypt_setup( psa_cipher_operation_t *operation,
178  const psa_key_attributes_t *attributes,
179  const psa_key_slot_t *slot,
180  psa_algorithm_t alg);
181 
186 psa_status_t psa_location_dispatch_cipher_decrypt_setup(psa_cipher_operation_t *operation,
187  const psa_key_attributes_t *attributes,
188  const psa_key_slot_t *slot,
189  psa_algorithm_t alg);
194 psa_status_t psa_location_dispatch_cipher_finish( psa_cipher_operation_t *operation,
195  uint8_t *output,
196  size_t output_size,
197  size_t *output_length);
198 
203 psa_status_t psa_location_dispatch_cipher_update( psa_cipher_operation_t *operation,
204  const uint8_t *input,
205  size_t input_length,
206  uint8_t *output,
207  size_t output_size,
208  size_t *output_length);
209 
214 psa_status_t psa_location_dispatch_cipher_set_iv( psa_cipher_operation_t *operation,
215  const uint8_t *iv,
216  size_t iv_length);
217 
222 psa_status_t psa_location_dispatch_cipher_encrypt( const psa_key_attributes_t *attributes,
223  psa_algorithm_t alg,
224  const psa_key_slot_t *slot,
225  const uint8_t *input,
226  size_t input_length,
227  uint8_t *output,
228  size_t output_size,
229  size_t *output_length);
230 
235 psa_status_t psa_location_dispatch_cipher_decrypt( const psa_key_attributes_t *attributes,
236  psa_algorithm_t alg,
237  const psa_key_slot_t *slot,
238  const uint8_t *input,
239  size_t input_length,
240  uint8_t *output,
241  size_t output_size,
242  size_t *output_length);
243 #endif /* MODULE_PSA_CIPHER */
244 
245 #if IS_USED(MODULE_PSA_AEAD)
250 psa_status_t psa_location_dispatch_aead_encrypt(const psa_key_attributes_t *attributes,
251  psa_algorithm_t alg,
252  const psa_key_slot_t *slot,
253  const uint8_t *nonce,
254  size_t nonce_length,
255  const uint8_t *additional_data,
256  size_t additional_data_length,
257  const uint8_t *plaintext,
258  size_t plaintext_length,
259  uint8_t *ciphertext,
260  size_t ciphertext_size,
261  size_t *ciphertext_length);
266 psa_status_t psa_location_dispatch_aead_decrypt(const psa_key_attributes_t *attributes,
267  psa_algorithm_t alg,
268  const psa_key_slot_t *slot,
269  const uint8_t *nonce,
270  size_t nonce_length,
271  const uint8_t *additional_data,
272  size_t additional_data_length,
273  const uint8_t *ciphertext,
274  size_t ciphertext_length,
275  uint8_t *plaintext,
276  size_t plaintext_size,
277  size_t *plaintext_length);
278 #endif /* MODULE_PSA_AEAD */
279 
285  size_t output_size);
286 
287 #ifdef __cplusplus
288 }
289 #endif
290 
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition: algorithm.h:38
Function declarations for PSA Crypto.
psa_status_t psa_location_dispatch_generate_random(uint8_t *output, size_t output_size)
Dispatch call of a random number generator to a specific backend.
Common macros and compiler attributes/pragmas configuration.
int32_t psa_status_t
Status code type used for all PSA Certified APIs.
Definition: error.h:40
Structure storing a cipher operation context.
Definition: types.h:93
Structure storing key attributes.
Definition: attributes.h:51
Structure of a virtual key slot in local memory.
Structure containing a MAC operation context.
Definition: types.h:33