]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Added gnutls_session_get_master_secret
authorNikos Mavrogiannopoulos <nmav@redhat.com>
Wed, 24 Feb 2016 13:43:17 +0000 (14:43 +0100)
committerNikos Mavrogiannopoulos <nmav@redhat.com>
Wed, 24 Feb 2016 13:43:19 +0000 (14:43 +0100)
This provides the ability to export all session parameters in various
formats.

Resolves #64

lib/includes/gnutls/gnutls.h.in
lib/libgnutls.map
lib/state.c

index 835b7ba792c00397109824e1250d414a3213b66a..efa4a19c510f2e86d46a12d12f062233edd0fd22 100644 (file)
@@ -1348,6 +1348,10 @@ int gnutls_session_get_data2(gnutls_session_t session,
 void gnutls_session_get_random(gnutls_session_t session,
                               gnutls_datum_t * client,
                               gnutls_datum_t * server);
+
+void gnutls_session_get_master_secret(gnutls_session_t session,
+                                     gnutls_datum_t * secret);
+
 char *gnutls_session_get_desc(gnutls_session_t session);
 
 typedef int gnutls_certificate_verify_function(gnutls_session_t);
index b7e6db969bd93bc9c78d080b6a4750c5583cc897..e43807f3e2d8fe7ea1b94386ba7e5de3ac2c6d0e 100644 (file)
@@ -1077,6 +1077,7 @@ GNUTLS_3_4
        gnutls_x509_crt_set_issuer_alt_othername;
        gnutls_dh_params_import_dsa;
        gnutls_session_get_flags;
+       gnutls_session_get_master_secret;
  local:
        *;
 };
index ac04888c321f0b0021df2b21e8b2b8696eea5e20..99ad866eae719ad111486a42291be115091e4162 100644 (file)
@@ -1128,6 +1128,23 @@ gnutls_session_get_random(gnutls_session_t session,
        }
 }
 
+/**
+ * gnutls_session_get_master_secret:
+ * @session: is a #gnutls_session_t type.
+ * @secret: the session's master secret
+ *
+ * This function returns pointers to the master secret
+ * used in the TLS session. The pointers are not to be modified or deallocated.
+ *
+ * Since: 3.5.0
+ **/
+void
+gnutls_session_get_master_secret(gnutls_session_t session, gnutls_datum_t *secret)
+{
+       secret->data = session->security_parameters.master_secret;
+       secret->size = sizeof(session->security_parameters.master_secret);
+}
+
 unsigned int timespec_sub_ms(struct timespec *a, struct timespec *b)
 {
        return (a->tv_sec * 1000 + a->tv_nsec / (1000 * 1000) -