Mbed TLS v3.6.3
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 
95 
111 
136 static void psa_set_key_id(psa_key_attributes_t *attributes,
138 
139 #ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
154 static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes,
155  mbedtls_key_owner_id_t owner);
156 #endif
157 
185  psa_key_lifetime_t lifetime);
186 
200  const psa_key_attributes_t *attributes);
201 
213  const psa_key_attributes_t *attributes);
214 
232  psa_key_usage_t usage_flags);
233 
245  const psa_key_attributes_t *attributes);
246 
278  psa_algorithm_t alg);
279 
280 
292  const psa_key_attributes_t *attributes);
293 
308 static void psa_set_key_type(psa_key_attributes_t *attributes,
309  psa_key_type_t type);
310 
311 
326 static void psa_set_key_bits(psa_key_attributes_t *attributes,
327  size_t bits);
328 
340 
351 static size_t psa_get_key_bits(const psa_key_attributes_t *attributes);
352 
382  psa_key_attributes_t *attributes);
383 
397 
426 
516  const psa_key_attributes_t *attributes,
517  mbedtls_svc_key_id_t *target_key);
518 
519 
571 
650  const uint8_t *data,
651  size_t data_length,
652  mbedtls_svc_key_id_t *key);
653 
654 
655 
745  uint8_t *data,
746  size_t data_size,
747  size_t *data_length);
748 
820  uint8_t *data,
821  size_t data_size,
822  size_t *data_length);
823 
824 
825 
864  const uint8_t *input,
865  size_t input_length,
866  uint8_t *hash,
867  size_t hash_size,
868  size_t *hash_length);
869 
899  const uint8_t *input,
900  size_t input_length,
901  const uint8_t *hash,
902  size_t hash_length);
903 
933 
943 
993  psa_algorithm_t alg);
994 
1019  const uint8_t *input,
1020  size_t input_length);
1021 
1065  uint8_t *hash,
1066  size_t hash_size,
1067  size_t *hash_length);
1068 
1106  const uint8_t *hash,
1107  size_t hash_length);
1108 
1135 
1164  psa_hash_operation_t *target_operation);
1165 
1215  psa_algorithm_t alg,
1216  const uint8_t *input,
1217  size_t input_length,
1218  uint8_t *mac,
1219  size_t mac_size,
1220  size_t *mac_length);
1221 
1256  psa_algorithm_t alg,
1257  const uint8_t *input,
1258  size_t input_length,
1259  const uint8_t *mac,
1260  size_t mac_length);
1261 
1292 
1302 
1363  psa_algorithm_t alg);
1364 
1425  psa_algorithm_t alg);
1426 
1454  const uint8_t *input,
1455  size_t input_length);
1456 
1503  uint8_t *mac,
1504  size_t mac_size,
1505  size_t *mac_length);
1506 
1546  const uint8_t *mac,
1547  size_t mac_length);
1548 
1575 
1622  psa_algorithm_t alg,
1623  const uint8_t *input,
1624  size_t input_length,
1625  uint8_t *output,
1626  size_t output_size,
1627  size_t *output_length);
1628 
1669  psa_algorithm_t alg,
1670  const uint8_t *input,
1671  size_t input_length,
1672  uint8_t *output,
1673  size_t output_size,
1674  size_t *output_length);
1675 
1705 
1715 
1777  psa_algorithm_t alg);
1778 
1840  psa_algorithm_t alg);
1841 
1877  uint8_t *iv,
1878  size_t iv_size,
1879  size_t *iv_length);
1880 
1918  const uint8_t *iv,
1919  size_t iv_length);
1920 
1959  const uint8_t *input,
1960  size_t input_length,
1961  uint8_t *output,
1962  size_t output_size,
1963  size_t *output_length);
1964 
2011  uint8_t *output,
2012  size_t output_size,
2013  size_t *output_length);
2014 
2041 
2110  psa_algorithm_t alg,
2111  const uint8_t *nonce,
2112  size_t nonce_length,
2113  const uint8_t *additional_data,
2114  size_t additional_data_length,
2115  const uint8_t *plaintext,
2116  size_t plaintext_length,
2117  uint8_t *ciphertext,
2118  size_t ciphertext_size,
2119  size_t *ciphertext_length);
2120 
2183  psa_algorithm_t alg,
2184  const uint8_t *nonce,
2185  size_t nonce_length,
2186  const uint8_t *additional_data,
2187  size_t additional_data_length,
2188  const uint8_t *ciphertext,
2189  size_t ciphertext_length,
2190  uint8_t *plaintext,
2191  size_t plaintext_size,
2192  size_t *plaintext_length);
2193 
2223 
2233 
2302  psa_algorithm_t alg);
2303 
2368  psa_algorithm_t alg);
2369 
2406  uint8_t *nonce,
2407  size_t nonce_size,
2408  size_t *nonce_length);
2409 
2446  const uint8_t *nonce,
2447  size_t nonce_length);
2448 
2491  size_t ad_length,
2492  size_t plaintext_length);
2493 
2539  const uint8_t *input,
2540  size_t input_length);
2541 
2623  const uint8_t *input,
2624  size_t input_length,
2625  uint8_t *output,
2626  size_t output_size,
2627  size_t *output_length);
2628 
2709  uint8_t *ciphertext,
2710  size_t ciphertext_size,
2711  size_t *ciphertext_length,
2712  uint8_t *tag,
2713  size_t tag_size,
2714  size_t *tag_length);
2715 
2792  uint8_t *plaintext,
2793  size_t plaintext_size,
2794  size_t *plaintext_length,
2795  const uint8_t *tag,
2796  size_t tag_length);
2797 
2824 
2890  psa_algorithm_t alg,
2891  const uint8_t *input,
2892  size_t input_length,
2893  uint8_t *signature,
2894  size_t signature_size,
2895  size_t *signature_length);
2896 
2942  psa_algorithm_t alg,
2943  const uint8_t *input,
2944  size_t input_length,
2945  const uint8_t *signature,
2946  size_t signature_length);
2947 
2995  psa_algorithm_t alg,
2996  const uint8_t *hash,
2997  size_t hash_length,
2998  uint8_t *signature,
2999  size_t signature_size,
3000  size_t *signature_length);
3001 
3046  psa_algorithm_t alg,
3047  const uint8_t *hash,
3048  size_t hash_length,
3049  const uint8_t *signature,
3050  size_t signature_length);
3051 
3104  psa_algorithm_t alg,
3105  const uint8_t *input,
3106  size_t input_length,
3107  const uint8_t *salt,
3108  size_t salt_length,
3109  uint8_t *output,
3110  size_t output_size,
3111  size_t *output_length);
3112 
3165  psa_algorithm_t alg,
3166  const uint8_t *input,
3167  size_t input_length,
3168  const uint8_t *salt,
3169  size_t salt_length,
3170  uint8_t *output,
3171  size_t output_size,
3172  size_t *output_length);
3173 
3210 
3220 
3281  psa_key_derivation_operation_t *operation,
3282  psa_algorithm_t alg);
3283 
3304  const psa_key_derivation_operation_t *operation,
3305  size_t *capacity);
3306 
3332  psa_key_derivation_operation_t *operation,
3333  size_t capacity);
3334 
3342 #define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t) (-1))
3343 
3385  psa_key_derivation_operation_t *operation,
3387  const uint8_t *data,
3388  size_t data_length);
3389 
3428  psa_key_derivation_operation_t *operation,
3430  uint64_t value);
3431 
3496  psa_key_derivation_operation_t *operation,
3498  mbedtls_svc_key_id_t key);
3499 
3564  psa_key_derivation_operation_t *operation,
3566  mbedtls_svc_key_id_t private_key,
3567  const uint8_t *peer_key,
3568  size_t peer_key_length);
3569 
3611  psa_key_derivation_operation_t *operation,
3612  uint8_t *output,
3613  size_t output_length);
3614 
3766  const psa_key_attributes_t *attributes,
3767  psa_key_derivation_operation_t *operation,
3768  mbedtls_svc_key_id_t *key);
3769 
3838  const psa_key_attributes_t *attributes,
3839  psa_key_derivation_operation_t *operation,
3840  const psa_custom_key_parameters_t *custom,
3841  const uint8_t *custom_data,
3842  size_t custom_data_length,
3843  mbedtls_svc_key_id_t *key);
3844 
3845 #ifndef __cplusplus
3846 /* Omitted when compiling in C++, because one of the parameters is a
3847  * pointer to a struct with a flexible array member, and that is not
3848  * standard C++.
3849  * https://github.com/Mbed-TLS/mbedtls/issues/9020
3850  */
3920  const psa_key_attributes_t *attributes,
3921  psa_key_derivation_operation_t *operation,
3922  const psa_key_production_parameters_t *params,
3923  size_t params_data_length,
3924  mbedtls_svc_key_id_t *key);
3925 #endif /* !__cplusplus */
3926 
3981  psa_key_derivation_operation_t *operation,
3982  const uint8_t *expected,
3983  size_t expected_length);
3984 
4046  psa_key_derivation_operation_t *operation,
4047  psa_key_id_t expected);
4048 
4073  psa_key_derivation_operation_t *operation);
4074 
4126  mbedtls_svc_key_id_t private_key,
4127  const uint8_t *peer_key,
4128  size_t peer_key_length,
4129  uint8_t *output,
4130  size_t output_size,
4131  size_t *output_length);
4132 
4164  size_t output_size);
4165 
4215  mbedtls_svc_key_id_t *key);
4216 
4268  const psa_custom_key_parameters_t *custom,
4269  const uint8_t *custom_data,
4270  size_t custom_data_length,
4271  mbedtls_svc_key_id_t *key);
4272 
4273 #ifndef __cplusplus
4274 /* Omitted when compiling in C++, because one of the parameters is a
4275  * pointer to a struct with a flexible array member, and that is not
4276  * standard C++.
4277  * https://github.com/Mbed-TLS/mbedtls/issues/9020
4278  */
4325  const psa_key_production_parameters_t *params,
4326  size_t params_data_length,
4327  mbedtls_svc_key_id_t *key);
4328 #endif /* !__cplusplus */
4329 
4368 
4401 
4474 void psa_interruptible_set_max_ops(uint32_t max_ops);
4475 
4494 
4522  const psa_sign_hash_interruptible_operation_t *operation);
4523 
4550 
4625  const uint8_t *hash, size_t hash_length);
4626 
4717  uint8_t *signature, size_t signature_size,
4718  size_t *signature_length);
4719 
4759 
4837  const uint8_t *hash, size_t hash_length,
4838  const uint8_t *signature, size_t signature_length);
4839 
4913 
4953 
4954 
4957 #ifdef __cplusplus
4958 }
4959 #endif
4960 
4961 /* The file "crypto_sizes.h" contains definitions for size calculation
4962  * macros whose definitions are implementation-specific. */
4963 #include "crypto_sizes.h"
4964 
4965 /* The file "crypto_struct.h" contains definitions for
4966  * implementation-specific structs that are declared above. */
4967 #if defined(MBEDTLS_PSA_CRYPTO_STRUCT_FILE)
4968 #include MBEDTLS_PSA_CRYPTO_STRUCT_FILE
4969 #else
4970 #include "crypto_struct.h"
4971 #endif
4972 
4973 /* The file "crypto_extra.h" contains vendor-specific definitions. This
4974  * can include vendor-defined algorithms, extra functions, etc. */
4975 #include "crypto_extra.h"
4976 
4977 #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.