1. 01 Jan, 2019 1 commit
    • Kevin J. McCarthy's avatar
      Remove trailing whitespace. · 443295ee
      Kevin J. McCarthy authored
      The result of
        find . -name "*.[ch]" -exec emacs -batch {} \
          --eval="(progn (delete-trailing-whitespace) (and (buffer-modified-p) (save-buffer)))" \;
  2. 27 Mar, 2017 1 commit
  3. 01 Jan, 2016 1 commit
  4. 07 Jun, 2015 1 commit
    • Kevin J. McCarthy's avatar
      Rewrite S/MIME key searching. Add purpose checking. · 135622ee
      Kevin J. McCarthy authored
      Model the smime.c searching off of classic pgp searching.  Create
      smime_get_key_by_hash()/addr()/str() functions that use a single
      smime_get_candidates() function to search the index.
      Use the new smime_keys generated purpose flag in the index to filter by
      KEYFLAG_CANENCRYPT and KEYFLAG_CANSIGN.  Old style indices fall back to
      all-inclusive behavior.
  5. 30 Mar, 2015 2 commits
    • 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.
    • 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).
  6. 17 Sep, 2005 2 commits
  7. 11 Aug, 2005 1 commit
  8. 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
      (Menus): Added entries fuer MENU_KEY_SELECT_PGP and
      (km_init): Create bindings for MENU_KEY_SELECT_PGP and
      * keymap.h (enum): New enum symbols: MENU_KEY_SELECT_PGP,
      * 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
      (crypt_valid_passphrase): Stripped, use calls to
      crypt_pgp_valid_passphrase and crypt_smime_valid_passphrase.
  9. 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
      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
      	* 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
      	* 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
      	* 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
      	* copy.c: Replaced pgp.h and smime.h header by crypt.h.
      	* 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
  10. 18 Dec, 2002 1 commit
  11. 02 Mar, 2002 2 commits
    • Thomas Roessler's avatar
    • Thomas Roessler's avatar
      smime.c: · 40f96d38
      Thomas Roessler authored
       - the getkeys() function was broken and deleted the last char
         of the certfilename
       - it now lets me use more than one key for the same mailbox
         ie select these.
       - some display output was garbled when the email didn't match.
         i posted some fix to mutt-users, but i don't like that sleep()
         so i dropped the first error message, which basically repeated
         the from/sender field only. so now there's just the message: they
         don't match.
       - i modified the add_chain to continue even if no roo-cert
         is present (david collantes received som chain that got
         exported from outlook. obiously they don't (always ?)
         include the root cert) it will now abort if neither root
         nor intermediate certs are present.
       - add_cert created index entries with '-' as issuer cert, when
         it should have been '?'. thus verify would fail. (obviously
         nobody ever used that command (add_cert, that is) :)
      the feature above obsoletes the hash_cert and fingerprint_cert commands,
      adds import_cert command and ask_cert_label bool. i modified the output
      of smime_keys (a little) so it doesn't look too garbled when supplying
      the label (it is actually interactive :) furthermore, i do a verify
      after the cert was added and modified the verify routine to make the
      cerificate trusted in case of success. (we discussed this in another
      message) that is ok so far, but perhaps this requires some better root
      certificate handling, ie the trust should be somehow connected to the
      root certificate, that maybe added (if the user trusts it and its not
      present already) to the ca-file. i'll think about that some more ... but
      then, there already is the add_root command. hmmm... (btw, you'll now
      never get asked to trust a certificate)
      i have not yet deleted the email handling from the import key stuff (in
      smime.c/crypt.c), for i'm thinking about smime_keys using it as an
      additional arg. otoh i don't think users would press ^k if verification
      failed...hmmm... but still, smime_keys does extract the email from the
      certificate either way and does verify it by itself, so the only thing
      that would happen is to have some invalid certificates, that mutt'll
      refuse to use anyways, left in the database....
      (From Oliver Ehli.)
  12. 05 Feb, 2002 1 commit
    • Thomas Roessler's avatar
      S/MIME fixes from Oliver Ehli: · ee217d50
      Thomas Roessler authored
      - smime_keys.pl:
        support for multiple email adrresses in cert: will add one entry
        to {keys, cetrificates}/.index now (for each mailbox)
        support for certificates without intermediate certs (e.g. for
        people who are their own CA: use root as intermediate, for it
        probably wouldn't be known to anyone...)
        bugfix in handle_pem: the checks if some type of cert is present;
        die() could never be reached, as the variables checked wouldn't
        have been set in that case, so it would break because of undefined
        value or some such thing.... (so it has to check $iter instead)
      - smime.c (init.h, ....)
        support for importing certificates issued for multiple addresses.
        introduced smime_fingerprint_cert_command, so finally certs can
        get compared ... (so the above works..)
        cleaned up some error messages, that would mess up the terminal.
        fixed typos (init.h)
  13. 31 Jan, 2002 1 commit
  14. 25 Jan, 2002 1 commit
  15. 24 Jan, 2002 2 commits