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 10 * END_DEPENDENCIES 11 */ 12 13/* BEGIN_CASE */ 14void 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 */ 35void 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 */ 56void 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 */ 77void 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 */ 100void oid_get_numeric_string(data_t *oid, int error_ret, char *result_str) 101{ 102 char buf[256]; 103 mbedtls_asn1_buf input_oid = { 0, 0, NULL }; 104 int ret; 105 106 input_oid.tag = MBEDTLS_ASN1_OID; 107 /* Test that an empty OID is not dereferenced */ 108 input_oid.p = oid->len ? oid->x : (void *) 1; 109 input_oid.len = oid->len; 110 111 ret = mbedtls_oid_get_numeric_string(buf, sizeof(buf), &input_oid); 112 113 if (error_ret == 0) { 114 TEST_EQUAL(ret, strlen(result_str)); 115 TEST_ASSERT(ret >= 3); 116 TEST_EQUAL(strcmp(buf, result_str), 0); 117 } else { 118 TEST_EQUAL(ret, error_ret); 119 } 120} 121/* END_CASE */ 122