quickjs-tart

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

test_suite_oid.function (4243B)


      1 /* BEGIN_HEADER */
      2 #include "mbedtls/oid.h"
      3 #include "mbedtls/asn1.h"
      4 #include "mbedtls/asn1write.h"
      5 #include "string.h"
      6 /* END_HEADER */
      7 
      8 /* BEGIN_DEPENDENCIES
      9  * depends_on:MBEDTLS_OID_C:!MBEDTLS_X509_REMOVE_INFO
     10  * END_DEPENDENCIES
     11  */
     12 
     13 /* BEGIN_CASE */
     14 void oid_get_certificate_policies(data_t *oid, char *result_str)
     15 {
     16     mbedtls_asn1_buf asn1_buf = { 0, 0, NULL };
     17     int ret;
     18     const char *desc;
     19 
     20     asn1_buf.tag = MBEDTLS_ASN1_OID;
     21     asn1_buf.p = oid->x;
     22     asn1_buf.len = oid->len;
     23 
     24     ret = mbedtls_oid_get_certificate_policies(&asn1_buf, &desc);
     25     if (strlen(result_str) == 0) {
     26         TEST_ASSERT(ret == MBEDTLS_ERR_OID_NOT_FOUND);
     27     } else {
     28         TEST_ASSERT(ret == 0);
     29         TEST_ASSERT(strcmp((char *) desc, result_str) == 0);
     30     }
     31 }
     32 /* END_CASE */
     33 
     34 /* BEGIN_CASE */
     35 void oid_get_extended_key_usage(data_t *oid, char *result_str)
     36 {
     37     mbedtls_asn1_buf asn1_buf = { 0, 0, NULL };
     38     int ret;
     39     const char *desc;
     40 
     41     asn1_buf.tag = MBEDTLS_ASN1_OID;
     42     asn1_buf.p = oid->x;
     43     asn1_buf.len = oid->len;
     44 
     45     ret = mbedtls_oid_get_extended_key_usage(&asn1_buf, &desc);
     46     if (strlen(result_str) == 0) {
     47         TEST_ASSERT(ret == MBEDTLS_ERR_OID_NOT_FOUND);
     48     } else {
     49         TEST_ASSERT(ret == 0);
     50         TEST_ASSERT(strcmp((char *) desc, result_str) == 0);
     51     }
     52 }
     53 /* END_CASE */
     54 
     55 /* BEGIN_CASE */
     56 void oid_get_x509_extension(data_t *oid, int exp_type)
     57 {
     58     mbedtls_asn1_buf ext_oid = { 0, 0, NULL };
     59     int ret;
     60     int ext_type;
     61 
     62     ext_oid.tag = MBEDTLS_ASN1_OID;
     63     ext_oid.p = oid->x;
     64     ext_oid.len = oid->len;
     65 
     66     ret = mbedtls_oid_get_x509_ext_type(&ext_oid, &ext_type);
     67     if (exp_type == 0) {
     68         TEST_ASSERT(ret == MBEDTLS_ERR_OID_NOT_FOUND);
     69     } else {
     70         TEST_ASSERT(ret == 0);
     71         TEST_ASSERT(ext_type == exp_type);
     72     }
     73 }
     74 /* END_CASE */
     75 
     76 /* BEGIN_CASE */
     77 void oid_get_md_alg_id(data_t *oid, int exp_md_id)
     78 {
     79     mbedtls_asn1_buf md_oid = { 0, 0, NULL };
     80     int ret;
     81     mbedtls_md_type_t md_id = 0;
     82 
     83     md_oid.tag = MBEDTLS_ASN1_OID;
     84     md_oid.p = oid->x;
     85     md_oid.len = oid->len;
     86 
     87     ret = mbedtls_oid_get_md_alg(&md_oid, &md_id);
     88 
     89     if (exp_md_id < 0) {
     90         TEST_ASSERT(ret == MBEDTLS_ERR_OID_NOT_FOUND);
     91         TEST_ASSERT(md_id == 0);
     92     } else {
     93         TEST_ASSERT(ret == 0);
     94         TEST_ASSERT((mbedtls_md_type_t) exp_md_id == md_id);
     95     }
     96 }
     97 /* END_CASE */
     98 
     99 /* BEGIN_CASE */
    100 void mbedtls_oid_get_md_hmac(data_t *oid, int exp_md_id)
    101 {
    102     mbedtls_asn1_buf md_oid = { 0, 0, NULL };
    103     int ret;
    104     mbedtls_md_type_t md_id = 0;
    105 
    106     md_oid.tag = MBEDTLS_ASN1_OID;
    107     md_oid.p = oid->x;
    108     md_oid.len = oid->len;
    109 
    110     ret = mbedtls_oid_get_md_hmac(&md_oid, &md_id);
    111 
    112     if (exp_md_id < 0) {
    113         TEST_ASSERT(ret == MBEDTLS_ERR_OID_NOT_FOUND);
    114         TEST_ASSERT(md_id == 0);
    115     } else {
    116         TEST_ASSERT(ret == 0);
    117         TEST_ASSERT((mbedtls_md_type_t) exp_md_id == md_id);
    118     }
    119 }
    120 /* END_CASE */
    121 
    122 /* BEGIN_CASE */
    123 void oid_get_numeric_string(data_t *oid, int error_ret, char *result_str)
    124 {
    125     char buf[256];
    126     mbedtls_asn1_buf input_oid = { 0, 0, NULL };
    127     int ret;
    128 
    129     input_oid.tag = MBEDTLS_ASN1_OID;
    130     /* Test that an empty OID is not dereferenced */
    131     input_oid.p = oid->len ? oid->x : (void *) 1;
    132     input_oid.len = oid->len;
    133 
    134     ret = mbedtls_oid_get_numeric_string(buf, sizeof(buf), &input_oid);
    135 
    136     if (error_ret == 0) {
    137         TEST_EQUAL(ret, strlen(result_str));
    138         TEST_ASSERT(ret >= 3);
    139         TEST_EQUAL(strcmp(buf, result_str), 0);
    140     } else {
    141         TEST_EQUAL(ret, error_ret);
    142     }
    143 }
    144 /* END_CASE */
    145 
    146 /* BEGIN_CASE */
    147 void oid_from_numeric_string(char *oid_str, int error_ret,
    148                              data_t *exp_oid_buf)
    149 {
    150     mbedtls_asn1_buf oid = { 0, 0, NULL };
    151     mbedtls_asn1_buf exp_oid = { 0, 0, NULL };
    152     int ret;
    153 
    154     exp_oid.tag = MBEDTLS_ASN1_OID;
    155     exp_oid.p = exp_oid_buf->x;
    156     exp_oid.len = exp_oid_buf->len;
    157 
    158     ret = mbedtls_oid_from_numeric_string(&oid, oid_str, strlen(oid_str));
    159 
    160     if (error_ret == 0) {
    161         TEST_EQUAL(oid.len, exp_oid.len);
    162         TEST_ASSERT(memcmp(oid.p, exp_oid.p, oid.len) == 0);
    163         mbedtls_free(oid.p);
    164         oid.p = NULL;
    165         oid.len = 0;
    166     } else {
    167         TEST_EQUAL(ret, error_ret);
    168     }
    169 }
    170 /* END_CASE */