123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /* BEGIN_HEADER */
- #include "mbedtls/pkcs12.h"
- #include "mbedtls/error.h"
- typedef enum
- {
- USE_NULL_INPUT = 0,
- USE_GIVEN_INPUT = 1,
- } input_usage_method_t;
- /* END_HEADER */
- /* BEGIN_DEPENDENCIES
- * depends_on:MBEDTLS_PKCS12_C
- * END_DEPENDENCIES
- */
- /* BEGIN_CASE */
- void pkcs12_derive_key( int md_type, int key_size_arg,
- data_t *password_arg, int password_usage,
- data_t *salt_arg, int salt_usage,
- int iterations,
- data_t* expected_output, int expected_status )
- {
- int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
- unsigned char *output_data = NULL;
- unsigned char *password = NULL;
- size_t password_len = 0;
- unsigned char *salt = NULL;
- size_t salt_len = 0;
- size_t key_size = key_size_arg;
- if( password_usage == USE_GIVEN_INPUT )
- password = password_arg->x;
- password_len = password_arg->len;
- if( salt_usage == USE_GIVEN_INPUT )
- salt = salt_arg->x;
- salt_len = salt_arg->len;
- ASSERT_ALLOC( output_data, key_size );
- ret = mbedtls_pkcs12_derivation( output_data,
- key_size,
- password,
- password_len,
- salt,
- salt_len,
- md_type,
- MBEDTLS_PKCS12_DERIVE_KEY,
- iterations );
- TEST_EQUAL( ret, expected_status );
- if( expected_status == 0 )
- {
- ASSERT_COMPARE( expected_output->x, expected_output->len,
- output_data, key_size );
- }
- exit:
- mbedtls_free( output_data );
- }
- /* END_CASE */
|