diff options
author | Daiki Ueno <dueno@redhat.com> | 2020-02-02 08:13:50 +0100 |
---|---|---|
committer | Daiki Ueno <dueno@redhat.com> | 2020-02-07 18:03:45 +0100 |
commit | 9711755641cd9b6de323676abeab6cc80ea13e4b (patch) | |
tree | 95b303ea614c67994905ee5e18d4c9d2bcd0bcbe /lib/ext | |
parent | ee43a212b6bde870bf0800329972f3cab24715ec (diff) | |
download | gnutls-tmp-keylog-hook.tar.gz |
keylogfile: generalize with a callbacktmp-keylog-hook
This refactors the keylogfile mechanism by adding a callback to get
notified when a new secret is derived and installed. That way,
consumers can implement custom logging feature per session, which is
particularly useful in QUIC implementation.
Signed-off-by: Daiki Ueno <dueno@redhat.com>
Diffstat (limited to 'lib/ext')
-rw-r--r-- | lib/ext/pre_shared_key.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/ext/pre_shared_key.c b/lib/ext/pre_shared_key.c index d344922910..eef84814d6 100644 --- a/lib/ext/pre_shared_key.c +++ b/lib/ext/pre_shared_key.c @@ -203,9 +203,11 @@ generate_early_secrets(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - _gnutls_nss_keylog_write(session, "CLIENT_EARLY_TRAFFIC_SECRET", - session->key.proto.tls13.e_ckey, - prf->output_size); + ret = _gnutls_call_secret_func(session, GNUTLS_SECRET_CLIENT_EARLY_TRAFFIC_SECRET, + session->key.proto.tls13.e_ckey, + prf->output_size); + if (ret < 0) + return gnutls_assert_val(ret); ret = _tls13_derive_secret2(prf, EARLY_EXPORTER_MASTER_LABEL, sizeof(EARLY_EXPORTER_MASTER_LABEL)-1, session->internals.handshake_hash_buffer.data, @@ -215,9 +217,11 @@ generate_early_secrets(gnutls_session_t session, if (ret < 0) return gnutls_assert_val(ret); - _gnutls_nss_keylog_write(session, "EARLY_EXPORTER_SECRET", - session->key.proto.tls13.ap_expkey, - prf->output_size); + ret = _gnutls_call_secret_func(session, GNUTLS_SECRET_EARLY_EXPORTER_SECRET, + session->key.proto.tls13.ap_expkey, + prf->output_size); + if (ret < 0) + return gnutls_assert_val(ret); return 0; } |