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