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