blob: 5daec6bd5250624a23d38cc91f9ea687008379a4 [file] [log] [blame]
Steven Cooreman2a1664c2020-07-20 15:33:08 +02001/*
Steven Cooreman04524762020-10-13 17:43:44 +02002 * Test driver for generating and verifying keys.
3 * Currently only supports generating and verifying ECC keys.
Steven Cooreman2a1664c2020-07-20 15:33:08 +02004 */
Steven Cooreman2c7b2f82020-09-02 13:43:46 +02005/* Copyright The Mbed TLS Contributors
Steven Cooreman2a1664c2020-07-20 15:33:08 +02006 * SPDX-License-Identifier: Apache-2.0
7 *
8 * Licensed under the Apache License, Version 2.0 (the "License"); you may
9 * not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
Steven Cooreman2a1664c2020-07-20 15:33:08 +020019 */
20
21#if !defined(MBEDTLS_CONFIG_FILE)
22#include "mbedtls/config.h"
23#else
24#include MBEDTLS_CONFIG_FILE
25#endif
26
Steven Cooremanf1720ea2020-07-24 18:41:58 +020027#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) && defined(PSA_CRYPTO_DRIVER_TEST)
Steven Cooreman2a1664c2020-07-20 15:33:08 +020028#include "psa/crypto.h"
Steven Cooreman15f58d22020-09-04 13:05:23 +020029#include "psa_crypto_core.h"
Ronald Cronf1057d32020-11-26 19:19:10 +010030#include "psa_crypto_ecp.h"
31#include "psa_crypto_rsa.h"
Steven Cooreman2a1664c2020-07-20 15:33:08 +020032#include "mbedtls/ecp.h"
33#include "mbedtls/error.h"
34
Steven Cooremanc4813a62020-10-23 11:45:43 +020035#include "test/drivers/key_management.h"
Steven Cooreman2a1664c2020-07-20 15:33:08 +020036
37#include "test/random.h"
38
39#include <string.h>
40
Steven Cooremanc4813a62020-10-23 11:45:43 +020041test_driver_key_management_hooks_t test_driver_key_management_hooks =
42 TEST_DRIVER_KEY_MANAGEMENT_INIT;
Steven Cooreman2a1664c2020-07-20 15:33:08 +020043
Steven Cooreman437fcfc2021-02-22 12:44:15 +010044const uint8_t test_driver_aes_key[16] =
45 { 0x36, 0x77, 0x39, 0x7A, 0x24, 0x43, 0x26, 0x46,
46 0x29, 0x4A, 0x40, 0x4E, 0x63, 0x52, 0x66, 0x55 };
47const uint8_t test_driver_ecdsa_key[32] =
48 { 0xdc, 0x7d, 0x9d, 0x26, 0xd6, 0x7a, 0x4f, 0x63,
49 0x2c, 0x34, 0xc2, 0xdc, 0x0b, 0x69, 0x86, 0x18,
50 0x38, 0x82, 0xc2, 0x06, 0xdf, 0x04, 0xcd, 0xb7,
51 0xd6, 0x9a, 0xab, 0xe2, 0x8b, 0xe4, 0xf8, 0x1a };
52const uint8_t test_driver_ecdsa_pubkey[65] =
53 { 0x04,
54 0x85, 0xf6, 0x4d, 0x89, 0xf0, 0x0b, 0xe6, 0x6c,
55 0x88, 0xdd, 0x93, 0x7e, 0xfd, 0x6d, 0x7c, 0x44,
56 0x56, 0x48, 0xdc, 0xb7, 0x01, 0x15, 0x0b, 0x8a,
57 0x95, 0x09, 0x29, 0x58, 0x50, 0xf4, 0x1c, 0x19,
58 0x31, 0xe5, 0x71, 0xfb, 0x8f, 0x8c, 0x78, 0x31,
59 0x7a, 0x20, 0xb3, 0x80, 0xe8, 0x66, 0x58, 0x4b,
60 0xbc, 0x25, 0x16, 0xc3, 0xd2, 0x70, 0x2d, 0x79,
61 0x2f, 0x13, 0x1a, 0x92, 0x20, 0x95, 0xfd, 0x6c };
62
Steven Cooreman2a1664c2020-07-20 15:33:08 +020063psa_status_t test_transparent_generate_key(
64 const psa_key_attributes_t *attributes,
65 uint8_t *key, size_t key_size, size_t *key_length )
66{
Steven Cooremanc4813a62020-10-23 11:45:43 +020067 ++test_driver_key_management_hooks.hits;
Steven Cooreman2a1664c2020-07-20 15:33:08 +020068
Steven Cooremanc4813a62020-10-23 11:45:43 +020069 if( test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
70 return( test_driver_key_management_hooks.forced_status );
Steven Cooreman2a1664c2020-07-20 15:33:08 +020071
Steven Cooremanc4813a62020-10-23 11:45:43 +020072 if( test_driver_key_management_hooks.forced_output != NULL )
Steven Cooreman2a1664c2020-07-20 15:33:08 +020073 {
Steven Cooremanc4813a62020-10-23 11:45:43 +020074 if( test_driver_key_management_hooks.forced_output_length > key_size )
Steven Cooreman2a1664c2020-07-20 15:33:08 +020075 return( PSA_ERROR_BUFFER_TOO_SMALL );
Steven Cooremanc4813a62020-10-23 11:45:43 +020076 memcpy( key, test_driver_key_management_hooks.forced_output,
77 test_driver_key_management_hooks.forced_output_length );
78 *key_length = test_driver_key_management_hooks.forced_output_length;
Steven Cooreman2a1664c2020-07-20 15:33:08 +020079 return( PSA_SUCCESS );
80 }
81
82 /* Copied from psa_crypto.c */
Ronald Cronbbe5cbb2020-11-20 19:42:24 +010083#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR)
Steven Cooreman56250fd2020-09-04 13:07:15 +020084 if ( PSA_KEY_TYPE_IS_ECC( psa_get_key_type( attributes ) )
85 && PSA_KEY_TYPE_IS_KEY_PAIR( psa_get_key_type( attributes ) ) )
Steven Cooreman2a1664c2020-07-20 15:33:08 +020086 {
Ronald Cronbbe5cbb2020-11-20 19:42:24 +010087 return( mbedtls_transparent_test_driver_ecp_generate_key(
88 attributes, key, key_size, key_length ) );
Steven Cooreman2a1664c2020-07-20 15:33:08 +020089 }
90 else
Ronald Cronbbe5cbb2020-11-20 19:42:24 +010091#endif /* defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR) */
Ronald Cron3a9c46b2020-11-06 09:38:35 +010092
93#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR)
94 if ( psa_get_key_type( attributes ) == PSA_KEY_TYPE_RSA_KEY_PAIR )
95 return( mbedtls_transparent_test_driver_rsa_generate_key(
96 attributes, key, key_size, key_length ) );
97 else
98#endif /* defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR) */
99 {
100 (void)attributes;
101 return( PSA_ERROR_NOT_SUPPORTED );
102 }
Steven Cooreman2a1664c2020-07-20 15:33:08 +0200103}
104
105psa_status_t test_opaque_generate_key(
106 const psa_key_attributes_t *attributes,
107 uint8_t *key, size_t key_size, size_t *key_length )
108{
109 (void) attributes;
110 (void) key;
111 (void) key_size;
112 (void) key_length;
113 return( PSA_ERROR_NOT_SUPPORTED );
114}
115
Ronald Cron83282872020-11-22 14:02:39 +0100116psa_status_t test_transparent_import_key(
Steven Cooremanb9b84422020-10-14 14:39:20 +0200117 const psa_key_attributes_t *attributes,
118 const uint8_t *data,
119 size_t data_length,
Ronald Cron83282872020-11-22 14:02:39 +0100120 uint8_t *key_buffer,
121 size_t key_buffer_size,
122 size_t *key_buffer_length,
123 size_t *bits)
Steven Cooreman04524762020-10-13 17:43:44 +0200124{
Steven Cooremanc4813a62020-10-23 11:45:43 +0200125 ++test_driver_key_management_hooks.hits;
Steven Cooreman04524762020-10-13 17:43:44 +0200126
Steven Cooremanc4813a62020-10-23 11:45:43 +0200127 if( test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
128 return( test_driver_key_management_hooks.forced_status );
Steven Cooreman04524762020-10-13 17:43:44 +0200129
Ronald Cron784fb322020-11-30 13:55:05 +0100130 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
131 psa_key_type_t type = psa_get_key_type( attributes );
132
John Durkop6ba40d12020-11-10 08:50:04 -0800133#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR) || \
134 defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)
Ronald Cron784fb322020-11-30 13:55:05 +0100135 if( PSA_KEY_TYPE_IS_ECC( type ) )
Steven Cooreman04524762020-10-13 17:43:44 +0200136 {
Ronald Cron784fb322020-11-30 13:55:05 +0100137 status = mbedtls_transparent_test_driver_ecp_import_key(
138 attributes,
139 data, data_length,
140 key_buffer, key_buffer_size,
141 key_buffer_length, bits );
Steven Cooreman04524762020-10-13 17:43:44 +0200142 }
Ronald Cron784fb322020-11-30 13:55:05 +0100143 else
144#endif
145#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR) || \
146 defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
147 if( PSA_KEY_TYPE_IS_RSA( type ) )
148 {
149 status = mbedtls_transparent_test_driver_rsa_import_key(
150 attributes,
151 data, data_length,
152 key_buffer, key_buffer_size,
153 key_buffer_length, bits );
154 }
155 else
156#endif
157 {
158 status = PSA_ERROR_NOT_SUPPORTED;
159 (void)data;
160 (void)data_length;
161 (void)key_buffer;
162 (void)key_buffer_size;
163 (void)key_buffer_length;
164 (void)bits;
165 (void)type;
166 }
167
168 return( status );
Steven Cooreman04524762020-10-13 17:43:44 +0200169}
170
Ronald Cron67227982020-11-26 15:16:05 +0100171psa_status_t test_opaque_export_key(
172 const psa_key_attributes_t *attributes,
173 const uint8_t *key, size_t key_length,
174 uint8_t *data, size_t data_size, size_t *data_length )
175{
Steven Cooreman054bf7f2021-04-06 15:09:19 +0200176 if( key_length != sizeof( psa_drv_slot_number_t ) )
Steven Cooreman1a0fbac2021-03-18 19:19:53 +0100177 {
178 /* Test driver does not support generic opaque key handling yet. */
179 return( PSA_ERROR_NOT_SUPPORTED );
180 }
Steven Cooreman054bf7f2021-04-06 15:09:19 +0200181
182 /* Assume this is a builtin key based on the key material length. */
183 psa_drv_slot_number_t slot_number = *( ( psa_drv_slot_number_t* ) key );
184
185 switch( slot_number )
186 {
187 case PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT:
188 /* This is the ECDSA slot. Verify the key's attributes before
189 * returning the private key. */
190 if( psa_get_key_type( attributes ) !=
191 PSA_KEY_TYPE_ECC_KEY_PAIR( PSA_ECC_FAMILY_SECP_R1 ) )
192 return( PSA_ERROR_CORRUPTION_DETECTED );
193 if( psa_get_key_bits( attributes ) != 256 )
194 return( PSA_ERROR_CORRUPTION_DETECTED );
195 if( psa_get_key_algorithm( attributes ) !=
196 PSA_ALG_ECDSA( PSA_ALG_ANY_HASH ) )
197 return( PSA_ERROR_CORRUPTION_DETECTED );
198 if( ( psa_get_key_usage_flags( attributes ) &
199 PSA_KEY_USAGE_EXPORT ) == 0 )
200 return( PSA_ERROR_CORRUPTION_DETECTED );
201
202 if( data_size < sizeof( test_driver_ecdsa_key ) )
203 return( PSA_ERROR_BUFFER_TOO_SMALL );
204
205 memcpy( data, test_driver_ecdsa_key,
206 sizeof( test_driver_ecdsa_key ) );
207 *data_length = sizeof( test_driver_ecdsa_key );
208 return( PSA_SUCCESS );
209
210 case PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT:
211 /* This is the AES slot. Verify the key's attributes before
212 * returning the key. */
213 if( psa_get_key_type( attributes ) != PSA_KEY_TYPE_AES )
214 return( PSA_ERROR_CORRUPTION_DETECTED );
215 if( psa_get_key_bits( attributes ) != 128 )
216 return( PSA_ERROR_CORRUPTION_DETECTED );
217 if( psa_get_key_algorithm( attributes ) != PSA_ALG_CTR )
218 return( PSA_ERROR_CORRUPTION_DETECTED );
219 if( ( psa_get_key_usage_flags( attributes ) &
220 PSA_KEY_USAGE_EXPORT ) == 0 )
221 return( PSA_ERROR_CORRUPTION_DETECTED );
222
223 if( data_size < sizeof( test_driver_aes_key ) )
224 return( PSA_ERROR_BUFFER_TOO_SMALL );
225
226 memcpy( data, test_driver_aes_key,
227 sizeof( test_driver_aes_key ) );
228 *data_length = sizeof( test_driver_aes_key );
229 return( PSA_SUCCESS );
230
231 default:
232 return( PSA_ERROR_DOES_NOT_EXIST );
233 }
Ronald Cron67227982020-11-26 15:16:05 +0100234}
Ronald Cronf1057d32020-11-26 19:19:10 +0100235
Steven Cooremanb9b84422020-10-14 14:39:20 +0200236psa_status_t test_transparent_export_public_key(
237 const psa_key_attributes_t *attributes,
Ronald Cronf1057d32020-11-26 19:19:10 +0100238 const uint8_t *key_buffer, size_t key_buffer_size,
Steven Cooremanb9b84422020-10-14 14:39:20 +0200239 uint8_t *data, size_t data_size, size_t *data_length )
240{
Gilles Peskinec2402362020-11-22 18:47:43 +0100241 ++test_driver_key_management_hooks.hits;
Steven Cooremanb9b84422020-10-14 14:39:20 +0200242
Gilles Peskinec2402362020-11-22 18:47:43 +0100243 if( test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
244 return( test_driver_key_management_hooks.forced_status );
Steven Cooremanb9b84422020-10-14 14:39:20 +0200245
Gilles Peskinec2402362020-11-22 18:47:43 +0100246 if( test_driver_key_management_hooks.forced_output != NULL )
Steven Cooremanb9b84422020-10-14 14:39:20 +0200247 {
Gilles Peskinec2402362020-11-22 18:47:43 +0100248 if( test_driver_key_management_hooks.forced_output_length > data_size )
Steven Cooremanb9b84422020-10-14 14:39:20 +0200249 return( PSA_ERROR_BUFFER_TOO_SMALL );
Gilles Peskinec2402362020-11-22 18:47:43 +0100250 memcpy( data, test_driver_key_management_hooks.forced_output,
251 test_driver_key_management_hooks.forced_output_length );
252 *data_length = test_driver_key_management_hooks.forced_output_length;
Steven Cooremanb9b84422020-10-14 14:39:20 +0200253 return( PSA_SUCCESS );
254 }
255
Ronald Cronf1057d32020-11-26 19:19:10 +0100256 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
257 psa_key_type_t key_type = psa_get_key_type( attributes );
Steven Cooremanb9b84422020-10-14 14:39:20 +0200258
259#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR) || \
260 defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)
Ronald Cronf1057d32020-11-26 19:19:10 +0100261 if( PSA_KEY_TYPE_IS_ECC( key_type ) )
Steven Cooremanb9b84422020-10-14 14:39:20 +0200262 {
Ronald Cronf1057d32020-11-26 19:19:10 +0100263 status = mbedtls_transparent_test_driver_ecp_export_public_key(
264 attributes,
265 key_buffer, key_buffer_size,
266 data, data_size, data_length );
Steven Cooremanb9b84422020-10-14 14:39:20 +0200267 }
Ronald Cronf1057d32020-11-26 19:19:10 +0100268 else
269#endif
270#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR) || \
271 defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
272 if( PSA_KEY_TYPE_IS_RSA( key_type ) )
273 {
274 status = mbedtls_transparent_test_driver_rsa_export_public_key(
275 attributes,
276 key_buffer, key_buffer_size,
277 data, data_size, data_length );
278 }
279 else
280#endif
281 {
282 status = PSA_ERROR_NOT_SUPPORTED;
283 (void)key_buffer;
284 (void)key_buffer_size;
285 (void)key_type;
286 }
Steven Cooremanb9b84422020-10-14 14:39:20 +0200287
Ronald Cronf1057d32020-11-26 19:19:10 +0100288 return( status );
Steven Cooremanb9b84422020-10-14 14:39:20 +0200289}
290
291psa_status_t test_opaque_export_public_key(
292 const psa_key_attributes_t *attributes,
293 const uint8_t *key, size_t key_length,
294 uint8_t *data, size_t data_size, size_t *data_length )
295{
Steven Cooreman054bf7f2021-04-06 15:09:19 +0200296 if( key_length != sizeof( psa_drv_slot_number_t ) )
Steven Cooreman1a0fbac2021-03-18 19:19:53 +0100297 {
298 /* Test driver does not support generic opaque key handling yet. */
299 return( PSA_ERROR_NOT_SUPPORTED );
300 }
Steven Cooreman054bf7f2021-04-06 15:09:19 +0200301
302 /* Assume this is a builtin key based on the key material length. */
303 psa_drv_slot_number_t slot_number = *( ( psa_drv_slot_number_t* ) key );
304 switch( slot_number )
305 {
306 case PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT:
307 /* This is the ECDSA slot. Verify the key's attributes before
308 * returning the public key. */
309 if( psa_get_key_type( attributes ) !=
310 PSA_KEY_TYPE_ECC_KEY_PAIR( PSA_ECC_FAMILY_SECP_R1 ) )
311 return( PSA_ERROR_CORRUPTION_DETECTED );
312 if( psa_get_key_bits( attributes ) != 256 )
313 return( PSA_ERROR_CORRUPTION_DETECTED );
314 if( psa_get_key_algorithm( attributes ) !=
315 PSA_ALG_ECDSA( PSA_ALG_ANY_HASH ) )
316 return( PSA_ERROR_CORRUPTION_DETECTED );
317
318 if( data_size < sizeof( test_driver_ecdsa_pubkey ) )
319 return( PSA_ERROR_BUFFER_TOO_SMALL );
320
321 memcpy( data, test_driver_ecdsa_pubkey,
322 sizeof( test_driver_ecdsa_pubkey ) );
323 *data_length = sizeof( test_driver_ecdsa_pubkey );
324 return( PSA_SUCCESS );
325
326 default:
327 return( PSA_ERROR_DOES_NOT_EXIST );
328 }
Steven Cooremanb9b84422020-10-14 14:39:20 +0200329}
330
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100331/* The opaque test driver exposes two built-in keys when builtin key support is
332 * compiled in.
Steven Cooreman203bcbb2021-03-18 17:17:40 +0100333 * The key in slot #PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT is an AES-128
334 * key which allows CTR mode.
335 * The key in slot #PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT is a secp256r1
336 * private key which allows ECDSA sign & verify.
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100337 * The key buffer format for these is the raw format of psa_drv_slot_number_t
Steven Cooreman203bcbb2021-03-18 17:17:40 +0100338 * (i.e. for an actual driver this would mean 'builtin_key_size' =
339 * sizeof(psa_drv_slot_number_t)).
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100340 */
341psa_status_t test_opaque_get_builtin_key(
342 psa_drv_slot_number_t slot_number,
343 psa_key_attributes_t *attributes,
344 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length )
345{
Steven Cooreman1a0fbac2021-03-18 19:19:53 +0100346 if( key_buffer_size < sizeof( psa_drv_slot_number_t ) )
347 return( PSA_ERROR_BUFFER_TOO_SMALL );
348
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100349 switch( slot_number )
350 {
351 case PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT:
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100352 psa_set_key_type( attributes, PSA_KEY_TYPE_AES );
353 psa_set_key_bits( attributes, 128 );
Steven Cooreman203bcbb2021-03-18 17:17:40 +0100354 psa_set_key_usage_flags(
355 attributes,
356 PSA_KEY_USAGE_ENCRYPT |
357 PSA_KEY_USAGE_DECRYPT |
358 PSA_KEY_USAGE_EXPORT );
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100359 psa_set_key_algorithm( attributes, PSA_ALG_CTR );
360
361 *( (psa_drv_slot_number_t*) key_buffer ) =
362 PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT;
363 *key_buffer_length = sizeof( psa_drv_slot_number_t );
364 return( PSA_SUCCESS );
365 case PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT:
Steven Cooreman203bcbb2021-03-18 17:17:40 +0100366 psa_set_key_type(
367 attributes,
368 PSA_KEY_TYPE_ECC_KEY_PAIR( PSA_ECC_FAMILY_SECP_R1 ) );
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100369 psa_set_key_bits( attributes, 256 );
Steven Cooreman203bcbb2021-03-18 17:17:40 +0100370 psa_set_key_usage_flags(
371 attributes,
372 PSA_KEY_USAGE_SIGN_HASH |
373 PSA_KEY_USAGE_VERIFY_HASH |
374 PSA_KEY_USAGE_EXPORT );
375 psa_set_key_algorithm(
376 attributes, PSA_ALG_ECDSA( PSA_ALG_ANY_HASH ) );
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100377
Steven Cooreman203bcbb2021-03-18 17:17:40 +0100378 *( (psa_drv_slot_number_t*) key_buffer ) =
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100379 PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT;
380 *key_buffer_length = sizeof( psa_drv_slot_number_t );
381 return( PSA_SUCCESS );
382 default:
Steven Cooreman1a0fbac2021-03-18 19:19:53 +0100383 return( PSA_ERROR_DOES_NOT_EXIST );
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100384 }
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100385}
386
Steven Cooremanf1720ea2020-07-24 18:41:58 +0200387#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */