diff --git a/library/x509.c b/library/x509.c
index 47b1843..7f6483e 100644
--- a/library/x509.c
+++ b/library/x509.c
@@ -480,7 +480,7 @@
  * Store the name in printable form into buf; no more
  * than size characters will be written
  */
-int x509parse_dn_gets( char *buf, size_t size, const x509_name *dn )
+int x509_dn_gets( char *buf, size_t size, const x509_name *dn )
 {
     int ret;
     size_t i, n;
@@ -540,7 +540,7 @@
  * Store the serial in printable form into buf; no more
  * than size characters will be written
  */
-int x509parse_serial_gets( char *buf, size_t size, const x509_buf *serial )
+int x509_serial_gets( char *buf, size_t size, const x509_buf *serial )
 {
     int ret;
     size_t i, n, nr;
@@ -615,7 +615,7 @@
  * Return 0 if the x509_time is still valid, or 1 otherwise.
  */
 #if defined(POLARSSL_HAVE_TIME)
-int x509parse_time_expired( const x509_time *to )
+int x509_time_expired( const x509_time *to )
 {
     int year, mon, day;
     int hour, min, sec;
@@ -682,7 +682,7 @@
     return( 0 );
 }
 #else  /* POLARSSL_HAVE_TIME */
-int x509parse_time_expired( const x509_time *to )
+int x509_time_expired( const x509_time *to )
 {
     ((void) to);
     return( 0 );
diff --git a/library/x509_create.c b/library/x509_create.c
index b59abbf..d7a1fee 100644
--- a/library/x509_create.c
+++ b/library/x509_create.c
@@ -31,7 +31,7 @@
 #include "polarssl/asn1write.h"
 #include "polarssl/oid.h"
 
-int x509write_string_to_names( asn1_named_data **head, char *name )
+int x509_string_to_names( asn1_named_data **head, char *name )
 {
     int ret = 0;
     char *s = name, *c = s;
diff --git a/library/x509_crl.c b/library/x509_crl.c
index aa9caea..1a10bc4 100644
--- a/library/x509_crl.c
+++ b/library/x509_crl.c
@@ -621,7 +621,7 @@
 
     ret = snprintf( p, n, "\n%sissuer name   : ", prefix );
     SAFE_SNPRINTF();
-    ret = x509parse_dn_gets( p, n, &crl->issuer );
+    ret = x509_dn_gets( p, n, &crl->issuer );
     SAFE_SNPRINTF();
 
     ret = snprintf( p, n, "\n%sthis update   : " \
@@ -650,7 +650,7 @@
                                prefix );
         SAFE_SNPRINTF();
 
-        ret = x509parse_serial_gets( p, n, &entry->serial);
+        ret = x509_serial_gets( p, n, &entry->serial);
         SAFE_SNPRINTF();
 
         ret = snprintf( p, n, " revocation date: " \
diff --git a/library/x509_crt.c b/library/x509_crt.c
index 609463a..f57fddc 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -1100,17 +1100,17 @@
                                prefix );
     SAFE_SNPRINTF();
 
-    ret = x509parse_serial_gets( p, n, &crt->serial);
+    ret = x509_serial_gets( p, n, &crt->serial);
     SAFE_SNPRINTF();
 
     ret = snprintf( p, n, "\n%sissuer name   : ", prefix );
     SAFE_SNPRINTF();
-    ret = x509parse_dn_gets( p, n, &crt->issuer  );
+    ret = x509_dn_gets( p, n, &crt->issuer  );
     SAFE_SNPRINTF();
 
     ret = snprintf( p, n, "\n%ssubject name  : ", prefix );
     SAFE_SNPRINTF();
-    ret = x509parse_dn_gets( p, n, &crt->subject );
+    ret = x509_dn_gets( p, n, &crt->subject );
     SAFE_SNPRINTF();
 
     ret = snprintf( p, n, "\n%sissued  on    : " \
@@ -1163,7 +1163,7 @@
         if( crt->serial.len == cur->serial.len &&
             memcmp( crt->serial.p, cur->serial.p, crt->serial.len ) == 0 )
         {
-            if( x509parse_time_expired( &cur->revocation_date ) )
+            if( x509_time_expired( &cur->revocation_date ) )
                 return( 1 );
         }
 
@@ -1229,7 +1229,7 @@
         /*
          * Check for validity of CRL (Do not drop out)
          */
-        if( x509parse_time_expired( &crl_list->next_update ) )
+        if( x509_time_expired( &crl_list->next_update ) )
             flags |= BADCRL_EXPIRED;
 
         /*
@@ -1310,7 +1310,7 @@
     unsigned char hash[POLARSSL_MD_MAX_SIZE];
     const md_info_t *md_info;
 
-    if( x509parse_time_expired( &child->valid_to ) )
+    if( x509_time_expired( &child->valid_to ) )
         *flags |= BADCERT_EXPIRED;
 
     /*
@@ -1388,7 +1388,7 @@
         *flags |= x509parse_verifycrl( child, trust_ca, ca_crl );
 #endif
 
-        if( x509parse_time_expired( &trust_ca->valid_to ) )
+        if( x509_time_expired( &trust_ca->valid_to ) )
             ca_flags |= BADCERT_EXPIRED;
 
         if( NULL != f_vrfy )
@@ -1422,7 +1422,7 @@
     x509_cert *grandparent;
     const md_info_t *md_info;
 
-    if( x509parse_time_expired( &child->valid_to ) )
+    if( x509_time_expired( &child->valid_to ) )
         *flags |= BADCERT_EXPIRED;
 
     md_info = md_info_from_type( child->sig_md );
diff --git a/library/x509_crt_write.c b/library/x509_crt_write.c
index a735170..1761c1f 100644
--- a/library/x509_crt_write.c
+++ b/library/x509_crt_write.c
@@ -78,12 +78,12 @@
 
 int x509write_crt_set_subject_name( x509write_cert *ctx, char *subject_name )
 {
-    return x509write_string_to_names( &ctx->subject, subject_name );
+    return x509_string_to_names( &ctx->subject, subject_name );
 }
 
 int x509write_crt_set_issuer_name( x509write_cert *ctx, char *issuer_name )
 {
-    return x509write_string_to_names( &ctx->issuer, issuer_name );
+    return x509_string_to_names( &ctx->issuer, issuer_name );
 }
 
 int x509write_crt_set_serial( x509write_cert *ctx, const mpi *serial )
diff --git a/library/x509_csr.c b/library/x509_csr.c
index 200d445..30cd1c1 100644
--- a/library/x509_csr.c
+++ b/library/x509_csr.c
@@ -379,7 +379,7 @@
 
     ret = snprintf( p, n, "\n%ssubject name  : ", prefix );
     SAFE_SNPRINTF();
-    ret = x509parse_dn_gets( p, n, &csr->subject );
+    ret = x509_dn_gets( p, n, &csr->subject );
     SAFE_SNPRINTF();
 
     ret = snprintf( p, n, "\n%ssigned using  : ", prefix );
diff --git a/library/x509_csr_write.c b/library/x509_csr_write.c
index b744300..1eb2afb 100644
--- a/library/x509_csr_write.c
+++ b/library/x509_csr_write.c
@@ -68,7 +68,7 @@
 
 int x509write_csr_set_subject_name( x509write_csr *ctx, char *subject_name )
 {
-    return x509write_string_to_names( &ctx->subject, subject_name );
+    return x509_string_to_names( &ctx->subject, subject_name );
 }
 
 int x509write_csr_set_extension( x509write_csr *ctx,
