quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

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(&params, 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(&params, 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(&params, 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(&params, 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 */