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 #endif
96 
97 #if IS_USED(MODULE_PSA_KEY_MANAGEMENT)
102 psa_status_t psa_location_dispatch_generate_key(const psa_key_attributes_t *attributes,
103  psa_key_slot_t *slot);
104 
109 psa_status_t psa_location_dispatch_import_key( const psa_key_attributes_t *attributes,
110  const uint8_t *data, size_t data_length,
111  psa_key_slot_t *slot, size_t *bits);
112 #endif /* MODULE_PSA_KEY_MANAGEMENT */
113 
114 #if IS_USED(MODULE_PSA_CIPHER)
119 psa_status_t psa_location_dispatch_cipher_encrypt_setup( psa_cipher_operation_t *operation,
120  const psa_key_attributes_t *attributes,
121  const psa_key_slot_t *slot,
122  psa_algorithm_t alg);
123 
128 psa_status_t psa_location_dispatch_cipher_decrypt_setup(psa_cipher_operation_t *operation,
129  const psa_key_attributes_t *attributes,
130  const psa_key_slot_t *slot,
131  psa_algorithm_t alg);
132 
137 psa_status_t psa_location_dispatch_cipher_set_iv( psa_cipher_operation_t *operation,
138  const uint8_t *iv,
139  size_t iv_length);
140 
145 psa_status_t psa_location_dispatch_cipher_encrypt( const psa_key_attributes_t *attributes,
146  psa_algorithm_t alg,
147  const psa_key_slot_t *slot,
148  const uint8_t *input,
149  size_t input_length,
150  uint8_t *output,
151  size_t output_size,
152  size_t *output_length);
153 
158 psa_status_t psa_location_dispatch_cipher_decrypt( const psa_key_attributes_t *attributes,
159  psa_algorithm_t alg,
160  const psa_key_slot_t *slot,
161  const uint8_t *input,
162  size_t input_length,
163  uint8_t *output,
164  size_t output_size,
165  size_t *output_length);
166 #endif /* MODULE_PSA_CIPHER */
167 
168 #if IS_USED(MODULE_PSA_AEAD)
173 psa_status_t psa_location_dispatch_aead_encrypt(const psa_key_attributes_t *attributes,
174  psa_algorithm_t alg,
175  const psa_key_slot_t *slot,
176  const uint8_t *nonce,
177  size_t nonce_length,
178  const uint8_t *additional_data,
179  size_t additional_data_length,
180  const uint8_t *plaintext,
181  size_t plaintext_length,
182  uint8_t *ciphertext,
183  size_t ciphertext_size,
184  size_t *ciphertext_length);
189 psa_status_t psa_location_dispatch_aead_decrypt(const psa_key_attributes_t *attributes,
190  psa_algorithm_t alg,
191  const psa_key_slot_t *slot,
192  const uint8_t *nonce,
193  size_t nonce_length,
194  const uint8_t *additional_data,
195  size_t additional_data_length,
196  const uint8_t *ciphertext,
197  size_t ciphertext_length,
198  uint8_t *plaintext,
199  size_t plaintext_size,
200  size_t *plaintext_length);
201 #endif /* MODULE_PSA_AEAD */
202 
208  size_t output_size);
209 
210 #ifdef __cplusplus
211 }
212 #endif
213 
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.