blob: 54dc042c3d3a5482a4a2c08ad68bad331402aaf0 [file] [log] [blame]
Paul Elliottd6635432021-11-18 22:35:48 +00001/* BEGIN_HEADER */
2#include "mbedtls/pkcs12.h"
Paul Elliott6e7deb12021-12-03 18:55:31 +00003#include "common.h"
Paul Elliottd6635432021-11-18 22:35:48 +00004
5typedef enum
6{
7 USE_NULL_INPUT = 0,
8 USE_GIVEN_INPUT = 1,
Paul Elliottd6635432021-11-18 22:35:48 +00009} input_usage_method_t;
10
11/* END_HEADER */
12
13/* BEGIN_DEPENDENCIES
Paul Elliott3584ae42021-11-30 16:21:27 +000014 * depends_on:MBEDTLS_PKCS12_C
Paul Elliottd6635432021-11-18 22:35:48 +000015 * END_DEPENDENCIES
16 */
17
18/* BEGIN_CASE */
Paul Elliottdf006952021-11-30 16:31:10 +000019void pkcs12_derive_key( int md_type, int key_size_arg,
20 data_t *password_arg, int password_usage,
21 data_t *salt_arg, int salt_usage,
Paul Elliott6e7deb12021-12-03 18:55:31 +000022 int iterations,
23 data_t* expected_output, int expected_status )
Paul Elliottd6635432021-11-18 22:35:48 +000024
25{
26 int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
27 unsigned char *output_data = NULL;
28
29 unsigned char *password = NULL;
30 size_t password_len = 0;
31 unsigned char *salt = NULL;
32 size_t salt_len = 0;
33 size_t key_size = key_size_arg;
34
35 if( password_usage == USE_GIVEN_INPUT )
Paul Elliottd6635432021-11-18 22:35:48 +000036 password = password_arg->x;
Paul Elliott4768a302021-11-30 16:39:51 +000037
38 password_len = password_arg->len;
Paul Elliottd6635432021-11-18 22:35:48 +000039
40 if( salt_usage == USE_GIVEN_INPUT )
Paul Elliottd6635432021-11-18 22:35:48 +000041 salt = salt_arg->x;
Paul Elliott4768a302021-11-30 16:39:51 +000042
43 salt_len = salt_arg->len;
Paul Elliottd6635432021-11-18 22:35:48 +000044
45 ASSERT_ALLOC( output_data, key_size );
46
47 ret = mbedtls_pkcs12_derivation( output_data,
48 key_size,
49 password,
50 password_len,
51 salt,
52 salt_len,
53 md_type,
54 MBEDTLS_PKCS12_DERIVE_KEY,
55 iterations );
56
57 TEST_EQUAL( ret, expected_status );
58
Paul Elliott6e7deb12021-12-03 18:55:31 +000059 if( expected_status == 0 )
60 {
61 ASSERT_COMPARE( expected_output->x, expected_output->len,
62 output_data, key_size );
63 }
64
Paul Elliottd6635432021-11-18 22:35:48 +000065exit:
66 mbedtls_free( output_data );
67
68}
69/* END_CASE */