• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Test driver for cipher functions
3  */
4 /*  Copyright The Mbed TLS Contributors
5  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6  */
7 
8 #ifndef PSA_CRYPTO_TEST_DRIVERS_CIPHER_H
9 #define PSA_CRYPTO_TEST_DRIVERS_CIPHER_H
10 
11 #if !defined(MBEDTLS_CONFIG_FILE)
12 #include "mbedtls/config.h"
13 #else
14 #include MBEDTLS_CONFIG_FILE
15 #endif
16 
17 #if defined(PSA_CRYPTO_DRIVER_TEST)
18 #include <psa/crypto_driver_common.h>
19 #include <psa/crypto.h>
20 
21 #include "mbedtls/cipher.h"
22 
23 typedef struct {
24     /* If non-null, on success, copy this to the output. */
25     void *forced_output;
26     size_t forced_output_length;
27     /* If not PSA_SUCCESS, return this error code instead of processing the
28      * function call. */
29     psa_status_t forced_status;
30     /* Count the amount of times one of the cipher driver functions is called. */
31     unsigned long hits;
32 } mbedtls_test_driver_cipher_hooks_t;
33 
34 #define MBEDTLS_TEST_DRIVER_CIPHER_INIT { NULL, 0, PSA_SUCCESS, 0 }
35 static inline mbedtls_test_driver_cipher_hooks_t
mbedtls_test_driver_cipher_hooks_init(void)36 mbedtls_test_driver_cipher_hooks_init(void)
37 {
38     const mbedtls_test_driver_cipher_hooks_t v = MBEDTLS_TEST_DRIVER_CIPHER_INIT;
39     return v;
40 }
41 
42 extern mbedtls_test_driver_cipher_hooks_t mbedtls_test_driver_cipher_hooks;
43 
44 psa_status_t mbedtls_test_transparent_cipher_encrypt(
45     const psa_key_attributes_t *attributes,
46     const uint8_t *key, size_t key_length,
47     psa_algorithm_t alg,
48     const uint8_t *iv, size_t iv_length,
49     const uint8_t *input, size_t input_length,
50     uint8_t *output, size_t output_size, size_t *output_length);
51 
52 psa_status_t mbedtls_test_transparent_cipher_decrypt(
53     const psa_key_attributes_t *attributes,
54     const uint8_t *key, size_t key_length,
55     psa_algorithm_t alg,
56     const uint8_t *input, size_t input_length,
57     uint8_t *output, size_t output_size, size_t *output_length);
58 
59 psa_status_t mbedtls_test_transparent_cipher_encrypt_setup(
60     mbedtls_transparent_test_driver_cipher_operation_t *operation,
61     const psa_key_attributes_t *attributes,
62     const uint8_t *key, size_t key_length,
63     psa_algorithm_t alg);
64 
65 psa_status_t mbedtls_test_transparent_cipher_decrypt_setup(
66     mbedtls_transparent_test_driver_cipher_operation_t *operation,
67     const psa_key_attributes_t *attributes,
68     const uint8_t *key, size_t key_length,
69     psa_algorithm_t alg);
70 
71 psa_status_t mbedtls_test_transparent_cipher_abort(
72     mbedtls_transparent_test_driver_cipher_operation_t *operation);
73 
74 psa_status_t mbedtls_test_transparent_cipher_set_iv(
75     mbedtls_transparent_test_driver_cipher_operation_t *operation,
76     const uint8_t *iv, size_t iv_length);
77 
78 psa_status_t mbedtls_test_transparent_cipher_update(
79     mbedtls_transparent_test_driver_cipher_operation_t *operation,
80     const uint8_t *input, size_t input_length,
81     uint8_t *output, size_t output_size, size_t *output_length);
82 
83 psa_status_t mbedtls_test_transparent_cipher_finish(
84     mbedtls_transparent_test_driver_cipher_operation_t *operation,
85     uint8_t *output, size_t output_size, size_t *output_length);
86 
87 /*
88  * opaque versions
89  */
90 psa_status_t mbedtls_test_opaque_cipher_encrypt(
91     const psa_key_attributes_t *attributes,
92     const uint8_t *key, size_t key_length,
93     psa_algorithm_t alg,
94     const uint8_t *iv, size_t iv_length,
95     const uint8_t *input, size_t input_length,
96     uint8_t *output, size_t output_size, size_t *output_length);
97 
98 psa_status_t mbedtls_test_opaque_cipher_decrypt(
99     const psa_key_attributes_t *attributes,
100     const uint8_t *key, size_t key_length,
101     psa_algorithm_t alg,
102     const uint8_t *input, size_t input_length,
103     uint8_t *output, size_t output_size, size_t *output_length);
104 
105 psa_status_t mbedtls_test_opaque_cipher_encrypt_setup(
106     mbedtls_opaque_test_driver_cipher_operation_t *operation,
107     const psa_key_attributes_t *attributes,
108     const uint8_t *key, size_t key_length,
109     psa_algorithm_t alg);
110 
111 psa_status_t mbedtls_test_opaque_cipher_decrypt_setup(
112     mbedtls_opaque_test_driver_cipher_operation_t *operation,
113     const psa_key_attributes_t *attributes,
114     const uint8_t *key, size_t key_length,
115     psa_algorithm_t alg);
116 
117 psa_status_t mbedtls_test_opaque_cipher_abort(
118     mbedtls_opaque_test_driver_cipher_operation_t *operation);
119 
120 psa_status_t mbedtls_test_opaque_cipher_set_iv(
121     mbedtls_opaque_test_driver_cipher_operation_t *operation,
122     const uint8_t *iv, size_t iv_length);
123 
124 psa_status_t mbedtls_test_opaque_cipher_update(
125     mbedtls_opaque_test_driver_cipher_operation_t *operation,
126     const uint8_t *input, size_t input_length,
127     uint8_t *output, size_t output_size, size_t *output_length);
128 
129 psa_status_t mbedtls_test_opaque_cipher_finish(
130     mbedtls_opaque_test_driver_cipher_operation_t *operation,
131     uint8_t *output, size_t output_size, size_t *output_length);
132 
133 #endif /* PSA_CRYPTO_DRIVER_TEST */
134 #endif /* PSA_CRYPTO_TEST_DRIVERS_CIPHER_H */
135