Loading...
Searching...
No Matches
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
21
22#ifdef __cplusplus
23extern "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)
35psa_status_t psa_location_dispatch_sign_hash( const psa_key_attributes_t *attributes,
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
48psa_status_t psa_location_dispatch_sign_message(const psa_key_attributes_t *attributes,
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
61psa_status_t psa_location_dispatch_verify_hash( const psa_key_attributes_t *attributes,
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
73psa_status_t psa_location_dispatch_verify_message(const psa_key_attributes_t *attributes,
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)
87psa_status_t psa_location_dispatch_mac_compute(const psa_key_attributes_t *attributes,
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
100psa_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
112psa_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
121psa_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
130psa_status_t psa_location_dispatch_mac_update(psa_mac_operation_t *operation,
131 const uint8_t *input,
132 size_t input_length);
133
138psa_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
147psa_status_t psa_location_dispatch_mac_verify_finish(psa_mac_operation_t *operation,
148 const uint8_t *mac,
149 size_t mac_length);
150
155psa_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)
163psa_status_t psa_location_dispatch_generate_key(const psa_key_attributes_t *attributes,
164 psa_key_slot_t *slot);
165
170psa_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)
180psa_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
189psa_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
198psa_status_t psa_location_dispatch_cipher_set_iv( psa_cipher_operation_t *operation,
199 const uint8_t *iv,
200 size_t iv_length);
201
206psa_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
219psa_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)
234psa_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);
250psa_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
struct psa_key_attributes_s psa_key_attributes_t
The type of an object containing key attributes.
Definition attributes.h:160
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 of a virtual key slot in local memory.
struct psa_cipher_operation_s psa_cipher_operation_t
The type of the state object for multi-part cipher operations.
Definition types.h:128
struct psa_mac_operation_s psa_mac_operation_t
The type of the state object for multi-part MAC operations.
Definition types.h:66