Loading...
Searching...
No Matches
psa_crypto_algorithm_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_KEY_MANAGEMENT)
29#endif
30
31#if IS_USED(MODULE_PSA_HASH)
36psa_status_t psa_algorithm_dispatch_hash_setup(psa_hash_operation_t *operation,
37 psa_algorithm_t alg);
38
43psa_status_t psa_algorithm_dispatch_hash_update(psa_hash_operation_t *operation,
44 const uint8_t *input,
45 size_t input_length);
46
51psa_status_t psa_algorithm_dispatch_hash_finish(psa_hash_operation_t *operation,
52 uint8_t *hash,
53 size_t hash_size,
54 size_t *hash_length);
55#endif /* MODULE_PSA_HASH */
56
57#if IS_USED(MODULE_PSA_ASYMMETRIC)
62psa_status_t psa_algorithm_dispatch_sign_hash( const psa_key_attributes_t *attributes,
64 const psa_key_slot_t *slot,
65 const uint8_t *hash,
66 size_t hash_length,
67 uint8_t *signature,
68 size_t signature_size,
69 size_t *signature_length);
70
75psa_status_t psa_algorithm_dispatch_sign_message(const psa_key_attributes_t *attributes,
77 const psa_key_slot_t *slot,
78 const uint8_t *input,
79 size_t input_length,
80 uint8_t *signature,
81 size_t signature_size,
82 size_t *signature_length);
83
88psa_status_t psa_algorithm_dispatch_verify_hash( const psa_key_attributes_t *attributes,
90 const psa_key_slot_t *slot,
91 const uint8_t *hash,
92 size_t hash_length,
93 const uint8_t *signature,
94 size_t signature_length);
95
100psa_status_t psa_algorithm_dispatch_verify_message( 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 *signature,
106 size_t signature_length);
107#endif /* MODULE_PSA_ASYMMETRIC */
108
109#if IS_USED(MODULE_PSA_KEY_MANAGEMENT)
114psa_status_t psa_algorithm_dispatch_generate_key( const psa_key_attributes_t *attributes,
115 psa_key_slot_t *slot);
116
121psa_status_t psa_algorithm_dispatch_import_key(const psa_key_attributes_t *attributes,
122 const uint8_t *data, size_t data_length,
123 psa_key_slot_t *slot, size_t *bits);
124#endif
125
126#if IS_USED(MODULE_PSA_CIPHER)
131psa_status_t psa_algorithm_dispatch_cipher_encrypt( const psa_key_attributes_t *attributes,
132 psa_algorithm_t alg,
133 const psa_key_slot_t *slot,
134 const uint8_t *input,
135 size_t input_length,
136 uint8_t *output,
137 size_t output_size,
138 size_t *output_length);
139
144psa_status_t psa_algorithm_dispatch_cipher_decrypt( const psa_key_attributes_t *attributes,
145 psa_algorithm_t alg,
146 const psa_key_slot_t *slot,
147 const uint8_t *input,
148 size_t input_length,
149 uint8_t *output,
150 size_t output_size,
151 size_t *output_length);
152#endif /* MODULE_PSA_CIPHER */
153
154#if IS_USED(MODULE_PSA_AEAD)
159psa_status_t psa_algorithm_dispatch_aead_encrypt( const psa_key_attributes_t *attributes,
160 psa_algorithm_t alg,
161 const psa_key_slot_t *slot,
162 const uint8_t *nonce,
163 size_t nonce_length,
164 const uint8_t *additional_data,
165 size_t additional_data_length,
166 const uint8_t *plaintext,
167 size_t plaintext_length,
168 uint8_t *ciphertext,
169 size_t ciphertext_size,
170 size_t *ciphertext_length);
171
176psa_status_t psa_algorithm_dispatch_aead_decrypt( const psa_key_attributes_t *attributes,
177 psa_algorithm_t alg,
178 const psa_key_slot_t *slot,
179 const uint8_t *nonce,
180 size_t nonce_length,
181 const uint8_t *additional_data,
182 size_t additional_data_length,
183 const uint8_t *ciphertext,
184 size_t ciphertext_length,
185 uint8_t *plaintext,
186 size_t plaintext_size,
187 size_t *plaintext_length);
188#endif /* MODULE_PSA_AEAD */
189
190#if IS_USED(MODULE_PSA_MAC)
195psa_status_t psa_algorithm_dispatch_mac_compute(const psa_key_attributes_t *attributes,
196 psa_algorithm_t alg,
197 const psa_key_slot_t *slot,
198 const uint8_t *input,
199 size_t input_length,
200 uint8_t *mac,
201 size_t mac_size,
202 size_t *mac_length);
203
208psa_status_t psa_algorithm_dispatch_mac_verify(const psa_key_attributes_t *attributes,
209 psa_algorithm_t alg,
210 const psa_key_slot_t *slot,
211 const uint8_t *input,
212 size_t input_length,
213 const uint8_t *mac,
214 size_t mac_length);
215
220psa_status_t psa_algorithm_dispatch_mac_sign_setup(psa_mac_operation_t *operation,
221 const psa_key_attributes_t *attributes,
222 const psa_key_slot_t *slot,
223 psa_algorithm_t alg);
224
229psa_status_t psa_algorithm_dispatch_mac_verify_setup(psa_mac_operation_t *operation,
230 const psa_key_attributes_t *attributes,
231 const psa_key_slot_t *slot,
232 psa_algorithm_t alg);
233
238psa_status_t psa_algorithm_dispatch_mac_update(psa_mac_operation_t *operation,
239 const uint8_t *input,
240 size_t input_length);
241
246psa_status_t psa_algorithm_dispatch_mac_sign_finish(psa_mac_operation_t *operation,
247 uint8_t *mac,
248 size_t mac_size,
249 size_t *mac_length);
250
255psa_status_t psa_algorithm_dispatch_mac_verify_finish(psa_mac_operation_t *operation,
256 const uint8_t *mac,
257 size_t mac_length);
258
263psa_status_t psa_algorithm_dispatch_mac_abort(psa_mac_operation_t *operation);
264#endif /* MODULE_PSA_MAC */
265
266#ifdef __cplusplus
267}
268#endif
269
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.
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
PSA key slot management function declarations.
Structure of a virtual key slot in local memory.
struct psa_hash_operation_s psa_hash_operation_t
The type of the state data structure for multipart hash operations.
Definition types.h:119
struct psa_mac_operation_s psa_mac_operation_t
The type of the state object for multi-part MAC operations.
Definition types.h:63