1a8e1175bSopenharmony_ci/* BEGIN_HEADER */ 2a8e1175bSopenharmony_ci#include "mbedtls/pkcs5.h" 3a8e1175bSopenharmony_ci#include "mbedtls/cipher.h" 4a8e1175bSopenharmony_ci/* END_HEADER */ 5a8e1175bSopenharmony_ci 6a8e1175bSopenharmony_ci/* BEGIN_DEPENDENCIES 7a8e1175bSopenharmony_ci * depends_on:MBEDTLS_PKCS5_C 8a8e1175bSopenharmony_ci * END_DEPENDENCIES 9a8e1175bSopenharmony_ci */ 10a8e1175bSopenharmony_ci 11a8e1175bSopenharmony_ci/* BEGIN_CASE */ 12a8e1175bSopenharmony_civoid pbkdf2_hmac(int hash, data_t *pw_str, data_t *salt_str, 13a8e1175bSopenharmony_ci int it_cnt, int key_len, data_t *result_key_string) 14a8e1175bSopenharmony_ci{ 15a8e1175bSopenharmony_ci unsigned char key[100]; 16a8e1175bSopenharmony_ci 17a8e1175bSopenharmony_ci MD_PSA_INIT(); 18a8e1175bSopenharmony_ci TEST_ASSERT(mbedtls_pkcs5_pbkdf2_hmac_ext(hash, pw_str->x, pw_str->len, 19a8e1175bSopenharmony_ci salt_str->x, salt_str->len, 20a8e1175bSopenharmony_ci it_cnt, key_len, key) == 0); 21a8e1175bSopenharmony_ci 22a8e1175bSopenharmony_ci TEST_ASSERT(mbedtls_test_hexcmp(key, result_key_string->x, 23a8e1175bSopenharmony_ci key_len, result_key_string->len) == 0); 24a8e1175bSopenharmony_ci 25a8e1175bSopenharmony_ciexit: 26a8e1175bSopenharmony_ci MD_PSA_DONE(); 27a8e1175bSopenharmony_ci} 28a8e1175bSopenharmony_ci/* END_CASE */ 29a8e1175bSopenharmony_ci 30a8e1175bSopenharmony_ci/* BEGIN_CASE depends_on:MBEDTLS_ASN1_PARSE_C:MBEDTLS_CIPHER_C */ 31a8e1175bSopenharmony_civoid pbes2_encrypt(int params_tag, data_t *params_hex, data_t *pw, 32a8e1175bSopenharmony_ci data_t *data, int outsize, int ref_ret, 33a8e1175bSopenharmony_ci data_t *ref_out) 34a8e1175bSopenharmony_ci{ 35a8e1175bSopenharmony_ci int my_ret; 36a8e1175bSopenharmony_ci mbedtls_asn1_buf params; 37a8e1175bSopenharmony_ci unsigned char *my_out = NULL; 38a8e1175bSopenharmony_ci#if defined(MBEDTLS_CIPHER_PADDING_PKCS7) 39a8e1175bSopenharmony_ci size_t my_out_len = 0; 40a8e1175bSopenharmony_ci#endif 41a8e1175bSopenharmony_ci MD_PSA_INIT(); 42a8e1175bSopenharmony_ci 43a8e1175bSopenharmony_ci params.tag = params_tag; 44a8e1175bSopenharmony_ci params.p = params_hex->x; 45a8e1175bSopenharmony_ci params.len = params_hex->len; 46a8e1175bSopenharmony_ci 47a8e1175bSopenharmony_ci ASSERT_ALLOC(my_out, outsize); 48a8e1175bSopenharmony_ci 49a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_DEPRECATED) 50a8e1175bSopenharmony_ci if (ref_ret != MBEDTLS_ERR_ASN1_BUF_TOO_SMALL) { 51a8e1175bSopenharmony_ci my_ret = mbedtls_pkcs5_pbes2(¶ms, MBEDTLS_PKCS5_ENCRYPT, 52a8e1175bSopenharmony_ci pw->x, pw->len, data->x, data->len, my_out); 53a8e1175bSopenharmony_ci TEST_EQUAL(my_ret, ref_ret); 54a8e1175bSopenharmony_ci } 55a8e1175bSopenharmony_ci if (ref_ret == 0) { 56a8e1175bSopenharmony_ci ASSERT_COMPARE(my_out, ref_out->len, 57a8e1175bSopenharmony_ci ref_out->x, ref_out->len); 58a8e1175bSopenharmony_ci } 59a8e1175bSopenharmony_ci#endif 60a8e1175bSopenharmony_ci 61a8e1175bSopenharmony_ci#if defined(MBEDTLS_CIPHER_PADDING_PKCS7) 62a8e1175bSopenharmony_ci my_ret = mbedtls_pkcs5_pbes2_ext(¶ms, MBEDTLS_PKCS5_ENCRYPT, 63a8e1175bSopenharmony_ci pw->x, pw->len, data->x, data->len, my_out, 64a8e1175bSopenharmony_ci outsize, &my_out_len); 65a8e1175bSopenharmony_ci TEST_EQUAL(my_ret, ref_ret); 66a8e1175bSopenharmony_ci if (ref_ret == 0) { 67a8e1175bSopenharmony_ci ASSERT_COMPARE(my_out, my_out_len, 68a8e1175bSopenharmony_ci ref_out->x, ref_out->len); 69a8e1175bSopenharmony_ci } 70a8e1175bSopenharmony_ci#endif 71a8e1175bSopenharmony_ci 72a8e1175bSopenharmony_ciexit: 73a8e1175bSopenharmony_ci mbedtls_free(my_out); 74a8e1175bSopenharmony_ci MD_PSA_DONE(); 75a8e1175bSopenharmony_ci} 76a8e1175bSopenharmony_ci/* END_CASE */ 77a8e1175bSopenharmony_ci 78a8e1175bSopenharmony_ci/* BEGIN_CASE depends_on:MBEDTLS_ASN1_PARSE_C:MBEDTLS_CIPHER_C */ 79a8e1175bSopenharmony_civoid pbes2_decrypt(int params_tag, data_t *params_hex, data_t *pw, 80a8e1175bSopenharmony_ci data_t *data, int outsize, int ref_ret, 81a8e1175bSopenharmony_ci data_t *ref_out) 82a8e1175bSopenharmony_ci{ 83a8e1175bSopenharmony_ci int my_ret; 84a8e1175bSopenharmony_ci mbedtls_asn1_buf params; 85a8e1175bSopenharmony_ci unsigned char *my_out = NULL; 86a8e1175bSopenharmony_ci#if defined(MBEDTLS_CIPHER_PADDING_PKCS7) 87a8e1175bSopenharmony_ci size_t my_out_len = 0; 88a8e1175bSopenharmony_ci#endif 89a8e1175bSopenharmony_ci 90a8e1175bSopenharmony_ci MD_PSA_INIT(); 91a8e1175bSopenharmony_ci 92a8e1175bSopenharmony_ci params.tag = params_tag; 93a8e1175bSopenharmony_ci params.p = params_hex->x; 94a8e1175bSopenharmony_ci params.len = params_hex->len; 95a8e1175bSopenharmony_ci 96a8e1175bSopenharmony_ci ASSERT_ALLOC(my_out, outsize); 97a8e1175bSopenharmony_ci 98a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_DEPRECATED) 99a8e1175bSopenharmony_ci if (ref_ret != MBEDTLS_ERR_ASN1_BUF_TOO_SMALL) { 100a8e1175bSopenharmony_ci my_ret = mbedtls_pkcs5_pbes2(¶ms, MBEDTLS_PKCS5_DECRYPT, 101a8e1175bSopenharmony_ci pw->x, pw->len, data->x, data->len, my_out); 102a8e1175bSopenharmony_ci TEST_EQUAL(my_ret, ref_ret); 103a8e1175bSopenharmony_ci } 104a8e1175bSopenharmony_ci if (ref_ret == 0) { 105a8e1175bSopenharmony_ci ASSERT_COMPARE(my_out, ref_out->len, 106a8e1175bSopenharmony_ci ref_out->x, ref_out->len); 107a8e1175bSopenharmony_ci } 108a8e1175bSopenharmony_ci#endif 109a8e1175bSopenharmony_ci 110a8e1175bSopenharmony_ci#if defined(MBEDTLS_CIPHER_PADDING_PKCS7) 111a8e1175bSopenharmony_ci my_ret = mbedtls_pkcs5_pbes2_ext(¶ms, MBEDTLS_PKCS5_DECRYPT, 112a8e1175bSopenharmony_ci pw->x, pw->len, data->x, data->len, my_out, 113a8e1175bSopenharmony_ci outsize, &my_out_len); 114a8e1175bSopenharmony_ci TEST_EQUAL(my_ret, ref_ret); 115a8e1175bSopenharmony_ci if (ref_ret == 0) { 116a8e1175bSopenharmony_ci ASSERT_COMPARE(my_out, my_out_len, 117a8e1175bSopenharmony_ci ref_out->x, ref_out->len); 118a8e1175bSopenharmony_ci } 119a8e1175bSopenharmony_ci#endif 120a8e1175bSopenharmony_ci 121a8e1175bSopenharmony_ciexit: 122a8e1175bSopenharmony_ci mbedtls_free(my_out); 123a8e1175bSopenharmony_ci MD_PSA_DONE(); 124a8e1175bSopenharmony_ci} 125a8e1175bSopenharmony_ci/* END_CASE */ 126a8e1175bSopenharmony_ci 127a8e1175bSopenharmony_ci/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ 128a8e1175bSopenharmony_civoid pkcs5_selftest() 129a8e1175bSopenharmony_ci{ 130a8e1175bSopenharmony_ci MD_PSA_INIT(); 131a8e1175bSopenharmony_ci TEST_ASSERT(mbedtls_pkcs5_self_test(1) == 0); 132a8e1175bSopenharmony_ci 133a8e1175bSopenharmony_ciexit: 134a8e1175bSopenharmony_ci MD_PSA_DONE(); 135a8e1175bSopenharmony_ci} 136a8e1175bSopenharmony_ci/* END_CASE */ 137