Adapt ssl_set_own_cert() to generic keys
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index dd7fc46..e5adef7 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -257,7 +257,7 @@
 #if defined(POLARSSL_X509_PARSE_C)
     x509_cert cacert;
     x509_cert clicert;
-    rsa_context rsa;
+    pk_context pkey;
 #endif
     char *p, *q;
     const int *list;
@@ -271,7 +271,7 @@
 #if defined(POLARSSL_X509_PARSE_C)
     memset( &cacert, 0, sizeof( x509_cert ) );
     memset( &clicert, 0, sizeof( x509_cert ) );
-    memset( &rsa, 0, sizeof( rsa_context ) );
+    pk_init( &pkey );
 #endif
 
     if( argc == 0 )
@@ -626,11 +626,11 @@
 
 #if defined(POLARSSL_FS_IO)
     if( strlen( opt.key_file ) )
-        ret = x509parse_keyfile_rsa( &rsa, opt.key_file, "" );
+        ret = x509parse_keyfile( &pkey, opt.key_file, "" );
     else
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_key_rsa( &rsa, (const unsigned char *) test_cli_key,
+        ret = x509parse_key( &pkey, (const unsigned char *) test_cli_key,
                 strlen( test_cli_key ), NULL, 0 );
 #else
     {
@@ -640,7 +640,7 @@
 #endif
     if( ret != 0 )
     {
-        printf( " failed\n  !  x509parse_key_rsa returned -0x%x\n\n", -ret );
+        printf( " failed\n  !  x509parse_key returned -0x%x\n\n", -ret );
         goto exit;
     }
 
@@ -711,7 +711,7 @@
 
 #if defined(POLARSSL_X509_PARSE_C)
     ssl_set_ca_chain( &ssl, &cacert, NULL, opt.server_name );
-    ssl_set_own_cert( &ssl, &clicert, &rsa );
+    ssl_set_own_cert( &ssl, &clicert, &pkey );
 #endif
 
 #if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
@@ -911,7 +911,7 @@
 #if defined(POLARSSL_X509_PARSE_C)
     x509_free( &clicert );
     x509_free( &cacert );
-    rsa_free( &rsa );
+    pk_free( &pkey );
 #endif
     ssl_session_free( &saved_session );
     ssl_free( &ssl );
diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c
index 986458b..98a518c 100644
--- a/programs/ssl/ssl_fork_server.c
+++ b/programs/ssl/ssl_fork_server.c
@@ -104,7 +104,7 @@
     ctr_drbg_context ctr_drbg;
     ssl_context ssl;
     x509_cert srvcert;
-    rsa_context rsa;
+    pk_context pkey;
 
     ((void) argc);
     ((void) argv);
@@ -139,7 +139,7 @@
     /*
      * This demonstration program uses embedded test certificates.
      * Instead, you may want to use x509parse_crtfile() to read the
-     * server and CA certificates, as well as x509parse_keyfile_rsa().
+     * server and CA certificates, as well as x509parse_keyfile().
      */
     ret = x509parse_crt( &srvcert, (const unsigned char *) test_srv_crt,
                          strlen( test_srv_crt ) );
@@ -157,12 +157,12 @@
         goto exit;
     }
 
-    rsa_init( &rsa, RSA_PKCS_V15, 0 );
-    ret =  x509parse_key_rsa( &rsa, (const unsigned char *) test_srv_key,
+    pk_init( &pkey );
+    ret =  x509parse_key( &pkey, (const unsigned char *) test_srv_key,
                           strlen( test_srv_key ), NULL, 0 );
     if( ret != 0 )
     {
-        printf( " failed\n  !  x509parse_key_rsa returned %d\n\n", ret );
+        printf( " failed\n  !  x509parse_key returned %d\n\n", ret );
         goto exit;
     }
 
@@ -265,7 +265,7 @@
                            net_send, &client_fd );
 
         ssl_set_ca_chain( &ssl, srvcert.next, NULL, NULL );
-        ssl_set_own_cert( &ssl, &srvcert, &rsa );
+        ssl_set_own_cert( &ssl, &srvcert, &pkey );
 
         /*
          * 5. Handshake
@@ -363,7 +363,7 @@
 
     net_close( client_fd );
     x509_free( &srvcert );
-    rsa_free( &rsa );
+    pk_free( &pkey );
     ssl_free( &ssl );
 
 #if defined(_WIN32)
diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c
index 665cdbf..6333d17 100644
--- a/programs/ssl/ssl_mail_client.c
+++ b/programs/ssl/ssl_mail_client.c
@@ -352,7 +352,7 @@
     ssl_context ssl;
     x509_cert cacert;
     x509_cert clicert;
-    rsa_context rsa;
+    pk_context pkey;
     int i;
     size_t n;
     char *p, *q;
@@ -364,7 +364,7 @@
     server_fd = 0;
     memset( &cacert, 0, sizeof( x509_cert ) );
     memset( &clicert, 0, sizeof( x509_cert ) );
-    memset( &rsa, 0, sizeof( rsa_context ) );
+    pk_init( &pkey );
 
     if( argc == 0 )
     {
@@ -532,11 +532,11 @@
 
 #if defined(POLARSSL_FS_IO)
     if( strlen( opt.key_file ) )
-        ret = x509parse_keyfile_rsa( &rsa, opt.key_file, "" );
+        ret = x509parse_keyfile( &pkey, opt.key_file, "" );
     else
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_key_rsa( &rsa, (const unsigned char *) test_cli_key,
+        ret = x509parse_key( &pkey, (const unsigned char *) test_cli_key,
                 strlen( test_cli_key ), NULL, 0 );
 #else
     {
@@ -546,7 +546,7 @@
 #endif
     if( ret != 0 )
     {
-        printf( " failed\n  !  x509parse_key_rsa returned %d\n\n", ret );
+        printf( " failed\n  !  x509parse_key returned %d\n\n", ret );
         goto exit;
     }
 
@@ -594,7 +594,7 @@
         ssl_set_ciphersuites( &ssl, opt.force_ciphersuite );
 
     ssl_set_ca_chain( &ssl, &cacert, NULL, opt.server_name );
-    ssl_set_own_cert( &ssl, &clicert, &rsa );
+    ssl_set_own_cert( &ssl, &clicert, &pkey );
 
     ssl_set_hostname( &ssl, opt.server_name );
 
@@ -789,7 +789,7 @@
         net_close( server_fd );
     x509_free( &clicert );
     x509_free( &cacert );
-    rsa_free( &rsa );
+    pk_free( &pkey );
     ssl_free( &ssl );
 
 #if defined(_WIN32)
diff --git a/programs/ssl/ssl_server.c b/programs/ssl/ssl_server.c
index dbb193b..801c0c6 100644
--- a/programs/ssl/ssl_server.c
+++ b/programs/ssl/ssl_server.c
@@ -94,7 +94,7 @@
     ctr_drbg_context ctr_drbg;
     ssl_context ssl;
     x509_cert srvcert;
-    rsa_context rsa;
+    pk_context pkey;
 #if defined(POLARSSL_SSL_CACHE_C)
     ssl_cache_context cache;
 #endif
@@ -117,7 +117,7 @@
     /*
      * This demonstration program uses embedded test certificates.
      * Instead, you may want to use x509parse_crtfile() to read the
-     * server and CA certificates, as well as x509parse_keyfile_rsa().
+     * server and CA certificates, as well as x509parse_keyfile().
      */
     ret = x509parse_crt( &srvcert, (const unsigned char *) test_srv_crt,
                          strlen( test_srv_crt ) );
@@ -135,12 +135,12 @@
         goto exit;
     }
 
