• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* BEGIN_HEADER */
2#include "mbedtls/pkcs12.h"
3#include "common.h"
4
5#include "mbedtls/legacy_or_psa.h"
6
7typedef enum
8{
9   USE_NULL_INPUT = 0,
10   USE_GIVEN_INPUT = 1,
11} input_usage_method_t;
12
13/* END_HEADER */
14
15/* BEGIN_DEPENDENCIES
16 * depends_on:MBEDTLS_PKCS12_C
17 * END_DEPENDENCIES
18 */
19
20/* BEGIN_CASE */
21void pkcs12_derive_key( int md_type, int key_size_arg,
22                        data_t *password_arg, int password_usage,
23                        data_t *salt_arg, int salt_usage,
24                        int iterations,
25                        data_t* expected_output, int expected_status )
26
27{
28   unsigned char *output_data = NULL;
29
30   unsigned char *password = NULL;
31   size_t password_len = 0;
32   unsigned char *salt = NULL;
33   size_t salt_len = 0;
34   size_t key_size = key_size_arg;
35
36   if( password_usage == USE_GIVEN_INPUT )
37      password = password_arg->x;
38
39   password_len = password_arg->len;
40
41   if( salt_usage == USE_GIVEN_INPUT )
42      salt = salt_arg->x;
43
44   salt_len = salt_arg->len;
45
46   ASSERT_ALLOC( output_data, key_size );
47
48   int ret = mbedtls_pkcs12_derivation( output_data,
49                                        key_size,
50                                        password,
51                                        password_len,
52                                        salt,
53                                        salt_len,
54                                        md_type,
55                                        MBEDTLS_PKCS12_DERIVE_KEY,
56                                        iterations );
57
58   TEST_EQUAL( ret, expected_status );
59
60   if( expected_status == 0 )
61   {
62      ASSERT_COMPARE( expected_output->x, expected_output->len,
63                      output_data, key_size );
64   }
65
66exit:
67   mbedtls_free( output_data );
68
69}
70/* END_CASE */
71