Fix possible client crash on API misuse
diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index db9e179..f4b1c4d 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -693,6 +693,12 @@
         return( POLARSSL_ERR_SSL_BAD_HS_SERVER_KEY_EXCHANGE );
     }
 
+    if( ssl->session_negotiate->peer_cert == NULL )
+    {
+        SSL_DEBUG_MSG( 2, ( "certificate required" ) );
+        return( POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE );
+    }
+
     SSL_DEBUG_BUF( 3,   "server key exchange", ssl->in_msg + 4, ssl->in_hslen - 4 );
 
     /*
@@ -1119,6 +1125,12 @@
         /*
          * RSA key exchange -- send rsa_public(pkcs1 v1.5(premaster))
          */
+        if( ssl->session_negotiate->peer_cert == NULL )
+        {
+            SSL_DEBUG_MSG( 2, ( "certificate required" ) );
+            return( POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE );
+        }
+
         ssl->handshake->premaster[0] = (unsigned char) ssl->max_major_ver;
         ssl->handshake->premaster[1] = (unsigned char) ssl->max_minor_ver;
         ssl->handshake->pmslen = 48;