emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master ad67503 1/2: Make gnutls-peer-status return even mo


From: Lars Ingebrigtsen
Subject: [Emacs-diffs] master ad67503 1/2: Make gnutls-peer-status return even more data
Date: Mon, 08 Dec 2014 21:23:56 +0000

branch: master
commit ad67503f50b8d2c443e63cb16863b39ad8345567
Author: Lars Magne Ingebrigtsen <address@hidden>
Commit: Lars Magne Ingebrigtsen <address@hidden>

    Make gnutls-peer-status return even more data
    
    * src/gnutls.c (Fgnutls_peer_status): Return the key exchange, cipher
    and MAC algorithms.
---
 src/ChangeLog |    5 ++++
 src/gnutls.c  |   68 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 2 files changed, 66 insertions(+), 7 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 8a5f677..b65fbb5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-08  Lars Magne Ingebrigtsen  <address@hidden>
+
+       * gnutls.c (Fgnutls_peer_status): Return the key exchange, cipher
+       and MAC algorithms.
+
 2014-12-08  Stefan Monnier  <address@hidden>
 
        * process.c: Whitespace and line-break nitpicks.
diff --git a/src/gnutls.c b/src/gnutls.c
index ca82c7a..46ef211 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -186,11 +186,22 @@ DEF_GNUTLS_FN (int, gnutls_x509_crt_get_key_id,
               (gnutls_x509_crt_t, unsigned int,
                unsigned char *, size_t *_size));
 DEF_GNUTLS_FN (const char*, gnutls_sec_param_get_name, (gnutls_sec_param_t));
-DEF_GNUTLS_FN (const char*, gnutls_sign_get_name,
-              (gnutls_sign_algorithm_t));
+DEF_GNUTLS_FN (const char*, gnutls_sign_get_name, (gnutls_sign_algorithm_t));
 DEF_GNUTLS_FN (int, gnutls_server_name_set, (gnutls_session_t,
                                             gnutls_server_name_type_t,
                                             const void *, size_t));
+DEF_GNUTLS_FN (gnutls_kx_algorithm_t, gnutls_kx_get, (gnutls_session_t));
+DEF_GNUTLS_FN (const char*, gnutls_kx_get_name, (gnutls_kx_algorithm_t));
+DEF_GNUTLS_FN (gnutls_protocol_t, gnutls_protocol_get_version,
+              (gnutls_session_t));
+DEF_GNUTLS_FN (const char*, gnutls_protocol_get_version, (gnutls_protocol_t));
+DEF_GNUTLS_FN (gnutls_cipher_algorithm_t, gnutls_cipher_get,
+              (gnutls_session_t));
+DEF_GNUTLS_FN (const char*, gnutls_cipher_get_name,
+              (gnutls_cipher_algorithm_t));
+DEF_GNUTLS_FN (gnutls_mac_algorithm_t, gnutls_mac_get, (gnutls_session_t));
+DEF_GNUTLS_FN (const char*, gnutls_mac_get_name, (gnutls_mac_algorithm_t));
+
 
 static bool
 init_gnutls_functions (void)
@@ -269,6 +280,14 @@ init_gnutls_functions (void)
   LOAD_GNUTLS_FN (library, gnutls_sec_param_get_name);
   LOAD_GNUTLS_FN (library, gnutls_sign_get_name);
   LOAD_GNUTLS_FN (library, gnutls_server_name_set);
+  LOAD_GNUTLS_FN (library, gnutls_kx_get);
+  LOAD_GNUTLS_FN (library, gnutls_kx_get_name);
+  LOAD_GNUTLS_FN (library, gnutls_protocol_get_version);
+  LOAD_GNUTLS_FN (library, gnutls_protocol_get_name);
+  LOAD_GNUTLS_FN (library, gnutls_cipher_get);
+  LOAD_GNUTLS_FN (library, gnutls_cipher_get_name);
+  LOAD_GNUTLS_FN (library, gnutls_mac_get);
+  LOAD_GNUTLS_FN (library, gnutls_mac_get_name);
 
   max_log_level = global_gnutls_log_level;
 
@@ -342,7 +361,15 @@ init_gnutls_functions (void)
 #define fn_gnutls_x509_crt_get_key_id           gnutls_x509_crt_get_key_id
 #define fn_gnutls_sec_param_get_name            gnutls_sec_param_get_name
 #define fn_gnutls_sign_get_name                 gnutls_sign_get_name
-#define fn_gnutls_server_name_set              gnutls_server_name_set
+#define fn_gnutls_server_name_set               gnutls_server_name_set
+#define fn_gnutls_kx_get                        gnutls_kx_get
+#define fn_gnutls_kx_get_name                   gnutls_kx_get_name
+#define fn_gnutls_protocol_get_version          gnutls_protocol_get_version
+#define fn_gnutls_protocol_get_name             gnutls_protocol_get_name
+#define fn_gnutls_cipher_get                    gnutls_cipher_get
+#define fn_gnutls_cipher_get_name               gnutls_cipher_get_name
+#define fn_gnutls_mac_get                       gnutls_mac_get
+#define fn_gnutls_mac_get_name                  gnutls_mac_get_name
 
 #endif /* !WINDOWSNT */
 
@@ -998,6 +1025,7 @@ The return value is a property list with top-level keys 
:warnings and
 {
   Lisp_Object warnings = Qnil, result = Qnil;
   unsigned int verification;
+  gnutls_session_t state;
 
   CHECK_PROCESS (proc);
 
@@ -1042,15 +1070,41 @@ The return value is a property list with top-level keys 
:warnings and
                      (intern (":certificate"),
                       gnutls_certificate_details (XPROCESS 
(proc)->gnutls_certificate)));
 
+  state = XPROCESS (proc)->gnutls_state;
+
   /* Diffie-Hellman prime bits. */
   {
-    int bits = fn_gnutls_dh_get_prime_bits (XPROCESS (proc)->gnutls_state);
+    int bits = fn_gnutls_dh_get_prime_bits (state);
     if (bits > 0)
-      result = nconc2 (result, list2
-                      (intern (":diffie-hellman-prime-bits"),
-                       make_number (bits)));
+      result = nconc2 (result, list2 (intern (":diffie-hellman-prime-bits"),
+                                     make_number (bits)));
   }
 
+  /* Key exchange. */
+  result = nconc2
+    (result, list2 (intern (":key-exchange"),
+                   build_string (fn_gnutls_kx_get_name
+                                 (fn_gnutls_kx_get (state)))));
+
+  /* Protocol name. */
+  result = nconc2
+    (result, list2 (intern (":protocol"),
+                   build_string (fn_gnutls_protocol_get_name
+                                 (fn_gnutls_protocol_get_version (state)))));
+
+  /* Cipler name. */
+  result = nconc2
+    (result, list2 (intern (":cipher"),
+                   build_string (fn_gnutls_cipher_get_name
+                                 (fn_gnutls_cipher_get (state)))));
+
+  /* MAC name. */
+  result = nconc2
+    (result, list2 (intern (":mac"),
+                   build_string (fn_gnutls_mac_get_name
+                                 (fn_gnutls_mac_get (state)))));
+
+
   return result;
 }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]