blob: 77a217f061fed6e05f26a35ec344d28d772d8393 [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 +010044#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS)
45const uint8_t test_driver_aes_key[16] =
46 { 0x36, 0x77, 0x39, 0x7A, 0x24, 0x43, 0x26, 0x46,
47 0x29, 0x4A, 0x40, 0x4E, 0x63, 0x52, 0x66, 0x55 };
48const uint8_t test_driver_ecdsa_key[32] =
49 { 0xdc, 0x7d, 0x9d, 0x26, 0xd6, 0x7a, 0x4f, 0x63,
50 0x2c, 0x34, 0xc2, 0xdc, 0x0b, 0x69, 0x86, 0x18,
51 0x38, 0x82, 0xc2, 0x06, 0xdf, 0x04, 0xcd, 0xb7,
52 0xd6, 0x9a, 0xab, 0xe2, 0x8b, 0xe4, 0xf8, 0x1a };
53const uint8_t test_driver_ecdsa_pubkey[65] =
54 { 0x04,
55 0x85, 0xf6, 0x4d, 0x89, 0xf0, 0x0b, 0xe6, 0x6c,
56 0x88, 0xdd, 0x93, 0x7e, 0xfd, 0x6d, 0x7c, 0x44,
57 0x56, 0x48, 0xdc, 0xb7, 0x01, 0x15, 0x0b, 0x8a,
58 0x95, 0x09, 0x29, 0x58, 0x50, 0xf4, 0x1c, 0x19,
59 0x31, 0xe5, 0x71, 0xfb, 0x8f, 0x8c, 0x78, 0x31,
60 0x7a, 0x20, 0xb3, 0x80, 0xe8, 0x66, 0x58, 0x4b,
61 0xbc, 0x25, 0x16, 0xc3, 0xd2, 0x70, 0x2d, 0x79,
62 0x2f, 0x13, 0x1a, 0x92, 0x20, 0x95, 0xfd, 0x6c };
63
64static const psa_drv_slot_number_t aes_slot = PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT;
65static const psa_drv_slot_number_t ecdsa_slot = PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT;
66#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */
67
Steven Cooreman2a1664c2020-07-20 15:33:08 +020068psa_status_t test_transparent_generate_key(
69 const psa_key_attributes_t *attributes,
70 uint8_t *key, size_t key_size, size_t *key_length )
71{
Steven Cooremanc4813a62020-10-23 11:45:43 +020072 ++test_driver_key_management_hooks.hits;
Steven Cooreman2a1664c2020-07-20 15:33:08 +020073
Steven Cooremanc4813a62020-10-23 11:45:43 +020074 if( test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
75 return( test_driver_key_management_hooks.forced_status );
Steven Cooreman2a1664c2020-07-20 15:33:08 +020076
Steven Cooremanc4813a62020-10-23 11:45:43 +020077 if( test_driver_key_management_hooks.forced_output != NULL )
Steven Cooreman2a1664c2020-07-20 15:33:08 +020078 {
Steven Cooremanc4813a62020-10-23 11:45:43 +020079 if( test_driver_key_management_hooks.forced_output_length > key_size )
Steven Cooreman2a1664c2020-07-20 15:33:08 +020080 return( PSA_ERROR_BUFFER_TOO_SMALL );
Steven Cooremanc4813a62020-10-23 11:45:43 +020081 memcpy( key, test_driver_key_management_hooks.forced_output,
82 test_driver_key_management_hooks.forced_output_length );
83 *key_length = test_driver_key_management_hooks.forced_output_length;
Steven Cooreman2a1664c2020-07-20 15:33:08 +020084 return( PSA_SUCCESS );
85 }
86
87 /* Copied from psa_crypto.c */
Ronald Cronbbe5cbb2020-11-20 19:42:24 +010088#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR)
Steven Cooreman56250fd2020-09-04 13:07:15 +020089 if ( PSA_KEY_TYPE_IS_ECC( psa_get_key_type( attributes ) )
90 && PSA_KEY_TYPE_IS_KEY_PAIR( psa_get_key_type( attributes ) ) )
Steven Cooreman2a1664c2020-07-20 15:33:08 +020091 {
Ronald Cronbbe5cbb2020-11-20 19:42:24 +010092 return( mbedtls_transparent_test_driver_ecp_generate_key(
93 attributes, key, key_size, key_length ) );
Steven Cooreman2a1664c2020-07-20 15:33:08 +020094 }
95 else
Ronald Cronbbe5cbb2020-11-20 19:42:24 +010096#endif /* defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR) */
Ronald Cron3a9c46b2020-11-06 09:38:35 +010097
98#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR)
99 if ( psa_get_key_type( attributes ) == PSA_KEY_TYPE_RSA_KEY_PAIR )
100 return( mbedtls_transparent_test_driver_rsa_generate_key(
101 attributes, key, key_size, key_length ) );
102 else
103#endif /* defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR) */
104 {
105 (void)attributes;
106 return( PSA_ERROR_NOT_SUPPORTED );
107 }
Steven Cooreman2a1664c2020-07-20 15:33:08 +0200108}
109
110psa_status_t test_opaque_generate_key(
111 const psa_key_attributes_t *attributes,
112 uint8_t *key, size_t key_size, size_t *key_length )
113{
114 (void) attributes;
115 (void) key;
116 (void) key_size;
117 (void) key_length;
118 return( PSA_ERROR_NOT_SUPPORTED );
119}
120
Ronald Cron83282872020-11-22 14:02:39 +0100121psa_status_t test_transparent_import_key(
Steven Cooremanb9b84422020-10-14 14:39:20 +0200122 const psa_key_attributes_t *attributes,
123 const uint8_t *data,
124 size_t data_length,
Ronald Cron83282872020-11-22 14:02:39 +0100125 uint8_t *key_buffer,
126 size_t key_buffer_size,
127 size_t *key_buffer_length,
128 size_t *bits)
Steven Cooreman04524762020-10-13 17:43:44 +0200129{
Steven Cooremanc4813a62020-10-23 11:45:43 +0200130 ++test_driver_key_management_hooks.hits;
Steven Cooreman04524762020-10-13 17:43:44 +0200131
Steven Cooremanc4813a62020-10-23 11:45:43 +0200132 if( test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
133 return( test_driver_key_management_hooks.forced_status );
Steven Cooreman04524762020-10-13 17:43:44 +0200134
Ronald Cron784fb322020-11-30 13:55:05 +0100135 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
136 psa_key_type_t type = psa_get_key_type( attributes );
137
John Durkop6ba40d12020-11-10 08:50:04 -0800138#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR) || \
139 defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)
Ronald Cron784fb322020-11-30 13:55:05 +0100140 if( PSA_KEY_TYPE_IS_ECC( type ) )
Steven Cooreman04524762020-10-13 17:43:44 +0200141 {
Ronald Cron784fb322020-11-30 13:55:05 +0100142 status = mbedtls_transparent_test_driver_ecp_import_key(
143 attributes,
144 data, data_length,
145 key_buffer, key_buffer_size,
146 key_buffer_length, bits );
Steven Cooreman04524762020-10-13 17:43:44 +0200147 }
Ronald Cron784fb322020-11-30 13:55:05 +0100148 else
149#endif
150#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR) || \
151 defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
152 if( PSA_KEY_TYPE_IS_RSA( type ) )
153 {
154 status = mbedtls_transparent_test_driver_rsa_import_key(
155 attributes,
156 data, data_length,
157 key_buffer, key_buffer_size,
158 key_buffer_length, bits );
159 }
160 else
161#endif
162 {
163 status = PSA_ERROR_NOT_SUPPORTED;
164 (void)data;
165 (void)data_length;
166 (void)key_buffer;
167 (void)key_buffer_size;
168 (void)key_buffer_length;
169 (void)bits;
170 (void)type;
171 }
172
173 return( status );
Steven Cooreman04524762020-10-13 17:43:44 +0200174}
175
Ronald Cron67227982020-11-26 15:16:05 +0100176psa_status_t test_opaque_export_key(
177 const psa_key_attributes_t *attributes,
178 const uint8_t *key, size_t key_length,
179 uint8_t *data, size_t data_size, size_t *data_length )
180{
Steven Cooreman437fcfc2021-02-22 12:44:15 +0100181#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS)
182 if( psa_key_id_is_builtin( MBEDTLS_SVC_KEY_ID_GET_KEY_ID( psa_get_key_id( attributes ) ) ) )
183 {
184 if( key_length != sizeof( psa_drv_slot_number_t ) )
185 return( PSA_ERROR_INVALID_ARGUMENT );
186
187 if( memcmp( key, &ecdsa_slot, sizeof( psa_drv_slot_number_t ) ) == 0 )
188 {
189 /* This is the ECDSA slot. Verify key attributes before returning pubkey. */
190 if( psa_get_key_type( attributes ) != PSA_KEY_TYPE_ECC_KEY_PAIR( PSA_ECC_FAMILY_SECP_R1 ) )
191 return( PSA_ERROR_CORRUPTION_DETECTED );
192 if( psa_get_key_bits( attributes ) != 256 )
193 return( PSA_ERROR_CORRUPTION_DETECTED );
194 if( psa_get_key_algorithm( attributes ) != PSA_ALG_ECDSA( PSA_ALG_ANY_HASH ) )
195 return( PSA_ERROR_CORRUPTION_DETECTED );
196 if( (psa_get_key_usage_flags( attributes ) & PSA_KEY_USAGE_EXPORT) == 0 )
197 return( PSA_ERROR_CORRUPTION_DETECTED );
198
199 if( data_size < sizeof( test_driver_ecdsa_key ) )
200 return( PSA_ERROR_BUFFER_TOO_SMALL );
201
202 memcpy( data, test_driver_ecdsa_key, sizeof( test_driver_ecdsa_key ) );
203 *data_length = sizeof( test_driver_ecdsa_key );
204 return( PSA_SUCCESS );
205 }
206
207 if( memcmp( key, &aes_slot, sizeof( psa_drv_slot_number_t ) ) == 0 )
208 {
209 /* This is the ECDSA slot. Verify key attributes before returning pubkey. */
210 if( psa_get_key_type( attributes ) != PSA_KEY_TYPE_AES )
211 return( PSA_ERROR_CORRUPTION_DETECTED );
212 if( psa_get_key_bits( attributes ) != 128 )
213 return( PSA_ERROR_CORRUPTION_DETECTED );
214 if( psa_get_key_algorithm( attributes ) != PSA_ALG_CTR )
215 return( PSA_ERROR_CORRUPTION_DETECTED );
216 if( (psa_get_key_usage_flags( attributes ) & PSA_KEY_USAGE_EXPORT) == 0 )
217 return( PSA_ERROR_CORRUPTION_DETECTED );
218
219 if( data_size < sizeof( test_driver_aes_key ) )
220 return( PSA_ERROR_BUFFER_TOO_SMALL );
221
222 memcpy( data, test_driver_aes_key, sizeof( test_driver_aes_key ) );
223 *data_length = sizeof( test_driver_aes_key );
224 return( PSA_SUCCESS );
225 }
226
227 /* Potentially add more slots here */
228
229 return( PSA_ERROR_DOES_NOT_EXIST );
230 }
231#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */
Ronald Cron67227982020-11-26 15:16:05 +0100232 (void) attributes;
233 (void) key;
234 (void) key_length;
235 (void) data;
236 (void) data_size;
237 (void) data_length;
238 return( PSA_ERROR_NOT_SUPPORTED );
239}
Ronald Cronf1057d32020-11-26 19:19:10 +0100240
Steven Cooremanb9b84422020-10-14 14:39:20 +0200241psa_status_t test_transparent_export_public_key(
242 const psa_key_attributes_t *attributes,
Ronald Cronf1057d32020-11-26 19:19:10 +0100243 const uint8_t *key_buffer, size_t key_buffer_size,
Steven Cooremanb9b84422020-10-14 14:39:20 +0200244 uint8_t *data, size_t data_size, size_t *data_length )
245{
Gilles Peskinec2402362020-11-22 18:47:43 +0100246 ++test_driver_key_management_hooks.hits;
Steven Cooremanb9b84422020-10-14 14:39:20 +0200247
Gilles Peskinec2402362020-11-22 18:47:43 +0100248 if( test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
249 return( test_driver_key_management_hooks.forced_status );
Steven Cooremanb9b84422020-10-14 14:39:20 +0200250
Gilles Peskinec2402362020-11-22 18:47:43 +0100251 if( test_driver_key_management_hooks.forced_output != NULL )
Steven Cooremanb9b84422020-10-14 14:39:20 +0200252 {
Gilles Peskinec2402362020-11-22 18:47:43 +0100253 if( test_driver_key_management_hooks.forced_output_length > data_size )
Steven Cooremanb9b84422020-10-14 14:39:20 +0200254 return( PSA_ERROR_BUFFER_TOO_SMALL );
Gilles Peskinec2402362020-11-22 18:47:43 +0100255 memcpy( data, test_driver_key_management_hooks.forced_output,
256 test_driver_key_management_hooks.forced_output_length );
257 *data_length = test_driver_key_management_hooks.forced_output_length;
Steven Cooremanb9b84422020-10-14 14:39:20 +0200258 return( PSA_SUCCESS );
259 }
260
Ronald Cronf1057d32020-11-26 19:19:10 +0100261 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
262 psa_key_type_t key_type = psa_get_key_type( attributes );
Steven Cooremanb9b84422020-10-14 14:39:20 +0200263
264#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR) || \
265 defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)
Ronald Cronf1057d32020-11-26 19:19:10 +0100266 if( PSA_KEY_TYPE_IS_ECC( key_type ) )
Steven Cooremanb9b84422020-10-14 14:39:20 +0200267 {
Ronald Cronf1057d32020-11-26 19:19:10 +0100268 status = mbedtls_transparent_test_driver_ecp_export_public_key(
269 attributes,
270 key_buffer, key_buffer_size,
271 data, data_size, data_length );
Steven Cooremanb9b84422020-10-14 14:39:20 +0200272 }
Ronald Cronf1057d32020-11-26 19:19:10 +0100273 else
274#endif
275#if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR) || \
276 defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
277 if( PSA_KEY_TYPE_IS_RSA( key_type ) )
278 {
279 status = mbedtls_transparent_test_driver_rsa_export_public_key(
280 attributes,
281 key_buffer, key_buffer_size,
282 data, data_size, data_length );
283 }
284 else
285#endif
286 {
287 status = PSA_ERROR_NOT_SUPPORTED;
288 (void)key_buffer;
289 (void)key_buffer_size;
290 (void)key_type;
291 }
Steven Cooremanb9b84422020-10-14 14:39:20 +0200292
Ronald Cronf1057d32020-11-26 19:19:10 +0100293 return( status );
Steven Cooremanb9b84422020-10-14 14:39:20 +0200294}
295
296psa_status_t test_opaque_export_public_key(
297 const psa_key_attributes_t *attributes,
298 const uint8_t *key, size_t key_length,
299 uint8_t *data, size_t data_size, size_t *data_length )
300{
Steven Cooreman437fcfc2021-02-22 12:44:15 +0100301#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS)
302 if( psa_key_id_is_builtin( MBEDTLS_SVC_KEY_ID_GET_KEY_ID( psa_get_key_id( attributes ) ) ) )
303 {
304 if( key_length != sizeof( psa_drv_slot_number_t ) )
305 return( PSA_ERROR_INVALID_ARGUMENT );
306
307 if( memcmp( key, &ecdsa_slot, sizeof( psa_drv_slot_number_t ) ) == 0 )
308 {
309 /* This is the ECDSA slot. Verify key attributes before returning pubkey. */
310 if( psa_get_key_type( attributes ) != 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 ) != PSA_ALG_ECDSA( PSA_ALG_ANY_HASH ) )
315 return( PSA_ERROR_CORRUPTION_DETECTED );
316
317 if( data_size < sizeof( test_driver_ecdsa_pubkey ) )
318 return( PSA_ERROR_BUFFER_TOO_SMALL );
319
320 memcpy(data, test_driver_ecdsa_pubkey, sizeof( test_driver_ecdsa_pubkey ) );
321 *data_length = sizeof( test_driver_ecdsa_pubkey );
322 return( PSA_SUCCESS );
323 }
324
325 /* Potentially add more slots here */
326
327 return( PSA_ERROR_DOES_NOT_EXIST );
328 }
329#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */
Steven Cooremanb9b84422020-10-14 14:39:20 +0200330 (void) attributes;
331 (void) key;
332 (void) key_length;
333 (void) data;
334 (void) data_size;
335 (void) data_length;
336 return( PSA_ERROR_NOT_SUPPORTED );
337}
338
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100339/* The opaque test driver exposes two built-in keys when builtin key support is
340 * compiled in.
341 * The key in slot #PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT is an AES-128 key which allows CTR mode
342 * The key in slot #PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT is a secp256r1 private key which allows ECDSA sign & verify
343 * The key buffer format for these is the raw format of psa_drv_slot_number_t
344 * (i.e. for an actual driver this would mean 'builtin_key_size' = sizeof(psa_drv_slot_number_t))
345 */
346psa_status_t test_opaque_get_builtin_key(
347 psa_drv_slot_number_t slot_number,
348 psa_key_attributes_t *attributes,
349 uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length )
350{
351#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS)
352 switch( slot_number )
353 {
354 case PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT:
355 if( key_buffer_size < sizeof( psa_drv_slot_number_t ) )
356 return( PSA_ERROR_BUFFER_TOO_SMALL );
357
358 psa_set_key_type( attributes, PSA_KEY_TYPE_AES );
359 psa_set_key_bits( attributes, 128 );
Steven Cooreman437fcfc2021-02-22 12:44:15 +0100360 psa_set_key_usage_flags( attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_EXPORT );
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100361 psa_set_key_algorithm( attributes, PSA_ALG_CTR );
362
363 *( (psa_drv_slot_number_t*) key_buffer ) =
364 PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT;
365 *key_buffer_length = sizeof( psa_drv_slot_number_t );
366 return( PSA_SUCCESS );
367 case PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT:
368 if( key_buffer_size < sizeof( psa_drv_slot_number_t ) )
369 return( PSA_ERROR_BUFFER_TOO_SMALL );
370
Steven Cooreman437fcfc2021-02-22 12:44:15 +0100371 psa_set_key_type( attributes, PSA_KEY_TYPE_ECC_KEY_PAIR( PSA_ECC_FAMILY_SECP_R1 ) );
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100372 psa_set_key_bits( attributes, 256 );
Steven Cooreman437fcfc2021-02-22 12:44:15 +0100373 psa_set_key_usage_flags( attributes, PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_EXPORT );
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100374 psa_set_key_algorithm( attributes, PSA_ALG_ECDSA( PSA_ALG_ANY_HASH ) );
375
376 *( (psa_drv_slot_number_t*) key_buffer) =
377 PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT;
378 *key_buffer_length = sizeof( psa_drv_slot_number_t );
379 return( PSA_SUCCESS );
380 default:
381 (void) slot_number;
382 (void) attributes;
383 (void) key_buffer;
384 (void) key_buffer_size;
385 (void) key_buffer_length;
386 return( PSA_ERROR_INVALID_ARGUMENT );
387 }
Steven Cooreman437fcfc2021-02-22 12:44:15 +0100388#else /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100389 (void) slot_number;
390 (void) attributes;
391 (void) key_buffer;
392 (void) key_buffer_size;
393 (void) key_buffer_length;
394 return( PSA_ERROR_DOES_NOT_EXIST );
Steven Cooreman437fcfc2021-02-22 12:44:15 +0100395#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */
Steven Cooremanf9a55ff2021-02-19 18:04:59 +0100396}
397
Steven Cooremanf1720ea2020-07-24 18:41:58 +0200398#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */