psa_ciphers.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 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 #include "psa/crypto.h"
24 #include "psa/crypto_contexts.h"
25 
26 #if IS_USED(MODULE_PSA_CIPHER_AES_128_CBC) || defined(DOXYGEN)
32  const uint8_t *key_buffer,
33  size_t key_buffer_size,
34  psa_algorithm_t alg,
35  const uint8_t *input,
36  size_t input_length,
37  uint8_t *output,
38  size_t output_size,
39  size_t *output_length);
40 
46  const uint8_t *key_buffer,
47  size_t key_buffer_size,
48  psa_algorithm_t alg,
49  const uint8_t *input,
50  size_t input_length,
51  uint8_t *output,
52  size_t output_size,
53  size_t *output_length);
54 #endif /* MODULE_PSA_CIPHER_AES_128_CBC */
55 
56 #if IS_USED(MODULE_PSA_CIPHER_AES_192_CBC) || defined(DOXYGEN)
62  const uint8_t *key_buffer,
63  size_t key_buffer_size,
64  psa_algorithm_t alg,
65  const uint8_t *input,
66  size_t input_length,
67  uint8_t *output,
68  size_t output_size,
69  size_t *output_length);
70 #endif /* MODULE_PSA_CIPHER_AES_192_CBC */
71 
72 #if IS_USED(MODULE_PSA_CIPHER_AES_256_CBC) || defined(DOXYGEN)
78  const uint8_t *key_buffer,
79  size_t key_buffer_size,
80  psa_algorithm_t alg,
81  const uint8_t *input,
82  size_t input_length,
83  uint8_t *output,
84  size_t output_size,
85  size_t *output_length);
86 #endif /* MODULE_PSA_CIPHER_AES_256_CBC */
87 
88 #if IS_USED(MODULE_PSA_CIPHER_CHACHA20) || defined(DOXYGEN)
89 
99  uint8_t *key_data,
100  size_t key_length);
101 
111  uint8_t *key_data,
112  size_t key_length);
113 
132  const uint8_t *iv,
133  size_t iv_length);
134 
149  const uint8_t *input,
150  size_t input_length,
151  uint8_t *output,
152  size_t output_size,
153  size_t *output_length);
154 
167  uint8_t *output,
168  size_t output_size,
169  size_t *output_length);
170 
185  size_t key_buffer_size,
186  const uint8_t *input,
187  size_t input_length,
188  uint8_t *output,
189  size_t output_size,
190  size_t *output_length);
191 
206  size_t key_buffer_size,
207  const uint8_t *input,
208  size_t input_length,
209  uint8_t *output,
210  size_t output_size,
211  size_t *output_length);
212 
213 #endif /* MODULE_PSA_CIPHER_CHACHA20 */
214 #ifdef __cplusplus
215 }
216 #endif
217 
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition: algorithm.h:38
Function declarations for PSA Crypto.
Context definitions for PSA Crypto.
psa_status_t psa_cipher_chacha20_decrypt(uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
Low level wrapper function to call a driver for ChaCha20 decryption.
psa_status_t psa_cipher_chacha20_encrypt(uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
Low level wrapper function to call a driver for ChaCha20 encryption/decryption.
psa_status_t psa_cipher_cbc_aes_192_encrypt(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
Low level wrapper function to call a driver for an AES 192 CBC encryption.
psa_status_t psa_cipher_chacha20_decrypt_setup(psa_cipher_chacha20_ctx_t *ctx, uint8_t *key_data, size_t key_length)
ChaCha20 setup function.
psa_status_t psa_cipher_chacha20_encrypt_setup(psa_cipher_chacha20_ctx_t *ctx, uint8_t *key_data, size_t key_length)
ChaCha20 setup function.
psa_status_t psa_cipher_chacha20_set_iv(psa_cipher_chacha20_ctx_t *ctx, const uint8_t *iv, size_t iv_length)
ChaCha20 set nonce and initial counter function.
psa_status_t psa_cipher_cbc_aes_128_encrypt(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
Low level wrapper function to call a driver for an AES 128 CBC encryption.
psa_status_t psa_cipher_chacha20_update(psa_cipher_chacha20_ctx_t *ctx, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
ChaCha20 update function, encrypting/decrypting aligned blocks.
psa_status_t psa_cipher_chacha20_finish(psa_cipher_chacha20_ctx_t *ctx, uint8_t *output, size_t output_size, size_t *output_length)
ChaCha20 finish function.
psa_status_t psa_cipher_cbc_aes_128_decrypt(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
Low level wrapper function to call a driver for an AES 128 CBC decryption.
psa_status_t psa_cipher_cbc_aes_256_encrypt(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
Low level wrapper function to call a driver for an AES 256 CBC encryption.
int32_t psa_status_t
Status code type used for all PSA Certified APIs.
Definition: error.h:40
This struct is used to handle the discontinuity between the PSA API and the CRYS ChaCha20 API.
Structure storing key attributes.
Definition: attributes.h:51