psa_crypto_location_dispatch.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 HAW Hamburg
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #include <stdlib.h>
27 #include "kernel_defines.h"
28 #include "psa/crypto.h"
29 
30 #if IS_USED(MODULE_PSA_ASYMMETRIC)
35 psa_status_t psa_location_dispatch_sign_hash( const psa_key_attributes_t *attributes,
36  psa_algorithm_t alg,
37  const psa_key_slot_t *slot,
38  const uint8_t *hash,
39  size_t hash_length,
40  uint8_t *signature,
41  size_t signature_size,
42  size_t *signature_length);
43 
48 psa_status_t psa_location_dispatch_sign_message(const psa_key_attributes_t *attributes,
49  psa_algorithm_t alg,
50  const psa_key_slot_t *slot,
51  const uint8_t *input,
52  size_t input_length,
53  uint8_t *signature,
54  size_t signature_size,
55  size_t *signature_length);
56 
61 psa_status_t psa_location_dispatch_verify_hash( const psa_key_attributes_t *attributes,
62  psa_algorithm_t alg,
63  const psa_key_slot_t *slot,
64  const uint8_t *hash,
65  size_t hash_length,
66  const uint8_t *signature,
67  size_t signature_length);
68 
73 psa_status_t psa_location_dispatch_verify_message(const psa_key_attributes_t *attributes,
74  psa_algorithm_t alg,
75  const psa_key_slot_t *slot,
76  const uint8_t *input,
77  size_t input_length,
78  const uint8_t *signature,
79  size_t signature_length);
80 #endif /* MODULE_PSA_ASYMMETRIC */
81 
82 #if IS_USED(MODULE_PSA_MAC)
87 psa_status_t psa_location_dispatch_mac_compute(const psa_key_attributes_t *attributes,
88  psa_algorithm_t alg,
89  const psa_key_slot_t *slot,
90  const uint8_t *input,
91  size_t input_length,
92  uint8_t *mac,
93  size_t mac_size,
94  size_t *mac_length);
95 
100 psa_status_t psa_location_dispatch_mac_verify(const psa_key_attributes_t *attributes,
101  psa_algorithm_t alg,
102  const psa_key_slot_t *slot,
103  const uint8_t *input,
104  size_t input_length,
105  const uint8_t *mac,
106  size_t mac_length);
107 
112 psa_status_t psa_location_dispatch_mac_sign_setup(psa_mac_operation_t *operation,
113  const psa_key_attributes_t *attributes,
114  const psa_key_slot_t *slot,
115  psa_algorithm_t alg);
116 
121 psa_status_t psa_location_dispatch_mac_verify_setup(psa_mac_operation_t *operation,
122  const psa_key_attributes_t *attributes,
123  const psa_key_slot_t *slot,
124  psa_algorithm_t alg);
125 
130 psa_status_t psa_location_dispatch_mac_update(psa_mac_operation_t *operation,
131  const uint8_t *input,
132  size_t input_length);
133 
138 psa_status_t psa_location_dispatch_mac_sign_finish(psa_mac_operation_t *operation,
139  uint8_t *mac,
140  size_t mac_size,
141  size_t *mac_length);
142 
147 psa_status_t psa_location_dispatch_mac_verify_finish(psa_mac_operation_t *operation,
148  const uint8_t *mac,
149  size_t mac_length);
150 
155 psa_status_t psa_location_dispatch_mac_abort(psa_mac_operation_t *operation);
156 #endif /* MODULE_PSA_MAC */
157 
158 #if IS_USED(MODULE_PSA_KEY_MANAGEMENT)
163 psa_status_t psa_location_dispatch_generate_key(const psa_key_attributes_t *attributes,
164  psa_key_slot_t *slot);
165 
170 psa_status_t psa_location_dispatch_import_key( const psa_key_attributes_t *attributes,
171  const uint8_t *data, size_t data_length,
172  psa_key_slot_t *slot, size_t *bits);
173 #endif /* MODULE_PSA_KEY_MANAGEMENT */
174 
175 #if IS_USED(MODULE_PSA_CIPHER)
180 psa_status_t psa_location_dispatch_cipher_encrypt_setup( psa_cipher_operation_t *operation,
181  const psa_key_attributes_t *attributes,
182  const psa_key_slot_t *slot,
183  psa_algorithm_t alg);
184 
189 psa_status_t psa_location_dispatch_cipher_decrypt_setup(psa_cipher_operation_t *operation,
190  const psa_key_attributes_t *attributes,
191  const psa_key_slot_t *slot,
192  psa_algorithm_t alg);
193 
198 psa_status_t psa_location_dispatch_cipher_set_iv( psa_cipher_operation_t *operation,
199  const uint8_t *iv,
200  size_t iv_length);
201 
206 psa_status_t psa_location_dispatch_cipher_encrypt( const psa_key_attributes_t *attributes,
207  psa_algorithm_t alg,
208  const psa_key_slot_t *slot,
209  const uint8_t *input,
210  size_t input_length,
211  uint8_t *output,
212  size_t output_size,
213  size_t *output_length);
214 
219 psa_status_t psa_location_dispatch_cipher_decrypt( const psa_key_attributes_t *attributes,
220  psa_algorithm_t alg,
221  const psa_key_slot_t *slot,
222  const uint8_t *input,
223  size_t input_length,
224  uint8_t *output,
225  size_t output_size,
226  size_t *output_length);
227 #endif /* MODULE_PSA_CIPHER */
228 
229 #if IS_USED(MODULE_PSA_AEAD)
234 psa_status_t psa_location_dispatch_aead_encrypt(const psa_key_attributes_t *attributes,
235  psa_algorithm_t alg,
236  const psa_key_slot_t *slot,
237  const uint8_t *nonce,
238  size_t nonce_length,
239  const uint8_t *additional_data,
240  size_t additional_data_length,
241  const uint8_t *plaintext,
242  size_t plaintext_length,
243  uint8_t *ciphertext,
244  size_t ciphertext_size,
245  size_t *ciphertext_length);
250 psa_status_t psa_location_dispatch_aead_decrypt(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 *ciphertext,
258  size_t ciphertext_length,
259  uint8_t *plaintext,
260  size_t plaintext_size,
261  size_t *plaintext_length);
262 #endif /* MODULE_PSA_AEAD */
263 
269  size_t output_size);
270 
271 #ifdef __cplusplus
272 }
273 #endif
274 
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:84
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