Accept short name/ber encoded data in DNs
Signed-off-by: Agathiyan Bragadeesh <agathiyan.bragadeesh2@arm.com>
diff --git a/library/x509_create.c b/library/x509_create.c
index 99115c4..6ce15f9 100644
--- a/library/x509_create.c
+++ b/library/x509_create.c
@@ -289,6 +289,22 @@
}
if (!in_attr_type && ((*c == ',' && *(c-1) != '\\') || c == end)) {
+#if defined(MBEDTLS_ASN1_PARSE_C)
+ if ((parse_ret =
+ parse_attribute_value_ber_encoded(s, (int) (c - s), data, &data_len,
+ &tag)) != 0) {
+ if(numericoid) {
+ return MBEDTLS_ERR_X509_INVALID_NAME;
+ }
+ else {
+ if ((parse_ret =
+ parse_attribute_value_string(s, (int) (c - s), data, &data_len)) != 0) {
+ return parse_ret;
+ }
+ tag = attr_descr->default_tag;
+ }
+ }
+#else
if (!numericoid) {
if ((parse_ret =
parse_attribute_value_string(s, (int) (c - s), data, &data_len)) != 0) {
@@ -297,16 +313,9 @@
tag = attr_descr->default_tag;
}
if (numericoid) {
-#if defined(MBEDTLS_ASN1_PARSE_C)
- if ((parse_ret =
- parse_attribute_value_ber_encoded(s, (int) (c - s), data, &data_len,
- &tag)) != 0) {
- return parse_ret;
- }
-#else
return MBEDTLS_ERR_X509_INVALID_NAME;
-#endif
}
+#endif
mbedtls_asn1_named_data *cur =
mbedtls_asn1_store_named_data(head, oid, strlen(oid),
(unsigned char *) data,
diff --git a/tests/suites/test_suite_x509write.data b/tests/suites/test_suite_x509write.data
index 23a0596..814f8f7 100644
--- a/tests/suites/test_suite_x509write.data
+++ b/tests/suites/test_suite_x509write.data
@@ -218,7 +218,10 @@
mbedtls_x509_string_to_names:"C=NL, 2.5.4.10=#0C084F6666737061726, OU=PolarSSL":"":MBEDTLS_ERR_X509_INVALID_NAME
X509 String to Names #18 (Invalid OID)
-mbedtls_x509_string_to_names:"C=NL, 10.5.4.10=#0C084F6666737061726, OU=PolarSSL":"":MBEDTLS_ERR_X509_INVALID_NAME
+mbedtls_x509_string_to_names:"C=NL, 10.5.4.10=#0C084F6666737061726B, OU=PolarSSL":"":MBEDTLS_ERR_X509_INVALID_NAME
+
+X509 String to Names #18 (short name and hexstring)
+mbedtls_x509_string_to_names:"C=NL, O=#0C084F6666737061726B, OU=PolarSSL":"C=NL, O=Offspark, OU=PolarSSL":0
X509 String to Names #19 (Escape non-ascii hexpairs)
mbedtls_x509_string_to_names:"C=NL, O=Of\\00spark, OU=PolarSSL":"C=NL, O=Of\\00spark, OU=PolarSSL":0