test_suite_pkcs12.function 1.7 KB

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