diff --git a/library/x509.c b/library/x509.c
index 5298693..87f4820 100644
--- a/library/x509.c
+++ b/library/x509.c
@@ -876,12 +876,15 @@
         }
 
         if(is_numericoid) {
+            #if defined(MBEDTLS_ASN1_WRITE_C)
             s[0] = '#';
+
             c = name->val.tag;
             char lowbits = (c & 0x0F);
             char highbits = c>>4;
             s[1] = nibble_to_hex_digit(highbits);
             s[2] = nibble_to_hex_digit(lowbits);
+
             asn1_len_p = asn1_len_buf+5;
             asn1_len_size = mbedtls_asn1_write_len(&asn1_len_p,asn1_len_buf,name->val.len);
             asn1_len_start = 5 - asn1_len_size;
@@ -900,6 +903,9 @@
                 s[j++] = nibble_to_hex_digit(highbits);
                 s[j] = nibble_to_hex_digit(lowbits);
             }
+            #else
+            return MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE;
+            #endif
         } else {
             for (i = 0, j = 0; i < name->val.len; i++, j++) {
                 if (j >= sizeof(s) - 1) {
diff --git a/library/x509_create.c b/library/x509_create.c
index b2b6bcd..59f1905 100644
--- a/library/x509_create.c
+++ b/library/x509_create.c
@@ -209,6 +209,7 @@
     return 0;
 }
 
+#if defined(MBEDTLS_ASN1_PARSE_C)
 static int parse_attribute_value_ber_encoded(const char *s, int len, unsigned char *data, size_t *data_len, int *tag)
 {
     const char *c = s;
@@ -247,6 +248,7 @@
 
     return 0;
 }
+#endif
 
 int mbedtls_x509_string_to_names(mbedtls_asn1_named_data **head, const char *name)
 {
@@ -290,10 +292,14 @@
                 tag = attr_descr->default_tag;
             }
             if (numericoid) {
+				#if defined(MBEDTLS_ASN1_PARSE_C)
                 if ((parse_ret =
                          parse_attribute_value_ber_encoded(s, c - s, data, &data_len, &tag)) != 0) {
                     return parse_ret;
                 }
+				#else
+				return MBEDTLS_ERR_X509_INVALID_NAME;
+				#endif
             }
             mbedtls_asn1_named_data *cur =
                 mbedtls_asn1_store_named_data(head, oid, strlen(oid),
