Server: enforce renegotiation
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 94d9edf..1205947 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -3990,6 +3990,8 @@
return( ret );
}
+ ssl->renegotiation = SSL_RENEGOTIATION_PENDING;
+
SSL_DEBUG_MSG( 2, ( "<= write hello request" ) );
return( 0 );
@@ -4175,6 +4177,12 @@
return( POLARSSL_ERR_NET_WANT_READ );
}
}
+ else if( ssl->renegotiation == SSL_RENEGOTIATION_PENDING )
+ {
+ SSL_DEBUG_MSG( 1, ( "renegotiation requested, "
+ "but not honored by client" ) );
+ return( POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE );
+ }
else if( ssl->in_msgtype != SSL_MSG_APPLICATION_DATA )
{
SSL_DEBUG_MSG( 1, ( "bad application data message" ) );