diff options
author | Alba Mendez <me@alba.sh> | 2019-05-11 23:07:06 +0200 |
---|---|---|
committer | Daniel Bevenius <daniel.bevenius@gmail.com> | 2019-05-15 05:32:33 +0200 |
commit | 53bef423f31bb383212a6754228c21ca3d3231b6 (patch) | |
tree | 489bb9e43883e4bdf3dac4bdbb3f2a82e86b2db0 /src/tls_wrap.cc | |
parent | 10d7e01ee9618a42cb658a07d692557a03456fe5 (diff) | |
download | android-node-v8-53bef423f31bb383212a6754228c21ca3d3231b6.tar.gz android-node-v8-53bef423f31bb383212a6754228c21ca3d3231b6.tar.bz2 android-node-v8-53bef423f31bb383212a6754228c21ca3d3231b6.zip |
tls: expose keylog event on TLSSocket
Exposes SSL_CTX_set_keylog_callback in the form of a `keylog` event
that is emitted on clients and servers. This enables easy debugging
of TLS connections with i.e. Wireshark, which is a long-requested
feature.
PR-URL: https://github.com/nodejs/node/pull/27654
Refs: https://github.com/nodejs/node/issues/2363
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'src/tls_wrap.cc')
-rw-r--r-- | src/tls_wrap.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc index 4c5d002295..cd6321b969 100644 --- a/src/tls_wrap.cc +++ b/src/tls_wrap.cc @@ -912,6 +912,15 @@ void TLSWrap::EnableSessionCallbacks( wrap); } +void TLSWrap::EnableKeylogCallback( + const FunctionCallbackInfo<Value>& args) { + TLSWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); + CHECK_NOT_NULL(wrap->sc_); + SSL_CTX_set_keylog_callback(wrap->sc_->ctx_.get(), + SSLWrap<TLSWrap>::KeylogCallback); +} + // Check required capabilities were not excluded from the OpenSSL build: // - OPENSSL_NO_SSL_TRACE excludes SSL_trace() // - OPENSSL_NO_STDIO excludes BIO_new_fp() @@ -1105,6 +1114,7 @@ void TLSWrap::Initialize(Local<Object> target, env->SetProtoMethod(t, "start", Start); env->SetProtoMethod(t, "setVerifyMode", SetVerifyMode); env->SetProtoMethod(t, "enableSessionCallbacks", EnableSessionCallbacks); + env->SetProtoMethod(t, "enableKeylogCallback", EnableKeylogCallback); env->SetProtoMethod(t, "enableTrace", EnableTrace); env->SetProtoMethod(t, "destroySSL", DestroySSL); env->SetProtoMethod(t, "enableCertCb", EnableCertCb); |