diff options
| author | Lars Magne Ingebrigtsen | 2014-12-08 22:18:59 +0100 |
|---|---|---|
| committer | Lars Magne Ingebrigtsen | 2014-12-08 22:23:50 +0100 |
| commit | ad67503f50b8d2c443e63cb16863b39ad8345567 (patch) | |
| tree | 6f3d5624b782e3620cabe80601a197c9eaeec736 /src | |
| parent | 8665a748f946dc9a49bb2753373bb39ac72a6bc2 (diff) | |
| download | emacs-ad67503f50b8d2c443e63cb16863b39ad8345567.tar.gz emacs-ad67503f50b8d2c443e63cb16863b39ad8345567.zip | |
Make gnutls-peer-status return even more data
* src/gnutls.c (Fgnutls_peer_status): Return the key exchange, cipher
and MAC algorithms.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/gnutls.c | 68 |
2 files changed, 66 insertions, 7 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 8a5f677615e..b65fbb5c1eb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2014-12-08 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * gnutls.c (Fgnutls_peer_status): Return the key exchange, cipher | ||
| 4 | and MAC algorithms. | ||
| 5 | |||
| 1 | 2014-12-08 Stefan Monnier <monnier@iro.umontreal.ca> | 6 | 2014-12-08 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 7 | ||
| 3 | * process.c: Whitespace and line-break nitpicks. | 8 | * process.c: Whitespace and line-break nitpicks. |
diff --git a/src/gnutls.c b/src/gnutls.c index ca82c7aec4a..46ef21137fb 100644 --- a/src/gnutls.c +++ b/src/gnutls.c | |||
| @@ -186,11 +186,22 @@ DEF_GNUTLS_FN (int, gnutls_x509_crt_get_key_id, | |||
| 186 | (gnutls_x509_crt_t, unsigned int, | 186 | (gnutls_x509_crt_t, unsigned int, |
| 187 | unsigned char *, size_t *_size)); | 187 | unsigned char *, size_t *_size)); |
| 188 | DEF_GNUTLS_FN (const char*, gnutls_sec_param_get_name, (gnutls_sec_param_t)); | 188 | DEF_GNUTLS_FN (const char*, gnutls_sec_param_get_name, (gnutls_sec_param_t)); |
| 189 | DEF_GNUTLS_FN (const char*, gnutls_sign_get_name, | 189 | DEF_GNUTLS_FN (const char*, gnutls_sign_get_name, (gnutls_sign_algorithm_t)); |
| 190 | (gnutls_sign_algorithm_t)); | ||
| 191 | DEF_GNUTLS_FN (int, gnutls_server_name_set, (gnutls_session_t, | 190 | DEF_GNUTLS_FN (int, gnutls_server_name_set, (gnutls_session_t, |
| 192 | gnutls_server_name_type_t, | 191 | gnutls_server_name_type_t, |
| 193 | const void *, size_t)); | 192 | const void *, size_t)); |
| 193 | DEF_GNUTLS_FN (gnutls_kx_algorithm_t, gnutls_kx_get, (gnutls_session_t)); | ||
| 194 | DEF_GNUTLS_FN (const char*, gnutls_kx_get_name, (gnutls_kx_algorithm_t)); | ||
| 195 | DEF_GNUTLS_FN (gnutls_protocol_t, gnutls_protocol_get_version, | ||
| 196 | (gnutls_session_t)); | ||
| 197 | DEF_GNUTLS_FN (const char*, gnutls_protocol_get_version, (gnutls_protocol_t)); | ||
| 198 | DEF_GNUTLS_FN (gnutls_cipher_algorithm_t, gnutls_cipher_get, | ||
| 199 | (gnutls_session_t)); | ||
| 200 | DEF_GNUTLS_FN (const char*, gnutls_cipher_get_name, | ||
| 201 | (gnutls_cipher_algorithm_t)); | ||
| 202 | DEF_GNUTLS_FN (gnutls_mac_algorithm_t, gnutls_mac_get, (gnutls_session_t)); | ||
| 203 | DEF_GNUTLS_FN (const char*, gnutls_mac_get_name, (gnutls_mac_algorithm_t)); | ||
| 204 | |||
| 194 | 205 | ||
| 195 | static bool | 206 | static bool |
| 196 | init_gnutls_functions (void) | 207 | init_gnutls_functions (void) |
| @@ -269,6 +280,14 @@ init_gnutls_functions (void) | |||
| 269 | LOAD_GNUTLS_FN (library, gnutls_sec_param_get_name); | 280 | LOAD_GNUTLS_FN (library, gnutls_sec_param_get_name); |
| 270 | LOAD_GNUTLS_FN (library, gnutls_sign_get_name); | 281 | LOAD_GNUTLS_FN (library, gnutls_sign_get_name); |
| 271 | LOAD_GNUTLS_FN (library, gnutls_server_name_set); | 282 | LOAD_GNUTLS_FN (library, gnutls_server_name_set); |
| 283 | LOAD_GNUTLS_FN (library, gnutls_kx_get); | ||
| 284 | LOAD_GNUTLS_FN (library, gnutls_kx_get_name); | ||
| 285 | LOAD_GNUTLS_FN (library, gnutls_protocol_get_version); | ||
| 286 | LOAD_GNUTLS_FN (library, gnutls_protocol_get_name); | ||
| 287 | LOAD_GNUTLS_FN (library, gnutls_cipher_get); | ||
| 288 | LOAD_GNUTLS_FN (library, gnutls_cipher_get_name); | ||
| 289 | LOAD_GNUTLS_FN (library, gnutls_mac_get); | ||
| 290 | LOAD_GNUTLS_FN (library, gnutls_mac_get_name); | ||
| 272 | 291 | ||
| 273 | max_log_level = global_gnutls_log_level; | 292 | max_log_level = global_gnutls_log_level; |
| 274 | 293 | ||
| @@ -342,7 +361,15 @@ init_gnutls_functions (void) | |||
| 342 | #define fn_gnutls_x509_crt_get_key_id gnutls_x509_crt_get_key_id | 361 | #define fn_gnutls_x509_crt_get_key_id gnutls_x509_crt_get_key_id |
| 343 | #define fn_gnutls_sec_param_get_name gnutls_sec_param_get_name | 362 | #define fn_gnutls_sec_param_get_name gnutls_sec_param_get_name |
| 344 | #define fn_gnutls_sign_get_name gnutls_sign_get_name | 363 | #define fn_gnutls_sign_get_name gnutls_sign_get_name |
| 345 | #define fn_gnutls_server_name_set gnutls_server_name_set | 364 | #define fn_gnutls_server_name_set gnutls_server_name_set |
| 365 | #define fn_gnutls_kx_get gnutls_kx_get | ||
| 366 | #define fn_gnutls_kx_get_name gnutls_kx_get_name | ||
| 367 | #define fn_gnutls_protocol_get_version gnutls_protocol_get_version | ||
| 368 | #define fn_gnutls_protocol_get_name gnutls_protocol_get_name | ||
| 369 | #define fn_gnutls_cipher_get gnutls_cipher_get | ||
| 370 | #define fn_gnutls_cipher_get_name gnutls_cipher_get_name | ||
| 371 | #define fn_gnutls_mac_get gnutls_mac_get | ||
| 372 | #define fn_gnutls_mac_get_name gnutls_mac_get_name | ||
| 346 | 373 | ||
| 347 | #endif /* !WINDOWSNT */ | 374 | #endif /* !WINDOWSNT */ |
| 348 | 375 | ||
| @@ -998,6 +1025,7 @@ The return value is a property list with top-level keys :warnings and | |||
| 998 | { | 1025 | { |
| 999 | Lisp_Object warnings = Qnil, result = Qnil; | 1026 | Lisp_Object warnings = Qnil, result = Qnil; |
| 1000 | unsigned int verification; | 1027 | unsigned int verification; |
| 1028 | gnutls_session_t state; | ||
| 1001 | 1029 | ||
| 1002 | CHECK_PROCESS (proc); | 1030 | CHECK_PROCESS (proc); |
| 1003 | 1031 | ||
| @@ -1042,15 +1070,41 @@ The return value is a property list with top-level keys :warnings and | |||
| 1042 | (intern (":certificate"), | 1070 | (intern (":certificate"), |
| 1043 | gnutls_certificate_details (XPROCESS (proc)->gnutls_certificate))); | 1071 | gnutls_certificate_details (XPROCESS (proc)->gnutls_certificate))); |
| 1044 | 1072 | ||
| 1073 | state = XPROCESS (proc)->gnutls_state; | ||
| 1074 | |||
| 1045 | /* Diffie-Hellman prime bits. */ | 1075 | /* Diffie-Hellman prime bits. */ |
| 1046 | { | 1076 | { |
| 1047 | int bits = fn_gnutls_dh_get_prime_bits (XPROCESS (proc)->gnutls_state); | 1077 | int bits = fn_gnutls_dh_get_prime_bits (state); |
| 1048 | if (bits > 0) | 1078 | if (bits > 0) |
| 1049 | result = nconc2 (result, list2 | 1079 | result = nconc2 (result, list2 (intern (":diffie-hellman-prime-bits"), |
| 1050 | (intern (":diffie-hellman-prime-bits"), | 1080 | make_number (bits))); |
| 1051 | make_number (bits))); | ||
| 1052 | } | 1081 | } |
| 1053 | 1082 | ||
| 1083 | /* Key exchange. */ | ||
| 1084 | result = nconc2 | ||
| 1085 | (result, list2 (intern (":key-exchange"), | ||
| 1086 | build_string (fn_gnutls_kx_get_name | ||
| 1087 | (fn_gnutls_kx_get (state))))); | ||
| 1088 | |||
| 1089 | /* Protocol name. */ | ||
| 1090 | result = nconc2 | ||
| 1091 | (result, list2 (intern (":protocol"), | ||
| 1092 | build_string (fn_gnutls_protocol_get_name | ||
| 1093 | (fn_gnutls_protocol_get_version (state))))); | ||
| 1094 | |||
| 1095 | /* Cipler name. */ | ||
| 1096 | result = nconc2 | ||
| 1097 | (result, list2 (intern (":cipher"), | ||
| 1098 | build_string (fn_gnutls_cipher_get_name | ||
| 1099 | (fn_gnutls_cipher_get (state))))); | ||
| 1100 | |||
| 1101 | /* MAC name. */ | ||
| 1102 | result = nconc2 | ||
| 1103 | (result, list2 (intern (":mac"), | ||
| 1104 | build_string (fn_gnutls_mac_get_name | ||
| 1105 | (fn_gnutls_mac_get (state))))); | ||
| 1106 | |||
| 1107 | |||
| 1054 | return result; | 1108 | return result; |
| 1055 | } | 1109 | } |
| 1056 | 1110 | ||