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,