aboutsummaryrefslogtreecommitdiffstats
path: root/src/gnutls.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ; Add 2026 to copyright years.Sean Whitton2026-01-011-1/+1
|
* A few more functions are not purePaul Eggert2025-11-201-2/+1
| | | | | | | | | | | | | | | | | Assuming ATTRIBUTE_PURE means that the function must return, a few more functions that should not be declared with ATTRIBUTE_PURE. The GCC manual (and even the C23 standard, with [[reproducible]]) is not clear about this, and it’s better to be safe. * src/bignum.h (mpz_get_d_rounded): * src/lisp.h (bignum_to_double): No longer pure, as it does not return if memory is exhausted. * src/fns.c (Fproper_list_p): No longer pure, as it does not return if the user quits. * src/gnutls.c (Fgnutls_errorp): No longer pure, as it does not return if it runs into an eassert failure in XSYMBOL_WITH_POS via EQ. * src/lisp.h (bignum_to_intmax, bignum_to_uintmax, bignum_bufsize): No longer pure, as it does not return if it runs into an eassert failure in XBIGNUM via xbignum_val.
* Fix more mis-declarations of non-const functionsPaul Eggert2025-11-201-1/+1
| | | | | | | | | Problem reported by Helmut Eller in: https://lists.gnu.org/r/emacs-devel/2025-11/msg00809.html * src/data.c (Fsymbol_with_pos_p, Fnatnump): * src/fns.c (Fproper_list_p): * src/gnutls.c (Fgnutls_errorp): Now pure, not const.
* Update copyright year to 2025Paul Eggert2025-01-011-1/+1
| | | | Run "TZ=UTC0 admin/update-copyright".
* Use cheaper string constructorsMattias Engdegård2024-07-091-2/+1
| | | | | | | | | * src/coding.c (make_string_from_utf8): * src/fileio.c (file_name_directory): * src/lread.c (Fintern): * src/gnutls.c (Fgnutls_format_certificate): Use `make_multibyte_string` and `make_unibyte_string` instead of more expensive `make_specified_string` and `make_string_from_bytes`.
* Intern additional symbols ahead-of-timePo Lu2024-05-091-7/+14
| | | | | | | * src/gnutls.c (Fgnutls_available_p, syms_of_gnutls): * src/minibuf.c (Fread_buffer, syms_of_minibuf): Define and intern symbols overlooked in the previous change.
* Replace calls to intern with a constant string with DEFSYMsPo Lu2024-05-091-59/+103
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/alloc.c (display_malloc_warning, syms_of_alloc): * src/buffer.c (Fmake_indirect_buffer, Fbuffer_local_variables) (Frename_buffer, Fkill_buffer, Fset_buffer_major_mode) (Fset_buffer_multibyte, syms_of_buffer): * src/callint.c (read_file_name, Fcall_interactively) (syms_of_callint): * src/callproc.c (call_process, create_temp_file) (syms_of_callproc): * src/charset.c (Fdefine_charset_internal, syms_of_charset): * src/cmds.c (internal_self_insert, syms_of_cmds): * src/coding.c (record_conversion_result) (Fdefine_coding_system_internal, syms_of_coding): * src/dbusbind.c (xd_signature, Fdbus_message_internal) (syms_of_dbusbind): * src/dispnew.c (init_faces_initial): * src/doc.c (Fsnarf_documentation, syms_of_doc): * src/dosfns.c (system_process_attributes, syms_of_dosfns): * src/emacs.c (init_cmdargs, Fdump_emacs, decode_env_path) (syms_of_emacs): * src/eval.c (call_debugger, Fdefvaralias, syms_of_eval): * src/fileio.c (barf_or_query_if_file_exists) (Finsert_file_contents, auto_save_error, Fdo_auto_save) (syms_of_fileio): * src/filelock.c (lock_file_1, syms_of_filelock): * src/fontset.c (fontset_from_font, syms_of_fontset): * src/frame.c (make_frame_without_minibuffer, syms_of_frame): * src/gnutls.c (emacs_gnutls_certificate_details) (Fgnutls_peer_status_warning_describe, Fgnutls_peer_status) (gnutls_verify_boot, syms_of_gnutls): * src/gtkutil.c (style_changed_cb, find_rtl_image): * src/image.c (imagemagick_filename_hint, gs_load) (syms_of_image): * src/keyboard.c (command_loop_1, read_char, timer_start_idle) (read_char_minibuf_menu_prompt, Fsuspend_emacs) (syms_of_keyboard): * src/keymap.c (Fmap_keymap, Flookup_key, Fdescribe_vector) (describe_vector, syms_of_keymap): * src/lread.c (Fread, Fread_positioning_symbols, syms_of_lread): * src/minibuf.c (Fabort_minibuffers, Fread_buffer) (Fcompleting_read, syms_of_minibuf): * src/msdos.c (XMenuActivate, run_msdos_command, syms_of_msdos): * src/nsfns.m (Fx_display_backing_store, Fx_display_visual_class) (Fns_hide_emacs, Fsystem_move_file_to_trash, ns_create_tip_frame) (x_hide_tip, Fx_show_tip, syms_of_nsfns): * src/nsfont.m (ns_spec_to_descriptor, ns_descriptor_to_entity) (syms_of_nsfont): * src/pdumper.c (Fdump_emacs_portable): * src/pgtkfns.c (Fx_display_visual_class, x_create_tip_frame) (Fx_show_tip, syms_of_pgtkfns): * src/pgtkterm.c (syms_of_pgtkterm, pgtk_cr_export_frames): * src/term.c (term_get_fkeys_1, set_tty_color_mode, Fsuspend_tty) (Fresume_tty, tty_menu_activate, syms_of_term): * src/terminal.c (create_terminal, syms_of_terminal): * src/w32fns.c (Fx_display_backing_store) (Fx_display_visual_class, Fset_message_beep, Fx_open_connection) (Fx_show_tip, Fx_file_dialog, Fsystem_move_file_to_trash) (Fw32_toggle_lock_key, syms_of_w32fns): * src/w32font.c (w32_enumfont_pattern_entity, syms_of_w32font): * src/w32term.c (w32_bitmap_icon, syms_of_w32term): * src/xdisp.c (message_dolog, define_frame_cursor1) (syms_of_xdisp): * src/xfaces.c (tty_lookup_color, syms_of_xfaces): * src/xml.c (make_dom, syms_of_xml): * src/xterm.c (syms_of_xterm): * src/xwidget.c (store_xwidget_download_callback_event) (store_xwidget_js_callback_event, syms_of_xwidget): Define symbols for symbols interned with `intern' from a constant string, delete duplicate DEFSYM directives, and substitute them for such calls to intern. This excludes only those symbols which are interned and referenced only once during Emacs's initialization, the timing of whose interning is inconsequential, and symbols in w32.c, which would need to be transferred to a new syms_of_w32 function that I cannot test.
* Merge from savannah/emacs-29Po Lu2024-01-021-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dc4e6b13296 ; Update copyright years in more files 64b37776318 ; Run set-copyright from admin.el 8e1c56ae467 ; Add 2024 to copyright years # Conflicts: # doc/misc/modus-themes.org # doc/misc/texinfo.tex # etc/NEWS # etc/refcards/ru-refcard.tex # etc/themes/modus-operandi-theme.el # etc/themes/modus-themes.el # etc/themes/modus-vivendi-theme.el # lib/alloca.in.h # lib/binary-io.h # lib/c-ctype.h # lib/c-strcasecmp.c # lib/c-strncasecmp.c # lib/careadlinkat.c # lib/cloexec.c # lib/close-stream.c # lib/diffseq.h # lib/dup2.c # lib/filemode.h # lib/fpending.c # lib/fpending.h # lib/fsusage.c # lib/getgroups.c # lib/getloadavg.c # lib/gettext.h # lib/gettime.c # lib/gettimeofday.c # lib/group-member.c # lib/malloc.c # lib/md5-stream.c # lib/md5.c # lib/md5.h # lib/memmem.c # lib/memrchr.c # lib/nanosleep.c # lib/save-cwd.h # lib/sha1.c # lib/sig2str.c # lib/stdlib.in.h # lib/strtoimax.c # lib/strtol.c # lib/strtoll.c # lib/time_r.c # lib/xalloc-oversized.h # lisp/auth-source-pass.el # lisp/emacs-lisp/lisp-mnt.el # lisp/emacs-lisp/timer.el # lisp/info-look.el # lisp/jit-lock.el # lisp/loadhist.el # lisp/mail/rmail.el # lisp/net/ntlm.el # lisp/net/webjump.el # lisp/progmodes/asm-mode.el # lisp/progmodes/project.el # lisp/progmodes/sh-script.el # lisp/textmodes/flyspell.el # lisp/textmodes/reftex-toc.el # lisp/textmodes/reftex.el # lisp/textmodes/tex-mode.el # lisp/url/url-gw.el # m4/alloca.m4 # m4/clock_time.m4 # m4/d-type.m4 # m4/dirent_h.m4 # m4/dup2.m4 # m4/euidaccess.m4 # m4/fchmodat.m4 # m4/filemode.m4 # m4/fsusage.m4 # m4/getgroups.m4 # m4/getloadavg.m4 # m4/getrandom.m4 # m4/gettime.m4 # m4/gettimeofday.m4 # m4/gnulib-common.m4 # m4/group-member.m4 # m4/inttypes.m4 # m4/malloc.m4 # m4/manywarnings.m4 # m4/mempcpy.m4 # m4/memrchr.m4 # m4/mkostemp.m4 # m4/mktime.m4 # m4/nproc.m4 # m4/nstrftime.m4 # m4/pathmax.m4 # m4/pipe2.m4 # m4/pselect.m4 # m4/pthread_sigmask.m4 # m4/readlink.m4 # m4/realloc.m4 # m4/sig2str.m4 # m4/ssize_t.m4 # m4/stat-time.m4 # m4/stddef_h.m4 # m4/stdint.m4 # m4/stdio_h.m4 # m4/stdlib_h.m4 # m4/stpcpy.m4 # m4/strnlen.m4 # m4/strtoimax.m4 # m4/strtoll.m4 # m4/time_h.m4 # m4/timegm.m4 # m4/timer_time.m4 # m4/timespec.m4 # m4/unistd_h.m4 # m4/warnings.m4 # nt/configure.bat # nt/preprep.c # test/lisp/register-tests.el
| * ; Add 2024 to copyright yearsPo Lu2024-01-021-1/+1
| |
* | Show SHA-256 digest of a public key in 'nsm-format-certificate'Łukasz Stelmach2023-07-151-0/+21
| | | | | | | | | | | | | | | | | | | | * lisp/net/nsm.el (nsm-format-certificate): Show public key digest (SHA-256 if available). Displaying the digest enables users to verify the certificate with other tools like 'gnutls-cli' which present much more detailed information. * src/gnutls (emacs_gnutls_certificate_details): Export SHA-256 public key digest if supported by GnuTLS. (Bug#64043)
* | Prefer C23 ckd_* to Gnulib *_WRAPV macrosPaul Eggert2023-05-171-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | C23 has added ckd_add etc. macros with functionality equivalent to the older Gnulib INT_ADD_WRAPV macros, so switch to the more-standard names. * admin/merge-gnulib (GNULIB_MODULES): Add stdckdint. This merely makes the dependency explicit, as we were already using this Gnulib module indirectly. * lib-src/etags.c, src/lisp.h: Include stdckdint.h. * lib-src/etags.c (xnmalloc, xnrealloc): * src/alloc.c (xnmalloc, xnrealloc, xpalloc, Fmake_string) (mark_memory): * src/bignum.c (emacs_mpz_pow_ui): * src/buffer.c (record_overlay_string, overlay_strings): * src/bytecode.c (exec_byte_code): * src/casefiddle.c (do_casify_multibyte_string): * src/ccl.c (ccl_driver, Fccl_execute_on_string): * src/character.c (char_width, c_string_width) (lisp_string_width, count_size_as_multibyte) (string_escape_byte8): * src/cmds.c (internal_self_insert): * src/coding.c (coding_alloc_by_realloc, produce_chars): * src/data.c (arith_driver): * src/dispnew.c (realloc_glyph_pool, init_display_interactive): * src/doprnt.c (parse_format_integer): * src/editfns.c (Freplace_buffer_contents, str2num) (styled_format): * src/emacs-module.c (module_global_reference_p) (module_make_global_ref, module_funcall): * src/eval.c (max_ensure_room): * src/fileio.c (blocks_to_bytes): * src/fns.c (Ffillarray): * src/font.c (font_intern_prop): * src/frame.c (check_frame_pixels): * src/gnutls.c (gnutls_hex_string, gnutls_symmetric_aead): * src/gtkutil.c (get_utf8_string): * src/haikuterm.c (haiku_term_init): * src/image.c (xbm_scan, image_to_emacs_colors) (image_detect_edges, png_load_body): * src/keyboard.c (Frecursion_depth): * src/keymap.c (Flookup_key, Fkey_description): * src/lisp.h (modiff_incr, SAFE_ALLOCA_LISP_EXTRA): * src/lread.c (read_bool_vector): * src/pgtkterm.c (pgtk_term_init): * src/regex-emacs.c (regex_compile): * src/term.c (encode_terminal_code): * src/termcap.c (tputs): * src/textconv.c (textconv_query): * src/timefns.c (timespec_ticks, lisp_time_hz_ticks) (Fdecode_time, check_tm_member): * src/tparam.c (tparam1): * src/w32term.c (w32_initialize_display_info): * src/xdisp.c (fill_column_indicator_column, decode_mode_spec): * src/xselect.c (selection_data_size, x_property_data_to_lisp): * src/xsmfns.c (smc_save_yourself_CB): * src/xterm.c (xm_setup_dnd_targets, x_sync_get_monotonic_time) (x_sync_current_monotonic_time, x_sync_note_frame_times) (x_display_set_last_user_time, x_term_init): Prefer the C23 stdckdint macros to their Gnulib intprops.h counterparts, since C23 is standard.
* | Remove unneeded restriction in using AEAD ciphers with GnuTLSEli Zaretskii2023-01-091-0/+4
| | | | | | | | | | * src/gnutls.c (gnutls_symmetric_aead): Disable the enforcement of block size on input data. (Bug#60693)
* | Merge from origin/emacs-29Stefan Kangas2023-01-061-1/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 0f5e74f1734 ruby-ts-mode: Highlight method and block parameters f1aa306f915 ruby-ts-mode: Highlight variable assignments 089b08eb3eb ruby-ts-mode: Move 'self' and 'super' from constants to k... 7ede600273c (ruby-ts-mode): Split font-lock feature 'builtin' into two ec172d748f3 Avoid assertion violation due to fill-column indicator face 62c2963ce60 Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/... 2e6070f16c4 ; Another review of etc/NEWS 16eca92415b ; * src/gnutls.c (Fgnutls_deinit): Fix typo in doc string... 4753b587868 * lisp/cedet/semantic/symref/grep.el: Support ts-modes (b... 8a18369afdc ; Another fix for doc strings of 2 treesit.el functions 3fc68833517 ; Fix the doc strings of 2 treesit.el functions 83ce7c861e1 Make 'toml-ts-mode' optional # Conflicts: # etc/NEWS
| * ; * src/gnutls.c (Fgnutls_deinit): Fix typo in doc string (bug#60579).Eli Zaretskii2023-01-051-1/+1
| |
* | Fix build with older versions of gnutlsAndreas Schwab2023-01-021-0/+16
| | | | | | | | | | * src/gnutls.c (key_file2_aux): Use GNUTLS_PKCS_* constants only if defined.
* | Merge from origin/emacs-29Eli Zaretskii2023-01-011-1/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | cae528457c ; Add 2023 to copyright years. b394359261 Improve documentation of 'isearch-open-overlay-temporary' ab3210e709 Document 'use-package' in the 2 main manuals # Conflicts: # etc/refcards/ru-refcard.tex # lib/explicit_bzero.c # m4/explicit_bzero.m4
| * ; Add 2023 to copyright years.Eli Zaretskii2023-01-011-1/+1
| |
* | Fix the build broken by latest GnuTLS-related changesEli Zaretskii2022-12-311-0/+13
| | | | | | | | | | | | | | | | | | * src/gnutls.c (key_file2_aux): Don't use GNUTLS_PKCS_PBES2_* constants that are defined only in latest versions of GnuTLS. (Bug#50507) (Fgnutls_boot): Mention in the doc string that some flags of 'gnutls_certificate_set_x509_key_file2' are only supported since GnuTLS 3.6.3.
* | ; * src/gnutls.c (Fgnutls_boot): Fix typo.Po Lu2022-12-311-1/+1
| |
* | Fix last change in gnutls.cPo Lu2022-12-311-7/+16
| | | | | | | | | | | | * src/gnutls.c (Fgnutls_boot): Pacify --enable-check-lisp-object-type and Haiku GCC warning involving `key_file2_aux'.
* | Add :pass and :flags to gnutls-boot for :keylistNikolaos Chatzikonstantinou2022-12-301-0/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/net/gnutls.el (gnutls-boot-parameters): Add the keys :pass and :flags, and update the documentation. * src/gnutls.c (gnutls-boot): Add the keys :pass and :flags, and update the documentation. (syms_of_gnutls): Add the symbols :pass, :flags, and the symbols that correspond to the enumeration constants of the GnuTLS enum `gnutls_pkcs_encrypt_flags_t'. (key_file2_aux): Private helper function that translates a list of symbols to its corresponding `unsigned int' value of the GnuTLS C enum `gnutls_pkcs_encrypt_flags_t'. (Bug#50507)
* | Remove Gnulib explicit_bzero modulePaul Eggert2022-12-181-1/+1
|/ | | | | | | | | | | | | It’s no longer needed, as it is now merely a thin layer around C23-style memset_explicit and we might as well just call the C23 standard function; that’s more forward-looking. * admin/merge-gnulib (GNULIB_MODULES): Remove explicit_bzero, and add memset_explicit. * lib/explicit_bzero.c, m4/explicit_bzero.m4: Remove these files, which were copied from Gnulib. * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate. * src/gnutls.c (gnutls_symmetric_aead): Use memset_explicit instead of explicit_bzero.
* * src/gnutls.c (Fgnutls_available_p): Avoid duplicating capabilities.Juanma Barranquero2022-11-031-5/+7
|
* Allow plist-get/plist-put/plist-member to take a comparison functionLars Ingebrigtsen2022-06-271-16/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/lispref/lists.texi (Plist Access): Document it. * lisp/filesets.el (filesets-reset-fileset) (filesets-ingroup-cache-get): (filesets-ingroup-cache-put): (filesets-build-menu-now): Don't use lax-plist functions. * lisp/simple.el (lax-plist-put, lax-plist-get): Moved here from fns.c and make obsolete. * lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Don't mark plist functions as side-effect-free or pure. * lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Adjust type. * lisp/emacs-lisp/shortdoc.el (list): Don't document deprecated functions. * src/xdisp.c (build_desired_tool_bar_string): (display_mode_element): (store_mode_line_string): (display_string): (produce_stretch_glyph): (note_mode_line_or_margin_highlight): (note_mouse_highlight): * src/w32.c (serial_configure): * src/sysdep.c (serial_configure): * src/sound.c (parse_sound): * src/process.c (Fset_process_buffer): (Fset_process_sentinel): (Fprocess_contact): (Fmake_process): (Fmake_pipe_process): (Fset_network_process_option): (Fserial_process_configure): (Fmake_serial_process): (set_network_socket_coding_system): (finish_after_tls_connection): (connect_network_socket): (Fmake_network_process): (server_accept_connection): * src/lread.c (ADDPARAM): (hash_table_from_plist): * src/keyboard.c (make_lispy_position): * src/indent.c (check_display_width): * src/image.c (postprocess_image): * src/gnutls.c (gnutls_verify_boot): (Fgnutls_boot): (gnutls_symmetric): (Fgnutls_hash_mac): (Fgnutls_hash_digest): * src/dired.c (filter): * src/data.c (add_to_function_history): * src/coding.c (Fcoding_system_put): Adjust callers from Fplist_put (etc) to plist_put. * src/fns.c (plist_get): (plist_put): (plist_member): New functions (without optional third parameter) to be used in C code. * src/fns.c (Fplist_get, Fplist_put, Fplist_member): Take an optional predicate parameter (bug#47425). * src/lisp.h: Declare new plist_put, plist_get and plist_member functions. * test/lisp/json-tests.el (test-json-add-to-plist): Use plist-get. * test/src/fns-tests.el (test-cycle-lax-plist-get): (test-cycle-lax-plist-put): (lax-plist-get/odd-number-of-elements): (test-plist): Remove lax-plist tests, since semantics have changed (they no longer error out on cycles).
* Remove unused fns/data and make fns staticPaul Eggert2022-03-191-1/+1
| | | | | | | | | | | | | | | | | | | | | * src/comp.c (saved_sigset, helper_temp_output_buffer_setup): Remove; unused. * src/comp.c (logfile, helper_link_table): * src/fns.c (hashfn_equal, hashfn_eql): * src/frame.c (frame_windows_min_size): * src/gnutls.c (emacs_gnutls_global_init): * src/minibuf.c (Vcommand_loop_level_list): * src/syntax.c (syntax_code_spec): * src/timefns.c (time_overflow): * src/xterm.c (x_xrender_color_from_gc_foreground) (x_display_set_last_user_time): Now static, since it’s not used elsewhere. * src/xterm.c (x_xrender_color_from_gc_foreground) (x_xrender_color_from_gc_background): Move earlier to avoid forward use. (x_xrender_color_from_gc_foreground): Do not define unless !defined USE_CAIRO && (RENDER_MAJOR > 0 || RENDER_MINOR >= 2), since it’s not used otherwise.
* Add some sleeps to gnutls_try_handshakeLars Ingebrigtsen2022-03-041-0/+4
| | | | | | | | | | | | | | | | * admin/merge-gnulib (GNULIB_MODULES): Add the nanosleep module. * m4/gnulib-comp.m4 (gl_EARLY): * lib/gnulib.mk.in: Automatic update. * m4/nanosleep.m4: * lib/nanosleep.c: New module. * nt/mingw-cfg.site (gl_cv_func_free_preserves_errno): * nt/gnulib-cfg.mk (OMIT_GNULIB_MODULE_nanosleep): Omit nanosleep, since mingw has it. * src/gnutls.c (gnutls_try_handshake): Add some sleeping to the busy-wait loop so that we don't use 100% CPU here (bug#32452).
* ; Add 2022 to copyright years.Eli Zaretskii2022-01-011-1/+1
|
* De-obfuscate gnutls_handshake loopdickmao2021-06-191-8/+3
| | | | | * src/gnutls.c (gnutls_try_handshake): Rewrite the handshake loop for greater clarity (bug#49055).
* Don't crash if gnutls_handshake failsRobert Pluim2021-02-251-0/+2
| | | | | | | | | | In some situations involving Internet access not being fully functional, gnutls_handshake returns a fatal error, which we were ignoring, causing us to call gnutls_handshake again. Now we check for the error and return it to the caller. * src/gnutls.c (gnutls_try_handshake): Return immediately if gnutls_handshake returns a fatal error (Bug#46709).
* Fix backslash mistakes in doc strings in C codeMattias Engdegård2021-01-021-1/+1
| | | | | | | | These were found by an instrumented version of make-docfile. * src/gnutls.c (Fgnutls_available_p): * src/keymap.c (Fkey_description): * src/xdisp.c (syms_of_xdisp):
* Update copyright year to 2021Paul Eggert2021-01-011-1/+1
| | | | Run "TZ=UTC0 admin/update-copyright".
* Have gnutls_symmetric cache the results from Fgnutls_ciphersLars Ingebrigtsen2020-08-241-1/+8
| | | | | | * src/gnutls.c (gnutls_symmetric): Cache the results from Fgnutls_ciphers, since that function isn't very fast (bug#42998). (syms_of_gnutls): Initialize cache variable.
* MS-Windows fixes as followup to import of Gnulib 'getrandom'Eli Zaretskii2020-06-281-11/+0
| | | | | | | | | | | * nt/mingw-cfg.site (gl_cv_lib_assume_bcrypt): Set to "no" to disable linking against bcrypt.dll. (Bug#42095) * src/gnutls.c (gnutls_rnd) [WINDOWSNT]: Don't define a function pointer, and don't load it from GnuTLS DLL. (w32_gnutls_rnd) [WINDOWSNT]: Delete unused function. * src/fns.c (gnutls_rnd) [WINDOWSNT]: Don't redirect to w32_gnutls_rnd.
* Define libgnutls-version properlyNoam Postavsky2020-02-251-7/+12
| | | | | | * src/gnutls.c (syms_of_gnutls) <libgnutls-version>: Define with DEFVAR_LISP and add docstring, so that this variable will accessible by help facilities.
* Update copyright year to 2020Paul Eggert2020-01-011-1/+1
| | | | Run "TZ=UTC0 admin/update-copyright $(git ls-files)".
* Port gnutls.c to --enable-gcc-warnings --without-gnutlsPaul Eggert2019-11-231-41/+41
| | | | | | | * src/gnutls.c: Move the "#ifdef HAVE_GNUTLS" earlier, so that "./configure --enable-gcc-warnings --without-gnutls" does not complain about macros being defined but never used. Indent "#" directives more consistently.
* Fix quoting in gnutls.c comments and stringsEli Zaretskii2019-09-301-15/+13
| | | | | | | * src/gnutls.c (gnutls_make_error, emacs_gnutls_global_init) (Fgnutls_symmetric_encrypt, Fgnutls_symmetric_decrypt) (Fgnutls_hash_mac, Fgnutls_hash_digest): Fix quoting in doc strings and comments.
* Port :safe-renegotiation test to GnuTLS < 3.6.3Paul Eggert2019-09-051-6/+1
| | | | | | | | Problem reported by Robert Pluim in https://lists.gnu.org/r/emacs-devel/2019-09/msg00127.html * src/gnutls.c (Fgnutls_peer_status): Simplify test for whether the :safe-renegotiation result is needed, so that it works all the way back to GnuTLS 2.12.2.
* Don’t mention :safe-renegotiation in TLS 1.3Paul Eggert2019-09-041-5/+11
| | | | | | * src/gnutls.c (Fgnutls_peer_status): Don’t put the safe-renegotiation indication into the status in TLS 1.3, which removed support for renegotiation.
* Port recent gnutls fixes to gcc -Wpointer-signPaul Eggert2019-08-271-1/+2
| | | | | * src/gnutls.c (Fgnutls_format_certificate): Fix pointer signedness problem.
* ; Fix commentary of last change.Eli Zaretskii2019-08-271-3/+3
|
* Fix crashes on MS-Windows when using GnuTLS connectionsEli Zaretskii2019-08-271-10/+14
| | | | | | | | | * src/gnutls.c (init_gnutls_functions) [WINDOWSNT]: Define and load gnutls_free by an explicit call to GetProcAddress. (gnutls_free) [WINDOWSNT]: Define as a macro that dereferences a function pointer. (Bug#31946) (Fgnutls_format_certificate): Use make_string_from_bytes instead of going through an intermediate malloc'ed buffer.
* Fix crashes in networking with GnuTLS on MS-WindowsEli Zaretskii2019-08-261-1/+4
| | | | | | | | * src/gnutls.c (init_gnutls_functions) [WINDOWSNT]: Define and load gnutls_free. (Fgnutls_format_certificate): Use gnutls_free instead of xfree. This prevents crashes on MS-Windows, since the memory being released was allocated inside GnuTLS. (Bug#31946)
* Tweak gnutls-peer-status reportingPaul Eggert2019-08-231-9/+7
| | | | | | | | | | * src/gnutls.c (Fgnutls_peer_status): Report :compression and :encrypt-then-mac only if the underlying GnuTLS library has the corresponding features. This give the Elisp caller a bit more information about the peer status. * lisp/net/nsm.el (nsm-protocol-check--compression): Don’t worry about compression in newer GnuTLS versions that do not support compression.
* Get the Gnutls code compiling on Fedora 30Paul Eggert2019-08-231-23/+37
| | | | | | | | | | | | | | | | | | | | The recent changes caused the build to fail on Fedora 30 when built with --enable-gcc-warnings, among other things with diagnostics that gnutls_compression_get and gnutls_compression_get_name are deprecated (this started with GnuTLS 3.6). Fix this by refusing to call these obsolescent and now-dummy functions in GnuTLS 3.6 and later. However, this is just a temporary workaround to get the build working; a real fix is needed, as network-stream-tests fail. * src/gnutls.c (HAVE_GNUTLS_COMPRESSION_GET): New macro. (gnutls_compression_get, gnutls_compression_get_name): Define only if HAVE_GNUTLS_COMPRESSION_GET. (init_gnutls_functions): Load the two functions only if HAVE_GNUTLS_COMPRESSION_GET. (emacs_gnutls_certificate_export_pem): Use alloca instead of xmalloc. (Fgnutls_peer_status): Just return "NULL" if the functions are deprecated. (Fgnutls_format_certificate): Fix pointer signedness glitches. * src/process.c: Fix spacing.
* Fix recent changes in gnutls.cEli Zaretskii2019-08-231-4/+4
| | | | | | * src/gnutls.c: Fix typos that broke the MS-Windows build. (Fgnutls_peer_status_warning_describe): Fix incomplete error message string.
* Merge remote-tracking branch 'origin/netsec'Lars Ingebrigtsen2019-08-231-2/+188
|\
| * Full certificate chain details for NSMJimmy Yuen Ho Wong2018-07-141-2/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/net/nsm.el (nsm-check-tls-connection): Fix issue with plural problems in message. Prefix every problem with a bullet. (nsm-query-user): Add new view the full certificate chain by pressing d. (nsm-format-certificate): Improve basic certificate and session info formatting. * src/gnutls.c (emacs_gnutls_certificate_export_pem): New function. (gnutls_certificate_details): Rename to emacs_gnutls_certificate_details. Add :pem to result list. (Fgnutls_format_certificate): New function for formatting a PEM to human-readable text.
| * Revamp Network Security manager checks for TLSJimmy Yuen Ho Wong2018-07-141-0/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/net/nsm.el (network-security-level, nsm-level, nsm-new-fingerprint-ok-p): Remove `paranoid' level and related code. * lisp/net/nsm.el (nsm-tls-checks, nsm-tls-check-version, nsm-tls-check-compression, nsm-tls-check-renegotiation-info-ext, nsm-tls-check-verify-cert, nsm-tls-check-same-cert, nsm-tls-check-null-suite, nsm-tls-check-export-kx, nsm-tls-check-anon-kx, nsm-tls-check-md5-sig, nsm-tls-check-rc4-cipher, nsm-tls-check-dhe-prime-kx, nsm-tls-check-sha1-sig, nsm-tls-check-ecdsa-cbc-cipher nsm-tls-check-dhe-kx, nsm-tls-check-rsa-kx, nsm-tls-check-3des-cipher, nsm-tls-check-cbc-cipher, nsm-save-fingerprint-maybe, nsm-tls-post-check-functions): New options and functions for checking TLS handshake problems. * lisp/net/nsm.el (nsm-check-certificate, network-security-protocol-checks, nsm-protocol-check--diffie-hellman-prime-bits, nsm-protocol-check--3des, nsm-protocol-check--rc4, nsm-protocol-check--signature-sha1, nsm-protocol-check--intermediate-sha1, nsm-protocol-check--ssl, nsm-check-protocol): Remove in favor of `nsm-tls-checks' and `nsm-tls-check-*' functions. * lisp/net/nsm.el (nsm-verify-connection): Ensure connection is checked even when `network-security-level' is `low'. * lisp/net/nsm.el (nsm-check-tls-connection): Batch all problems found before querying the user. * lisp/net/nsm.el (nsm--encryption): Renamed to `nsm-cipher-suite'. * lisp/net/nsm.el (nsm-fingerprint-ok-p): No longer prompt when certificate fingerprints mismatch. Returns a boolean instead when the fingerprint of the certificate received matches the saved fingerprints. * lisp/net/nsm.el (nsm-query): Change signature. Accepts a list of problems and a preformatted message instead of just a message format and the arguments for the message. * lisp/net/nsm.el (nsm-query-user): Change signature. Accepts a preformatted message and the peer status of the handshake instead of a message format, its arguments and the certificate for the host. * lisp/net/nsm.el (nsm-save-host): Change signature. Accepts a list of problems after the WHAT parameter. Saves multiple fingerprints for the same host in case the host load balances a TLS server with more than one certificates signed with different keys. Makes sure conditions are not removed when updating a fingerprint. * lisp/net/nsm.el (nsm-format-certificate): Display the TLS handshake's renegotiation info extension, compression level, encrypt-then-MAC extension, and key exchange prime bit length. * src/gnutls.c (gnutls-peer-status-warning-describe, gnutls-peer-status): Check for certificate verification problems introduced since GnuTLS 3.1. * src/gnutls.c (gnutls-peer-status): `:compression', `:encrypt-then-mac' and `:safe-renegotiation' are now contained in the peer status result return value.
* | Remove printmax_t etc.Paul Eggert2019-07-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | printmax_t etc. were needed only for platforms that lacked support for printing intmax_t. These platforms are now so obsolete that they are no longer practical porting targets. * src/image.c (gs_load): Fix unlikely buffer overrun discovered while making these changes. It was introduced in 2011-07-17T00:34:43!eggert@cs.ucla.edu. * src/lisp.h (printmax_t, uprintmax_t, pMd, pMu, pMx): Remove. All uses replaced by their standard counterparts intmax_t, uintmax_t, PRIdMAX, PRIuMAX, PRIxMAX.