Added ssl_handshake_step() to allow single stepping the handshake
process
Single stepping the handshake process allows for better support of
non-blocking network stacks and for getting information from specific
handshake messages if wanted.
diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h
index e5d9eb7..9746e27 100644
--- a/include/polarssl/ssl.h
+++ b/include/polarssl/ssl.h
@@ -971,6 +971,20 @@
int ssl_handshake( ssl_context *ssl );
/**
+ * \brief Perform a single step of the SSL handshake
+ *
+ * Note: the state of the context (ssl->state) will be at
+ * the following state after execution of this function.
+ * Do not call this function if state is SSL_HANDSHAKE_OVER.
+ *
+ * \param ssl SSL context
+ *
+ * \return 0 if successful, POLARSSL_ERR_NET_WANT_READ,
+ * POLARSSL_ERR_NET_WANT_WRITE, or a specific SSL error code.
+ */
+int ssl_handshake_step( ssl_context *ssl );
+
+/**
* \brief Perform an SSL renegotiation on the running connection
*
* \param ssl SSL context
@@ -1061,8 +1075,8 @@
/*
* Internal functions (do not call directly)
*/
-int ssl_handshake_client( ssl_context *ssl );
-int ssl_handshake_server( ssl_context *ssl );
+int ssl_handshake_client_step( ssl_context *ssl );
+int ssl_handshake_server_step( ssl_context *ssl );
void ssl_handshake_wrapup( ssl_context *ssl );
int ssl_send_fatal_handshake_failure( ssl_context *ssl );