Refactor reading AttributeValue in dn gets
Signed-off-by: Agathiyan Bragadeesh <agathiyan.bragadeesh2@arm.com>
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,