@@ -26,6 +26,8 @@ function loadPEM(n) {
2626var serverOptions = {
2727 key : loadPEM ( 'agent2-key' ) ,
2828 cert : loadPEM ( 'agent2-cert' ) ,
29+ requestCert : true ,
30+ rejectUnauthorized : false ,
2931 SNICallback : function ( servername , callback ) {
3032 var context = SNIContexts [ servername ] ;
3133
@@ -46,7 +48,8 @@ var serverOptions = {
4648var SNIContexts = {
4749 'a.example.com' : {
4850 key : loadPEM ( 'agent1-key' ) ,
49- cert : loadPEM ( 'agent1-cert' )
51+ cert : loadPEM ( 'agent1-cert' ) ,
52+ ca : [ loadPEM ( 'ca2-cert' ) ]
5053 } ,
5154 'b.example.com' : {
5255 key : loadPEM ( 'agent3-key' ) ,
@@ -66,6 +69,13 @@ var clientsOptions = [{
6669 ca : [ loadPEM ( 'ca1-cert' ) ] ,
6770 servername : 'a.example.com' ,
6871 rejectUnauthorized : false
72+ } , {
73+ port : serverPort ,
74+ key : loadPEM ( 'agent4-key' ) ,
75+ cert : loadPEM ( 'agent4-cert' ) ,
76+ ca : [ loadPEM ( 'ca1-cert' ) ] ,
77+ servername : 'a.example.com' ,
78+ rejectUnauthorized : false
6979} , {
7080 port : serverPort ,
7181 key : loadPEM ( 'agent2-key' ) ,
@@ -97,7 +107,7 @@ let serverError;
97107let clientError ;
98108
99109var server = tls . createServer ( serverOptions , function ( c ) {
100- serverResults . push ( c . servername ) ;
110+ serverResults . push ( { sni : c . servername , authorized : c . authorized } ) ;
101111} ) ;
102112
103113server . on ( 'clientError' , function ( err ) {
@@ -144,9 +154,16 @@ function startTest() {
144154}
145155
146156process . on ( 'exit' , function ( ) {
147- assert . deepEqual ( serverResults , [ 'a.example.com' , 'b.example.com' ,
148- 'c.wrong.com' , null ] ) ;
149- assert . deepEqual ( clientResults , [ true , true , false , false ] ) ;
150- assert . deepEqual ( clientErrors , [ null , null , null , 'socket hang up' ] ) ;
151- assert . deepEqual ( serverErrors , [ null , null , null , 'Invalid SNI context' ] ) ;
157+ assert . deepEqual ( serverResults , [
158+ { sni : 'a.example.com' , authorized : false } ,
159+ { sni : 'a.example.com' , authorized : true } ,
160+ { sni : 'b.example.com' , authorized : false } ,
161+ { sni : 'c.wrong.com' , authorized : false } ,
162+ null
163+ ] ) ;
164+ assert . deepEqual ( clientResults , [ true , true , true , false , false ] ) ;
165+ assert . deepEqual ( clientErrors , [ null , null , null , null , 'socket hang up' ] ) ;
166+ assert . deepEqual ( serverErrors , [
167+ null , null , null , null , 'Invalid SNI context'
168+ ] ) ;
152169} ) ;
0 commit comments