PK: rename members for consistency CIPHER, MD

Also add pk_get_name() to remove a direct access to pk_type
diff --git a/include/polarssl/pk.h b/include/polarssl/pk.h
index 778efa7..6a3d4b8 100644
--- a/include/polarssl/pk.h
+++ b/include/polarssl/pk.h
@@ -52,7 +52,7 @@
  * \warning You must make sure the PK context actually holds an RSA context
  * before using this macro!
  */
-#define pk_rsa( pk )        ( (rsa_context *) (pk).data )
+#define pk_rsa( pk )        ( (rsa_context *) (pk).pk_ctx )
 #endif /* POLARSSL_RSA_C */
 
 #if defined(POLARSSL_ECP_C)
@@ -62,7 +62,7 @@
  * \warning You must make sure the PK context actually holds an EC context
  * before using this macro!
  */
-#define pk_ec( pk )         ( (ecp_keypair *) (pk).data )
+#define pk_ec( pk )         ( (ecp_keypair *) (pk).pk_ctx )
 #endif /* POLARSSL_ECP_C */
 
 
@@ -105,7 +105,7 @@
 #define POLARSSL_PK_DEBUG_MAX_ITEMS 3
 
 /**
- * \brief           Public key info
+ * \brief           Public key information and operations
  */
 typedef struct
 {
@@ -142,8 +142,8 @@
  */
 typedef struct
 {
-    const pk_info_t *   info;       /**< Public key informations */
-    void *              data;       /**< Public key data */
+    const pk_info_t *   pk_info;    /**< Public key informations        */
+    void *              pk_ctx;     /**< Underlying public key context  */
 } pk_context;
 
 /**
@@ -217,6 +217,15 @@
  */
 int pk_debug( const pk_context *ctx, pk_debug_item *items );
 
+/**
+ * \brief           Access the type name
+ *
+ * \param ctx       Context to use
+ *
+ * \return          Type name on success, or "invalid PK"
+ */
+const char * pk_get_name( const pk_context *ctx );
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/library/pk.c b/library/pk.c
index f3c64cb..d8b4c85 100644
--- a/library/pk.c
+++ b/library/pk.c
@@ -55,8 +55,8 @@
     if( ctx == NULL )
         return;
 
-    ctx->info = NULL;
-    ctx->data = NULL;
+    ctx->pk_info = NULL;
+    ctx->pk_ctx = NULL;
 }
 
 /*
@@ -64,13 +64,13 @@
  */
 void pk_free( pk_context *ctx )
 {
-    if( ctx == NULL || ctx->info == NULL)
+    if( ctx == NULL || ctx->pk_info == NULL)
         return;
 
-    ctx->info->ctx_free_func( ctx->data );
-    ctx->data = NULL;
+    ctx->pk_info->ctx_free_func( ctx->pk_ctx );
+    ctx->pk_ctx = NULL;
 
-    ctx->info = NULL;
+    ctx->pk_info = NULL;
 }
 
 /*
@@ -105,9 +105,9 @@
 {
     const pk_info_t *info;
 
-    if( ctx->info != NULL )
+    if( ctx->pk_info != NULL )
     {
-        if( ctx->info->type == type )
+        if( ctx->pk_info->type == type )
             return 0;
 
         return( POLARSSL_ERR_PK_TYPE_MISMATCH );
@@ -116,10 +116,10 @@
     if( ( info = pk_info_from_type( type ) ) == NULL )
         return( POLARSSL_ERR_PK_TYPE_MISMATCH );
 
-    if( ( ctx->data = info->ctx_alloc_func() ) == NULL )
+    if( ( ctx->pk_ctx = info->ctx_alloc_func() ) == NULL )
         return( POLARSSL_ERR_PK_MALLOC_FAILED );
 
-    ctx->info = info;
+    ctx->pk_info = info;
 
     return( 0 );
 }
@@ -130,10 +130,10 @@
 int pk_can_do( pk_context *ctx, pk_type_t type )
 {
     /* null of NONE context can't do anything */
-    if( ctx == NULL || ctx->info == NULL )
+    if( ctx == NULL || ctx->pk_info == NULL )
         return( 0 );
 
