diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h
index c7f816b..b3570be 100644
--- a/include/mbedtls/x509_crt.h
+++ b/include/mbedtls/x509_crt.h
@@ -817,53 +817,26 @@
 int mbedtls_x509_crt_cache_provide_frame( mbedtls_x509_crt const *crt );
 int mbedtls_x509_crt_cache_provide_pk( mbedtls_x509_crt const *crt );
 
-static inline int mbedtls_x509_crt_cache_frame_set(
-    mbedtls_x509_crt_cache *cache )
-{
-    return( cache->frame != NULL );
-}
-
-static inline mbedtls_x509_crt_frame* mbedtls_x509_crt_cache_get_frame(
-    mbedtls_x509_crt_cache *cache )
-{
-    return( cache->frame );
-}
-
-static inline int mbedtls_x509_crt_cache_pk_set(
-    mbedtls_x509_crt_cache *cache )
-{
-    return( cache->pk != NULL );
-}
-
-static inline mbedtls_pk_context* mbedtls_x509_crt_cache_get_pk(
-    mbedtls_x509_crt_cache *cache )
-{
-    return( cache->pk );
-}
-
 static inline int mbedtls_x509_crt_frame_acquire( mbedtls_x509_crt const *crt,
                                                   mbedtls_x509_crt_frame **frame_ptr )
 {
+    int ret;
 #if defined(MBEDTLS_THREADING_C)
     if( mbedtls_mutex_lock( &crt->cache->frame_mutex ) != 0 )
         return( MBEDTLS_ERR_THREADING_MUTEX_ERROR );
 #endif
 
-    if( !mbedtls_x509_crt_cache_frame_set( crt->cache ) )
+    ret = mbedtls_x509_crt_cache_provide_frame( crt );
+    if( ret != 0 )
     {
-        int ret;
-        ret = mbedtls_x509_crt_cache_provide_frame( crt );
-        if( ret != 0 )
-        {
 #if defined(MBEDTLS_THREADING_C)
-            if( mbedtls_mutex_unlock( &crt->cache->frame_mutex ) != 0 )
-                return( MBEDTLS_ERR_THREADING_MUTEX_ERROR );
+        if( mbedtls_mutex_unlock( &crt->cache->frame_mutex ) != 0 )
+            return( MBEDTLS_ERR_THREADING_MUTEX_ERROR );
 #endif
-            return( ret );
-        }
+        return( ret );
     }
 
-    *frame_ptr = mbedtls_x509_crt_cache_get_frame( crt->cache );
+    *frame_ptr = crt->cache->frame;
     return( 0 );
 }
 
@@ -883,26 +856,23 @@
 static inline int mbedtls_x509_crt_pk_acquire( mbedtls_x509_crt const *crt,
                                                mbedtls_pk_context **pk_ptr )
 {
+    int ret;
 #if defined(MBEDTLS_THREADING_C)
     if( mbedtls_mutex_lock( &crt->cache->pk_mutex ) != 0 )
         return( MBEDTLS_ERR_THREADING_MUTEX_ERROR );
 #endif
 
-    if( !mbedtls_x509_crt_cache_pk_set( crt->cache ) )
+    ret = mbedtls_x509_crt_cache_provide_pk( crt );
+    if( ret != 0 )
     {
-        int ret;
-        ret = mbedtls_x509_crt_cache_provide_pk( crt );
-        if( ret != 0 )
-        {
 #if defined(MBEDTLS_THREADING_C)
-            if( mbedtls_mutex_unlock( &crt->cache->pk_mutex ) != 0 )
-                return( MBEDTLS_ERR_THREADING_MUTEX_ERROR );
+        if( mbedtls_mutex_unlock( &crt->cache->pk_mutex ) != 0 )
+            return( MBEDTLS_ERR_THREADING_MUTEX_ERROR );
 #endif
-            return( ret );
-        }
+        return( ret );
     }
 
-    *pk_ptr = mbedtls_x509_crt_cache_get_pk( crt->cache );
+    *pk_ptr = crt->cache->pk;
     return( 0 );
 }
 
diff --git a/library/x509_crt.c b/library/x509_crt.c
index 91b29b6..9004be4 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -165,6 +165,9 @@
     mbedtls_x509_crt_cache *cache = crt->cache;
     mbedtls_x509_crt_frame *frame;
 
+    if( cache->frame != NULL )
+        return( 0 );
+
     frame = mbedtls_calloc( 1, sizeof( mbedtls_x509_crt_frame ) );
     if( frame == NULL )
         return( MBEDTLS_ERR_X509_ALLOC_FAILED );
@@ -214,6 +217,9 @@
     mbedtls_x509_crt_cache *cache = crt->cache;
     mbedtls_pk_context *pk;
 
+    if( cache->pk != NULL )
+        return( 0 );
+
     pk = mbedtls_calloc( 1, sizeof( mbedtls_pk_context ) );
     if( pk == NULL )
         return( MBEDTLS_ERR_X509_ALLOC_FAILED );
@@ -1459,7 +1465,7 @@
     if( ret != 0 )
         goto exit;
 
-    frame = mbedtls_x509_crt_cache_get_frame( crt->cache );
+    frame = crt->cache->frame;
 
 #else /* MBEDTLS_X509_ON_DEMAND_PARSING */
 
