test_suite_oid.function 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /* BEGIN_HEADER */
  2. #include "mbedtls/oid.h"
  3. #include "mbedtls/asn1.h"
  4. #include "mbedtls/asn1write.h"
  5. #include "string.h"
  6. #include "mbedtls/legacy_or_psa.h"
  7. /* END_HEADER */
  8. /* BEGIN_DEPENDENCIES
  9. * depends_on:MBEDTLS_OID_C:!MBEDTLS_X509_REMOVE_INFO
  10. * END_DEPENDENCIES
  11. */
  12. /* BEGIN_CASE */
  13. void oid_get_certificate_policies(data_t *oid, char *result_str)
  14. {
  15. mbedtls_asn1_buf asn1_buf = { 0, 0, NULL };
  16. int ret;
  17. const char *desc;
  18. asn1_buf.tag = MBEDTLS_ASN1_OID;
  19. asn1_buf.p = oid->x;
  20. asn1_buf.len = oid->len;
  21. ret = mbedtls_oid_get_certificate_policies(&asn1_buf, &desc);
  22. if (strlen(result_str) == 0) {
  23. TEST_ASSERT(ret == MBEDTLS_ERR_OID_NOT_FOUND);
  24. } else {
  25. TEST_ASSERT(ret == 0);
  26. TEST_ASSERT(strcmp((char *) desc, result_str) == 0);
  27. }
  28. }
  29. /* END_CASE */
  30. /* BEGIN_CASE */
  31. void oid_get_extended_key_usage(data_t *oid, char *result_str)
  32. {
  33. mbedtls_asn1_buf asn1_buf = { 0, 0, NULL };
  34. int ret;
  35. const char *desc;
  36. asn1_buf.tag = MBEDTLS_ASN1_OID;
  37. asn1_buf.p = oid->x;
  38. asn1_buf.len = oid->len;
  39. ret = mbedtls_oid_get_extended_key_usage(&asn1_buf, &desc);
  40. if (strlen(result_str) == 0) {
  41. TEST_ASSERT(ret == MBEDTLS_ERR_OID_NOT_FOUND);
  42. } else {
  43. TEST_ASSERT(ret == 0);
  44. TEST_ASSERT(strcmp((char *) desc, result_str) == 0);
  45. }
  46. }
  47. /* END_CASE */
  48. /* BEGIN_CASE */
  49. void oid_get_x509_extension(data_t *oid, int exp_type)
  50. {
  51. mbedtls_asn1_buf ext_oid = { 0, 0, NULL };
  52. int ret;
  53. int ext_type;
  54. ext_oid.tag = MBEDTLS_ASN1_OID;
  55. ext_oid.p = oid->x;
  56. ext_oid.len = oid->len;
  57. ret = mbedtls_oid_get_x509_ext_type(&ext_oid, &ext_type);
  58. if (exp_type == 0) {
  59. TEST_ASSERT(ret == MBEDTLS_ERR_OID_NOT_FOUND);
  60. } else {
  61. TEST_ASSERT(ret == 0);
  62. TEST_ASSERT(ext_type == exp_type);
  63. }
  64. }
  65. /* END_CASE */
  66. /* BEGIN_CASE */
  67. void oid_get_md_alg_id(data_t *oid, int exp_md_id)
  68. {
  69. mbedtls_asn1_buf md_oid = { 0, 0, NULL };
  70. int ret;
  71. mbedtls_md_type_t md_id = 0;
  72. md_oid.tag = MBEDTLS_ASN1_OID;
  73. md_oid.p = oid->x;
  74. md_oid.len = oid->len;
  75. ret = mbedtls_oid_get_md_alg(&md_oid, &md_id);
  76. if (exp_md_id < 0) {
  77. TEST_ASSERT(ret == MBEDTLS_ERR_OID_NOT_FOUND);
  78. TEST_ASSERT(md_id == 0);
  79. } else {
  80. TEST_ASSERT(ret == 0);
  81. TEST_ASSERT((mbedtls_md_type_t) exp_md_id == md_id);
  82. }
  83. }
  84. /* END_CASE */
  85. /* BEGIN_CASE */
  86. void oid_get_numeric_string(data_t *oid, int error_ret, char *result_str)
  87. {
  88. char buf[256];
  89. mbedtls_asn1_buf input_oid = { 0, 0, NULL };
  90. int ret;
  91. input_oid.tag = MBEDTLS_ASN1_OID;
  92. /* Test that an empty OID is not dereferenced */
  93. input_oid.p = oid->len ? oid->x : (void *) 1;
  94. input_oid.len = oid->len;
  95. ret = mbedtls_oid_get_numeric_string(buf, sizeof(buf), &input_oid);
  96. if (error_ret == 0) {
  97. TEST_EQUAL(ret, strlen(result_str));
  98. TEST_ASSERT(ret >= 3);
  99. TEST_EQUAL(strcmp(buf, result_str), 0);
  100. } else {
  101. TEST_EQUAL(ret, error_ret);
  102. }
  103. }
  104. /* END_CASE */