diff --git a/library/pk_wrap.c b/library/pk_wrap.c
index 9a89796..f898591 100644
--- a/library/pk_wrap.c
+++ b/library/pk_wrap.c
@@ -45,6 +45,11 @@
     return( type == POLARSSL_PK_RSA );
 }
 
+static size_t rsa_get_size( void * ctx )
+{
+    return( mpi_size( &((rsa_context *) ctx)->N ) * 8 );
+}
+
 static int rsa_verify_wrap( void *ctx,
                    const unsigned char *hash, const md_info_t *md_info,
                    const unsigned char *sig, size_t sig_len )
@@ -57,6 +62,8 @@
 
 const pk_info_t rsa_info = {
     POLARSSL_PK_RSA,
+    "RSA",
+    rsa_get_size,
     rsa_can_do,
     rsa_verify_wrap,
 };
@@ -68,6 +75,11 @@
     return( type == POLARSSL_PK_ECDSA );
 }
 
+static size_t ecdsa_get_size( void *ctx )
+{
+    return( ((ecdsa_context *) ctx)->grp.pbits );
+}
+
 int ecdsa_verify_wrap( void *ctx,
                        const unsigned char *hash, const md_info_t *md_info,
                        const unsigned char *sig, size_t sig_len )
@@ -78,6 +90,8 @@
 
 const pk_info_t ecdsa_info = {
     POLARSSL_PK_ECDSA,
+    "ECDSA",
+    ecdsa_get_size,
     ecdsa_can_do,
     ecdsa_verify_wrap,
 };
@@ -94,6 +108,11 @@
             type == POLARSSL_PK_ECDSA );
 }
 
+static size_t eckey_get_size( void *ctx )
+{
+    return( ((ecp_keypair *) ctx)->grp.pbits );
+}
+
 static int eckey_verify_wrap( void *ctx,
                        const unsigned char *hash, const md_info_t *md_info,
                        const unsigned char *sig, size_t sig_len )
@@ -123,6 +142,8 @@
 
 const pk_info_t eckey_info = {
     POLARSSL_PK_ECKEY,
+    "EC",
+    eckey_get_size,
     eckey_can_do,
     eckey_verify_wrap,
 };
@@ -151,6 +172,8 @@
 
 const pk_info_t eckeydh_info = {
     POLARSSL_PK_ECKEY_DH,
+    "EC_DH",
+    eckey_get_size,         /* Same underlying key structure */
     eckeydh_can_do,
     eckeydh_verify_wrap,
 };
diff --git a/library/x509parse.c b/library/x509parse.c
index 31b1fa0..8248373 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -3022,8 +3022,28 @@
 }
 
 /*
+ * Helper for writing "RSA key size", "EC key size", etc
+ */
+static int x509_key_size_helper( char *buf, size_t size, const char *name )
+{
+    char *p = buf;
+    size_t n = size;
+    int ret;
+
+    if( strlen( name ) + sizeof( " key size" ) > size )
+        return POLARSSL_ERR_DEBUG_BUF_TOO_SMALL;
+
+    ret = snprintf( p, n, "%s key size", name );
+    SAFE_SNPRINTF();
+
+    return( 0 );
+}
+
+/*
  * Return an informational string about the certificate.
  */
+#define BEFORE_COLON    14
+#define BC              "14"
 int x509parse_cert_info( char *buf, size_t size, const char *prefix,
                          const x509_cert *crt )
 {
@@ -3031,6 +3051,7 @@
     size_t n;
     char *p;
     const char *desc = NULL;
+    char key_size_str[BEFORE_COLON];
 
     p = buf;
     n = size;
@@ -3079,20 +3100,14 @@
         ret = snprintf( p, n, desc );
     SAFE_SNPRINTF();
 
-#if defined(POLARSSL_RSA_C)
-    if( crt->pk.type == POLARSSL_PK_RSA )
-        ret = snprintf( p, n, "\n%sRSA key size  : %d bits\n", prefix,
-                (int) pk_rsa( crt->pk )->N.n * (int) sizeof( t_uint ) * 8 );
-    else
-#endif /* POLARSSL_RSA_C */
-#if defined(POLARSSL_ECP_C)
-    if( crt->pk.type == POLARSSL_PK_ECKEY ||
-        crt->pk.type == POLARSSL_PK_ECKEY_DH )
-        ret = snprintf( p, n, "\n%sEC key size   : %d bits\n", prefix,
-                (int) pk_ec( crt->pk )->grp.pbits );
-    else
-#endif /* POLARSSL_ECP_C */
-        ret = snprintf(p, n, "\n%sPK type looks wrong!", prefix);
+    if( ( ret = x509_key_size_helper( key_size_str, BEFORE_COLON,
+                                      crt->pk.info->name ) ) != 0 )
+    {
+        return( ret );
+    }
+
+    ret = snprintf( p, n, "\n%s%-" BC "s: %d bits\n", prefix, key_size_str,
+                          (int) crt->pk.info->get_size( crt->pk.data ) );
     SAFE_SNPRINTF();
 
     return( (int) ( size - n ) );
