Mbed TLS v4.0.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 2
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
152 
166 static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes,
167  mbedtls_key_owner_id_t owner);
168 #endif
169 
196 static void psa_set_key_lifetime(psa_key_attributes_t *attributes,
197  psa_key_lifetime_t lifetime);
198 
212  const psa_key_attributes_t *attributes);
213 
225  const psa_key_attributes_t *attributes);
226 
243 static void psa_set_key_usage_flags(psa_key_attributes_t *attributes,
244  psa_key_usage_t usage_flags);
245 
257  const psa_key_attributes_t *attributes);
258 
289 static void psa_set_key_algorithm(psa_key_attributes_t *attributes,
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 
351 static psa_key_type_t psa_get_key_type(const psa_key_attributes_t *attributes);
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 
753  uint8_t *data,
754  size_t data_size,
755  size_t *data_length);
756 
828  uint8_t *data,
829  size_t data_size,
830  size_t *data_length);
831 
832 
833 
872  const uint8_t *input,
873  size_t input_length,
874  uint8_t *hash,
875  size_t hash_size,
876  size_t *hash_length);
877 
907  const uint8_t *input,
908  size_t input_length,
909  const uint8_t *hash,
910  size_t hash_length);
911 
941 
951 
1001  psa_algorithm_t alg);
1002 
1027  const uint8_t *input,
1028  size_t input_length);
1029 
1073  uint8_t *hash,
1074  size_t hash_size,
1075  size_t *hash_length);
1076 
1114  const uint8_t *hash,
1115  size_t hash_length);
1116 
1143 
1171 psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation,
1172  psa_hash_operation_t *target_operation);
1173 
1223  psa_algorithm_t alg,
1224  const uint8_t *input,
1225  size_t input_length,
1226  uint8_t *mac,
1227  size_t mac_size,
1228  size_t *mac_length);
1229 
1264  psa_algorithm_t alg,
1265  const uint8_t *input,
1266  size_t input_length,
1267  const uint8_t *mac,
1268  size_t mac_length);
1269 
1300 
1310 
1371  psa_algorithm_t alg);
1372 
1433  psa_algorithm_t alg);
1434 
1462  const uint8_t *input,
1463  size_t input_length);
1464 
1511  uint8_t *mac,
1512  size_t mac_size,
1513  size_t *mac_length);
1514 
1554  const uint8_t *mac,
1555  size_t mac_length);
1556 
1583 
1630  psa_algorithm_t alg,
1631  const uint8_t *input,
1632  size_t input_length,
1633  uint8_t *output,
1634  size_t output_size,
1635  size_t *output_length);
1636 
1677  psa_algorithm_t alg,
1678  const uint8_t *input,
1679  size_t input_length,
1680  uint8_t *output,
1681  size_t output_size,
1682  size_t *output_length);
1683 
1713 
1723 
1785  psa_algorithm_t alg);
1786 
1848  psa_algorithm_t alg);
1849 
1885  uint8_t *iv,
1886  size_t iv_size,
1887  size_t *iv_length);
1888 
1926  const uint8_t *iv,
1927  size_t iv_length);
1928 
1967  const uint8_t *input,
1968  size_t input_length,
1969  uint8_t *output,
1970  size_t output_size,
1971  size_t *output_length);
1972 
2019  uint8_t *output,
2020  size_t output_size,
2021  size_t *output_length);
2022 
2049 
2118  psa_algorithm_t alg,
2119  const uint8_t *nonce,
2120  size_t nonce_length,
2121  const uint8_t *additional_data,
2122  size_t additional_data_length,
2123  const uint8_t *plaintext,
2124  size_t plaintext_length,
2125  uint8_t *ciphertext,
2126  size_t ciphertext_size,
2127  size_t *ciphertext_length);
2128 
2191  psa_algorithm_t alg,
2192  const uint8_t *nonce,
2193  size_t nonce_length,
2194  const uint8_t *additional_data,
2195  size_t additional_data_length,
2196  const uint8_t *ciphertext,
2197  size_t ciphertext_length,
2198  uint8_t *plaintext,
2199  size_t plaintext_size,
2200  size_t *plaintext_length);
2201 
2231 
2241 
2310  psa_algorithm_t alg);
2311 
2376  psa_algorithm_t alg);
2377 
2414  uint8_t *nonce,
2415  size_t nonce_size,
2416  size_t *nonce_length);
2417 
2454  const uint8_t *nonce,
2455  size_t nonce_length);
2456 
2499  size_t ad_length,
2500  size_t plaintext_length);
2501 
2547  const uint8_t *input,
2548  size_t input_length);
2549 
2631  const uint8_t *input,
2632  size_t input_length,
2633  uint8_t *output,
2634  size_t output_size,
2635  size_t *output_length);
2636 
2717  uint8_t *ciphertext,
2718  size_t ciphertext_size,
2719  size_t *ciphertext_length,
2720  uint8_t *tag,
2721  size_t tag_size,
2722  size_t *tag_length);
2723 
2800  uint8_t *plaintext,
2801  size_t plaintext_size,
2802  size_t *plaintext_length,
2803  const uint8_t *tag,
2804  size_t tag_length);
2805 
2832 
2898  psa_algorithm_t alg,
2899  const uint8_t *input,
2900  size_t input_length,
2901  uint8_t *signature,
2902  size_t signature_size,
2903  size_t *signature_length);
2904 
2950  psa_algorithm_t alg,
2951  const uint8_t *input,
2952  size_t input_length,
2953  const uint8_t *signature,
2954  size_t signature_length);
2955 
3003  psa_algorithm_t alg,
3004  const uint8_t *hash,
3005  size_t hash_length,
3006  uint8_t *signature,
3007  size_t signature_size,
3008  size_t *signature_length);
3009 
3054  psa_algorithm_t alg,
3055  const uint8_t *hash,
3056  size_t hash_length,
3057  const uint8_t *signature,
3058  size_t signature_length);
3059 
3112  psa_algorithm_t alg,
3113  const uint8_t *input,
3114  size_t input_length,
3115  const uint8_t *salt,
3116  size_t salt_length,
3117  uint8_t *output,
3118  size_t output_size,
3119  size_t *output_length);
3120 
3173  psa_algorithm_t alg,
3174  const uint8_t *input,
3175  size_t input_length,
3176  const uint8_t *salt,
3177  size_t salt_length,
3178  uint8_t *output,
3179  size_t output_size,
3180  size_t *output_length);
3181 
3218 
3228 
3289  psa_key_derivation_operation_t *operation,
3290  psa_algorithm_t alg);
3291 
3312  const psa_key_derivation_operation_t *operation,
3313  size_t *capacity);
3314 
3340  psa_key_derivation_operation_t *operation,
3341  size_t capacity);
3342 
3350 #define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t) (-1))
3351 
3393  psa_key_derivation_operation_t *operation,
3395  const uint8_t *data,
3396  size_t data_length);
3397 
3436  psa_key_derivation_operation_t *operation,
3438  uint64_t value);
3439 
3504  psa_key_derivation_operation_t *operation,
3506  mbedtls_svc_key_id_t key);
3507 
3572  psa_key_derivation_operation_t *operation,
3574  mbedtls_svc_key_id_t private_key,
3575  const uint8_t *peer_key,
3576  size_t peer_key_length);
3577 
3619  psa_key_derivation_operation_t *operation,
3620  uint8_t *output,
3621  size_t output_length);
3622 
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 
3899  psa_key_derivation_operation_t *operation,
3900  const uint8_t *expected,
3901  size_t expected_length);
3902 
3964  psa_key_derivation_operation_t *operation,
3965  psa_key_id_t expected);
3966 
3991  psa_key_derivation_operation_t *operation);
3992 
4044  mbedtls_svc_key_id_t private_key,
4045  const uint8_t *peer_key,
4046  size_t peer_key_length,
4047  uint8_t *output,
4048  size_t output_size,
4049  size_t *output_length);
4050 
4129  const uint8_t *peer_key,
4130  size_t peer_key_length,
4131  psa_algorithm_t alg,
4132  const psa_key_attributes_t *attributes,
4133  mbedtls_svc_key_id_t *key);
4164 psa_status_t psa_generate_random(uint8_t *output,
4165  size_t output_size);
4166 
4216  mbedtls_svc_key_id_t *key);
4217 
4269  const psa_custom_key_parameters_t *custom,
4270  const uint8_t *custom_data,
4271  size_t custom_data_length,
4272  mbedtls_svc_key_id_t *key);
4273 
4312 
4345 
4419 void psa_interruptible_set_max_ops(uint32_t max_ops);
4420 
4438 uint32_t psa_interruptible_get_max_ops(void);
4439 
4466 uint32_t psa_sign_hash_get_num_ops(
4467  const psa_sign_hash_interruptible_operation_t *operation);
4468 
4495 
4570  const uint8_t *hash, size_t hash_length);
4571 
4662  uint8_t *signature, size_t signature_size,
4663  size_t *signature_length);
4664 
4704 
4782  const uint8_t *hash, size_t hash_length,
4783  const uint8_t *signature, size_t signature_length);
4784 
4858 
4898 
4899 
4941 
4966 
5125  psa_key_agreement_iop_t *operation,
5126  mbedtls_svc_key_id_t private_key,
5127  const uint8_t *peer_key,
5128  size_t peer_key_length,
5129  psa_algorithm_t alg,
5130  const psa_key_attributes_t *attributes);
5131 
5210  psa_key_agreement_iop_t *operation,
5211  mbedtls_svc_key_id_t *key);
5212 
5249  psa_key_agreement_iop_t *operation);
5250 
5290 
5314 
5424  psa_generate_key_iop_t *operation,
5425  const psa_key_attributes_t *attributes);
5426 
5500  psa_generate_key_iop_t *operation,
5501  mbedtls_svc_key_id_t *key);
5502 
5539  psa_generate_key_iop_t *operation);
5540 
5580 
5604 
5680  mbedtls_svc_key_id_t key);
5681 
5757  uint8_t *data,
5758  size_t data_size,
5759  size_t *data_length);
5760 
5799 
5802 #ifdef __cplusplus
5803 }
5804 #endif
5805 
5806 /* The file "crypto_extra.h" contains vendor-specific definitions. This
5807  * can include vendor-defined algorithms, extra functions, etc. */
5808 #include "crypto_extra.h"
5809 
5810 #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)
uint32_t psa_export_public_key_iop_get_num_ops(psa_export_public_key_iop_t *operation)
Get the number of ops that an export public-key operation has taken so far. If the operation has comp...
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_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)
uint32_t psa_key_agreement_iop_get_num_ops(psa_key_agreement_iop_t *operation)
Get the number of ops that a key agreement operation has taken so far. If the operation has completed...
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_generate_key_iop_abort(psa_generate_key_iop_t *operation)
Abort a key generation 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_key_agreement_iop_setup(psa_key_agreement_iop_t *operation, mbedtls_svc_key_id_t private_key, const uint8_t *peer_key, size_t peer_key_length, psa_algorithm_t alg, const psa_key_attributes_t *attributes)
Start a key agreement operation, in an interruptible manner.
psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, const uint8_t *mac, size_t mac_length)
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_iop_complete(psa_export_public_key_iop_t *operation, uint8_t *data, size_t data_size, size_t *data_length)
Continue and eventually complete the action of exporting a public key, in an interruptible manner...
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)
The context for PSA interruptible key generation.
uint16_t psa_key_derivation_step_t
Encoding of the step of a key derivation.
Definition: crypto_types.h:438
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:268
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)
psa_status_t psa_generate_key_iop_setup(psa_generate_key_iop_t *operation, const psa_key_attributes_t *attributes)
Start a key generation operation, in an interruptible manner.
int32_t mbedtls_key_owner_id_t
psa_status_t psa_key_agreement(mbedtls_svc_key_id_t private_key, const uint8_t *peer_key, size_t peer_key_length, psa_algorithm_t alg, const psa_key_attributes_t *attributes, mbedtls_svc_key_id_t *key)
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_key_derivation_verify_bytes(psa_key_derivation_operation_t *operation, const uint8_t *expected, size_t expected_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_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_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)
psa_status_t psa_key_agreement_iop_abort(psa_key_agreement_iop_t *operation)
Abort a key agreement operation.
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_generate_key_iop_get_num_ops(psa_generate_key_iop_t *operation)
Get the number of ops that a key generation operation has taken so far. If the operation has complete...
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition: crypto_types.h:127
psa_status_t psa_export_public_key_iop_abort(psa_export_public_key_iop_t *operation)
Abort an interruptible public-key export operation.
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 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:316
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:71
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)
psa_status_t psa_generate_key_iop_complete(psa_generate_key_iop_t *operation, mbedtls_svc_key_id_t *key)
Continue and eventually complete the action of key generation, in an interruptible manner...
static psa_key_usage_t psa_get_key_usage_flags(const psa_key_attributes_t *attributes)
psa_status_t psa_export_public_key_iop_setup(psa_export_public_key_iop_t *operation, mbedtls_svc_key_id_t key)
Start an interruptible operation to export a public key or the public part of a key pair in binary fo...
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_agreement_iop_complete(psa_key_agreement_iop_t *operation, mbedtls_svc_key_id_t *key)
Continue and eventually complete the action of key agreement, in an interruptible manner...
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:176
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.
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.
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:52
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)
The context for PSA interruptible export public-key.
The context for PSA interruptible key agreement.
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.