Loading...
Searching...
No Matches
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
18
19#ifdef __cplusplus
20extern "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)
32psa_status_t psa_location_dispatch_sign_hash( const psa_key_attributes_t *attributes,
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
45psa_status_t psa_location_dispatch_sign_message(const psa_key_attributes_t *attributes,
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
58psa_status_t psa_location_dispatch_verify_hash( const psa_key_attributes_t *attributes,
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
70psa_status_t psa_location_dispatch_verify_message(const psa_key_attributes_t *attributes,
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)
84psa_status_t psa_location_dispatch_mac_compute(const psa_key_attributes_t *attributes,
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
97psa_status_t psa_location_dispatch_mac_verify(const psa_key_attributes_t *attributes,
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
109psa_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
118psa_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
127psa_status_t psa_location_dispatch_mac_update(psa_mac_operation_t *operation,
128 const uint8_t *input,
129 size_t input_length);
130
135psa_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
144psa_status_t psa_location_dispatch_mac_verify_finish(psa_mac_operation_t *operation,
145 const uint8_t *mac,
146 size_t mac_length);
147
152psa_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)
160psa_status_t psa_location_dispatch_generate_key(const psa_key_attributes_t *attributes,
161 psa_key_slot_t *slot);
162
167psa_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)
177psa_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
186psa_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);
190
195psa_status_t psa_location_dispatch_cipher_set_iv( psa_cipher_operation_t *operation,
196 const uint8_t *iv,
197 size_t iv_length);
198
203psa_status_t psa_location_dispatch_cipher_encrypt( const psa_key_attributes_t *attributes,
204 psa_algorithm_t alg,
205 const psa_key_slot_t *slot,
206 const uint8_t *input,
207 size_t input_length,
208 uint8_t *output,
209 size_t output_size,
210 size_t *output_length);
211
216psa_status_t psa_location_dispatch_cipher_decrypt( const psa_key_attributes_t *attributes,
217 psa_algorithm_t alg,
218 const psa_key_slot_t *slot,
219 const uint8_t *input,
220 size_t input_length,
221 uint8_t *output,
222 size_t output_size,
223 size_t *output_length);
224#endif /* MODULE_PSA_CIPHER */
225
226#if IS_USED(MODULE_PSA_AEAD)
231psa_status_t psa_location_dispatch_aead_encrypt(const psa_key_attributes_t *attributes,
232 psa_algorithm_t alg,
233 const psa_key_slot_t *slot,
234 const uint8_t *nonce,
235 size_t nonce_length,
236 const uint8_t *additional_data,
237 size_t additional_data_length,
238 const uint8_t *plaintext,
239 size_t plaintext_length,
240 uint8_t *ciphertext,
241 size_t ciphertext_size,
242 size_t *ciphertext_length);
247psa_status_t psa_location_dispatch_aead_decrypt(const psa_key_attributes_t *attributes,
248 psa_algorithm_t alg,
249 const psa_key_slot_t *slot,
250 const uint8_t *nonce,
251 size_t nonce_length,
252 const uint8_t *additional_data,
253 size_t additional_data_length,
254 const uint8_t *ciphertext,
255 size_t ciphertext_length,
256 uint8_t *plaintext,
257 size_t plaintext_size,
258 size_t *plaintext_length);
259#endif /* MODULE_PSA_AEAD */
260
266 size_t output_size);
267
268#ifdef __cplusplus
269}
270#endif
271
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition algorithm.h:35
struct psa_key_attributes_s psa_key_attributes_t
The type of an object containing key attributes.
Definition attributes.h:157
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:37
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:125
struct psa_mac_operation_s psa_mac_operation_t
The type of the state object for multi-part MAC operations.
Definition types.h:63