Add ssl_get_session() to save session on client
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index b9fca44..6ecdceb 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -3222,6 +3222,31 @@
}
#endif /* POLARSSL_X509_PARSE_C */
+int ssl_get_session( const ssl_context *ssl, ssl_session *dst )
+{
+ ssl_session *src;
+
+ if( ssl == NULL ||
+ dst == NULL ||
+ ssl->session == NULL ||
+ ssl->endpoint != SSL_IS_CLIENT )
+ {
+ return( POLARSSL_ERR_SSL_BAD_INPUT_DATA );
+ }
+
+ src = ssl->session;
+
+ ssl_session_free( dst );
+ memcpy( dst, src, sizeof( ssl_session ) );
+
+ /*
+ * For now, just set peer_cert to NULL, deep-copy not implemented yet
+ */
+ dst->peer_cert = NULL;
+
+ return( 0 );
+}
+
/*
* Perform a single step of the SSL handshake
*/