-    rsa_init( &rsa, RSA_PKCS_V15, 0 );
-    ret =  x509parse_key_rsa( &rsa, (const unsigned char *) test_srv_key,
+    pk_init( &pkey );
+    ret =  x509parse_key( &pkey, (const unsigned char *) test_srv_key,
                           strlen( test_srv_key ), NULL, 0 );
     if( ret != 0 )
     {
-        printf( " failed\n  !  x509parse_key_rsa returned %d\n\n", ret );
+        printf( " failed\n  !  x509parse_key returned %d\n\n", ret );
         goto exit;
     }
 
@@ -201,7 +201,7 @@
 #endif
 
     ssl_set_ca_chain( &ssl, srvcert.next, NULL, NULL );
-    ssl_set_own_cert( &ssl, &srvcert, &rsa );
+    ssl_set_own_cert( &ssl, &srvcert, &pkey );
 
     printf( " ok\n" );
 
@@ -364,7 +364,7 @@
 
     net_close( client_fd );
     x509_free( &srvcert );
-    rsa_free( &rsa );
+    pk_free( &pkey );
     ssl_free( &ssl );
 #if defined(POLARSSL_SSL_CACHE_C)
     ssl_cache_free( &cache );
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index 681850b..8831190 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -215,7 +215,7 @@
 #if defined(POLARSSL_X509_PARSE_C)
     x509_cert cacert;
     x509_cert srvcert;
-    rsa_context rsa;
+    pk_context pkey;
 #endif
 #if defined(POLARSSL_SSL_CACHE_C)
     ssl_cache_context cache;
@@ -239,7 +239,7 @@
 #if defined(POLARSSL_X509_PARSE_C)
     memset( &cacert, 0, sizeof( x509_cert ) );
     memset( &srvcert, 0, sizeof( x509_cert ) );
-    memset( &rsa, 0, sizeof( rsa_context ) );
+    pk_init( &pkey );
 #endif
 #if defined(POLARSSL_SSL_CACHE_C)
     ssl_cache_init( &cache );
@@ -575,11 +575,11 @@
 
 #if defined(POLARSSL_FS_IO)
     if( strlen( opt.key_file ) )
-        ret = x509parse_keyfile_rsa( &rsa, opt.key_file, "" );
+        ret = x509parse_keyfile( &pkey, opt.key_file, "" );
     else
 #endif
 #if defined(POLARSSL_CERTS_C)
-        ret = x509parse_key_rsa( &rsa, (const unsigned char *) test_srv_key,
+        ret = x509parse_key( &pkey, (const unsigned char *) test_srv_key,
                 strlen( test_srv_key ), NULL, 0 );
 #else
     {
@@ -589,7 +589,7 @@
 #endif
     if( ret != 0 )
     {
-        printf( " failed\n  !  x509parse_key_rsa returned -0x%x\n\n", -ret );
+        printf( " failed\n  !  x509parse_key returned -0x%x\n\n", -ret );
         goto exit;
     }
 
@@ -649,7 +649,7 @@
 
 #if defined(POLARSSL_X509_PARSE_C)
     ssl_set_ca_chain( &ssl, &cacert, NULL, NULL );
-    ssl_set_own_cert( &ssl, &srvcert, &rsa );
+    ssl_set_own_cert( &ssl, &srvcert, &pkey );
 #endif
 
 #if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
@@ -877,7 +877,7 @@
 #if defined(POLARSSL_X509_PARSE_C)
     x509_free( &srvcert );
     x509_free( &cacert );
-    rsa_free( &rsa );
+    pk_free( &pkey );
 #endif
 
     ssl_free( &ssl );