diff --git a/library/x509_oid.c b/library/x509_oid.c
index 6ba04cf..7bbe4d5 100644
--- a/library/x509_oid.c
+++ b/library/x509_oid.c
@@ -27,7 +27,7 @@
 #define ADD_LEN(s)      s, MBEDTLS_OID_SIZE(s)
 
 /*
- * Macro to generate mbedtls_oid_descriptor_t
+ * Macro to generate mbedtls_x509_oid_descriptor_t
  */
 #if !defined(MBEDTLS_X509_REMOVE_INFO)
 #define OID_DESCRIPTOR(s, name, description)  { ADD_LEN(s), name, description }
@@ -46,8 +46,8 @@
         const mbedtls_asn1_buf *oid)     \
     {                                                                   \
         const TYPE_T *p = (LIST);                                       \
-        const mbedtls_oid_descriptor_t *cur =                           \
-            (const mbedtls_oid_descriptor_t *) p;                       \
+        const mbedtls_x509_oid_descriptor_t *cur =                           \
+            (const mbedtls_x509_oid_descriptor_t *) p;                       \
         if (p == NULL || oid == NULL) return NULL;                  \
         while (cur->asn1 != NULL) {                                    \
             if (cur->asn1_len == oid->len &&                            \
@@ -55,7 +55,7 @@
                 return p;                                            \
             }                                                           \
             p++;                                                        \
-            cur = (const mbedtls_oid_descriptor_t *) p;                 \
+            cur = (const mbedtls_x509_oid_descriptor_t *) p;                 \
         }                                                               \
         return NULL;                                                 \
     }
@@ -63,7 +63,7 @@
 #if !defined(MBEDTLS_X509_REMOVE_INFO)
 /*
  * Macro to generate a function for retrieving a single attribute from the
- * descriptor of an mbedtls_oid_descriptor_t wrapper.
+ * descriptor of an mbedtls_x509_oid_descriptor_t wrapper.
  */
 #define FN_OID_GET_DESCRIPTOR_ATTR1(FN_NAME, TYPE_T, TYPE_NAME, ATTR1_TYPE, ATTR1) \
     int FN_NAME(const mbedtls_asn1_buf *oid, ATTR1_TYPE * ATTR1)                  \
@@ -77,7 +77,7 @@
 
 /*
  * Macro to generate a function for retrieving a single attribute from an
- * mbedtls_oid_descriptor_t wrapper.
+ * mbedtls_x509_oid_descriptor_t wrapper.
  */
 #define FN_OID_GET_ATTR1(FN_NAME, TYPE_T, TYPE_NAME, ATTR1_TYPE, ATTR1) \
     int FN_NAME(const mbedtls_asn1_buf *oid, ATTR1_TYPE * ATTR1)                  \
@@ -90,7 +90,7 @@
 
 /*
  * Macro to generate a function for retrieving two attributes from an
- * mbedtls_oid_descriptor_t wrapper.
+ * mbedtls_x509_oid_descriptor_t wrapper.
  */
 #define FN_OID_GET_ATTR2(FN_NAME, TYPE_T, TYPE_NAME, ATTR1_TYPE, ATTR1,     \
                          ATTR2_TYPE, ATTR2)                                 \
@@ -106,7 +106,7 @@
 
 /*
  * Macro to generate a function for retrieving the OID based on a single
- * attribute from a mbedtls_oid_descriptor_t wrapper.
+ * attribute from a mbedtls_x509_oid_descriptor_t wrapper.
  */
 #define FN_OID_GET_OID_BY_ATTR1(FN_NAME, TYPE_T, LIST, ATTR1_TYPE, ATTR1)   \
     int FN_NAME(ATTR1_TYPE ATTR1, const char **oid, size_t *olen)             \
@@ -125,7 +125,7 @@
 
 /*
  * Macro to generate a function for retrieving the OID based on two
- * attributes from a mbedtls_oid_descriptor_t wrapper.
+ * attributes from a mbedtls_x509_oid_descriptor_t wrapper.
  */
 #define FN_OID_GET_OID_BY_ATTR2(FN_NAME, TYPE_T, LIST, ATTR1_TYPE, ATTR1,   \
                                 ATTR2_TYPE, ATTR2)                          \
@@ -148,7 +148,7 @@
  * For X520 attribute types
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     const char          *short_name;
 } oid_x520_attr_t;
 
@@ -256,7 +256,7 @@
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_x520_attr_t, x520_attr, oid_x520_attr_type)
-FN_OID_GET_ATTR1(mbedtls_oid_get_attr_short_name,
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_attr_short_name,
                  oid_x520_attr_t,
                  x520_attr,
                  const char *,
@@ -266,7 +266,7 @@
  * For X509 extensions
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     int                 ext_type;
 } oid_x509_ext_t;
 
