blob: 0ac77087df97f5a5e42e05b63d0d22761e8f5593 [file] [log] [blame]
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +01001/*
Przemek Stekiel7a582082022-03-07 10:14:07 +01002 * Test driver for asymmetric encryption.
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +01003 */
4/* Copyright The Mbed TLS Contributors
Dave Rodgman16799db2023-11-02 19:47:20 +00005 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +01006 */
7
Przemek Stekiel7a582082022-03-07 10:14:07 +01008#ifndef PSA_CRYPTO_TEST_DRIVERS_ASYMMETRIC_ENCRYPTION_H
9#define PSA_CRYPTO_TEST_DRIVERS_ASYMMETRIC_ENCRYPTION_H
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010010
11#include "mbedtls/build_info.h"
12
13#if defined(PSA_CRYPTO_DRIVER_TEST)
14#include <psa/crypto_driver_common.h>
15#include <psa/crypto.h>
16
17typedef struct {
18 /* If non-null, on success, copy this to the output. */
19 void *forced_output;
20 size_t forced_output_length;
21 /* If not PSA_SUCCESS, return this error code instead of processing the
22 * function call. */
23 psa_status_t forced_status;
Przemek Stekielf8614a02022-03-08 10:48:35 +010024 /* Count the amount of times one of the asymmetric_encryption driver
Przemek Stekiel7a582082022-03-07 10:14:07 +010025 functions is called. */
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010026 unsigned long hits;
Przemek Stekiel7a582082022-03-07 10:14:07 +010027} mbedtls_test_driver_asymmetric_encryption_hooks_t;
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010028
Przemek Stekiel7a582082022-03-07 10:14:07 +010029#define MBEDTLS_TEST_DRIVER_ASYMMETRIC_ENCRYPTION_INIT { NULL, 0, PSA_SUCCESS, 0 }
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010030
Przemek Stekiel7a582082022-03-07 10:14:07 +010031static inline mbedtls_test_driver_asymmetric_encryption_hooks_t
Gilles Peskine449bd832023-01-11 14:50:10 +010032mbedtls_test_driver_asymmetric_encryption_hooks_init(void)
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010033{
Przemek Stekiel7a582082022-03-07 10:14:07 +010034 const mbedtls_test_driver_asymmetric_encryption_hooks_t v =
35 MBEDTLS_TEST_DRIVER_ASYMMETRIC_ENCRYPTION_INIT;
Gilles Peskine449bd832023-01-11 14:50:10 +010036 return v;
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010037}
38
Przemek Stekielf8614a02022-03-08 10:48:35 +010039extern mbedtls_test_driver_asymmetric_encryption_hooks_t
Przemek Stekiel7a582082022-03-07 10:14:07 +010040 mbedtls_test_driver_asymmetric_encryption_hooks;
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010041
42psa_status_t mbedtls_test_transparent_asymmetric_encrypt(
Przemyslaw Stekiel4576b912022-02-02 11:10:46 +010043 const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
44 size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *input,
45 size_t input_length, const uint8_t *salt, size_t salt_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010046 uint8_t *output, size_t output_size, size_t *output_length);
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010047
48psa_status_t mbedtls_test_opaque_asymmetric_encrypt(
Przemyslaw Stekiel4576b912022-02-02 11:10:46 +010049 const psa_key_attributes_t *attributes, const uint8_t *key,
50 size_t key_length, psa_algorithm_t alg, const uint8_t *input,
51 size_t input_length, const uint8_t *salt, size_t salt_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010052 uint8_t *output, size_t output_size, size_t *output_length);
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010053
54psa_status_t mbedtls_test_transparent_asymmetric_decrypt(
Przemyslaw Stekiel4576b912022-02-02 11:10:46 +010055 const psa_key_attributes_t *attributes, const uint8_t *key_buffer,
56 size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *input,
57 size_t input_length, const uint8_t *salt, size_t salt_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010058 uint8_t *output, size_t output_size, size_t *output_length);
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010059
60psa_status_t mbedtls_test_opaque_asymmetric_decrypt(
Przemyslaw Stekiel4576b912022-02-02 11:10:46 +010061 const psa_key_attributes_t *attributes, const uint8_t *key,
62 size_t key_length, psa_algorithm_t alg, const uint8_t *input,
63 size_t input_length, const uint8_t *salt, size_t salt_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010064 uint8_t *output, size_t output_size, size_t *output_length);
Przemyslaw Stekiel2d18c7e2021-12-22 12:02:03 +010065
66#endif /* PSA_CRYPTO_DRIVER_TEST */
Przemek Stekiel7a582082022-03-07 10:14:07 +010067#endif /* PSA_CRYPTO_TEST_DRIVERS_ASYMMETRIC_ENCRYPTION_H */