diff --git a/library/x509parse.c b/library/x509parse.c
index a2a8660..7c69aa2 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -637,21 +637,6 @@
     return( ret );
 }
 
-/*
- * Get an RSA public key (compatibility wrapper)
- */
-static int x509_get_pubkey_rsa( unsigned char **p,
-                                const unsigned char *end,
-                                rsa_context *rsa )
-{
-    pk_context pk_ctx;
-
-    pk_init( &pk_ctx );
-    pk_wrap_rsa( &pk_ctx, rsa );
-
-    return( x509_get_pubkey( p, end, &pk_ctx ) );
-}
-
 static int x509_get_sig( unsigned char **p,
                          const unsigned char *end,
                          x509_buf *sig )
@@ -1416,13 +1401,24 @@
     /*
      * SubjectPublicKeyInfo
      */
-    if( ( ret = x509_get_pubkey_rsa( &p, end, &crt->rsa ) ) != 0 )
+    if( ( ret = x509_get_pubkey( &p, end, &crt->pk ) ) != 0 )
     {
         x509_free( crt );
         return( ret );
     }
 
     /*
+     * Temporary hack for compatibility while transitioning to PK abstraction
+     * (Cannot use rsa_wrap above since it would force RSA key type.)
+     */
+    if( crt->pk.type == POLARSSL_PK_RSA ) {
+        memcpy( &crt->rsa, pk_rsa( crt->pk ), sizeof( rsa_context ) );
+        free( crt->pk.data );
+        crt->pk.data = &crt->rsa;
+        crt->pk.dont_free = 1;
+    }
+
+    /*
      *  issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
      *                       -- If present, version shall be v2 or v3
      *  subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
@@ -3969,6 +3965,7 @@
 
     do
     {
+        pk_free( &cert_cur->pk );
         rsa_free( &cert_cur->rsa );
 
         name_cur = cert_cur->issuer.next;
