Mbed TLS v3.6.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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 
133 static void psa_set_key_id(psa_key_attributes_t *attributes,
135 
136 #ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
137 
151 static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes,
152  mbedtls_key_owner_id_t owner);
153 #endif
154 
181 static void psa_set_key_lifetime(psa_key_attributes_t *attributes,
182  psa_key_lifetime_t lifetime);
183 
197  const psa_key_attributes_t *attributes);
198 
210  const psa_key_attributes_t *attributes);
211 
228 static void psa_set_key_usage_flags(psa_key_attributes_t *attributes,
229  psa_key_usage_t usage_flags);
230 
242  const psa_key_attributes_t *attributes);
243 
274 static void psa_set_key_algorithm(psa_key_attributes_t *attributes,
275  psa_algorithm_t alg);
276 
277 
289  const psa_key_attributes_t *attributes);
290 
305 static void psa_set_key_type(psa_key_attributes_t *attributes,
306  psa_key_type_t type);
307 
308 
323 static void psa_set_key_bits(psa_key_attributes_t *attributes,
324  size_t bits);
325 
336 static psa_key_type_t psa_get_key_type(const psa_key_attributes_t *attributes);
337 
348 static size_t psa_get_key_bits(const psa_key_attributes_t *attributes);
349 
379  psa_key_attributes_t *attributes);
380 
394 
423 
513  const psa_key_attributes_t *attributes,
514  mbedtls_svc_key_id_t *target_key);
515 
516 
568 
647  const uint8_t *data,
648  size_t data_length,
649  mbedtls_svc_key_id_t *key);
650 
651 
652 
742  uint8_t *data,
743  size_t data_size,
744  size_t *data_length);
745 
817  uint8_t *data,
818  size_t data_size,
819  size_t *data_length);
820 
821 
822 
861  const uint8_t *input,
862  size_t input_length,
863  uint8_t *hash,
864  size_t hash_size,
865  size_t *hash_length);
866 
896  const uint8_t *input,
897  size_t input_length,
898  const uint8_t *hash,
899  size_t hash_length);
900 
930 
940 
990  psa_algorithm_t alg);
991 
1016  const uint8_t *input,
1017  size_t input_length);
1018 
1062  uint8_t *hash,
1063  size_t hash_size,
1064  size_t *hash_length);
1065 
1103  const uint8_t *hash,
1104  size_t hash_length);
1105 
1132 
1160 psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation,
1161  psa_hash_operation_t *target_operation);
1162 
1212  psa_algorithm_t alg,
1213  const uint8_t *input,
1214  size_t input_length,
1215  uint8_t *mac,
1216  size_t mac_size,
1217  size_t *mac_length);
1218 
1253  psa_algorithm_t alg,
1254  const uint8_t *input,
1255  size_t input_length,
1256  const uint8_t *mac,
1257  size_t mac_length);
1258 
1289 
1299 
1360  psa_algorithm_t alg);
1361 
1422  psa_algorithm_t alg);
1423 
1451  const uint8_t *input,
1452  size_t input_length);
1453 
1500  uint8_t *mac,
1501  size_t mac_size,
1502  size_t *mac_length);
1503 
1543  const uint8_t *mac,
1544  size_t mac_length);
1545 
1572 
1619  psa_algorithm_t alg,
1620  const uint8_t *input,
1621  size_t input_length,
1622  uint8_t *output,
1623  size_t output_size,
1624  size_t *output_length);
1625 
1666  psa_algorithm_t alg,
1667  const uint8_t *input,
1668  size_t input_length,
1669  uint8_t *output,
1670  size_t output_size,
1671  size_t *output_length);
1672 
1702 
1712 
1774  psa_algorithm_t alg);
1775 
1837  psa_algorithm_t alg);
1838 
1874  uint8_t *iv,
1875  size_t iv_size,
1876  size_t *iv_length);
1877 
1915  const uint8_t *iv,
1916  size_t iv_length);
1917 
1956  const uint8_t *input,
1957  size_t input_length,
1958  uint8_t *output,
1959  size_t output_size,
1960  size_t *output_length);
1961 
2008  uint8_t *output,
2009  size_t output_size,
2010  size_t *output_length);
2011 
2038 
2107  psa_algorithm_t alg,
2108  const uint8_t *nonce,
2109  size_t nonce_length,
2110  const uint8_t *additional_data,
2111  size_t additional_data_length,
2112  const uint8_t *plaintext,
2113  size_t plaintext_length,
2114  uint8_t *ciphertext,
2115  size_t ciphertext_size,
2116  size_t *ciphertext_length);
2117 
2180  psa_algorithm_t alg,
2181  const uint8_t *nonce,
2182  size_t nonce_length,
2183  const uint8_t *additional_data,
2184  size_t additional_data_length,
2185  const uint8_t *ciphertext,
2186  size_t ciphertext_length,
2187  uint8_t *plaintext,
2188  size_t plaintext_size,
2189  size_t *plaintext_length);
2190 
2220 
2230 
2299  psa_algorithm_t alg);
2300 
2365  psa_algorithm_t alg);
2366 
2403  uint8_t *nonce,
2404  size_t nonce_size,
2405  size_t *nonce_length);
2406 
2443  const uint8_t *nonce,
2444  size_t nonce_length);
2445 
2488  size_t ad_length,
2489  size_t plaintext_length);
2490 
2536  const uint8_t *input,
2537  size_t input_length);
2538 
2620  const uint8_t *input,
2621  size_t input_length,
2622  uint8_t *output,
2623  size_t output_size,
2624  size_t *output_length);
2625 
2706  uint8_t *ciphertext,
2707  size_t ciphertext_size,
2708  size_t *ciphertext_length,
2709  uint8_t *tag,
2710  size_t tag_size,
2711  size_t *tag_length);
2712 
2789  uint8_t *plaintext,
2790  size_t plaintext_size,
2791  size_t *plaintext_length,
2792  const uint8_t *tag,
2793  size_t tag_length);
2794 
2821 
2887  psa_algorithm_t alg,
2888  const uint8_t *input,
2889  size_t input_length,
2890  uint8_t *signature,
2891  size_t signature_size,
2892  size_t *signature_length);
2893 
2939  psa_algorithm_t alg,
2940  const uint8_t *input,
2941  size_t input_length,
2942  const uint8_t *signature,
2943  size_t signature_length);
2944 
2992  psa_algorithm_t alg,
2993  const uint8_t *hash,
2994  size_t hash_length,
2995  uint8_t *signature,
2996  size_t signature_size,
2997  size_t *signature_length);
2998 
3043  psa_algorithm_t alg,
3044  const uint8_t *hash,
3045  size_t hash_length,
3046  const uint8_t *signature,
3047  size_t signature_length);
3048 
3101  psa_algorithm_t alg,
3102  const uint8_t *input,
3103  size_t input_length,
3104  const uint8_t *salt,
3105  size_t salt_length,
3106  uint8_t *output,
3107  size_t output_size,
3108  size_t *output_length);
3109 
3162  psa_algorithm_t alg,
3163  const uint8_t *input,
3164  size_t input_length,
3165  const uint8_t *salt,
3166  size_t salt_length,
3167  uint8_t *output,
3168  size_t output_size,
3169  size_t *output_length);
3170 
3207 
3217 
3278  psa_key_derivation_operation_t *operation,
3279  psa_algorithm_t alg);
3280 
3301  const psa_key_derivation_operation_t *operation,
3302  size_t *capacity);
3303 
3329  psa_key_derivation_operation_t *operation,
3330  size_t capacity);
3331 
3339 #define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t) (-1))
3340 
3382  psa_key_derivation_operation_t *operation,
3384  const uint8_t *data,
3385  size_t data_length);
3386 
3425  psa_key_derivation_operation_t *operation,
3427  uint64_t value);
3428 
3493  psa_key_derivation_operation_t *operation,
3495  mbedtls_svc_key_id_t key);
3496 
3561  psa_key_derivation_operation_t *operation,
3563  mbedtls_svc_key_id_t private_key,
3564  const uint8_t *peer_key,
3565  size_t peer_key_length);
3566 
3608  psa_key_derivation_operation_t *operation,
3609  uint8_t *output,
3610  size_t output_length);
3611 
3763  const psa_key_attributes_t *attributes,
3764  psa_key_derivation_operation_t *operation,
3765  mbedtls_svc_key_id_t *key);
3766 
3838  const psa_key_attributes_t *attributes,
3839  psa_key_derivation_operation_t *operation,
3840  const psa_key_production_parameters_t *params,
3841  size_t params_data_length,
3842  mbedtls_svc_key_id_t *key);
3843 
3898  psa_key_derivation_operation_t *operation,
3899  const uint8_t *expected_output,
3900  size_t output_length);
3901 
3963  psa_key_derivation_operation_t *operation,
3964  psa_key_id_t expected);
3965 
3990  psa_key_derivation_operation_t *operation);
3991 
4043  mbedtls_svc_key_id_t private_key,
4044  const uint8_t *peer_key,
4045  size_t peer_key_length,
4046  uint8_t *output,
4047  size_t output_size,
4048  size_t *output_length);
4049 
4080 psa_status_t psa_generate_random(uint8_t *output,
4081  size_t output_size);
4082 
4132  mbedtls_svc_key_id_t *key);
4133 
4184  const psa_key_production_parameters_t *params,
4185  size_t params_data_length,
4186  mbedtls_svc_key_id_t *key);
4187 
4226 
4259 
4332 void psa_interruptible_set_max_ops(uint32_t max_ops);
4333 
4351 uint32_t psa_interruptible_get_max_ops(void);
4352 
4379 uint32_t psa_sign_hash_get_num_ops(
4380  const psa_sign_hash_interruptible_operation_t *operation);
4381 
4408 
4483  const uint8_t *hash, size_t hash_length);
4484 
4575  uint8_t *signature, size_t signature_size,
4576  size_t *signature_length);
4577 
4617 
4695  const uint8_t *hash, size_t hash_length,
4696  const uint8_t *signature, size_t signature_length);
4697 
4771 
4811 
4812 
4815 #ifdef __cplusplus
4816 }
4817 #endif
4818 
4819 /* The file "crypto_sizes.h" contains definitions for size calculation
4820  * macros whose definitions are implementation-specific. */
4821 #include "crypto_sizes.h"
4822 
4823 /* The file "crypto_struct.h" contains definitions for
4824  * implementation-specific structs that are declared above. */
4825 #if defined(MBEDTLS_PSA_CRYPTO_STRUCT_FILE)
4826 #include MBEDTLS_PSA_CRYPTO_STRUCT_FILE
4827 #else
4828 #include "crypto_struct.h"
4829 #endif
4830 
4831 /* The file "crypto_extra.h" contains vendor-specific definitions. This
4832  * can include vendor-defined algorithms, extra functions, etc. */
4833 #include "crypto_extra.h"
4834 
4835 #endif /* PSA_CRYPTO_H */
void psa_reset_key_attributes(psa_key_attributes_t *attributes)
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)
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_aead_encrypt_setup(psa_aead_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
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_generate_random(uint8_t *output, size_t output_size)
Generate random bytes.
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_key_derivation_verify_bytes(psa_key_derivation_operation_t *operation, const uint8_t *expected_output, size_t output_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_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_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...
static psa_key_derivation_operation_t psa_key_derivation_operation_init(void)
psa_status_t psa_key_derivation_set_capacity(psa_key_derivation_operation_t *operation, size_t capacity)
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_key_derivation_abort(psa_key_derivation_operation_t *operation)
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_mac_verify_finish(psa_mac_operation_t *operation, const uint8_t *mac, size_t mac_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)
static void psa_set_key_bits(psa_key_attributes_t *attributes, size_t bits)
psa_status_t psa_key_derivation_verify_key(psa_key_derivation_operation_t *operation, psa_key_id_t expected)
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_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 cryptography module: type aliases.
psa_status_t psa_mac_abort(psa_mac_operation_t *operation)
uint16_t psa_key_derivation_step_t
Encoding of the step of a key derivation.
Definition: crypto_types.h:456
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 cryptography module: Mbed TLS structured type implementations.
PSA cryptography module: Mbed TLS vendor extensions.
uint32_t psa_key_id_t
Definition: crypto_types.h:275
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)
static psa_algorithm_t psa_get_key_algorithm(const psa_key_attributes_t *attributes)
static void psa_set_key_usage_flags(psa_key_attributes_t *attributes, psa_key_usage_t usage_flags)
int32_t mbedtls_key_owner_id_t
psa_status_t psa_hash_update(psa_hash_operation_t *operation, const uint8_t *input, size_t input_length)
static void psa_set_key_lifetime(psa_key_attributes_t *attributes, psa_key_lifetime_t lifetime)
static psa_hash_operation_t psa_hash_operation_init(void)
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_aead_set_nonce(psa_aead_operation_t *operation, const uint8_t *nonce, size_t nonce_length)
static psa_key_lifetime_t psa_get_key_lifetime(const psa_key_attributes_t *attributes)
psa_status_t psa_key_derivation_get_capacity(const psa_key_derivation_operation_t *operation, size_t *capacity)
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)
static void psa_set_key_type(psa_key_attributes_t *attributes, psa_key_type_t type)
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)
static void psa_set_key_id(psa_key_attributes_t *attributes, mbedtls_svc_key_id_t key)
static size_t psa_get_key_bits(const psa_key_attributes_t *attributes)
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 cryptography module: macros to build and analyze integer values.
psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, uint8_t *output, size_t output_size, size_t *output_length)
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_aead_update_ad(psa_aead_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_aead_set_lengths(psa_aead_operation_t *operation, size_t ad_length, size_t plaintext_length)
psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes, mbedtls_key_owner_id_t owner)
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...
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.
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_hash_clone(const psa_hash_operation_t *source_operation, psa_hash_operation_t *target_operation)
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_purge_key(mbedtls_svc_key_id_t 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)
psa_status_t psa_get_key_attributes(mbedtls_svc_key_id_t key, psa_key_attributes_t *attributes)
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)
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition: crypto_types.h:134
psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, const uint8_t *iv, size_t iv_length)
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_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)
static psa_cipher_operation_t psa_cipher_operation_init(void)
psa_status_t psa_hash_setup(psa_hash_operation_t *operation, psa_algorithm_t alg)
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 cryptography module: Mbed TLS platform definitions.
psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, uint8_t *iv, size_t iv_size, size_t *iv_length)
uint32_t psa_key_usage_t
Encoding of permitted usage on a key.
Definition: crypto_types.h:323
static void psa_set_key_algorithm(psa_key_attributes_t *attributes, psa_algorithm_t alg)
uint16_t psa_key_type_t
Encoding of a key type.
Definition: crypto_types.h:78
psa_status_t psa_crypto_init(void)
Library initialization.
psa_status_t psa_key_derivation_output_bytes(psa_key_derivation_operation_t *operation, uint8_t *output, size_t output_length)
static psa_aead_operation_t psa_aead_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 cryptography module: Mbed TLS buffer size macros.
static psa_key_type_t psa_get_key_type(const psa_key_attributes_t *attributes)
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)
static psa_key_usage_t psa_get_key_usage_flags(const psa_key_attributes_t *attributes)
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_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_hash_abort(psa_hash_operation_t *operation)
static psa_key_attributes_t psa_key_attributes_init(void)
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_destroy_key(mbedtls_svc_key_id_t key)
Destroy a key.
psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
The context for PSA interruptible hash signing.
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_setup(psa_key_derivation_operation_t *operation, psa_algorithm_t alg)
static mbedtls_svc_key_id_t psa_get_key_id(const psa_key_attributes_t *attributes)
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_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_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)
The context for PSA interruptible hash verification.
uint32_t psa_key_lifetime_t
Definition: crypto_types.h:183
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_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.
static psa_mac_operation_t psa_mac_operation_init(void)
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)
int32_t psa_status_t
Function return status.
Definition: crypto_types.h:59
psa_status_t psa_mac_update(psa_mac_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation)
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_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...
psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
psa_status_t psa_hash_finish(psa_hash_operation_t *operation, uint8_t *hash, size_t hash_size, size_t *hash_length)
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_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.