blob: 81324ed61c09f6b8a212f8cc8119acaff0071119 [file] [log] [blame]
Paul Elliottd6635432021-11-18 22:35:48 +00001/* BEGIN_HEADER */
2#include "mbedtls/pkcs12.h"
3
4typedef enum
5{
6 USE_NULL_INPUT = 0,
7 USE_GIVEN_INPUT = 1,
Paul Elliottd6635432021-11-18 22:35:48 +00008} input_usage_method_t;
9
10/* END_HEADER */
11
12/* BEGIN_DEPENDENCIES
Paul Elliott3584ae42021-11-30 16:21:27 +000013 * depends_on:MBEDTLS_PKCS12_C
Paul Elliottd6635432021-11-18 22:35:48 +000014 * END_DEPENDENCIES
15 */
16
17/* BEGIN_CASE */
Paul Elliottdf006952021-11-30 16:31:10 +000018void pkcs12_derive_key( int md_type, int key_size_arg,
19 data_t *password_arg, int password_usage,
20 data_t *salt_arg, int salt_usage,
21 int iterations, int expected_status )
Paul Elliottd6635432021-11-18 22:35:48 +000022
23{
24 int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
25 unsigned char *output_data = NULL;
26
27 unsigned char *password = NULL;
28 size_t password_len = 0;
29 unsigned char *salt = NULL;
30 size_t salt_len = 0;
31 size_t key_size = key_size_arg;
32
33 if( password_usage == USE_GIVEN_INPUT )
Paul Elliottd6635432021-11-18 22:35:48 +000034 password = password_arg->x;
Paul Elliott4768a302021-11-30 16:39:51 +000035
36 password_len = password_arg->len;
Paul Elliottd6635432021-11-18 22:35:48 +000037
38 if( salt_usage == USE_GIVEN_INPUT )
Paul Elliottd6635432021-11-18 22:35:48 +000039 salt = salt_arg->x;
Paul Elliott4768a302021-11-30 16:39:51 +000040
41 salt_len = salt_arg->len;
Paul Elliottd6635432021-11-18 22:35:48 +000042
43 ASSERT_ALLOC( output_data, key_size );
44
45 ret = mbedtls_pkcs12_derivation( output_data,
46 key_size,
47 password,
48 password_len,
49 salt,
50 salt_len,
51 md_type,
52 MBEDTLS_PKCS12_DERIVE_KEY,
53 iterations );
54
55 TEST_EQUAL( ret, expected_status );
56
57exit:
58 mbedtls_free( output_data );
59
60}
61/* END_CASE */