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,