@ -30,7 +30,7 @@ var SSL_Method = 'TLSv1_method';
var localhost = '127.0.0.1' ;
var localhost = '127.0.0.1' ;
process . on ( 'exit' , function ( ) {
process . on ( 'exit' , function ( ) {
assert . equal ( nconns , 6 ) ;
assert . equal ( nconns , 5 ) ;
} ) ;
} ) ;
function test ( honorCipherOrder , clientCipher , expectedCipher , cb ) {
function test ( honorCipherOrder , clientCipher , expectedCipher , cb ) {
@ -38,7 +38,7 @@ function test(honorCipherOrder, clientCipher, expectedCipher, cb) {
secureProtocol : SSL_Method ,
secureProtocol : SSL_Method ,
key : fs . readFileSync ( common . fixturesDir + '/keys/agent2-key.pem' ) ,
key : fs . readFileSync ( common . fixturesDir + '/keys/agent2-key.pem' ) ,
cert : fs . readFileSync ( common . fixturesDir + '/keys/agent2-cert.pem' ) ,
cert : fs . readFileSync ( common . fixturesDir + '/keys/agent2-cert.pem' ) ,
ciphers : 'DES-CBC-SHA:AES256-SHA:RC4 -SHA:ECDHE-RSA-AES256-SHA' ,
ciphers : 'RC4-SHA:AES256 -SHA:ECDHE-RSA-AES256-SHA' ,
honorCipherOrder : ! ! honorCipherOrder
honorCipherOrder : ! ! honorCipherOrder
} ;
} ;
@ -75,31 +75,24 @@ function test1() {
}
}
function test2 ( ) {
function test2 ( ) {
// Server has the preference of cipher suites where DES-CBC -SHA is in
// Server has the preference of cipher suites where RC4 -SHA is in
// the first.
// the first.
test ( true , 'AES256-SHA:DES-CBC-SHA: RC4-SHA' , 'DES-CBC -SHA' , test3 ) ;
test ( true , 'AES256-SHA:RC4-SHA' , 'RC4 -SHA' , test3 ) ;
}
}
function test3 ( ) {
function test3 ( ) {
// Server has the preference of cipher suites. RC4 -SHA is given
// Server has the preference of cipher suites. AES256 -SHA is given
// higher priority over DES-CBC -SHA among client cipher suites.
// higher priority over ECDHE-RSA-AES256 -SHA among client cipher suites.
test ( true , 'RC4 -SHA:AES256-SHA' , 'AES256-SHA' , test4 ) ;
test ( true , 'ECDHE-RSA-AES256 -SHA:AES256-SHA' , 'AES256-SHA' , test4 ) ;
}
}
function test4 ( ) {
function test4 ( ) {
// As client has only one cipher, server has no choice in regardless
// As client has only one cipher, server has no choice in regardless
// of honorCipherOrder.
// of honorCipherOrder.
test ( true , 'RC4-SHA' , 'RC4 -SHA' , test5 ) ;
test ( true , 'ECDHE-RSA-AES256-SHA' , 'ECDHE-RSA-AES256 -SHA' , test5 ) ;
}
}
function test5 ( ) {
function test5 ( ) {
// Client did not explicitly set ciphers. Ensure that client defaults to
// sane ciphers. Even though server gives top priority to DES-CBC-SHA
// it should not be negotiated because it's not in default client ciphers.
test ( true , null , 'AES256-SHA' , test6 ) ;
}
function test6 ( ) {
// Ensure that `tls.DEFAULT_CIPHERS` is used
// Ensure that `tls.DEFAULT_CIPHERS` is used
SSL_Method = 'TLSv1_2_method' ;
SSL_Method = 'TLSv1_2_method' ;
tls . DEFAULT_CIPHERS = 'ECDHE-RSA-AES256-SHA' ;
tls . DEFAULT_CIPHERS = 'ECDHE-RSA-AES256-SHA' ;