blob: f10c68dc54d3d80434bd6106b917fd3a4a7b33d7 [file] [log] [blame]
Gilles Peskine47c85792025-05-07 14:35:04 +02001/* BEGIN_HEADER */
Gilles Peskine86a47f82025-05-07 20:20:12 +02002#include "x509_oid.h"
Gilles Peskine47c85792025-05-07 14:35:04 +02003#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 */
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
Gilles Peskine532e3ee2025-05-07 20:37:15 +020024 ret = mbedtls_x509_oid_get_certificate_policies(&asn1_buf, &desc);
Gilles Peskine47c85792025-05-07 14:35:04 +020025 if (strlen(result_str) == 0) {
Gilles Peskine4c832212025-05-07 23:05:12 +020026 TEST_ASSERT(ret == MBEDTLS_ERR_X509_UNKNOWN_OID);
Gilles Peskine47c85792025-05-07 14:35:04 +020027 } 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
Gilles Peskine532e3ee2025-05-07 20:37:15 +020045 ret = mbedtls_x509_oid_get_extended_key_usage(&asn1_buf, &desc);
Gilles Peskine47c85792025-05-07 14:35:04 +020046 if (strlen(result_str) == 0) {
Gilles Peskine4c832212025-05-07 23:05:12 +020047 TEST_ASSERT(ret == MBEDTLS_ERR_X509_UNKNOWN_OID);
Gilles Peskine47c85792025-05-07 14:35:04 +020048 } 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
Gilles Peskine532e3ee2025-05-07 20:37:15 +020066 ret = mbedtls_x509_oid_get_x509_ext_type(&ext_oid, &ext_type);
Gilles Peskine47c85792025-05-07 14:35:04 +020067 if (exp_type == 0) {
Gilles Peskine4c832212025-05-07 23:05:12 +020068 TEST_ASSERT(ret == MBEDTLS_ERR_X509_UNKNOWN_OID);
Gilles Peskine47c85792025-05-07 14:35:04 +020069 } 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
Gilles Peskine532e3ee2025-05-07 20:37:15 +020087 ret = mbedtls_x509_oid_get_md_alg(&md_oid, &md_id);
Gilles Peskine47c85792025-05-07 14:35:04 +020088
89 if (exp_md_id < 0) {
Gilles Peskine4c832212025-05-07 23:05:12 +020090 TEST_ASSERT(ret == MBEDTLS_ERR_X509_UNKNOWN_OID);
Gilles Peskine47c85792025-05-07 14:35:04 +020091 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 */