1. 27 Mar, 2017 1 commit
  2. 01 Jan, 2016 1 commit
  3. 16 Apr, 2015 1 commit
    • Kevin J. McCarthy's avatar
      Use fingerprints instead of keyIDs internally. (see #3695) · 4970bd79
      Kevin J. McCarthy authored
      Add a helper function, pgp_fpr_or_lkeyid(), that returns the fingerprint
      if available, otherwise falls back to the long key id.  Convert Mutt to
      use that value for pgp command invocation.
      
      Change gpgme to use an equivalent crypt_fpr_or_lkeyid() function in a
      couple places too (for keylist generation and sign-as key selection).
      
      Update documentation to mention fingerprints and the --with-fingerprint
      option for gpg invocation.
      
      Change pgp_long_ids to default: yes, but add a note mentioning
      it's only used for the display of key IDs in a few places.
      4970bd79
  4. 30 Mar, 2015 3 commits
    • Kevin J. McCarthy's avatar
      Implement oppenc_mode in the find_keys methods. · 0fd24e8b
      Kevin J. McCarthy authored
      oppenc_mode is used by crypt_opportunistic_encrypt to determine whether
      there are valid keys for all recipients of a message, without prompting
      the user.
      
      The patch wraps around prompts, and makes getkeybyaddr methods return a
      valid address-matching key without prompting.
      
      The patch also fixes a small problem with gpgme's getkeybyaddr.  When
      determining if there were multiple strong matches, it was comparing the
      crypt_key_t instead of its kobj member (gpgme_key_t).
      
      The patch also enables a call to crypt_is_numerical_keyid() in
      find_keys(), so that crypt-hooks can actually be checked without
      prompting when gpgme is enabled.  (The addition was patterned off of the
      pgp_findKeys() function).
      0fd24e8b
    • Kevin J. McCarthy's avatar
      Introduce an oppenc_mode parameter · 4615a829
      Kevin J. McCarthy authored
      It's added to the parameter lists through the call stack down to the
      find_keys calls.
      
      No functionality is implemented yet.  This patch is separated just to
      keep other patches more readable.
      4615a829
    • Kevin J. McCarthy's avatar
      Refactor the address list generation out of the find_keys routines. · ecbba07c
      Kevin J. McCarthy authored
      All four find_keys routines have a similar set up code for generating a
      single address list out of the to, cc, bcc lists.  This patch pulls all
      the code into crypt_get_keys.
      
      This is done to simplify the functions before later patches make them
      more complicated (with the oppenc_mode parameter).
      ecbba07c
  5. 18 Jan, 2015 1 commit
    • Eike Rathke's avatar
      Allow short and long key ID user input in pgp_getkeybystr() · c9384a1b
      Eike Rathke authored
      The following did not work, e.g. when leaving a key list, and at the "Sign as"
      or "Encrypt to" prompt attempting to enter a key ID:
      * set pgp_long_ids=no
        * enter a long key ID, with or without leading 0x
      * set pgp_long_ids=yes
        * enter a short key ID without leading 0x
      
      Specifically entering a long key ID should always be possible as evil32.com
      has shown.
      
      This also cleans up the logic used to determine the matching condition, which
      was quite convoluted.. it even slightly speeds up the loop as less string
      operations are involved in the inner condition.
      
      This only changes how the result obtained from the pgp_* command line
      interface is filtered.
      c9384a1b
  6. 04 Jan, 2009 1 commit
    • Brendan Cully's avatar
      Update copyrights. Closes #3016. · ecad84f5
      Brendan Cully authored
      I went through the logs of each file with a copyright header and
      updated the years for the authors in the headers for any non-comment
      changes they introduced. What a pain!
      ecad84f5
  7. 17 Sep, 2005 2 commits
  8. 11 Aug, 2005 1 commit
  9. 17 Jun, 2004 1 commit
    • Moritz Schulte's avatar
      This is the sequel to the crypto modularization changes I did on · e48dd50a
      Moritz Schulte authored
      2003-01-21.  Moritz added another abstraction layer which cleans up
      the code and allows the crypto modules to use their own option menu.
      Everything should work as it used to but is now in a really good
      shape for part III, the Return of the GnuPG Easy Makers. -wk
      
      * crypt-mod-pgp-classic.c, crypt-mod-smime-classic.c, crypt-mod.c,
      crypt-mod.h: New files.
      
      * smime.c (smime_valid_passphrase, smime_send_menu): New functions.
      * smime.h: Removed macro: smime_valid_passphrase.
      Declared: smime_valid_passphrase, smime_send_menu.
      * pgp.c: Include "mutt_menu.h".
      (pgp_valid_passphrase, pgp_send_menu): New functions.
      * pgp.h: Removed macro: pgp_valid_passphrase.
      Declared: pgp_valid_passphrase, pgp_send_menu.
      * mutt_curses.h: Declare: mutt_need_hard_redraw.
      * mutt_crypt.h: Declare: crypt_pgp_valid_passphrase,
      crypt_pgp_send_menu, crypt_smime_valid_passphrase,
      crypt_smime_send_menu, crypt_init.
      Adjust WithCrypto definition since the GPGME backend does not
      exclude anymore the other `classic' backends.
      (KEYFLAG_ISX509): New symbol.
      * mutt.h (enum): New symbol: OPTCRYPTUSEGPGME.
      (struct body): New member: is_signed_data, warnsig.
      * main.c (main): Call crypt_init.
      * keymap.c (km_get_table): Support for MENU_KEY_SELECT_PGP and
      MENU_KEY_SELECT_SMIME.
      (Menus): Added entries fuer MENU_KEY_SELECT_PGP and
      MENU_KEY_SELECT_SMIME.
      (km_init): Create bindings for MENU_KEY_SELECT_PGP and
      MENU_KEY_SELECT_SMIME.
      * keymap.h (enum): New enum symbols: MENU_KEY_SELECT_PGP,
      MENU_KEY_SELECT_SMIME.
      * init.h: New configuration variable: crypt_use_gpgme.
      * compose.c (pgp_send_menu, smime_send_menu): Removed functions,
      they are now contained in the crypto backend modules.
      (mutt_compose_menu): Use crypt_pgp_send_menu and
      crypt_smime_send_menu instead pgp_send_menu and smime_send_menu.
      * cryptglue.c: Slightly rewritten in order to make use of the
      module mechanism used to access crypto backends.
      * curs_lib.c (mutt_need_hard_redraw): New function.
      * crypt.c (crypt_forget_passphrase): Adjust for new crypto backend
      interface.
      (crypt_valid_passphrase): Stripped, use calls to
      crypt_pgp_valid_passphrase and crypt_smime_valid_passphrase.
      e48dd50a
  10. 07 Mar, 2003 1 commit
  11. 21 Jan, 2003 1 commit
    • Werner Koch's avatar
      - To cleanup the pgp/smime code and prepare for other backends. · c901be35
      Werner Koch authored
       - Support gpg-agent by not asking for a passphrase
       - autconf cleanups.
      
      This is just a start and probably we need a couple of other things to
      do. One drawback is that the help menu does always list all crypto
      realted stuff even when configured for no crypto at all.  Same goes
      for the configure options but I consider thsi a feature: It allows to
      use the same .muttrc for different versions of mutt - at least during
      development, this is an advantage.  This all might be fixed but
      requires some changes to the configuration system.
      
      Note, the use of the WithCrypto macro - it enables the compiler to do
      dead-code-elimination depending on the configured backend.  This is
      better readable than all the nested ifdefs.  I did some short tests
      and it seems to work, althoug mutt's size does not change largely when
      compiled w/o crypto.
      
      cryptglue.c is new as a warpper to all crypto calls; some are still in
      crypt.c but they should eventually also be wrapped.  We don't use
      function pointers to keep a path to use dlopen or runtime configured
      backends.  crypt.h is also new and replaces pgp.h and smime.h in most
      files (except for the backend).
      
      
      
      2003-01-06  Werner Koch  <wk@gnupg.org>
      
      	* crypt.c (crypt_valid_passphrase): Detect gpg-agent and don't ask
      	for the passphrase.
      	* pgp.c (pgp_decrypt_part, pgp_application_pgp_handler)
      	(pgp_sign_message, pgp_encrypt_message)
      	(pgp_traditional_encryptsign): Make sure that we never ever send
      	the passphrase if the gpg-agent has been detected.  Likewise.
      
      	* acconfig.h: Removed all remaining stuff as AC_TEMPLATEs to
      	configure.in. BTW, we should consider to rename configure.in to
      	configure.ac.
      
      2003-01-04  Werner Koch  <wk@gnupg.org>
      
              Replaced the use of HAVE_PGP and HAVE_SMIME by a more readable
      	and extendable solution.
      
      	* pgplib.h: Moved enum pgp_ring and KEYFLAGS_* to
      	* crypt.h: here.
      	* smime.c (mutt_is_application_smime): Moved to
      	* crypt.c (mutt_is_application_smime): here.
      	* pgp.c (mutt_is_application_pgp): Moved to
      	* crypt.c (mutt_is_application_pgp): here.
      	* pgp.c (pgp_is_multipart_encrypted): Removed. Merged code with
      	* crypt.c (mutt_is_multipart_encrypted): this.
      
      	* mutt.h: Protect against double inclusion.
      
      	* pgplib.h (struct pgp_keyinfo): Remove the typedef to pgp_key_t.
      	* crypt.h (pgp_key_t): Declare the typedef here.  NOTE:  This is
      	now a pointer.  Changed all usages accordingly.
      
      	* configure.in: Replace HAVE_PGP and HAVE_SMIME by the new
      	CRYPT_BACKEND macros.  Always include all OPS.*.
      	(LIBOBJ): Replaced by AC_LIBOBJ as required by newer autoconfs.
      	* Makefile.am (EXTRA_mutt_SOURCES): Move crypt.c to mutt_SOURCES.
      	(mutt_SOURCES): Add cryptglue.c
      	(EXTRA_DIST): Add crypt.h
      
      	* pgp.h, pgplib.h, smime.h: Use the header only when the
      	approriate backend has been configured.
      	* pgp.c, pgpkey.c, smime.c: Build only if the approriate
      	CRYPT_BACKEND_ macro is defined.
      	* pgp.h, smime.h, global.h: Moved all variable declarations to
      	global.h because they are now always defined.
      
      	* sort.h: Always define PgpSortKey, although it does not belong to
      	here.
      
      	* keymap.h: Unconditionally include all PGP and SMIME stuff.
      	* mutt.h: Ditto.
      	* protos.h: Ditto.
      
      	* init.h (HAVE_SMIME): Unconditionally include all crypto related
      	definitions.  Mark the doc entries with "(Crypto/PGP/SMIME only)".
      
      	* globals.h: Replace gpg.h and smime.h by crypt.h.
      
      	* functions.h: Always include all crypto commands.
      
      	* copy.h: Unconditionally define the crypto related M_CM_
      
      	* pgplib.h: Move APPLICATION_PGP and PGP* to crypt.h and include
      	it.
      	* smime.h: Move APPLICATION_SMIME and SMIME* to crypt.h and
      	include it.
      	* mutt_crypt.h (ENCRYPT,SIGN,GOODSIGN, BADSIGN): Move to crypt.h.
      
      	* crypt.c: Replaced pgp.h and smime.h header by crypt.h.  Always
      	include all functions but shortcut them depending on WITHCRYPTO.
              All over the place use WITHCRYPTO instead of ifdefs.  Replaced all
      	direct calls of the backend fucntions by twrapper functions
      	defined in cryptglue.c
      	(crypt_get_keys): Removed prototypes.
      	* pgp.h (pgp_findKeys): New prototype.
      	* smime.h (smime_findKeys): New prototype.
      	* cryptglue.c: New.
      	* crypt.h: New.
      	* mutt_crypt.h: Moved all crypt_* prototypes to gcrypt.h.
      	Unconditionally use this file.
      
      	* init.c: Replaced pgp.h and smime.h header by crypt.h.
      	(parse_set): Use WITHCRYPTO instead of ifdefs.
      	(mutt_var_value_complete): Ditto.
      
      	* sendlib.c: Replaced pgp.h and smime.h header by crypt.h.
      	(write_as_text_part): Now one macro using WITHCRYPTO.
      	(mutt_write_mime_body): Use WITHCRYPTO instead of ifdefs.
      	(mutt_make_message_attach): Ditto.
      	(mutt_write_fcc): Ditto.
      
      	* send.c: Replaced pgp.h and smime.h header by crypt.h.
      	(include_forward): Use WITHCRYPTO and validate passphrases for pgp
      	and smime.
      	(include_reply): Ditto.
      	(generate_body): Use WITHCRYPTO instead of ifdefs.
      	(ci_send_message): Ditto.
      
      	* recvattach.c: Replaced pgp.h and smime.h header by crypt.h.
      	(mutt_gen_attach_list): Use WITHCRYPTO instead of ifdefs.
      	(mutt_attach_display_loop): Ditto
      	(mutt_view_attachments): Ditto.
      
      	* postpone.c: Replaced pgp.h and smime.h header by crypt.h.
      	(mutt_get_postponed): Use WITHCRYPTO instead of ifdefs.
      	(mutt_parse_crypt_hdr): Always include and use WITHCRYPTO instead
      	of ifdefs.
      	(mutt_prepare_template): Use WITHCRYPTO instead of ifdefs.
      
      	* pop.c: Removed pgp.h and smime.h.
      	(pop_fetch_message): Use WITHCRYPTO instead of ifdefs.
      
      	* pattern.c: Replaced pgp.h and smime.h header by crypt.h.
      	(Flags): Always include the crypto flags.
      	(msg_search): Use WITHCRYPTO instead of ifdefs.
      	(mutt_pattern_exec): Ditto.
      
      	* parse.c: Removed pgp.h and smime.h.
      	(mutt_parse_mime_message): Use WITHCRYPTO instead of ifdefs.
      
      	* pager.c: Replaced pgp.h and smime.h header by crypt.h.
      	(mutt_pager): Use WITHCRYPTO instead of ifdefs.
      
      	* mx.c: Removed smime.h and pgp.h.
      	(mx_update_context): Use WITHCRYPTO instead of ifdefs.
      
      	* muttlib.c: Replaced pgp.h and smime.h header by crypt.h.
      	(mutt_needs_mailcap): Use WITHCRYPTO. Note, that there used to be
      	an error when PGP was not configured so that TYPEAPPLICATION was
      	not recognized for SMIME.
      	(mutt_is_text_part): Use WITHCRYPTO instead of ifdefs.
      
      	* main.c: Include crypt.h.
      	(show_version): Remove HAVE_PGP and HAVE_SMIME.  Add
      	CRYPT_BACKEND_CLASSIC_PGP, CRYPT_BACKEND_CLASSIC_SMIME.
      
      	* keymap.c: Include crypt.h so that we can test WITHCRYPTO.
      	(Menus): Always include pgp and smime.
      	(km_init): Create smime and pgp bindings depending on WITHCRYPTO.
      	(km_get_table): Return OpPgp depending on WITHCRYPTO.
      
      	* hook.c (mutt_parse_hook): Use WITHCRYPTO instead of ifdefs.
      	(mutt_crypt_hook): Always include.
      
      	* headers.c: Replaced pgp.h and smime.h header by crypt.h.
      	(mutt_edit_headers): Use WITHCRYPTO instead of ifdefs
      
      	* hdrline.c: Replaced pgp.h and smime.h header by crypt.h.
      	(hdr_format_str): Use WITHCRYPTO.
      
      	* handler.c: Replaced pgp.h and smime.h header by crypt.h.
      	(mutt_can_decode): Use WITHCRYPTO instead of ifdefs.
      	(mutt_can_decode): Application/smime is now also checked when PGP
      	support is not configured.
      	(mutt_body_handler): Use WITHCRYPTO
      
      	* curs_main.c: Replaced pgp.h and smime.h header by crypt.h.
      	(mutt_index_menu): Shortcut crypto only operations depending on
      	WITHCRYPTO.
      
      	* copy.c: Replaced pgp.h and smime.h header by crypt.h.
      	(_mutt_copy_message):
      
      	* compose.c: Replaced pgp.h and smime.h header by crypt.h.
      	(enum): Always include HDR_CRYPT and HDR_CRYPTINFO.
      	(redraw_crypt_lines): Always include this fnc but shortcut it
      	depending on WITHCRYPT.  Draw lines depending on the configured
      	crypto support.
      	(pgp_send_menu): Always include this one.  Call wrapper functions.
      	(smime_send_menu): Likewise.
      	(draw_envelope): Use WITHCRYPTO instead of ifdefs.
      	(mutt_compose_menu): Allow pgp/smime commands only when configured.
      
      	* commands.c: Replaced pgp.h and smime.h header by crypt.h.
      	(mutt_display_message,pipe_msg, _mutt_pipe_message)
      	(set_copy_flags, mutt_save_message, mutt_edit_content_type)
      	(_mutt_check_traditional_pgp): Use pgp wrapper.
      
      	* attach.c (mutt_view_attachment): Removed HAVE_GPG and HAVE_SMIME
      	and replaced by global variable WITHCRYPTO.  Replaced pgp and
      	smime header by crypt.h.x
      c901be35
  12. 18 Dec, 2002 1 commit
  13. 11 Dec, 2002 1 commit
  14. 24 Jan, 2002 1 commit
  15. 28 Mar, 2001 1 commit
  16. 13 Feb, 2001 1 commit
  17. 12 Feb, 2001 1 commit
  18. 28 May, 2000 1 commit
  19. 03 Mar, 2000 1 commit
  20. 10 Feb, 2000 1 commit
  21. 10 Jan, 2000 1 commit
  22. 06 Jan, 2000 1 commit
  23. 15 Aug, 1999 1 commit
  24. 28 Jul, 1999 1 commit
  25. 03 Jun, 1999 1 commit
  26. 22 Mar, 1999 1 commit
  27. 09 Feb, 1999 1 commit
  28. 29 Jan, 1999 1 commit
  29. 22 Jan, 1999 1 commit
  30. 07 Jan, 1999 1 commit
  31. 13 Oct, 1998 1 commit
  32. 07 Sep, 1998 2 commits
  33. 28 Aug, 1998 1 commit
  34. 27 Aug, 1998 1 commit
  35. 16 Jun, 1998 1 commit
  36. 08 Jun, 1998 1 commit