mbed TLS v2.28.0
crypto.h
Go to the documentation of this file.
1 
5 /*
6  * Copyright The Mbed TLS Contributors
7  * SPDX-License-Identifier: Apache-2.0
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License"); you may
10  * not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */
21 
22 #ifndef PSA_CRYPTO_H
23 #define PSA_CRYPTO_H
24 
25 #include "crypto_platform.h"
26 
27 #include <stddef.h>
28 
29 #ifdef __DOXYGEN_ONLY__
30 /* This __DOXYGEN_ONLY__ block contains mock definitions for things that
31  * must be defined in the crypto_platform.h header. These mock definitions
32  * are present in this file as a convenience to generate pretty-printed
33  * documentation that includes those definitions. */
34 
40 #endif /* __DOXYGEN_ONLY__ */
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
46 /* The file "crypto_types.h" declares types that encode errors,
47  * algorithms, key types, policies, etc. */
48 #include "crypto_types.h"
49 
57 #define PSA_CRYPTO_API_VERSION_MAJOR 1
58 
62 #define PSA_CRYPTO_API_VERSION_MINOR 0
63 
66 /* The file "crypto_values.h" declares macros to build and analyze values
67  * of integral types defined in "crypto_types.h". */
68 #include "crypto_values.h"
69 
103 
115 #ifdef __DOXYGEN_ONLY__
116 /* This is an example definition for documentation purposes.
117  * Implementations should define a suitable value in `crypto_struct.h`.
118  */
119 #define PSA_KEY_ATTRIBUTES_INIT {0}
120 #endif
121 
125 
146 static void psa_set_key_id( psa_key_attributes_t *attributes,
147  mbedtls_svc_key_id_t key );
148 
149 #ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
150 
164 static void mbedtls_set_key_owner_id( psa_key_attributes_t *attributes,
165  mbedtls_key_owner_id_t owner );
166 #endif
167 
193 static void psa_set_key_lifetime(psa_key_attributes_t *attributes,
194  psa_key_lifetime_t lifetime);
195 
209  const psa_key_attributes_t *attributes);
210 
222  const psa_key_attributes_t *attributes);
223 
240 static void psa_set_key_usage_flags(psa_key_attributes_t *attributes,
241  psa_key_usage_t usage_flags);
242 
254  const psa_key_attributes_t *attributes);
255 
286 static void psa_set_key_algorithm(psa_key_attributes_t *attributes,
287  psa_algorithm_t alg);
288 
289 
301  const psa_key_attributes_t *attributes);
302 
317 static void psa_set_key_type(psa_key_attributes_t *attributes,
318  psa_key_type_t type);
319 
320 
335 static void psa_set_key_bits(psa_key_attributes_t *attributes,
336  size_t bits);
337 
348 static psa_key_type_t psa_get_key_type(const psa_key_attributes_t *attributes);
349 
360 static size_t psa_get_key_bits(const psa_key_attributes_t *attributes);
361 
391  psa_key_attributes_t *attributes);
392 
406 
435 
528  const psa_key_attributes_t *attributes,
529  mbedtls_svc_key_id_t *target_key);
530 
531 
578 
659  const uint8_t *data,
660  size_t data_length,
661  mbedtls_svc_key_id_t *key);
662 
663 
664 
754  uint8_t *data,
755  size_t data_size,
756  size_t *data_length);
757 
829  uint8_t *data,
830  size_t data_size,
831  size_t *data_length);
832 
833 
834 
874  const uint8_t *input,
875  size_t input_length,
876  uint8_t *hash,
877  size_t hash_size,
878  size_t *hash_length);
879 
910  const uint8_t *input,
911  size_t input_length,
912  const uint8_t *hash,
913  size_t hash_length);
914 
944 
950 #ifdef __DOXYGEN_ONLY__
951 /* This is an example definition for documentation purposes.
952  * Implementations should define a suitable value in `crypto_struct.h`.
953  */
954 #define PSA_HASH_OPERATION_INIT {0}
955 #endif
956 
960 
1011  psa_algorithm_t alg);
1012 
1038  const uint8_t *input,
1039  size_t input_length);
1040 
1085  uint8_t *hash,
1086  size_t hash_size,
1087  size_t *hash_length);
1088 
1127  const uint8_t *hash,
1128  size_t hash_length);
1129 
1156 
1186 psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation,
1187  psa_hash_operation_t *target_operation);
1188 
1238  psa_algorithm_t alg,
1239  const uint8_t *input,
1240  size_t input_length,
1241  uint8_t *mac,
1242  size_t mac_size,
1243  size_t *mac_length);
1244 
1279  psa_algorithm_t alg,
1280  const uint8_t *input,
1281  size_t input_length,
1282  const uint8_t *mac,
1283  size_t mac_length);
1284 
1314 
1320 #ifdef __DOXYGEN_ONLY__
1321 /* This is an example definition for documentation purposes.
1322  * Implementations should define a suitable value in `crypto_struct.h`.
1323  */
1324 #define PSA_MAC_OPERATION_INIT {0}
1325 #endif
1326 
1330 
1392  psa_algorithm_t alg);
1393 
1455  psa_algorithm_t alg);
1456 
1485  const uint8_t *input,
1486  size_t input_length);
1487 
1535  uint8_t *mac,
1536  size_t mac_size,
1537  size_t *mac_length);
1538 
1579  const uint8_t *mac,
1580  size_t mac_length);
1581 
1608 
1655  psa_algorithm_t alg,
1656  const uint8_t *input,
1657  size_t input_length,
1658  uint8_t *output,
1659  size_t output_size,
1660  size_t *output_length);
1661 
1702  psa_algorithm_t alg,
1703  const uint8_t *input,
1704  size_t input_length,
1705  uint8_t *output,
1706  size_t output_size,
1707  size_t *output_length);
1708 
1738 
1744 #ifdef __DOXYGEN_ONLY__
1745 /* This is an example definition for documentation purposes.
1746  * Implementations should define a suitable value in `crypto_struct.h`.
1747  */
1748 #define PSA_CIPHER_OPERATION_INIT {0}
1749 #endif
1750 
1754 
1817  psa_algorithm_t alg);
1818 
1881  psa_algorithm_t alg);
1882 
1918  uint8_t *iv,
1919  size_t iv_size,
1920  size_t *iv_length);
1921 
1960  const uint8_t *iv,
1961  size_t iv_length);
1962 
2002  const uint8_t *input,
2003  size_t input_length,
2004  uint8_t *output,
2005  size_t output_size,
2006  size_t *output_length);
2007 
2055  uint8_t *output,
2056  size_t output_size,
2057  size_t *output_length);
2058 
2085 
2154  psa_algorithm_t alg,
2155  const uint8_t *nonce,
2156  size_t nonce_length,
2157  const uint8_t *additional_data,
2158  size_t additional_data_length,
2159  const uint8_t *plaintext,
2160  size_t plaintext_length,
2161  uint8_t *ciphertext,
2162  size_t ciphertext_size,
2163  size_t *ciphertext_length);
2164 
2227  psa_algorithm_t alg,
2228  const uint8_t *nonce,
2229  size_t nonce_length,
2230  const uint8_t *additional_data,
2231  size_t additional_data_length,
2232  const uint8_t *ciphertext,
2233  size_t ciphertext_length,
2234  uint8_t *plaintext,
2235  size_t plaintext_size,
2236  size_t *plaintext_length);
2237 
2267 
2273 #ifdef __DOXYGEN_ONLY__
2274 /* This is an example definition for documentation purposes.
2275  * Implementations should define a suitable value in `crypto_struct.h`.
2276  */
2277 #define PSA_AEAD_OPERATION_INIT {0}
2278 #endif
2279 
2283 
2353 
2420 
2458  uint8_t *nonce,
2459  size_t nonce_size,
2460  size_t *nonce_length);
2461 
2499  const uint8_t *nonce,
2500  size_t nonce_length);
2501 
2545  size_t ad_length,
2546  size_t plaintext_length);
2547 
2594  const uint8_t *input,
2595  size_t input_length);
2596 
2680  const uint8_t *input,
2681  size_t input_length,
2682  uint8_t *output,
2683  size_t output_size,
2684  size_t *output_length);
2685 
2768  uint8_t *ciphertext,
2769  size_t ciphertext_size,
2770  size_t *ciphertext_length,
2771  uint8_t *tag,
2772  size_t tag_size,
2773  size_t *tag_length);
2774 
2853  uint8_t *plaintext,
2854  size_t plaintext_size,
2855  size_t *plaintext_length,
2856  const uint8_t *tag,
2857  size_t tag_length);
2858 
2885 
2952  const uint8_t * input,
2953  size_t input_length,
2954  uint8_t * signature,
2955  size_t signature_size,
2956  size_t * signature_length );
2957 
3004  const uint8_t * input,
3005  size_t input_length,
3006  const uint8_t * signature,
3007  size_t signature_length );
3008 
3057  const uint8_t *hash,
3058  size_t hash_length,
3059  uint8_t *signature,
3060  size_t signature_size,
3061  size_t *signature_length);
3062 
3108  const uint8_t *hash,
3109  size_t hash_length,
3110  const uint8_t *signature,
3111  size_t signature_length);
3112 
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 
3227  const uint8_t *input,
3228  size_t input_length,
3229  const uint8_t *salt,
3230  size_t salt_length,
3231  uint8_t *output,
3232  size_t output_size,
3233  size_t *output_length);
3234 
3271 
3277 #ifdef __DOXYGEN_ONLY__
3278 /* This is an example definition for documentation purposes.
3279  * Implementations should define a suitable value in `crypto_struct.h`.
3280  */
3281 #define PSA_KEY_DERIVATION_OPERATION_INIT {0}
3282 #endif
3283 
3287 
3348  psa_key_derivation_operation_t *operation,
3350 
3372  const psa_key_derivation_operation_t *operation,
3373  size_t *capacity);
3374 
3401  psa_key_derivation_operation_t *operation,
3402  size_t capacity);
3403 
3411 #define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t)(-1))
3412 
3456  psa_key_derivation_operation_t *operation,
3458  const uint8_t *data,
3459  size_t data_length);
3460 
3509  psa_key_derivation_operation_t *operation,
3511  mbedtls_svc_key_id_t key);
3512 
3579  psa_key_derivation_operation_t *operation,
3581  mbedtls_svc_key_id_t private_key,
3582  const uint8_t *peer_key,
3583  size_t peer_key_length);
3584 
3624  psa_key_derivation_operation_t *operation,
3625  uint8_t *output,
3626  size_t output_length);
3627 
3769  const psa_key_attributes_t *attributes,
3770  psa_key_derivation_operation_t *operation,
3771  mbedtls_svc_key_id_t *key);
3772 
3797  psa_key_derivation_operation_t *operation);
3798 
3851  mbedtls_svc_key_id_t private_key,
3852  const uint8_t *peer_key,
3853  size_t peer_key_length,
3854  uint8_t *output,
3855  size_t output_size,
3856  size_t *output_length);
3857 
3888 psa_status_t psa_generate_random(uint8_t *output,
3889  size_t output_size);
3890 
3936  mbedtls_svc_key_id_t *key);
3937 
3940 #ifdef __cplusplus
3941 }
3942 #endif
3943 
3944 /* The file "crypto_sizes.h" contains definitions for size calculation
3945  * macros whose definitions are implementation-specific. */
3946 #include "crypto_sizes.h"
3947 
3948 /* The file "crypto_struct.h" contains definitions for
3949  * implementation-specific structs that are declared above. */
3950 #include "crypto_struct.h"
3951 
3952 /* The file "crypto_extra.h" contains vendor-specific definitions. This
3953  * can include vendor-defined algorithms, extra functions, etc. */
3954 #include "crypto_extra.h"
3955 
3956 #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_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_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.
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_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_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:379
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.
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_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)
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_algorithm_t alg
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_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:105
psa_algorithm_t alg
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:250
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:73
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_key_id_t mbedtls_svc_key_id_t
Definition: crypto_types.h:227
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)
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)
uint32_t psa_key_lifetime_t
Definition: crypto_types.h:146
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)
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:62
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_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)