Check key type against selected key exchange
diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index 267e385..605d466 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -1394,6 +1394,19 @@
             return( POLARSSL_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE );
         }
 
+        if( pk_alg != POLARSSL_PK_NONE )
+        {
+            if( pk_alg != ssl_get_ciphersuite_sig_pk_alg( ciphersuite_info ) )
+            {
+                SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) );
+                return( POLARSSL_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE );
+            }
+        }
+        else
+        {
+            pk_alg = ssl_get_ciphersuite_sig_pk_alg( ciphersuite_info );
+        }
+
         sig_len = ( p[0] << 8 ) | p[1];
         p += 2;