diff --git a/library/x509_crt.c b/library/x509_crt.c
index 243373e..c628e81 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -230,13 +230,16 @@
 /*
  * Return 0 if name matches wildcard, -1 otherwise
  */
-static int x509_check_wildcard( const char *cn, const mbedtls_x509_buf *name )
+static int x509_check_wildcard( char const *cn,
+                                size_t cn_len,
+                                unsigned char const *buf,
+                                size_t buf_len )
 {
     size_t i;
-    size_t cn_idx = 0, cn_len = strlen( cn );
+    size_t cn_idx = 0;
 
     /* We can't have a match if there is no wildcard to match */
-    if( name->len < 3 || name->p[0] != '*' || name->p[1] != '.' )
+    if( buf_len < 3 || buf[0] != '*' || buf[1] != '.' )
         return( -1 );
 
     for( i = 0; i < cn_len; ++i )
@@ -251,8 +254,8 @@
     if( cn_idx == 0 )
         return( -1 );
 
-    if( cn_len - cn_idx == name->len - 1 &&
-        mbedtls_x509_memcasecmp( name->p + 1, cn + cn_idx, name->len - 1 ) == 0 )
+    if( cn_len - cn_idx == buf_len - 1 &&
+        mbedtls_x509_memcasecmp( buf + 1, cn + cn_idx, buf_len - 1 ) == 0 )
     {
         return( 0 );
     }
@@ -2387,18 +2390,20 @@
 /*
  * Check for CN match
  */
-static int x509_crt_check_cn( const mbedtls_x509_buf *name,
-                              const char *cn, size_t cn_len )
+static int x509_crt_check_cn( unsigned char const *buf,
+                              size_t buflen,
+                              const char *cn,
+                              size_t cn_len )
 {
-    /* try exact match */
-    if( name->len == cn_len &&
-        mbedtls_x509_memcasecmp( cn, name->p, cn_len ) == 0 )
+    /* Try exact match */
+    if( buflen == cn_len &&
+        mbedtls_x509_memcasecmp( cn, buf, cn_len ) == 0 )
     {
         return( 0 );
     }
 
     /* try wildcard match */
-    if( x509_check_wildcard( cn, name ) == 0 )
+    if( x509_check_wildcard( cn, cn_len, buf, buflen ) == 0 )
     {
         return( 0 );
     }
@@ -2418,7 +2423,7 @@
     size_t cn_len = strlen( cn );
 
     if( MBEDTLS_OID_CMP( MBEDTLS_OID_AT_CN, oid ) == 0 &&
-        x509_crt_check_cn( val, cn, cn_len ) == 0 )
+        x509_crt_check_cn( val->p, val->len, cn, cn_len ) == 0 )
     {
         return( 1 );
     }
@@ -2440,7 +2445,8 @@
     {
         for( cur = &crt->subject_alt_names; cur != NULL; cur = cur->next )
         {
-            if( x509_crt_check_cn( &cur->buf, cn, cn_len ) == 0 )
+            if( x509_crt_check_cn( cur->buf.p, cur->buf.len,
+                                   cn, cn_len ) == 0 )
                 break;
         }
 
