• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Test driver for hash entry points.
3  */
4 /*  Copyright The Mbed TLS Contributors
5  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6  */
7 
8 #if !defined(MBEDTLS_CONFIG_FILE)
9 #include "mbedtls/config.h"
10 #else
11 #include MBEDTLS_CONFIG_FILE
12 #endif
13 
14 #if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) && defined(PSA_CRYPTO_DRIVER_TEST)
15 #include "psa_crypto_hash.h"
16 
17 #include "test/drivers/hash.h"
18 
19 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
20 #include "libtestdriver1/library/psa_crypto_hash.h"
21 #endif
22 
23 mbedtls_test_driver_hash_hooks_t
24     mbedtls_test_driver_hash_hooks = MBEDTLS_TEST_DRIVER_HASH_INIT;
25 
mbedtls_test_transparent_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)26 psa_status_t mbedtls_test_transparent_hash_compute(
27     psa_algorithm_t alg,
28     const uint8_t *input, size_t input_length,
29     uint8_t *hash, size_t hash_size, size_t *hash_length)
30 {
31     mbedtls_test_driver_hash_hooks.hits++;
32 
33     if (mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS) {
34         mbedtls_test_driver_hash_hooks.driver_status =
35             mbedtls_test_driver_hash_hooks.forced_status;
36     } else {
37 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
38         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
39         mbedtls_test_driver_hash_hooks.driver_status =
40             libtestdriver1_mbedtls_psa_hash_compute(
41                 alg, input, input_length,
42                 hash, hash_size, hash_length);
43 #elif defined(MBEDTLS_PSA_BUILTIN_HASH)
44         mbedtls_test_driver_hash_hooks.driver_status =
45             mbedtls_psa_hash_compute(
46                 alg, input, input_length,
47                 hash, hash_size, hash_length);
48 #else
49         (void) alg;
50         (void) input;
51         (void) input_length;
52         (void) hash;
53         (void) hash_size;
54         (void) hash_length;
55         mbedtls_test_driver_hash_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
56 #endif
57     }
58 
59     return mbedtls_test_driver_hash_hooks.driver_status;
60 }
61 
mbedtls_test_transparent_hash_setup(mbedtls_transparent_test_driver_hash_operation_t * operation,psa_algorithm_t alg)62 psa_status_t mbedtls_test_transparent_hash_setup(
63     mbedtls_transparent_test_driver_hash_operation_t *operation,
64     psa_algorithm_t alg)
65 {
66     mbedtls_test_driver_hash_hooks.hits++;
67 
68     if (mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS) {
69         mbedtls_test_driver_hash_hooks.driver_status =
70             mbedtls_test_driver_hash_hooks.forced_status;
71     } else {
72 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
73         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
74         mbedtls_test_driver_hash_hooks.driver_status =
75             libtestdriver1_mbedtls_psa_hash_setup(operation, alg);
76 #elif defined(MBEDTLS_PSA_BUILTIN_HASH)
77         mbedtls_test_driver_hash_hooks.driver_status =
78             mbedtls_psa_hash_setup(operation, alg);
79 #else
80         (void) operation;
81         (void) alg;
82         mbedtls_test_driver_hash_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
83 #endif
84     }
85 
86     return mbedtls_test_driver_hash_hooks.driver_status;
87 }
88 
mbedtls_test_transparent_hash_clone(const mbedtls_transparent_test_driver_hash_operation_t * source_operation,mbedtls_transparent_test_driver_hash_operation_t * target_operation)89 psa_status_t mbedtls_test_transparent_hash_clone(
90     const mbedtls_transparent_test_driver_hash_operation_t *source_operation,
91     mbedtls_transparent_test_driver_hash_operation_t *target_operation)
92 {
93     mbedtls_test_driver_hash_hooks.hits++;
94 
95     if (mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS) {
96         mbedtls_test_driver_hash_hooks.driver_status =
97             mbedtls_test_driver_hash_hooks.forced_status;
98     } else {
99 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
100         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
101         mbedtls_test_driver_hash_hooks.driver_status =
102             libtestdriver1_mbedtls_psa_hash_clone(source_operation,
103                                                   target_operation);
104 #elif defined(MBEDTLS_PSA_BUILTIN_HASH)
105         mbedtls_test_driver_hash_hooks.driver_status =
106             mbedtls_psa_hash_clone(source_operation, target_operation);
107 #else
108         (void) source_operation;
109         (void) target_operation;
110         mbedtls_test_driver_hash_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
111 #endif
112     }
113 
114     return mbedtls_test_driver_hash_hooks.driver_status;
115 }
116 
mbedtls_test_transparent_hash_update(mbedtls_transparent_test_driver_hash_operation_t * operation,const uint8_t * input,size_t input_length)117 psa_status_t mbedtls_test_transparent_hash_update(
118     mbedtls_transparent_test_driver_hash_operation_t *operation,
119     const uint8_t *input,
120     size_t input_length)
121 {
122     mbedtls_test_driver_hash_hooks.hits++;
123 
124     if (mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS) {
125         mbedtls_test_driver_hash_hooks.driver_status =
126             mbedtls_test_driver_hash_hooks.forced_status;
127     } else {
128 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
129         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
130         mbedtls_test_driver_hash_hooks.driver_status =
131             libtestdriver1_mbedtls_psa_hash_update(
132                 operation, input, input_length);
133 #elif defined(MBEDTLS_PSA_BUILTIN_HASH)
134         mbedtls_test_driver_hash_hooks.driver_status =
135             mbedtls_psa_hash_update(operation, input, input_length);
136 #else
137         (void) operation;
138         (void) input;
139         (void) input_length;
140         mbedtls_test_driver_hash_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
141 #endif
142     }
143 
144     return mbedtls_test_driver_hash_hooks.driver_status;
145 }
146 
mbedtls_test_transparent_hash_finish(mbedtls_transparent_test_driver_hash_operation_t * operation,uint8_t * hash,size_t hash_size,size_t * hash_length)147 psa_status_t mbedtls_test_transparent_hash_finish(
148     mbedtls_transparent_test_driver_hash_operation_t *operation,
149     uint8_t *hash,
150     size_t hash_size,
151     size_t *hash_length)
152 {
153     mbedtls_test_driver_hash_hooks.hits++;
154 
155     if (mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS) {
156         mbedtls_test_driver_hash_hooks.driver_status =
157             mbedtls_test_driver_hash_hooks.forced_status;
158     } else {
159 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
160         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
161         mbedtls_test_driver_hash_hooks.driver_status =
162             libtestdriver1_mbedtls_psa_hash_finish(
163                 operation, hash, hash_size, hash_length);
164 #elif defined(MBEDTLS_PSA_BUILTIN_HASH)
165         mbedtls_test_driver_hash_hooks.driver_status =
166             mbedtls_psa_hash_finish(operation, hash, hash_size, hash_length);
167 #else
168         (void) operation;
169         (void) hash;
170         (void) hash_size;
171         (void) hash_length;
172         mbedtls_test_driver_hash_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
173 #endif
174     }
175 
176     return mbedtls_test_driver_hash_hooks.driver_status;
177 }
178 
mbedtls_test_transparent_hash_abort(mbedtls_transparent_test_driver_hash_operation_t * operation)179 psa_status_t mbedtls_test_transparent_hash_abort(
180     mbedtls_transparent_test_driver_hash_operation_t *operation)
181 {
182     mbedtls_test_driver_hash_hooks.hits++;
183 
184     if (mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS) {
185         mbedtls_test_driver_hash_hooks.driver_status =
186             mbedtls_test_driver_hash_hooks.forced_status;
187     } else {
188 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
189         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
190         mbedtls_test_driver_hash_hooks.driver_status =
191             libtestdriver1_mbedtls_psa_hash_abort(operation);
192 #elif defined(MBEDTLS_PSA_BUILTIN_HASH)
193         mbedtls_test_driver_hash_hooks.driver_status =
194             mbedtls_psa_hash_abort(operation);
195 #else
196         (void) operation;
197         mbedtls_test_driver_hash_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
198 #endif
199     }
200 
201     return mbedtls_test_driver_hash_hooks.driver_status;
202 }
203 #endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */
204