@@ -325,10 +325,10 @@
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_x509_ext_t, x509_ext, oid_x509_ext)
-FN_OID_GET_ATTR1(mbedtls_oid_get_x509_ext_type, oid_x509_ext_t, x509_ext, int, ext_type)
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_x509_ext_type, oid_x509_ext_t, x509_ext, int, ext_type)
 
 #if !defined(MBEDTLS_X509_REMOVE_INFO)
-static const mbedtls_oid_descriptor_t oid_ext_key_usage[] =
+static const mbedtls_x509_oid_descriptor_t oid_ext_key_usage[] =
 {
     OID_DESCRIPTOR(MBEDTLS_OID_SERVER_AUTH,
                    "id-kp-serverAuth",
@@ -346,22 +346,23 @@
     NULL_OID_DESCRIPTOR,
 };
 
-FN_OID_TYPED_FROM_ASN1(mbedtls_oid_descriptor_t, ext_key_usage, oid_ext_key_usage)
-FN_OID_GET_ATTR1(mbedtls_oid_get_extended_key_usage,
-                 mbedtls_oid_descriptor_t,
+FN_OID_TYPED_FROM_ASN1(mbedtls_x509_oid_descriptor_t, ext_key_usage, oid_ext_key_usage)
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_extended_key_usage,
+                 mbedtls_x509_oid_descriptor_t,
                  ext_key_usage,
                  const char *,
                  description)
 
-static const mbedtls_oid_descriptor_t oid_certificate_policies[] =
+static const mbedtls_x509_oid_descriptor_t oid_certificate_policies[] =
 {
     OID_DESCRIPTOR(MBEDTLS_OID_ANY_POLICY,      "anyPolicy",       "Any Policy"),
     NULL_OID_DESCRIPTOR,
 };
 
-FN_OID_TYPED_FROM_ASN1(mbedtls_oid_descriptor_t, certificate_policies, oid_certificate_policies)
-FN_OID_GET_ATTR1(mbedtls_oid_get_certificate_policies,
-                 mbedtls_oid_descriptor_t,
+FN_OID_TYPED_FROM_ASN1(mbedtls_x509_oid_descriptor_t, certificate_policies,
+                       oid_certificate_policies)
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_certificate_policies,
+                 mbedtls_x509_oid_descriptor_t,
                  certificate_policies,
                  const char *,
                  description)
@@ -371,7 +372,7 @@
  * For SignatureAlgorithmIdentifier
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     mbedtls_md_type_t           md_alg;
     mbedtls_pk_type_t           pk_alg;
 } oid_sig_alg_t;
@@ -473,21 +474,21 @@
 FN_OID_TYPED_FROM_ASN1(oid_sig_alg_t, sig_alg, oid_sig_alg)
 
 #if !defined(MBEDTLS_X509_REMOVE_INFO)
-FN_OID_GET_DESCRIPTOR_ATTR1(mbedtls_oid_get_sig_alg_desc,
+FN_OID_GET_DESCRIPTOR_ATTR1(mbedtls_x509_oid_get_sig_alg_desc,
                             oid_sig_alg_t,
                             sig_alg,
                             const char *,
                             description)
 #endif
 
-FN_OID_GET_ATTR2(mbedtls_oid_get_sig_alg,
+FN_OID_GET_ATTR2(mbedtls_x509_oid_get_sig_alg,
                  oid_sig_alg_t,
                  sig_alg,
                  mbedtls_md_type_t,
                  md_alg,
                  mbedtls_pk_type_t,
                  pk_alg)
-FN_OID_GET_OID_BY_ATTR2(mbedtls_oid_get_oid_by_sig_alg,
+FN_OID_GET_OID_BY_ATTR2(mbedtls_x509_oid_get_oid_by_sig_alg,
                         oid_sig_alg_t,
                         oid_sig_alg,
                         mbedtls_pk_type_t,
@@ -499,7 +500,7 @@
  * For PublicKeyInfo (PKCS1, RFC 5480)
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     mbedtls_pk_type_t           pk_alg;
 } oid_pk_alg_t;
 
@@ -524,8 +525,8 @@
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_pk_alg_t, pk_alg, oid_pk_alg)
-FN_OID_GET_ATTR1(mbedtls_oid_get_pk_alg, oid_pk_alg_t, pk_alg, mbedtls_pk_type_t, pk_alg)
-FN_OID_GET_OID_BY_ATTR1(mbedtls_oid_get_oid_by_pk_alg,
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_pk_alg, oid_pk_alg_t, pk_alg, mbedtls_pk_type_t, pk_alg)
+FN_OID_GET_OID_BY_ATTR1(mbedtls_x509_oid_get_oid_by_pk_alg,
                         oid_pk_alg_t,
                         oid_pk_alg,
                         mbedtls_pk_type_t,
@@ -536,7 +537,7 @@
  * For elliptic curves that use namedCurve inside ECParams (RFC 5480)
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     mbedtls_ecp_group_id        grp_id;
 } oid_ecp_grp_t;
 
@@ -609,8 +610,8 @@
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_ecp_grp_t, grp_id, oid_ecp_grp)
-FN_OID_GET_ATTR1(mbedtls_oid_get_ec_grp, oid_ecp_grp_t, grp_id, mbedtls_ecp_group_id, grp_id)
-FN_OID_GET_OID_BY_ATTR1(mbedtls_oid_get_oid_by_ec_grp,
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_ec_grp, oid_ecp_grp_t, grp_id, mbedtls_ecp_group_id, grp_id)
+FN_OID_GET_OID_BY_ATTR1(mbedtls_x509_oid_get_oid_by_ec_grp,
                         oid_ecp_grp_t,
                         oid_ecp_grp,
                         mbedtls_ecp_group_id,
@@ -621,7 +622,7 @@
  * encoded in the AlgorithmIdentifier (RFC 8410)
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     mbedtls_ecp_group_id        grp_id;
 } oid_ecp_grp_algid_t;
 
@@ -646,12 +647,12 @@
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_ecp_grp_algid_t, grp_id_algid, oid_ecp_grp_algid)
-FN_OID_GET_ATTR1(mbedtls_oid_get_ec_grp_algid,
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_ec_grp_algid,
                  oid_ecp_grp_algid_t,
                  grp_id_algid,
                  mbedtls_ecp_group_id,
                  grp_id)
