Mbed TLS v3.5.2
Loading...
Searching...
No Matches
crypto.h
Go to the documentation of this file.
1
5/*
6 * Copyright The Mbed TLS Contributors
7 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
8 */
9
10#ifndef PSA_CRYPTO_H
11#define PSA_CRYPTO_H
12
13#if defined(MBEDTLS_PSA_CRYPTO_PLATFORM_FILE)
14#include MBEDTLS_PSA_CRYPTO_PLATFORM_FILE
15#else
16#include "crypto_platform.h"
17#endif
18
19#include <stddef.h>
20
21#ifdef __DOXYGEN_ONLY__
22/* This __DOXYGEN_ONLY__ block contains mock definitions for things that
23 * must be defined in the crypto_platform.h header. These mock definitions
24 * are present in this file as a convenience to generate pretty-printed
25 * documentation that includes those definitions. */
26
32#endif /* __DOXYGEN_ONLY__ */
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
38/* The file "crypto_types.h" declares types that encode errors,
39 * algorithms, key types, policies, etc. */
40#include "crypto_types.h"
41
49#define PSA_CRYPTO_API_VERSION_MAJOR 1
50
54#define PSA_CRYPTO_API_VERSION_MINOR 0
55
58/* The file "crypto_values.h" declares macros to build and analyze values
59 * of integral types defined in "crypto_types.h". */
60#include "crypto_values.h"
61
95
111
132static void psa_set_key_id(psa_key_attributes_t *attributes,
134
135#ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
150static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes,
151 mbedtls_key_owner_id_t owner);
152#endif
153
180 psa_key_lifetime_t lifetime);
181
195 const psa_key_attributes_t *attributes);
196
208 const psa_key_attributes_t *attributes);
209
227 psa_key_usage_t usage_flags);
228
240 const psa_key_attributes_t *attributes);
241
273 psa_algorithm_t alg);
274
275
287 const psa_key_attributes_t *attributes);
288
304 psa_key_type_t type);
305
306
322 size_t bits);
323
335
346static size_t psa_get_key_bits(const psa_key_attributes_t *attributes);
347
377 psa_key_attributes_t *attributes);
378
392
421
511 const psa_key_attributes_t *attributes,
512 mbedtls_svc_key_id_t *target_key);
513
514
561
640 const uint8_t *data,
641 size_t data_length,
643
644
645
735 uint8_t *data,
736 size_t data_size,
737 size_t *data_length);
738
810 uint8_t *data,
811 size_t data_size,
812 size_t *data_length);
813
814
815
854 const uint8_t *input,
855 size_t input_length,
856 uint8_t *hash,
857 size_t hash_size,
858 size_t *hash_length);
859
889 const uint8_t *input,
890 size_t input_length,
891 const uint8_t *hash,
892 size_t hash_length);
893
923
933
983 psa_algorithm_t alg);
984
1009 const uint8_t *input,
1010 size_t input_length);
1011
1055 uint8_t *hash,
1056 size_t hash_size,
1057 size_t *hash_length);
1058
1096 const uint8_t *hash,
1097 size_t hash_length);
1098
1125
1154 psa_hash_operation_t *target_operation);
1155
1205 psa_algorithm_t alg,
1206 const uint8_t *input,
1207 size_t input_length,
1208 uint8_t *mac,
1209 size_t mac_size,
1210 size_t *mac_length);
1211
1246 psa_algorithm_t alg,
1247 const uint8_t *input,
1248 size_t input_length,
1249 const uint8_t *mac,
1250 size_t mac_length);
1251
1282
1292
1353 psa_algorithm_t alg);
1354
1415 psa_algorithm_t alg);
1416
1444 const uint8_t *input,
1445 size_t input_length);
1446
1493 uint8_t *mac,
1494 size_t mac_size,
1495 size_t *mac_length);
1496
1536 const uint8_t *mac,
1537 size_t mac_length);
1538
1565
1612 psa_algorithm_t alg,
1613 const uint8_t *input,
1614 size_t input_length,
1615 uint8_t *output,
1616 size_t output_size,
1617 size_t *output_length);
1618
1659 psa_algorithm_t alg,
1660 const uint8_t *input,
1661 size_t input_length,
1662 uint8_t *output,
1663 size_t output_size,
1664 size_t *output_length);
1665
1695
1705
1767 psa_algorithm_t alg);
1768
1830 psa_algorithm_t alg);
1831
1867 uint8_t *iv,
1868 size_t iv_size,
1869 size_t *iv_length);
1870
1908 const uint8_t *iv,
1909 size_t iv_length);
1910
1949 const uint8_t *input,
1950 size_t input_length,
1951 uint8_t *output,
1952 size_t output_size,
1953 size_t *output_length);
1954
2001 uint8_t *output,
2002 size_t output_size,
2003 size_t *output_length);
2004
2031
2100 psa_algorithm_t alg,
2101 const uint8_t *nonce,
2102 size_t nonce_length,
2103 const uint8_t *additional_data,
2104 size_t additional_data_length,
2105 const uint8_t *plaintext,
2106 size_t plaintext_length,
2107 uint8_t *ciphertext,
2108 size_t ciphertext_size,
2109 size_t *ciphertext_length);
2110
2173 psa_algorithm_t alg,
2174 const uint8_t *nonce,
2175 size_t nonce_length,
2176 const uint8_t *additional_data,
2177 size_t additional_data_length,
2178 const uint8_t *ciphertext,
2179 size_t ciphertext_length,
2180 uint8_t *plaintext,
2181 size_t plaintext_size,
2182 size_t *plaintext_length);
2183
2213
2223
2292 psa_algorithm_t alg);
2293
2358 psa_algorithm_t alg);
2359
2396 uint8_t *nonce,
2397 size_t nonce_size,
2398 size_t *nonce_length);
2399
2436 const uint8_t *nonce,
2437 size_t nonce_length);
2438
2481 size_t ad_length,
2482 size_t plaintext_length);
2483
2529 const uint8_t *input,
2530 size_t input_length);
2531
2613 const uint8_t *input,
2614 size_t input_length,
2615 uint8_t *output,
2616 size_t output_size,
2617 size_t *output_length);
2618
2699 uint8_t *ciphertext,
2700 size_t ciphertext_size,
2701 size_t *ciphertext_length,
2702 uint8_t *tag,
2703 size_t tag_size,
2704 size_t *tag_length);
2705
2782 uint8_t *plaintext,
2783 size_t plaintext_size,
2784 size_t *plaintext_length,
2785 const uint8_t *tag,
2786 size_t tag_length);
2787
2814
2880 psa_algorithm_t alg,
2881 const uint8_t *input,
2882 size_t input_length,
2883 uint8_t *signature,
2884 size_t signature_size,
2885 size_t *signature_length);
2886
2932 psa_algorithm_t alg,
2933 const uint8_t *input,
2934 size_t input_length,
2935 const uint8_t *signature,
2936 size_t signature_length);
2937
2985 psa_algorithm_t alg,
2986 const uint8_t *hash,
2987 size_t hash_length,
2988 uint8_t *signature,
2989 size_t signature_size,
2990 size_t *signature_length);
2991
3036 psa_algorithm_t alg,
3037 const uint8_t *hash,
3038 size_t hash_length,
3039 const uint8_t *signature,
3040 size_t signature_length);
3041
3094 psa_algorithm_t alg,
3095 const uint8_t *input,
3096 size_t input_length,
3097 const uint8_t *salt,
3098 size_t salt_length,
3099 uint8_t *output,
3100 size_t output_size,
3101 size_t *output_length);
3102
3155 psa_algorithm_t alg,
3156 const uint8_t *input,
3157 size_t input_length,
3158 const uint8_t *salt,
3159 size_t salt_length,
3160 uint8_t *output,
3161 size_t output_size,
3162 size_t *output_length);
3163
3200
3210
3271 psa_algorithm_t alg);
3272
3293 const psa_key_derivation_operation_t *operation,
3294 size_t *capacity);
3295
3322 size_t capacity);
3323
3331#define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t) (-1))
3332
3376 const uint8_t *data,
3377 size_t data_length);
3378
3419 uint64_t value);
3420
3487
3554 mbedtls_svc_key_id_t private_key,
3555 const uint8_t *peer_key,
3556 size_t peer_key_length);
3557
3600 uint8_t *output,
3601 size_t output_length);
3602
3749 const psa_key_attributes_t *attributes,
3752
3808 const uint8_t *expected_output,
3809 size_t output_length);
3810
3872 psa_key_id_t expected);
3873
3899
3951 mbedtls_svc_key_id_t private_key,
3952 const uint8_t *peer_key,
3953 size_t peer_key_length,
3954 uint8_t *output,
3955 size_t output_size,
3956 size_t *output_length);
3957
3989 size_t output_size);
3990
4037
4076
4109
4182void psa_interruptible_set_max_ops(uint32_t max_ops);
4183
4202
4231
4258
4333 const uint8_t *hash, size_t hash_length);
4334
4425 uint8_t *signature, size_t signature_size,
4426 size_t *signature_length);
4427
4467
4545 const uint8_t *hash, size_t hash_length,
4546 const uint8_t *signature, size_t signature_length);
4547
4621
4661
4662
4665#ifdef __cplusplus
4666}
4667#endif
4668
4669/* The file "crypto_sizes.h" contains definitions for size calculation
4670 * macros whose definitions are implementation-specific. */
4671#include "crypto_sizes.h"
4672
4673/* The file "crypto_struct.h" contains definitions for
4674 * implementation-specific structs that are declared above. */
4675#if defined(MBEDTLS_PSA_CRYPTO_STRUCT_FILE)
4676#include MBEDTLS_PSA_CRYPTO_STRUCT_FILE
4677#else
4678#include "crypto_struct.h"
4679#endif
4680
4681/* The file "crypto_extra.h" contains vendor-specific definitions. This
4682 * can include vendor-defined algorithms, extra functions, etc. */
4683#include "crypto_extra.h"
4684
4685#endif /* PSA_CRYPTO_H */
PSA cryptography module: Mbed TLS vendor extensions.
PSA cryptography module: Mbed TLS platform definitions.
PSA cryptography module: Mbed TLS buffer size macros.
PSA cryptography module: Mbed TLS structured type implementations.
PSA cryptography module: type aliases.
PSA cryptography module: macros to build and analyze integer values.
psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
static psa_mac_operation_t psa_mac_operation_init(void)
psa_status_t psa_mac_update(psa_mac_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t psa_mac_compute(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *mac, size_t mac_size, size_t *mac_length)
psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, uint8_t *mac, size_t mac_size, size_t *mac_length)
psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, const uint8_t *mac, size_t mac_length)
psa_status_t psa_mac_abort(psa_mac_operation_t *operation)
psa_status_t psa_mac_verify(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *mac, size_t mac_length)
psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
static psa_aead_operation_t psa_aead_operation_init(void)
psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, uint8_t *nonce, size_t nonce_size, size_t *nonce_length)
psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, const uint8_t *nonce, size_t nonce_length)
psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t psa_aead_finish(psa_aead_operation_t *operation, uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length, uint8_t *tag, size_t tag_size, size_t *tag_length)
psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
psa_status_t psa_aead_set_lengths(psa_aead_operation_t *operation, size_t ad_length, size_t plaintext_length)
psa_status_t psa_aead_verify(psa_aead_operation_t *operation, uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length, const uint8_t *tag, size_t tag_length)
psa_status_t psa_aead_encrypt(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *nonce, size_t nonce_length, const uint8_t *additional_data, size_t additional_data_length, const uint8_t *plaintext, size_t plaintext_length, uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length)
psa_status_t psa_aead_decrypt(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *nonce, size_t nonce_length, const uint8_t *additional_data, size_t additional_data_length, const uint8_t *ciphertext, size_t ciphertext_length, uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length)
psa_status_t psa_aead_abort(psa_aead_operation_t *operation)
psa_status_t psa_aead_update(psa_aead_operation_t *operation, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_verify_message(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *signature, size_t signature_length)
Verify the signature of a message with a public key, using a hash-and-sign verification algorithm.
psa_status_t psa_asymmetric_decrypt(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *salt, size_t salt_length, uint8_t *output, size_t output_size, size_t *output_length)
Decrypt a short message with a private key.
psa_status_t psa_sign_hash(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
Sign a hash or short message with a private key.
psa_status_t psa_sign_message(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
Sign a message with a private key. For hash-and-sign algorithms, this includes the hashing step.
psa_status_t psa_asymmetric_encrypt(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *salt, size_t salt_length, uint8_t *output, size_t output_size, size_t *output_length)
Encrypt a short message with a public key.
psa_status_t psa_verify_hash(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length)
Verify the signature of a hash or short message using a public key.
static psa_key_attributes_t psa_key_attributes_init(void)
void psa_reset_key_attributes(psa_key_attributes_t *attributes)
static void psa_set_key_usage_flags(psa_key_attributes_t *attributes, psa_key_usage_t usage_flags)
static size_t psa_get_key_bits(const psa_key_attributes_t *attributes)
static void psa_set_key_type(psa_key_attributes_t *attributes, psa_key_type_t type)
static psa_key_lifetime_t psa_get_key_lifetime(const psa_key_attributes_t *attributes)
static psa_key_usage_t psa_get_key_usage_flags(const psa_key_attributes_t *attributes)
static void psa_set_key_lifetime(psa_key_attributes_t *attributes, psa_key_lifetime_t lifetime)
static psa_algorithm_t psa_get_key_algorithm(const psa_key_attributes_t *attributes)
psa_status_t psa_get_key_attributes(mbedtls_svc_key_id_t key, psa_key_attributes_t *attributes)
static void psa_set_key_id(psa_key_attributes_t *attributes, mbedtls_svc_key_id_t key)
static psa_key_type_t psa_get_key_type(const psa_key_attributes_t *attributes)
static void psa_set_key_algorithm(psa_key_attributes_t *attributes, psa_algorithm_t alg)
static void psa_set_key_bits(psa_key_attributes_t *attributes, size_t bits)
static mbedtls_svc_key_id_t psa_get_key_id(const psa_key_attributes_t *attributes)
static psa_cipher_operation_t psa_cipher_operation_init(void)
psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, uint8_t *iv, size_t iv_size, size_t *iv_length)
psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
psa_status_t psa_cipher_encrypt(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, const uint8_t *iv, size_t iv_length)
psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation)
psa_status_t psa_cipher_decrypt(mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
uint16_t psa_key_type_t
Encoding of a key type.
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
uint16_t psa_key_derivation_step_t
Encoding of the step of a key derivation.
int32_t psa_status_t
Function return status.
psa_status_t psa_hash_compare(psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *hash, size_t hash_length)
psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, psa_hash_operation_t *target_operation)
psa_status_t psa_hash_finish(psa_hash_operation_t *operation, uint8_t *hash, size_t hash_size, size_t *hash_length)
static psa_hash_operation_t psa_hash_operation_init(void)
psa_status_t psa_hash_update(psa_hash_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t psa_hash_verify(psa_hash_operation_t *operation, const uint8_t *hash, size_t hash_length)
psa_status_t psa_hash_setup(psa_hash_operation_t *operation, psa_algorithm_t alg)
psa_status_t psa_hash_abort(psa_hash_operation_t *operation)
psa_status_t psa_hash_compute(psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *hash, size_t hash_size, size_t *hash_length)
psa_status_t psa_import_key(const psa_key_attributes_t *attributes, const uint8_t *data, size_t data_length, mbedtls_svc_key_id_t *key)
Import a key in binary format.
psa_status_t psa_export_key(mbedtls_svc_key_id_t key, uint8_t *data, size_t data_size, size_t *data_length)
Export a key in binary format.
psa_status_t psa_export_public_key(mbedtls_svc_key_id_t key, uint8_t *data, size_t data_size, size_t *data_length)
Export a public key or the public part of a key pair in binary format.
psa_status_t psa_crypto_init(void)
Library initialization.
uint32_t psa_verify_hash_get_num_ops(const psa_verify_hash_interruptible_operation_t *operation)
Get the number of ops that a hash verification operation has taken so far. If the operation has compl...
psa_status_t psa_verify_hash_abort(psa_verify_hash_interruptible_operation_t *operation)
Abort a verify hash operation.
uint32_t psa_sign_hash_get_num_ops(const psa_sign_hash_interruptible_operation_t *operation)
Get the number of ops that a hash signing operation has taken so far. If the operation has completed,...
psa_status_t psa_sign_hash_start(psa_sign_hash_interruptible_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length)
Start signing a hash or short message with a private key, in an interruptible manner.
psa_status_t psa_verify_hash_complete(psa_verify_hash_interruptible_operation_t *operation)
Continue and eventually complete the action of reading and verifying a hash or short message signed w...
void psa_interruptible_set_max_ops(uint32_t max_ops)
Set the maximum number of ops allowed to be executed by an interruptible function in a single call.
uint32_t psa_interruptible_get_max_ops(void)
Get the maximum number of ops allowed to be executed by an interruptible function in a single call....
psa_status_t psa_sign_hash_complete(psa_sign_hash_interruptible_operation_t *operation, uint8_t *signature, size_t signature_size, size_t *signature_length)
Continue and eventually complete the action of signing a hash or short message with a private key,...
psa_status_t psa_verify_hash_start(psa_verify_hash_interruptible_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length)
Start reading and verifying a hash or short message, in an interruptible manner.
psa_status_t psa_sign_hash_abort(psa_sign_hash_interruptible_operation_t *operation)
Abort a sign hash operation.
psa_status_t psa_key_derivation_output_bytes(psa_key_derivation_operation_t *operation, uint8_t *output, size_t output_length)
psa_status_t psa_raw_key_agreement(psa_algorithm_t alg, mbedtls_svc_key_id_t private_key, const uint8_t *peer_key, size_t peer_key_length, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_key_derivation_key_agreement(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, mbedtls_svc_key_id_t private_key, const uint8_t *peer_key, size_t peer_key_length)
psa_status_t psa_key_derivation_set_capacity(psa_key_derivation_operation_t *operation, size_t capacity)
static psa_key_derivation_operation_t psa_key_derivation_operation_init(void)
psa_status_t psa_key_derivation_input_bytes(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, const uint8_t *data, size_t data_length)
psa_status_t psa_key_derivation_abort(psa_key_derivation_operation_t *operation)
psa_status_t psa_key_derivation_get_capacity(const psa_key_derivation_operation_t *operation, size_t *capacity)
psa_status_t psa_key_derivation_input_key(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, mbedtls_svc_key_id_t key)
psa_status_t psa_key_derivation_verify_key(psa_key_derivation_operation_t *operation, psa_key_id_t expected)
psa_status_t psa_key_derivation_setup(psa_key_derivation_operation_t *operation, psa_algorithm_t alg)
psa_status_t psa_key_derivation_input_integer(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, uint64_t value)
psa_status_t psa_key_derivation_output_key(const psa_key_attributes_t *attributes, psa_key_derivation_operation_t *operation, mbedtls_svc_key_id_t *key)
psa_status_t psa_key_derivation_verify_bytes(psa_key_derivation_operation_t *operation, const uint8_t *expected_output, size_t output_length)
uint32_t psa_key_id_t
uint32_t psa_key_lifetime_t
psa_key_id_t mbedtls_svc_key_id_t
psa_status_t psa_purge_key(mbedtls_svc_key_id_t key)
psa_status_t psa_destroy_key(mbedtls_svc_key_id_t key)
Destroy a key.
psa_status_t psa_copy_key(mbedtls_svc_key_id_t source_key, const psa_key_attributes_t *attributes, mbedtls_svc_key_id_t *target_key)
uint32_t psa_key_usage_t
Encoding of permitted usage on a key.
psa_status_t psa_generate_random(uint8_t *output, size_t output_size)
Generate random bytes.
psa_status_t psa_generate_key(const psa_key_attributes_t *attributes, mbedtls_svc_key_id_t *key)
Generate a key or key pair.
The context for PSA interruptible hash signing.
The context for PSA interruptible hash verification.