1/* BEGIN_HEADER */
2#include "x509_oid.h"
3#include "mbedtls/asn1.h"
4#include "mbedtls/asn1write.h"
5#include "string.h"
6/* END_HEADER */
7
8/* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C:!MBEDTLS_X509_REMOVE_INFO */
9void oid_get_certificate_policies(data_t *oid, char *result_str)
10{
11    mbedtls_asn1_buf asn1_buf = { 0, 0, NULL };
12    int ret;
13    const char *desc;
14
15    asn1_buf.tag = MBEDTLS_ASN1_OID;
16    asn1_buf.p = oid->x;
17    asn1_buf.len = oid->len;
18
19    ret = mbedtls_x509_oid_get_certificate_policies(&asn1_buf, &desc);
20    if (strlen(result_str) == 0) {
21        TEST_ASSERT(ret == MBEDTLS_ERR_X509_UNKNOWN_OID);
22    } else {
23        TEST_ASSERT(ret == 0);
24        TEST_ASSERT(strcmp((char *) desc, result_str) == 0);
25    }
26}
27/* END_CASE */
28
29/* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C:!MBEDTLS_X509_REMOVE_INFO */
30void oid_get_extended_key_usage(data_t *oid, char *result_str)
31{
32    mbedtls_asn1_buf asn1_buf = { 0, 0, NULL };
33    int ret;
34    const char *desc;
35
36    asn1_buf.tag = MBEDTLS_ASN1_OID;
37    asn1_buf.p = oid->x;
38    asn1_buf.len = oid->len;
39
40    ret = mbedtls_x509_oid_get_extended_key_usage(&asn1_buf, &desc);
41    if (strlen(result_str) == 0) {
42        TEST_ASSERT(ret == MBEDTLS_ERR_X509_UNKNOWN_OID);
43    } else {
44        TEST_ASSERT(ret == 0);
45        TEST_ASSERT(strcmp((char *) desc, result_str) == 0);
46    }
47}
48/* END_CASE */
49
50/* BEGIN_CASE depends_on:MBEDTLS_X509_OID_HAVE_GET_X509_EXT_TYPE */
51void oid_get_x509_extension(data_t *oid, int exp_type)
52{
53    mbedtls_asn1_buf ext_oid = { 0, 0, NULL };
54    int ret;
55    int ext_type;
56
57    ext_oid.tag = MBEDTLS_ASN1_OID;
58    ext_oid.p = oid->x;
59    ext_oid.len = oid->len;
60
61    ret = mbedtls_x509_oid_get_x509_ext_type(&ext_oid, &ext_type);
62    if (exp_type == 0) {
63        TEST_ASSERT(ret == MBEDTLS_ERR_X509_UNKNOWN_OID);
64    } else {
65        TEST_ASSERT(ret == 0);
66        TEST_ASSERT(ext_type == exp_type);
67    }
68}
69/* END_CASE */
70
71/* BEGIN_CASE depends_on:MBEDTLS_X509_OID_HAVE_GET_MD_ALG */
72void oid_get_md_alg_id(data_t *oid, int exp_md_id)
73{
74    mbedtls_asn1_buf md_oid = { 0, 0, NULL };
75    int ret;
76    mbedtls_md_type_t md_id = 0;
77
78    md_oid.tag = MBEDTLS_ASN1_OID;
79    md_oid.p = oid->x;
80    md_oid.len = oid->len;
81
82    ret = mbedtls_x509_oid_get_md_alg(&md_oid, &md_id);
83
84    if (exp_md_id < 0) {
85        TEST_ASSERT(ret == MBEDTLS_ERR_X509_UNKNOWN_OID);
86        TEST_ASSERT(md_id == 0);
87    } else {
88        TEST_ASSERT(ret == 0);
89        TEST_ASSERT((mbedtls_md_type_t) exp_md_id == md_id);
90    }
91}
92/* END_CASE */
93