-FN_OID_GET_OID_BY_ATTR1(mbedtls_oid_get_oid_by_ec_grp_algid,
+FN_OID_GET_OID_BY_ATTR1(mbedtls_x509_oid_get_oid_by_ec_grp_algid,
                         oid_ecp_grp_algid_t,
                         oid_ecp_grp_algid,
                         mbedtls_ecp_group_id,
@@ -663,7 +664,7 @@
  * For PKCS#5 PBES2 encryption algorithm
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     mbedtls_cipher_type_t       cipher_alg;
 } oid_cipher_alg_t;
 
@@ -696,7 +697,7 @@
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_cipher_alg_t, cipher_alg, oid_cipher_alg)
-FN_OID_GET_ATTR1(mbedtls_oid_get_cipher_alg,
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_cipher_alg,
                  oid_cipher_alg_t,
                  cipher_alg,
                  mbedtls_cipher_type_t,
@@ -707,7 +708,7 @@
  * For digestAlgorithm
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     mbedtls_md_type_t           md_alg;
 } oid_md_alg_t;
 
@@ -786,8 +787,8 @@
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_md_alg_t, md_alg, oid_md_alg)
-FN_OID_GET_ATTR1(mbedtls_oid_get_md_alg, oid_md_alg_t, md_alg, mbedtls_md_type_t, md_alg)
-FN_OID_GET_OID_BY_ATTR1(mbedtls_oid_get_oid_by_md,
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_md_alg, oid_md_alg_t, md_alg, mbedtls_md_type_t, md_alg)
+FN_OID_GET_OID_BY_ATTR1(mbedtls_x509_oid_get_oid_by_md,
                         oid_md_alg_t,
                         oid_md_alg,
                         mbedtls_md_type_t,
@@ -797,7 +798,7 @@
  * For HMAC digestAlgorithm
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     mbedtls_md_type_t           md_hmac;
 } oid_md_hmac_t;
 
@@ -870,14 +871,14 @@
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_md_hmac_t, md_hmac, oid_md_hmac)
-FN_OID_GET_ATTR1(mbedtls_oid_get_md_hmac, oid_md_hmac_t, md_hmac, mbedtls_md_type_t, md_hmac)
+FN_OID_GET_ATTR1(mbedtls_x509_oid_get_md_hmac, oid_md_hmac_t, md_hmac, mbedtls_md_type_t, md_hmac)
 
 #if defined(MBEDTLS_PKCS12_C) && defined(MBEDTLS_CIPHER_C)
 /*
  * For PKCS#12 PBEs
  */
 typedef struct {
-    mbedtls_oid_descriptor_t    descriptor;
+    mbedtls_x509_oid_descriptor_t    descriptor;
     mbedtls_md_type_t           md_alg;
     mbedtls_cipher_type_t       cipher_alg;
 } oid_pkcs12_pbe_alg_t;
@@ -903,7 +904,7 @@
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_pkcs12_pbe_alg_t, pkcs12_pbe_alg, oid_pkcs12_pbe_alg)
-FN_OID_GET_ATTR2(mbedtls_oid_get_pkcs12_pbe_alg,
+FN_OID_GET_ATTR2(mbedtls_x509_oid_get_pkcs12_pbe_alg,
                  oid_pkcs12_pbe_alg_t,
                  pkcs12_pbe_alg,
                  mbedtls_md_type_t,
