@@ -286,6 +286,18 @@ function onnewsession(sessionId, session) {
286286}
287287
288288
289+ function onkeylogclient ( line ) {
290+ debug ( 'client onkeylog' ) ;
291+ this [ owner_symbol ] . emit ( 'keylog' , line ) ;
292+ }
293+
294+ function onkeylog ( line ) {
295+ debug ( 'server onkeylog' ) ;
296+ const owner = this [ owner_symbol ] ;
297+ if ( owner . server )
298+ owner . server . emit ( 'keylog' , line , owner ) ;
299+ }
300+
289301function onocspresponse ( resp ) {
290302 debug ( 'client onocspresponse' ) ;
291303 this [ owner_symbol ] . emit ( 'OCSPResponse' , resp ) ;
@@ -571,6 +583,7 @@ TLSSocket.prototype._init = function(socket, wrap) {
571583 ssl . onclienthello = loadSession ;
572584 ssl . oncertcb = loadSNI ;
573585 ssl . onnewsession = onnewsession ;
586+ ssl . onkeylog = onkeylog ;
574587 ssl . lastHandshakeTime = 0 ;
575588 ssl . handshakes = 0 ;
576589
@@ -580,6 +593,8 @@ TLSSocket.prototype._init = function(socket, wrap) {
580593 // Also starts the client hello parser as a side effect.
581594 ssl . enableSessionCallbacks ( ) ;
582595 }
596+ if ( this . server . listenerCount ( 'keylog' ) > 0 )
597+ ssl . enableKeylogCallback ( ) ;
583598 if ( this . server . listenerCount ( 'OCSPRequest' ) > 0 )
584599 ssl . enableCertCb ( ) ;
585600 }
@@ -605,9 +620,24 @@ TLSSocket.prototype._init = function(socket, wrap) {
605620
606621 ssl . enableSessionCallbacks ( ) ;
607622
608- // Remover this listener since its no longer needed.
623+ // Remove this listener since it's no longer needed.
609624 this . removeListener ( 'newListener' , newListener ) ;
610625 }
626+
627+ ssl . onkeylog = onkeylogclient ;
628+
629+ // Only call .onkeylog if there is a keylog listener.
630+ this . on ( 'newListener' , keylogNewListener ) ;
631+
632+ function keylogNewListener ( event ) {
633+ if ( event !== 'keylog' )
634+ return ;
635+
636+ ssl . enableKeylogCallback ( ) ;
637+
638+ // Remove this listener since it's no longer needed.
639+ this . removeListener ( 'newListener' , keylogNewListener ) ;
640+ }
611641 }
612642
613643 ssl . onerror = onerror ;
0 commit comments