Add buffers with raw issuer/subject data to CRT structure
diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h
index 09ba69f..6e07ac6 100644
--- a/include/mbedtls/x509_crt.h
+++ b/include/mbedtls/x509_crt.h
@@ -64,6 +64,9 @@
     mbedtls_x509_buf issuer_raw;        /**< The raw issuer data (DER). Used for quick comparison. */
     mbedtls_x509_buf subject_raw;       /**< The raw subject data (DER). Used for quick comparison. */
 
+    mbedtls_x509_buf_raw subject_raw_no_hdr;
+    mbedtls_x509_buf_raw issuer_raw_no_hdr;
+
     mbedtls_x509_name issuer;           /**< The parsed issuer data (named information object). */
     mbedtls_x509_name subject;          /**< The parsed subject data (named information object). */
 
diff --git a/library/x509_crt.c b/library/x509_crt.c
index 6bec4d0..a05ea9f 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -848,6 +848,7 @@
         mbedtls_x509_crt_free( crt );
         return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret );
     }
+    crt->issuer_raw_no_hdr.p = p;
 
     if( ( ret = mbedtls_x509_get_name( &p, p + len, &crt->issuer ) ) != 0 )
     {
@@ -855,6 +856,7 @@
         return( ret );
     }
 
+    crt->issuer_raw_no_hdr.len = p - crt->issuer_raw_no_hdr.p;
     crt->issuer_raw.len = p - crt->issuer_raw.p;
 
     /*
@@ -882,12 +884,15 @@
         return( MBEDTLS_ERR_X509_INVALID_FORMAT + ret );
     }
 
+    crt->subject_raw_no_hdr.p = p;
+
     if( len && ( ret = mbedtls_x509_get_name( &p, p + len, &crt->subject ) ) != 0 )
     {
         mbedtls_x509_crt_free( crt );
         return( ret );
     }
 
+    crt->subject_raw_no_hdr.len = p - crt->subject_raw_no_hdr.p;
     crt->subject_raw.len = p - crt->subject_raw.p;
 
     /*