diff --git a/library/x509_create.c b/library/x509_create.c
index 77f5066..475d2ba 100644
--- a/library/x509_create.c
+++ b/library/x509_create.c
@@ -273,14 +273,23 @@
         }
 
         if (!in_attr_type && ((*c == ',' && *(c-1) != '\\') || c == end)) {
+            if (*s == '#') {
 #if defined(MBEDTLS_ASN1_PARSE_C)
-            if ((parse_ret =
-                     parse_attribute_value_der_encoded(s, (int) (c - s), data, &data_len,
-                                                       &tag)) != 0) {
-                if (numericoid) {
+                if ((parse_ret =
+                    parse_attribute_value_der_encoded(s, (int) (c - s), data, &data_len,
+                                                    &tag)) != 0) {
                     mbedtls_free(oid.p);
                     return MBEDTLS_ERR_X509_INVALID_NAME;
-                } else {
+                }     
+#else
+                return MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE
+#endif
+            } else {
+                if(numericoid) {
+                    mbedtls_free(oid.p);
+                    return MBEDTLS_ERR_X509_INVALID_NAME;
+                }
+                else {
                     if ((parse_ret =
                              parse_attribute_value_string(s, (int) (c - s), data,
                                                           &data_len)) != 0) {
@@ -290,20 +299,7 @@
                     tag = attr_descr->default_tag;
                 }
             }
-#else
-            if (!numericoid) {
-                if ((parse_ret =
-                         parse_attribute_value_string(s, (int) (c - s), data, &data_len)) != 0) {
-                    mbedtls_free(oid);
-                    return parse_ret;
-                }
-                tag = attr_descr->default_tag;
-            }
-            if (numericoid) {
-                mbedtls_free(oid);
-                return MBEDTLS_ERR_X509_INVALID_NAME;
-            }
-#endif
+
             mbedtls_asn1_named_data *cur =
                 mbedtls_asn1_store_named_data(head, (char *) oid.p, oid.len,
                                               (unsigned char *) data,