-    return( ctx->info->can_do( type ) );
+    return( ctx->pk_info->can_do( type ) );
 }
 
 /*
@@ -143,10 +143,10 @@
                const unsigned char *hash, const md_info_t *md_info,
                const unsigned char *sig, size_t sig_len )
 {
-    if( ctx == NULL || ctx->info == NULL )
+    if( ctx == NULL || ctx->pk_info == NULL )
         return( POLARSSL_ERR_PK_TYPE_MISMATCH ); // TODO
 
-    return( ctx->info->verify_func( ctx->data, hash, md_info, sig, sig_len ) );
+    return( ctx->pk_info->verify_func( ctx->pk_ctx, hash, md_info, sig, sig_len ) );
 }
 
 /*
@@ -154,10 +154,10 @@
  */
 size_t pk_get_size( const pk_context *ctx )
 {
-    if( ctx == NULL || ctx->info == NULL )
+    if( ctx == NULL || ctx->pk_info == NULL )
         return( 0 );
 
-    return( ctx->info->get_size( ctx->data ) );
+    return( ctx->pk_info->get_size( ctx->pk_ctx ) );
 }
 
 /*
@@ -165,9 +165,20 @@
  */
 int pk_debug( const pk_context *ctx, pk_debug_item *items )
 {
-    if( ctx == NULL || ctx->info == NULL )
+    if( ctx == NULL || ctx->pk_info == NULL )
         return( POLARSSL_ERR_PK_TYPE_MISMATCH ); // TODO
 
-    ctx->info->debug_func( ctx->data, items );
+    ctx->pk_info->debug_func( ctx->pk_ctx, items );
     return( 0 );
 }
+
+/*
+ * Access the PK type name
+ */
+const char * pk_get_name( const pk_context *ctx )
+{
+    if( ctx == NULL || ctx->pk_info == NULL )
+        return( "invalid PK" );
+
+    return( ctx->pk_info->name );
+}
diff --git a/library/x509parse.c b/library/x509parse.c
index 225f45d..e080174 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -2147,7 +2147,7 @@
     ret = x509parse_keyfile( &pk, path, pwd );
 
     if( ret == 0 )
-        rsa_copy( rsa, pk.data );
+        rsa_copy( rsa, pk_rsa( pk ) );
     else
         rsa_free( rsa );
 
@@ -2170,7 +2170,7 @@
     ret = x509parse_public_keyfile( &pk, path );
 
     if( ret == 0 )
-        rsa_copy( rsa, pk.data );
+        rsa_copy( rsa, pk_rsa( pk ) );
     else
         rsa_free( rsa );
 
@@ -2774,7 +2774,7 @@
     ret = x509parse_key( &pk, key, keylen, pwd, pwdlen );
 
     if( ret == 0 )
-        rsa_copy( rsa, pk.data );
+        rsa_copy( rsa, pk_rsa( pk ) );
     else
         rsa_free( rsa );
 
@@ -2798,7 +2798,7 @@
     ret = x509parse_public_key( &pk, key, keylen );
 
     if( ret == 0 )
-        rsa_copy( rsa, pk.data );
+        rsa_copy( rsa, pk_rsa( pk ) );
     else
         rsa_free( rsa );
 
@@ -3141,7 +3141,7 @@
     SAFE_SNPRINTF();
 
     if( ( ret = x509_key_size_helper( key_size_str, BEFORE_COLON,
-                                      crt->pk.info->name ) ) != 0 )
+                                      pk_get_name( &crt->pk ) ) ) != 0 )
     {
         return( ret );
     }
diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function
index 6bda6fa..ce27a9f 100644
--- a/tests/suites/test_suite_x509parse.function
+++ b/tests/suites/test_suite_x509parse.function
@@ -227,7 +227,7 @@
     {
         ecp_keypair *eckey;
         TEST_ASSERT( pk_can_do( &ctx, POLARSSL_PK_ECKEY ) );
-        eckey = (ecp_keypair *) ctx.data;
+        eckey = pk_ec( ctx );
         TEST_ASSERT( ecp_check_pubkey( &eckey->grp, &eckey->Q ) == 0 );
     }
 
@@ -251,7 +251,7 @@
     {
         ecp_keypair *eckey;
         TEST_ASSERT( pk_can_do( &ctx, POLARSSL_PK_ECKEY ) );
-        eckey = (ecp_keypair *) ctx.data;
+        eckey = pk_ec( ctx );
         TEST_ASSERT( ecp_check_privkey( &eckey->grp, &eckey->d ) == 0 );
     }