]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
gnutls_session_get_keylog_function: new function
authorDaiki Ueno <dueno@redhat.com>
Sun, 22 Mar 2020 09:44:51 +0000 (10:44 +0100)
committerDaiki Ueno <dueno@redhat.com>
Sun, 22 Mar 2020 16:30:58 +0000 (17:30 +0100)
This adds a way to retrieve the keylog function set by
gnutls_session_set_keylog_function() to allow application protocols to
implement custom logging facility.

Signed-off-by: Daiki Ueno <dueno@redhat.com>
NEWS
devel/libgnutls-latest-x86_64.abi
devel/symbols.last
doc/Makefile.am
doc/manpages/Makefile.am
lib/includes/gnutls/gnutls.h.in
lib/kx.c
lib/libgnutls.map
tests/keylog-func.c

diff --git a/NEWS b/NEWS
index 2362e8b39568f6db9e104ec36d028fc7d6b86bab..0e5c400a316237088f1a42f4390946fad77e893d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -16,6 +16,7 @@ See the end for copying conditions.
 gnutls_hkdf_extract: Added
 gnutls_hkdf_expand: Added
 gnutls_pbkdf2: Added
+gnutls_session_get_keylog_function: Added
 gnutls_session_set_keylog_function: Added
 gnutls_prf_hash_get: Added
 
index 76552ab037d515cc6c4c3251897677adbb9bbaab..c4dfd8fdc5d8de84d03e794e377a72a9cdb53b8a 100644 (file)
     <elf-symbol name='gnutls_session_get_flags' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='gnutls_session_get_id2' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='gnutls_session_get_id' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='gnutls_session_get_keylog_function' version='GNUTLS_3_6_13' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='gnutls_session_get_master_secret' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='gnutls_session_get_ptr' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='gnutls_session_get_random' version='GNUTLS_3_4' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
index 70ef6b3f1800eb493f2b434fc7a5b4345f2e30d6..6cdccf594e47e6ccfe884dcd6e424bb741d81b9b 100644 (file)
@@ -756,6 +756,7 @@ gnutls_session_get_desc@GNUTLS_3_4
 gnutls_session_get_flags@GNUTLS_3_4
 gnutls_session_get_id2@GNUTLS_3_4
 gnutls_session_get_id@GNUTLS_3_4
+gnutls_session_get_keylog_function@GNUTLS_3_6_13
 gnutls_session_get_master_secret@GNUTLS_3_4
 gnutls_session_get_ptr@GNUTLS_3_4
 gnutls_session_get_random@GNUTLS_3_4
index dd962d6a7852582ec069af0df04e7e429851ecc5..bd383f5ca646ba81efbe04300ad380562d114986 100644 (file)
@@ -1931,6 +1931,8 @@ FUNCS += functions/gnutls_session_get_id
 FUNCS += functions/gnutls_session_get_id.short
 FUNCS += functions/gnutls_session_get_id2
 FUNCS += functions/gnutls_session_get_id2.short
+FUNCS += functions/gnutls_session_get_keylog_function
+FUNCS += functions/gnutls_session_get_keylog_function.short
 FUNCS += functions/gnutls_session_get_master_secret
 FUNCS += functions/gnutls_session_get_master_secret.short
 FUNCS += functions/gnutls_session_get_ptr
index 6d381d8bd09206826a285194cf7fa014aae92e8c..4cf33875aed7033cf239f9cbfc3bd654369e2857 100644 (file)
@@ -767,6 +767,7 @@ APIMANS += gnutls_session_get_desc.3
 APIMANS += gnutls_session_get_flags.3
 APIMANS += gnutls_session_get_id.3
 APIMANS += gnutls_session_get_id2.3
+APIMANS += gnutls_session_get_keylog_function.3
 APIMANS += gnutls_session_get_master_secret.3
 APIMANS += gnutls_session_get_ptr.3
 APIMANS += gnutls_session_get_random.3
index b0832a9bddd19af21313030e902129edcc72f8e8..d46bb04491765b88c3c15185e434de29ea968e3a 100644 (file)
@@ -2312,6 +2312,7 @@ void gnutls_global_set_log_level(int level);
 typedef int (*gnutls_keylog_func) (gnutls_session_t session,
                                   const char *label,
                                   const gnutls_datum_t *secret);
+gnutls_keylog_func gnutls_session_get_keylog_function(const gnutls_session_t session);
 void gnutls_session_set_keylog_function(gnutls_session_t session,
                                        gnutls_keylog_func func);
 
index d5abf69ea700d438ace280743ac3782763788b28..a874f15114f06cf803a15587b247568adf97a283 100644 (file)
--- a/lib/kx.c
+++ b/lib/kx.c
@@ -70,6 +70,23 @@ int _gnutls_generate_master(gnutls_session_t session, int keep_premaster)
        return 0;
 }
 
+/**
+ * gnutls_session_get_keylog_function:
+ * @session: is #gnutls_session_t type
+ *
+ * This function will return the callback function set using
+ * gnutls_session_set_keylog_function().
+ *
+ * Returns: The function set or %NULL otherwise.
+ *
+ * Since: 3.6.13
+ */
+gnutls_keylog_func
+gnutls_session_get_keylog_function(const gnutls_session_t session)
+{
+       return session->internals.keylog_func;
+}
+
 /**
  * gnutls_session_set_keylog_function:
  * @session: is #gnutls_session_t type
index 3cc321beb839ffb6bceb88db230fc069cc67f0b2..97fc97f15270dbe857eac28007d7c2a4baa0f194 100644 (file)
@@ -1315,6 +1315,7 @@ GNUTLS_3_6_13
        gnutls_hkdf_extract;
        gnutls_hkdf_expand;
        gnutls_pbkdf2;
+       gnutls_session_get_keylog_function;
        gnutls_session_set_keylog_function;
        gnutls_prf_hash_get;
 } GNUTLS_3_6_12;
index 8c4d32114284e837f0a1c07e63df2bd08c94f061..4350698e6b71058390f54f9e99c3f7e15d32727d 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <assert.h>
 
 #if !defined(__linux__) || !defined(__GNUC__)
 
@@ -141,6 +142,7 @@ static void client(int fd, const char *prio, unsigned int exp_call_count)
        gnutls_transport_set_int(session, fd);
 
        gnutls_session_set_keylog_function(session, keylog_func);
+       assert(gnutls_session_get_keylog_function(session) == keylog_func);
 
        /* Perform the TLS handshake
         */