Mbed TLS v3.6.4
Loading...
Searching...
No Matches
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
30
32#endif /* __DOXYGEN_ONLY__ */
33
34#ifdef __cplusplus
35extern "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
45
49#define PSA_CRYPTO_API_VERSION_MAJOR 1
50
54#define PSA_CRYPTO_API_VERSION_MINOR 0
55
57
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
77
107
109
113
119
123
148static void psa_set_key_id(psa_key_attributes_t *attributes,
150
151#ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
166static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes,
167 mbedtls_key_owner_id_t owner);
168#endif
169
197 psa_key_lifetime_t lifetime);
198
212 const psa_key_attributes_t *attributes);
213
225 const psa_key_attributes_t *attributes);
226
244 psa_key_usage_t usage_flags);
245
257 const psa_key_attributes_t *attributes);
258
290 psa_algorithm_t alg);
291
292
304 const psa_key_attributes_t *attributes);
305
321 psa_key_type_t type);
322
323
339 size_t bits);
340
352
363static size_t psa_get_key_bits(const psa_key_attributes_t *attributes);
364
394 psa_key_attributes_t *attributes);
395
409
411
415
438
528 const psa_key_attributes_t *attributes,
529 mbedtls_svc_key_id_t *target_key);
530
531
583
585
589
662 const uint8_t *data,
663 size_t data_length,
665
666
667
757 uint8_t *data,
758 size_t data_size,
759 size_t *data_length);
760
832 uint8_t *data,
833 size_t data_size,
834 size_t *data_length);
835
836
837
839
843
876 const uint8_t *input,
877 size_t input_length,
878 uint8_t *hash,
879 size_t hash_size,
880 size_t *hash_length);
881
911 const uint8_t *input,
912 size_t input_length,
913 const uint8_t *hash,
914 size_t hash_length);
915
945
951
955
1005 psa_algorithm_t alg);
1006
1031 const uint8_t *input,
1032 size_t input_length);
1033
1077 uint8_t *hash,
1078 size_t hash_size,
1079 size_t *hash_length);
1080
1118 const uint8_t *hash,
1119 size_t hash_length);
1120
1147
1176 psa_hash_operation_t *target_operation);
1177
1179
1183
1227 psa_algorithm_t alg,
1228 const uint8_t *input,
1229 size_t input_length,
1230 uint8_t *mac,
1231 size_t mac_size,
1232 size_t *mac_length);
1233
1268 psa_algorithm_t alg,
1269 const uint8_t *input,
1270 size_t input_length,
1271 const uint8_t *mac,
1272 size_t mac_length);
1273
1304
1310
1314
1375 psa_algorithm_t alg);
1376
1437 psa_algorithm_t alg);
1438
1466 const uint8_t *input,
1467 size_t input_length);
1468
1515 uint8_t *mac,
1516 size_t mac_size,
1517 size_t *mac_length);
1518
1558 const uint8_t *mac,
1559 size_t mac_length);
1560
1587
1589
1593
1634 psa_algorithm_t alg,
1635 const uint8_t *input,
1636 size_t input_length,
1637 uint8_t *output,
1638 size_t output_size,
1639 size_t *output_length);
1640
1681 psa_algorithm_t alg,
1682 const uint8_t *input,
1683 size_t input_length,
1684 uint8_t *output,
1685 size_t output_size,
1686 size_t *output_length);
1687
1717
1723
1727
1789 psa_algorithm_t alg);
1790
1852 psa_algorithm_t alg);
1853
1889 uint8_t *iv,
1890 size_t iv_size,
1891 size_t *iv_length);
1892
1930 const uint8_t *iv,
1931 size_t iv_length);
1932
1971 const uint8_t *input,
1972 size_t input_length,
1973 uint8_t *output,
1974 size_t output_size,
1975 size_t *output_length);
1976
2023 uint8_t *output,
2024 size_t output_size,
2025 size_t *output_length);
2026
2053
2055
2059
2122 psa_algorithm_t alg,
2123 const uint8_t *nonce,
2124 size_t nonce_length,
2125 const uint8_t *additional_data,
2126 size_t additional_data_length,
2127 const uint8_t *plaintext,
2128 size_t plaintext_length,
2129 uint8_t *ciphertext,
2130 size_t ciphertext_size,
2131 size_t *ciphertext_length);
2132
2195 psa_algorithm_t alg,
2196 const uint8_t *nonce,
2197 size_t nonce_length,
2198 const uint8_t *additional_data,
2199 size_t additional_data_length,
2200 const uint8_t *ciphertext,
2201 size_t ciphertext_length,
2202 uint8_t *plaintext,
2203 size_t plaintext_size,
2204 size_t *plaintext_length);
2205
2235
2241
2245
2314 psa_algorithm_t alg);
2315
2380 psa_algorithm_t alg);
2381
2418 uint8_t *nonce,
2419 size_t nonce_size,
2420 size_t *nonce_length);
2421
2458 const uint8_t *nonce,
2459 size_t nonce_length);
2460
2503 size_t ad_length,
2504 size_t plaintext_length);
2505
2551 const uint8_t *input,
2552 size_t input_length);
2553
2635 const uint8_t *input,
2636 size_t input_length,
2637 uint8_t *output,
2638 size_t output_size,
2639 size_t *output_length);
2640
2721 uint8_t *ciphertext,
2722 size_t ciphertext_size,
2723 size_t *ciphertext_length,
2724 uint8_t *tag,
2725 size_t tag_size,
2726 size_t *tag_length);
2727
2804 uint8_t *plaintext,
2805 size_t plaintext_size,
2806 size_t *plaintext_length,
2807 const uint8_t *tag,
2808 size_t tag_length);
2809
2836
2838
2842
2902 psa_algorithm_t alg,
2903 const uint8_t *input,
2904 size_t input_length,
2905 uint8_t *signature,
2906 size_t signature_size,
2907 size_t *signature_length);
2908
2954 psa_algorithm_t alg,
2955 const uint8_t *input,
2956 size_t input_length,
2957 const uint8_t *signature,
2958 size_t signature_length);
2959
3007 psa_algorithm_t alg,
3008 const uint8_t *hash,
3009 size_t hash_length,
3010 uint8_t *signature,
3011 size_t signature_size,
3012 size_t *signature_length);
3013
3058 psa_algorithm_t alg,
3059 const uint8_t *hash,
3060 size_t hash_length,
3061 const uint8_t *signature,
3062 size_t signature_length);
3063
3116 psa_algorithm_t alg,
3117 const uint8_t *input,
3118 size_t input_length,
3119 const uint8_t *salt,
3120 size_t salt_length,
3121 uint8_t *output,
3122 size_t output_size,
3123 size_t *output_length);
3124
3177 psa_algorithm_t alg,
3178 const uint8_t *input,
3179 size_t input_length,
3180 const uint8_t *salt,
3181 size_t salt_length,
3182 uint8_t *output,
3183 size_t output_size,
3184 size_t *output_length);
3185
3187
3191
3222
3228
3232
3294 psa_algorithm_t alg);
3295
3316 const psa_key_derivation_operation_t *operation,
3317 size_t *capacity);
3318
3345 size_t capacity);
3346
3354#define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t) (-1))
3355
3399 const uint8_t *data,
3400 size_t data_length);
3401
3442 uint64_t value);
3443
3511
3578 mbedtls_svc_key_id_t private_key,
3579 const uint8_t *peer_key,
3580 size_t peer_key_length);
3581
3624 uint8_t *output,
3625 size_t output_length);
3626
3778 const psa_key_attributes_t *attributes,
3781
3850 const psa_key_attributes_t *attributes,
3852 const psa_custom_key_parameters_t *custom,
3853 const uint8_t *custom_data,
3854 size_t custom_data_length,
3856
3857#ifndef __cplusplus
3858/* Omitted when compiling in C++, because one of the parameters is a
3859 * pointer to a struct with a flexible array member, and that is not
3860 * standard C++.
3861 * https://github.com/Mbed-TLS/mbedtls/issues/9020
3862 */
3932 const psa_key_attributes_t *attributes,
3934 const psa_key_production_parameters_t *params,
3935 size_t params_data_length,
3937#endif /* !__cplusplus */
3938
3994 const uint8_t *expected,
3995 size_t expected_length);
3996
4059 psa_key_id_t expected);
4060
4086
4138 mbedtls_svc_key_id_t private_key,
4139 const uint8_t *peer_key,
4140 size_t peer_key_length,
4141 uint8_t *output,
4142 size_t output_size,
4143 size_t *output_length);
4144
4146
4150
4176 size_t output_size);
4177
4228
4280 const psa_custom_key_parameters_t *custom,
4281 const uint8_t *custom_data,
4282 size_t custom_data_length,
4284
4285#ifndef __cplusplus
4286/* Omitted when compiling in C++, because one of the parameters is a
4287 * pointer to a struct with a flexible array member, and that is not
4288 * standard C++.
4289 * https://github.com/Mbed-TLS/mbedtls/issues/9020
4290 */
4337 const psa_key_production_parameters_t *params,
4338 size_t params_data_length,
4340#endif /* !__cplusplus */
4341
4343
4347
4380
4413
4486void psa_interruptible_set_max_ops(uint32_t max_ops);
4487
4506
4535
4562
4637 const uint8_t *hash, size_t hash_length);
4638
4729 uint8_t *signature, size_t signature_size,
4730 size_t *signature_length);
4731
4771
4849 const uint8_t *hash, size_t hash_length,
4850 const uint8_t *signature, size_t signature_length);
4851
4925
4965
4966
4968
4969#ifdef __cplusplus
4970}
4971#endif
4972
4973/* The file "crypto_extra.h" contains vendor-specific definitions. This
4974 * can include vendor-defined algorithms, extra functions, etc. */
4975#include "crypto_extra.h"
4976
4977#endif /* PSA_CRYPTO_H */
PSA cryptography module: Mbed TLS vendor extensions.
PSA cryptography module: Mbed TLS platform definitions.
PSA cryptography module: Mbed TLS buffer size macros.
PSA cryptography module: Mbed TLS structured type implementations.
PSA cryptography module: type aliases.
PSA cryptography module: macros to build and analyze integer values.
psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg)
static psa_mac_operation_t psa_mac_operation_init(void)
psa_status_t psa_mac_update(psa_mac_operation_t *operation, const uint8_t *input, size_t input_length)
struct psa_mac_operation_s psa_mac_operation_t
Definition crypto.h:1303
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)
struct psa_aead_operation_s psa_aead_operation_t
Definition crypto.h:2234
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)
struct psa_key_attributes_s psa_key_attributes_t
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)
struct psa_cipher_operation_s psa_cipher_operation_t
Definition crypto.h:1716
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.
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
struct psa_custom_key_parameters_s psa_custom_key_parameters_t
Custom parameters for key generation or key derivation.
uint16_t psa_key_derivation_step_t
Encoding of the step of a key derivation.
struct psa_key_production_parameters_s psa_key_production_parameters_t
Custom parameters for key generation or key derivation.
int32_t psa_status_t
Function return status.
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)
struct psa_hash_operation_s psa_hash_operation_t
Definition crypto.h:944
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.
struct psa_verify_hash_interruptible_operation_s psa_verify_hash_interruptible_operation_t
Definition crypto.h:4412
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...
struct psa_sign_hash_interruptible_operation_s psa_sign_hash_interruptible_operation_t
Definition crypto.h:4379
void psa_interruptible_set_max_ops(uint32_t max_ops)
Set the maximum number of ops allowed to be executed by an interruptible function in a single call.
uint32_t psa_interruptible_get_max_ops(void)
Get the maximum number of ops allowed to be executed by an interruptible function in a single call....
psa_status_t psa_sign_hash_complete(psa_sign_hash_interruptible_operation_t *operation, uint8_t *signature, size_t signature_size, size_t *signature_length)
Continue and eventually complete the action of signing a hash or short message with a private key,...
psa_status_t psa_verify_hash_start(psa_verify_hash_interruptible_operation_t *operation, mbedtls_svc_key_id_t key, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length)
Start reading and verifying a hash or short message, in an interruptible manner.
psa_status_t psa_sign_hash_abort(psa_sign_hash_interruptible_operation_t *operation)
Abort a sign hash operation.
psa_status_t psa_key_derivation_output_bytes(psa_key_derivation_operation_t *operation, uint8_t *output, size_t output_length)
psa_status_t psa_key_derivation_output_key_custom(const psa_key_attributes_t *attributes, psa_key_derivation_operation_t *operation, const psa_custom_key_parameters_t *custom, const uint8_t *custom_data, size_t custom_data_length, mbedtls_svc_key_id_t *key)
psa_status_t psa_raw_key_agreement(psa_algorithm_t alg, mbedtls_svc_key_id_t private_key, const uint8_t *peer_key, size_t peer_key_length, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_key_derivation_key_agreement(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, mbedtls_svc_key_id_t private_key, const uint8_t *peer_key, size_t peer_key_length)
struct psa_key_derivation_s psa_key_derivation_operation_t
Definition crypto.h:3221
psa_status_t psa_key_derivation_set_capacity(psa_key_derivation_operation_t *operation, size_t capacity)
static psa_key_derivation_operation_t psa_key_derivation_operation_init(void)
psa_status_t psa_key_derivation_input_bytes(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, const uint8_t *data, size_t data_length)
psa_status_t psa_key_derivation_abort(psa_key_derivation_operation_t *operation)
psa_status_t psa_key_derivation_get_capacity(const psa_key_derivation_operation_t *operation, size_t *capacity)
psa_status_t psa_key_derivation_input_key(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, mbedtls_svc_key_id_t key)
psa_status_t psa_key_derivation_verify_key(psa_key_derivation_operation_t *operation, psa_key_id_t expected)
psa_status_t psa_key_derivation_setup(psa_key_derivation_operation_t *operation, psa_algorithm_t alg)
psa_status_t psa_key_derivation_input_integer(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, uint64_t value)
psa_status_t psa_key_derivation_output_key(const psa_key_attributes_t *attributes, psa_key_derivation_operation_t *operation, mbedtls_svc_key_id_t *key)
psa_status_t psa_key_derivation_verify_bytes(psa_key_derivation_operation_t *operation, const uint8_t *expected, size_t expected_length)
psa_status_t psa_key_derivation_output_key_ext(const psa_key_attributes_t *attributes, psa_key_derivation_operation_t *operation, const psa_key_production_parameters_t *params, size_t params_data_length, mbedtls_svc_key_id_t *key)
uint32_t psa_key_id_t
uint32_t psa_key_lifetime_t
psa_key_id_t mbedtls_svc_key_id_t
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.
psa_status_t psa_generate_random(uint8_t *output, size_t output_size)
Generate random bytes.
psa_status_t psa_generate_key(const psa_key_attributes_t *attributes, mbedtls_svc_key_id_t *key)
Generate a key or key pair.
psa_status_t psa_generate_key_ext(const psa_key_attributes_t *attributes, const psa_key_production_parameters_t *params, size_t params_data_length, mbedtls_svc_key_id_t *key)
Generate a key or key pair using custom production parameters.
psa_status_t psa_generate_key_custom(const psa_key_attributes_t *attributes, const psa_custom_key_parameters_t *custom, const uint8_t *custom_data, size_t custom_data_length, mbedtls_svc_key_id_t *key)
Generate a key or key pair using custom production parameters.
The context for PSA interruptible hash signing.
The context for PSA interruptible hash verification.