diff options
| author | Ted Zlatanov | 2013-10-11 09:47:35 -0400 |
|---|---|---|
| committer | Ted Zlatanov | 2013-10-11 09:47:35 -0400 |
| commit | e1f9f9e3d8abc2ce9ce9cb7fc89222ca6e3f3baa (patch) | |
| tree | f789308fdad6eeddaa260681c65cd775fb142f1e | |
| parent | 7d563e363c72828b9b1bbb0181be6a36643ce7af (diff) | |
| download | emacs-e1f9f9e3d8abc2ce9ce9cb7fc89222ca6e3f3baa.tar.gz emacs-e1f9f9e3d8abc2ce9ce9cb7fc89222ca6e3f3baa.zip | |
Support GnuTLS v3 and set up its audit logging properly.
* configure.ac: Define HAVE_GNUTLS3 if GnuTLS v3 is found.
* src/gnutls.c (gnutls_audit_log_function): Add function for GnuTLS
audit logging (only used with GnuTLS 3.x) and enable it.
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | configure.ac | 6 | ||||
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/gnutls.c | 23 |
4 files changed, 38 insertions, 0 deletions
| @@ -1,3 +1,7 @@ | |||
| 1 | 2013-10-11 Teodor Zlatanov <tzz@lifelogs.com> | ||
| 2 | |||
| 3 | * configure.ac: Define HAVE_GNUTLS3 if GnuTLS v3 is found. | ||
| 4 | |||
| 1 | 2013-10-10 Barry Fishman <barry_fishman@acm.org> (tiny change) | 5 | 2013-10-10 Barry Fishman <barry_fishman@acm.org> (tiny change) |
| 2 | 6 | ||
| 3 | * configure.ac: Update for giflib 5. (Bug#15531) | 7 | * configure.ac: Update for giflib 5. (Bug#15531) |
diff --git a/configure.ac b/configure.ac index 3bb1ee1e954..fd0c2d9b92c 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -2422,12 +2422,18 @@ fi | |||
| 2422 | AC_SUBST(LIBSELINUX_LIBS) | 2422 | AC_SUBST(LIBSELINUX_LIBS) |
| 2423 | 2423 | ||
| 2424 | HAVE_GNUTLS=no | 2424 | HAVE_GNUTLS=no |
| 2425 | HAVE_GNUTLS3=no | ||
| 2425 | if test "${with_gnutls}" = "yes" ; then | 2426 | if test "${with_gnutls}" = "yes" ; then |
| 2426 | PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no) | 2427 | PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no) |
| 2428 | PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.0.0], HAVE_GNUTLS3=yes, HAVE_GNUTLS3=no) | ||
| 2427 | if test "${HAVE_GNUTLS}" = "yes"; then | 2429 | if test "${HAVE_GNUTLS}" = "yes"; then |
| 2428 | AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.]) | 2430 | AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.]) |
| 2429 | fi | 2431 | fi |
| 2430 | 2432 | ||
| 2433 | if test "${HAVE_GNUTLS3}" = "yes"; then | ||
| 2434 | AC_DEFINE(HAVE_GNUTLS3, 1, [Define if using GnuTLS v3.]) | ||
| 2435 | fi | ||
| 2436 | |||
| 2431 | # Windows loads GnuTLS dynamically | 2437 | # Windows loads GnuTLS dynamically |
| 2432 | if test "${opsys}" = "mingw32"; then | 2438 | if test "${opsys}" = "mingw32"; then |
| 2433 | LIBGNUTLS_LIBS= | 2439 | LIBGNUTLS_LIBS= |
diff --git a/src/ChangeLog b/src/ChangeLog index 74bb2a06cb9..3d92420e7cd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2013-10-11 Teodor Zlatanov <tzz@lifelogs.com> | ||
| 2 | |||
| 3 | * gnutls.c (gnutls_audit_log_function): Add function for GnuTLS | ||
| 4 | audit logging (only used with GnuTLS 3.x) and enable it. | ||
| 5 | |||
| 1 | 2013-10-11 Dmitry Antipov <dmantipov@yandex.ru> | 6 | 2013-10-11 Dmitry Antipov <dmantipov@yandex.ru> |
| 2 | 7 | ||
| 3 | * dispnew.c (redraw_frame): Remove useless #ifdef because | 8 | * dispnew.c (redraw_frame): Remove useless #ifdef because |
diff --git a/src/gnutls.c b/src/gnutls.c index db0a6dac01c..2157d555053 100644 --- a/src/gnutls.c +++ b/src/gnutls.c | |||
| @@ -55,6 +55,7 @@ static Lisp_Object QCgnutls_bootprop_verify_hostname_error; | |||
| 55 | static Lisp_Object QCgnutls_bootprop_callbacks_verify; | 55 | static Lisp_Object QCgnutls_bootprop_callbacks_verify; |
| 56 | 56 | ||
| 57 | static void gnutls_log_function (int, const char *); | 57 | static void gnutls_log_function (int, const char *); |
| 58 | static void gnutls_audit_log_function (gnutls_session_t, const char *); | ||
| 58 | static void gnutls_log_function2 (int, const char*, const char*); | 59 | static void gnutls_log_function2 (int, const char*, const char*); |
| 59 | 60 | ||
| 60 | 61 | ||
| @@ -108,6 +109,9 @@ DEF_GNUTLS_FN (void, gnutls_dh_set_prime_bits, | |||
| 108 | DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int)); | 109 | DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int)); |
| 109 | DEF_GNUTLS_FN (int, gnutls_global_init, (void)); | 110 | DEF_GNUTLS_FN (int, gnutls_global_init, (void)); |
| 110 | DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func)); | 111 | DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func)); |
| 112 | #ifdef HAVE_GNUTLS3 | ||
| 113 | DEF_GNUTLS_FN (void, gnutls_global_set_audit_log_function, (gnutls_audit_log_func)); | ||
| 114 | #endif | ||
| 111 | DEF_GNUTLS_FN (void, gnutls_global_set_log_level, (int)); | 115 | DEF_GNUTLS_FN (void, gnutls_global_set_log_level, (int)); |
| 112 | DEF_GNUTLS_FN (void, gnutls_global_set_mem_functions, | 116 | DEF_GNUTLS_FN (void, gnutls_global_set_mem_functions, |
| 113 | (gnutls_alloc_function, gnutls_alloc_function, | 117 | (gnutls_alloc_function, gnutls_alloc_function, |
| @@ -173,6 +177,9 @@ init_gnutls_functions (void) | |||
| 173 | LOAD_GNUTLS_FN (library, gnutls_error_is_fatal); | 177 | LOAD_GNUTLS_FN (library, gnutls_error_is_fatal); |
| 174 | LOAD_GNUTLS_FN (library, gnutls_global_init); | 178 | LOAD_GNUTLS_FN (library, gnutls_global_init); |
| 175 | LOAD_GNUTLS_FN (library, gnutls_global_set_log_function); | 179 | LOAD_GNUTLS_FN (library, gnutls_global_set_log_function); |
| 180 | #ifdef HAVE_GNUTLS3 | ||
| 181 | LOAD_GNUTLS_FN (library, gnutls_global_set_audit_log_function); | ||
| 182 | #endif | ||
| 176 | LOAD_GNUTLS_FN (library, gnutls_global_set_log_level); | 183 | LOAD_GNUTLS_FN (library, gnutls_global_set_log_level); |
| 177 | LOAD_GNUTLS_FN (library, gnutls_global_set_mem_functions); | 184 | LOAD_GNUTLS_FN (library, gnutls_global_set_mem_functions); |
| 178 | LOAD_GNUTLS_FN (library, gnutls_handshake); | 185 | LOAD_GNUTLS_FN (library, gnutls_handshake); |
| @@ -230,6 +237,9 @@ init_gnutls_functions (void) | |||
| 230 | #define fn_gnutls_error_is_fatal gnutls_error_is_fatal | 237 | #define fn_gnutls_error_is_fatal gnutls_error_is_fatal |
| 231 | #define fn_gnutls_global_init gnutls_global_init | 238 | #define fn_gnutls_global_init gnutls_global_init |
| 232 | #define fn_gnutls_global_set_log_function gnutls_global_set_log_function | 239 | #define fn_gnutls_global_set_log_function gnutls_global_set_log_function |
| 240 | #ifdef HAVE_GNUTLS3 | ||
| 241 | #define fn_gnutls_global_set_audit_log_function gnutls_global_set_audit_log_function | ||
| 242 | #endif | ||
| 233 | #define fn_gnutls_global_set_log_level gnutls_global_set_log_level | 243 | #define fn_gnutls_global_set_log_level gnutls_global_set_log_level |
| 234 | #define fn_gnutls_global_set_mem_functions gnutls_global_set_mem_functions | 244 | #define fn_gnutls_global_set_mem_functions gnutls_global_set_mem_functions |
| 235 | #define fn_gnutls_handshake gnutls_handshake | 245 | #define fn_gnutls_handshake gnutls_handshake |
| @@ -249,6 +259,16 @@ init_gnutls_functions (void) | |||
| 249 | #endif /* !WINDOWSNT */ | 259 | #endif /* !WINDOWSNT */ |
| 250 | 260 | ||
| 251 | 261 | ||
| 262 | /* Function to log a simple audit message. */ | ||
| 263 | static void | ||
| 264 | gnutls_audit_log_function (gnutls_session_t session, const char* string) | ||
| 265 | { | ||
| 266 | if (global_gnutls_log_level >= 1) | ||
| 267 | { | ||
| 268 | message ("gnutls.c: [audit] %s", string); | ||
| 269 | } | ||
| 270 | } | ||
| 271 | |||
| 252 | /* Function to log a simple message. */ | 272 | /* Function to log a simple message. */ |
| 253 | static void | 273 | static void |
| 254 | gnutls_log_function (int level, const char* string) | 274 | gnutls_log_function (int level, const char* string) |
| @@ -797,6 +817,9 @@ one trustfile (usually a CA bundle). */) | |||
| 797 | if (TYPE_RANGED_INTEGERP (int, loglevel)) | 817 | if (TYPE_RANGED_INTEGERP (int, loglevel)) |
| 798 | { | 818 | { |
| 799 | fn_gnutls_global_set_log_function (gnutls_log_function); | 819 | fn_gnutls_global_set_log_function (gnutls_log_function); |
| 820 | #ifdef HAVE_GNUTLS3 | ||
| 821 | fn_gnutls_global_set_audit_log_function (gnutls_audit_log_function); | ||
| 822 | #endif | ||
| 800 | fn_gnutls_global_set_log_level (XINT (loglevel)); | 823 | fn_gnutls_global_set_log_level (XINT (loglevel)); |
| 801 | max_log_level = XINT (loglevel); | 824 | max_log_level = XINT (loglevel); |
| 802 | XPROCESS (proc)->gnutls_log_level = max_log_level; | 825 | XPROCESS (proc)->gnutls_log_level = max_log_level; |