@@ -1025,6 +1025,51 @@ fn get_curve() {
10251025 assert ! ( curve_name. is_some( ) ) ;
10261026}
10271027
1028+ #[ test]
1029+ fn used_hello_retry_request_true ( ) {
1030+ let mut server_builder = Server :: builder ( ) ;
1031+ // Configures the server to prefer it's options over the client
1032+ server_builder
1033+ . ctx ( )
1034+ . set_options ( SslOptions :: CIPHER_SERVER_PREFERENCE ) ;
1035+ server_builder
1036+ . ctx ( )
1037+ . set_curves_list ( "P-256:X25519" )
1038+ . unwrap ( ) ;
1039+ let server = server_builder. build ( ) ;
1040+ let mut client_builder = server. client_with_root_ca ( ) ;
1041+ // configures the client to send this supported groups
1042+ client_builder
1043+ . ctx ( )
1044+ . set_curves_list ( "X25519:P-256" )
1045+ . unwrap ( ) ;
1046+
1047+ let client_stream = client_builder. connect ( ) ;
1048+ let ssl = client_stream. ssl ( ) ;
1049+ assert ! ( ssl. used_hello_retry_request( ) ) ;
1050+ }
1051+
1052+ #[ test]
1053+ fn used_hello_retry_request_false ( ) {
1054+ let mut server_builder = Server :: builder ( ) ;
1055+ // Server doesn't configure CIPHER_SERVER_PREFERENCE, so it will use the preference of the client
1056+ server_builder
1057+ . ctx ( )
1058+ . set_curves_list ( "P-256:X25519" )
1059+ . unwrap ( ) ;
1060+ let server = server_builder. build ( ) ;
1061+ let mut client_builder = server. client_with_root_ca ( ) ;
1062+ // configures the client to send this supported groups
1063+ client_builder
1064+ . ctx ( )
1065+ . set_curves_list ( "X25519:P-256" )
1066+ . unwrap ( ) ;
1067+
1068+ let client_stream = client_builder. connect ( ) ;
1069+ let ssl = client_stream. ssl ( ) ;
1070+ assert ! ( !ssl. used_hello_retry_request( ) ) ;
1071+ }
1072+
10281073#[ test]
10291074fn test_get_ciphers ( ) {
10301075 let ctx_builder = SslContext :: builder ( SslMethod :: tls ( ) ) . unwrap ( ) ;
0 commit comments