Mbed TLS v3.5.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 #if defined(MBEDTLS_PSA_CRYPTO_PLATFORM_FILE)
26 #include MBEDTLS_PSA_CRYPTO_PLATFORM_FILE
27 #else
28 #include "crypto_platform.h"
29 #endif
30 
31 #include <stddef.h>
32 
33 #ifdef __DOXYGEN_ONLY__
34 /* This __DOXYGEN_ONLY__ block contains mock definitions for things that
35  * must be defined in the crypto_platform.h header. These mock definitions
36  * are present in this file as a convenience to generate pretty-printed
37  * documentation that includes those definitions. */
38 
44 #endif /* __DOXYGEN_ONLY__ */
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
50 /* The file "crypto_types.h" declares types that encode errors,
51  * algorithms, key types, policies, etc. */
52 #include "crypto_types.h"
53 
61 #define PSA_CRYPTO_API_VERSION_MAJOR 1
62 
66 #define PSA_CRYPTO_API_VERSION_MINOR 0
67 
70 /* The file "crypto_values.h" declares macros to build and analyze values
71  * of integral types defined in "crypto_types.h". */
72 #include "crypto_values.h"
73 
107 
123 
144 static void psa_set_key_id(psa_key_attributes_t *attributes,
146 
147 #ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
162 static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes,
163  mbedtls_key_owner_id_t owner);
164 #endif
165 
192  psa_key_lifetime_t lifetime);
193 
207  const psa_key_attributes_t *attributes);
208 
220  const psa_key_attributes_t *attributes);
221 
239  psa_key_usage_t usage_flags);
240 
252  const psa_key_attributes_t *attributes);
253 
285  psa_algorithm_t alg);
286 
287 
299  const psa_key_attributes_t *attributes);
300 
315 static void psa_set_key_type(psa_key_attributes_t *attributes,
316  psa_key_type_t type);
317 
318 
333 static void psa_set_key_bits(psa_key_attributes_t *attributes,
334  size_t bits);
335 
347 
358 static size_t psa_get_key_bits(const psa_key_attributes_t *attributes);
359 
389  psa_key_attributes_t *attributes);
390 
404 
433 
523  const psa_key_attributes_t *attributes,
524  mbedtls_svc_key_id_t *target_key);
525 
526 
573 
652  const uint8_t *data,
653  size_t data_length,
654  mbedtls_svc_key_id_t *key);
655 
656 
657 
747  uint8_t *data,
748  size_t data_size,
749  size_t *data_length);
750 
822  uint8_t *data,
823  size_t data_size,
824  size_t *data_length);
825 
826 
827 
866  const uint8_t *input,
867  size_t input_length,
868  uint8_t *hash,
869  size_t hash_size,
870  size_t *hash_length);
871 
901  const uint8_t *input,
902  size_t input_length,
903  const uint8_t *hash,
904  size_t hash_length);
905 
935 
945 
995  psa_algorithm_t alg);
996 
1021  const uint8_t *input,
1022  size_t input_length);
1023 
1067  uint8_t *hash,
1068  size_t hash_size,
1069  size_t *hash_length);
1070 
1108  const uint8_t *hash,
1109  size_t hash_length);
1110 
1137 
1166  psa_hash_operation_t *target_operation);
1167 
1217  psa_algorithm_t alg,
1218  const uint8_t *input,
1219  size_t input_length,
1220  uint8_t *mac,
1221  size_t mac_size,
1222  size_t *mac_length);
1223 
1258  psa_algorithm_t alg,
1259  const uint8_t *input,
1260  size_t input_length,
1261  const uint8_t *mac,
1262  size_t mac_length);
1263 
1294 
1304 
1365  psa_algorithm_t alg);
1366 
1427  psa_algorithm_t alg);
1428 
1456  const uint8_t *input,
1457  size_t input_length);
1458 
1505  uint8_t *mac,
1506  size_t mac_size,
1507  size_t *mac_length);
1508 
1548  const uint8_t *mac,
1549  size_t mac_length);
1550 
1577 
1624  psa_algorithm_t alg,
1625  const uint8_t *input,
1626  size_t input_length,
1627  uint8_t *output,
1628  size_t output_size,
1629  size_t *output_length);
1630 
1671  psa_algorithm_t alg,
1672  const uint8_t *input,
1673  size_t input_length,
1674  uint8_t *output,
1675  size_t output_size,
1676  size_t *output_length);
1677 
1707 
1717 
1779  psa_algorithm_t alg);
1780 
1842  psa_algorithm_t alg);
1843 
1879  uint8_t *iv,
1880  size_t iv_size,
1881  size_t *iv_length);
1882 
1920  const uint8_t *iv,
1921  size_t iv_length);
1922 
1961  const uint8_t *input,
1962  size_t input_length,
1963  uint8_t *output,
1964  size_t output_size,
1965  size_t *output_length);
1966 
2013  uint8_t *output,
2014  size_t output_size,
2015  size_t *output_length);
2016 
2043 
2112  psa_algorithm_t alg,
2113  const uint8_t *nonce,
2114  size_t nonce_length,
2115  const uint8_t *additional_data,
2116  size_t additional_data_length,
2117  const uint8_t *plaintext,
2118  size_t plaintext_length,
2119  uint8_t *ciphertext,
2120  size_t ciphertext_size,
2121  size_t *ciphertext_length);
2122 
2185  psa_algorithm_t alg,
2186  const uint8_t *nonce,
2187  size_t nonce_length,
2188  const uint8_t *additional_data,
2189  size_t additional_data_length,
2190  const uint8_t *ciphertext,
2191  size_t ciphertext_length,
2192  uint8_t *plaintext,
2193  size_t plaintext_size,
2194  size_t *plaintext_length);
2195 
2225 
2235 
2304  psa_algorithm_t alg);
2305 
2370  psa_algorithm_t alg);
2371 
2408  uint8_t *nonce,
2409  size_t nonce_size,
2410  size_t *nonce_length);
2411 
2448  const uint8_t *nonce,
2449  size_t nonce_length);
2450 
2493  size_t ad_length,
2494  size_t plaintext_length);
2495 
2541  const uint8_t *input,
2542  size_t input_length);
2543 
2625  const uint8_t *input,
2626  size_t input_length,
2627  uint8_t *output,
2628  size_t output_size,
2629  size_t *output_length);
2630 
2711  uint8_t *ciphertext,
2712  size_t ciphertext_size,
2713  size_t *ciphertext_length,
2714  uint8_t *tag,
2715  size_t tag_size,
2716  size_t *tag_length);
2717 
2794  uint8_t *plaintext,
2795  size_t plaintext_size,
2796  size_t *plaintext_length,
2797  const uint8_t *tag,
2798  size_t tag_length);
2799 
2826 
2892  psa_algorithm_t alg,
2893  const uint8_t *input,
2894  size_t input_length,
2895  uint8_t *signature,
2896  size_t signature_size,
2897  size_t *signature_length);
2898 
2944  psa_algorithm_t alg,
2945  const uint8_t *input,
2946  size_t input_length,
2947  const uint8_t *signature,
2948  size_t signature_length);
2949 
2997  psa_algorithm_t alg,
2998  const uint8_t *hash,
2999  size_t hash_length,
3000  uint8_t *signature,
3001  size_t signature_size,
3002  size_t *signature_length);
3003 
3048  psa_algorithm_t alg,
3049  const uint8_t *hash,
3050  size_t hash_length,
3051  const uint8_t *signature,
3052  size_t signature_length);
3053 
3106  psa_algorithm_t alg,
3107  const uint8_t *input,
3108  size_t input_length,
3109  const uint8_t *salt,
3110  size_t salt_length,
3111  uint8_t *output,
3112  size_t output_size,
3113  size_t *output_length);
3114 
3167  psa_algorithm_t alg,
3168  const uint8_t *input,
3169  size_t input_length,
3170  const uint8_t *salt,
3171  size_t salt_length,
3172  uint8_t *output,
3173  size_t output_size,
3174  size_t *output_length);
3175 
3212 
3222 
3282  psa_key_derivation_operation_t *operation,
3283  psa_algorithm_t alg);
3284 
3305  const psa_key_derivation_operation_t *operation,
3306  size_t *capacity);
3307 
3333  psa_key_derivation_operation_t *operation,
3334  size_t capacity);
3335 
3343 #define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t) (-1))
3344 
3386  psa_key_derivation_operation_t *operation,
3388  const uint8_t *data,
3389  size_t data_length);
3390 
3429  psa_key_derivation_operation_t *operation,
3431  uint64_t value);
3432 
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 
3761  const psa_key_attributes_t *attributes,
3762  psa_key_derivation_operation_t *operation,
3763  mbedtls_svc_key_id_t *key);
3764 
3819  psa_key_derivation_operation_t *operation,
3820  const uint8_t *expected_output,
3821  size_t output_length);
3822 
3883  psa_key_derivation_operation_t *operation,
3884  psa_key_id_t expected);
3885 
3910  psa_key_derivation_operation_t *operation);
3911 
3963  mbedtls_svc_key_id_t private_key,
3964  const uint8_t *peer_key,
3965  size_t peer_key_length,
3966  uint8_t *output,
3967  size_t output_size,
3968  size_t *output_length);
3969 
4001  size_t output_size);
4002 
4048  mbedtls_svc_key_id_t *key);
4049 
4088 
4121 
4194 void psa_interruptible_set_max_ops(uint32_t max_ops);
4195 
4214 
4242  const psa_sign_hash_interruptible_operation_t *operation);
4243 
4270 
4345  const uint8_t *hash, size_t hash_length);
4346 
4437  uint8_t *signature, size_t signature_size,
4438  size_t *signature_length);
4439 
4479 
4557  const uint8_t *hash, size_t hash_length,
4558  const uint8_t *signature, size_t signature_length);
4559 
4633 
4673 
4674 
4677 #ifdef __cplusplus
4678 }
4679 #endif
4680 
4681 /* The file "crypto_sizes.h" contains definitions for size calculation
4682  * macros whose definitions are implementation-specific. */
4683 #include "crypto_sizes.h"
4684 
4685 /* The file "crypto_struct.h" contains definitions for
4686  * implementation-specific structs that are declared above. */
4687 #if defined(MBEDTLS_PSA_CRYPTO_STRUCT_FILE)
4688 #include MBEDTLS_PSA_CRYPTO_STRUCT_FILE
4689 #else
4690 #include "crypto_struct.h"
4691 #endif
4692 
4693 /* The file "crypto_extra.h" contains vendor-specific definitions. This
4694  * can include vendor-defined algorithms, extra functions, etc. */
4695 #include "crypto_extra.h"
4696 
4697 #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:83
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition: crypto_types.h:139
uint16_t psa_key_derivation_step_t
Encoding of the step of a key derivation.
Definition: crypto_types.h:461
int32_t psa_status_t
Function return status.
Definition: crypto_types.h:64
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_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_output, size_t output_length)
uint32_t psa_key_id_t
Definition: crypto_types.h:280
uint32_t psa_key_lifetime_t
Definition: crypto_types.h:188
psa_key_id_t mbedtls_svc_key_id_t
Definition: crypto_types.h:297
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:328
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.
The context for PSA interruptible hash signing.
The context for PSA interruptible hash verification.