diff options
| author | Lawrence Mitchell | 2011-07-15 19:41:24 +0200 |
|---|---|---|
| committer | Lars Magne Ingebrigtsen | 2011-07-15 19:41:24 +0200 |
| commit | 87e86684426cfc7c4676dc90e44a623921f7186e (patch) | |
| tree | 7e768fa2fdc3871c5b3049f7064f41097c349a7e /src | |
| parent | d6066239555e3ef3fcda8481ce9f9288676b1bd8 (diff) | |
| download | emacs-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/ChangeLog | 5 | ||||
| -rw-r--r-- | src/gnutls.c | 16 |
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 @@ | |||
| 1 | 2011-07-09 Lawrence Mitchell <wence@gmx.li> | ||
| 2 | |||
| 3 | * gnutls.c (Qgnutls_bootprop_min_prime_bits): New variable. | ||
| 4 | (Fgnutls_boot): Use it. | ||
| 5 | |||
| 1 | 2011-07-15 Andreas Schwab <schwab@linux-m68k.org> | 6 | 2011-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; | |||
| 50 | static Lisp_Object Qgnutls_bootprop_callbacks; | 50 | static Lisp_Object Qgnutls_bootprop_callbacks; |
| 51 | static Lisp_Object Qgnutls_bootprop_loglevel; | 51 | static Lisp_Object Qgnutls_bootprop_loglevel; |
| 52 | static Lisp_Object Qgnutls_bootprop_hostname; | 52 | static Lisp_Object Qgnutls_bootprop_hostname; |
| 53 | static Lisp_Object Qgnutls_bootprop_min_prime_bits; | ||
| 53 | static Lisp_Object Qgnutls_bootprop_verify_flags; | 54 | static Lisp_Object Qgnutls_bootprop_verify_flags; |
| 54 | static Lisp_Object Qgnutls_bootprop_verify_hostname_error; | 55 | static Lisp_Object Qgnutls_bootprop_verify_hostname_error; |
| 55 | 56 | ||
| @@ -105,6 +106,8 @@ DEF_GNUTLS_FN (int, gnutls_certificate_verify_peers2, | |||
| 105 | DEF_GNUTLS_FN (int, gnutls_credentials_set, | 106 | DEF_GNUTLS_FN (int, gnutls_credentials_set, |
| 106 | (gnutls_session_t, gnutls_credentials_type_t, void *)); | 107 | (gnutls_session_t, gnutls_credentials_type_t, void *)); |
| 107 | DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t)); | 108 | DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t)); |
| 109 | DEF_GNUTLS_FN (void, gnutls_dh_set_prime_bits, | ||
| 110 | (gnutls_session_t, unsigned int)); | ||
| 108 | DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int)); | 111 | DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int)); |
| 109 | DEF_GNUTLS_FN (int, gnutls_global_init, (void)); | 112 | DEF_GNUTLS_FN (int, gnutls_global_init, (void)); |
| 110 | DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func)); | 113 | DEF_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 |
| 647 | error. Otherwise it will be just a warning. | 652 | error. Otherwise it will be just a warning. |
| 648 | 653 | ||
| 654 | :min-prime-bits is the minimum accepted number of bits the client will | ||
| 655 | accept in Diffie-Hellman key exchange. | ||
| 656 | |||
| 649 | The debug level will be set for this process AND globally for GnuTLS. | 657 | The debug level will be set for this process AND globally for GnuTLS. |
| 650 | So if you set it higher or lower at any point, it affects global | 658 | So if you set it higher or lower at any point, it affects global |
| 651 | debugging. | 659 | debugging. |
| @@ -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"); |