aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLawrence Mitchell2011-07-15 19:41:24 +0200
committerLars Magne Ingebrigtsen2011-07-15 19:41:24 +0200
commit87e86684426cfc7c4676dc90e44a623921f7186e (patch)
tree7e768fa2fdc3871c5b3049f7064f41097c349a7e /src
parentd6066239555e3ef3fcda8481ce9f9288676b1bd8 (diff)
downloademacs-87e86684426cfc7c4676dc90e44a623921f7186e.tar.gz
emacs-87e86684426cfc7c4676dc90e44a623921f7186e.zip
Allow controlling how many prime bits to use during TLS negotiation
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/gnutls.c16
2 files changed, 21 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 8b9f2935347..56c7a148416 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12011-07-09 Lawrence Mitchell <wence@gmx.li>
2
3 * gnutls.c (Qgnutls_bootprop_min_prime_bits): New variable.
4 (Fgnutls_boot): Use it.
5
12011-07-15 Andreas Schwab <schwab@linux-m68k.org> 62011-07-15 Andreas Schwab <schwab@linux-m68k.org>
2 7
3 * doc.c (Fsubstitute_command_keys): Revert last change. 8 * doc.c (Fsubstitute_command_keys): Revert last change.
diff --git a/src/gnutls.c b/src/gnutls.c
index 3761951b866..fdc0c13a53b 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -50,6 +50,7 @@ static Lisp_Object Qgnutls_bootprop_crlfiles;
50static Lisp_Object Qgnutls_bootprop_callbacks; 50static Lisp_Object Qgnutls_bootprop_callbacks;
51static Lisp_Object Qgnutls_bootprop_loglevel; 51static Lisp_Object Qgnutls_bootprop_loglevel;
52static Lisp_Object Qgnutls_bootprop_hostname; 52static Lisp_Object Qgnutls_bootprop_hostname;
53static Lisp_Object Qgnutls_bootprop_min_prime_bits;
53static Lisp_Object Qgnutls_bootprop_verify_flags; 54static Lisp_Object Qgnutls_bootprop_verify_flags;
54static Lisp_Object Qgnutls_bootprop_verify_hostname_error; 55static Lisp_Object Qgnutls_bootprop_verify_hostname_error;
55 56
@@ -105,6 +106,8 @@ DEF_GNUTLS_FN (int, gnutls_certificate_verify_peers2,
105DEF_GNUTLS_FN (int, gnutls_credentials_set, 106DEF_GNUTLS_FN (int, gnutls_credentials_set,
106 (gnutls_session_t, gnutls_credentials_type_t, void *)); 107 (gnutls_session_t, gnutls_credentials_type_t, void *));
107DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t)); 108DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t));
109DEF_GNUTLS_FN (void, gnutls_dh_set_prime_bits,
110 (gnutls_session_t, unsigned int));
108DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int)); 111DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int));
109DEF_GNUTLS_FN (int, gnutls_global_init, (void)); 112DEF_GNUTLS_FN (int, gnutls_global_init, (void));
110DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func)); 113DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func));
@@ -169,6 +172,7 @@ init_gnutls_functions (Lisp_Object libraries)
169 LOAD_GNUTLS_FN (library, gnutls_certificate_verify_peers2); 172 LOAD_GNUTLS_FN (library, gnutls_certificate_verify_peers2);
170 LOAD_GNUTLS_FN (library, gnutls_credentials_set); 173 LOAD_GNUTLS_FN (library, gnutls_credentials_set);
171 LOAD_GNUTLS_FN (library, gnutls_deinit); 174 LOAD_GNUTLS_FN (library, gnutls_deinit);
175 LOAD_GNUTLS_FN (library, gnutls_dh_set_prime_bits);
172 LOAD_GNUTLS_FN (library, gnutls_error_is_fatal); 176 LOAD_GNUTLS_FN (library, gnutls_error_is_fatal);
173 LOAD_GNUTLS_FN (library, gnutls_global_init); 177 LOAD_GNUTLS_FN (library, gnutls_global_init);
174 LOAD_GNUTLS_FN (library, gnutls_global_set_log_function); 178 LOAD_GNUTLS_FN (library, gnutls_global_set_log_function);
@@ -218,6 +222,7 @@ init_gnutls_functions (Lisp_Object libraries)
218#define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2 222#define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2
219#define fn_gnutls_credentials_set gnutls_credentials_set 223#define fn_gnutls_credentials_set gnutls_credentials_set
220#define fn_gnutls_deinit gnutls_deinit 224#define fn_gnutls_deinit gnutls_deinit
225#define fn_gnutls_dh_set_prime_bits gnutls_dh_set_prime_bits
221#define fn_gnutls_error_is_fatal gnutls_error_is_fatal 226#define fn_gnutls_error_is_fatal gnutls_error_is_fatal
222#define fn_gnutls_global_init gnutls_global_init 227#define fn_gnutls_global_init gnutls_global_init
223#define fn_gnutls_global_set_log_function gnutls_global_set_log_function 228#define fn_gnutls_global_set_log_function gnutls_global_set_log_function
@@ -646,6 +651,9 @@ gnutls_certificate_set_verify_flags.
646:verify-hostname-error, if non-nil, makes a hostname mismatch an 651:verify-hostname-error, if non-nil, makes a hostname mismatch an
647error. Otherwise it will be just a warning. 652error. Otherwise it will be just a warning.
648 653
654:min-prime-bits is the minimum accepted number of bits the client will
655accept in Diffie-Hellman key exchange.
656
649The debug level will be set for this process AND globally for GnuTLS. 657The debug level will be set for this process AND globally for GnuTLS.
650So if you set it higher or lower at any point, it affects global 658So if you set it higher or lower at any point, it affects global
651debugging. 659debugging.
@@ -698,6 +706,7 @@ one trustfile (usually a CA bundle). */)
698 Lisp_Object verify_flags; 706 Lisp_Object verify_flags;
699 /* Lisp_Object verify_error; */ 707 /* Lisp_Object verify_error; */
700 Lisp_Object verify_hostname_error; 708 Lisp_Object verify_hostname_error;
709 Lisp_Object prime_bits;
701 710
702 CHECK_PROCESS (proc); 711 CHECK_PROCESS (proc);
703 CHECK_SYMBOL (type); 712 CHECK_SYMBOL (type);
@@ -719,6 +728,7 @@ one trustfile (usually a CA bundle). */)
719 verify_flags = Fplist_get (proplist, Qgnutls_bootprop_verify_flags); 728 verify_flags = Fplist_get (proplist, Qgnutls_bootprop_verify_flags);
720 /* verify_error = Fplist_get (proplist, Qgnutls_bootprop_verify_error); */ 729 /* verify_error = Fplist_get (proplist, Qgnutls_bootprop_verify_error); */
721 verify_hostname_error = Fplist_get (proplist, Qgnutls_bootprop_verify_hostname_error); 730 verify_hostname_error = Fplist_get (proplist, Qgnutls_bootprop_verify_hostname_error);
731 prime_bits = Fplist_get (proplist, Qgnutls_bootprop_min_prime_bits);
722 732
723 if (!STRINGP (hostname)) 733 if (!STRINGP (hostname))
724 error ("gnutls-boot: invalid :hostname parameter"); 734 error ("gnutls-boot: invalid :hostname parameter");
@@ -936,6 +946,11 @@ one trustfile (usually a CA bundle). */)
936 946
937 GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_PRIORITY; 947 GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_PRIORITY;
938 948
949 if (!EQ (prime_bits, Qnil))
950 {
951 fn_gnutls_dh_set_prime_bits (state, XUINT (prime_bits));
952 }
953
939 if (EQ (type, Qgnutls_x509pki)) 954 if (EQ (type, Qgnutls_x509pki))
940 { 955 {
941 ret = fn_gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred); 956 ret = fn_gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred);
@@ -1114,6 +1129,7 @@ syms_of_gnutls (void)
1114 DEFSYM (Qgnutls_bootprop_crlfiles, ":crlfiles"); 1129 DEFSYM (Qgnutls_bootprop_crlfiles, ":crlfiles");
1115 DEFSYM (Qgnutls_bootprop_callbacks, ":callbacks"); 1130 DEFSYM (Qgnutls_bootprop_callbacks, ":callbacks");
1116 DEFSYM (Qgnutls_bootprop_callbacks_verify, "verify"); 1131 DEFSYM (Qgnutls_bootprop_callbacks_verify, "verify");
1132 DEFSYM (Qgnutls_bootprop_min_prime_bits, ":min-prime-bits");
1117 DEFSYM (Qgnutls_bootprop_loglevel, ":loglevel"); 1133 DEFSYM (Qgnutls_bootprop_loglevel, ":loglevel");
1118 DEFSYM (Qgnutls_bootprop_verify_flags, ":verify-flags"); 1134 DEFSYM (Qgnutls_bootprop_verify_flags, ":verify-flags");
1119 DEFSYM (Qgnutls_bootprop_verify_hostname_error, ":verify-hostname-error"); 1135 DEFSYM (Qgnutls_bootprop_verify_hostname_error, ":verify-hostname-error");