diff --git a/library/x509_create.c b/library/x509_create.c
index b83fcd9..307e8be 100644
--- a/library/x509_create.c
+++ b/library/x509_create.c
@@ -141,7 +141,7 @@
 {
     int n1 = hex_to_int(*hexpair);
     int n2 = hex_to_int(*(hexpair + 1));
-    
+
     if (n1 != -1 && n2 != -1) {
         return (n1 << 4) | n2;
     } else {
@@ -154,13 +154,12 @@
                                         unsigned char *data,
                                         size_t *data_len)
 {
-    const char *c = s;
-    const char *end = c + len;
-    int hexpair = 0;
+    const char *c;
+    const char *end = s + len;
     unsigned char *d = data;
     int n;
     
-    while (c < end) {
+    for (c = s; c < end; c++) {
         if (*c == '\\') {
             c++;
 
@@ -169,22 +168,19 @@
                 if (n == 0) {
                     return MBEDTLS_ERR_X509_INVALID_NAME;
                 }
-                hexpair = 1;
                 *(d++) = n;
                 c++;
+                continue;
             } else if (c == end || !strchr(" ,=+<>#;\"\\", *c)) {
                 return MBEDTLS_ERR_X509_INVALID_NAME;
             }
         }
-        if (!hexpair) {
-            *(d++) = *c;
-        }
+        
+        *(d++) = *c;
+        
         if (d - data == MBEDTLS_X509_MAX_DN_NAME_SIZE) {
             return MBEDTLS_ERR_X509_INVALID_NAME;
         }
-
-        hexpair = 0;
-        c++;
     }
     *data_len = d - data;
     return 0;
