diff --git a/library/x509.c b/library/x509.c
index 8b63572..72cadd0 100644
--- a/library/x509.c
+++ b/library/x509.c
@@ -601,41 +601,47 @@
     return( ret );
 }
 
+static int x509_get_name_cb( void *ctx,
+                             mbedtls_x509_buf *oid,
+                             mbedtls_x509_buf *val,
+                             int next_merged )
+{
+    mbedtls_x509_name **cur_ptr = (mbedtls_x509_name**) ctx;
+    mbedtls_x509_name *cur = *cur_ptr;
+
+    if( cur->oid.p != NULL )
+    {
+        cur->next = mbedtls_calloc( 1, sizeof( mbedtls_x509_name ) );
+        if( cur->next == NULL )
+            return( MBEDTLS_ERR_ASN1_ALLOC_FAILED );
+
+        cur = cur->next;
+    }
+
+    cur->oid = *oid;
+    cur->val = *val;
+    cur->next_merged = next_merged;
+
+    *cur_ptr = cur;
+    return( 0 );
+}
 
 int mbedtls_x509_get_name( unsigned char **p, const unsigned char *end,
                            mbedtls_x509_name *cur )
 {
     int ret;
-    const unsigned char *end_set;
+    mbedtls_x509_buf_raw name_buf = { *p, end - *p };
+    memset( cur, 0, sizeof( mbedtls_x509_name ) );
+    ret = mbedtls_x509_name_cmp_raw( &name_buf, &name_buf,
+                                     x509_get_name_cb,
+                                     &cur );
+    if( ret != 0 )
+        return( ret );
 
-    end_set = *p;
-    while( 1 )
-    {
-        ret = x509_set_sequence_iterate( p, &end_set, end,
-                                         &cur->oid, &cur->val );
-        if( ret != 0 )
-            return( ret + MBEDTLS_ERR_X509_INVALID_NAME );
-
-        if( *p != end_set )
-            cur->next_merged = 1;
-
-        if( *p == end )
-        {
-            cur->next = NULL;
-            break;
-        }
-
-        cur->next = mbedtls_calloc( 1, sizeof( mbedtls_x509_name ) );
-        if( cur->next == NULL )
-            return( MBEDTLS_ERR_X509_ALLOC_FAILED );
-
-        cur = cur->next;
-    }
-
+    *p = (unsigned char*) end;
     return( 0 );
 }
 
-
 static int x509_parse_int( unsigned char **p, size_t n, int *res )
 {
     *res = 0;
