Mbed TLS v3.6.7
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
35 extern "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 
62 /* The file "crypto_sizes.h" contains definitions for size calculation
63  * macros whose definitions are implementation-specific. */
64 #include "crypto_sizes.h"
65 
66 /* The file "crypto_struct.h" contains definitions for
67  * implementation-specific structs that are declared above. */
68 #if defined(MBEDTLS_PSA_CRYPTO_STRUCT_FILE)
69 #include MBEDTLS_PSA_CRYPTO_STRUCT_FILE
70 #else
71 #include "crypto_struct.h"
72 #endif
73 
107 
123 
148 static void psa_set_key_id(psa_key_attributes_t *attributes,
150 
151 #ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
166 static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes,
167  mbedtls_key_owner_id_t owner);
168 #endif
169 
197  psa_key_lifetime_t lifetime);
198 
212  const psa_key_attributes_t *attributes);
213 
225  const psa_key_attributes_t *attributes);
226 
244  psa_key_usage_t usage_flags);
245 
257  const psa_key_attributes_t *attributes);
258 
290  psa_algorithm_t alg);
291 
292 
304  const psa_key_attributes_t *attributes);
305 
320 static void psa_set_key_type(psa_key_attributes_t *attributes,
321  psa_key_type_t type);
322 
323 
338 static void psa_set_key_bits(psa_key_attributes_t *attributes,
339  size_t bits);
340 
352 
363 static size_t psa_get_key_bits(const psa_key_attributes_t *attributes);
364 
394  psa_key_attributes_t *attributes);
395 
409 
438 
528  const psa_key_attributes_t *attributes,
529  mbedtls_svc_key_id_t *target_key);
530 
531 
583 
662  const uint8_t *data,
663  size_t data_length,
664  mbedtls_svc_key_id_t *key);
665 
666 
667 
757  uint8_t *data,
758  size_t data_size,
759  size_t *data_length);
760 
832  uint8_t *data,
833  size_t data_size,
834  size_t *data_length);
835 
836 
837 
876  const uint8_t *input,
877  size_t input_length,
878  uint8_t *hash,
879  size_t hash_size,
880  size_t *hash_length);
881 
911  const uint8_t *input,
912  size_t input_length,
913  const uint8_t *hash,
914  size_t hash_length);
915 
945 
955 
1005  psa_algorithm_t alg);
1006 
1031  const uint8_t *input,
1032  size_t input_length);
1033 
1077  uint8_t *hash,
1078  size_t hash_size,
1079  size_t *hash_length);
1080 
1118  const uint8_t *hash,
1119  size_t hash_length);
1120 
1147 
1176  psa_hash_operation_t *target_operation);
1177 
1227  psa_algorithm_t alg,
1228  const uint8_t *input,
1229  size_t input_length,
1230  uint8_t *mac,
1231  size_t mac_size,
1232  size_t *mac_length);
1233 
1268  psa_algorithm_t alg,
1269  const uint8_t *input,
1270  size_t input_length,
1271  const uint8_t *mac,
1272  size_t mac_length);
1273 
1304 
1314 
1375  psa_algorithm_t alg);
1376 
1437  psa_algorithm_t alg);
1438 
1466  const uint8_t *input,
1467  size_t input_length);
1468 
1515  uint8_t *mac,
1516  size_t mac_size,
1517  size_t *mac_length);
1518 
1558  const uint8_t *mac,
1559  size_t mac_length);
1560 
1587 
1634  psa_algorithm_t alg,
1635  const uint8_t *input,
1636  size_t input_length,
1637  uint8_t *output,
1638  size_t output_size,
1639  size_t *output_length);
1640 
1681  psa_algorithm_t alg,
1682  const uint8_t *input,
1683  size_t input_length,
1684  uint8_t *output,
1685  size_t output_size,
1686  size_t *output_length);
1687 
1717 
1727 
1789  psa_algorithm_t alg);
1790 
1852  psa_algorithm_t alg);
1853 
1889  uint8_t *iv,
1890  size_t iv_size,
1891  size_t *iv_length);
1892 
1930  const uint8_t *iv,
1931  size_t iv_length);
1932 
1971  const uint8_t *input,
1972  size_t input_length,
1973  uint8_t *output,
1974  size_t output_size,
1975  size_t *output_length);
1976 
2023  uint8_t *output,
2024  size_t output_size,
2025  size_t *output_length);
2026 
2053 
2125  psa_algorithm_t alg,
2126  const uint8_t *nonce,
2127  size_t nonce_length,
2128  const uint8_t *additional_data,
2129  size_t additional_data_length,
2130  const uint8_t *plaintext,
2131  size_t plaintext_length,
2132  uint8_t *ciphertext,
2133  size_t ciphertext_size,
2134  size_t *ciphertext_length);
2135 
2203  psa_algorithm_t alg,
2204  const uint8_t *nonce,
2205  size_t nonce_length,
2206  const uint8_t *additional_data,
2207  size_t additional_data_length,
2208  const uint8_t *ciphertext,
2209  size_t ciphertext_length,
2210  uint8_t *plaintext,
2211  size_t plaintext_size,
2212  size_t *plaintext_length);
2213 
2243 
2253 
2322  psa_algorithm_t alg);
2323 
2388  psa_algorithm_t alg);
2389 
2426  uint8_t *nonce,
2427  size_t nonce_size,
2428  size_t *nonce_length);
2429 
2466  const uint8_t *nonce,
2467  size_t nonce_length);
2468 
2513  size_t ad_length,
2514  size_t plaintext_length);
2515 
2561  const uint8_t *input,
2562  size_t input_length);
2563 
2646  const uint8_t *input,
2647  size_t input_length,
2648  uint8_t *output,
2649  size_t output_size,
2650  size_t *output_length);
2651 
2732  uint8_t *ciphertext,
2733  size_t ciphertext_size,
2734  size_t *ciphertext_length,
2735  uint8_t *tag,
2736  size_t tag_size,
2737  size_t *tag_length);
2738 
2815  uint8_t *plaintext,
2816  size_t plaintext_size,
2817  size_t *plaintext_length,
2818  const uint8_t *tag,
2819  size_t tag_length);
2820 
2847 
2913  psa_algorithm_t alg,
2914  const uint8_t *input,
2915  size_t input_length,
2916  uint8_t *signature,
2917  size_t signature_size,
2918  size_t *signature_length);
2919 
2965  psa_algorithm_t alg,
2966  const uint8_t *input,
2967  size_t input_length,
2968  const uint8_t *signature,
2969  size_t signature_length);
2970 
3018  psa_algorithm_t alg,
3019  const uint8_t *hash,
3020  size_t hash_length,
3021  uint8_t *signature,
3022  size_t signature_size,
3023  size_t *signature_length);
3024 
3069  psa_algorithm_t alg,
3070  const uint8_t *hash,
3071  size_t hash_length,
3072  const uint8_t *signature,
3073  size_t signature_length);
3074 
3127  psa_algorithm_t alg,
3128  const uint8_t *input,
3129  size_t input_length,
3130  const uint8_t *salt,
3131  size_t salt_length,
3132  uint8_t *output,
3133  size_t output_size,
3134  size_t *output_length);
3135 
3198  psa_algorithm_t alg,
3199  const uint8_t *input,
3200  size_t input_length,
3201  const uint8_t *salt,
3202  size_t salt_length,
3203  uint8_t *output,
3204  size_t output_size,
3205  size_t *output_length);
3206 
3243 
3253 
3314  psa_key_derivation_operation_t *operation,
3315  psa_algorithm_t alg);
3316 
3337  const psa_key_derivation_operation_t *operation,
3338  size_t *capacity);
3339 
3365  psa_key_derivation_operation_t *operation,
3366  size_t capacity);
3367 
3375 #define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t) (-1))
3376 
3418  psa_key_derivation_operation_t *operation,
3420  const uint8_t *data,
3421  size_t data_length);
3422 
3461  psa_key_derivation_operation_t *operation,
3463  uint64_t value);
3464 
3529  psa_key_derivation_operation_t *operation,
3531  mbedtls_svc_key_id_t key);
3532 
3597  psa_key_derivation_operation_t *operation,
3599  mbedtls_svc_key_id_t private_key,
3600  const uint8_t *peer_key,
3601  size_t peer_key_length);
3602 
3644  psa_key_derivation_operation_t *operation,
3645  uint8_t *output,
3646  size_t output_length);
3647 
3799  const psa_key_attributes_t *attributes,
3800  psa_key_derivation_operation_t *operation,
3801  mbedtls_svc_key_id_t *key);
3802 
3871  const psa_key_attributes_t *attributes,
3872  psa_key_derivation_operation_t *operation,
3873  const psa_custom_key_parameters_t *custom,
3874  const uint8_t *custom_data,
3875  size_t custom_data_length,
3876  mbedtls_svc_key_id_t *key);
3877 
3878 #ifndef __cplusplus
3879 /* Omitted when compiling in C++, because one of the parameters is a
3880  * pointer to a struct with a flexible array member, and that is not
3881  * standard C++.
3882  * https://github.com/Mbed-TLS/mbedtls/issues/9020
3883  */
3953  const psa_key_attributes_t *attributes,
3954  psa_key_derivation_operation_t *operation,
3955  const psa_key_production_parameters_t *params,
3956  size_t params_data_length,
3957  mbedtls_svc_key_id_t *key);
3958 #endif /* !__cplusplus */
3959 
4014  psa_key_derivation_operation_t *operation,
4015  const uint8_t *expected,
4016  size_t expected_length);
4017 
4079  psa_key_derivation_operation_t *operation,
4080  psa_key_id_t expected);
4081 
4106  psa_key_derivation_operation_t *operation);
4107 
4159  mbedtls_svc_key_id_t private_key,
4160  const uint8_t *peer_key,
4161  size_t peer_key_length,
4162  uint8_t *output,
4163  size_t output_size,
4164  size_t *output_length);
4165 
4197  size_t output_size);
4198 
4248  mbedtls_svc_key_id_t *key);
4249 
4301  const psa_custom_key_parameters_t *custom,
4302  const uint8_t *custom_data,
4303  size_t custom_data_length,
4304  mbedtls_svc_key_id_t *key);
4305 
4306 #ifndef __cplusplus
4307 /* Omitted when compiling in C++, because one of the parameters is a
4308  * pointer to a struct with a flexible array member, and that is not
4309  * standard C++.
4310  * https://github.com/Mbed-TLS/mbedtls/issues/9020
4311  */
4358  const psa_key_production_parameters_t *params,
4359  size_t params_data_length,
4360  mbedtls_svc_key_id_t *key);
4361 #endif /* !__cplusplus */
4362 
4401 
4434 
4507 void psa_interruptible_set_max_ops(uint32_t max_ops);
4508 
4527 
4555  const psa_sign_hash_interruptible_operation_t *operation);
4556 
4583 
4658  const uint8_t *hash, size_t hash_length);
4659 
4750  uint8_t *signature, size_t signature_size,
4751  size_t *signature_length);
4752 
4792 
4870  const uint8_t *hash, size_t hash_length,
4871  const uint8_t *signature, size_t signature_length);
4872 
4946 
4986 
4987 
4990 #ifdef __cplusplus
4991 }
4992 #endif
4993 
4994 /* The file "crypto_extra.h" contains vendor-specific definitions. This
4995  * can include vendor-defined algorithms, extra functions, etc. */
4996 #include "crypto_extra.h"
4997 
4998 #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.
Definition: crypto_types.h:78
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition: crypto_types.h:134
uint16_t psa_key_derivation_step_t
Encoding of the step of a key derivation.
Definition: crypto_types.h:456
int32_t psa_status_t
Function return status.
Definition: crypto_types.h:59
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_key_derivation_output_key_custom(const psa_key_attributes_t *attributes, psa_key_derivation_operation_t *operation, const psa_custom_key_parameters_t *custom, const uint8_t *custom_data, size_t custom_data_length, mbedtls_svc_key_id_t *key)
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, size_t expected_length)
psa_status_t psa_key_derivation_output_key_ext(const psa_key_attributes_t *attributes, psa_key_derivation_operation_t *operation, const psa_key_production_parameters_t *params, size_t params_data_length, mbedtls_svc_key_id_t *key)
uint32_t psa_key_id_t
Definition: crypto_types.h:275
uint32_t psa_key_lifetime_t
Definition: crypto_types.h:183
psa_key_id_t mbedtls_svc_key_id_t
Definition: crypto_types.h:292
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.
Definition: crypto_types.h:323
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.
psa_status_t psa_generate_key_ext(const psa_key_attributes_t *attributes, const psa_key_production_parameters_t *params, size_t params_data_length, mbedtls_svc_key_id_t *key)
Generate a key or key pair using custom production parameters.
psa_status_t psa_generate_key_custom(const psa_key_attributes_t *attributes, const psa_custom_key_parameters_t *custom, const uint8_t *custom_data, size_t custom_data_length, mbedtls_svc_key_id_t *key)
Generate a key or key pair using custom production parameters.
The context for PSA interruptible hash signing.
The context for PSA interruptible hash verification.