2024-08-21  Andre Heinecke  <aheinecke@gnupg.org>

	Auto update po files
	* po: Auto update

	Update NEWS for todays release.

	NEWS: Note another fix for the next release
	* NEWS: Add note about misclassification of mails.

	Revert "Set missing filename to rfc822_email.eml..
	This reverts commit 0d16049d41e052ea9b5d7a7878ece3d02a182161.

	Since this fix only prints a static filename when an
	enacapsulated message is detected but does neither parase the
	mail nor fill it with the complete data it is better to
	leave it out for a bugfix release as this only creates
	more problems then it solves. The encapsulated message part
	needs to be eihter completely cut out from our parser and
	treated as a MAPI attachment or ignored if we do not support
	it.

2024-08-21  Werner Koch  <wk@gnupg.org>

	Update NEWS.

2024-08-16  Andre Heinecke  <aheinecke@gnupg.org>

	Fix classification of OpenPGP Multipart/Signed mails
	* src/mapihelp.cpp (mapi_change_message_class): Fix
	multipart signed handling.
	* src/mail.cpp (Mail::decryptVerify_o): Fix class dance
	and improve the documentation.

	Ignore unknown write event again
	* src/common_indep.h (opt.closeOnUnknownWriteEvent): New.
	* src/mailitem_events.cpp (WriteCancelIgnored): Check for new opt.
	* src/main.c (read_options): Read new option.

2024-08-15  Andre Heinecke  <aheinecke@gnupg.org>

	Fix message save before decrypt handling
	* src/mail.cpp (Mail::decryptVerify_o): Only restore msgclass
	for S/MIME mails. Only save PGP Mails before decrypt if they
	are encrypted.
	* src/mailitem-events.cpp (WriteCancelIgnored): Only
	fall through to cancel if the write happens after decryption.

	Add status info to a debug output
	* src/keycache.cpp (do_update): Add the word "idling" to the
	done statement.

2024-08-05  Andre Heinecke  <aheinecke@gnupg.org>

	Statically link winpthread
	* src/Makefile.am (gpgol_LDFLAGS): Add -static -lpthread

2024-07-22  Andre Heinecke  <aheinecke@gnupg.org>

	Add GPG_ERROR_CFLAGS explicitly
	* src/Makefile.am, tests/Makefile.am: Add GPG_ERROR_CFLAGS
	explicity.

	m4: Update libassuan.m4, too
	* m4/libassuan.m4: Update.

	Remove werror for maintainer-mode
	* configure.ac (CFLAGS, CXXFLAGS): Remove -Werror

2024-07-03  Andre Heinecke  <aheinecke@gnupg.org>

	Remove myself as the package maintainer
	* AUTHORS: Change maintainershipt to g10 Code GmbH

	Po: add italian translations
	* po/it.po (Update).

2024-07-03  Werner Koch  <wk@gnupg.org>

	Make mak distcheck work again
	* Makefile.am (SUBDIRS) [W32]: Disable tests dir

	Require C++14 also for tests and fix previous commit.
	* tests/Makefile.am (AM_CXXFLAGS): Rwquire C++14
	(parser_SRC): Remove accidently inserted keycache.

	Fix indentation.
	* src/mimedataprovider.cpp (t2body): Just to be really sure check
	ctmain and ctsub before strcmp.

2024-06-25  Markus Montkowski  <markus@monti.g10code.de>

	Set missing filename to rfc822_email.eml for message/rfc822 attachments

2024-05-21  Werner Koch  <wk@gnupg.org>

	build: Update autogen.sh and autogen.rc to a modern version.

	build: Update libassuan.m4 to 2023-07-26 and gpgrt to 2023-04-01

2024-01-02  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Auto update po files

	Update NEWS for todays release

2023-12-15  Andre Heinecke  <aheinecke@gnupg.org>

	Fix crash on temporary mailref from ribbon control
	* src/ribbon-callbacks.cpp (get_mail_from_control): Check
	if the Mail object still exists after releasing the reference.

2023-11-29  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Move GPGME init from DLLMain to COM init
	* NEWS: Update.
	* src/common.cpp (get_gpgme_w32_inst_dir): Move here from main.c
	(set_global_hinstance): Removed for readability.
	* src/common.h: Update accordingly.
	* src/main.c (get_gpgme_w32_inst_dir): Move to common.cpp
	(DllMain): Remove all initialization code.
	* src/gpgoladdin.cpp (GpgolAddin::GpgolAddin): Do the
	GPGME initalization here.

	Post release version bump
	* NEWS, configure.ac: Bump version.

	Auto update po files
	* po: Auto auto update.

	Update NEWS for todays release

	Log description of loaded addins
	* src/oomhelp.cpp (log_addins): Also log description.

2023-11-19  Andre Heinecke  <aheinecke@gnupg.org>

	Use offline and AlwaysTrust for S/MIME draft enc
	* src/cryptcontroller.cpp (CryptController::do_crypto):
	Check for draft encryption and then enable forced behavior.

2023-11-14  Andre Heinecke  <aheinecke@gnupg.org>

	Do not delete input after sign & encrypt
	* src/cryptcontroller.cpp (CryptController::do_crypto): Do
	not delete input after constructing MIME.

2023-11-10  Andre Heinecke  <aheinecke@gnupg.org>

	When S/MIME encryption is forced use offline mode
	* src/cryptcontroller.cpp (CryptController::do_crypto):
	Set a forced context to offline mode.

2023-11-06  Andre Heinecke  <aheinecke@gnupg.org>

	Improve handling of S/MIME sign without cert
	* src/cryptcontroller.cpp (CryptController::is_resolved): Check
	that keycache is populated.
	(CryptController::is_resolved): Only show message once and not
	for each protocol.
	(CryptController::is_resolved): Actually check for S/MIME key.
	* src/keycache.cpp (KeyCache::isPopulated, KeyCache::setPopulated):
	New.

	GnuPG-Bug-Id: T6683

	Fix encoding for no singning certificate warning
	* src/cryptcontroller.cpp (is_resolved): Use utf8 for gpgol_bug.
	Expect the Registry error message to be in local8 bit.

2023-11-06  Eva Bolten  <eva.bolten@gnupg.com>

	po: Add missing spaces in a German translation

2023-10-04  Eva Bolten  <eva.bolten@gnupg.com>

	po: Minor correction in German po

2023-09-28  Andre Heinecke  <aheinecke@gnupg.org>

	Fix double release in error handling
	* src/mail.cpp (fixup_last_attachment): Do not release attach
	on error.

2023-09-21  Eva Bolten  <eva.bolten@gnupg.com>

	po: Translate strings for new options
	* po/de.po: Translation new options

2023-09-20  Andre Heinecke  <aheinecke@gnupg.org>

	Improve help strings for new options
	* po/*: Auto update.

	Fix release in case noSaveBeforeDecrypt is set
	* Mail::decryptVerify_o (): Release the message regardless
	of the save option if it is no longer needed.

	Auto update po files
	* po/*: Update.

	Add new option noSaveBeforeDecrypt
	* src/addin-options.cpp: Add new strings from config dialog.
	* src/common_indep.h (opt): Add noSaveBeforeDecrypt.
	* src/mail.cpp (Mail::decryptVerify_o): Do not save the mail
	explicitly to MAPI / OOM when noSaveBeforeDecrypt is set.
	* src/main.c (read_options): Read new option.

2023-09-19  Andre Heinecke  <aheinecke@gnupg.org>

	Improve handling of sign selected without certs
	* src/common_indep.h (opt): Add smimeNoCertSigErr.
	* src/cryptcontroller.cpp (CryptController::parse_output):
	Handle if no signing is selected.
	(CryptController::is_resolved): Show an error in the
	case of a specific misconfiguration.
	(CryptController::prepare_crypto): Actually handle to
	send out an unencrypted / unsiged mail.
	* src/cryptcontroller.h (prepare_crypto): Document new
	return value.
	* src/mail.cpp (do_crypt): Send an unsigned / unencrypted
	mail in case only sign was selected and the user selected no
	signing cert.
	* src/main.c (read_options): Read the new value.

	Add support for S/MIME always trust
	* src/cryptcontroller.cpp (prepare_crypto): Split preperation out of.
	(do_crypto): Add force parameter improve error handling.
	(start_crypto_overlay, stop_crypto_overlay): Make public.
	* src/mail.cpp (do_crypt): Handle repeating a crypto operation with
	  force.

2023-09-19  Eva Bolten  <eva.bolten@gnupg.com>

	po: Minor spelling fixes for German translation
	* po/de.po: spelling fixes

2023-09-04  Andre Heinecke  <aheinecke@gnupg.org>

	Spelling fixes for german translation
	* po/de.po: Some spelling fixes.

2023-09-01  Andre Heinecke  <aheinecke@gnupg.org>

	Fix looking at first attachment when body empty
	* src/mapihelp.cpp: Check for empty body, too.

2023-08-29  Andre Heinecke  <aheinecke@gnupg.org>

	po: Fix spelling in error message
	* po/de.po: Spelling correction.

2023-08-25  Andre Heinecke  <aheinecke@gnupg.org>

	Use .mime as the extension for GpgOLs internal attach
	* src/mapihelp.h: Use GpgOL_MIME_strucutre.mime instead of .txt

	Set MIME encoding on data containing MIME
	* cryptcontroller.cpp (CryptController::do_crypto): set MIME
	encoding on output.

2023-08-18  Andre Heinecke  <aheinecke@gnupg.org>

	po: Minor update to german po

2023-08-02  Andre Heinecke  <aheinecke@gnupg.org>

	Post release Version bump

	Update NEWS for todays release
	* NEWS: Updated for 2.5.9

2023-08-01  Andre Heinecke  <aheinecke@gnupg.org>

	Disable reparse code for S/MIME opaque mails
	* src/parsecontroller.cpp (ParseController::parse): Only
	try to reparse an inline/pgp mail not S/MIME.

2023-07-31  Andre Heinecke  <aheinecke@gnupg.org>

	Implement simple handling for RFC2231 params
	* src/mimedataprovider.cpp (rfc2231_to_2047): Fixup
	an RFC2231 string so that it can be parsed by our our rfc2047 parser.
	(rfc2231_query_parameter): Add handling for continued parameters
	and parameters with encoding / language.

	tests: Add some RFC2231 style filename/name combos
	* tests/data/openpgp-signed-rfc2231-attachments.mbox:
	Add an invalidly signed message with some name / filename combinations

	tests: Fix out of bounds read.
	* src/rfc2047.c (rfc2047_decode_tokens): Fix possible out
	of bounds strdup when conversion is not available.

	tests: Make attachment name printing prettier
	* tests/run-parser.cpp (main): Add endlines.

	Fix linux build of tests
	* src/attachment.cpp (Attachment::copy_to): Ifdef definition.
	* tests/Makefile.am (AM_LDFLAGS): Add GPG_ERROR_LIBS

2023-07-07  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Update NEWS for todays release

2023-06-21  Andre Heinecke  <aheinecke@gnupg.org>

	Add new string for gpgolconfig help for GpgOL
	* src/addin-options.cpp: Add new strings.
	* po/*: Update accordingly.

2023-06-19  Andre Heinecke  <aheinecke@gnupg.org>

	Fix crash for strange Attachments
	* src/attachment.cpp (Attachment::Attachment): Fix null ptr
	assignment to string for fileName and DisplayName.

2023-05-16  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Update NEWS for todays release

	Auto update po files
	* po/*: Update.

2023-05-15  Andre Heinecke  <aheinecke@gnupg.org>

	Add some debug output to mimedataprovider
	* src/mimedataprovider.cpp (MimeDataProvider::collect_input_lines):
	Just some debug output.

	Ensure data is fully collected first in finalize
	* src/mimedataprovider.cpp (MimeDataProvider::finalize): Flush
	rawbuf before handling prot headers.

	Fix build without deprecated declarations
	* src/keycache.cpp (getSigningKey): Use canSign instead of
	canReallySign.

	Extend protection against plaintext syncs
	* src/mail.cpp (Mail::decryptVerify_o): Invoke the
	save independet of message class and extend it to MAPI.
	* src/mailitem-events.cpp (WriteCancelIgnored): New event
	handler.

2023-05-12  Andre Heinecke  <aheinecke@gnupg.org>

	Silence a new compiler warning
	* tests/run-messenger.cpp (main): Use zero instead of NULL.

2023-03-15  Andre Heinecke  <aheinecke@gnupg.org>

	Save MAPI message before decryption
	* src/mail.cpp (Mail::decryptVerify_o): Invoke save before decrypt.

2023-02-22  Andre Heinecke  <aheinecke@gnupg.org>

	Ignore stringop-overflow warning globally
	* configure.ac (CXXFLAGS): Add -Wno-stringop-overflow

2023-02-17  Andre Heinecke  <aheinecke@gnupg.org>

	Revert "Return E_FAIL when cancelling write event"
	This reverts commit 503ee571f09281b0e05d0f7e99554e195995a47e.

	Remove FORTIFY_SOURCE flag
	* configure.ac (HARDENING): Remove FORTIFY_SOURCE.

	Ignore a warning for stringop-truncation
	* src/oomhelp.cpp (get_oom_object): Ignore a warning about string
	truncation.

2023-02-16  Andre Heinecke  <aheinecke@gnupg.org>

	Return E_FAIL when cancelling write event
	* src/mailitem-events.cpp (Write): Return E_FAIL to cancel write
	event.

2023-02-15  Andre Heinecke  <aheinecke@gnupg.org>

	Remove -O0 from hardening flags
	* configure.ac (HARDENING): Remove -O0 flag.

2022-12-19  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	po: Auto update po files

	Update NEWS for 2.5.6
	-

2022-11-18  Andre Heinecke  <aheinecke@gnupg.org>

	Fix range-loop-errors

	Ignore -Waddress warnings in -Werror mode
	* configure.ac: Add -Wno-address

2022-11-03  Eva Bolten  <eva.bolten@gnupg.com>

	po: Fix minor typo
	* po/de.po: fix minor typo

2022-11-02  Werner Koch  <wk@gnupg.org>

	Protect against theoretical integer overflow in TLV parser.
	* src/parsetlv.c (parse_tlv): Detect integer overflow

2022-10-25  Andre Heinecke  <aheinecke@gnupg.org>

	w64: Support static linkage with lib64 libdir
	* src/Makefile.am: Check for lib64 library when symlinking static
	libs.

2022-10-25  NIIBE Yutaka  <gniibe@fsij.org>

	build: Fix for new gpgrt-config and *.pc.
	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): No --with-*-prefix.
	* configure.ac: Check gpg-error before gpgme.
	(GPGMEPP_CXXFLAGS, GPGMEPP_LIBS): Move from m4/gpgme.m4.
	* m4/gpg-error.m4: Update from libgpg-error.
	* m4/gpgme.m4: Update from gpgme.
	* m4/libassuan.m4: Update from libassuan.

2022-10-25  Werner Koch  <wk@gnupg.org>

	Post release updates

2022-10-13  Werner Koch  <wk@gnupg.org>

	Release 2.5.5

2022-09-19  Andre Heinecke  <aheinecke@gnupg.org>

	Fix IMAP access to encrypted mails
	* src/mapihelp.cpp (parse_header_data): Do not treat anything
	except -1 as an error.

2022-09-06  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump
	* NEWS, configure.ac: bump.

	Auto update po files
	* po: Update.

	Update NEWS for todays release
	* NEWS: Update.

2022-09-05  Andre Heinecke  <aheinecke@gnupg.org>

	Silenze annoying debug message
	* src/oomhelp.cpp (get_pa_string): Do not print that null
	is not a type for empty return values.

	Delete temporary enc file if it exists
	* src/common.cpp (DeleteFileUtf8): New.
	(CreateFileUtf8): SetLastError to avoid having it for conversions.
	Do not share delete to avoid problems with attachments.
	(get_tmp_outfile): Try to delete existing files.
	Fix switch to attachment.dat.
	Add error message on failure.

2022-08-26  Andre Heinecke  <aheinecke@gnupg.org>

	Update german translation
	* po/de.po: New translations.

	Add string for gnupg.com bug report page
	* po/*: Auto update translations.
	* src/addin-options.cpp: Add new string.

	Fix compliance string encodings
	* src/common.cpp (de_vs_name): Fix default names for vs-nfd
	encoding.
	(compliance_string): Fix encoding for complicance string.

2022-08-25  Andre Heinecke  <aheinecke@gnupg.org>

	Add another sender fallback
	* src/oomhelp.h, src/oomhelp.cpp (get_sender_primary_send_acct): New.
	* src/mail.cp (Mail::updateOOMData_o): Use the fallback.

2022-08-24  Andre Heinecke  <aheinecke@gnupg.org>

	Update german translation and fix öschl wording
	* po/de.po: Update

2022-08-23  Andre Heinecke  <aheinecke@gnupg.org>

	Remove overly verbose debug output
	* src/common.cpp (readRegStr): Remove dbg output.

	Allow setting HKLM values as override for config
	* src/common.cpp (readRegStr): Look into HKLM first and
	force values that end with an exclamation mark.

	Fix lookup location for gpg-wks-client for VSD
	* src/wks-helper.cpp (get_wks_client_path): Also look in GnuPG subdir.

2022-08-12  Werner Koch  <wk@gnupg.org>

	po: Minor grammar fix for the German translation

2022-08-01  Andre Heinecke  <aheinecke@gnupg.org>

	Abort header parsing on invalid headers
	* src/rfc822parse.c (insert_header): Return -1 on invalid header.
	* src/mapihelp.cpp (parse_header_data): Handle rfc822_insert abort.

2022-07-13  Andre Heinecke  <aheinecke@gnupg.org>

	Check autoimport for unencrypted mails too
	* src/mail.cpp (Mail::preProcessMessage_m): Add check for autoimport
	before importing.

2022-04-20  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Update NEWS for todays release
	* NEWS: Update.

2022-03-10  Andre Heinecke  <aheinecke@gnupg.org>

	Fix double free in create_category
	* src/oomhelp.cpp (create_category): Do not free Variant value
	before VariantClear.

2022-02-09  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Auto update po files
	* po: update

	Update NEWS for todays release

2022-02-03  Andre Heinecke  <aheinecke@gnupg.org>

	Handle encryption of attachs without MAPI obj
	* src/mail.cpp (Mail::add_attachments_o): Store references
	to our attachments.
	(Mail::updateOOMData_o): Handle MAPIOBJECT null value.

	Autoselect draft enc key if set to auto
	* src/cryptcontroller.cpp (CryptController::resolve_keys): Auto select
	draft encryption key if the value is "auto".
	* src/main.cpp (write_options): Write draft_key.

	Clear selection after closing draft
	* src/mailitem-events.cpp (CLOSE): Call clear selections after
	closing  a draft.
	* src/oomhelp.cpp, src/oomhelp.h (oom_clear_selections): New.

	Fix spurious BUG debug output
	* src/mail.cpp (Mail::encryptSignStart_o): Do not register
	pending op.

	Fix draft re-encryption on close
	* src/mail.cpp (Mail::updateOOMData_o): Reset pass write after
	write in case the mail stays open after encryption.
	* src/mailitem-events.cpp (BeforeAutoSave): Fix draft encryption
	for autosave.
	* NEWS: Mention this.

2022-02-02  Andre Heinecke  <aheinecke@gnupg.org>

	Fix draft re-encryption
	* src/mailitem-events.cpp (WRITE): Start encrypt_sign for draft
	re-encryption.

2021-12-01  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Update NEWS for todays release

	Auto update po files
	* po/*: Auto update.

2021-11-11  Andre Heinecke  <aheinecke@gnupg.org>

	Improve ReadAsPlain detection
	* src/common.cpp, src/common.h (read_reg_bool): New helper.
	* src/gpgoladdin.cpp (check_html_preferred): Factor out
	registry code and check also in policies.

	Do not abort if updating HTML Body fails
	* src/mail.cpp (Mail::updateBody_o): Do not abort when
	updating HTML Body fails.

	Fix fallback logic in set_body
	* src/mail.cpp (set_body): Fix logic for fallback if setting
	html and plain fails.

	Use explicit extern declaration for opt struct
	* src/common_indep.c: Define opt.
	* src/common_indep.h: Declare opt as extern for C, too.

	Avoid using bultin gettext function name
	* src/common.h (_): Define to w32_gettext.
	* src/w32-gettext.cpp, src/w32-gettext.h (gettext): Rename
	to w32_gettext.

	Ignore deprecated copy warnings
	* configure.ac (CXXFLAGS): Add -Wno-deprecated-copy

2021-06-11  Andre Heinecke  <aheinecke@gnupg.org>

	Enable sync encryption again
	* src/main.c (read_options): Always use sync enc again.

	Post release version bump

	Auto update po files

	Update NEWS for todays release

	Remove own attachments when encrypting again
	* src/mail.cpp (Mail::updateOOMData_o): Remove our own attachments.
	(Mail::removeOurAttachments_o): Hide attachment remove warning.

2021-06-11  Werner Koch  <wk@gnupg.org>

	po: Tweaked the German version of a warning box

2021-06-11  Andre Heinecke  <aheinecke@gnupg.org>

	Auto update po files

	Bump version to 2.5.0
	* configure.ac: Version bump

	Mask PR_SECURITY_FLAGS check
	* src/mail.cpp (Mail::prepareCrypto_o): Only check for the first
	two bits.

2021-03-19  Andre Heinecke  <aheinecke@gnupg.org>

	Update protected headers structure
	* src/mail.cpp (Mail::buildProtectedHeaders_o): Update MIME
	part.
	(Mail::splitAndSend_o): Handle BCC split with protected
	headers.
	* src/mimedataprovider.cpp (MimeDataProvider::finalize): Improve
	parsing of headers.
	* src/mimemaker.cpp (write_part, add_body): Do not inject headers.
	(add_body_and_attachments): Do protected headers handling here.
	* src/recipientmanager.cpp (RecipientManager::isSplitByProtcol):
	Prepare API for protocol splits.

	This uses a more robust way by adding a mime part for the
	protected headers instead of injecting it in an exisiting mime
	part.

	GnuPG-Bug-Id: T4858

2021-02-01  Andre Heinecke  <aheinecke@gnupg.org>

	Add error handling and closing for split mails
	* src/cryptcontroller.cpp (CryptController::do_crypto): Use
	new copyParent to detect copy. Unregister op after triggering
	split.
	* src/mail.cpp (Mail::Mail): Use m_copy_parent and accessors instead
	of boolean is_split_copy.
	(do_crypt): Abort /register pending ops.
	(Mail::setSplitCopy): Replace by Mail::copyParent.
	* src/windowmessages.cpp (invoke_send_bottom): Send invocation
	after all crypto jobs are complete.
	(gpgol_window_proc): Add tracking of pending and ready ops.
	(wm_unregister_pending_op): New. Allow to unregister single
	op.
	(wm_abort_pending_ops): Add dbg output and reset recipients
	of parent.
	* src/windowmessages.h (wm_unregister_pending_op): Add prototype.

2021-01-28  Andre Heinecke  <aheinecke@gnupg.org>

	Implement BCC splits of Mails
	* src/common.h (ERR_SPLIT_UNEXPECTED, ERR_SPLIT_RECIPIENTS): New
	bug codes.
	* src/cryptcontroller.cpp (CryptController::do_crypto): Do not resolve
	again for split copies.
	* src/mail.cp (do_crypt): Call dummy pending op abort.
	(getKeysForProtocol, Mail::splitCopyMailCallback): Removed. Now
	done in RecipientManager
	(Mail::splitAndSend_o): Reworked to be iterative.
	* src/oomhelp.cpp (set_oom_recipients): Clear out old recipients
	when setting new ones.
	* src/recipientmanager.cpp (RecipientManager::RecipientManager):
	Handle signing keys.
	* src/windomessages.cpp (wm_register_pending_op, wm_abort_pending_ops):
	New dummies.

2021-01-27  Andre Heinecke  <aheinecke@gnupg.org>

	Use RecipientManager in CryptController
	* src/cryptcontroller.cpp (CryptController::do_crypto): Use
	RecipientManager to decide if mail should be split.

	Add RecipientManager class
	* src/recipientmanager.cpp, recipientmanager.h: New.
	* src/Makefile.am: Add it.

	Add isNull for Recipient objects
	* src/recipient.cpp, src/recipient.h (Recipient::isNull): New.

	Fix displayname for recipients without name
	* src/recipient.cpp: Only use brackets if there is a display
	name that differs from the address.

	Avoid callbacks to track copied mail object
	* src/cryptcontroller.cpp (CryptController::do_crypto): Extend
	comment.
	* src/mail.cpp (g_mail_copy_triggerer): Remove.
	(Mail::setAdditionalReference): Helper to track the copy IDispatch
	object together with the ItemLoad IDispatch object.
	(Mail::copy): Change to avoid g_mail_copy_triggerer logic.
	(Mail::splitAndSend_o): Use new copy.
	(Mail::searchMailsByUUID): New. Find mail objects by uuid.

	Add reset parameter to set uuid
	* src/mail.cpp (Mail::setUUID_o): Add reset parameter.

	Add new unique id helpers
	* src/oomhelp.cpp, src/oomhelp.c (get_unique_id_s, reset_unique_id):
	New.

2021-01-22  Andre Heinecke  <aheinecke@gnupg.org>

	Fix tracking of opened contact settings
	* src/addressbook.cpp (open_keyadder): Correctly erase
	the closed contact settings from the list of opened contacts.

2021-01-08  Andre Heinecke  <aheinecke@gnupg.org>

	Merge branch 'STABLE-BRANCH-2-4'

	po: Auto update po files

	Update for 2.4.10

	Fix passing keys for encryption
	* src/cryptcontroller.cpp (CryptController::lookup_fingerprints):
	Do not pop back now that we don't add the last NULL key.

2021-01-07  Andre Heinecke  <aheinecke@gnupg.org>

	Update NEWS for todays release

	Merge branch 'async-enc2'

	po: Update german translation

	po: Auto update po files

	Update news for gpgol-2.4.9

	Do not add a full keylist if no key is selected
	* src/cryptcontroller.cpp (CryptController::lookup_fingerprints):
	Handle the case no key is selected for a recipient.

	Minor fix to a localized string
	* src/addin-options.cpp: Fix a sentence end marker.

2021-01-06  Andre Heinecke  <aheinecke@gnupg.org>

	Fix draft encryption for async crypt in OOM
	* src/mail.cpp (Mail::checkSyncCrypto_o): Disable async for
	draft encryption.
	* src/mailitem-events.cpp: Do not cancel write because crypto
	is now done synchronously.

2021-01-05  Andre Heinecke  <aheinecke@gnupg.org>

	Handle protected-headers also on multipart parts
	* src/mimedataprovider.cpp (t2body): Also check for
	protected headers on multipart mails.

	Another statename change

	Unify WantsSend states to CryptFinished

	Change crypto state names to be descriptive

	Remove NeedsFirstAfterWrite state
	* src/mail.h (CryptState): Remove NeedsFirstAfterWrite
	* src/mailitem-events.cpp (Write, AfterWrite): Disable
	crypto copy code for now. As we encrypt differently now.

	Fix broken encryptSignStart invocation.
	* src/mail.cpp (Mail::updateOOMData_o): Set passing the
	write for the SaveAs. Advance state to needs actual crypt.
	* src/mailitem-events.cpp: Start the encryption explicitly.

	Minor change of a debug statement
	* src/mailitem-events.cpp: Use new debug macro.

2020-12-11  Andre Heinecke  <aheinecke@gnupg.org>

	Log early if a mail is read only
	* src/mapihelp.cpp (mapi_change_message_class): Log when
	a message might be read only but continue anyway.

2020-12-09  Andre Heinecke  <aheinecke@gnupg.org>

	Support ms-tnef attachments for embedded OL items
	* src/attachment.cpp (Attachment::Attachment): Fall back to
	save_as_file when attachment is not available in oom.
	* src/mimemaker.cpp (infer_content_type): Infer ms-tnef for .msg
	attachments.

	Do not write empty content-id tags
	* src/mimemaker.cpp (write_attachments): Fix writing content-id.

	Improve temporary file naming
	* src/common.cpp (get_tmp_outfile): Fix counting up the filename.

	Add helper to read a file into GpgME::Data
	* src/common.cpp, src/common.h (readFullFile): New. Read a file
	into memory.
	(CreateFileUtf8): Add to header.

	Add oom_save_as_file helper
	* src/mail.cpp (Mail::updateOOMData_o): Use new enum.
	* src/oomhelp.h (oomSaveAsType): Add enum.
	* src/oomhelp.cpp (oom_save_as_file): New.

	Do not set empty Content ID values
	* src/mail.cpp (fixup_last_attachment_o): Do not set empty content
	ids.

2020-12-07  Andre Heinecke  <aheinecke@gnupg.org>

	Change encryption to work on OOM
	* src/attachment.cpp (Attachment::Attachment(LPDISPATCH)): New.
	Construct an in memory representation of an attachment object.
	(Attachment::get_file_name): New, sometimes it differs from
	display name.
	(Attachment::copy_to): Move logic here from mail.cpp
	(Attachment::olAttachmentType): New enum.
	* src/cryptcontroller.cpp (CryptController::collect_data): Move
	out attachment handling. Use new data from mail object.
	* src/mail.cpp (copy_attachment_to_file): Moved into attachment
	class.
	(Mail::updateOOMData_o): Collect data of attachments, write
	out mail to tmp file to do serialization.
	(Mail::checkSyncCrypto_o): For now disable sync for attachments.
	(Mail::isMultipartRelated): New. Moved from mimemaker.
	(Mail::plainAttachments): New data object to carry attachment data.
	* src/mailitem-events.cpp (SEND): Directly encrypt. Don't wait
	for AfterWrite.
	* src/main.c (read_options): Remove syncEnc override.
	* src/mimemaker.cpp (write_attachments): Use mail object.
	(add_body_and_attachments): Use mail object.

	Add OOM SaveAs helper
	* src/oomhelp.cpp, src/oomhelp.h (oom_save_as. utf8_tp_bstr): New.

	Add helper for utf8 tmp name
	* src/common.cpp (get_tmp_outfile_utf8): New.

	Switch some data debugging statements to log_debug
	* src/mimedataprovider.cpp: Change some log_data to log_debug.

2020-12-03  Andre Heinecke  <aheinecke@gnupg.org>

	Fix multipart/encrypted and signed preview
	* src/parsecontroller.cpp (ParseController::parse): Use fresh
	output on second pass.

	Add mssing initializer
	* src/common_indep.h (struct autocrypt_s): Initialize exists.

2020-12-02  Andre Heinecke  <aheinecke@gnupg.org>

	Fix preview for multipart/signed pgp mails
	* src/parsecontroller.cpp (ParseController::parse): On second
	pass parsing only verify.

	po: Auto update po files

	Actually add it.po file to git
	* po/it.po: Add it.

	Add human readable debug output for "NO DATA"
	* src/parsecontroller.cpp (ParseController::parse): Add debug
	output in the human readable error message for no data error.

	Add new S_ i18n macro for std::string
	* po/Makefile.in.in: Add S_ as keyword.
	* src/cpphelp.h: Define it.

	Rename string_printf to asprintf_s

2020-12-01  Andre Heinecke  <aheinecke@gnupg.org>

	Read compliance name from libkleopatrarc
	* src/common.cpp (de_vs_name, compliance_string): New.
	* src/common.h: Update prototypes.
	* src/cpphelp.cpp, src/cpphelp.h: Move de_vs_code into
	common.
	* src/mail.cpp (Mail::prepareCrypto_o, Mail::getCryptoDetails_o):
	Use new helper functions.

	Add gpgrt based std::string printf function
	* src/cpphelp.cpp, src/cpphelp.h (string_printf): New.

	Unify icons for OpenPGP and S/MIME
	* src/olflange.cpp (install_forms): Remove old forms.
	* forms/gpgol-form-signed-smime-opaque.cfg,
	forms/gpgol-form-smime.cfg: Remove.
	forms/gpgol-*.cfg: Use Outlook style icon.

2020-11-30  Andre Heinecke  <aheinecke@gnupg.org>

	Add oomhelper for folder picker
	* src/oomhelp.cpp (oApp): New. Shorthand to get outlook
	Application object.
	(show_folder_select): Show a folder selection dialog based
	on the Outlook object model.

2020-11-20  Andre Heinecke  <aheinecke@gnupg.org>

	Add option to disable the S/MIME efail security
	* src/common_indep.h (opt): Add option.
	* src/mailitem-events.cpp (REPLY/FORWARD/REPLYALL): Check
	for new option.
	* src/main.c (read_options): Read new config option.

	Post release bump

	Fix configure.ac version number
	* configure.ac: Define version to 2.4.8, 2.4.7 was released.

	Auto: Update PO files

	Update NEWS for todays release

	Fix parser unit test build

	Fix doubled attachment warning because preview
	* src/mail.cpp (checkAttachments_o): Disable check if the
	attachments already come from us.

	po: Add it to linguas
	* po/LINGUAS: Add it.

2020-11-18  Andre Heinecke  <aheinecke@gnupg.org>

	Only restore orig body when it is not empty
	* src/mail.cpp (Mail::updateBody_o): Restore original
	body only after failed verification if body is not empty.

2020-11-17  Andre Heinecke  <aheinecke@gnupg.org>

	Use a fresh output for second pass verify
	* src/parsecontroller.cpp (ParseController::parse): Use fresh
	output for second verify.

	Fix parsing of multipart/signed with one part
	* src/mimedataprovider.cpp: Check for nesting level if main
	part is multipart.

2020-09-04  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Auto: Update l10n

	Fix release date

	Reduce version to 2.4.7

	Update NEWS for todays release

	Enforce sync_enc option
	* src/main.c (read_options): Always enable sync_enc.

2020-08-14  Andre Heinecke  <aheinecke@gnupg.org>

	Constify get_tmp_outpath
	* src/common.cpp (get_tmp_outpath): Const.

	w64: Use alternate regview instead of ifdefed keys
	* src/common.cpp (_read_regStr): Use alterative view
	for HKCU, too.
	* src/common_indep.h (GPG4WIN_INSTDIR): Remove ifdefed names.

2020-07-22  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Update NEWS for todays release

	po: Update po files and german

	Disable BCC split by default
	* src/main.c (read_options): Disable BCC split by default.

2020-07-14  Andre Heinecke  <aheinecke@gnupg.org>

	Improve handling for disallowed filenames
	* src/common.cpp (get_tmp_outfile): Use a generic name after
	50 tries.

	Put BodyFormat before setting the body
	* src/mail.cpp (Mail::decryptVerify_o, set_body),
	(Mail::updateBody_o): But BodyFormat before setting body.

2020-06-29  Bernhard Reiter  <bernhard@intevation.de>

	Improve German translation strings.
	 * correct a few upper lower case spelling and other small improvements
	   that got noticed in the vicinity.

2020-06-05  Andre Heinecke  <aheinecke@gnupg.org>

	Remove other content-headers when setting the type
	* src/mapihelp.cpp (mapi_set_content_type): Remove
	all content- headers.

	Fallback to text/plain if no ct could be parsed
	* src/mail.cpp (permanentlyDecrypt_o): Fallback to text plain.

	Collect top content-type when parsing a mail
	* src/mail.cpp (Mail::parsingDone_o): Store ct.
	* src/mail.h (m_dec_content_type): New member variable.
	* src/mimedataprovider.cpp (t2body): Set content type.
	(MimeDataProvideR::get_content_type),
	(MimeDataProvideR::set_content_type): New.
	* src/mimedataprovider.h: Update accordingly.
	* src/parsecontroller.cpp, src/parsecontroller.h
	(ParseController::get_content_type): New.

2020-06-04  Andre Heinecke  <aheinecke@gnupg.org>

	Fix message headers when permanently decrypting
	* src/mail.cpp (Mail::decryptPermanently_o): Remove content type.
	* src/mapihelp.cpp (mapi_set_transport_headers),
	(mapi_set_content_type): New.

	Globally remove trailing whitespace

	Add gui experiment code
	* src/gpgoladdin.cpp (GetCustomUI_MIME): Add some code to override
	Outlooks internal buttons.

2020-06-03  Andre Heinecke  <aheinecke@gnupg.org>

	Show info when gpgol is in conflict with ol
	* src/mail.cpp (Mail::prepareCrypto_o): Check the
	Outlook crypto flags and show warning.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (SEND): Abort when
	prepareCrypto_o returns a value.

	Fix send abort
	* src/mailitem-events.cpp (SEND): Reset crypter after
	abort to allow another try later.

	Add helper to get outlooks crypto flags
	* src/oomhelp.cpp, src/oomhelp.h (get_oom_crypto_flags): New.

	Fix variant type of property accessor int
	* src/oomhelp.cpp (put_pa_int): The type for
	property accessor ints is VT_I4.

	Fix Level 2 validity for WKD keys
	* src/mail.cpp (Mail::updateSigstate): Fix validity for signed
	mails with keys from WKD.

2020-05-27  Andre Heinecke  <aheinecke@gnupg.org>

	Add accessor to hidden "Dirty" property
	* src/oomhelp.cpp (get_oom_dirty, put_oom_dirty): New.
	* src/oomhelp.h: Update accordingly.

	Add helper to put a byte array into OOM
	* src/oomhelp.cpp (put_oom_array): New.
	* src/oomhelp.h: Update accordingly.

	Accept input from older keyresolver
	* src/cryptcontroller.cpp (CryptController::lookup_fingerprints): Allow
	for no mbox.

	Minor formatting fix

	Change message format to HTML when RTF
	* src/mail.cpp (updateCryptOOM_o): Change RTF to HTML

2020-05-26  Andre Heinecke  <aheinecke@gnupg.org>

	Also learn about smartcards for OpenPGP
	* src/keycache.cpp (do_populate_smartcards): Add support for
	OpenPGP.
	(do_populate): Also call do_populate_smartcards for OpenPGP.

2020-05-25  Andre Heinecke  <aheinecke@gnupg.org>

	Fix two memleaks in mapihelp
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): Ensure
	that table is released on all return paths.

	Fix invalid memdbg error
	* src/windowmessages.cpp (WM_AFTER_MOVE): Note that mapi_message
	needs to be released.

2020-05-19  Andre Heinecke  <aheinecke@gnupg.org>

	Fix attachment warning for mails from file
	* src/oomhelp.cpp (count_visible_attachments): Don't count attachments
	without a MAPIOBJECT

2020-05-18  Andre Heinecke  <aheinecke@gnupg.org>

	Fix reply crypt for opened mails with sign default
	* src/mailitem-events.cpp (Open): Do not override reply settings
	with option crypto settings.

	Cleanup duplicated and confusing code
	* src/mailitem-events.cpp (REPLY): Only set draft info once
	and reduce confusing logic.

	Remove not working and unused code
	* src/mail.cpp, src/mail.h (is_reply_to_crypto_mail): Remove.

2020-05-15  Andre Heinecke  <aheinecke@gnupg.org>

	At least remove mail from print set when closing
	* src/mail.cpp (Mail::close): Remove mail from print set.

	Change print detection
	* src/application-events.cpp (ItemLoad): Log print.
	* src/mail.cpp (Mail::checkIfMailMightBePrinting_o): Use a
	global map.

	Add an introspection oom object dump func
	* src/oomhelp.cpp (get_object_name_s): Handle NULL better.
	(oom_dump_idispatch): Introspect a bit.

	Add simple way to check if we are in TOFU mode
	* src/keycache.cpp (KeyCache::useTofu): New.
	(KeyCache::setConfig): Check for trust model tofu.
	* src/parsecontroller.cpp (ParseController::parse): Only update
	key in offline mode when TOFU is used.

	Only update key after verify if we are online
	* src/parsecontroller.cpp (ParseController::parse): Do not update
	key in offline mode.

	Check if a mail is deleted after preview
	* src/mail.cpp (do_parsing): Add saveguard.

	Fix second pass parsing of enc + sig S/MIME mails
	* src/parsecontroller.cpp (ParseController::ParseController): Add
	new state variable.
	(ParseController::parse): On second pass only verify CMS data.

	Fix a trace return

2020-05-14  Andre Heinecke  <aheinecke@gnupg.org>

	Show preview of contents of mails earlier
	* src/keycache.cpp (do_populate): Also cache the current config.
	(get_cached_config, KeyCache::setConfig): New.
	(KeyCache::protocolIsOnline): Check if an operation might require
	an online connection.
	* src/mail.cpp (Mail::add_attachments_o): Only add attachments
	once.
	(do_parsing): Handle preview.
	(Mail::decryptVerify_o): Insert verify placeholder for
	multipart signed with body.
	(Mail::updateBody_o): Handle preview.
	(Mail::parsingDone_o): Rename to make it clear that its OOM based.
	Handle preview.
	(Mail::isSMIME): Add non MAPI variant.
	(Mail::getOriginalBody): New accessor.
	(ParseController::parse): Add offline mode.
	(gpgol_window_proc): New. SHOW_PREVIEW message.
	* tests/run-parser.cpp (main): Use offline mode.

2020-05-08  Andre Heinecke  <aheinecke@gnupg.org>

	Improvde sender resolution
	* src/mail.cpp (Mail::updateOOMData_o): If both sender and
	sendusingaccount can be resolved check if we have have a
	key for sender and use that.

	Log when we ignore data
	* src/mimedataprovider.cpp (t2body): Log when we don't collect.

2020-05-06  Andre Heinecke  <aheinecke@gnupg.org>

	Avoid ignoring unusual data in tnef strucutres
	* src/mimedataprovider.cpp (t2body): Do not require
	nesting for attachments.

2020-03-20  Andre Heinecke  <aheinecke@gnupg.org>

	Skip OpenPGP keys when looking for S/MIME
	* src/keycache.cpp (do_populate_smartcards): Skip OpenPGP keys.

	Add string starts_with helpers
	* src/cpphelp.cpp (starts_with): New.
	* src/cpphelp.h: Update accordingly.

	Automatically learn keys from smartcards
	* src/keycache.cpp (do_populate_smartcards)
	(gpgagent_transact, gpgsm_learn): New.

2020-03-10  Andre Heinecke  <aheinecke@gnupg.org>

	Don't allow setting a keys for distrib. lists
	* src/ribbon-callbacks.cpp (is_addr_book_enabled): Disable
	for everything but contacts.

	Additional get_object_name helper
	* src/oomhelp.cpp, src/oomhelp.h (get_object_name_s): Add an
	overload to avoid compile errors when passing a shared_disp_t

	Enable / Disable Address book button dynamically
	* src/explorer-events.cpp (changeSeen): Always invalidate
	in Address book view.
	* src/ribbon-callbacks.h, src/ribbon-callbacks.cpp
	(get_is_addr_book_enabled): New.

	Add helper to get a std::string object name
	* src/oomhelp.cpp (get_object_name_s): New.

	Add UI code to open gpgolkeyadder from explorer
	* src/gpgoladdin.cpp (GetCustomUI_MIME): Add code for
	contacts view in explorer.

	Make address book callback work with Explorer, too
	* src/riboon-callbacks.cpp (open_contact_key): Add code
	to handle beeing called from explorer.

	GnuPG-Bug-Id: T4874

	Track opened contacts in Addressbook
	* src/addressbook.cpp (open_keyadder, Addressbook::edit_key_o):
	Track opened Contacts by entry id.

	Add some shared_disp_t helper functions
	* src/oomhelp.cp, src/oomhelp.h: (get_oom_object_s),
	(get_oom_int_s)
	(get_oom_string_s): Make the most important oom helper
	work with shared dispatchers.

2020-02-06  Andre Heinecke  <aheinecke@gnupg.org>

	Add additional passed headers in mimemaker
	* src/mimemaker.cpp (write_part): Add added_headers.
	(add_body): Pass protected headers as added_headers.

	Rebuild WKS Confirmation mail to pass it to gpg
	* src/common-indep.h (header_info_s): Declare new struct.
	* src/mail.cpp (Mail::preProcessMessage_m): Parse headers for
	unencrypted messages.
	(Mail::decryptVerify): Parse headers for encrypted mails.
	(Mail::parseHeaders_m): New helper to parse headers.
	(Mail::buildProtectedHeaders_o): New.
	(Mail::setProtectedHeaders): New.
	(Mail::protectedHeaders, Mail::headerInfo): New accessors.
	* src/mapihelp.cpp (ac_get_value): Fix some dbg output.
	(mapi_get_header_info): Change to use header_info_s.
	* src/mapihelp.h: Update accordingly.
	* src/mimemaker.cpp, src/mimemaker.h (utf8_to_rfc2047b): Make
	public.
	* src/mimemaker.h: Add missing include.
	* src/oomhelp.cpp (try_resolve_group): Add name to recipient.
	(get_oom_recipients_with_addrEntry): Add name.
	* src/Recipient.cpp, src/Recipient.h: Add name and displayName
	handling.
	* src/wks-helper.cpp (WKSHelper::handle_confirmation_read):
	Rebuild mime structure for WKS Mails.

	Fix detection of WKS Confirmation mails
	* src/mapihelp.cpp (change_message_class_ipm_note): Check
	here, too.

	Improve dbg output a bit

	Add find_and_replace from mail to cpphelp
	* src/cpphelp.cpp: find_and_replace new.
	* src/cpphelp.h: Update accordingly.

	Add dummy option to encrypt subject
	* src/common_indep.h (opt): Add encryptSubject.
	* src/main.c (read_options): Read it.

2020-01-31  Andre Heinecke  <aheinecke@gnupg.org>

	Implement multi mail sending for a crypto op
	* src/cryptcontroller.cpp (CryptController::do_crypto): Return
	after key resolution if multiple mails are needed.
	* src/mail.cpp (g_mail_copy_triggerer): New. Helper to find
	our Mail object in the event loop of the copied message.
	(Mail::Mail): Initialize new state variables.
	(Mail::preProcessMessage_m): Return early for copied mails.
	(do_crypt): Reset recipients on key resolution error.
	(Mail::updateOOMData_o): Handle explicitly set recipients.
	(Mail::updateOOMData_o): Add sender as a recipient in our
	internal data.
	(Mail::setRecipients): Allow to set the recipients for a mail.
	(Mail::updateCryptOOM_o): Reset recipients on error.
	(Mail::setSigningKeys): Renamed from Mail::setSigningKey
	to handle multiple signing keys.
	(Mail::getSigningKeys): Accessor.
	(Mail::copy): New. Copy a mail and return the copied IDispatch.
	(getKeysForProtocol): Helper around some cryptic c++.
	(Mail::splitCopyMailCallback_o): New. Main function to handle
	splitting of mails.
	(Mail::splitAndSend_o): Split out other mails and send the
	mail.
	(Mail::resetCrypter): Move definition out of header.
	(Mail::resetRecipients): Clear out recipients and set keys.
	(Mail::setSplitCopy, Mail::isSplitCopy): New.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (Write): Detect if the written mail
	is a copy and handle it accordingly.
	(ReadComplete): Log it.
	* src/windowmessages.cpp, src/windowmessages.h (SEND_MULTIPLE_MAILS)
	(SEND): New callbacks.

	Fix cryptcontroller handling of resolved mails
	* src/cryptcontroller.cpp (CryptController::CryptController): Take
	signing keys from mail.
	(CryptController::lookup_fingerprints): Fix erase.
	(CryptController::lookup_fingerprints): Call resolving_done.
	(CryptController::resolving_done): Rename from prepare_encryption
	to avoid confusion.
	(CryptController::get_resolved_protocol): Check and obtain the
	protocol for a crypto operation.
	(CryptController::is_resolved): Add more debug info.
	(CryptController::resolve_keys): Handle the case in which
	we are already resolved.

	Add opts splitBCCMails and combinedOpsEnabled
	* src/common_indep.h (opts): Add new options.
	* src/main.c (read_options): Read the new options.

	Add new oom helper functions for recipients
	* src/oomhelp.cpp, src/oomhelp.h (remove_oom_recipient),
	(set_oom_recipients): New.

	Add little oom method helper for single int
	* src/oomhelp.cpp, src/oomhelp.h (invoke_oom_method_with_int): New.

	Collect index info when resolving recipients
	* src/oomhelp.cpp (get_oom_recipients_with_addrEntry): Collect
	index info.

	Extend recipient data with index and dbg helper
	* src/recipient.cpp, src/recipient.h (Recipient::setIndex)
	(Recipient::index, Recipient::dump): New.

	Add new debug macros
	* src/debug.h (log_dbg, log_err): New Macros as shorthand
	for the SRCNMAE __func__ we use.

2020-01-28  Andre Heinecke  <aheinecke@gnupg.org>

	Use recipient objects in kleo based lookup, too
	* src/cryptcontroller.cpp (CryptController::lookup_fingerprints):
	Extend to take mbox as an argument and signign keys as list.
	(CryptController::parse_output): Parse mbox from resolver
	return.
	* src/cryptcontroller.h: Update accordingly.

	Change cryptcontroller to track recipients
	This adds Recipient tracking for the internal key resolution.
	It is prepared for OpenPGP S/MIME mixing but is also required
	for improved BCC handling. For:

	GnuPG-Bug-Id: T4814

	Add small help wrapper to get single addr key
	* src/keycache.cpp (KeyCache::getEncryptionKeys): New

2020-01-27  Andre Heinecke  <aheinecke@gnupg.org>

	Add recipient class to carry key and type
	* src/Makefile.am: Add new source files.
	* src/addressbook.cpp (Addressbook::check_o): Adapt to new API.
	* src/cryptcontroller.cpp, src/cryptcontroller.h:
	Use recipient class. Rename m_recipients to m_enc_keys.
	* src/debug.h: Add missing include.
	* src/keycache.cpp (KeyCache::isMailResolvable): Adapt to new API.
	* src/mail.cpp (Mail::getRecipients_o, Mail::getCachedRecipients):
	Use Recipients Objects.
	(Mail::getCachedRecipientAddresses): New, helper to get only mbox
	strings.
	(Mail::setSigningKey): New helper.
	(Mail::m_resolved_signing_key): New. Can carry a resolved key.
	* src/oomhelp.cpp (try_resolve_group): Handle type, too.
	* src/oomhelp.cpp (get_oom_recipients),
	(get_oom_recipients_with_addrEntry): Use Recipient objects.
	* src/wks-helper.cpp (WKSHelper::handle_confirmation_read): Adapt
	to new API.

2020-01-20  Bernhard Reiter  <bernhard@intevation.de>

	Code style (minor): fix typo in comment

2020-01-16  Andre Heinecke  <aheinecke@gnupg.org>

	Improve protected headers handling
	* src/mail.cpp (Mail::updateHeaders_o): New. Handle data from
	protected headers.
	(Mail::parsing_done): Call updateHeaders.
	* src/mimedataprovider.cpp: Check for protected headers
	version.
	(t2body): Handle that a part with protecteded headers might
	also be data.
	(MimeDataProvider::collect_input_lines): Collect potential
	legacy part into a helper buffer.
	(get_header): New helper.
	(MimeDataProvider::finalize): Check for legacy part and
	handle protected headers.
	(MimeDataProvider::get_protected_header): New helper.
	* src/oomhelp.cpp (invoke_oom_method_with_string): New helper.
	* src/parsecontroller.cpp (get_internal_subject): Replace with
	get_protected_header.

2020-01-09  Andre Heinecke  <aheinecke@gnupg.org>

	Tune down an error message to a warning
	* src/debug.h (log_warn): new Macro.
	* src/gpgoladdin.cpp (GpgolAddin::get_instance): Only warn
	if instance is gotten when shutting down.

2019-12-20  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Update NEWS for todays release

	Don't try to revert mail after close succeeded
	* src/mail.cpp (Mail::closeAllMails_o): If the
	close succeded don't try to revert the mail.

	Fix potential crash on close
	* src/mail.cpp (Mail::closeAllMails_o): Check if
	Mail is still valid after inspector close.

2019-12-16  Andre Heinecke  <aheinecke@gnupg.org>

	Fix check for plain text attachments
	* src/mail.cpp (Mail::checkAttachments_o): Use
	count_visible_attachments.
	(Mail::close): Fix safeguard check.
	* src/oomhelp.cpp (count_visible_attachments): New.
	* src/oomhelp.h: Add prototype.

2019-12-13  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Auto update po files

	Silence a too nosy trace on large mails

	Enable File -> SaveAs also for mails in window
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames)
	(GpgolRibbonExtender::Invoke)
	(GetCustomUI_MIME): Add new command and wire it up.
	* src/mail.cpp (Mail::checkAttachments_o): Add safeguard
	not to warn about our own mime structure.
	(Mail::close): Ignore hidden attachments in check.
	* src/ribbon-callbacks.cpp (override_file_save_as):
	Add check for inspector context and handle it differently.
	(override_file_save_as_in_window): New.
	* src/ribbon-callbacks.h: Update accordingly.

	Post release version bump

	Auto update german po file

	Update NEWS for todays release

	Fix some strings and add german translations
	* po/de.po: translate.
	* src/mail.cpp (Mail::add_attachments_o): Fix error msg.

	Auto update po files

2019-12-10  Andre Heinecke  <aheinecke@gnupg.org>

	Add a missing value initialization
	* src/mapihelp.cpp (mapi_get_header_info): Initialize
	value of autocrypt.exists.

	Improve error handling when adding attachments
	* src/mail.cpp (Mail::add_attachments_o): Collect
	errors and show a nice message.
	* src/oomhelp.cpp (add_oom_attachment): Return
	error codes, too.

	Add comment about read only checks / errors
	* src/mail.cpp (Mail::preProcessMessage_m): Add a comment.

2019-12-03  Andre Heinecke  <aheinecke@gnupg.org>

	Auto update po files

	Fix utf8 message extration
	* po/Makefile.in.in: Add utf8_gettext as keyword.

2019-12-02  Andre Heinecke  <aheinecke@gnupg.org>

	Auto update de.po with formatting

2019-11-14  Andre Heinecke  <aheinecke@gnupg.org>

	Update german translation

	Auto update po files

2019-11-11  Andre Heinecke  <aheinecke@gnupg.org>

	Restore S/MIME class after close
	* src/folder-events.cpp (BeforeMove): Do not restore
	the message in close as it has its own code with different
	target folder.
	* src/mail.cpp (Mail::close): Add new parameter restoreSMIMEClass
	to restore the S/MIME message class after close.

	Fixup bodyformat after decrypt / verify
	* src/mail.cpp (Mail::decryptVerify_o): Update body format.
	(set_body): New. Helper for all the format fallbacks with
	body format.
	(updateBody_o): Use set_body.

	Handle option to always show approval dialog
	* src/common_indep.h (alwaysShowApproval): New option.
	* src/cryptcontroller.cpp (CryptController::resolve_keys):
	Handle it.
	* src/main.c (read_options): Read it.

	Add strings for new config option
	* src/addin-options.cpp (i18n_noops): Add new strings.

2019-10-30  Andre Heinecke  <aheinecke@gnupg.org>

	Fix double release in error handling
	* src/mail.cpp (get_attachment_stream_o): Return after mapi_attachment
	release.

2019-10-29  Andre Heinecke  <aheinecke@gnupg.org>

	Revert "Remove hidden attachments in OOM"
	This reverts commit 8fe7ead789806ccfbab5e690a7e747a6bf8aa393.

2019-10-28  Andre Heinecke  <aheinecke@gnupg.org>

	Remove hidden attachments in OOM
	* src/mail.cpp (Mail::parsing_done): Call remove_hidden_attachments_oom
	* src/oomhelp.cpp, src/oomhelp.h (remove_hidden_attachments_oom): New.

	Improve error handling for large messages
	* src/mail.cpp (add_attachments_o): Move into class and
	handle error with a message.
	* src/mail.h: Update accordingly.
	* src/oomhelp.cpp, src/oomhelp.h (add_oom_attachment): Optionally
	return the exception description.

	Merge remote-tracking branch 'dutch-l10n/dutch'

	Fix encoding of crypto overlays
	* src/cryptcontroller.cpp (CryptController::resolve_keys):
	Fix overlay text encoding.

2019-10-24  Erwin Bronkhorst  <erwinbronkhorst@gmail.com>

	Update Dutch translations

2019-10-04  Andre Heinecke  <aheinecke@gnupg.org>

	Restore msg class for S/MIME after move
	* src/folder-events.cpp (BeforeMove): Prepare information
	needed after move when the mail object is gone and send
	the AFTER_MOVE window message.
	* src/windmessages.h (AFTER_MOVE): New event.
	(wm_after_move_data_t): New.
	* src/windowmessages.cpp (AFTER_MOVE): Restore message class
	from data.

2019-10-03  Andre Heinecke  <aheinecke@gnupg.org>

	Restore S/MIME message class after decrypt
	* src/folder-events.cpp (BeforeMove),
	src/mail.cpp (closeAllMails_o),
	src/mail.h (close), src/mailitem-events.cpp (Close),
	src/windowmessages.cpp (gpgol_window_proc): Close is no longer static.
	* src/mail.cpp (Mail::decryptVerify_o): Restore message class in
	decrypt verify and save the mail to be sure.
	(Mail::parsing_done): Minor style fix.
	(Mail::close): Put back gpgol class on close for move.
	* src/mailitem-events.cpp (PropertyChange): Ignore message class
	changes and fix debug output.

2019-09-11  Andre Heinecke  <aheinecke@gnupg.org>

	Handle an error return in get_object_name
	* src/oomhelp.cpp (get_object_name): Handle return of
	query interface.

2019-07-14  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Auto update po files

	Update NEWS for todays release

	Add safeguard against plaintext leaks after close
	* src/mail.cpp (Mail::close): Add saveguards against plaintext
	leaks.

	Ensure passNextWrite is reset after passing it
	* src/mailitem-events.cpp (Write): After passing a
	write because of passNextWrite ensure that it is set back.

	Fix mail display when plaintext opt changes in run
	* src/gpgoladdin.cpp (check_html_preferred): Export.
	* src/gpgoladdin.h: Add prototype.
	* src/mail.cpp (decryptVerify_o): check_html_preferred for each
	decrypt.

	Print sigsum if in debug when invalid
	* src/parsecontroller.cpp (is_valid_checksum): Print sigsum.

2019-06-15  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Auto update PO files

	Update NEWS for todays release

2019-06-11  Andre Heinecke  <aheinecke@gnupg.org>

	Do not show attachment warning when printing
	* src/mail.cpp (Mail::parsing_done): Silently remove
	unencrypted attachments.

	Add silent mode to checkAttachments
	* src/mail.cpp (Mail::checkAttachments_o): Add silent mode
	to silently fixup the attachments which are bad.
	* src/mail.h: Update accordingly.

	Remove "Print decrypted" action
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames): Remove
	printDecrypted mapping.
	(GpgolRibbonExtender::Invoke): Remove print_decrypted mapping.
	(GetCustomUI_MIME): Remove custom print action.
	* src/ribbon-callbacks.cpp (print_decrypted): Remove.
	* src/ribbon-callbacks.h: Update accordingly.

2019-06-07  Andre Heinecke  <aheinecke@gnupg.org>

	Add a better comment about the save as
	* src/ribbon-callbacks.cpp (override_file_save_as): Add better comment.

	Implement File->SaveAs for crypt mail
	* src/application-events.cpp: Ignore next ItemLoad if
	ignore next load is true.
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames): Map
	overrideFileSaveAs.
	(GpgolRibbonExtender::Invoke): Call override_file_save_as.
	(GetCustomUI_MIME): Override FileSaveAs.
	* src/gpgoladdin.h: Add a global g_ignore_next_load.
	* src/ribbon-callbacks.cpp (override_file_save_as): Set the
	variable and then pass the event along.
	* src/ribbon-callbacks.h (override_file_save_as): Declare.

	Improve some debug output
	* src/gpgoladdin.cpp (GpgolRibbonExtender::Invoke): Switch
	to log_oom and add commented out params analysis code.

	Add introspection debug code for variants
	* src/oomhelp.cpp (format_variant, format_dispparms): Add debug
	functions to print variant information.

	Also do not print categories in quick print
	* src/mail.h (updateCategories_o): Make public.
	* src/ribbon-callbacks.cpp (print_decrypted): Remove categories
	before print and add them after.

	Implement printing from the file menu
	* src/application-events.cpp (BeforePrint): Note down that
	a before print was seen.
	(ItemLoad): If a BeforePrint was seen. Mark the mail.
	* src/mail.cpp (setIsPrint, isPrint, m_printing): New state.
	(Mail::decryptVerify_o): Do not do async decryption when printing.
	Check for childs of print mails.
	(Mail::updateCategories_o): Do not set categories for prints.
	(Mail::checkIfMailIsChildOfPrintMail_o): Check if the currently
	decrypting mail is actually a print.

	Use ApplicationEvents_11 Interface
	* src/application-events.cpp (BeforePrint): New value.
	(END_EVENT_SINK): Use ApplactionEvents_11.
	* src/oomhelp.h: Define ApplactionEvents_11 ID.

2019-06-04  Andre Heinecke  <aheinecke@gnupg.org>

	Revert "Only use IPM.Note.SMIME.MultipartSigned for SMIME"
	This reverts commit 7323a82d1f8d548b85eb1c4cf7cd1e0c0224c246.

2019-06-03  Andre Heinecke  <aheinecke@gnupg.org>

	Post release version bump

	Remove leftover dbg output with bad w64 format
	* src/keycache.cpp (filter_chain): Remove a dev debug output.

	Use correct version number in configure.ac
	* configure.ac: Bump version.

	Update NEWS for todays release

	Update NEWS for 2.4.0
	* NEWS: Update.

	Auto update po files

	Correct a confusing debug message
	* src/mapihelp.cpp (mapi_change_message_class): Clarify.

	Increase bufsize and linebuf size for broken MUAs
	* src/mimedataprovider.cpp (BUFSIZE, LINEBUFSIZE): Increase.

	Only use IPM.Note.SMIME.MultipartSigned for SMIME
	* src/mimemaker.cpp (finalize_message): Always use
	MultipartSigned.

	Add debug output for exchange version
	* src/oomhelp.cpp (get_ex_major_version_for_addr): Add debug
	output.

	Only set IPM.Note.SMIME on Exchange 2016 and later
	* src/cryptcontroller.cpp (CryptController::update_mail_mapi):
	Pass exchange major version.
	* src/mimemaker.cpp (finalize_message): Add exchange_major_version
	param and handle it.

2019-05-28  Andre Heinecke  <aheinecke@gnupg.org>

	Always pass write in NeedsFirstAfterWrite state
	* src/mailitem-events.cpp (Write): Pass write for
	NeedsFirstAfterWrite.

	Fix T3656 workaround for encrypted S/MIME
	* src/mailitem-events.cpp (Send): Fix msg class check.

	Fix moving / closing S/MIME mails with attachments
	* src/mail.cpp (Mail::close): Save changes after close
	to fix T4525

	Add accessor for msgtype
	* src/mail.h (Mail::msgtype): New.

	Fix refcount error in rare error handler
	* src/oomhelp.cpp (get_oom_object): Do not release pStart on
	error.

	Use unquoted content id for related attachments
	* src/mail.cpp (fixup_last_attachment_o): Use unquoted cid.

	Saveguard against related attachment hiding
	* src/mail.cpp (fixup_last_attachment_o): Search for
	cid in html body before setting it.

	Fix forwarding of plain text mails with CID attachs
	* src/mimemaker.cpp (add_body_and_attachments): Handle non
	related case better.
	(write_attachments): Do not filter attachments with CID in
	non related case.

	Improve debug output for attachment handling
	* src/mapihelp.cpp (mapi_create_attach_table): Debug attach
	method and type.
	* src/mimemaker.cpp (write_attachments): Log when attachments
	are skipped.

	Fix double free in error handler
	* src/mailitem-events.cpp (Send): Fix double free in error handler.

2019-05-20  Andre Heinecke  <aheinecke@gnupg.org>

	Handle multipe valid secret keys better
	* src/keycache.cpp (compareSkeys): New.
	(setPgpKeySecret, setSmimeKeySecret): Use it.

	Change S/MIME Message Class handling
	* src/olflange.cpp (install_forms): Register new icons
	* src/mimemaker.cpp (finalize_message): Use SMIME for encryption.
	* src/revert.cpp (gpgol_mailitem_revert): Use standard classes.
	* src/mapihelp.cpp (change_message_class_ipm_note_smime)
	(change_message_class_ipm_note_secure_cex)
	(string_to_type)
	(mapi_change_message_class): Split up MultipartSigned and
	SM.MultipartSigned

	Use similar S/MIME icons as Outlook
	* forms/Makefile.am: Add new files.
	* encr-s-smime.ico, encr-s-yellow.xcf, ribbon-red.xcf,
	sign-s-smime.ico, gpgol-form-signed-smime.cfg,
	gpgol-form-signed-smime-opaque.cfg, gpgol-form-encrypted-smime.cfg:
	New.

	Fix dangerous memdbg pattern
	* src/mapihelp.cpp (is_really_cms_encrypted)
	(get_first_attach_mime_tag, mapi_create_attach_table)
	(mapi_get_attach, mapi_mark_moss_attach): Use memdbg_addref after
	error checking.

2019-05-08  Andre Heinecke  <aheinecke@gnupg.org>

	Update german translation
	* po/de.po: Translate new strings

	Auto update po files
	* po/*: Update

2019-05-06  Andre Heinecke  <aheinecke@gnupg.org>

	Only autosecure when seckey found for CMS
	* src/keycache.cpp (isMailResolvable): If the prefer smime
	option is selected only autosecure if there is a secret CMS cert.

	Fix T3656 workaround activation
	* src/mailitem-events.cpp (Send): Do not activate T3656 workaround
	for non-info path form msg class.

	Fix locale of opened dialogs
	* src/w32-gettext.cpp (_nl_locale_name): Check UI language only
	once.

	Fix some draft encrypt sending issues
	* src/mailitem-events.cpp (Send): Ensure draft mark is removed.
	(Write): Only start draft encrypt on No crypt mails.
	(AfterWrite): Release current item on error.

	Add S/MIME Addressbook integration
	* src/addressbook.cpp (parse_output): New. Move the more
	complex output parsing out.
	(open_keyadder): Add --cms option. Send CMS certificates, too.
	(Addressbook::update_key_o): Fix mem leak of user_props on error.
	Add handling for CMS / SMIME.
	(Addressbook::edit_key_o): Add handling for CMS.
	(Addressbook::check_o): Add handling for CMS.
	* src/addressbook.h (callback_args_t): Extend for cms.
	* src/cryptcontroller.cpp (CryptController::resolve_keys): Add
	overrides and args for SMIME.
	* src/keycache.cpp (filter_chain): New. Helper to filter non leaf
	certificates.
	(do_update, getOverrides, onAddrBookImportJobDone, importFromAddrBook):
	Handle S/MIME.
	* src/keycache.h: Update accordingly.

	Change addr book ribbon icon to "settings"
	* src/gpgoladdin.cpp (GetCustomUI): Fix strings for
	the new "settings" functionality.

	Add note about IPM.Note.SMIME in mimemaker
	* src/mimemaker.cpp (finalize_message): Add a note.

	Add new strings for config and keyadder
	* src/addin-options.cpp (I18N_NOOPS): Add new strings.

2019-05-02  Andre Heinecke  <aheinecke@gnupg.org>

	Ensure proto is always set for draft encryption
	* src/cryptcontroller.cpp (CryptController::resolve_keys): Handle
	protocol of draft encryption key.

	Do not start draft encryption while sending
	* src/mailitem-events.cpp (Write): Do not
	start draft encryption if encryption is already in
	progress.

	Use IPM.Note.SMIME.MultipartSigned again
	* src/mimemaker.cpp (finalize_message): Use standard form
	for S/MIME.

	Bump GPGME dependency to 1.13.0
	* configure.ac: Bump GPGME dependency.

	Add strings for S/MIME addr book config
	* src/addin-options.cpp: Add new strings for the keyadder dialog.

	Bump c++ std to 14
	* src/Makefile.am: Use -stdc++14

2019-04-12  Andre Heinecke  <aheinecke@gnupg.org>

	Add new strings for the config dialog
	* src/addin-options.cpp (i18n_noops): Add new string.
	* po/*: update.

	Prefer Outlook language over environment
	* src/w32-gettext.cpp (_nl_locale_name): Give highest
	preference to the Outlook language.

	Fix typo in decrypt permanently action

	Make default folder selection account sensitive
	* src/oomhelp.cpp (is_mail_in_folder): Use the parent folder
	store to check for the default folder.

	Decrypt again after a draft was closed
	* src/mail.cpp (m_decrypt_again, isDecryptAgain, setDecryptAgain):
	New state variable.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (BeforeRead): Schedule
	decrypt if a closed mail was before read again.
	(Close): Mark closed drafts for potential decrypt again.
	* src/windowmessage.cpp, src/windowmessages.h (DECRYPT): New.

	Don't complain about empty drafts
	* src/cryptcontroller.cpp (CryptController::collect_data):
	Don't complain for drafts.

	Don't take base message for drafts
	* src/cryptcontroller.cpp (CryptController::collect_data): Use
	message instead of base message.

	Add safety check for reordered attachments
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): When
	there are two MOSS attachments check for content_type.

	Improve propchange debug output
	* src/mailitem-events.cpp (PropertyChange): Log the mail pointer
	not the message pointer.

	Factor out activeInlineResponse in own function
	* src/mail.cpp (Mail::isActiveInlineResponse_o): New. checks
	if a mail is the inline response.
	(Mail::checkSyncCrypto_o): New. Explicitly checks if sync
	crypto is needed.
	* src/mail.h: Update accordingly.

2019-04-11  Andre Heinecke  <aheinecke@gnupg.org>

	Explicitly note when close is passed for drafs
	* src/mailitem-events.cpp (Close): Debug when close
	is passed because of draft status.

	Pass crypto mails through write depending on state
	* src/mailitem-events.cpp (Write): Pass encrypted mails
	when the state is Mail::WantsSendMIME.

	Allow sending of decrypted crypto mails
	* src/mailitem-events.cpp (Send): Decrypt mails before
	sending if no crypto was requested.

	Fix detection of async / sync encryption
	* src/mail.cpp (Mail::prepareEncrypt_o): Move check_inline_response
	to the top as this determines the async / sync state.

	Add for_encryption parameter to updateOOMData
	* src/mail.cpp (Mail::updateOOMData_o): Add for_encryption parameter.
	(Mail::prepareEncrypt_o): Use it.

	Do not store modified drafts if decrypt failed
	* src/mailitem-events.cpp (BeforeAutoSave, Write): Do
	not allow writes if decryption failed.
	* src/mail.cpp (decryptedSuccessfully): New helper.

	Allow property changes for encrypted drafts
	* src/mailitem-events.cpp (PropertyChange): Pass changes
	for drafts.

2019-04-10  Andre Heinecke  <aheinecke@gnupg.org>

	Initial handling for edits on encrypted drafts
	* src/mail.cpp (Mail::updateOOMData_o): Cache body for
	drafts, too.
	* src/mailitem-events.cpp (Write): Encrypt drafts again on write.
	(Close): Let Outlook ask for "want to save changes" for drafts.

	Fix deadlock on synchronous encrypt
	* src/mail.cpp (do_crypt): Release lock in case sync
	encrypt for drafts finished.

	Ensure draft encrypt state is reset on error
	* src/mail.cpp (do_crypt): On error remove draft encrypt
	marker.

	Add helper function "is_draft_mail"
	* src/oomhelp.cpp (is_draft_mail): New.
	(is_mail_in_folder): New. factored out from is_junk_mail.

	po: Fix a mislabling in german l10n

	Do not reset draft info for drafts
	* src/cryptcontroller.cpp (CryptController::update_mail_mapi):
	Pass isDraftEncrypt to finalize message.
	* src/mimemaker.cpp (finalize_message): Do not remove draft info
	for drafts.

	minor: Add a missing return to improve dbg output

	Add SentOnBehalfOfName to ignored prop changes
	* src/mailitem-events.cpp (prop_blacklist): Add SentOnBehalfOfName.

	Add initial draft encryption support
	* src/common_indep.h (opt): Add option draft_key.
	* src/cryptcontroller.cpp (CryptController::resolve_keys): Handle
	draft and resolve to draft key.
	(CryptController::do_crypto): Don't sign draft encrypts.
	* src/mail.cpp (Mail::Mail): New state variable for drafts.
	(do_crypt): Handle draft encryption.
	(Mail::encryptSignStart_o): Disable inline pgp for drafts.
	(Mail::updateCryptOOM_o): Don't wipe but trick Outlook when
	encrypting drafts.
	(Mail::prepareCrypto_o): New. Factored out from send event.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (BeforeAutoSave): New. Start
	encryption.
	(Write, AfterWrite): Add handling for drafts.
	* src/main.c (read_options): Read draftKey and draftEnc.
	* src/windowmessages.cpp (CRYPTO_DONE): Handle drafts.

	Silence a too verbose trace
	* src/cryptcontroller.cpp (sink_data_write): Do not trace each call.

2019-04-09  Andre Heinecke  <aheinecke@gnupg.org>

	Print maip error on OpenProperty error
	* src/oomhelp.cpp (gpgol_openProperty): Print out mapi error.

2019-04-08  Andre Heinecke  <aheinecke@gnupg.org>

	Add MAPI error codes and helpers
	* src/mapierr.cpp, src/mapierr.h: New.
	* src/mymapi.h: Include it.
	* src/Makefile.am: Add it to sources.

2019-03-27  Andre Heinecke  <aheinecke@gnupg.org>

	Fix crash when looking at messages without attachs
	* src/mapihelp.cpp (mapi_get_first_attach_data): Do not crash
	if message has no attachments.

	Fix content-type detection for headerless mails
	* src/mapihelp.cpp (mapi_get_message_content_type):
	Check first attachment if mail has no headers.

2019-03-26  Andre Heinecke  <aheinecke@gnupg.org>

	Replace fancy attribute by comment
	* src/mailitem-events.cpp: Change attribute fallthrough to magic
	comment.

	Post release version bump

	Fix distcheck
	* tests/Makefile.am: Check for TESTS should have been inverted.

	Auto update po files

	Update NEWS for todays release

	Fix / improve decrypting sent exchange mails again
	* src/mail.cpp (Mail::preProcessMessage_m): Also pass the
	parsed_message.
	* src/mapihelp.cpp (hide_attachment_mapipos): New helper.
	(mapi_mark_or_create_moss_attach): Take parsed msg as
	additional parameter. Improve MOSSTMPL handling.

	Ensure that decrypt again uses preprocessing
	* src/windowmessages.cpp (EXT_API_DECRYPT): call
	pre process message.

	Update pt translations
	* po/pt.po: Update.

2019-03-25  Andre Heinecke  <aheinecke@gnupg.org>

	Fix a message box encoding error
	* src/cryptcontroller.cpp (CryptController::parse_output): Use
	UTF-8 gettext.

	Minor string improvement

	Auto update po files
	* po/*: Update

	Print warning when unsupported attachs are found
	* po/POTFILES.in: Add mimemaker.
	* src/mimemaker.cpp (count_usable_attachments): Also count
	OLE and embedded.
	(write_attachments): Print warning in case such an attach
	was found.
	(add_body_and_attachments): Forward error.

	Take attachment display name if filename null
	* src/mapihelp.cpp (get_attach_filename): Check DISPLAY_NAME
	as a fallback.

2019-03-19  Andre Heinecke  <aheinecke@gnupg.org>

	Add filenames for our mime parts
	* src/cryptcontroller.cpp (create_sign_attach): Add file name
	for signatures.
	* src/mimemaker.cpp (create_top_encryption_header): Add file name
	for OpenPGP encrypted.
	* src/mimemaker.h: Add defines for filenames.

2019-03-18  Andre Heinecke  <aheinecke@gnupg.org>

	Log if DBG_TRACE is set
	* src/main.c (read_options): Log if DBG_TRACE is set.

	MAPI look into tnef attachments to detect protocol
	* src/mapihelp.cpp (mapi_get_first_attach_data): New.
	(change_message_class_ipm_note_smime): Remove ms-tnef handling.
	Add multipart/signed protocol support for smime.
	Warn if encrypted fallback is used.
	(change_message_class_ipm_note_smime_multipartsigned): Remove
	ms-tnef handling.
	(parse_header_data): New helper factored out form
	(mapi_get_message_content_type): Handle ms-tnef wrapping.

	Add the generic MSGTYPE_SMIME in isSMIME_m
	* src/mail.cpp (Mail::isSMIME_m): Add MSGTYPE_SMIME.

	Fix a false positive memdbg warning
	* src/mapihelp.cpp (get_first_attach_mime_tag): Note the
	ref on mapitable.

	Do not allow decrypt permanently in case of errors
	* src/mail.cpp (Mail::decryptPermanently_o): Do not
	allow this in case an error occured.

	Get / Show Diagnostic audit log after crypt failed
	* src/cryptcontroller.cpp (CryptController::do_crypto):
	Return audit log if available.
	* src/cryptcontroller.h: Update accordingly.
	* src/mail.cpp (do_crypt): Check for audit log and show
	if available.

	Use localized seperator for categories
	* src/categorymanager.cpp (CategoryManager::getSeperator): New.
	* src/oomhelp.cpp (remove_category, add_category): Use it.

	Expose readRegStr in common.h
	* src/common.h (readRegStr): Add prototype.

2019-03-14  Andre Heinecke  <aheinecke@gnupg.org>

	Split enable / disable window into two functions
	* src/mail.cpp (Mail::enableWindow, Mail::disableWindow_o): New.
	* src/mail.h: Update accordingly.

2019-02-27  Andre Heinecke  <aheinecke@gnupg.org>

	Reduce spammy trace output
	* src/mapihelp.cpp (parse_headers_cb): Don't trace.

	Fix decrypt permanently category removal
	* src/mail.cpp (Mail::decryptPermanently_o): Remove
	categories before removing the crypto state.

	Add debug output to show if S/MIME was detected
	* src/mail.cpp (Mail::isSMIME_m): Print detected state.

	Add code to print out keycache inserts
	* src/keycache.cpp: Add default off code to print keycache inserts.

2019-02-22  Andre Heinecke  <aheinecke@gnupg.org>

	Add decrypt permanently feature
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames),
	(GpgolRibbonExtender::Invoke),
	(GetCustomUI_MIME): Add decrypt permanently.
	* src/mail.cpp (Mail::decryptPermanently_o): New.
	* src/ribbon-callbacks.cpp (decrypt_permanently): Wire up.

	Add new mapi helpers for decrypt permanently
	* src/mapihelp.cpp (mapi_delete_gpgol_tags): New. delete
	our tags.
	(mapi_set_message_class): Explicitly set a message class.

	Fix encoding of protected header subject
	* src/mimedataprovider.cpp (MimeDataProvider::finalize): Parse
	the subject through rfc2047

2019-02-21  Andre Heinecke  <aheinecke@gnupg.org>

	Add minimalistic protected-headers support
	* src/mail.cpp (Mail::parsing_done): Update subject if one
	was taken from a protected header.
	* src/mailitem-events.cpp (prop_blacklist): Ignore subject related
	changes.
	* src/mimedataprovider.cpp (t2body): Handle protected headers.
	(MimeDataProvider::finalize): Convert subject to a string.
	(MimeDataProvider::get_internal_subject): New.
	* src/parsecontroller.cpp (ParseController::get_internal_subject):
	New accessor.
	* src/parsecontroller.h, src/mimedataprovider.h: Update accordingly.

	Read autocrypt header for autoimport
	* src/common_indep.h (autocrypt_s): Data transfer struct.
	* src/keycache.cpp (KeyCache::import_pgp_key_data): Fix and
	add more debugging.
	* src/mail.cpp (Mail::preProcessMessage_m): Check for autocrypt
	headers even on non crypto mails.
	(Mail::decryptVerify_o): Parse autocrypt header for crypto mails.
	* src/mapihelp.cpp (get_message_content_type_cb): Renamed
	to parse_headers_cb.
	(ac_get_value): New helper.
	(prepare_key_data): New helper.
	(mapi_get_header_info): General function for additional header info.
	* src/mapihelp.h: Update accordingly.
	* src/parsecontroller.cpp (handle_autocrypt_info): New helper.
	(ParseController::parse): Handle autocrypt info on demand.
	* src/parsecontroller.h: Update accordingly.

	Add cast to MAKE_SHARED macro
	* src/oomhelp.h (MAKE_SHARED): Cast to IDispatch.

	Add whitespace removal helper to cpphelp
	* src/cpphelp.cpp, src/cpphelp.h (remove_whitespace): New.

	Minor string fix
	* src/addin-options.cpp: Remove period at the end of an option.

	Fix crash when sending encrypted mail
	* src/cryptcontroller.cpp (CryptController::update_mail_mapi):
	Check if att_table exists before accessing it.

	Cleanly remove gpgol_sigstatus
	* src/mapihelp.cpp (get_gpgolsigstatus_tag),
	(mapi_has_sig_status, mapi_test_sig_status, mapi_get_sig_status)
	(mapi_set_sig_status): Removed.
	(mapi_change_message_class): Dont mark non crypto messages.
	* src/mimemaker.cpp (finalize_message restore_msg_from_moss):
	Do not set sigstatus.

2019-02-11  Andre Heinecke  <aheinecke@gnupg.org>

	Handle autoimport for attached pgp keys
	* src/keycache.cpp (KeyCache::import_pgp_key_data): New.
	* src/keycache.h: Update accordingly.
	* src/parsecontroller.cpp (ParseController::parse): Check for
	pgp-keys attachments and import them.

	Implement auto encrypt untrusted
	* src/keycache.cpp (getEncryptionKeys): Handle new option.

	Add / parse new automation options
	* src/common_indep.h (opt): Add new fields.
	* src/main.c (read_options): Read them.

	Store content-type for attachments
	* src/attachment.cpp (get_content_type, set_content_type): New.
	* src/mimedataprovider.cpp (create_attachment): Set it.
	* src/attachment.h: Update accordingly.

	Fix syntax error
	* src/addin-options.cpp: Fix syntax.

	Fix implicit fallthrough warnings
	* src/application-events.cpp: Fix unintentional fallthrough from
	QUIT.
	* src/mailitem-events.cpp: Mark reply fallthrough as intentional.

	Use better names for our own attachments
	* src/mapihelp.h (MIMEATTACHFILENAME, PGPBODYFILENAME): Use
	better file names.

	Add strings for new config options
	* src/addin-options.cpp: Add new strings.

2019-01-14  Andre Heinecke  <aheinecke@gnupg.org>

	Fix forwarding of sent mails
	* src/cryptcontroller.cpp (CryptController::update_mail_mapi):
	Remove an existing MOSSTMPL if available.

	Fix minor typo

2019-01-09  Andre Heinecke  <aheinecke@gnupg.org>

	Fix tooltip for bad signature
	* src/mail.cpp (Mail::getCryptoDetails_o): Handle bad signature
	explicitly.

2019-01-07  Andre Heinecke  <aheinecke@intevation.de>

	po: Auto update po files

	Merge remote-tracking branch 'dutch-l10n/dutch'

	Add translators comment
	* src/mail.cpp (Mail::updateCategories_o): Add comment to clarify
	string.

2019-01-03  Erwin Bronkhorst  <erwinbronkhorst@gmail.com>

	Update Dutch translation

2018-11-26  Andre Heinecke  <aheinecke@intevation.de>

	Fix two memdbg refcount errors
	* src/mapihelp.cpp (is_really_cms_encrypted): Fix references.

	Avoid use of error msg class "IPM.Note.GpgOL"
	* src/mapihelp.cpp (change_message_class_ipm_note_secure_cex),
	(change_message_class_ipm_note_smime): Use OpaqueEncrypted
	rather then IPM.Note.GpgOL.
	(mapi_change_message_class): Change old IPM.Note.GpgOL mails.

2018-11-19  Andre Heinecke  <aheinecke@intevation.de>

	Initalize pointer in mapi_get_header
	* src/mapihelp.cpp (mapi_get_header): Initialize stream.

	Check for error in dbg decrated oom funcs
	* src/oomhelp.cpp (gpgol_openProperty, gpgol_queryInterface):
	Check result before calling memdbg_addRef.

2018-11-13  Andre Heinecke  <aheinecke@intevation.de>

	Fix log_addins and use it to log all addins
	* src/mailitem-events.cpp (Read): call log_addins once.
	* src/oomhelp.cpp (log_addins): Fix by invoking directly.

2018-11-12  Andre Heinecke  <aheinecke@intevation.de>

	Post release Version bump

	Update NEWS for todays release

	Fix l10n encoding in category manager
	* src/categorymanager.cpp: Use utf8 gettext.

	Update german translation
	* po/de.po: Translate new S/MIME warning.

	Auto update po files

	Improve string for unsigned S/MIME reply
	* src/mailitem-events.cpp: Improve string for unsigned
	S/MIME reply.

2018-11-09  Andre Heinecke  <aheinecke@intevation.de>

	Disable async crypt for mails without subject
	* src/mail.cpp (Mail::check_inline_response): Disable also
	for empty subject.

	Add explicit decrypt as WindowMessage handler
	* src/mail.cpp (decryptVerify_o): Remove obsolete safeguard
	against double decryption.
	* src/windowmessages.cpp (EXT_API_DECRYPT): Add new command.

	Pass write for closed mails
	* src/folder-events.cpp (Invoke): Set is now implicit in close.
	* src/mail.cpp: Change isAboutToBeMoved to passWrite.
	(decryptVerify_o): Stop passing write when processing.
	* src/mailitem-events.cpp (Write): Pass it when a mail was closed
	by us.

	Override file close cmd to trigger shutdown
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames)
	(GpgolRibbonExtender::Invoke): Hookup override.
	(GetCustomUI_MIME): Override File->Close command.
	* src/ribbon-callbacks.cpp (override_file_close): New.
	* src/ribbon-callbacks.h: Update accordingly.

2018-11-08  Andre Heinecke  <aheinecke@intevation.de>

	Minor debug output improvements

	Revert "Add InspectorEvents experiment"
	This reverts commit db8f468e0462f2a4d600b41f8dd0e6b4135d38fa.

	Add InspectorEvents experiment

	Add some NEWS

	Use WM_USER without offset for ext messages
	* src/windowmessages.cpp,
	tests/run-messanger.cpp: Use WM_USER without offset.

	Add tracing in shutdown
	* src/gpgoladdin.cpp (GpgolAddin::shutdown): Add tracing.

	Set validate keylist mode for keycache
	* src/keycache.cpp (do_populate_protocol): Add validate option.

	Fix 64bit format error
	* src/windowmessages.cpp (gpgol_window_proc): Fix message id.

	Add external API with WindowMessages
	* src/windowmessages.cpp: Handle new messages.
	* src/windowmessagees.h: Add new codes.
	* tests/Makefile.am: Update accordingly.
	* tests/run-messenger.cpp: New.

2018-11-06  Andre Heinecke  <aheinecke@intevation.de>

	Update POTFILES and po files and de.po

	Fix infographic url
	* src/ribbon-callbacks.cpp (launch_cert_details): Fix url.

	Add junk mail handling
	* src/categorymanager.cpp (getJunkMailCategory): New.
	* src/mail.cpp (Mail::decryptVerify_o): Handle junk.
	* src/mail.h (Mail::m_is_junk): New.

2018-11-05  Andre Heinecke  <aheinecke@intevation.de>

	Add junk/spam mail folder detection
	* src/oomhelp.cpp, src/oomhelp.h (is_junk_mail): New.

	Fix tests build for different gpgmepp prefix
	* tests/Makefile.am: Add GPGME_CXXFLAGS to CXXFLAGS.

2018-10-30  Andre Heinecke  <aheinecke@intevation.de>

	Fix Linux build of tests
	* src/common_indep.c: Include wchar.h
	* src/cpphelp.cpp (in_de_vs_mode): use strcasecm
	(get_registry_subkeys): Make conditional.
	* src/cpphelp.h: Update accordinlgy.
	* src/debug.cpp: Fix unused errors and do locking.
	* src/parsecontroller.cpp (ParseController::parse): Remove unused
	warning.
	* tests/Makefile.am: Add definitions for linux

	Minor style improvement in run-parser output
	* tests/run-parser.cpp (main): Add some newlines.

2018-10-29  Andre Heinecke  <aheinecke@intevation.de>

	tests: Add repeats option to parser runner
	* tests/run-parser.cpp: Add repeats option.

	Initialize memory to X on trace + memdbg
	* src/xmalloc.h (xmalloc): Initialize memory to X on debug
	level.

	Fix off by one in iconv_to_utf8
	* src/mlang-charset.cpp (iconv_to_utf8): Inlen needed
	to include the zero.

	Enable building tests for windows
	* src/debug.cpp: Use platform indepentent gpgrt_locks.
	* src/main.c (initialize_main): Drop mutex init.

2018-10-25  Andre Heinecke  <aheinecke@intevation.de>

	Populate keycache on startup
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete): Populate
	keycache.
	* src/keycache.cpp (KeyCache::populate, do_populate)
	(do_populate_protocol): New.
	(KeyCache::getUltimateKeys): New.
	* src/mail.cpp (level_4_check): Use getUltimateKeys from cache.
	* src/parsecontroller.cpp, src/parsecontroller.h (get_ultimate_keys):
	Removed.

	Revert "Explicitly set real access key for reg too"
	This reverts commit bf4ab9a6d16869aa6083b10b54a77fc9b8b95b41.

	Explicitly set real access key for reg too
	* src/common.cpp (REAL_ACCESS): Define.

	Read HKLM fallback from cross registry view
	* src/addin-options.cpp (open-gpgolconfig): Do not pass w64 again.
	* src/common.cpp (CROSS_ACCESS): New define.
	(_readRegStr): Helper for readRegStr.
	(readRegStr): More explicit fallbacks.

	Use gpgrt_w32_iconv as fallback for mlang-charset
	* src/mlan-charset.cpp (ansi_charset_to_uf8): Use gpgrt
	as a fallback.

2018-10-24  Andre Heinecke  <aheinecke@intevation.de>

	Pass --w64 parameter to gpgolconfig
	* src/addin-options.cpp (open_gpgolconfig): Pass --64 on
	64 bit systems.

	Revert "Add temporary logging to readRegStr"
	This reverts commit 0ab051af6406cb877200f651ca23ebf1ead6482a.

	Revert "Addionally add outputdebugstring debugs"
	This reverts commit 56ea58e405b57dcc46f6e8a02dd8dca5a619ef31.

	Addionally add outputdebugstring debugs

	Add temporary logging to readRegStr
	* src/common.cpp (readRegStr): Add temporary verbose logging.

	Pseudonym some more without DBG_DATA
	* src/oomhelp.cpp (get_sender_SentRepresentingAddress):
	anonstr.
	* src/mimemaker.cpp (write_part): Anonstr filename.

2018-10-23  Andre Heinecke  <aheinecke@intevation.de>

	Only log raw crypto data if DBG_DATA is enabled
	* src/mimedataprovider.cpp (MimeDataProvider::collect_input_lines):
	Change a log_debug to log_data.

2018-10-22  Andre Heinecke  <aheinecke@intevation.de>

	Fix check for debug levels for string debug
	* src/w32-gettext.h (wchar_to_utf8, utf8_to_wchar): Fix enable_debug
	check.

	Fix HKLM fallback for config values
	* src/common.cpp (load_extension_value): Use read_w32_registry_string.
	(load_config_value, expand_path): Removed.

2018-10-16  Andre Heinecke  <aheinecke@intevation.de>

	Pass lang correctly to config dialog
	* src/addin-options.cpp (open_gpgolconfig): Pass lang.

	Post release version bump

	Auto update po files

	Update NEWS for todays release

	Do not try to import empty key data from addrbook
	* src/keycache.cpp (importFromAddrBook): Check if data
	is empty.

	Make address book lookup more robust
	* src/addressbook.cpp (Addressbook::update_key_o): Clear checked
	entries after update.
	(Addressbook::check_o): Only mark resolved contacts as checked.
	:xa

	Fix memleaks in new category code
	* src/categorymanager.cpp,
	src/oomhelp.cpp (get_store_for_id, delete_category): Fix leaks.

	Fix string alloc tracing
	* src/w32-gettext.h: Fix string alloc trace check

	Update po files and translate german

	Add signature info to verify category
	* src/categorymanager.cpp, src/categorymanager.h: New.
	* src/Makefile.am: Add it.
	* src/cpphelp.cpp, src/cpphelp.h (join): New.
	* src/gpgoladdin.cpp, src/gpgoladdin.h
	(Gpgoladdin::get_category_mngr): New.
	* src/mail.cpp (Mail::~Mail): Remove categories.
	(Mail::updateCategories_o): Use new code for categories.
	(Mail::storeID): New carry store info.
	* src/oomhelp.cpp (create_category): Fix dbg.
	(get_store_for_id): New helper.
	(ensure_category_exists): Remove need for appl.
	(remove_category): Rewrite to allow partial matches.
	(_delete_category): New helper.
	(delete_category): New. Delete a category.
	(delete_all_categories_starting_with): New.
	* src/oomhelp.h: Update accordingly.

	Minor indentation fix

2018-10-15  Andre Heinecke  <aheinecke@intevation.de>

	Pass address book overrides to keyresolver
	* src/cryptcontroller.cpp (CryptController::resolve_keys): Pass
	overrides.
	* src/keycache.cpp, src/keycache.h (KeyCache::getOverrides): Expose
	overrides directly.

	Add some new strings from the config dialog
	* src/addin-options.cpp (i18n_noops): Add / update
	config dlg strings.

	Pass preferred protocol to keyresolver
	* src/cryptcontroller.cpp (CryptController::resolve_keys): Pass
	preferred protocol.

2018-10-10  Andre Heinecke  <aheinecke@intevation.de>

	Update pt translation
	* po/pt.po: Update

2018-10-09  Andre Heinecke  <aheinecke@intevation.de>

	Make auto import from S/MIME keyserver default off
	* src/common_indep.h (opt.search_smime_servers): New.
	* src/main.c (read_options): Read it.
	* src/keycache.cpp (do_locate): Respect it.

	Import certs for s/mime autoresolve from keyserver
	* src/keycache.cpp (do_locate): Factor out S/MIME lookup.
	(get_extern_smime_keys): New.
	(get_local_smime_keys, get_most_valid_key_simple): Factored
	out from do_locate.

2018-10-08  Andre Heinecke  <aheinecke@intevation.de>

	Update german translation
	* po/de.po: Update.

	Auto update po files
	* po/*: Update.

	Trace parsing some more
	* src/parsecontroller.cpp (ParseController::parse): Trace
	some more.

	Tune down an error to an info
	* src/keycache.cpp (onUpdateJobDone): Tune down error to
	debug.

	Add new strings for config dialog debug page
	* src/addin-options.cpp (i18n_noops): Add new strings.

	Add lock tracing
	* src/debug.h (gpgol_lock, gpgol_unlock): Add tracing makros.
	* src/*.cpp: Use them.

	Revert "Show signer KeyID and UserID for valid mails"
	This reverts commit c186f2832294737ada9de6d23e466c106537676f.

	Use mail_map copies for all complex ops
	* src/mail.cpp (Mail::revertAllMails_o, Mail::wipeAllMails_o),
	(Mail::closeAllMails_o): Use copy of the mail map.

	Fix deadlock when selecting encrypt
	* src/mail.cpp (Mail::locateAllCryptoRecipients_o): Use a copy
	of the mail map instead of a locked instance.

	Add option to do decryption synchronously
	* src/common_indep.h (syncDec): New option.
	* src/main.c (read_options): Read it.
	* src/mail.cpp (do_parsing): Do not use windowmessage signaling
	for parsing done.
	(Mail::decryptVerify_o): Call the parser synchronously.

	Log configuration settings
	* src/common.cpp (load_extension_value): Log settings.

2018-10-01  Andre Heinecke  <aheinecke@intevation.de>

	Add tracing in keycache
	* src/keycache.cpp: Add tracing.

	Add specific option for auto-key-retrieve
	* src/common_inde.p (opt): Add it.
	* src/main.c (read_options): Read it.
	* src/parsecontroller.common_inde (ParseController::parse): Use it.

2018-09-28  Andre Heinecke  <aheinecke@intevation.de>

	Fix two encoding issues
	* src/ribbon-callbacks.cpp (launch_cert_details): Use MessageBoxW.

	Ignore Content-Id for Cnt-Disp: attachment
	* src/mimedataprovider.cpp (t2body): Ignore content-id.

	Improve attachment add debug output
	* src/mail.cpp (fixup_last_attachment_o): Add a non working
	experiment. Improve debugging.
	* src/oomhelp.h (PR_ATTACH_FLAGS_DASL): New.

	Fix error message in keycache lookup
	* src/keycache.cpp (do_update): Fix error / debug output.

	Ignore reads when shutdown was triggered
	* src/gpgoladdin.cpp (GpgolAddin::shutdown): Set state
	variable at begin of shutdown.
	* src/mailitem-events.cpp (BeforeRead): Ignore when
	shutting down.

	Fix potential crash in revert
	* src/revert.cpp (gpgol_mailitem_revert): Bail out if
	msg class is NULL.

2018-09-26  Andre Heinecke  <aheinecke@intevation.de>

	Show signer KeyID and UserID for valid mails
	* src/mail.cpp (Mail::updateSigFlag_o): Set the flag.
	(Mail::flagChangeTriggered): New helper to carry the state.
	(pretty_id): Helper to format a fingerprint / long keyid.
	* src/mailitem-events.cpp (PropertyChange): Ignore our
	own changes.

	Add sender name and repr name DASL
	* src/oomhelp.h: Add new defines.

2018-09-25  Andre Heinecke  <aheinecke@intevation.de>

	Fix potential deadlock in autosecure check
	* src/mail.cpp (autosecureCheck): Do not wait for
	the auto secure set to finish.

	Update de.po after auto msgfmt

	Update german localisation
	* po/de.po: Translate

	Auto update po file
	* po/*: update.

	Fix memdbg error for log_file
	* src/debug.cpp (set_log_file): Do not use memdbg decorated
	functions.

	Further simplyify log level values

	Only include conversion strings for DBG_DATA
	* src/w32-gettext.h: Guard debug output of all strings
	also with DBG_DATA.

	Add new strings for gpgolconfig and rename
	* src/addin-options.cpp: Renamed gpgolgui to gpgolconfig.
	We have more then one GUI application nowadays ;-)
	* src/addin-options.cpp: Added new strings for debug config.

	Fix mlang release after mlang error
	* src/mlang-charset.cpp (ansi_charset_to_utf8): Fix release.

	Fix a tracing regression
	* src/mapihelp.cpp (mapi_set_attach_hidden): Fix return scope.

	Reduce tracing verbosity a bit

	Merge remote-tracking branch 'dutch-l10n/dutch'

2018-09-24  Andre Heinecke  <aheinecke@intevation.de>

	Add tracing support for important code
	src/addressbook.cpp,
	src/application-events.cpp,
	src/cryptcontroller.cpp,
	src/debug.h,
	src/folder-events.cpp,
	src/mail.cpp,
	src/mailitem-events.cpp,
	src/mapihelp.cpp,
	src/mimedataprovider.cpp,
	src/oomhelp.cpp,
	src/parsecontroller.cpp,
	src/rfc2047parse.c,
	src/w32-gettext.h,
	src/windowmessages.cpp: Add tracing support.

	Improve debugging (e.g. by using pseudonyms)

	Make debug macros variadic to include category
	* src/debug.h (log_oom, log_data, log_memory): Make variadic to
	include the category.

	Remove very obsolete "watcher.cpp"
	* src/watcher.cpp: Removed.

	Remove obsolete / unused code
	* src/exechelp.c, src/exechelp.h: Removed.
	* src/Makefile.am: Update accordingly.

	Add string pseudonyms for debug output
	* src/debug.cpp (anonstr): New.

	Use unordered_map in memdbg for performance
	* src/memdbg.cpp: Use unordered_map for faster lookups.

	Replace log_mime_data with log_data
	* src/mimedataprovider.cpp: Replace log_mime_data with log_data.
	* src/debug.h: Update log macros

	Replace log_oom_extra with log_oom

	Add "Supertrace" macros
	* src/debug.h (TSTART, TRETURN, DBG_SUPERTRACE): New macros
	for a new super verbose tracing.

	Log if logging fails
	* src/debug.cpp (lock_log): Do not wait infinite for
	log lock.
	(do_log): Log to debug output if obtaining the log lock failed.

	Start simplification of log categories
	* src/debug.cpp, src/debug.h: New. Place for log functionality.
	* src/common.cpp, src/common_indep.c, src/common_indep.h: Move out
	debugging functions.
	* src/keycache.cpp, src/mail.cpp, src/main.c,
	src/mimedataprovider.cpp, src/oomhelp.cpp,
	src/parsecontroller.cpp: Rename log_mime_parser to log data.

	Remove obsolete logging categories
	* src/common_indep.h (DBG_COMMANDS, DBG_IOWORKER),
	(DBG_IOWORKER_EXTRA, DBG_FILTER, DBG_FILTER_EXTRA): Removed.
	* src/main.c (read_options): Remove handling of obsolete values.

2018-09-19  Erwin Bronkhorst  <erwinbronkhorst@gmail.com>

	Update Dutch translations

2018-09-13  Andre Heinecke  <aheinecke@intevation.de>

	Merge branch 'STABLE-BRANCH-2-3'

	Add disable async encryption as hidden option
	* src/mail.cpp (Mail::check_inline_response): Look
	at opt.sync_enc again.
	* src/main.c (read_options): Read hidden _syncEnc value
	to disable async encryption.

	Disable async encryption for mails with attachs
	* src/mail.cpp (check_inline_response): Disable async crypt
	if mail has attachments.
	* src/windowmessage.cpp (CRYPTO_DONE): Clarify that the
	fallback to MAPI is a very very last resort.

	Add more mimetypes in infer_content_type
	* src/mimemaker.cpp (infer_content_type): Add more mime types.

2018-09-12  Andre Heinecke  <aheinecke@intevation.de>

	Fix encoding of last line
	* src/mimedataprovider.cpp (get_body, get_html_body): Don't
	append raw undecoded data anymore.
	(MimeDataProvider::finalize): New. Parse the last unfinished data.
	* src/parsecontroller.cpp (ParseController::parse): Call
	finalize.

	Fix a possible crash when reactivating gpgol
	* src/gpgoladdin.cpp (GpgolAddin::invalidateRibbons)
	(GpgolAddin::addRibbon): New.
	(g_ribbon_uis): Removed.

2018-09-07  Andre Heinecke  <aheinecke@intevation.de>

	Fix encoding of last line
	* src/mimedataprovider.cpp (get_body, get_html_body): Don't
	append raw undecoded data anymore.
	(MimeDataProvider::finalize): New. Parse the last unfinished data.
	* src/parsecontroller.cpp (ParseController::parse): Call
	finalize.

	Fix a possible crash when reactivating gpgol
	* src/gpgoladdin.cpp (GpgolAddin::invalidateRibbons)
	(GpgolAddin::addRibbon): New.
	(g_ribbon_uis): Removed.

2018-09-06  Andre Heinecke  <aheinecke@intevation.de>

	Merge branch 'STABLE-BRANCH-2-3'

	Thou shalt not push before compiling
	* src/mail.cpp (Mail::refCurrentItem): Fix debug statement.

	Try to fix crashes in MAPI SubmitMessage path
	* src/windowmessages.cpp (gpgol_window_proc): Close inspector
	before closing the mail.

	Add some safeguards against NULL base msg
	* src/common.h (ERR_GET_BASE_MSG_FAILED): Add new bug code.
	* src/mailitem-events.cpp (Send): Check for null base msg
	* src/windowmessages.cpp (gpgol_window_proc): ditto.
	* src/ribbon-callbacks.cpp (get_mail_from_control): ditto.

	Fix minor mem leak in format error
	* src/parsecontroller.cpp (format_error): Don't leak
	the buf.

	Do not release old ref in refCurrentItem
	* src/mail.cpp (Mail::refCurrentItem): Do not release
	existing ref.

	Post release version bump

	Keep strong ref after submit message
	* src/windowmessages.cpp (gpgol_window_proc): Keep strong
	ref in send fallback.

	Fallback to MAPI SubmitMessage if OOM Send fails
	* src/common.h (ERR_SEND_FALLBACK_FAILED): New error code.
	* src/windowmessages.cpp (gpgol_window_proc): Fallback to SubmitMessage
	on OOM Send failure.

	Ignore temporary recipient resolve errors
	* src/cryptocontroller.cpp (CryptController::resolve_keys):
	Add unlikely error handling if recipients could not be resolved here.
	* src/mail.cpp (Mail::getRecipients_o): Ignore error when
	getting recipients.

	Rename autoresolveCheck to autosecureCheck
	* src/mail.cpp, src/mail.h (Mail::autoresolveCheck): Rename
	to autosecureCheck.
	(Mail::autsecureCheck): Also check for opt.autosecure.

	Fix Mail::needs_crypto_m
	* src/mail.cpp (Mail::needs_crypto_m): Fix function.

	Fallback to MAPI SubmitMessage if OOM Send fails
	* src/common.h (ERR_SEND_FALLBACK_FAILED): New error code.
	* src/windowmessages.cpp (gpgol_window_proc): Fallback to SubmitMessage
	on OOM Send failure.

	Ignore temporary recipient resolve errors
	* src/cryptocontroller.cpp (CryptController::resolve_keys):
	Add unlikely error handling if recipients could not be resolved here.
	* src/mail.cpp (Mail::getRecipients_o): Ignore error when
	getting recipients.

2018-09-05  Andre Heinecke  <aheinecke@intevation.de>

	Add Address Book integration
	* src/Makefile.am: Add new files.
	* src/addressbook.cpp, src/addressbook.h: New. Code for
	Address Book handling.
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames),
	(GpgolRibbonExtender::Invoke),
	(GetCustomUI_MIME): Add Button to configure PGP Key.
	* src/mail.cpp (m_locate_in_progress): Make static
	locate_in_progress a proper member.
	(Mail::locateKeys_o): Trigger address book check.
	(Mail::locateAllCryptoRecipients_o): Don't abort
	if autoresolve is false.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (PropertyChange): Trigger
	locate even if autoresolve is off.
	* src/ribbon-callbacks.cpp (open_contact_key): New.
	* src/ribbon-callbacks.h: Add id and protoype.
	* src/windowmessages.cpp (gpgol_window_proc): Handle
	config key done.
	* src/windowmessages.h (CONFIG_KEY_DONE): New.

	Fix find user prop
	* src/oomhelp.cpp (find_user_prop): Set cNamedArgs so it
	is not unitialized.

	Add l10n strings for the keyadder
	* src/addin-options.cpp (i18n_noops): Extend with strings
	for the key adder dialog.

	Add import / override functions to keycache
	* src/keycache.cpp (KeyCache::importFromAddrBook): New.
	(KeyCache::onAddrBookImportJobDone): New internal helper.
	(KeyCache::Private::importFromAddrBook): New.
	(KeyCache::Private::getPGPOverrides): Access imported overrides.
	(KeyCache::Private::getEncryptionKeys): Respect overrides.
	(do_import): New thread function to do the actual import.
	* src/keycache.h: Update accordingly and add comments which
	functions are async.

2018-09-04  Andre Heinecke  <aheinecke@intevation.de>

	Rename autoresolveCheck to autosecureCheck
	* src/mail.cpp, src/mail.h (Mail::autoresolveCheck): Rename
	to autosecureCheck.
	(Mail::autsecureCheck): Also check for opt.autosecure.

	Fix Mail::needs_crypto_m
	* src/mail.cpp (Mail::needs_crypto_m): Fix function.

	Extend oomhelp for address book integration
	* src/oomhelp.h (shared_disp_t, MAKE_SHARED, release_disp):
	New. Automatically releasing IDispatch pointer.
	* src/oomhelp.cpp, src/oomhelp.h (release_disp),
	(get_oom_recipients_with_addrEntry, find_user_prop),
	(find_or_add_text_prop): New.

2018-08-31  Andre Heinecke  <aheinecke@intevation.de>

	Fix missing space in german translation of version
	* po/de.po: Add ending space.

	Post release version bump

	Update NEWS for todays release

2018-08-30  Andre Heinecke  <aheinecke@intevation.de>

	Translate the word "technical"
	* po/de.po, po/nl.po, po/pt.po: Translate technical in the
	100% languages.

	Auto update po files
	* po/*: update

	Revert "Check for PGP/Inline inside of S/MIME mails"
	This reverts commit 1656e01d2eb19c8349dcab9d9b7e25fb85b9c854.

	Revert "Also check for pgp/inline in IPM.Note.SMIME"
	This reverts commit 0e05606f693114b491a74030e7ae54c75738eeae.

	Add a debug statement when marking MOSS attachs
	* src/mapihelp.cpp (mapi_mark_moss_attach, mapi_body_to_attachment):
	Add debug.

	Also check for pgp/inline in IPM.Note.SMIME
	* src/mapihelp.cpp (mapi_change_message_class): Also check
	for inline in IPM.Note.SMIME

	GnuPG-Bug-Id: T4115

	Check for PGP/Inline inside of S/MIME mails
	* src/mapihelp.cpp
	(change_message_class_ipm_note_smime_multipartsigned): Check for
	PGP/Inline if S/MIME is disabled.

	Fix minor german l10n error

2018-08-29  Andre Heinecke  <aheinecke@intevation.de>

	Cache icons
	* src/ribbon-callbacks.cpp (getIcon): Use dispcache.
	(getIconDisp): New.

	Accept sent on behalf of as the sender address
	* src/mail.cpp (Mail::updateOOMData_o): Cache sent on behalf.
	(Mail::updateSigstate): Fallback to sent on behalf.
	(m_sent_on_behalf): New cache variable.
	* src/oomhelp.cpp (get_sender_SentRepresentingAddress): New.

	Fix minor locking issue
	* src/keycache.cpp (KeyCache::Private::getByFpr): Use a copy
	to return after unlocking the map.

	Use dispcache for Multilanguage COM interface
	* src/dialogs.h (DISPID_MULTILANG): New.
	* src/mlang-charset.cpp (ansi_charset_to_utf8): Use dispcache.

	Add generic cache for IDispatch objects
	* src/dispcache.cpp, src/dispcache.h: New.
	* src/gpgoladdin.cpp, src/gpgoladdin.h: Carry dispcache as
	member.
	* src/Makefile.am: Add new Files.

	Add missing word from config dialog to i18n
	* src/addin-options.cpp: Add (Technical)

	Remove attic
	* src/attic.c: Deleted.

2018-08-28  Andre Heinecke  <aheinecke@intevation.de>

	Update NEWS

	Minor indentation fix

	Improve keycache performance a bit
	* src/keycache.cpp: Use unordered_map and set for better
	speed.

	Add another tracepoint in parsing_done
	* src/mail.cpp (Mail::parsing_done): Add tracepoint.

	Use keycache instead of Signature::Key
	* src/mail.cpp (Mail::updateSigstate),
	(Mail::getCryptoDetails_o): Use keycache.
	* src/parsecontroller.cpp (Parsecontroller::parse): Use
	keycache.

	Extend keycache for fingerprint lookup
	* src/keycache.cpp, src/keycache.h (KeyCache::update),
	(KeyCache::getByFpr): New.

	Fix confusing debug output
	* src/windowmessages.cpp (delayed_invalidate_ui): Print
	waiting before sleep, not after.

2018-08-23  Andre Heinecke  <aheinecke@intevation.de>

	Change mime data log category
	* src/mimedataprovider.cpp: Change data logging from
	log_mime_parser to log_mime_data.

2018-08-22  Andre Heinecke  <aheinecke@intevation.de>

	Ignore disable async crypto option
	* src/mail.cpp (Mail::isAsyncCryptDisabled): We assume
	that Async crypto is now stable. So ignore this option.

	Fix is_valid_chksum check
	* src/parsecontroller.cpp (is_valid_checksum): Don't check
	the OR'ed sigsum values for equality.

	Make autosecure compatible with always sign
	* src/mail.cpp (Mail::setDoAutosecure_m): Handle always
	sign and do not treat it as manual setting.

	Fix minor name inconsitencs
	* src/mail.cpp (releaseCurrentItem): m_tmp was not a member.

	Fix potential crash in T3656 workaround
	* src/windowmessages.cpp (CLOSE): Use the currentViewRef trick
	to avoid unload in close.

	WKS: Handle aborted confirmation process better
	* src/wks-helper.cpp (handle_confirmation_notify): Go back a
	state if we have not seen a confirmation in this run.

	Rewrite cached key resolution
	* src/cryptcontroller.cpp (resolve_through_protocol): New.
	(resolve_keys_cached): Use new helper function.

	Add helper to print out protocol
	* src/cpphelp.cpp, src/cpphelp.h (to_string): New.

2018-08-10  Andre Heinecke  <aheinecke@intevation.de>

	Fix crash on async send in OL 2013
	* src/mail.cpp, src/mail.h (Mail::

	Disable super verbose debug output
	* src/w32-gettext.h: Disable very verbose debug output.

2018-08-09  Andre Heinecke  <aheinecke@intevation.de>

	Add new function to check for preview pane
	* src/oomhelp.cpp, src/oomhelp.h (is_preview_pane_visible): New.
	* src//ribbon-callbacks.cpp (get_mail_from_control): Use it.

	Add ref in get_strong_reference
	* src/oomhelp.cpp (get_strong_reference): Mark add ref.

	Use utf8 gettext in ribbon callbacks
	* src/ribbon-callbacks.cpp: Use utf8 gettext.

2018-08-07  Andre Heinecke  <aheinecke@intevation.de>

	Merge remote-tracking branch 'dutch-l10n/dutch'

	po: Update pt translation
	* po/pt.po: Update

2018-08-06  Andre Heinecke  <aheinecke@intevation.de>

	Make send_message_to_ui_thread private
	* src/windowmessages.cpp, src/windowmessages.h
	(send_msg_to_ui_thread): Make it static

2018-07-30  Erwin Bronkhorst  <erwinbronkhorst@gmail.com>

	Update Dutch translation

2018-07-24  Andre Heinecke  <aheinecke@intevation.de>

	malloc -> xmalloc
	* src/w32-gettext.cpp (bindtextdomain): Change a spurious malloc
	to xmalloc.

	Minor cleanups
	* src/cryptcontroller.cpp, src/cryptcontroller.h: m_recipents is
	now a vector.

	Fix memory leak when opening options
	* src/addin-options.cpp (open_gpgolgui): Release cArray.

	Auto update german po file formatting
	* po/de.po: Update.

	Fix return value of is_crypt_pressed
	* src/ribbon-callbacks.cpp (get_crypt_pressed): Fix return
	value.

	Fix w64 build
	* src/windowmessages.cpp (delayed_invalidate_ui): Cast delay
	to intptr_t before casting to int.

	Update german translation
	* po/de.po: Update

	Auto update po files
	* po: Update

	Return 0 for handled WindowMessages
	* src/windowmessages.cpp (gpgol_window_proc): Return 0 for
	messages handled by us.

	Trace timing of sig key request
	* src/parsecontroller.cpp (ParseController::parse): Add tracepoints.

	Log invalid skipped secret keys
	* src/keycache.cpp (locate_secret): Log invalid skipped keys.

	Print parsed mail count in dbg output
	* src/mail.cpp (Mail::updateBody_o): Print parsed mail
	count.

2018-07-23  Andre Heinecke  <aheinecke@intevation.de>

	Fix orig body memleak in decryptVerify
	* src/mail.cpp (Mail::decryptVerify_o): Don't assign
	heap alloced data to std::string without free.

	Fix memleak of plain body in collect_data
	* src/cryptcontroller.cpp (CryptController::collect_data): Fix
	leak.

	Fix important memleak in get_mail_from_control
	* src/ribbon-callbacks.cpp (get_mail_from_control): Fix memleak.

	Improve wchar and utf8 conversion memdbg
	* src/w32-gettext.h (wchar_to_utf8, utf8_to_wchar): replace
	by logging macros.

	Remove dead code
	* src/mail.cpp, src/mail.h (getHTMLBody_o): Removed.

	Minor initialzation
	* src/mail.cpp (Mail::decryptVerify_o): Initialize placeholder.

	Fix super minor memleak
	* src/gpgoladdin.cpp (GpgolAddin::OnConnection): Release
	version.

	Fix memleak in put_pa_string
	* src/oomhelp.cpp (put_pa_string): Fix memleak.

	Add caller debugging for wchar / utf8 convs
	* src/w32-gettext.cpp, src/w32-gettext.h (utf8_to_wchar),
	(wchar_to_utf8): Improve tracing for memory debug.

	Use static references for VARAINT_BOOL | BYREF
	* src/ribbon-callbacks.cpp (get_crypt_pressed),
	(get_is_details_enabled, get_is_crypto_mail): Reference a static.

	Fix unlikely error memleak
	* src/mapihel.cpp (mapi_get_message_content_type): Fix error
	handling meleak.

	Poor redmond man's valgrind
	* src: Use x functions
	* src/xmalloc.h: Provide macros for memdbg.

	Fix tmp path naming if name exists
	* src/common.cpp (get_tmp_outfile): Fix name.

	strdup -> xstrdup

	Remove unused code
	* src/main.c (create_initialization_vector)
	(get_crypt_random): Removed.

	Make async encryption optional
	* src/common_indep.h (opt): Add sync_enc.
	* src/mail.cpp (Mail::isAsynCryptDisabled_o): Respect it.
	* src/main.c (read_options): Read it.

	Improve invalidation blocking
	* src/mail.cpp (do_parsing): Don't use invalidation_lock. We now have
	block invalidation.
	* src/mailitem-events.cpp (Read): Delay invalidate.
	* src/windowmessages.cpp (delayed_invalidate_ui): Take sleep param.
	(INVALIDATE_UI): Respect invalidation blocked.
	* src/windowmessages.h: Update accordingly.

	Trace return of UI callbacks
	* src/ribbon-callbacks.cpp: Trace returns.

	Fix invalidate UI only on unselect
	* src/explorer-events.cpp (start_watchdog): Only invalidate
	UI on unselect.

	unique_ptr++
	* src/parsecontroller.cpp (ParseController::get_ultimate_keys): Use
	unique ptr for context.

2018-07-20  Andre Heinecke  <aheinecke@intevation.de>

	Fix make dist
	* po/POTFILES.in: Update file list.

	Next version will be 2.3.0
	* configure.ac: Bump minor version.

	Don't print error in memdbg if caller changes
	* src/memdbg.cpp (register_name): Don't print error
	if the name changed and the calling function was used as the name.

	Make UI invalidation more deterministic
	* src/explorer-events.cpp (hasSelection, startWatchdog, changeSeen):
	New.
	* src/mail.cpp (do_parsing): Block invalidation while parsing.
	* src/windowmessages.cpp (blockInv, unblockInv): New.
	(delayed_invalidate_ui): Handle block inv state.
	* src/windowmessages.h: Update accordingly.

	Add tracing for update body
	* src/mail.cpp (Mail::updateBody_o): Trace calls.

	Print error if addin is accessed after shutdown
	* src/gpgoladdin.cpp (GpgolAddin::get_instace): Print error
	when accessed.

	Implement cpp ctor / dtor counting
	* src/memdbg.cpp (memdbg_ctor, memdbg_dtor): Implement.

	Use reffing function as name for IUnknown
	* src/memdbg.cpp (_memdbg_addRef, register_name): Use
	calling function as the name for IUnknwon refs.

	Add simple dtor / ctor counting of Cpp objs

	Accept multipart/mixed application/pgp-encrypted
	* src/mapihelp.cpp (change_message_class_ipm_note): Accept
	multipart/mixed with protocol application/pgp-encrypted.

	Remove dead code and add some addRefs
	* src/mapihel.cpp, src/mapihelp.h (has_gpgol_body_name)
	(mapi_get_gpgol_body_attachment, mapi_delete_gpgol_body_attachment),
	(mapi_attachment_to_body): Removed.

	Fix ref leak on no object error
	* src/oomhelp.cpp (get_oom_object): Release pDisp always.

	Fix minor ref leaks
	* src/oomhelp.cpp (get_account_for_mail): Release account.
	(ensure_category_exists): Release categories on error.

	Fix ref leak in get_oom_recipients
	* src/oomhelp.cpp (get_oom_recipients): Release addrEntry.

	Add missing memdbg_addRefs
	* src/mapihelp.cpp (mapi_get_attach): Add missing addRef.
	* src/mimemaker.cpp (create_mapi_attachment): Ditto.

	Add ptr and line to addRef dbg output
	* src/memdbg.h (memdbg_addRef): Debug out the line.

	Fix attach table leak
	* src/cryptcontroller.cpp (CryptController::collect_data): Fix
	table leak.

	Fix ref leak in setDoAutosecure_m
	* src/mail.cpp (Mail::setDoAutosecure_m): Release msg.

	Fix big reference leak of cipherstream / message
	* src/mail.cpp (get_attachment_stream_o): Release
	message and mapi_attachment after obtaining the stream.

	Improve memdbg name output
	* src/memdbg.cpp (register_name): Handle name changes.
	(memdbg_addRef): Handle name change.

	Change an error to debug
	* src/mail.cpp (Mail::installFolderEventHandler_o): Don't
	print the success message as error.

	Unref application unload / shutdown
	* src/gpgoladdin.cpp (GpgolAddin::shutdown): Release
	application.

	Fix reference error on Explorer / Explorers object
	* src/gpgoladdin.cpp (install_explorer_sinks): Release
	explorer and explorers after installing the sinks.

	Add memdbg handling for MAPI
	* src/gpgoladdin.cpp (GpgolAddin::OnConnection): Ref application.
	* src/mapihelp.cpp: Replace OpenProperty by gpgol_openProperty.
	memdbg_addRef for some MAPI functions that return an object.
	* src/mimemaker.cpp: Replace OpenProperty by gpgol_openProperty.
	* src/mlang-charset.cpp (ansi_charset_to_utf8): Mark multilang
	as reffed.
	* src/olflange.cpp (install_forms): Mark formcontainer as reffed.
	* src/oomhelp.cpp, src/oomhelp.h (gpgol_queryInterface): New.
	(get_oom_iunknown): Add ref.
	(get_oom_base_message_from_mapi): Add ref.
	* src/ribbon-callbacks.cpp (getIcon): Add ref on stream and
	change it to be automatically freed as we don't free it.

	Improve GpgolAddin debug output
	* src/gpgoladdin.cpp (DllCanUnloadNow): Trace call.
	(GpgolRibbonExtender::~GpgolRibbonExtender): Dump memory map.
	(GpgolAddinFactory::~GpgolAddinFactory): Debug dtor.

	Don't export DllCanUnloadNow at all
	* src/gpgol.def (DllCanUnloadNow): Don't export.

	Also debug oom if debug oom_extra is set
	* src/common_indep.h (gpgol_release): Add line.
	(debug_oom): Also debug for oom_extra

	Decorate eventsink with memdbg helpers
	* src/eventsink.h: Add memdbg helpers

	Fix minor ref leak
	* src/oomhelp.cpp (get_ol_ui_language): Release langsettings.

	Start memdbg interface for COM ref counting
	* src/Makefile.am: Add memdbg files.
	* src/common_indep.h (gpgol_release): Call memdbg_released.
	* src/eventsink.h (install..sink): Use gpgol_queryInterface
	* src/mailitem-events.cpp (Unload): Dump memdbg maps after unload.
	* src/oomhelp.h (gpgol_queryInterface): New.
	* src/mimedataprovider.cpp (MimeDataProvider::MimeDataProvider):
	Register ref add.
	* src/oomhelp.cpp (gpgol_queryInterface): New.
	(get_object_name): Use non memdbg aware functions.
	(get_oom_object): Use gpgol_queryInterface.
	(get_oom_object): Print out refs when obtaining if.
	(get_oom_control_bytag, get_object_by_id),
	(get_oom_mapi_session): Use mdbg functions.

2018-07-18  Andre Heinecke  <aheinecke@intevation.de>

	Only shutdown for the last explorer close
	* src/windowmessages.cpp (gpgol_hook): Only shutdown if
	the last explorer is closed.

	Minor performance improvement
	* src/parsecontroller.cpp (ParseController::parse): Check that
	get_ultimate_keys is only called once even for multisigs.

	Print binary mime data as hex
	* src/mimedataprovider.cpp (MimeDataProvider::read): Dump
	binary as hex.

	Minor perfomance improvement
	* src/mail.cpp (level_4_check): Reduce copies
	of get_ultimate_keys vector.

	Only treat unknown sigs as lvl2 if they are valid
	* src/mail.cpp (Mail::updateSigstate): Check for sigsum valid
	before using WKD as shortcut to lvl 2.

	Add helper functions for hexdump
	* src/cpphelp.cpp, src/cpphelp.h (is_binary, string_to_hex): New.

2018-07-17  Andre Heinecke  <aheinecke@intevation.de>

	Rewrite get_tmp_outfile to fix a crash
	* src/common.cpp (get_tmp_outfile): Rewrite using c++.
	(getTmpPathUtf8, CreateFileUtf8): New helpers.

	Add wchar_to_utf8_string function
	* src/w32-gettext.cpp, src/w32-gettext.h (wchar_to_utf8_string):
	Wrap the c to c++ conversion in a function.

	Load gpgconf in a background thread
	* src/cpphelp.cpp (is_de_vs): Set checked earlier for
	better reentrancy.
	* src/gpgoladdin.cpp (OnStartupComplete): init_gpgme_config.

	Fix possible invalid CloseHandle and DeleteFile
	* src/mail.cpp (add_attachments_o): Guard CloseHandle and
	DeleteFile.

	Cleanup shutdown and fix potential crashes
	* src/explorer-events.cpp (Close): Unregister sink with addin.
	* src/explorers-events.cpp (NewInstance): Register sink.
	* src/gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Remove shutdown
	logic.
	(GpgolAddin::OnConnection): Mark shutdown state as false.
	(GpgolAddin::OnDisconnection): Call shutdown.
	(install_explorer_sinks): Register created sinks.
	(GpgolAddin::shutdown): New. Handle shutdown.
	(GpgolAddin::registerExplorerSink),
	(GpgolAddin::unregisterExplorerSink): Track explorer sinks.
	* src/gpgoladdin.h: Update accordingly.
	* src/mail.cpp (Mail::closeAllMails_o): Fix folder events
	detach and do it earlier.
	(Mail::installFolderEventHandler_o): Use sink instead of folder
	to track event handler.
	* src/windowmessages.cpp (add_explorer, remove_explorer): removed.
	(gpgol_hook): Interate over actual explorers instead of variables.
	* src/windowmessages.h: Update accordingly.

2018-07-11  Andre Heinecke  <aheinecke@intevation.de>

	Tune down error to debug
	* src/mail.cpp (get_uid_for_sender): It's common for S/MIME
	to have two uids where one does not have an email. So don't
	error but just debug it.

	Check for wchar_t conversion success for attach
	* src/mail.cpp (add_attachments_o): Check wchar_name.

	Log sent windowmessages
	* src/windowmessages.cpp (do_in_ui_thread): Log message sending.

	Minor improvement to debug output

	Check if someone tries to set null as att name
	* src/attachment.cpp (Attachment::set_display_name): Check for NULL.

	Abort attachment process chain in case of error
	* src/mail.cpp (add_attachments_o): Don't continue with attachment
	processing if something failed.

	Log w32 error and tried filename for tmp attach
	* src/common.cpp (get_tmp_outfile): Log error and tried filename.

2018-07-10  Andre Heinecke  <aheinecke@intevation.de>

	Convert common to cpp and clean it up
	* src/Makefile.am: Remove config-dialog.c
	* src/common.c, src/common.cpp: Cppify, cleanup.
	* src/config-dialog.c: Remove it.
	* src/gpgoladdin.cpp (GetCustomUI_MIME): Use normal utf8_to_wchar.

	Remove accidentally commited dev debug

	Add support for distribution lists (groups)
	* src/oomhelp.cpp (get_recipient_addr_fallbacks):
	Handle distributionb lists and plit into
	(get_recipient_addr_entry_fallbacks_ex): New. Handle
	the exchange stuff.
	(try_resolve_group): Resolve distribution lists.
	(get_oom_recipients): Check for distribution lists.
	* src/oomhelp.h: Add some new defines.

	Log keys used in internal resolution
	* src/cryptcontroller.cpp (CryptController::resolve_keys_cached):
	Log used keys.

	Improve recipient handling
	* src/cryptcontroller.cpp (CryptController::CryptController),
	src/keycache.cpp (KeyCache::isMailResolvable),
	src/wks-helper.cpp (WKSHelper::handle_confirmation_read):
	Update call to mail->getRecipients.
	* src/mail.h (Mail::getRecipients): Renamed to
	Mail::getCachedRecipients.
	* src/mail.cpp (Mail::getRecipients_o): Adapt to vector.
	Add error handling.
	(Mail::updateOOMData_o): Use vector directly.
	* src/oomhelp.cpp, src/oomhelp.h (get_oom_recipients):
	Use vector and provide an error.

	Use unique ptr for parser context
	* src/parsecontroller.cpp (ParseController::parse): Use unique
	ptr for GpgME Context.

	Use c++ linkage for oomhelp and conv w32getttext
	* src/mapihelp.h: Don't include oomhelp with c linkage.
	* src/oomhelp.h: Use C++ linkage.
	* src/Makefile.am: Update accordingly.
	* src/w32-gettext.c, src/w32-gettext.cpp: Renamed. Added
	casts for c++ and removed trailing whitespace.
	* src/w32-gettext.h: Use C linkage for gettext.

2018-07-09  Andre Heinecke  <aheinecke@intevation.de>

	Clarify logging for empty UID emails
	* src/mail.cpp (get_uid_for_sender): Check that email is
	not empty.

	Implement "prefer-smime" option
	* src/cryptcontroller.cpp (CryptController::resolve_keys_cached):
	Respect prefer smime setting.

	More options / config cleanup
	* src/main.cpp (write_options): Remove most options now
	controlled by the external dialog.
	(get_conf_bool): New helper.
	(read_options): Use it.
	* src/common_indep.c (set_default_key): Removed.
	* src/common_indep.h (opt): Remove obsolete values and
	add some new ones.

	Fix crash for attachment names > 76 chars
	* src/rfc2047parse.c (rfc2047_decode_tokens): Use return
	value of realloc.

	tests: Don't override GNUPGHOME in run-parser
	* tests/run-parser.c (main): Don't override the GNUPGHOME

	Fix linux build
	* src/parsecontroller.cpp (ParseController::parse): Ifdef
	native encoding workaround.

2018-07-06  Andre Heinecke  <aheinecke@intevation.de>

	Switch back to old check for reading pane for ol16
	* src/ribbon-callbacks.cpp (get_mail_from_control): Use the
	same codepath as OL2010 and 13 for 2016 again, too.

	Add log_addins oomhelp function
	* src/oomhelp.cpp, src/oomhelp.h (log_addins): New.
	(get_oom_object): Debug dispid.

	Add missing i18n for conf dialog
	* src/addin-options.cpp (i18n_noops): Add another option string.

2018-07-03  Andre Heinecke  <aheinecke@intevation.de>

	Remove now unused WinAPI dialog resource
	* src/dialogs.rc: Remove last winapi dialog.

	Change addion-options to use external dialog
	* src/addin-options.cpp (open_gpgolgui): New.
	(options_dialog_box): Open gpgolgui or bring it to foreground.
	(i18n_noops): Add strings.
	(launch_kleo_config): Removed.
	(options_window_proc): Removed.

2018-06-26  Andre Heinecke  <aheinecke@intevation.de>

	Make it possible to move decrypted mails
	* src/Makefile.am: Add folder-events.cpp
	* src/eventsinks.h (install_FolderEvents_sink),
	(detach_FolderEvents_sink): New.
	* src/folder-events.cpp: New event handler.
	* src/mail.cpp (s_folder_events_map): New map to track
	registered handlers.
	(Mail::isAboutToBeMoved, Mail::setIsAboutToBeMoved): New.
	(Mail::installFolderEventHandler_o): New.
	(Mail::closeAllMails_o): detach folder handler.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (Write): Pass if mail is about to
	be moved.
	* src/oomhelp.h (IID_FolderEvents): New.

	Enable auto-key-retrieve if autoresolve is set
	* src/parsecontroller.cpp (ParseController::parse): Enable
	auto-key-retrieve if autoresolve is set to true.

	Fix bring to foreground logic
	* src/mail.cpp (do_crypt): Bring to foreground with delay.
	* src/windowmessages.cpp (gpgol_window_proc): Don't sleep in the
	UI thread.

	Add i18n noops for config dialog
	* src/addin-options.cpp (i18n_noops): New. Strings to be used
	from the config dialog.

	Improve state handling of WKS Mails
	* src/wks-helper.cpp: Add new PublishInProgress state. This
	avoids the possibility of multiple notifications due to the
	late advancement out of the needspublish state.

	Minor improvement to german string

	Ignore propchanges on custom mails
	* src/mail.h (Mail::hasOverrideMimeData): New.
	* src/mailitem-events.cpp (PropertyChange): Ignore changes
	for mails with override mime data.
	* src/wks-helper.cpp (WKSHelper::send_mail): Set override
	MIME data earlier.

	Improve handling of UID origin
	* src/mail.cpp (Mail::getCryptoDetails_o, Mail::updateSigstate):
	Treat WKD origin as "shortcut to level 2.

	Fix potential crash in do autosecure
	* src/mail.cpp (Mail::setDoAutosecure_m): Return if msg
	is not found.

2018-06-22  Andre Heinecke  <aheinecke@intevation.de>

	Fix passing std::string to asprintf
	* src/wks-helper.cpp (WKSHelper::notifiy): Fix asprintf call.

	Enable async crypto again (for now)
	* src/mail.cpp (DO_ASYNC_CRYPTO): Define.

	Note mbox in WKS message
	* src/wks-helper.cpp (WKSHelper::notify): Note for which
	mbox the message applies.

	Take language from Outlook instead of the system
	* src/oomhelp.cpp (invoke_oom_method_with_parms_type): New.
	Helper to allow invokes with a custom type.
	(invoke_oom_method_with_parms): Use it.
	(get_ol_ui_language): New. Read out the UI language of outlook.
	* src/w32-gettext.c (_nl_locale_name): Use it.
	* src/oomhelp.h: Update accordingly.

	Remove code about compat flags
	* src/main.c (read_options): Remove compat flags handling.

	Move i18n_init after the addin connecction
	* src/common.h (i18n_init): Expose.
	* src/main.c (DllMain): Don't init here.
	(i18n_init): No longer static.
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete): Call it.

	Fix WKS when async enc is disabled
	* src/mailitem-events.cpp (Send): Allow notify after the
	send.
	* src/windowmessages.cpp (CRYPTO_DONE): Don't do allow notify here.

	More cleanup and convetional naming

2018-06-21  Andre Heinecke  <aheinecke@intevation.de>

	Use convention for MAPI/OOM active functs

	Constify some calls

	Introduce naming conventions
	* src/mail.h: Add comment explaining naming convetions and
	explain window message and OOM interaction.

	Set UUID when auto toggling secure
	* src/mail.cpp (Mail::set_do_autosecure_mapi): set uuid.

	Fix flicker when locate threads are running
	* src/mail.cpp (Mail::autoresolve_s): Check locate thread count.

	Simplify isMailResolvable and accept keygen
	* src/keycache.cpp (isMailResolvable): Return bool. Accept
	potential keygen.
	* src/keycache.h: Update accordingly.
	* src/mail.cpp (Mail::autoresolve_check_s): Update for new API.

	Implement auto secure feature
	* src/common_indep.h (opt): Add autosecure.
	* src/cryptcontroller.cpp (CryptController::CryptController): Adopt
	new API.
	* src/keycache.cpp (do_locate, do_locate_secret): Fix broken handling
	of args.
	(locate_secret): Add check for empty mbox. Otherwise it could
	select the first secret key if the sender address could not be
	resolved.
	(KeyCache::startLocate): Take recipients as vector.
	(KeyCache::isMailResolvable): New. Check if all keys are found
	in the cache.
	* src/keycache.h: Update accordingly.
	* src/mail.cpp (m_cached_recipients): Use a vector instead of
	a carray.
	(m_first_autoresolve_check): Track state of autoresolve.
	(Mail::~Mail): No need to free cached recipients.
	(Mail::update_oom_data): Use vector for cached recipients.
	(Mail::locate_keys): Adapt to new recipients API. Do
	autoresolve_check.
	(Mail::take_cached_recipients): Removed.
	(Mail::get_cached_recipents): New. Get a copy of the recipients.
	(Mail::decrement_locate_count): Trigger autoresolve check.
	(Mail::autoresolve_check_s): New. Check if mail is resolvable.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (RecipientAdded): Handle opt.autosecure.
	* src/main.c (read_options): Read autosecure.
	* src/ribbon-callbacks.cpp (mark_mime_action): Use more modern
	style. Mark if crypto state was set manually.
	* src/windowmessages.cpp (DO_AUTO_SECURE, DONT_AUTO_SECURE): New
	messages to set state.

2018-06-20  Andre Heinecke  <aheinecke@intevation.de>

	Handle always sign/encrypt for inline reply/fw
	* src/mailitem-events.cpp (reply, forward, replyall): Handle
	the always sign/encrypt options.

	Add clarifying comment about forward reply detect

	Prepare keycache for autoencryption
	* src/keycache.cpp,
	* src/mail.cpp, src/mail.h (set_crypto_selected_manually),
	(increment_locate_count, decrement_locate_count): New stateholders.
	* src/keycache.cpp (LocateArgs): Argument helper to carry mail.
	(startLocate, startLocateSecret): Add mail argument and use it.
	* src/keycache.h: Update accordingly.

	Locks and more locks
	* src/mail.cpp (mail_map_lock, uid_map_lock): New locks.
	(Mail::Mail, Mail::~Mail, Mail::get_mail_for_item),
	(Mail::get_mail_for_uuid, Mail::is_valid_ptr),
	(Mail::close_all_mails, Mail::revert_all_mails),
	(Mail::revert_all_mails, Mail::wipe_all_mails),
	(Mail::set_uuid, Mail::locate_all_crypto_recipients)
	(Mail::delete_lock, Mail::delete_unlock): New helpers to
	ensure a mail pointer stays valid.
	* src/mail.h: Update accordingly.

2018-06-19  Andre Heinecke  <aheinecke@intevation.de>

	Cppinize keycache a bit more
	* src/keycache.cpp (setSmimeKeySecret, setSmimeKey, setPgpKey),
	(setPgpKeySecret): Use std::string.
	(do_locate, locate_secret): Smart pointer for ctx.
	std::string for addr.
	* src/keycache.h: Update accordingly.

	Fix crash when adding attachment without fileext
	* src/mimemaker.cpp (infer_content_type): Check if a suffix
	was found and check for the size of the suffix before using it.

2018-06-17  Andre Heinecke  <aheinecke@intevation.de>

	Post release version bump

	Update NEWS for todays release

2018-06-15  Andre Heinecke  <aheinecke@intevation.de>

	po: Update formatting of pt/de
	* po/de.po, po/pt.po: Update formatting.

	Add ukrainian translation
	* po/uk.po: New.
	* po/LINGUAS: Add it.

2018-06-12  Erwin Bronkhorst  <erwinbronkhorst@gmail.com>

	Update Dutch translation.

2018-06-12  Andre Heinecke  <aheinecke@intevation.de>

	po: Update portugese translation
	* po/pt.po: Update translations.

	po: Update german translation

	Auto update po files
	* po: Update.

	Remove engine.c from potfiles
	* po/POTFILES.in: No more engine.c

	Remove removed bitmaps from extra dist
	* src/icons/Makefile.am: Update EXTRA_DIST.

2018-06-11  Andre Heinecke  <aheinecke@intevation.de>

	Clean reply / forwards of unsigned S/MIME Mails
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Improve
	reply / forward handling and check for HTML Blocked Mails to
	clean them.
	* src/windowmessages.cpp, src/windowmessages.h
	(do_in_ui_thread_async): Extend to take delay as opt. param.
	(CLEAR_REPLY_FORWARD): New message.
	(gpgol_window_proc): Handle it.

	Extend mail class for better reply/forward handling
	* src/mail.cpp, src/mail.h (Mail::set_is_reply_crypto_mail),
	(Maill::is_reply_crypto_mail, m_is_reply_crypto_mail): New flag for
	replies.
	(Mail::remove_all_attachements): New helper.
	(Mail::is_block_html): Expose the flag.

	Improve unsigned S/MIME HTML handling
	* src/mail.cpp (update_body): Improve handling and messages.

	Cleanup unused options and add a warning shown opt
	* src/common_indep.h: Update option struct.
	* src/main.c (init_options): Removed.
	(write_options, read_options): Update accordingly.
	* src/mapihelp.cpp (mapi_get_gpgol_body_attachment): Remove
	obsolete handling to show body as attachment.

2018-06-01  Andre Heinecke  <aheinecke@intevation.de>

	Clarify comment about inline pgp encoding
	* src/parsecontroller.cpp (ParseController::parse): Improve
	comment.

	Add distinct error for legacy nomdc
	* src/parsecontroller.cpp (format_error): Check for
	isLegacyCipherNoMDC.

	Try to convert clearsigned to utf8 on verify fail
	* src/parsecontroller.cpp (ParseController::parse): Try again
	with UTF-8 if verify opaque failed.

	Properly set UTF8 encoding for clearsigned
	* src/cryptcontroller.cpp(CryptController::update_mail_mapi):
	Set CPID.
	* src/mail.cpp (Mail::update_body): Fix charset variable.
	(Mail::inline_body_to_body): Also set CPID in OOM.
	* src/mymapitags.h: Define PR_INTERNET_CPID.

	Fix encoding for some inline pgp mails
	* src/mail.cpp (Mail::update_body): Use InternetCodepage if
	charset is not set by the parser.
	* src/mlang-charset.cpp (ansi_charset_to_utf8): Add handling
	for a directly provided codepage.
	* src/rfc2047parse.c (rfc2047_decode_tokens): Update caller.

	Show error status on syserror verify
	* src/mail.cpp (Mail::get_crypto_details): Show error.

	Block HTML for unsigned S/MIME messages
	* src/mail.cpp (Mail::set_block_status): New. Sets a MAPI prop
	to disable automatic HTML external references.
	(Mail::set_block_html): New. HTML content should be blocked.
	(Mail::parsing_done): check for block html.
	(Mail::update_body): Block HTML if necessary.
	* src/parsecontroller.cpp (ParseController::shouldBlockHtml): New.
	(is_valid_chksum): Check that the sig is valid even if it is
	untrusted.
	* src/mymapitags.h (PR_BLOCK_STATUS): New.
	* src/oomhelp.h (PR_BLOCK_STATUS_DASL): New.

2018-05-17  Andre Heinecke  <aheinecke@intevation.de>

	Remove unused engine based code
	* src/gpgoladdin.cpp (getCustomUI_MIME): Remove attachment
	decrypt context menu. This should be handled by windows file
	registry now.

	Remove GpgOLStr class

	Remove no MIME UI

	Remove unused bitmap icons
	* dialogs.h, dialogs.rc: Update accordingly.

	Cleanup gpgol_Sources
	* src/Makefile.am (gpgol_SOURCES): Cleanup / sort.

	Remove additional OL2007 files

2018-05-16  Andre Heinecke  <aheinecke@intevation.de>

	Remove files for Outlook 2007 / 2003 support

	Remove obsolete patch file.
	* gpgol-assuan-abi-2.patch: Remove.

2018-05-15  Erwin Bronkhorst  <erwinbronkhorst@gmail.com>

	Add Dutch translation
	* configure.ac: Bump required GPGME version.
	* po/LINUGUAS: Add dutch.
	* po/nl.po: New.
	* po/po/fr.po: Remove spurious file.

	(cherry picked from commit 64f0522227fa50a11e44e07d4b07cbef9fb8c126)

	Commit message amended and:

2018-05-11  Andre Heinecke  <aheinecke@intevation.de>

	Stop prasing on non whitepspace before PGP Message
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Again break
	on non whitespace before message marker.

2018-05-04  Andre Heinecke  <aheinecke@intevation.de>

	Fix crash when looking at msgs without content type
	* src/mapihelp.cpp (change_message_class_ipm_note): Check
	for ct before using it in string comparison.

2018-04-30  Andre Heinecke  <aheinecke@intevation.de>

	Launch Kleopatra config dialog with parent
	* src/addin-options.cpp (launch_kleo_config): New.
	(options_window_proc): Use it.

2018-04-27  Andre Heinecke  <aheinecke@intevation.de>

	po: Translate print decrypted in pt
	* po/pt.po: Add a translation.

	Disable OL 2013 / 2016 resiliency for us
	* src/gpgoladdin.cpp (setupDoNotDisable): New.
	(addGpgOLToReg): New helper.

2018-04-24  Andre Heinecke  <aheinecke@intevation.de>

	Post release version bump

	Update NEWS for todays release

	Update german translation
	* po/de.po: Translate

	Auto update po files
	* po: Auto update

	Fix internal keycache for de-vs mode
	* src/keycache.cpp (KeyCache::Private::getEncryptionKeys):
	Fix logic for deVs check.

	Fix strange crash in recipient lookup
	* src/mail.cpp (Mail::locate_keys): Add reentrancy guard.

	Fix a possible (unlikely) use after free
	* src/oomhelp.cpp (get_oom_recipients): Fix a possible
	use after release of recipient object.
	(get_recipient_addr_fallbacks): Add usual null guard.

2018-04-23  Andre Heinecke  <aheinecke@intevation.de>

	Format error if decryption was canceled
	* src/parsecontroller.cpp (ParseController::parse): Format
	error if decryption was canceled.

	Fix display of No Seckey errors
	* src/parsecontroller.cpp (format_error): At some point
	decrpyt failed was no longer set but instead it changed
	to no seckey. This is better but was not handled.

	Improve error handling on encryption
	* src/cryptcontroller.cpp (CryptController::parse_output): Handle
	the case the the user selects no encryption recipients.
	(CryptController::do_crypto): Accept error as argument and
	set it / use it.
	* src/mail.cpp (do_crypt): Handle error.

2018-04-19  Andre Heinecke  <aheinecke@intevation.de>

	Accept keys out of WKD as usable for encryption
	* src/keycache.cpp (KeyCache::getEncryptionKeys): Accept
	keys with Original WKD.

	Fix launch cert details on signature error
	* src/mail.cpp, src/mail.h (get_verification_result_dump): New.
	* src/ribbon-callbacks.cpp (launch_cert_details): Handle the
	case that we don't have a sig fingerprint.

	Add quick print context menu entry
	* src/gpgoladdin.cpp: Extend ribbon UI and callbacks.
	* src/ribbon-callbacks.cpp (print_decrypted, get_is_crypto_mail):
	New.

	Don't write OpenPGP Encrypted Message for sig only
	* src/mail.cpp (Mail::decrypt_verify): Write only
	that it is an OpenPGP or S/MIME message and not that
	its encrypted even if its only signed.

2018-04-12  Andre Heinecke  <aheinecke@intevation.de>

	Post release version bump

	Update NEWS for todays release

	Update german l10n
	* po/de.po: Translate.

	Auto update po files

	Hide attachment removal warning on revert
	* src/mail.cpp (attachment_remove_warning_disabled): New.
	(Mail::revert): Disable attachment warning.
	* src/mailitem-events.cpp: Check if warnings are disabled.

	Ignore InternetCodepage changes
	* src/mailitem-events.cpp: Ignore internetcodepage changes.

2018-04-11  Andre Heinecke  <aheinecke@intevation.de>

	Show warning if attachment of crypt mail removed
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Handle
	AttachmentRemove event and show warning if an attachment
	is removed from a crypto mail.

	Ignore received time propchange
	* src/mailitem-events.cpp (prop_blacklist): Add
	ReceivedTime to blacklist.

	Fix early deletion of temporary attachments
	* src/mail.cpp (add_attachments): Close handle before
	deletion.

	Fix spelling in german propchange warning
	* po/de.po: Fix german propchange warning.

	Implement send again for crypto mails
	* src/mail.cpp (Mail::set_is_send_again): New.
	(Mail::parsing_done): Add handling for send again.
	* src/mailitem-events.cpp: Detect a send again.

	Change S/MIME behavior depending on Exchange ver.
	* src/oomhelp.cpp, src/oomhelp.h (get_ex_major_version_for_addr): New.
	* src/cryptcontroller.cpp (create_encrypt_attach): Accept
	exchange version as parameter. Change behavior accordingly.
	(CryptController::update_mail_mapi): Add handling for exchange ver.
	* src/mimemaker.cpp (create_top_encryption_header): Accept
	exchange ver.
	* src/mimemaker.h: Update accordingly.

	Handle weirdly constructed PGP/MIME mails
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Add return
	value for empty body.
	(get_msgcls_from_first_attachment): New. factored out.
	(change_message_class_ipm_note): Use get_msgcls_from_first_attachment.

2018-04-10  Andre Heinecke  <aheinecke@intevation.de>

	Make S/MIME compatible with Exchange 2016 patched
	* src/oomhelp.h (PR_PIDNameContentType_DASL): New.
	* src/mimemaker.cpp (create_top_encryption_header): We no longer
	create the header ourself.
	* src/mail.cpp (Mail::update_crypt_oom): Here we set the header
	values now.
	* src/cryptcontroller.h (CryptController::get_protocol)
	(CryptController::is_encrypter): New accessors.
	* src/cryptcontroller.cpp (create_encrypt_attach): Write binary
	data for S/MIME. Outlook will do the base64 conversion.

	Improve acceptance of the parser
	* src/mimedataprovider.cpp (MimeDataProvider::collect_data): Relax.
	If a message starts with Content-Type it's probably a mime structure.

	Handle error in mapi update
	* src/mail.cpp (do_crypt): Handle error in mapi update.

	Sleep a bit before bringing window to front
	* src/common.c (bring_to_front): log when done.
	* src/windowmessages.cpp (gpgol_window_proc): Sleep a bit
	before bring to front.

2018-04-05  Andre Heinecke  <aheinecke@intevation.de>

	Fix encrypt to self if keycache is used
	* src/cryptcontroller.cpp (CryptController::resolve_keys_cached):
	Add sender to recipients if encrypt is selected.
	* src/keycache.cpp, src/keycache.h (KeyCache::getEncryptionKeys):
	Use a vector of strings instead of carray.

	Add helper to convert carray to vector
	* src/cpphelp.cpp, src/cpphelp.h (cArray_to_vector): New.

	Revert "Jump the event queue"
	This reverts commit a6bf8ef284d98f87a9e64ce326e2a0a55633213c.

	More saveguards and logging in get_ultimate_keys
	* src/parsecontroller.cpp (ParseController::get_ultimate_keys):
	Add more debug output and saveguards.

	Disable oom body check for MIME mails
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Disable
	safety checks.

	Log body if body was found after crypto
	* src/mail.cpp (has_crypt_or_empty_body_oom): Log body in
	very verbose logging mode.

	Also clear plain body in wipe
	* src/mail.cpp (Mail::wipe): Clear body even if clearing
	the HTML Body succeeds.

	Properly handle crypt cancel for inline mails
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Handle error
	or canceled crypt for inline mails.

	Don't access listed key on error
	* src/parsecontroller.cpp (ParseController::get_ultimate_keys):
	Don't access key data member on error.

2018-03-28  Andre Heinecke  <aheinecke@intevation.de>

	Fix S/MIME encryption with latest Exchange 2016
	* src/cryptcontroller.cpp (CryptController::update_mail_mapi):
	Set overrideMimeTag to application/pkcs7-mime for smime enc.
	* src/mimemaker.cpp (create_mapi_attachmend): Add overrideMimeTag
	paramenter.
	(create_top_encryption_header): Rearrange header for S/MIME enc.

2018-03-26  Andre Heinecke  <aheinecke@intevation.de>

	s/is_inline_response/async_crypt_disabled/

	s/should_inline_crypt/do_pgp_inline/

	Fix sending PGP/Inline synchronously
	* src/common.h: Add error code.
	* src/mail.cpp (Mail::update_crypt_mapi): Don't reset crypter
	if in sync mode.
	(Mail::update_crypt_oom): Reset crypter in sync mode.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Check that
	states for inline mail are as expected or bug out.

	Add bug error if body_to_body failed
	* src/mail.cpp (Mail::update_crypt_oom): Check for and
	handle error in inline_body_to_body.

	Add safety check to prevent unencrypted send
	* src/mail.cpp (Mail::has_crypted_or_empty_body): New.
	(Mail::update_crypt_oom): Use it.
	(has_crypt_or_empty_body_oom): New helper.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Check if
	body is empty or a crypt message before passing send on
	a crypto mail.

	Check for error on encrypt_sign_start
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Check error
	of encrypt_sign_start.

	Handle encrypt / sign on empty message
	* src/cryptcontroller.cpp (CryptController::collect_data):
	Handle empty message.

	Abort if mail has no body and no attachments
	* src/cryptcontroller.cpp (CryptController::collect_data):
	Abort if no body and no attachments.

	Add gpgol_bug helper function
	* src/common.c, src/common.h (gpgol_bug): New.
	* src/mail.cpp (do_crypt): Use it.

	Document how encryption is done in do_crypt
	* src/mail.cpp (do_crypt): Add explaining comment about the
	states.

	Don't carry around inline crypt state twice
	* src/cryptcontroller.cpp, src/cryptcontroller.h: Replace
	m_inline member variable with access to Mail::should_inline_crypt.
	* src/mail.h: Add set_should_inline_crypt.
	* src/mail.cpp: Update callers.

2018-03-23  Andre Heinecke  <aheinecke@intevation.de>

	Spellcheck german localisation
	* po/de.po: Spellcheck.

2018-03-21  Andre Heinecke  <aheinecke@intevation.de>

	Fix w64 build
	* src/ribbon-callbacks.cpp (launch_cert_details): Cast HWND w64
	compatible.

	Auto update translations
	* po/*: update.

2018-03-20  Andre Heinecke  <aheinecke@intevation.de>

	Add proper spawn flags to kleopatra initial start
	* src/ribbon-callbacks.cpp (launch_cert_details): Add spawn
	flags to fix initial show.

	Provide parent wid for certificate details
	* src/ribbon-callbacks.cpp (launch_cert_details): Add
	--parent-wid.

2018-03-15  Andre Heinecke  <aheinecke@intevation.de>

	Jump the event queue
	* src/olflange.h (ProgID): We are now Z.GNU.GpgOL

	Fix unencrypted forward of crypto mail
	* src/mail.cpp (Mail::Mail): Add new marker for forwarded
	crypto mails.
	(Mail::remove_our_attachments): New. Removes gpgol attachments.
	(Mail::set_is_forwarded_crypto_mail, Mail::is_forwarded_crypto_mail):
	New accessors to marker.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Set marker on
	forward. Handle marker on write.

	Avoid double gpgme_data_identify
	* src/parsecontroller.cpp (ParseController::parse): Store first
	identify value and reuse it.

2018-03-14  Andre Heinecke  <aheinecke@intevation.de>

	Disable async crypto for now
	* src/mail.cpp (Mail::is_inline_response): Treat every mail
	as inline response exept when DO_ASYNC_CRYPTO is defined.

	Remove error handling for failure to resolve
	* src/cryptcontroller.cpp (CryptController::do_crypto):
	Remove an error handling.

	Add small safety check in ribbon callback
	* src/ribbon-callbacks.cpp (get_is_details_enabled): Add
	safety check.

	Further extend debugging around mail dtor
	* src/mail.cpp (do_crypt): Note when ui thread is done.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Log when deletion
	is done in unload.
	* src/windowmessages.cpp (gpgol_window_proc): Log when crypto
	done handler is complete.
	(do_async): Log invocation.

2018-03-13  Andre Heinecke  <aheinecke@intevation.de>

	Implement forwarding crypto mails with attachments
	* src/application-events.cpp (EVENT_SINK_INVOKE): Invalidate last
	mail in the next UI Loop.
	* src/mail.cpp (Mail::update_body): Safety check for parser. Keep
	parser around.
	(Mail::invalidate_last_mail): New. Clear cached last mail ptr.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Extend write
	event to detect forward of mails with attachments.
	* src/oomhelp.cpp (get_inline_body): New.
	* src/oomhelp.h: Update accordingly.
	* src/windowmessages.cpp, src/windowmessages.h
	(INVALIDATE_LAST_MAIL, REVERT_MAIL): New messages.
	* src/wks-helper.cpp (WKSHelper::send_mail): Check if last
	mail was invalidated.

	Improve error handling on enc/sign errors
	* src/cryptcontroller.cpp (CryptController::do_crypto):
	Improve error handling.
	* src/mail.cpp (do_crypt): Use correct window and hide overlay /
	destroy crypter before showing the error. Add better text for
	general "Crypto failed" error.

2018-03-12  Andre Heinecke  <aheinecke@intevation.de>

	Turn up debugging at the end of crypto
	* src/mail.cpp (Mail::~Mail): Very verbose logging in oom_extra.
	(Mail::~Mail): Use release_cArray. Explicitly null shared ptrs.
	(do_crypt): Log when done.
	(Mail::update_oom_data): Use release_cArray.

	Update portuguese translation
	* po/pt.po: Update.

2018-03-07  Andre Heinecke  <aheinecke@intevation.de>

	Bump Version to 2.1.0 and update NEWS

	Fix protocol selection for autoresolve
	* src/cryptcontroller.cpp (CryptController::resolve_keys_cached):
	Handle Protocol.

	Improve error handling and fix encoding
	* src/cryptcontroller.cpp: Take care that command line
	args are not encoded to utf8.
	* src/mail.cpp (do_crypt): Inform user when crypto failed.

	Fix deadlock in Outlook 2010
	* src/mail.cpp (do_crypt): In Outlook 2010 sending destroys
	the Mail. So we may not hold the dtor lock for the send call.

	Update translations and fix some german strings
	* po: Update.

	Provide protocol argument to resolver
	* src/cryptcontroller.cpp (CryptController::resolve_recipients):
	Use Protocol parameter if S/MIME is disabled.

	Add cryptcontroller to Potfiles
	* po/POTFILES.in: Add cryptcontroller.

	Auto update translations
	* po/: update.

	Allow Inline for signed & encrypted with GSuite
	* src/mail.cpp (Mail::encrypt_sign_start): Relax GSuite checks.

2018-03-06  Andre Heinecke  <aheinecke@intevation.de>

	Prefer Sender over SendUsingAccount for crypt mail
	* src/mail.cpp (Mail::update_oom_data): Prefer the
	Sender fallbacks before using sendUsingAccount for crypto mail
	(reading).

	Factor sender fallbacks into seperate functs
	* src/mail.cpp (Mail::update_oom_data): Move out sender fallbacks.
	* src/oomhelp.cpp, src/oomhelp.h (get_sender_CurrentUser),
	(get_sender_Sender, get_sender_SenderEMailAddress)
	(get_sender_SendUsingAccount): New.

	Bring Outlook back into focus after enc/sign
	* src/mail.cpp (do_crypt): Send BRING_TO_FRONT message
	after encryption.
	* src/windowmessages.cpp, src/windowmessages.h: New call
	to bring the active outlook window to front.

	Add new Window Message helper
	* src/windowmessages.cpp (do_async, do_in_ui_thread_async):
	Add new fire and forget window messaging helper.
	* src/windowmessages.h: Update accordingly.

	Be more lenient with broken PGP Inline messages
	* src/mimedataprovider.cpp (MimeDataProvider::collect_data):
	Fix up PGP Messages.

	Add trim and ltrim to cpphelp
	* src/cpphelp.cpp (ltrim, trim): New.
	* src/cpphelp.h: Update accordingly.

	Auto update translation
	* po/de.po: Msgmerge moves the newline.

	Fix w64 build
	* src/cryptcontroller.cpp (CryptController::resolve_keys): Use
	SIZE_T_FORMAT and hwnd conversion.
	* src/overlay.cpp (Overlay::Overlay): HWND cast to int is ok.

2018-03-05  Andre Heinecke  <aheinecke@intevation.de>

	Update german translation
	* po/de.po: Update german translation.

	Auto update po files
	* po: Update.

	Add new files to POTFILES.in
	* po/POTFILES.in: Add new files.

	Update german localisation
	* po/de.po: Update

	Auto update po files
	* po: Update.

	Relabel autoresolve option to reflect new functs
	* src/addin-options.cpp (IDC_AUTORRESOLVE): Relabel autoresolve.
	It's now also working for S/MIME and does more then just
	locate keys.

	Implement Load / Save for WKS States
	* src/wks-helper.cpp (WKSHelper::load, WKSHelper::save): Implement.
	(WKSHelper::check_published): New.
	(do_check): Also check for published.
	(WKSHelper::update_last_checked): New.
	(WKSHelper::start_check): Handle saved states.

	Add helpers to store string map in registry
	* src/common.c (store_extension_subkey_value): New.
	(GPGOL_REGPATH): Move into header.
	* src/common.h: Expose store_extension_subkey_value.
	* src/cpphelp.cpp (get_registry_subkeys): New.
	(gpgol_split): New Helper.
	* src/cpphelp.h: Update accordingly.

2018-03-02  Andre Heinecke  <aheinecke@intevation.de>

	Move registry helper code into common
	* src/common.c (load_extension_value, store_extension_value),
	(store_config_value, load_config_value, expand_path): Moved
	from config-dialog.c
	* src/config-dialog.c: Remove moved functions.

2018-03-01  Andre Heinecke  <aheinecke@intevation.de>

	Use keycache to autoresolve
	* lots of changes.

	Bring mail to front after encryption
	* src/overlay.cpp (Overlay::~Overlay): Bring old window to front.

	Minor wait cleanup in overlay
	* src/overlay.cpp (Overlay::~Overlay): Wait afteer writing
	the quit.

	Localize keyresolver
	* src/cryptcontroller.cpp (CryptController::resolve_keys):
	Add --lang argument.

	Add keycache for located keys
	* src/keycache.cpp, src/keycache.h: New.
	* src/Makefile.am: Add new files.
	* src/mail.cpp (in_de_vs_mode): Move to cpphelp.
	Rename global maps to s_ prefix to be more clear.
	(Mail::locate_keys): Use keycache.
	(do_locate): Removed.
	(Mail::locate_all_crypto_recipents): New.
	* src/cpphelp.cpp: Add in_de_vs_mode.
	* src/ribbon-callbacks.cpp (mark_mime_action): Trigger
	locate on crypto toggle.

	Fix surprising toggle behavior
	* src/ribbon-callbacks.cpp (mark_mime_action): If a sub action
	was active click on secure activates both sign and encrypt.

2018-02-27  Andre Heinecke  <aheinecke@intevation.de>

	Merge branch 'master' into async-enc

	Check first for view before accessing selection
	* src/ribbon-callbacks.cpp (get_mail_from_control): Only
	access the item selection after we checked if we have a
	preview pane / word editor.

2018-02-26  Andre Heinecke  <aheinecke@intevation.de>

	Fix multipart/signed detection if ms-tnef wrapped
	* src/mapihelp.cpp (change_message_class_ipm_note_smime),
	(change_message_class_ipm_note_smime_multipartsigned): Handle tnef.

	Add some more sender address lookups
	* src/mail.cpp (Mail::update_oom_data): Add more sender fallbacks.
	* src/oomhelp.h: Define new DASL's

2018-02-22  Andre Heinecke  <aheinecke@intevation.de>

	Fix WKS-Confirm mail detection
	* src/mapihelp.cpp (mapi_get_message_content_type): Comparing
	an empty line would result in wks confirm detection.

	Print error when decryptresult is null
	* src/parsecontroller.cpp (format_error): Print an error
	when decrypt is requested but the result is null. This means
	that parsing failed.

	Handle MS-TNEF PGP/MIME Mails
	* src/mapihelp.cpp (get_first_attach_mime_tag): Work with more
	then one attachment.
	(change_message_class_ipm_note): More ms-tnef handling.

	Implement handling of WKS-Confirmation mails
	* src/common_indep.h (msgtype_t): New messagtype for WKS_Confirm
	mails.
	* src/mail.cpp (Mail::decrypt_verify): Handle new message type.
	(Mail::is_smime): Clarify an error message.
	* src/mapihelp.cpp
	(change_message_class_ipm_note_smime_multipartsigned),
	(string_to_type, mapi_change_message_class),
	(mapi_get_message_content_type): Handle
	wks confirmation mails.
	* src/message.cpp: Default / ignore new message type in old code.
	* src/wks-helper.cpp: Lots of changes.

2018-02-20  Andre Heinecke  <aheinecke@intevation.de>

	Use gpgol_message_box in wks-helper
	* src/wks-helper.cpp (WKSHelper::notify),
	(WKSHelper::start_publish): Use gpgol_message_box.

	Add UTF8 and Icon Message Box helper
	* src/common.c (gpgol_message_box): New.
	* src/common.h (gpgol_message_box): Declare.
	* src/dialogs.h, src/dialogs.rc: Add icon.
	* src/icons/Makefile.am (EXTRA_DIST): Add icon.
	* src/icons/lock.ico: New.

	Fix setting the account for WKS Mails
	* src/oomhelp.cpp (put_oom_disp): For VT_DISPATCH it is
	DISPID_PROPERTYPUTREF and not DISPID_PROPERTYPUT.
	* src/wks-helper.cpp (WKSHelper::send_mail): Properly release
	account.

2018-02-16  Andre Heinecke  <aheinecke@intevation.de>

	Implement WKS-Client request sending
	* src/wks-helper.cpp (WKSHelper::send_mail): New.
	* src/wks-helper.h: Update accordingly.

	Add oom helper to create mail and handle accounts
	* src/oomhelp.cpp (create_mail): Create a new mail.
	(get_account_for_mail): Get an account for a mail address.
	(put_oom_disp): New.
	* src/oomhelp.h: Update accordingly.

	Make it possible to get the last created mail
	* src/mail.cpp (Mail::get_last_mail): New.
	* src/mail.h: Update accordingly.

	Add possibility to override mime struct for mail
	* src/cryptcontroller.cpp (update_mail_mapi): Prefer override mime.
	* src/mail.cpp (Mail::set_override_mime, Mail::get_override_mime):
	New.
	(Mail::update_crypt_mapi): Create dummy crypter for overidden mime.

	Add notification handling to WKS Helper
	* src/windowmessages.cpp,
	src/windowmessages.h (WKS_NOTIFY): New.
	* src/wks-helper.cpp, src/wks-helper.h: Add more code.

	Fix detection of unencrypted mails in send
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Check
	state before passing send.

	Add EnableWindow functionality to Overlay
	* src/overlay.cpp (Overlay::~Overlay): Enable window.
	(Overlay::Overlay): Disable window.
	* src/overlay.h (m_wid): New member.

	Put overlayer calls in a simple RAII class
	* src/Makefile.am: Add overlay.
	* src/cryptocontroller.cpp (start_crypto_overlay): Move code
	into seperate class.
	(stop_crypto_overlay): Removed. Unique ptr takes care of that.
	* src/cryptocontroller.h: Update accordingly.
	* src/overlay.cpp, src/overlay.h: New.

	Implement WKS Supported check
	* src/Makefile.am: Add wks-helper
	* src/wks-helper.cpp: New.
	* src/wks-helper.h: New.
	* src/cryptcontroller.cpp (CryptController::do_crypto): Trigger
	WKS Check when doing crypto.

	Fix minor memleak
	* src/cryptcontroller.cpp (CryptController::do_crypto): Free
	gpg4win_dir.

	Factor out common cpp helper to cpphelp
	* src/cryptcontroller.cpp (release_carray, vector_to_charArray)
	(rtrim): Move into cpphelp.
	* src/cpphelp.cpp, src/cpphelp.h: New.
	* src/Makefile.am: Add it.

2018-02-14  Andre Heinecke  <aheinecke@intevation.de>

	Use overlayer tool for "encrypting..." overlay
	* src/cryptcontroller.cpp (CryptController::~CryptController):
	Ensure overlay is stopped.
	(vector_to_charArray): New helper.
	(CryptController::lookup_fingerprints): User helper.
	(CryptController::resolve_keys): Start crypto overlay.
	(CryptController::stop_crypto_overlay),
	(CryptController::start_crypto_overlay): New.
	* src/cryptcontroller.h: Update accordingly.
	* src/mail.cpp (Mail::reset_crypter): New.
	(do_crypt): Reset crypter on error.
	* src/mail.h: Update accordingly.

	Do sign then encrypt for MIME mails again
	* src/cryptcontroller.cpp (do_crypto): Do two step dance.

	Take micalg from the created signature
	* src/cryptcontroller.cpp (CryptController::parse_micalg): New.
	(CryptController::update_mail_mapi): Pass micalg.
	(create_sign_attach): Take micalg.
	* src/cryptcontroller.h: Update accordingly.

	Fix S/MIME Encrypt
	* src/cryptcontroller.cpp (create_encrypt_attach): Write binary
	as base64.

	Fix S/MIME Signature in new architecture
	* src/cryptcontroller.cpp (CryptController::do_crypto):
	Set text mode and armor only for PGP
	(create_sign_attach): Write signature as base64 for S/MIME.
	* src/mimemaker.h, src/mimemaker.cpp (write_b64): Export.

	Start fixing S/MIME
	* src/cryptcontroller.h (m_bodyInput): Place to cache
	the plain text body.
	* src/cryptcontroller.cpp (CryptController::collect_data):
	Collect body into special data variable.
	(CryptController::lookup_fingerprints),
	(CryptController::parse_output),
	(CryptController::resolve_keys): Basically handle S/MIME.

	Revert "Launch Kleo/GPA in the background on start"
	This reverts commit 13950a98522818b27b3048617acb0282b65b54b3.

	Minor cleanup

	Fix parsing of command lines
	* src/cryptcontroller.cpp (CryptController::parse_output):
	rtrim parsed lines.

	Bring mail window to front after keyresolution
	* src/common.c, src/common.h (bring_to_front): New.
	* src/cryptcontroller.cpp (CryptController::resolve_keys): Use it.

	Fix state machine for PGP/Inline mails
	* src/mail.cpp, src/mail.h (Mail::WantsSendMIME)
	(Mail::WantsSendInline): More explicit states.
	(Mail::update_crypt_oom): Switch into Inline send for inline
	body.
	(Mail::update_crypt_mapi): Switch into WantsSendMime.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Pass inline mails
	directly.

	Implement key parsing in cryptcontroller
	* src/cryptcontroller.cpp (release_recipient_array): Renamed.
	(rtrim): New helper.
	(CryptController::lookup_fingerprints): New. Resolve keys from
	fingerprints.
	(CryptController::parse_keys): Renamed to parse_output.
	* src/cryptcontroller.h: Update accordingly.

	Add mail window id accessor
	* src/mail.h (Mail::get_window): New.

2018-02-12  Andre Heinecke  <aheinecke@intevation.de>

	Merge branch 'master' into async-enc

	Use different offsets for windowmessages
	* src/windowmessages.cpp (gpgol_window_proc)
	(send_msg_to_ui_thread): Use WM_USER + 42
	* src/windowmessages.h: Start enum at 1100.

	Hold invalidation lock while parsing
	* src/mail.cpp (do_parsing): Hold invalidation lock.
	* src/windowmessages.h: Expose invalidation lock.
	* src/windowmessages.cpp: Define / initialize lock.

	Use delayed invalidation when parsing is done
	* src/mail.cpp (Mail::parsing_done): Use delayed invalidation.

	Log errors strings
	* src/mail.cpp (Mail::update_body): Log errors.

	Remove overly plain leaking debug output
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Don't print
	full body in debug output.

	Shorter and more careful window disabling
	* src/mail.cpp (do_crypt): Ensure window is renabled on error.
	(Mail::encrypt_sign_start): Disable window here.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Don't disable
	window in event.

	Start impl. new key resolution with resolver
	* src/cryptcontroller.cpp (release_recipient_array),
	(CryptController::parse_keys): New helpers.
	(CryptController::resolve_keys): Prepare args and launch resolver.
	* src/mail.cpp, src/mail.h (Mail::get_cached_sender): New helper
	to ensure getting sender without oom or mapi.

2018-01-31  Andre Heinecke  <aheinecke@intevation.de>

	Fix inline responses by making them sync
	* src/mail.cpp (Mail::is_inline_response),
	(Mail::check_inline_response): New.
	(do_crypt): Work sync for inline response.
	* src/mailitem-events.cpp: Work sync for inline response.

	Reactivate T3656 workaround
	* src/mailitem-events.cpp: Reactivate workaround.

	Fix window modality of encryption
	* src/mail.cpp: Add new member m_window.
	(do_crypt): Renable window when done.
	(Mail::set_window_enabled): New.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp: Disable mail window on crypt send.
	* src/oomhelp.cpp (get_active_hwnd): Add some fallbacks.

2018-01-30  Andre Heinecke  <aheinecke@intevation.de>

	Implement MIME Sign in the new way
	* src/cryptcontroller.cpp (create_sign_attach): New.
	(CryptController::update_mail_mapi): Handle sign only.
	* src/mimemaker.h, src/mimemaker.cpp: Expose more functions.
	* src/mail.cpp (do_crypt): Remove sleep ;-)

	Make MIME encrypt work in the new way
	* src/cryptcontroller.cpp (CryptController::update_mail_mapi):
	Do actual update.
	(create_encrypt_attach): Helper to set up the right attachment.
	(write_data): Helper to write GpgME::Data to a sink.
	* src/mail.cpp (Mail::update_crypt_mapi): Call update_mail_mapi.
	* src/mimemaker.cpp, src/mimemaker.h: Export some more helpers.

	Make inline encryption work in the new way
	* src/cryptcontroller.cpp (CryptController::resolve_keys):
	Dummy. Should resolve keys in the future.
	(CryptController::do_crypto): Do something.
	(CryptController::get_inline_data): Take data as string.
	* src/cryptcontroller.h Update accordingly.
	* src/mail.cpp (Mail::append_to_inline_body): Use cryptcontroller.

	Continue work on async encrypt
	* src/mail.cpp (do_crypt): Sleep as a dummy.
	(Mail::update_crypt_oom): Add some code.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Move some code
	to update_crypt_oom.

	First steps for async encryption handling
	* src/Makefile.am (gpgol_SOURCES): Add new files.
	* src/common_indep.h (log_mime_data): Shorthand for DBG_MIME_DATA.
	* src/cryptcontroller.cpp, src/cryptcontroller.h: New. Similar
	to parsecontroller but the other way around.
	* src/mail.cpp (do_crypt): New. Thread helper.
	(Mail::encrypt_sign): Renamed to Mail::encrypt_sign_start. And
	changed to use cryptcontroller.
	(Mail::update_crypt_mapi): New. Dummy.
	(Mail::update_crypt_oom): New. Dummy.
	(Mail::CryptState): Helper state for encryption.
	* src/mailitem-events.cpp: Add proof of concept for new enc.
	* src/mimemaker.h (add_body_and_attachments): Export.
	* src/windowmessage.h, src/windowmessages.cpp (CRYPTO_DONE): New.

2018-01-12  Andre Heinecke  <aheinecke@intevation.de>

	Post release version bump
	* po: Auto update.

	Update NEWS

	Fix multipart signed mails
	* src/mimemaker.cpp (add_body_and_attachments): Add extra line for
	multipart/related and multipart/alternative.

2018-01-11  Andre Heinecke  <aheinecke@intevation.de>

	Add cmt to clarify base / non base msg usage

	Add special sauce for Outlook S/MIME code interact
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Check if after
	encryption msgclass is not gpgol on MAPI Message and activate
	Hack if otherwise.
	* src/windowmessage.cpp (delayed_close, CLOSE): New.
	* src/windowmessage.h: Update Accordingly.

	Revert increased verbosity for T3656

	Fix w64 build
	* src/mimemaker.cpp (sink_std_write): Fix format for x64

	Increase Verbosity for issue3656

	Update NEWS

2018-01-10  Andre Heinecke  <aheinecke@intevation.de>

	Change PGP/Inline behavior
	* src/mail.cpp (Mail::append_to_inline_body): New.
	(Mail::inline_body_to_body): Put cached body into oom body.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Call inline_body_to_body.
	* src/mimemaker.cpp (sink_string_write): New.
	(finalize_message): Don't change message class for inline.
	(create_top_encryption_header): No MIME header for inline.
	(mime_encrypt): Use sink_string_write if inline.

2018-01-09  Andre Heinecke  <aheinecke@intevation.de>

	Cache recipients trough oom and add fallbacks
	* src/mail.cpp (Mail::update_oom_data): Also cache recipients
	from oom.
	(Mail::Mail): Initialize cached recipients.
	(Mail::~Mail): Free cached recipients.
	(Mail::take_cached_recipients): New.
	* src/mail.h: Update accordingly.
	* src/message.cpp (get_recipients): Improve logging.
	(sign_encrypt): Use cached recipients.
	* src/oomhelp.cpp (get_oom_object): Tune down error.
	(get_recipient_addr_fallbacks): New.
	(get_oom_recipients): Improve with more fallbacks.
	* src/oomhelp.h (PR_EMS_AB_PROXY_ADDRESSES_DASL): Define.

2018-01-08  Andre Heinecke  <aheinecke@intevation.de>

	Fix return type for mails with override msgcls
	* src/mapihelp.cpp (mapi_change_message_class): Improve logging
	in override case.
	(mapi_change_message_class): Ensure r_type is set correctly.

	Improve some debug outputs
	* src/mail.cpp(Mail::pre_process_message): Log item ptr.
	(Mail::decrypt_verify): Log on bailout for non crypto mail.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE(MailItemEvents)):
	Log on bailout for non crypto mail.

	Fix memleak in mail object
	* src/mail.cpp (Mail::~Mail): Free cached body information.

2017-12-12  Andre Heinecke  <aheinecke@intevation.de>

	Take plain body from OOM and not MAPI
	* src/mail.cpp (Mail::Mail): Initialize cache variables.
	(Mail::take_cached_html_body): Optimize as take to avoid
	string copies.
	(Mail::take_cached_plain_body): New.
	(Mail::update_oom_data): Also cache plain body.
	* src/mail.h: Update accordingly.
	* src/mimemaker.cpp (add_body): Adapt to take html
	body logic.
	(do_mime_sign, mime_encrypt): Prefer cached body over MAPI.

2017-12-08  Andre Heinecke  <aheinecke@intevation.de>

	Fix g sync account warning
	* src/mail.cpp (Mail::encrypt_sign): Handle encoding
	(Mail::Mail): Initialize check correctly.

	Auto update po files

	Post release version bump

	Update news

	Update german translation

	Auto update po files

	Minor cleanup

	Fix minor memleaks
	* src/mail.cpp (Mail::close_inspector): Release inspector.
	(Mail::check_attachments): Don't leak DisplayName.

	Fix handling of attachments without extension
	* src/common.c (get_tmp_outfile): Handle the case that
	fileext is NULL.

2017-12-05  Andre Heinecke  <aheinecke@intevation.de>

	Post release version bump

	Update NEWS for todays release

2017-12-02  Andre Heinecke  <aheinecke@intevation.de>

	Fix german localisation error

	Read Headers as stream
	* src/mapihelp.cpp (mapi_get_header): New helper.
	(mapi_get_message_content_type): Use it.

	Improve performance of beforeRead handling
	* src/mapihelp.cpp (string_to_type): New Helper.
	(mapi_get_message_type, mapi_change_message_class): Use it.
	(mapi_change_message_class): Take optional type retval.
	* src/inspectors.cpp, src/session-events.cpp,
	src/user-events.cpp, src/message.cpp: Udpate calls.

2017-11-30  Andre Heinecke  <aheinecke@intevation.de>

	Add warnings about unsupported G Sync actions
	* src/mail.cpp (Mail::update_oom_data): Save if account
	is gsync account.
	(Mail::encrypt_sign): Warn / Block actions for GSync accounts.
	* src/mimemaker.cpp (count_usable_attachments): Expose so that
	it can be used in Mail.

	Fix logic error in two options
	* src/main.c (read_options): Fix reading autoresolve and
	replyCrypt.

2017-11-29  Andre Heinecke  <aheinecke@intevation.de>

	Implement basic PGP/Inline support for Encryption
	* src/mail.cpp (Mail::encrypt_sign): Mark down if inline is
	requested.
	* src/mail.h (Mail::should_inline_crypt): New.
	* src/mimedataprovider.cpp (MimeDataProvider::collect_input_lines):
	Handle "MIME Inline" for our own sent messages.
	* src/mimemaker.cpp (finalize_message): Handle is_inline.
	(create_top_encryption_header): Handle is_inline to write
	text/plain header.
	(mime_encrypt): Support inline if no attachments exist.

	Supress error message if UID not found
	* src/oomhelp.cpp (get_pa_variant): Add an extra check
	before the error.

2017-11-28  Andre Heinecke  <aheinecke@intevation.de>

	Fix sender fallbacks in update_oom_data
	* src/mail.cpp (Mail::update_oom_data): Fix sender fallbacks.

	Fix possible race bug of a crash observed
	* src/mail.cpp (Mail::close_all_mails): Check for valididy
	of mail object before closing.

	Handle ms-tnef classified PGP/Inline mails
	* src/mail.cpp (get_attachment_stream): Add fallback
	if attachment count is zero even if we think it's ciphered.
	* src/mapihelp.cpp (get_internetcharsetbody_tag): Not
	getting internet charset body happens for ms-tnef. Debug only.
	(get_msgcls_from_pgp_lines): Use mapi_get_body_as_stream.
	(change_message_class_ipm_note): Look into application/ms-tnef.

	Abort attachment open early if attachment count 0
	* src/mail.cpp (get_attachment): Abort earlier if
	attachment count is zero.

	Minor spacing issue in german translation
	* po/de.po: Fix minor spacing issue.

2017-11-27  Andre Heinecke  <aheinecke@intevation.de>

	Make it compile

	Add checks to avoid assigning NULL to std::string
	* src/mail.cpp (Mail::update_oom_data): Safeguard against
	NULL assignment to std::string.

	Improve error handling for signed only
	* src/mail.cpp (Mail::get_crypto_details): Add msg for
	verification error.
	* src/ribbon-callbacks.cpp (get_sig_stip): Get mails
	details for failed verification results.

	Restore body on verification error
	* src/mail.cpp (Mail::update_body): Restore body if verify
	fails.
	(Mail::decrypt_verify): Save original body.

2017-11-24  Andre Heinecke  <aheinecke@intevation.de>

	Fix multiple selection performance
	* src/ribbon-callbacks.cpp (get_mail_from_control): Treat
	multiselection like no mail is selected.

	Additional check for mail destruction before parse
	* src/mail.cpp (do_parsing): Check if mail was deleted while
	waiting for lock.

	Remove some disabled OL 2007 compat

	Improve / Fix UI Invalidation
	* src/explorers-events.cpp (EVENT_SINK_INVOKE): Don't cancel
	invalidation when preview is disabled. Call delayed_invalidate_ui.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Use
	delayed_invalidate_ui.
	* src/windowmessages.cpp (delayed_invalidate_ui): New.

2017-11-20  Andre Heinecke  <aheinecke@intevation.de>

	Launch Kleo/GPA in the background on start
	* src/engine-assuan.c (spawn_background): New.
	(op_assuan_init): Create background thread to launch kleo.

	Post release version bump

	Update NEWS for todays release

	Auto update PO files

	Add tracing in engine-assuan for T3401

	Bail out immediately on send if crypt not needed
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Break early
	in case mail is not encrypted.

2017-11-17  Andre Heinecke  <aheinecke@intevation.de>

	Add more fallbacks and error for body wipe
	* src/mail.cpp, src/mail.h (Mail::wipe): Add force parameter.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Check for
	OOM wiped body and try again to wipe it in case there is
	something.

	Revert "Add some more tracing in mail"
	This reverts commit 8d5e9d19ecaf0f753b5204a70d72d2505b373048.

	Clarify comment about send event

2017-11-16  Andre Heinecke  <aheinecke@intevation.de>

	Use table view reading pane for OL <= 2013
	* src/explorer-events.cpp (EVENT_SINK_INVOKE),
	src/ribbon-callbacks.cpp (get_mail_from_control): Check
	version to determine codepath.

	Remove deleted file from potfiles

	Post release version bump

	Update NEWS

	Auto update translations

	Fix Outlook 2010 TabComposeTools error
	* src/gpgoladdin.cpp (GetCustomUI_mime): Handle OL2010
	differently.

	Add comment about ref counting in get_oom_obj

2017-11-15  Andre Heinecke  <aheinecke@intevation.de>

	Ugly fix for ugly crash when pasting recipients
	* src/mailitem-events.cpp (do_delayed_locate): Delay
	a RECIPIENT_ADDED Signal.
	(EVENT_SINK_INVOKE): Only trigger once per change. Invoke
	delayed thread.
	* src/windowmessages.cpp (gpgol_window_proc): Handle
	Recipient Added signal.

	Lock key lookup map
	* src/mail.cpp (do_locate): Comment out useless message.
	(Mail::locate_keys): Guard list access with lock.

	Fix ref leak of recipients obj
	* src/mail.cpp (get_recipients): Unref recipients obj.

	Typos and spelling in comment about last commit

	Workaround crash when accessing CurrentView
	* src/explorer-events.cpp (EVENT_SINK_INVOKE),
	src/ribbon-callbacks.cpp (get_mail_from_control): Use
	preview pane instead.

	Return correct charset for html
	* src/parsecontroller.cpp (get_html_charset): Do it.

2017-11-10  Andre Heinecke  <aheinecke@intevation.de>

	Fix reversion for S/MIME mails if S/MIME disabled
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Revert
	again if S/MIME is disabled but we parsed the mail.

	Fix handling of "own" S/MIME Mails
	* src/mimedataprovider.cpp (MimeDataProvider::collect_data):
	Expect headers if the first line of the data starts with MIME-Version.

	Add some more tracing in mail
	* src/mail.cpp (Mail::update_body): Add some traces.

	Fix build example by adding --enable-static

	Remove obsolete info from README

	Improve debug output in parsecontroller
	* src/parsecontroller.cpp: Debug detected type.

2017-10-16  Jochen Saalfeld  <privat@jochen-saalfeld.de>

	Update Portugese translations
	* po/pt.po: Update

2017-09-14  Andre Heinecke  <aheinecke@intevation.de>

	Post release updates

	Fix regression for multipart/signed mails
	* src/mapihelp.cpp (mapi_change_message_class): Call
	change_message_class_ipm_note_smime_multipartsigned even
	if S/MIME is disabled.

2017-09-12  Andre Heinecke  <aheinecke@intevation.de>

	Post release updates

	Release GpgOL 2.2.0

	Auto: Update translations
	* po: Auto update.

	Update german translation
	* po/de.po: Update translation.

	Increase Options dialog width
	* src/dialogs.rc (IDD_ADDIN_OPTIONS): Increase width by 20px

2017-09-04  Jochen Saalfeld  <privat@jochen-saalfeld.de>

	Fixing typo and consistency in addin-options dialogue

2017-08-28  Jochen Saalfeld  <privat@jochen-saalfeld.de>

	Update Portugese translations
	* po/pt.po: Update

2017-08-25  Andre Heinecke  <aheinecke@intevation.de>

	Only do debug output if enableDebug is set
	* src/common_indep.c (do_log): Abort if enable_debug is
	not set.

	Delete Body MAPI Props after MIME creation
	* src/mimemaker.cpp (finalize_message): Delete Body Props.

	Add more debug output during parsing
	* src/mail.cpp (Mail::decrypt_verify): Put out parser + subject.
	* src/parsecontroller.cpp (ParseController::parse): Add more debug.

	Fix compliance mode check
	* src/mail.cpp (in_de_vs_mode): Fix logic.

	Fix handling of inline PGP Mails with attachment
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): Repeat check
	after attachment creation.

2017-08-21  Andre Heinecke  <aheinecke@intevation.de>

	Fix encoding error for unsigned / unencrypted
	* src/ribbon-callbacks.cpp (get_sig_stip): Use utf8-gettext.

	Be more relaxed if something is before PGP Marker
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Remove abort
	statement for text before message.

	Accept more inline PGP Messages
	* src/mapihelp.cpp (change_message_class_ipm_note): Accept
	html only and multipart/related to check for pgp lines.

	Add hack to replace doubled linefeeds
	* src/mail.cpp (Mail::update_body): Replace doubled linefeeds before
	a newline.
	(find_and_replace): New helper.

	Improve formatting if VS-NFD is active
	* src/mail.cpp (Mail::get_crypto_details): Add a linefeed.

	Fix message for unsigned mails
	* src/mail.cpp (Mail::get_crypto_details): Return earlier.

	Handle Symmetric encryption
	* src/mail.cpp (Mail::parsing_done, Mail::update_categories)
	(Mail::is_encrypted): Use decryptResult.isNull instead of numRecp.

2017-07-27  Andre Heinecke  <aheinecke@intevation.de>

	Update German translation

	Auto update po files

	Change VS to VS-NfD for deVS stuff
	* src/mail.cpp (Mail::get_crypto_details): Change VS to VS-NfD

2017-07-25  Andre Heinecke  <aheinecke@intevation.de>

	Do German translation
	* po/de.po: Translate.

	Auto: Update po files

	Ensure that the correct window is enabled again
	* src/mail.cpp (encrypt_sign): Store window handle.

2017-07-10  Andre Heinecke  <aheinecke@intevation.de>

	Add handling for de-vs compliant results
	* configure.ac: Bump required GPGME version to 1.9
	* src/mail.cpp (in_de_vs_mode): New helper.
	(Mail::get_crypto_details): Add texts about de-vs states.
	(Mail::get_signature_level): Only return 3 or 4 in vs-mode if
	the signature was actually de-vs compliant.

2017-05-14  Andre Heinecke  <aheinecke@intevation.de>

	Add deprecation warning for OL2003/2007
	* src/common_indep.h (opt.deprecation_shown): New option.
	* src/main.c (write_options, read_options): Handle new option.
	* src/olflange.cpp: Show warning for old versions.

	Make it possible to register locally as user
	* src/olflange.cpp (DllRegisterServer): Register depending on
	elevation level.

	Add UAC elevation check
	* src/common.c (is_elevated, has_high_integrity): New.
	* src/common.h (is_elevated): Exposed.

2017-05-08  Andre Heinecke  <aheinecke@intevation.de>

	Fix implicit vector include
	* src/mimedataprovider.cpp: Fix build with newer stdc++ lib.

	Fix misleading indentation warning
	* src/w32-gettext.c (internal_gettext): Fix misleading indentation
	warning.

2017-04-25  Andre Heinecke  <aheinecke@intevation.de>

	Add missing copyright statements
	* src/common.c,
	src/common.h,
	src/mimemaker.h,
	src/revert.cpp: Add copyright.

	Unify Copyright header indentation

	Change copyright from Intevation to BSI
	* src/Makefile.am,
	src/addin-options.cpp,
	src/addin-options.h,
	src/application-events.cpp,
	src/attachment.cpp,
	src/attachment.h,
	src/common_indep.c,
	src/common_indep.h,
	src/eventsink.h,
	src/eventsinks.h,
	src/exechelp.c,
	src/exechelp.h,
	src/explorer-events.cpp,
	src/explorers-events.cpp,
	src/gpgoladdin.cpp,
	src/gpgoladdin.h,
	src/gpgolstr.cpp,
	src/gpgolstr.h,
	src/icons/Makefile.am,
	src/mail.cpp,
	src/mail.h,
	src/mailitem-events.cpp,
	src/mimedataprovider.cpp,
	src/mimedataprovider.h,
	src/mimemaker.cpp,
	src/mlang-charset.cpp,
	src/mlang-charset.h,
	src/mymapi.h,
	src/oomhelp.cpp,
	src/oomhelp.h,
	src/parsecontroller.cpp,
	src/parsecontroller.h,
	src/rfc2047parse.c,
	src/rfc2047parse.h,
	src/ribbon-callbacks.cpp,
	src/ribbon-callbacks.h,
	src/windowmessages.cpp,
	src/windowmessages.h,
	tests/Makefile.am,
	tests/run-parser.cpp,
	tests/t-parser.cpp: Change copyright to BSI.

2017-03-23  Andre Heinecke  <aheinecke@intevation.de>

	Set the sender on verify / decrypt
	* src/mail.cpp (Mail::decrypt_verify): Set sender on parser.
	* src/parsecontroller.cpp (ParseController::setSender): Add API

2017-03-03  Andre Heinecke  <aheinecke@intevation.de>

	Add locate-keys option again
	* src/addin-options.cpp: Uncomment autoresolve.
	* src/dialogs.rc: Update accordingly.

	Improve german translation

2017-02-07  Werner Koch  <wk@gnupg.org>

	Assign maintainer

2017-01-17  Andre Heinecke  <aheinecke@intevation.de>

	Update translations and add german translation
	* po/de.po: Translate
	* po/fr.po, po/pt.po, po/sv.po, po/zh_CN.po, po/zh_TW.po: Auto update.

	Minor string improvements

2017-01-16  Andre Heinecke  <aheinecke@intevation.de>

	Programatically resize window after category set
	* src/mail.cpp (resize_active_window): New. Resize window by 1px
	and back.
	(Mail::update_categories): Use it.

	Handle non trustworthy or unknown CA better
	* src/mail.cpp (Mail::get_crypto_details): Add handling for
	unknown validity for S/MIME

2017-01-13  Andre Heinecke  <aheinecke@intevation.de>

	Add option to disable crypt reply selection
	* src/addin-options.cpp: Update accordingly.
	* src/dialogs.h, src/dialogs.rc: Add new option.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Handle option.
	* src/main.c (read_options, write_options): Handle new option.

	Improve decryption failed errors
	* src/parsecontroller.cpp (format_recipients): Add names to
	known recipients and add the GPGME Error.

	Disable explorer sigstatus icon if preview off
	* src/ribbon-callbacks.cpp (get_mail_from_control): Don't show
	wrong sigstatus when preview pane is disabled.

	Only invalidate UI when mail is not crypto mail
	* src/application-events.cpp (EVENT_SINK_INVOKE): Don't
	invalidate on every load.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Invalidate on
	Read.

	Reduce UI invalidations
	* src/explorer-events.cpp (EVENT_SINK_INVOKE): Only invalidate
	if the current explorer has a reading pane.

	Update po files

	Do not release the central application obj
	* src/oomhelp.cpp (get_active_hwnd): Do not release central
	application Object.

	Handle QueryInterface errors
	* src/oomhelp.cpp (get_oom_object): Handle QueryInterface errors.

2017-01-09  Andre Heinecke  <aheinecke@intevation.de>

	Treat marginal in WoT as lvel 2
	* src/mail.cpp (Mail::update_sigstate): Set marginal trust
	as level 2.

	Release attachments object earlier
	* src/mail.cpp (Mail::check_attachments): Release
	attachments object earlier.

	Deactive Outlook Window during encryption
	* src/mail.cpp (encrypt_sign): Deactivate Outlook Window.

	Disable button and fix msgs if no mail selected
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames)
	(GpgolRibbonExtender::Invoke, GetCustomUI_MIME): Update
	for get_is_details_enabled.
	* src/ribbon-callbacks.cpp (get_is_details_enabled): New.
	(get_mail_from_control): Extend with selection state.

	Add logo to options dialog

	Say PGP/Inline instead of inline-pgp
	* src/addion-options.cpp (set_labels): Change inline-pgp to
	PGP/Inline.

2017-01-06  Andre Heinecke  <aheinecke@intevation.de>

	Warn if partial crypto with attachments is found
	* src/mail.cpp (Mail::check_attachments): Check if
	all attachments are hidden and warn otherwise.
	(Mail::parsing_done): Call check_attachments.
	* src/mail.h: Update accordingly.
	* src/oomhelp.p: Add new DASL.

	Update crypto summary and lvl2 icon
	* src/dialogs.rc: Use the same icon for lvl2 and 3
	* src/mail.cpp (Mail::get_crypto_summary): Change wording.
	(Mail::get_crypto_summary): Fix comment.
	(Mail::get_crypto_one_line): New. Move one liner also into
	mail class.
	(Mail::get_crypto_details): Minor wording change.
	* src/mail.h: Update accordingly.
	* src/ribbon-callbacks.cpp (get_sig_ttip): Use one liner funct.

2017-01-05  Andre Heinecke  <aheinecke@intevation.de>

	Hide WKD Option for now

	Allow different UUIDs for the same mail
	* src/oomhelp.cpp (get_unique_id): Always create one if
	called with create parameter.

	Fix crash when sending plain text mails
	* src/mimemaker.cpp (add_body): Fix boundary handling.

2017-01-03  Andre Heinecke  <aheinecke@intevation.de>

	Fix encrypt icon name in EXTRA_DIST
	* src/icons/Makefile.am (EXTRA_DIST): Fix encrypt name.

2016-12-16  Andre Heinecke  <aheinecke@intevation.de>

	Fix direct trust handling
	* mail.cpp (level_4_check): Fix it.
	(Mail::get_crypto_details): Use it correctly.

	Improve some strings
	* src/gpgoladdin.cpp (GetCustomUI_MIME): Change some strings.
	* src/mail.cpp(Mail::get_crypto_summary): Use trusted instead
	of trustworthy.
	(Mail::get_crypto_details): Update some strings.

	Update icons for level 2
	* src/icons: Update level2 icon
	* src/icons/level-3-enc.png: Reexport

	Handle button click for encrypted only mails
	* src/ribbon-callbacks.cpp (launch_cert_details): Handle
	the case were a mail is unsigned.

	Use signed and encrypted again in tooltip
	* src/ribbon-callbacks.cpp (get_sig_ttip): Use signed
	and encrypted again.

	Implement direct trust handling
	* src/mail.cpp (level_4_check): Do the actual check for direct
	trust.
	(Mail::get_crypto_details): Handle level 4 subcases with different
	details.
	* src/parsecontroller.cpp (ParseController::parse): Fetch
	ultimately trusted keys if a sig was fully or ultimately valid.
	(ParseController::get_ultimate_keys): New Helper function
	to cache the ultimately valid keys.
	* src/parsecontroller.h: Update accordingly.

2016-12-15  Andre Heinecke  <aheinecke@intevation.de>

	Don't add a dot after the tooltip
	* src/ribbon-callbacks.cpp (get_sig_ttip): Remove dot.

	Fix signature level for unencrypted mails
	* src/mail.cpp (Mail::get_signature_level): Don't always
	return 0 for unencrytped mails.

	Various string fixes for crypto_details
	* src/mail.cpp (Mail::get_crypto_details): Various string
	fixes.

	Invert category order
	* src/mail.cpp (Mail::update_categories): Invert order.

	Use insecure instead of signed to sum up lvl1
	* src/mail.cpp (Mail::get_crypto_summary): Use insecure instead
	of signed.

	Fix sigstate setting
	* src/mail.cpp (Mail::update_sigstate): Skip empty uids
	instead of non empty ones :-)

	Pass key by reference to get_uid
	* src/mail.cpp (get_uid_for_sender): Pass key by reference
	to avoid a copy.

	Always activate the GpgOL read button
	* src/gpgoladdin.cpp (getCustomUI_MIME): Always enable button.
	* src/ribbon-callbacks.cpp (launch_cert_details): Open
	the emailselfdefense infographic for unencrypted / unsigned
	mails.

	Handle opaque signed inline pgp messages
	* src/parsecontroller.cpp (ParseController::parse):
	Handle opaque signed PGP Messages.

2016-12-14  Andre Heinecke  <aheinecke@intevation.de>

	Fix / improve inline PGP decryption
	* src/mapihelp.cpp (change_message_class_ipm_note): Look for
	PGP Lines even without content type.
	* src/mimedataprovider.cpp (MimeDataProvider::write): Respect
	m_collect_everything.
	* src/parsecontroller.cpp (ParseController::ParseController): Don't
	expect MIME headers for inline pgp data.
	(expect_no_mime): New.

	Update copyright year

	Update signature status display
	* src/icons: Add new Icons, remove old icons.
	* src/icons/Makefile.am (EXTRA_DIST): Update accordingly.
	* src/dialogs.h: Define ids
	* src/dialogs.rc: Include new icons.
	* src/gpgoladdin.cpp: Update some function names.
	* src/mail.cpp (Mail::update_sigstate): Use tofu validity
	from gnupg.
	(Mail::get_valid_sig): Removed. Too confusing.
	(Mail::is_signed): Constify.
	(Mail::is_encrypted): New, similar to is_signed.
	(level_4_check): Helper to figure out the correct message
	for level 4.
	(Mail::get_crypto_summary): New. More differntiated title.
	(Mail::get_signature_level): New. defines levels.
	(Mail::get_crypto_details): New. Replacement for get_signature_status
	(Mail::get_crypto_icon_id): Use levels and new icons.
	* src/mail.h: Update accordingly.
	* src/ribbon-callbacks.cpp (get_is_crypto): Renamed from
	get_is_signed.
	(get_sig_label): Use get_crypto_summary.
	(get_sig_ttip): Use get_crypto_summary.
	(get_sig_stip): Use get_crypto_details.
	(get_crypto_icon): Use renamed function.
	* src/ribbon-callbacks.h: Update accordingly.

2016-12-09  Andre Heinecke  <aheinecke@intevation.de>

	Recuce Sign and Encrypt to single split button
	* src/dialogs.h: Add new icon ids.
	* src/ribbon-callbacks.h: Add new ids.
	* src/ribbon-callbacks.cpp (GpgolRibbonExtender::GetIDsOfNames),
	(GpgolRibbonExtender::Invoke): Handle new ids.
	(GetCustomUI_MIME): Use split button.
	* src/ribbon-callbacks.cpp (mark_mime_action): Invalidate ui.
	(get_crypt_pressed): Handle queries for multiple flags.

	Improve messagelist icon
	* encr-s.ico, encr-s.xcf: Imrpove 1bit alpha use by mixing more
	white into the still transparent colors. Remove line in the middle
	this was too small for 16x16

	Add new icons for sign / encrypt
	* src/icons/Makefile.am (EXTRA_DIST): Update accordingly.
	* encrypt-20.png, encrypt.svg, sign-20.png, sign-enc-40.png,
	sign-enc.svg, sign.svg: New.

2016-12-05  Andre Heinecke  <aheinecke@intevation.de>

	Fix multipart/alternative html mails
	* src/mimemaker.cpp (add_body_and_attachments): Properly
	handle the case when inner and outer boundary is null.

	Use MAPI message for mapi_get_uid
	* src/mapihelp.cpp, src/mapihelp.h (mapi_get_message):
	Change to take message as argument.
	* src/ribbon-callbacks.cpp (get_mail_from_control): Update usage.

	Mention srcname / func in debug of invalidation
	* src/gpgoladdin.cpp (gpgoladdin_invalidate_ui): Put srcname
	and func in debug.

	Prepare OOM Event handler for OL 2007
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Set uuid
	on Open and pre_process in Read for OL 2007.

	Add send_seen as member variable to Mail object
	* src/mail.cpp, src/mail.h (Mail::needs_encrypt),
	(Mail::set_needs_encrypt): New.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Use new functions.

	Add fallback to create categories
	* src/oomhelp.cpp (ensure_category_exists): Fallback to
	Session.Categories.

	Always initialize execpinfo
	* src/oomhelp.cpp (get_oom_object, put_oom_string),
	(add_oom_attachment, get_pa_variant, invoke_oom_method_with_parms):
	Initialize execepinfo.

2016-12-01  Andre Heinecke  <aheinecke@intevation.de>

	Preselect sign / encrypt for reply / forward
	* src/mail.cpp (Mail::Mail): Initalize crypto flags.
	(Mail::get_crypto_flags): New.
	(Mail::parsing_done): Set crypto flags.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Handle reply, forward
	and ReplyAll.

	Fix Reply event ID
	* src/mailitem-events.cpp (MailEvent): Fix reply id.

	Add supertip for unsigned messages
	* src/ribbon-callbacks.cpp (get_sig_stip): Handle mail not found
	case.

	Fix crash when viewing unsigned mails
	* src/ribbon-callbacks.cpp (get_sig_label): Return early
	if mail not found.

	Add missing icon
	* src/icons/emblem-success-yellow-64.png: New.

	Remove some development debugs
	* src/mail.cpp (update_oom_data): Remove some development
	debug statements.

	Change wording to better distinguish fully trusted
	* src/mail.cpp (Mail::get_signature_status): Distinguish between
	trusted and fully trusted.
	* src/ribbon-callbacks.cpp (get_sig_label): Use three labels
	instead of two.

	Change wording in signature details
	* src/mail.cpp (Mail::get_signature_status): Change wording.
	* src/ribbon-callbacks.cpp (get_sig_label): Use trust instead
	verified.

	Log if a uid was skipped because of no email
	* src/mail.cpp (get_uid_for_sender): Log if mail is null.

	Change valid category to Trusted Sender Address
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete): Change
	category name.
	(Mail::remove_categories, Mail::update_categories): Use new
	name.

	Enable clearsigned support again for reading
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Enable clearsigned
	support.

	Add yellow checker for basic / marginal trust
	* src/dialogs.h, src/dialogs.rc: Update accordingly.
	* src/icons/emblem-success-yellow.svg,
	src/icons/emblem-success-yellow-64.png: New.
	* src/icons/Makefile.am (EXTRA_DIST): Add new icon and
	svg icons.
	* srC/mail.cpp (Mail::get_signature_icon_id): Use it.

2016-11-30  Andre Heinecke  <aheinecke@intevation.de>

	Support multipart/related reading
	* src/attachment.cpp (Attachment::set_content_id)
	(Attachment::get_content_id): New.
	* src/mail.cpp (get_attachment): Return last attachment on -1 pos
	(fixup_last_attachment): New. Set content id.
	(add_attachments): Call fixup.
	* src/oomhelp.h (PR_ATTACH_CONTENT_ID_DASL): New.
	* src/mimedataprovider.cpp (t2body): Parse content-id.
	(MimeDataProvider::create_attachment): Set content-id.

	Support sending embedded images(multipart/related)
	* src/mimemaker.cpp (add_body_and_attachments): New. Common
	multipart handling for the encrypt / sign functions.
	* src/mimemaker.cpp (mime_encrypt, do_mime_sign):
	Use add_body_and_attachments.
	(is_related): New. Check if we have a multipart/related.
	(write_attachments): Allow to filter out related attachments.
	(write_part): Write Content-ID if there is one.
	* src/mymapitags.h (PR_ATTACH_CONTENT_ID): New.

	Add content_id to our attach table
	* src/common_indep.h (mapi_attach_item_t): Extend with
	content_id.
	* src/mapihelp.cpp (get_attach_content_id): New.
	(mapi_create_attach_table): Use it.
	(mapi_release_attach_table): Free it.

	Fix content type detection
	* src/mimemaker.cpp (infer_content_type): Fix it.

2016-11-29  Andre Heinecke  <aheinecke@intevation.de>

	Fix mulipart/mixed with alternative content
	* src/mimemaker.cpp (add_body): Open new part if in mixed structure.

	Support HTML sending and fix sender updates
	* src/mail.cpp (Mail::Mail): Update init.
	(Mail::get_sender): Sender is now a string.
	(Mail::encrypt_sign): Update accordingly.
	(Mail::update_sender): Changed to update_oom_data.
	(Mail::update_oom_data): More generic. Caches BodyFormat,
	HTMLBody and sender. Changed order for sender retrieval
	when composing mails.
	(Mail::update_sigstate): Update accordingly.
	(Mail::is_html_alternative, Mail::get_cached_html_body): New.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Update oom data
	on send.
	* src/mimemaker.cpp (create_mapi_attachment): Fix another use
	after free.
	(infer_content_type): is_mapibody now defines text/html or
	text/plain. The naive content deduction is removed.
	(add_body): Handler for the HTML / multipart body.
	(do_mime_sign, mime_encrypt): Use add_body.
	(mime_sign, mime_sign_encrypt): Pass on mail object.

	Ignore more property changes
	* src/mailitem-events.cpp (prop_blacklist): Add OutlookVersion
	and OutlookInternalVersion.

2016-11-28  Andre Heinecke  <aheinecke@intevation.de>

	Rework close and remove hacks for bad events
	* src/mail.cpp (Mail::close): Make it static to handle the
	case were close causes a mail deletion.
	(Mail::close_inspector): Make it static.
	(Mail::close_all_mails): Close inspector first. Handle
	map changes and object deletion.
	(Mail::~Mail): Don't delete event sink.
	(Mail::get_close_triggered, Mail::set_close_triggered): New.
	* src/mailitem-events.h (EVENT_SINK_INVOKE): Remove
	uneccessary Close hacks. Fix fallthrough from Open to
	before read. Fix fallthrough from Close to unload.
	Check if a close was triggered by us.
	(request_close, request_decrypt): Remvoed.
	* src/windowmessages.cpp, src/windowmessages.h (REQUEST_DECRYPT)
	(REQUEST_CLOSE): Removed.

	Don't close non-crypto mails
	* src/mail.cpp (Mail::close_all_mails): Ignore non crypto mails.
	Don't delete mail on error.

	Fix race between deletion and parser access
	* src/mail.cpp (Mail::~Mail): Lock destruction.
	(do_decrypt): Lock validity check and parser access.

	Use inline text as body if no body seen
	* src/mimedataprovider.cpp (t2body): Use first text
	attachment as body if it is an inline attachment.
	(MimeDataProvider::create_attachment): Log the attachment
	name.

	Handle detected attachments without filenames
	* src/mail.cpp (Mail::add_attachments): Ingore attachments without
	filenames.
	(Mail::parsing_done): Don't fail hard on attachment add failure.

2016-11-17  Andre Heinecke  <aheinecke@intevation.de>

	Ignoore WM_SYSCOMMAND / SC_CLOSE
	* src/windowmessages.cpp (gpgol_hook): Ignore WM_SYSCOMMAND
	SC_CLOSE.

	Improve wording in debug output for failed crypto

	Don't show MessageBox when encryption failed
	* src/message.cpp (sign_encrypt): Disable messagebox

	Start locate-keys when a recipient is added
	* src/mail.cpp (Mail::locate_keys): Check for recipient keys.
	(do_locate): New.
	(Mail::needs_crypto): Return flags.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Handle recipient
	changes and do locate_keys if necessary.

	Add autoresolve keys option for encryption
	* src/addin-options.cpp (set_labels): Improve wording.
	* src/dialogs.rc: Fix layout of autoresolve option.
	* src/main.c (read_options, write_options): Handle option.

	Sleep a bit in engine_wait
	* src/engine.c (engine_wait): Sleep in the busy wait loop.

	Fix minor memory leak in error condition
	* src/ommon_indep.c (qp_encode): Free outbuf on error.

2016-11-16  Andre Heinecke  <aheinecke@intevation.de>

	Add some NEWS

2016-11-15  Andre Heinecke  <aheinecke@intevation.de>

	Use undecoded body if charset unkown or not found
	* src/mlang-charset.cpp (ansi_charset_to_utf8): Handle no charset.

	Add some more error messages to finalize_message
	* src/mimemaker.cpp (finalize_message): Add some more errors.

	Fix use after free in mimemaker
	* src/mimemaker.cpp (create_mapi_attachment),
	(finalize_message): Do not use GpgOLStr for assignments.

	Fix use after free & double free
	* src/mail.cpp (Mail::get_signature_status): Do not append / free
	buf as it is no longer set in the above block.

	Install forms for formpath forms
	* forms/Makefile.am (cfg): Add new forms.

	Ignore UnRead property change notification
	* src/mailitem-events.cpp: Ignore UnRead

	Fix check for gpgme-w32spawn
	* src/main.cpp (get_gpgme_w32_inst_dir): Fix name of
	gpgme-w32spawn.exe

	Remove buggy debug output warning
	* src/main.c (read_options): Don't show messagebox about
	debug output.

2016-11-14  Andre Heinecke  <aheinecke@intevation.de>

	Look for libgpgmepp in the right libdir
	* src/Makefile.am (libgpgmepp.a): Use correct prefix.

	Fix errors from 1b822ad2
	* src/mail.cpp: Fix utf8 macro.
	(Mail::get_signature_status): Fix typo.
	* src/mailitem-events.cpp: Fix utf8 macro.

	Update translations and translate german
	* po/POTFILES.in: Add all files containing gettext macros.
	* po/de.po: Update and translate.
	* po/fr.po, po/pt.po, po/sv.po, po/zh_CN.po, po/zh_TW.po: Autoupdate

	Improve some strings for l10n

	Make gpgme install dir selection more flexible
	* src/main.c (get_gpgme_w32_inst_dir): New.
	(DllMain): Use it.

2016-11-11  Andre Heinecke  <aheinecke@intevation.de>

	Next version will be 2.0.0
	* NEWS, configure.ac: Bump version

	Use _WIN64 instead of WIN64 to detect arch
	* common_indep.h, config-dialog.c, olflange-dlgs.cpp: Use
	_WIN64 instead of WIN64.

	Add automake test-driver
	* build-aux/test-driver: New. From debian jessie.

	Add property change warning
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Warn on property
	change done by the user.

	Add helper method to get active window handle
	* src/oomhelp.cpp, src/oomhelp.h (get_active_hwnd): New get the
	handle of the active window.

	Clean up some debug output
	* src/ribbon-callbacks.cpp (get_mail_from_control): Don't
	print the Subject

	Remove accidentally commited AddRef experiment
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Do not add
	another ref on read.

	Fix WM_CLOSE handling
	* src/windowmessages.h (add_explorer, remove_explorer): Use LPDISPATCH
	* src/windowmessages.cpp (add_explorer, remove_explorer): Update
	accordingly.
	(gpgol_hook): Use FindWindowEx to find all explorer windows.
	* src/gpgoladdin.cpp (install_explorer_sinks): Register explorer
	dispatch.
	* src/explorer-events.cpp (EVENT_SINK_INVOKE): Remove explorer
	on close.

	Fix UI Invalidation after selection change
	* src/explorer-events.cpp (EVENT_SINK_INVOKE): Invalidate again
	on selection change.
	(invalidate_ui): Delay invalidation.

	Ensure uuid's are always logged
	* src/mail.cpp (Mail::set_uuid): Log uuid changes.

	Fix sigstate code for multiple signatures
	* src/mail.cpp (Mail::update_sigstate): Fix signature selection code.

	Set uuid again in close
	* src/mail.cpp (Mail::close): Set uuid again.

	Remove old error message template
	* src/mail.cpp (HTML_TEMPLATE): Remove.
	(Mail::wipe): Just empty out body.

2016-11-08  Andre Heinecke  <aheinecke@intevation.de>

	Only decrypt / verify one mail at once
	* src/mail.cpp (do_parsing): Lock parsing

2016-11-07  Andre Heinecke  <aheinecke@intevation.de>

	Only close on WM_CLOSE of explorers
	* src/explorer-events.cpp (EVENT_SINK_INVOKE): Track explorers.
	* src/gpgoladdin.cpp (install_explorer_sinks): Install sinks.
	* src/windowmessages.cpp (add_explorer_window)
	(remove_explorer_window): New.
	(gpgol_hook): Only react to explorers.

	Remove the need to revert mails
	* src/application-events.cpp (EVENT_SINK_INVOKE): Remove comment.
	* src/gpgoladdin.cpp (GpgolAddin::OnDisconnection): Close instead
	revert.
	(GpgolAddin::OnStartupComplete): Create Window message hook.
	* src/mail.cpp (Mail::close_all_mails): New.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (request_close): New.
	src/mailitem-events.cpp (EVENT_SINK_INVOKE): Update event
	handling to new logic. See comments.
	* src/windowmessages.cpp (gpgol_hook): New.
	(create_message_hook): New. Registers gpgol_hook.
	src/windowmessages.h: Update accordingly.

	Disable ui invalidation in explorers for now
	* src/explorer-events.cpp, src/explorers-events.cpp
	(EVENT_SINK_INVOKE): Disable ui invalidation.

	Always discard changes on close for now
	* src/mail.cpp, src/mail.h (Mail::close): Remove save changes
	parameter.

	Add request_close windowmessage
	* src/windowmessage.h (REQUEST_CLOSE): Declare.
	* src/windowmessages.cpp (gpgol_window_proc): Handle REQUEST_CLOSE.
	* src/ribbon-callbacks.cpp (get_mail_from_control): Update to new
	get_unique_id signature.

	Use msgclass to determine if a mail is crypto
	* src/mail.cpp (is_crypto_mail): Use messageclass instead
	of processed.
	* src/mail.h: Update accordingly.

	Add IID and install functions for explorer sinks
	* src/eventsinks.h (install_ExplorerEvents_sink)
	(install_ExplorersEvents_sink): Declare.
	* src/oomhelp.h: Add missing uuids.

	Use shared_ptr for parser object
	* src/mail.cpp (m_parser): Change to shared_ptr
	(Mail::parsing_done): Check if parser already deleted.
	* src/mail.h: Update accordingly.

	Check for duplicates in mail map
	* src/mail.cpp (Mail::set_uuid): Check for duplicates in mail
	map and handle them.

	Fix build by adding new event handlers to Makefile
	* src/Makefile.am (gpgol_SOURCES): Add new files.

2016-11-03  Andre Heinecke  <aheinecke@intevation.de>

	Add explorer and explorers event handler
	* explorer-events.cpp: New. Invalidate ui on selection change.
	* explorers-events.cpp: New. Install event handler for new explorers.
	* gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Release explorers event
	handler.
	(install_explorer_sinks): Install explorers and explorer event
	handler.
	(GpgolAddin::OnStartupComplete): call install_explorer_sinks

	Add mapi helpers for uuid retrieval
	* src/mapihelp.cpp, src/mapihelp.h: (get_gpgoluid_tag)
	(mapi_get_uid): New.

	Allow to reset uuid
	* src/mail.cpp (Mail::set_uuid): Set uuid even if the mail
	object already tracks a uuid.
	* src/oomhelp.cpp (get_unique_id): Extend with uuid param.
	* src/oomhelp.h: Update accordingly

	Add close function to Mails
	* src/mail.cpp (Mail::close): New, close a mail.

	Add extra debug output for mail destruction
	* src/mail.cpp (Mail::~Mail): Print uuid in dtor

2016-11-02  Andre Heinecke  <aheinecke@intevation.de>

	Disable revert all mails on quit
	* src/application-events.cpp (EVENT_SINK_INVOKE): Disable
	revert_all_mails.

2016-10-31  Andre Heinecke  <aheinecke@intevation.de>

	Install forms for InfoPath msg classes.
	* forms/gpgol-form-encrypted.cfg,
	 forms/gpgol-form-signed.cfg: New.
	* src/olflange.cpp (install_forms): Install new forms.
	* src/mimemaker.cpp (finalize_message): Use InfoPath msg classes.

2016-10-28  Andre Heinecke  <aheinecke@intevation.de>

	Follow Outlook preference in alt. text/html mails
	* src/gpgoladdin.cpp (check_html_preferred): New. Read Outlook's
	setting.
	(GpgolAddin::OnStartupComplete): Check html state
	* src/mail.cpp (Mail::decrypt_verify): Use plain placeholder
	if html disabled.
	(Mail::update_body): Use correct parts.
	* src/main.cpp (read_options): Don't read preferHTML.
	(write_options): Don't write preferHTML.
	* src/parsecontroller.cpp: Add plain text template.
	(format_error): Use it.
	(ParseController::parse): Use it.

	Don't confuse Outlook and GpgME Versions
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete): Print
	out proper version in debug output.

	Add int / string property accessor setters
	* src/oomhelp.cpp (put_pa_string, put_pa_int): New.
	(put_pa_variant): Generic version of put_pa_string.
	* src/oomhelp.h: Update accordingly.

	Pass Mail object to mimemaker

	Add some helper functions to Mail object
	* src/mail.cpp, src/mail.h (Mail::remove_attachments)
	(Mail::add_attachments, get_string, Mail::get_body)
	(Mail::get_html_body, Mail::get_recipients): New.

	Remove AfterWrite Windowmessage hack
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Call save in
	the send event to trigger the write and then send the mail.
	(request_send): Removed.
	* src/Windowmessages.cpp (request_send_mail): Removed.
	src/Windowmessages.h (REQUEST_SEND_MAIL): Removed.

	Revert "Implement encryption without MAPI data"
	This reverts commit 2b376a48241aaef927ab1ffd6e7d213480d6751e.

2016-10-27  Andre Heinecke  <aheinecke@intevation.de>

	Implement encryption without MAPI data
	* src/attachment.cpp (Attachment::get_data_string): New helper.
	* src/attachment.h: Declare get_data_string.
	* src/mail.cpp, src/mail.h (Mail::remove_attachments)
	(Mail::add_attachments, get_string, Mail::get_body)
	(Mail::get_html_body, Mail::get_recipients): New.
	* src/mailitem-events.cpp (request_send): Comment out for now.
	(EVENT_SINK_INVOKE): Encrypt in send event.
	* src/mimemaker.cpp (sink_data_write): New to work with GpgME::Data.
	(encrypt_sign_mail): New works based on Objects.

	Add options for inline pgp and recpt. autoresolve
	* src/addin-options.cpp (set_labels)
	(enable_disable_opts, options_window_proc): Handle
	new checkboxes.
	* src/common_indep.h: Extend opts.
	* src/main.c: Load / Save opts.
	* src/dialogs.rc: Update Layout.
	* src/dialogs.h: Add new ID's

2016-10-26  Andre Heinecke  <aheinecke@intevation.de>

	Ensure that the moss attachment stays hidden
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): Hide attachment.

2016-10-24  Andre Heinecke  <aheinecke@intevation.de>

	Clarify and spellfix update_sigstate comments
	* src/mail.cpp (Mail::update_sigstate): Clarify comments and
	fix spelling.

2016-10-20  Andre Heinecke  <aheinecke@intevation.de>

	Convert mimemaker to cpp
	* src/Makefile.am (GpgOL_SOURCES): Update.
	* src/mimemaker.c: Removed.
	* src/mimemaker.cpp: New.

	Convert body encoding using mlang
	* src/mail.cpp (Mail::update_body): Convert bodies.

	Use const input ptr for mlang conversion
	* src/mlang-charset.cpp, src/mlang-charset.h (ansi_charset_to_utf8):
	Take input as const.

	Close thread handles immediately after creation

	Fix explorer display after mail was closed
	* src/mailitem-events.cpp (request_decrypt): New. Request a decypt.
	(EVENT_SINK_INVOKE(MailItemEvents)): Handle decrypt_after_write.
	Don't always unload in unload.
	* src/windowmessages.cpp: Handle REQUEST_DECRYPT.
	* src/windowmessages.h: Add REQUEST_DECRYPT.

	Revert all active mails on quit
	* src/application-events.cpp: Call revert_all_mails in quit event.

	Fix revert for new attachment code
	* src/revert.cpp (gpgol_mailitem_revert): Delete all attachments
	not markes as MOSS.

	Save mail after revert_all_mails
	* src/mail.cpp (Mail::revert_all_mails): Save afterwards.
	(Mail::revert): Mark the the mail no longer needs wipe.

	Ensure parser thread handle is closed
	* src/mail.cpp (Mail::parsing_done): CloseHandle.
	(Mail::~Mail): Ditto.
	(Mail::decrypt_verify): Store handle.
	* src/mail.h: Add new member for Handle.

2016-10-19  Andre Heinecke  <aheinecke@intevation.de>

	Add gimp variants of the new form icons
	* forms/encr-s.xcf, forms/ribbon.xcf: Add gimp variants.

	Fix multipart S/MIME handling
	* src/parsecontroller.cpp (ParseController::parse): Use
	gpgme_data_identify to figure out if our data is smime.

	Fix some double free's in oomhelp
	* src/oomhelp.cpp (get_oom_object): Fix double free on
	error.
	(put_pa_string): Fix double frees.

	Simplify / fix S/MIME data collection.
	* src/mimedataprovider.cpp: Copy everything if expect
	no headers is true.
	* src/parsecontroller.cpp (expect_no_headers): Only expect
	headers for multipart signed.

	Fix ignoring S/MIME if S/MIME disabled
	* src/mail.cpp (Mail::decrypt_verify): Ignore MSGTYPE_SMIME
	* src/mapihelp.cpp (mapi_change_message_class): Also ignore
	multipartsigned.

	tests: Check if file was opened before parsing.
	* tests/run-parser.cpp (main): Check fp_in.

	Remove categories on revert
	* src/mail.cpp (Mail::remove_categories): New.
	* src/mail.h: Update accordingly.
	* src/revert.cpp: Use it.

	Fix crash if not attachments found
	* src/mail.cpp (get_attachment_stream): Add safeguards.

	Update messagelist forms icons
	* forms/gpgol-cs.cfg, gpgol-ms.cfg, gpgol.cfg: Remove locale.
	* forms/encr-s.ico, forms/sign-s.ico: New.

	Move init code behind check for application
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete):
	Move init code together.

	Declare MAPIFormContainer
	* src/mymapi.h: Add stub declaration for mapiformcontainer.

	Remove localized forms
	* forms/Makefile.am: Update accordingly.
	* forms/gpgol-cs_en.cfg,
	forms/gpgol-cs_de.cfg,
	forms/gpgol-ms_en.cfg,
	forms/gpgol-ms_de.cfg,
	forms/gpgol_en.cfg,
	forms/gpgol_de.cfg: Removed.
	*forms/gpgol-cs.cfg,
	forms/gpgol-ms.cfg,
	forms/gpgol.cfg: New.

	* src/olflange.cpp: Use generic forms.

2016-10-18  Andre Heinecke  <aheinecke@intevation.de>

	Improve sigdetails button and verify caching
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames):
	(GpgolRibbonExtender::Invoke): Handle new icon callback.
	(GetCustomUI_MIME): Use new icon callback.
	* src/mail.cpp (Mail::Mail): New members for state caching.
	Rename m_uid to m_uuid to avoid confusion with the valid uid.
	(Mail::~Mail): Use renamed variables.
	(Mail::get_mail_for_uuid): Renamed.
	(Mail::decrypt_verify): Use renamed functions.
	(Mail::parsing_done): Add some traces for a crash.
	(Mail::update_sigstate): New. Called once after parsing done.
	(Mail::get_valid_sig): Use cached values.
	(Mail::is_valid_sig): Use cached values.
	(Mail::set_uuid): Renamed.
	(Mail::get_signature_status): Fix isOpenPGP
	(Mail::get_signature_icon_id): New. Use for new icons.
	(Mail::get_sig_fpr): New. Used for launch details.
	* src/mail.h: Update accordingly.
	* src/parsecontroller.cpp (ParseController::parse):
	Add some traces for a crash.
	* src/ribbon-callbacks.cpp (get_mail_from_control): Use renamed
	functions.
	(HRESULT launch_cert_details): Launch kleopatra on details.
	(HRESULT get_sigstate_icon): Get the Icon of a signature.
	* src/ribbon-callbacks.h: Update accordingly.

	Add new icons for signature state
	* COPYING-ICONS,
	src/icons/Makefile.am,
	src/icons/README.icons,
	src/icons/emblem-information-64.png,
	src/icons/emblem-information.svg,
	src/icons/emblem-question-64.png,
	src/icons/emblem-question.svg,
	src/icons/emblem-success-64.png,
	src/icons/emblem-success.svg,
	src/icons/emblem-warning-64.png,
	src/icons/emblem-warning.svg: New.
	* src/dialogs.h, src/dialogs.rc: Add new ids / data.

	Minor updates for readme
	* README: Update copyright and some text.

	Move get_uiserver_name into common
	* src/common.c (get_uiserver_name): Added.
	* src/common.h: Add prototype.
	* src/engine-assuan.c (get_uiserver_name): Removed.

	Move icons into subdir

	Enable signature status in home tab
	* src/gpgoladdin.cpp (GetCustomUI_MIME): Enable inline and
	Status icons.

	Extend signature status display
	* src/mail.cpp (get_uid_for_sender): Factored out of get_valid_sig.
	(Mail::get_valid_sig): Improve tofu handling.
	(Mail::get_signature_status): Handle more states.

	Also update key if a signature already has key
	* src/parsecontroller.cpp (ParseController::parse): Update key
	if a signature has a key.

2016-10-17  Andre Heinecke  <aheinecke@intevation.de>

	Add helper to format epoch time with windows
	* src/common.c (epoch_to_file_time): New.
	(format_date_from_gpgme): New.

	Handle Explorer context in mail from control
	* src/ribbon-callbacks.cpp (get_mail_from_control): Handle explorer.

	Fix memleak in get context dbg output
	* src/ribbon-callbacks (getContext): Release object name.

2016-10-14  Andre Heinecke  <aheinecke@intevation.de>

	Start implementation of ribbon base sigstate
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames): Register
	new names.
	(GpgolRibbonExtender::Invoke): Handle new names.
	(GetCustomUI_MIME): Reactivate Read code. Use new callbacks.
	(Mail::Mail): Do not cache sig validity.
	(Mail::get_valid_sig): Get Sig / UID pair of the valid sig.
	(Mail::is_valid_sig): Use get_valid_sig.
	(Mail::is_signed): Fix use of temporary parser object.
	(Mail::set_uid): Set uid to be identifyable from callbacks.
	(Mail::get_signature_status): Format string for supertip.
	* src/mail.h: Update accordingly.
	* src/ribbon-callbacks.cpp (get_crypt_status): Removed.
	(get_mail_from_control): New. Helper to resolve the Mail object.
	(MY_MAIL_GETTER): Helper macro for common task.
	(get_is_signed, get_sig_label, get_sig_ttip, get_sig_stip): New
	callbacks.
	(launch_cert_details): Dummy.

	Add UID to mails / mail objects
	* src/Makefile.am: Link librpcrt4 for uid functions.
	* src/mail.cpp (g_uid_map): New.
	(Mail::~Mail): Remove from uid map if added.
	(Mail::get_mail_for_uid): New. Get Mail object for uid.
	(Mail::is_mail_valid, Mail::is_valid_ptr): Renamd is_mail_valid
	to is_valid_ptr to avoid confusion.
	(Mail::decrypt_verify): Set uid.
	* src/mail.h: Update accordingly.
	* src/oomhelp.cpp (generate_uid, get_unique_id): New.
	(set_pa_variant): Changed to put_pa_string.
	* src/oomhelp.h: Update accordingly.
	(GPGOL_UID_DASL): Declare.
	* src/windowmessages.cpp (gpgol_window_proc): Use is_mail_valid.

	Dont fail if placeholder can't be inserted
	* src/mail.cpp (decrypt_verify): Don't fail if placeholder
	can't be inserted.

	Store decrypt / verify results in mail
	* src/mail.cpp (Mail::is_signed): New. Check if signed at all.
	(Mail::is_valid_sig): New. Check if signature is valid.
	(Mail::update_categories): Use member variables / new functions.
	(is_valid_sig): Removed.

	Add some more oom helpers
	* src/oomhelp.cpp (get_strong_reference): New obtain a strong
	reference through the application object.
	(invoke_oom_method_with_params): New. Useful helper.
	(invoke_oom_method): Use invoke_oom_method_with_params.

2016-10-12  Andre Heinecke  <aheinecke@intevation.de>

	Fix last line handling of text mails
	* src/mimedataprovider.cpp (t2body): Store if we have a html part.
	(t2body): Improve debug output.
	(get_html_body): Only fetch last line if we have seen an html part.

	tests: Add two more multipart-signed tests
	* tests/data/openpgp-signed-no-attach-gpgol.mbox,
	tests/data/openpgp-signed-no-attach-gpgol.plain,
	tests/data/openpgp-signed-two-attachments.mbox,
	tests/data/openpgp-signed-two-attachments.plain: New.
	* tests/t-parser.cpp: Use them.

	Change behavior of inline attachments
	* src/mimedataprovider.cpp (t2body): Treat inline attachments
	as attachments.

2016-10-11  Andre Heinecke  <aheinecke@intevation.de>

	Factor out is_valid check into own function
	* src/mail.cpp (is_valid_sig): New. Helper to check
	validity.

	Fix crash when mail is deleted while parsing
	* src/windowmessages.cpp (gpgol_window_proc): Make safeguard
	actually work.

	Add categories for crypto status and use them
	* src/gpgoladdin.cpp (OnStartupComplete): Create categories.
	* src/mail.cpp (Mail::update_categories): New. Set up categories
	based on trust.
	* src/mail.cpp (Mail::parsing_done): Update categories.
	* src/parsecontroller.cpp (ParseController::parse): Cache
	Signature keys in background thread.

	Add yet another way to lookup sender
	* src/mail.cpp (Mail::update_sender): Use SenderEmailAddress, too.

	Clarify that placeholder is used for verify, too
	* src/mail.cpp (Mail::decrypt_verify): Update string.

	Add safeground around parser start
	* src/mail.cpp (do_parsing): Safeguard against no parser.

	Free sender string on Mail deletion
	* src/mail.cpp (Mail::~Mail): Free sender.

	Add category helpers to oomhelp
	* src/oomhelp.cpp (ensure_category_exists, create_category),
	(add_category, remove_category): New.
	* src/oomhelp.h: Update accordingly.

	Define _FILE_OFFSET_BITS for gpgme data compat
	* src/Makefile.am (AM_CXXFLAGS): Add file offset bits.

2016-10-07  Andre Heinecke  <aheinecke@intevation.de>

	Make attachments work again
	* src/common.c (get_tmp_outfile): Add SHARE_DELETE
	* src/mail.cpp (get_attachment, get_cipherstream),
	(get_attachment_stream): Split get_cipherstream in two subfunctions.
	(copy_data_property): Add disabled experimental code.
	(copy_attachment_to_file): Copy attachment data to tmp file.
	(add_attachments): Use copy to file.
	(Mail::decrypt_verify): Update call according to new function.

	Clean up set_pa_info and add comment
	* src/oomhelp.cpp (set_pa_variant): Cleanup.
	* src/oomhelp.h (set_pa_variant): Document painful experiments.

	Add excepinfo init helper
	* src/oomhelp.cpp (init_excepinfo): New. Init the struct.

	Simplify Attachment code by using just Data
	* src/attachment.cpp (Attachment::get_data): Direct access
	to the underlying data structure.
	* src/attachment.h, src/mimedataprovider.cpp: Update accordingly.

2016-09-28  Andre Heinecke  <aheinecke@intevation.de>

	tests: Add test for a mail created by us
	* tests/data/openpgp-encrypted-attachment-gpgol.mbox,
	 tests/data/openpgp-encrypted-attachment-gpgol.plain: New.
	* tests/t-parser.cpp: Use it.
	(main): Also check for zero attachment count.

	tests: Fix run-parser
	* tests/run-parser.cpp (main): Actually parse again.

	Simplify / Fix attachment collection
	* src/mimedataprovider.cpp (mime_context): Remove redundant
	collect_attachment.
	(t2body): Remove collect_attachment artifact. Infer from
	crypto data / bodies / nesting level.

	tests: Add test for data with no headers
	* tests/data/openpgp-encrypted-attachment-no-headers.mbox: New.
	* tests/t-parser: Use it. Correct some types.

	Add error handling for decryption errors
	* src/mail.cpp (update_body): New helper.
	* src/parsecontroller.cpp (format_error): New.
	(format_recipients): New.
	(ParseController::Parse): Store formatted error, change signature.
	(get_formatted_error): Get a HTML Formatted error.
	* tests/run-parser.cpp (main),
	tests/t-parser.cpp (main): Adjust to new API

	Fix handling of MIMEData without Headers
	* src/mimedataprovider.cpp (MimeDataProvider): Add ctor
	variants with no_headers field.
	* src/mimedataprovider.h: Update Accordingly.
	* src/parsecontroller.cpp (expect_no_headers): Expect
	no headers except for some messages.
	(decrypt_template): New to be used for status messages.

2016-09-27  Andre Heinecke  <aheinecke@intevation.de>

	Remove unused variable
	* src/mimedataprovider.cpp (t2body): Remove smtype.

	tests: Add more S/MIME tests
	* tests/data/smime-encrypted.mbox,
	 tests/data/smime-encrypted.plain,
	 tests/data/smime-opaque-signed-encrypted-attachment.mbox,
	 tests/data/smime-opaque-signed-encrypted-attachment.plain: New.
	* tests/t-parser.cpp: Use new files.

	Handle smime encrypted signature
	* src/parsecontroller.cpp (is_opaque_signed): New. Check
	for opaque signed data with gpgme_data_identify.
	(ParseController::parse): Verify signed data.

2016-09-22  Andre Heinecke  <aheinecke@intevation.de>

	tests: Add Opaque signed S/MIME mail

	Collect S/MIME Opaque as crypto data
	* src/mimedataprovider.cpp (t2body): Start collecting crypto
	data when encountering an smime attachment.

	tests: Add test mail with attachments

	tests: close plain data files and terminate strs
	* tests/t-parser.cpp (main): close files and ensure
	read strings end with 0.

	tests: Add new test for encrypted+signed

	tests: Add simple multiplart/signed test
	* tests/data/openpgp-signed-no-attach.mbox,
	 tests/data/openpgp-signed-no-attach.plain: New.
	* tests/t-parser.cpp: Test it.
	(main): Add charset test.

	Add .gitattributes to mark .mbox and .plain as bin
	* .gitattributes: New

	Add charset getters to parsecontroller
	* src/parsecontroller.cpp (ParseController::get_html_charset),
	(ParseController::get_body_charset): New.
	* src/parsecontroller.h: Update accordingly.

	tests: Improve run-parser output
	* tests/run-parser.cpp (main): Improve output.

	Do chained parsing for decrypted content with sigs
	* src/parsecontroller.cpp (ParseController::parse): Verify
	after a decrypt only if a signature was found.

	Save body charset in mimedataprovider
	* src/mimedataprovider.cpp (MimeDataProvider::get_html_charset),
	(MimeDataProvider::get_body_charset): New.
	(MimeDataProvider::collect_input_lines): Collect charset. Fix html
	collection.
	* src/mimedataprovider.h: Update accordingly.

	Fix collecting body when not collecting crypto
	* src/mimedataprovider.cpp (MimeDataProvider::collect_input_lines):
	Collect body correctly.

2016-09-15  Andre Heinecke  <aheinecke@intevation.de>

	Fix shared ptr leak in freed ctx
	* src/mimedataprovider.cpp (~MimeDataProvider): Set attachment
	to NULL to unref the shared pointer.

	Fix memory leaks in mimedataprovider
	* src/mimedataprovider.cpp (~MimeDataProvider): Fix memory leaks.

	Add simple test for multipart/encrypted
	* tests/data/openpgp-encrypted.mbox: New.
	* tests/data/openpgp-encrypted.plain: New.
	* tests/t-parser.cpp: Add test.

	Handle multipart/encrypted pgp mails
	* src/mimedataprovider.cpp (mime_context): Add field for is_encrypted.
	* src/parsecontroller.cpp (parse): Reset input stream.

	Add first real unit test for pgp/inline/encrypted
	* tests/Makefile.am: Update GNUPGHOME and data handling.
	* tests/data/inlinepgpencrypted.mbox: New.
	* tests/data/inlinepgpencrypted.plain: New.
	* tests/run-parser.cpp (main): Fix output of bodies.
	* tests/t-parser.cpp (main): Prepare generic tests.

	Use body to decrypt / verify inline msgs
	* src/parsecontroller.cpp (parse): Use body for inline msgs.

	Fix FILE read and enable write for mimedataprovider
	* src/mimedataprovider.cpp (isSupported): Add write.
	(collect_data(FILE*)): Fix fread call.
	(get_body, get_html_body): Fix truncated output when a mail
	body did not end with a newline.
	* src/mimedataprovider.h: Update accordingly.

	Add test gnupg_home from messagelib
	* tests/gnupg_home: New.

	tests: Add messagetypes as command line args
	* tests/run-parser.cpp (main): Add cmd line args for msgtype.

	Add parsertest for Linux
	* Makefile.am (SUBDIRS): Only include tests for linux.
	* configure.ac: Enable linux build. Check for stpcpy.
	* tests/Makefile.am: New.
	* tests/run-parser.cpp: New.
	* tests/t-parser.cpp: New.

	Fix linux build of mimedataprovider
	* src/mimedataprovider.cpp (collect_input_lines): Fix size_t format.
	(collect_data(FILE*)): Fix file read and size_t format.

	Handle context creation failures
	* src/parsecontroller.cpp (parse): Handle failure
	creating the Context.

	Expose verify / decrypt results in parser
	* src/parsecontroller.h (get_verify_result),
	(get_decrypt_result): New.

	Fix build of rfc2047parse for linux
	* src/rfc2047parse.c (tokenize_rfc2047_phrase): Use stdbools.
	(rfc2047_decode_tokens): Ifdef out charset conversion from mlang.

	Move more things into common_indep
	* src/common.h: Remove xmalloc include.
	* src/common_indep.c: Add logging functions.
	(do_log): Add support for logging to stderr and stdout.
	* src/common_indep.h (SIZE_T_FORMAT): Add linux support.
	(log_mutex): Declare as extern.
	* src/main.c: Remove logging functions now in common.

2016-09-14  Andre Heinecke  <aheinecke@intevation.de>

	Add FILE based functions for new parser
	* src/mimedataprovider.cpp,
	src/mimedataprovider.h,
	src/parsecontroller.cpp,
	src/parsecontroller.h: Add FILE based functions.

	Move generic typedefs into common_indep.h
	* src/common_indep.h (mapi_attach_item_t,
	attachtype_t, msgtype_t): Moved from mapihelp.
	* src/mapihelp.h: Update accordingly.

	Switch Attachment to memory based data
	* src/attachment.cpp, src/attachment.h: Use gpgme_data instead
	of mapi temporary file.

	Refactor util and common
	* src/Makefile.am: Update accordingly.
	* src/common.c: Reduced to platform depentent common code.
	* src/common.h: Add util stuff. Include platform indep.
	* src/gpgolstr.cpp,
	src/engine-assuan.c,
	src/gpgoladdin.cpp,
	src/mimedataprovider.cpp,
	src/mlang-charset.h,
	src/msgcache.h,
	src/parsecontroller.h,
	src/ribbon-callbacks.cpp,
	src/windowmessages.cpp: Update accordingly.
	* src/mapihelp.h: Include oomhelp to avoid indrection.
	* src/util.h: Removed.
	* src/common_indep.h, src/common_indep.cpp: New.

	Rename mailparser to parsecontroller
	* src/Makefile.am, src/mail.cpp, src/mail.h: Update accordingly.
	* src/mailparser.cpp, src/mailparser.h,
	src/parsecontroller.cpp, src/parsecontroller.h: Renamed.

	Start refactoring mimeparser into mimedataprovider
	* src/mail.cpp (Mail::parsing_done): Use new API.
	* src/mailparser.cpp: Move out body / attachment handling.
	* src/mailparser.h: Update accordingly.
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): Fix return
	for multipart/signed.
	* src/mimedataprovider.cpp, src/mimedataprovider.h: Rework.

	Fix c++ linkage of rfc2047parse
	* src/rfc2047parse.h: Add Include Guard and c++ linkage.

2016-08-22  Andre Heinecke  <aheinecke@intevation.de>

	Add GPGME based async decryption
	* src/Makefile.am (gpgol_SOURCES): Add Mimedataprovider.
	* src/mail.cpp (Mail::m_moss_position): Store moss pos.
	(Mail::is_mail_valid): Helper to check for orphaned mail pointer.
	(Mail::pre_process_message): Store moss position.
	(get_cipherstream): Use stored moss position.
	(use_body): Removed. Always use MOSS.
	(do_parsing): Helper to run in different thread.
	(Mail::decrypt_verify): Insert placehoder, create parser,
	start parser thread.
	(Mail::parsing_done): Helper to insert plaintext in UI Thread.
	(Mail::revert_all_mails): Fix typo.
	(Mail::wipe_all_mails): Init err.
	(Mail::close_inspector): Helper to close current inspector
	with discard changes.
	* src/mail.h: Update accordingly.
	* src/mailparser.cpp (MailParser::MailParser): Use MimeDataProvider.
	(operation_for_type): Helper to figure out type of work and protocol.
	(MailParser::parse): Enable a fist version of decrypt.
	* src/mailparser.h: Update accordingly.
	* src/main.c (DllMain): Set w32-inst-dir for GpgME.
	* src/mimedataprovider.cpp: New. Copy stream into GpgME Data.
	* src/mimedataprovider.h: New.
	* src/util.h (log_mime_parser): New helper for logging.
	* src/windowmessages.cpp (gpgol_window_proc): Handle parsing
	done signal.
	* src/windowmessages.h (PARSING_DONE): New.
	* src/attachment.cpp: Implement DataProvider interface.
	* src/attachment.h: Update accordingly.

	Return MOSS attachment positon from mapihelp
	* src/mapihelp.cpp (mapi_mark_or_create_moss_attach): Return
	MOSS position.
	* src/mapihelp.h (mapi_mark_or_create_moss_attach): Update doc.

	Check for and depend on GpgMEpp
	* configure.ac: Check for GpgMEpp.
	* m4/gpgme.m4 (AM_PATH_GPGMEPP): New.
	* src/Makefile.am: Link GpgMEpp.
	(AM_CXXFLAGS): Add GpgMEpp flags.

	Bump required gpgme version to 1.7.0
	* configure.ac (NEED_GPGME_VERSION): 1.7.0

2016-08-16  Andre Heinecke  <aheinecke@intevation.de>

	Add first (dummy) version of C++ MailParser
	* src/mail.cpp (get_cipherstream): Use second
	attachment for now.
	(use_body): Small helper to detect if the body
	should be used.
	(Mail::decrypt_mime): Removed.
	(Mail::decrypt): Removed.
	(add_attachments): New helper to create OOM
	attachments from Attachment Objects.
	(Mail::decrypt_verify): Use MailParser.
	(Mail::get_subject): New helper.
	* src/mailparser.cpp, src/mailparser.h: New.

	Mark / create MOSS attachment in BeforeRead
	* src/mail.cpp (Mail::pre_process_message): Mark moss attach.

	Add Attachment helper class
	* src/attachment.cpp (Attachment): New helper class.
	* src/attachment.h (Attachment): Declare class.
	* src/mail.cpp (Mail::wipe): No longer encrypt attachments.

	Extend add_oom_attachment with display name
	* src/oomhelp.cpp (add_oom_attachment): Add display name-
	* src/oomhelp.h (add_oom_attachment): Update prototype.
	* src/ribbon-callbacks.cpp: Use new function.

	* src/mapihelp.cpp: New. * src/mapihelp.h: New. * src/message.cpp: New. Factor out code from message.cpp to mapihelp
	* src/mapihelp.cpp (mapi_body_to_attachment): New
	moved from message.cpp.
	(mapi_mark_or_create_moss_attach): New. Combination
	of moss handling from message_decrypt and message_verify.
	* src/mapihelp.h: Add protoype
	* src/message.cpp (pgp_body_to_attachment): Remove.

	Enable c++11
	* src/Makefile.am: Enable c++11.
	* src/olflange-dlgs.cpp: Fix compile error with c++11.

2016-08-15  Andre Heinecke  <aheinecke@intevation.de>

	Start mail handing restructuring
	* src/mail.cpp (Mail::process_message): Split out beforeRead
	parts into pre_process_message.
	(get_cipherstream): New helper to get OOM level attachment.
	(Mail::decrypt_mime): New. OOM based mime decryption.
	(Mail::decrypt): Dummy.
	(Mail::do_crypto): Rename to encrypt_sign.
	(Mail::decrypt_verify): New. Entry point for Read event.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp: Call new functions.

	Unify COM Release and add debugging
	* src/util.h (gpgol_release): New. Adds debugging for
	debug_oom_extra.
	* src/attached-file-events.cpp,
	src/attachment.cpp,
	src/attic.c,
	src/display.cpp,
	src/eventsink.h,
	src/explorers.cpp,
	src/ext-commands.cpp,
	src/inspectors.cpp,
	src/item-events.cpp,
	src/mailitem-events.cpp,
	src/mailitem.cpp,
	src/mapihelp.cpp,
	src/message-events.cpp,
	src/message.cpp,
	src/mlang-charset.cpp,
	src/olflange.cpp,
	src/oomhelp.cpp,
	src/oomhelp.h,
	src/revert.cpp,
	src/ribbon-callbacks.cpp: Use gpgol_release.

	WIP release debug
	* src/attachment.cpp: New.
	* src/gpgoladdin.cpp: New.
	* src/mail.cpp: New.
	* src/mailitem-events.cpp: New.
	* src/mapihelp.cpp: New.
	* src/oomhelp.cpp: New.
	* src/revert.cpp: New.
	* src/ribbon-callbacks.cpp: New.
	* src/util.h: New.

	Enable ASLR, DEP and Fortify Source
	* configure.ac (HARDENING): Add hardening flags.

	Fix missing field initializers and enable warning
	* configure.ac (CXXFLAGS, CFLAGS): Enable Wmissing-field-initalizers.
	* src/attachment.cpp (do_crypt_stream): Fix init.
	* src/main.c (write_options): Fix init.
	* src/windowmessages.cpp (do_in_ui_thread): Fix init.

	Fix sign only preselection
	* src/mailitem-events.cpp (MailItemEvents Open): Init draft_flags.

	Fix minor typo in eventsink debug
	* src/eventsink.h: tdor->dtor

2016-08-11  Andre Heinecke  <aheinecke@intevation.de>

	Fix loop logic error in new server name detection
	* src/engine-assuan.c (get_uiserver_name): Fix name loop.

2016-06-29  Andre Heinecke  <aheinecke@intevation.de>

	Ignore sent S/MIME Mails if S/MIME is disabled
	* src/mapihelp.cpp (mapi_change_message_class): Add check for
	S/MIME disabled.

2016-06-28  Andre Heinecke  <aheinecke@intevation.de>

	Fix UI Server startup
	* src/common.c (get_gpg4win_dir): Fix stupid logic error in loop.
	Fix mem leak on error.
	* src/engine-assuan.c (get_uiserver_name): Prefer 2.3.x names to
	prefer the kleowrapped / gpgwrapped exectuables.

2016-03-30  Werner Koch  <wk@gnupg.org>

	Post release updates

	Release 1.4.0

	Print swdb info during make distcheck
	* Makefile.am (distcheck-hook): New.

2016-03-11  Andre Heinecke  <aheinecke@intevation.de>

	Add build instructions and update README
	* INSTALL: Replace with project specific information.
	* README: Note UIServer requirement.

2016-03-04  Andre Heinecke  <aheinecke@intevation.de>

	Unfuzz two strings in german translation
	* po/de.po: Unfuzz two strings.

	Automatic update of translations.
	* po: Auto update.

	Minor string fixes.
	* src/gpgoladdin.cpp (GetCustomUI_old, GetCustomUI_MIME): Fix
	 punctuation and a typo.

	Revert all mails on disable instead of wipe
	* src/gpgoladdin.cpp (GpgolAddin::OnDisconnection): Change
	 from wipe to revert. Unlocalize error.

	Add german translations
	* po/de.po: Translate new strings.

	Update Portugese translations
	* po/pt.po: Update and convert to utf-8

	Automatic update of translations.
	* po: Auto update.

	Change upcoming version down to 1.4.0
	* NEWS: Update accordingly.
	* configure.ac: Change version to 1.4.0

	Add option to switch from old to new UI
	* src/Makefile.am: Fix windres call to include config.h
	* src/addin-options.cpp (enable_disable_opts): Enable buttons
	 depending on mime_ui.
	 (options_window_proc): Add handling for mime_ui checkbox.
	* src/common.h (struct opts): Add mime_ui option.
	* src/dialogs.h (IDC_ENABLE_SMIME): Define.
	* src/dialogs.rc: Add checkbox for mime_ui.
	* src/gpgoladdin.cpp: Switch ui code depending on opt.mime_ui.
	* src/main.c (read_options, write_options): Handle mime_ui.
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Handle mime_ui.

2016-02-25  Andre Heinecke  <aheinecke@intevation.de>

	Search for uiserver more agressively
	This is supposed to work for both gpg4win 2.x and 3.x and the new
	install layout.

	* configure.ac (gpg4win-3-reg-keys): Remove option.
	* src/common.c (default_homedir): Fallback to Gpg4win 2 regkey.
	  (get_gpg4win_dir): New. Search at multiple places.
	  (get_data_dir): Use get_gpg4win_dir.
	* src/common.h (get_gpg4win_dir): Declare.
	  (GPG4WIN_REGKEY_2, GPG4WIN_REGKEY_3): New for old and ney keys.
	* src/engine-assuan.c (get_uiserver_name): Rewrite to look for more
	  names.
	* src/main.c (get_locale_dir): Use get_gpg4win_dir.

2016-01-07  Andre Heinecke  <aheinecke@intevation.de>

	Update NEWS with latest changes.
	* NEWS: Update.

2016-01-04  Andre Heinecke  <aheinecke@intevation.de>

	Fix crash when using Exchange Active Sync
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Do not crash when
	internetcharsetbody_tag is not available.

2015-12-18  Andre Heinecke  <aheinecke@intevation.de>

	Try to get exchange address from cache first.
	* src/mapihelp.cpp (resolve_ex_from_address): Try cache first.
	* src/mymapi.h (MAPI_CACHE_ONLY): Define.

	Add a way to resolve Exchange Address in MAPI
	* src/mapihelp.cpp (resolve_ex_from_address): New.
	 (mapi_get_from_address): Use it.

	Add helper to get MAPISession through OOM
	* src/oomhelp.cpp (get_oom_mapi_session): New.
	* src/oomhelp.h (get_oom_mapi_session): Declare.

	Make GpgolAddin class a singleton
	* src/gpgoladdin.cpp (GpgolAddin::get_instance): New.
	* src/gpgoladdin.h (GpgolAddin::get_instance): Declare.
	 (GpgolAddin::get_application): Expose application reference.

	Add more fallbacks for sender resolution
	* src/mail.cpp (Mail::update_sender): Add another Fallback
	 for Sender address resolution.

	Add disabled support for inline editors
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetIDsOfNames): Map Ids.
	 (GpgolRibbonExtender::Invoke): Dispatch to correct functions.
	 (GpgolRibbonExtender::GetCustomUI): Add UI for this.
	* src/ribbon-callbacks.cpp (mark_mime_action, get_crypt_pressed):
	 Prepare to be called from explorer context.
	 (get_crypt_pressed): Return False on error.
	 (mime_sign, mime_encrypt): Removed.
	* src/ribbon-callbacks.h: Add Ids and update prototypes.

2015-12-16  Andre Heinecke  <aheinecke@intevation.de>

	Fix encrypt only when protocol is provided
	* src/engine-assuan.c (op_assuan_encrypt): Add codepath for
	 protocol provided and sign not set.

2015-12-11  Andre Heinecke  <aheinecke@intevation.de>

	Bump version to get 2.0 betas
	* NEWS: Add News so far.
	* configure.ac: Bump version.

2015-12-10  Andre Heinecke  <aheinecke@intevation.de>

	Remove unused variable
	* src/addin-options.cpp (options_dialog_box): Remove unused variable.

	Fix x64 build by cleaning up debug statements.
	* src/addin-options.cpp: Remove some debug output

	Disable S/MIME support by default
	* src/main.c (read_options): Default to false for S/MIME support.

	Set protocol to OpenPGP if S/MIME is disabled
	* src/mail.cpp (do_crypto): Set protocol according to opts.

	Fix logic error in save avoidance
	* src/mailitem-events.cpp (Write): Only check for needs_save again.
	 (Read): Set needs save if a smime message should be reverted.

	Make default encrypt and default sign work
	* src/mailitem-events.cpp (Open): Set draft_info_flags according
	 to settings.

	Add Options control to ribbon and prep. Sigstat
	* src/gpgoladdin.cpp (getCustomUI): Add dialogBoxLauncher for opts.
	  (getCustomUI): Prepare for status in reader window.
	  (GpgolRibbonExtender::Invoke): Call the functions.
	  (GpgolRibbonExtender::GetIDsOfNames): New names.
	* src/mail.cpp (Mail::insert_plaintext): Invalidate ribbon.
	* src/ribbon-callbacks.cpp (get_crypt_status): New.
	* src/ribbon-callbacks.h: Add prototypes

	Remove unused definition of registry key
	* src/config-dialog.c (GNUPG_REGKEY): Removed.

	Add new options dialog for gpgol > 2010
	* src/Makefile.am: Add new files.
	* src/addin-options.cpp: New.
	* src/addin-options.h: New.
	* src/dialogs.h: Add ID's
	* src/dialogs.rc: Add Dialog layout.

	Reduce syncs by canceling writes
	* src/mail.cpp (is_smime, needs_save): New.
	* src/mail.h: Declare and add new properties.
	* src/mailitem-events.cpp (MailitemEvents::Invoke): Cancel most
	  writes.
	* src/revert.cpp (mailitem_revert): Use is_smime.

2015-12-09  Andre Heinecke  <aheinecke@intevation.de>

	Make sure config.h is included before gpg-error.h
	* src/application-events.cpp, src/exechelp.c, src/rfc2047parse.c:
	 Include config.h first.

	Add option to use Gpg4win-3 registry keys
	* configure.ac: Add --enable-gpg4win-3-reg-keys
	* src/common.h: Include config.h

2015-12-04  Andre Heinecke  <aheinecke@intevation.de>

	Use callbacks for toggle btn state and refresh ui
	* src/application-events.cpp (ApplicationEvents::Invoke): Invalidate
	  UI when a new Item is loaded.
	* src/gpgoladdin.cpp (GpgolRibbonExtender::Invoke): Store RibbonUI
	  instances. Forward calls for new ID's.
	  (GpgolRibbonExtender::GetCustomUI): Add callbacks.
	  (GpgolRibbonExtender::GetIDsOfNames): Add CB ID's-
	  (gpgoladdin_invalidate_ui): Invalidate UI. Invalidate causes
	  all callback to be triggered again in their correct contexts.
	* src/gpgoladdin.h: Add prototype for gpgoladdin_invalidate_ui.
	* src/ribbon-callbacks.cpp (mark_mime_action): Work on base message.
	  (get_crypt_pressed): Callback for toggle buttons.
	* src/ribbon-callbacks.h: Add ids and prototypes

	Move blocking multitry save code into mapihelp
	* src/revert.cpp (finalize_mapi): Remove wait code.
	* src/mapihelp.cpp (mapi_do_save_changes): Try multiple times.

	Revert "Add Tracepoints for issue 1837"
	This reverts commit 7016fec9aef7be53f164829f7c76e28c6a83e228.

	* src/gpgoladdin.cpp (getCustomUI): Fix conflicts.

2015-12-03  Andre Heinecke  <aheinecke@intevation.de>

	Add Revert support for S/MIME mails.
	* src/revert.cpp (gpgol_mailitem_revert): Handle S/MIME mails.
	* src/mapihelp.h: Add missing prototype for get_gpgolmsgclass_tag.

	Try harder to save reverted mails
	* src/revert.cpp (finalize_mapi): Try several secons to store.

	Add revert support for mulitpart signed PGP MIME
	* src/mimemaker.c (restore_msg_from_moss): Don't set gpgol
	  msg_class.
	* src/revert.cpp (gpgol_mailitem_revert): Add support for
	  MULTIPART_SIGNED.

	Try yet another way to find sender address
	* src/mail.cpp (Mail::update_sender): Use SendUsingAccount.

	Try harder to match outlooks internal filename enc
	* src/common.c (qp_encode): New. Simple quoted printable encoder.
	  (b64_encode): Fix termination of return value.
	* src/common.h: Add prototype
	* src/mimemaker.c (utf8_to_rfc2047b): Use infer content encoding
	  to switch between base64 and quoted printable.

2015-12-02  Andre Heinecke  <aheinecke@intevation.de>

	Add revert support for PGP MulitpartEncrypted
	* src/mimemaker.c (restore_msg_from_moss): Create a mosstmpl
	  attachment. Currently only works for PGP MultipartEncrypted.
	* src/mimemaker.h: Add prototype.
	* src/oomhelp.h: Add DASL for attachment MIME tag.
	* src/revert.cpp (finalize_mapi): Dont restore message class.
	  (gpgol_mailitem_revert): Collect info first. Then work. Handle
	  MOSS attachments. Do Magic.

	Move some debug output into debug_oom
	* src/oomhelp.cpp (get_oom_object): Be quieter by default.

	Fix view of sent mails with S/MIME disabled
	* src/mapihelp.cpp (mapi_change_message_class): Respect overrides
	  even with S/MIME disabled.

2015-12-01  Andre Heinecke  <aheinecke@intevation.de>

	Disable MIME style support for clearsigned mails
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Disable clearsigned
	  detection for Outlook 2010 and later

	Activate MIME style handling for PGPMessages >OL14
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Remove check
	  for outlook version.

	Add revert to mail class and use it instead wipe
	* src/mail.cpp (Mail::revert_all_mails, Mail::revert): New.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (MailitemEvents::Invoke): Revert instead
	  of wipe.

	Add mail revert implementation that works on OOM
	* src/revert.cpp (gpgol_mailitem_revert): Revert mail in OOM.
	* src/revert.h: Add prototype.

	Add OOM PropertyAccessor helper methods
	* src/oomhelp.cpp (set_pa_variant): New. Set a property.
	  (get_pa_int): New. Get an int property.
	  (get_pa_variant): New. Get a generic property as variant.
	  (get_pa_string): Refactored to use get_pa_variant.
	* src/oomhelp.h: Add prototpyes and DASL defs.

2015-11-27  Andre Heinecke  <aheinecke@intevation.de>

	Fix reg key lookup for x64 and prep for new key
	* src/common.h (GNUPG_REGKEY): Use 32 bit key on 64 bit. Prepare
	  for gpg4win 3. Key layout

	Start UIServer on demand
	* src/engine-assuan.c (op_assuan_init): Don't test connection.

	Rework connect_uiserver call based on gpgex
	* src/engine-assuan.c (connect_uiserver): Use proper locking. Improve
	 retry handling.

	Add process spawning code from gpgex
	* src/common.c, src/common.h (gpgol_spawn_detached): New.
	* src/exechelp.h, src/exechelp.c: New.
	* src/Makefile.am: Add exechelp files.

	Generate libmapi32 for 64 bit systems corecctly
	* configure.ac: Add conditional for 64 bit build
	* src/Makefile.am: Add 64 bit flags for dlltool if necessary.
	* src/mapi32.def: Add C calling convention names where necessary.

	Fix size_t / unsigned int conversion for x64
	* src/mlang-charset.cpp (ansi_charset_to_utf8): Fix call to
	 ConvertStringToUnicode to use unsigned int for size.

2015-11-24  Werner Koch  <wk@gnupg.org>

	Post release updates

	Release 1.3.0

	po: Auto-update

	Fix make distcheck.
	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Improve.

2015-11-23  Andre Heinecke  <aheinecke@intevation.de>

	News for 1.3.0 release
	* NEWS: Add some news.

	Be more tolerant when parsing RFC2047
	* src/rfc2047parse.c (G_MIME_RFC2047_WORKAROUNDS): Enable.

2015-11-22  Andre Heinecke  <aheinecke@intevation.de>

	Add gmime-table-private header
	* src/gmime-table-private.h: New, from GMime
	* src/Makefile.am: Update accordingly.

	Use mlang charset conversion in RFC2047 parser
	* src/rfc2047parse.c (rfc2047_decode_tokens): Use malang-charset
	  conversion.
	  (_rfc2047_token, rfc2047_token_new_encoded_word): Unconstify charset.
	  (rfc2047_token_free): New. Also free charset.
	  (rfc2047_tokens_free): Use token_free.
	  (g_mime_utils_header_decode_phrase): Cleanup redundant code.
	  (rfc2047_parse): Ditto.

	Fallback to content-type name if no cd/filename
	* src/mimeparser.c (t2body): Fallback to ct/name if cd/filename
	  not found or not parsed.

	Parse RFC2047 attachment names
	* src/mimeparser.c (start_attachment): Expect filename as utf8 and
	  set it as Unicode property in MAPI.
	  (t2body): Parse the attachment filename.

	Use RFC2047 for attachment names
	* src/mimemaker.c (utf8_to_rfc2047b): New. Convert utf8 to rfc2047
	  base64 encoding.

	Add base64 encoder
	* src/common.c, src/common.h (b64_encode): New.

	Add MIME language to UTF8 conversion code
	* src/mlang-charset.cpp, src/mlang-charset.h: New.
	* src/Makefile.am: Update accordingly.

	Add rfc2047 parser based on GMime
	* src/rfc2047parse.c, src/rfc2047parse.h: New.
	* src/Makefile.am: Update accordingly.

2015-11-19  Andre Heinecke  <aheinecke@intevation.de>

	Fix DllCanUnloadNow behavior
	* src/gpgoladdin.cpp (DllCanUnloadNow): Only return OK if the addin
	is not connected.

2015-11-13  Andre Heinecke  <aheinecke@intevation.de>

	Remove unused include
	* src/attachment.cpp: Remove unused include.

	Use gpgrt_asprintf
	* src/attachment.cpp (do_crypt), src/gpgoladdin.cpp (GetCustomUI):
	  Use gpgrt_asprintf.

	Remove unsed vasprintf implementation
	* src/missing/vasprintf.c: Removed.

	Revert "Use libmapi32 from mingw"
	This reverts commit 6533170a34d9e6f7191e41b31045ad0b4b4af1df.

	Disable msgclass changing code for in Body Crypto
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Disable for
	  Outlook >= 2010.

	Check PGP Body tags for additional msgtypes
	* src/mapihelp.cpp (change_message_class_ipm_note),
	  (change_message_class_ipm_note_secure_cex): Also check
	  multipart/alternative and multipart/mixed.

2015-11-12  Andre Heinecke  <aheinecke@intevation.de>

	Add workaround for opaque signed encrypted data
	* src/ribbon-callbacks.cpp (do_reader_action): Only use the
	mime handling when there is no "BEGIN PGP MESSAGE" in body.

	Actually add French translation from afb7e445c

	Regenerate po files
	* de.po, pt.po, sv.po, zh_CN.po, zh_TW.po: Automatic update.

	Add traditional / simplified chinese localization
	* zh_CN.po, zh_TW.po: New.
	* po/LINGUAS: Update accordingly.

	Add French translation
	* LINGUAS: Add fr
	* po/fr.po: New.

	Remove deleted files from POTFILES.in
	* po/POTFILES.in: Remove deleted files

	Do not release eventsink when disabled
	* src/gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Do not release
	m_appliactionEventSink when disabled. Use NULL guarded release.

	Fix double free when addin is disabled
	* src/gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Do not release
	 RibbonExtender.

2015-11-04  Andre Heinecke  <aheinecke@intevation.de>

	Add mkinstalldirs script
	* build-aux/mkinstalldirs: New. Copied from gpgme.

	Use libmapi32 from mingw
	* Makefile.am: Remove our own libmapi32 creation
	* mapi32.def: Removed.

	Fix int to pointer cast when creating worker
	* src/engine-assuan.c (async_worker_thread): Expect parameter to be
	 a pointer instead of a value.
	 (op_assuan_init): Pass a reference instead.

	Handle handle to int casts
	 * src/engine-assuan.c (handle_to_int): New.
	  (send_options, op_assuan_init, op_assuan_encrypt),
	  (op_assuan_sign, op_assuan_decrypt, op_assuan_verify): Use it.

	Add format string macro for size_t
	* src/util.h (SIZE_T_FORMAT): Use a macro for a portable way of
	  printing size_t.
	* src/engine.c (engine_filter, engine_wait): Use it in debug output.

	Define out code that does not compile for x64
	* src/config-dialog.c (config_dialog_box): Define out for x64
	* src/olflange-dlgs.c (GPGOptionsDlgProc): Define out call to
	  SetWindowLong

	Fix pointer to int cast in debug output
	* src/oomhelp.cpp (dump_excepinfo): Fix deferredFill output format.

	Remove dead code
	* Makefile.am: Update gpgol_Sources accordingly.
	* main.c (init_options, read_options): Remove password_ttl setting.
	  (DllMain): No longer initialize passcache.
	* passcache.c, passcache.h, passphrase-dialog.c, recipient-dialog.c,
	  verify-dialog.c: Removed. This is handled by the uiserver now.

	Fix recipient lookup
	* src/message.cpp (get_recipients): Actually fallback to the
	  email property in case the smtp address property is not set.

2015-11-02  Andre Heinecke  <aheinecke@intevation.de>

	Wipe all decrypted mails on disconnect.
	* src/mail.cpp (wipe_all_mails): New.
	* src/gpgoladdin.cpp (~GpgOLAddin): Add more debug output.
	  (OnDisconnection): Call wipe all mails.

	Save mailitem on close
	* src/mail.h (Mail::is_crypto_mail): New.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Call Save on
	  Close.

	Add more debug output for msg wipes.
	* src/mail.cpp (Mail::insert_plaintext): Check if msg already
	  needs wipe and log it. Log plaintext with msg ptr.
	  (Mail::wipe): Log wipe error.

	Fix handling sent and exchange to exchange mails.
	* src/mail.cpp (Mail::process_message): Always change message class.

2015-10-30  Andre Heinecke  <aheinecke@intevation.de>

	Fix from address lookup for exchange
	* src/mapihelp.cpp (mapi_get_from_address): Try additional SMTP
	  tags before falling back to EMAIL tag.
	* src/mymapitags.h (PidTagSenderSmtpAddress_W),
	 (PR_SENT_REPRESENTING_SMTP_ADDRESS_W): Define property ids.

	Fix regression introduced by 383cb091
	* src/message.cpp (message_decrypt): Fix parenthesis.

	Release detached event sink.
	* src/mail.cpp (Mail::~Mail): Release detached mail event sink.

	Enable sender handling for Exchange Accounts
	* src/mail.cpp (Mail::update_sender): New. Updates sender address
	  from OOM.
	  (Mail::get_sender): New. Access the sender.
	  (Mail::do_crypt): Pass sender to crypto functions.
	* src/mail.h: Update accordingly.
	* src/mailitem-events.cpp (EVENT_SINK_INVOKE): Update sender on send
	  event.
	* src/message.cpp, src/message.h, src/mimemaker.c, src/mimemaker.h:
	  Add optional sender parameter to crypto functions and use it.

	Factor logic out of event handler
	* src/Makefile.am: Add mail.h and mail.cpp
	* src/mail.cpp, src/mail.h: New. Class containing information and
	  functionality to work with mails.
	* src/application-events.cpp (EVENT_SINK_INVOKE): Create mail objects
	  on ItemLoad event for Mailitems.
	* src/mailitem-events.cpp (HTML_TEMPLATE): Move to mail.cpp
	  (BEGIN_EVENT_SINK): Reduce member variables.
	  (MailItemEvents::MailItemEvents): Less initializations.
	  (MailItemEvents::handle_read): Moved to Mail::insert_plaintext.
	  (MailItemEvents::handle_before_read): Moved to Mail::process_message
	  (do_crypto_on_item): Moved to Mail::do_crypto
	  (needs_crypto): Moved to Mail::needs_crypto
	  (EVENT_SINK_INVOKE): Get reference to according mail object.
	  (EVENT_SINK_INVOKE): Call Mail methods according to events.
	  (EVENT_SINK_INVOKE): Wipe code moved to Mail::wipe

	Fix recipient lookup for SMTP addresses
	* src/message.cpp (get_recipients): Look for SMTP address property
	and also the EMAIL address property.

2015-10-28  Andre Heinecke  <aheinecke@intevation.de>

	Fix recipient address lookup for Exchange addrs
	* src/gpgoladdin.cpp (GpgolAddin::OnConnection): Store major version.
	* src/main.c: Define major version variable.
	* src/message.cpp (get_recipients): Use SMTP addr property for new
	  versions.
	* src/mymapitags.h: Define SMTP_ADDRESS property ids.
	* src/olflange.cpp (GpgolExt:Install): Store major version.
	* src/oomhelp.h: Rename PR_SMTP_ADDRESS URI to PR_STMP_ADDRESS_DASL.
	* src/oomhelp.cpp (get_oom_recipients): Update accordingly.
	* src/ribbon-callbacks.cpp (do_composer_action, do_reader_action),
	  (attachEncryptedFile): Update accordingly.
	* src/util.h: Declare major version variable.

2015-10-23  Werner Koch  <wk@gnupg.org>

	Move config files to build-aux and upodate autogen.sh.
	* autogen.rc: New.
	* Makefile.am (EXTRA_DIST): Add autogen.rc.
	* configure.ac: Update for new autogen.sh and moved config files.
	* build-aux/compile: New.
	* build-aux/depcomp: New.
	* build-aux/mdate-sh: New.
	* build-aux/texinfo.tex: New.

2015-10-22  Andre Heinecke  <aheinecke@intevation.de>

	Use utf8 gettext in inspectors
	* src/inspectors.cpp: Use utf8 gettext.

2015-10-21  Andre Heinecke  <aheinecke@intevation.de>

	Make old decrypt / verify buttons work with mime
	* src/ribbon-callbacks.cpp (verify_mime): New. Force message handling
	 again.
	 (do_reader_action): Call verify_mime on action and print info
	 on decrypt.

	Fix crash on attachment decryption
	* src/attachment.cpp (do_crypt): Check return value of mapiobject.

2015-10-20  Andre Heinecke  <aheinecke@intevation.de>

	More logging and error checking in App Events
	* src/application-events.cpp (ApplicationEvents::Invoke): Check
	 that parms is not NULL. Add more debug output.

	Log UTC time instead of tick count.
	* src/main.c (do_log): Log the current UTC time to allow
	 corellating debug output to Windows event logs.

2015-10-16  Andre Heinecke  <aheinecke@intevation.de>

	Add Tracepoints for issue 1837
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetCustomUI),
	 src/ribbon-callbacks.cpp (getIcon): Add Tracepoints.

2015-10-15  Andre Heinecke  <aheinecke@intevation.de>

	Add information to body of encrypted messages
	* src/mailitem-events.cpp (HTML_TEMPLATE): A message to be shown in
	  the body of encrypted messages. Will become a template for l10n
	  later.
	* src/mailitem-events.cpp (Invoke): Use the message to wipe the body.
	  (handle_read): Use the message in case of failed decryption.

	Improve TRACEPOINT macro.
	* src/util.h (TRACEPOINT): Remove the while loop.

	Use UTF8 in addin localization.
	* src/w32-gettext.c, src/w32-gettext.h (utf8_gettext): New.
	  gettext that returns UTF8.
	* src/w32-gettext.c (internal_gettext): Helper that can return
	  either UTF8 or native encoding.
	* src/gpgoladdin.cpp: Use UTF8 gettext variants.

	Only define TRACEPOINT macro once.
	* src/util.h (TRACEPOINT): Define here.
	* src/attached-file-events.cpp,
	  src/engine-assuan.c,
	  src/engine.c,
	  src/ext-commands.cpp,
	  src/item-events.cpp,
	  src/mapihelp.cpp,
	  src/message-events.cpp,
	  src/message.cpp,
	  src/mimemaker.c,
	  src/mimeparser.c,
	  src/olflange.cpp,
	  src/passphrase-dialog.c,
	  src/property-sheets.cpp,
	  src/recipient-dialog.c,
	  src/revert.cpp,
	  src/session-events.cpp,
	  src/user-events.cpp: Remove unused macro.
	* src/gpgoladdin.cpp: Switch to new macro without useless braces.

	Check for result pointer in getIcon
	* src/ribbon-callbacks.cpp (getIcon): Check if result is NULL.

	Fix crash on unload.
	* src/gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Release ribbonextender
	  instead of deleting it.

	Install forms for addin
	* src/gpgoladdin.cpp (GpgolAddin::OnStartupComplete): Call
	  install_forms.

2015-10-14  Andre Heinecke  <aheinecke@intevation.de>

	Increase version to 1.3.0
	* configure.ac (mym4_version): Change to 1.3.0

	Make mime-send UI support optional.
	* configure.ac (enable-mime-send): New option to enable mime sending.
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetCustomUI): Add
	 old UI again.

	Use toggle Buttons for MIME sign and encrypt
	* src/gpgoladdin.cpp (GpgolRibbonExtender::GetCustomUI): Use
	 toggle buttons.
	 (GpgolRibbonExtender::Invoke): Toggle button param 0 is the state.
	 1 the dispatch interface.
	* src/ribbon-callbacks.cpp (message_flag_status): Removed.
	  (mark_mime_action): Don't use flag status.

	Remove engine-gpgme.c from potfiles
	* POTFILES.in: Remove engine-gpgme.c

	Really fix msg merge failures.
	* src/Makefile.am: Do not link dialog.o into gpgol.dll. It's
	 already included in resource.o.
	* src/dialogs.h: Remove comment about not using the lower 4 bit.
	* src/oomhelp.cpp (put_oom_icon): Update accordingly. (To use +1 again)

	Remove unused g10 code logo.
	* logo.bmp: Removed.
	* Makefile.am (EXTRA_DIST), dialogs.h, dialogs.rc: Update accordingly.

	Fix unused bitmap removal
	* src/dialogs.rc: Do not reference the removed files.
	* src/Makefile.am (EXTRA_DIST): Do not include the removed files.

	Fix resource id's and remove unused resources.
	* dialogs.h: Only use the upper 28 bit for id's. Remove 32/64px ids.
	* oomhelp.cpp (put_oom_icon): Clarify comment and use new ids for mask.
	* explorers.cpp (add_explorer_controls),
	 inspectors.cpp (add_inspector_controls, update_crypto_info):
	  Use _16 id directly.
	* decrypt-32.bmp,
	 decrypt-32m.bmp,
	 decrypt-verify-32.bmp,
	 decrypt-verify-32m.bmp,
	 encrypt-32.bmp,
	 encrypt-32m.bmp,
	 key-manager-32.bmp,
	 key-manager-32m.bmp,
	 key-manager-64.bmp,
	 key-manager-64m.bmp,
	 sign-32.bmp,
	 sign-32m.bmp,
	 verify-32.bmp,
	 verify-32m.bmp: Removed

2015-10-13  Andre Heinecke  <aheinecke@intevation.de>

	Enable -Werror in maintainer-mode
	* configure.ac: Enable Werror in maintainer-mode.

	Cast gpgme callback functions to fix warning.
	* src/engine.c (engine_create_filter): Cast callback functions.

	Remove engine-gpgme
	* src/engine-gpgme.c, src/engine-gpgme.h: Remove historic code.
	* src/engine.c: Assume use_assuan and remove engine-gpgme calls.
	* src/Makefile.am: Update accordingly.

	Fix various warnings
	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Add braces.
	* src/message.cpp (message_decrypt): Add braces.
	* src/oomhelp.cpp (dump_excepinfo): Remove additional format params.

	Release application event sink instead of deleting
	* src/gpgoladdin.cpp (GpgolAddin::~GpgolAddin): Release instead
	  of delete.

	Fix unused variable warnings
	* src/eventsink.h (USE_INVOKE_ARGS): Also add dispid.
	* src/gpgoladdin.cpp (GpgolAddinFactory::CreateInstance): Unused punk.
	 (GpgolAddin::Invoke, GpgolRibbonExtender::Invoke): Use invoke args.
	* src/mailitem.cpp (GpgolItemEvents::Write): Remove want_html var.
	* src/ribbon-callbacks.cpp (message_flag_status): Remove window param.
	  (mark_mime_action): Update call accordingly.

	Don't check for stpcpy.
	* configure.ac: Don't check for stpcpy.
	* src/rfc822parse.c (my_stpcpy): Define our own stpcpy
	  unconditionally.

	Fix write-string warnings.
	* src/gpgolstr.cpp, src/gpgolstr.h: New. Small string wrapper.
	* src/Makefile.am: Add to sources.
	* src/display.cpp (open_inspector),
	 src/mapihelp.cpp (create_gpgol_tag, get_internetcharsetbody_tag),
	 src/ribbon-callbacks.cpp (do_composer_action, do_reader_action),
	 src/message.cpp (pgp_body_to_attachment): Use it.

	Fix compiler warnings in engine-assuan
	* src/engine-assuan.c: Don't redefine WINVER. Include windows.h
	  after assuan.h (because of winsock)
	  (async_worker_thread): Return 0 on success.
	  (start_command): Cast status callback to correct type.

	Log error in mimemaker write_attachments.
	* src/mimemaker.c (write_attachments): Log error.

	Fix body handling of sent mails.
	* src/mailitem-events.cpp (handle_read): Work on the base message.

2015-10-02  Andre Heinecke  <aheinecke@intevation.de>

	Remove mailitem event handler on unload
	* src/mailitem-events.cpp (invoke): Handle unload.

	Hopefully fix Ol 2016 crash on send
	* src/mailitem-events.cpp (request_send): Remove delay.

	Fix return value of invoke_oom_method
	* src/oomhelp.cpp (invoke_oom_method): Return false on success.

	Fix return value of mark_mime_action
	* src/ribbon-callbacks.cpp (mark_mime_action): Return S_OK when ok.

2015-10-01  Andre Heinecke  <aheinecke@intevation.de>

	Change ribbon UI for mime functionality.
	* gpgoladdin.cpp (GetIDsOfNames): Add ID's for mime actions.
	  (Invoke): Handle new actions.
	  (GetCustomUI): Remove most of the Ribbon UI only leave
	  encrypt / sign / start certificate manager buttons.
	* src/mailitem-events.cpp (sign_encrypt_item): Renamed to
	  do_crypto_on_item.
	  (do_crypto_on_item): Do crypto according to draft flags.
	  (needs_crypto): New. Check if the mailitem needs crypto at all.
	  (Invoke): Pass send when no crypto action is selected.
	* src/mapihelp.cpp (get_gpgol_draft_info_flags),
	  (set_gpgol_draft_info_flags): New helpers to work with draft info.
	* src/mapihelp.h: Declare above functions.
	* src/ribbon-callbacks.cpp (message_flag_status): Show a messagebox
	  to inform about crypto actions.
	  (mark_mime_action): New. Set the draft_info_flags.
	  (mime_sign, mime_encrypt): New. Callback functions for outlook.

2015-09-30  Andre Heinecke  <aheinecke@intevation.de>

	Update attachment size after modification
	* src/attachment.cpp (do_crypt_stream): Set stream size after modify.

2015-09-28  Andre Heinecke  <aheinecke@intevation.de>

	Merge branch 'master' into mime-addin

2015-09-25  Andre Heinecke  <aheinecke@intevation.de>

	Enable addin for Outlook 2016
	* src/gpgoladdin.cpp (GpgolAddin::OnConnection): Whitelist v. 16

2015-09-24  Andre Heinecke  <aheinecke@intevation.de>

	Do not send an item with encryption errors
	* mailitem-events.cpp (MailItemEvents::Invoke): Handle crypto errors.
	  (request_send): New. Sleep for 50ms and then request a send.
	  (sign_encrypt_item): Renamed from handle_after_write. Remove
	  not working context window lookup. Return errors.
	  (handle_before_read): Remove context window lookup.

	Add window message helper code.
	* Makefile.am: Add sources.
	* gpgoladdin.cpp (OnStartupComplete): Initialize responder.
	* windowmessages.cpp, windowmessages.h: New.

	Show exceptions in invoke_oom_method.
	* src/oomhelp.cpp (dump_excepinfo): Clean up dump style.
	  (invoke_oom_method): Add exception handling for better debugging.

2015-09-21  Andre Heinecke  <aheinecke@intevation.de>

	Add short text to processed messages.
	* src/mailitem-events.cpp (MailItemEvents::Invoke): Add info text
	instead of setting the message body to an empty string.

	Add proper Attachment handling for MIME messages.
	Attachments are now session decrypted in the read event and
	session encrypted again in the write event.

	* src/attachment.cpp, src/attachment.h: Functions for attachment
	Session encryption / decryption.
	* src/Makefile.am: Add new files.
	* src/mailitem-events.cpp (~MailItemEvents): Resolve Macro
	to avoid confusing bracing.
	(MailItemEvents::handle_read): Remove session encryption from
	attachments.
	(MailItemEvents::invoke): Track "wipe" status. Session encrypt
	attachments in write event.
	* src/mapihelp.cpp (get_gpgolattachtype): Unstatic.
	* src/mapihelp.h (get_gpgolattachtype): Expose.
	(attachtype_t): Define attachment type for temporary unprotected
	Attachments.

	Add helper method to invoke a function.
	* src/oomhelp.cpp, src/oomhelp.h (invoke_oom_method): Invoke
	a generic method without arguments with an optional return value.

	Show exception info in case put_oom_string fails.
	* src/oomhelp.cpp (put_oom_string): Show exception info.

	Log mailitem event handler installation
	* src/application-events.cpp (ApplicationEvents::Invoke): Log
	 for which message a sink is installed.

2015-09-17  Andre Heinecke  <aheinecke@intevation.de>

	Wipe the body of encrypted messages on write.
	* src/mailitem-events.cpp (Invoke): Wipe the body of messages
	 that were encrypted.

	Show body of MIME messages
	* src/mailitem-events.cpp (MailItemEvents::handle_after_write),
	  (MailItemEvents::handle_before_read): New. Moved out of Invoke.
	  (MailItemEvents::handle_read): New. Set the body to the decrypted /
	  verified content.

	Split get_oom_base message in two functions
	* src/oomhelp.cpp (get_oom_base_message_from_mapi): New.
	  (get_oom_message): Obtain the Mapi message from a Mail item.
	  (get_oom_base_message): Use both functions to do the same as
	  before.
	* src/oomhelp.h: Update accordingly.

2015-09-16  Andre Heinecke  <aheinecke@intevation.de>

	Split event handling code in different files.
	One file per class is better.

	* src/application-events.cpp: New. For the Application.
	* src/mailitem-events.cpp: New. For MailItems.
	* src/Makefile.am: Update accordingly.

	Add support for MIME encryption / signing
	This currently tries to encrypt / sign all mails sent.

	* src/eventsinks.cpp (MailItemEvents::Invoke): Sign/Encrypt
	  mails in AfterWrite event.

	Simplify ReadEvent handling
	* src/eventsinks.cpp (MailItemEvents::Invoke): Use
	  get_oom_base_message instead of doing this here.

	Add get_oom_base_message helper function.
	* src/oomhelp.cpp (get_oom_base_message): New. Extract base message
	  from MessageItem Object.
	* src/oomhelp.h (get_oom_base_message): Declare.

	Add MailItem Event dispids
	* src/eventsinks.cpp (MailItemEvents::MailItemEvent): Add dispids
	 for other events.

	Check parameter type in ItemLoad event.
	* src/eventsinks.cpp (ApplicationEvents::Invoke): Check parameter
	  type before using it.

	Add framework for mime decrypt / verify
	Add event handling for Application and MailItem
	events and use the message incoming handler in
	the before read event.

	* src/comhelp.h: Removed again. Macros moved to mymapi.h where
	  they are better placed.
	* src/eventsink.h: (EVENT_SINK_DEFAULT_DTOR_CODE): Release /
	  unadvise properly.
	  (USE_INVOKE_ARGS): New. Used to avoid unused parameter
	  warnings.
	  (debug_oom, debug_oom_extra): Moved to util.h.
	* src/eventsinks.h: New. Header to declare event sink install /
	  detach functions.
	* src/eventsinks.cpp: New. Event sinks for MailItem and Application.
	* src/oomhelp.h: Define GUID's necessary for the Event handlers.
	  (get_object_by_id): New. oomhelp API style wrapper around
	  QueryInterface.
	* src/oomhelp.cpp (get_object_by_id): New.
	* src/util.h (log_oom, log_oom_extra): New. Logging helper.
	* src/mymapi.h: Add Macros from comhelp.
	  (IMAPISecureMessage): Declare COM interface.
	* src/message.h: Add headers that were indirectly included
	  in other usages.
	* src/gpgoladdin.h (GpgolAddin): Add Application Event sink member.
	* src/gpgoladdin.cpp (OnStartupComplete): Install Application Event
	  sink.

2015-09-10  Andre Heinecke  <aheinecke@intevation.de>

	Purify COM interface declarations.
	* src/inspectors.h (IOOMInspectorEvents),
	  src/mailitem.h (IOOMItemEvents): Declare interface methods
	  as pure virtual.

	Correctly declare gpgoladding COM interfaces
	* src/gpgoladdin.h (IDTExtensibility2, IRibbonExtensibility)
	 (IRibbonCallback): Add IUnknown and IDispatch methods. Purify.

	Declare destructors of COM objects as virtual
	* src/attached-file-events.h (GpgolAttachedFileEvents),
	  src/eventsink.h (BEGIN_EVENT_SINK)
	  src/gpgoladdin.h (GpgolRibbonExtender GpgolAddin GpgolAddinFactory),
	  src/item-events.h (GpgolItemEvents),
	  src/message-events.h (GpgolMessageEvents),
	  src/property-sheets.h (GpgolPropertySheets),
	  src/session-events.h (GpgolSessionEvents),
	  src/user-events.h (GpgolUserEvents): Make dtors virtual.

	Add comhelp header for common COM definitions
	* src/comhelp.h: New. Add IUnknown and IDispatch defs.
	* src/mymapi.h: Use definitions from comhelp.

	Do not use ambigouis %S format character
	* src/gpgoladdin.cpp (getCustomUI): Do not use %S.

	Fix doc build with texinfo 5.2
	* gpl.texi: Update with version from gpgme 1.6.0
	* gpgol.texi: Fix itemx syntax errors.

2015-04-10  Werner Koch  <wk@gnupg.org>

	Fix last commit (35e6859)
	* src/rfc822parse.c (parse_field): Replace break by goto.

2015-04-09  Werner Koch  <wk@gnupg.org>

	Fix case of zero length continuation lines in mail parser.
	* src/rfc822parse.c (parse_field): Loop after continuation line.

2014-08-13  Werner Koch  <wk@gnupg.org>

	Post release updates

	Release 1.2.1

2014-07-25  Andre Heinecke  <aheinecke@intevation.de>

	Add fallback for sender email
	    In case the sender email addess is not an smtp address fall
	    back to the property accessor.

	    * src/ribbon-callbacks.cpp (do_reader_action): Use property
	    accessor for non smtp addresses.

2014-07-24  Andre Heinecke  <aheinecke@intevation.de>

	Fix sender lookup by also using get_pa_string
	    * src/oomhelp.cpp (get_pa_string): Add debug output.
	    (get_oom_recipients): Remove now redundant debug output.
	    * src/oomhelp.h (get_pa_string): Declare.
	    * src/ribbon-callbacks.cpp (do_composer_action, do_reader_action)
	    (attachEncryptedFile): Use get_pa_string to obtain sender.
	    * NEWS: Update accordingly

2014-07-22  Andre Heinecke  <aheinecke@intevation.de>

	Look up SMTP Address by property
	    Use the PropertyAccessor interface to look up the
	    "hidden" SMTP Address property.

	    * src/oomhelp.cpp (get_pa_string): New. Get a string using
	    the property accessor of an object.
	    (get_oom_recipients): Prefer the PR_SMTP_ADDRESS property over
	    the direct Address.
	    * src/oomhelp.h (PR_SMTP_ADDRESS): New define.
	    * NEWS: Mention this.

2013-08-19  Werner Koch  <wk@gnupg.org>

	Post release updates.

	Release 1.2.0.

	po: Auto updates.

	Minor configure.ac fixes for newer autoconfs.

	Update auto version numbering to the modern scheme.
	* configure.ac: Add git m4 magic.

2013-08-13  Andre Heinecke  <aheinecke@intevation.de>

	Update translations
	    * po/de.po: Update translated messages
	    * po/pt.po, po/sv.po: Update autogenerated files.
	    * src/gpgoladdin.cpp (getCustomUI): Minor message changes.

	Ensure sender address for verify
	    If the message has not been sent use the current sender
	    address for verification.

	    * src/ribbon-callbacks.cpp (do_reader_action): Check
	    for sender address if message was not sent before.

	Append signature after the message text
	    Do not replace the text anymore but add the signature below.

	    * src/ribbon-callbacks.cpp (do_composer_action): Append
	    signature to body.

	Add ui for verify in composer and Tooltips
	    * src/gpgoladdin.cpp (getCustomUI): Use tooltips and supertips
	    to explain some more whats happening.
	    (getCustomUI): Add verify action to the reader

	Statically link against compiler libraries
	    * src/Makefile.am (gpgol_LDFLAGS): New.

2013-08-08  Andre Heinecke  <aheinecke@intevation.de>

	Add verify action for opaque signatures
	    This is at least minimal signature support and the most
	    robust way because we can avoid data sanitizing.

	    * src/verify-48.png: New.
	    * src/Makefile.am (EXTRA_DIST): Add verify png
	    * src/dialogs.h, src/dialogs.rc: Add verify png
	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke, GetCustomUI):
	    Add and handle verify action to the reader.
	    * src/ribbon-callbacks.cpp (decryptInspector, do_reader_action):
	    Renamed. Do reader action now works similar to the
	    do_composer_action.
	    (do_composer_action): Add support for verify
	    (verifyBody): New.
	    * src/ribbon-callbacks.h: Update accordingly.

	Add Action to add encrypted attachment without sig
	    Adds a new Action to add an encrypted attachment
	    without the signature.

	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke): Add callback
	    handling.
	    (GetCustomUI): Add new UI for action.
	    * src/ribbon-callbacks.cpp, src/ribbon-callbacks.h
	    (addEncAttachment): New.

	Use correct filename for the signature
	    This uses the name of the encrypted file as the basename
	    for the signature and not the name of the original file.

	    * src/ribbon-callbacks.cpp (attachSignature, attachEncryptedFile):
	    Use correct filename for signature.

	Add signature support for files and text
	    For files a detached signature is created and additionally
	    attached. This also generalizes the encryptInspector and
	    uses it as a more generic interface to the message composer
	    context.

	    * src/common.c, src/common.h (get_pretty_attachment_name): Add
	    Parameter to query for the name of a detached signature.
	    * src/dialogs.h: Define ID for sign-48.png
	    * src/engine-assuan.c, src/engine-assuan.h (op_assuan_sign): Add
	    flags parameter to control signature options.
	    * src/engine.c (engine_sign_start): Create detached signatures
	    by default.
	    (engine_sign_opaque_start): New. Creates an opaque signature.
	    * src/engine.h (ENGINE_FLAG_DETACHED): New.
	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke, GetCustomUI): Add
	    sign Action.
	    * src/sign-48.png: New.
	    * src/Makefile.am (EXTRA_DIST): Add sing-48.png
	    * src/ribbon-callbacks.cpp (copyFileToSink): New. Helper function
	    to copy the contents of a file into a sink.
	    (attachSignature): New. Helper function to add a detached signature
	    of a File to a MailItem.
	    (encryptInspector, do_composer_action): Renamed. Actions and data is
	    now controled by flags. Added sign action.
	    (decryptInspector): Use subject as session title.
	    (attachEncryptedFile): New. Attaches an encrypted file. Optionally
	    also attaches the signature of that file.
	    * src/ribbon-callbacks.h: Update accordingly.

	Add icon for decrypt selection context action
	    * src/gpgoladdin.cpp (GetCustomUI): Add btnDecrypt to
	    decryptSelection action.

	Initialize output buffers for encrypt / decrypt
	    Fixes the uninialized data seen at the end of those actions
	    and makes the lastlinebreak hack uneccessary.

	    * src/ribbon-callbacks.cpp (decryptInspector, encryptInspector):
	    Initialize buffers to make sure they are terminated.

	Initialize strings in conflict handler
	    This fixes the name conflict handling as wcsncpy did not
	    terminate the string with \0. Also add the space for
	    the terminator in case our strings are MAX_PATH in length.

	    * src/common.c (get_tmp_outfile): Initialize buffer variables

2013-08-07  Andre Heinecke  <aheinecke@intevation.de>

	Share encrypted file for reading again.
	    * src/common.c (get_tmp_outfile): Share for reading

2013-08-06  Andre Heinecke  <aheinecke@intevation.de>

	Implement add encrypted attachment
	    Add a binary encrypted attachment to a Message object using
	    OOM. The binary option requires very recent Versions of
	    GPA or Kleopatra.

	    * src/common.c, src/common.h (get_pretty_attachment_name),
	    (get_tmp_outfile): New. Helper functions for attachments.
	    * src/engine-assuan.c (op_assuan_encrypt): Handle binary option.
	    * src/engine.h (ENGINE_FLAG_BINARY_OUTPUT): New.
	    * src/mimemaker.c, src/mimemaker.h (sink_file_write): New. Sink
	    to work on a file handle.
	    * src/oomhelp.cpp, src/oomhelp.h (add_oom_attachment): New.
	    Add an attachment to an Object with an Attachments collection.
	    * src/ribbon-callbacks.cpp (addEncSignedAttachment): Implment
	    adding an encrypted attachment.

2013-08-02  Andre Heinecke  <aheinecke@intevation.de>

	Fix possible crash in encryptInspector
	    The recipientAddr pointer got moved to an invalid location
	    before free.

	    * src/ribbons-callbacks.cpp (encryptInspector): Fix free of
	    recipients.

	Add some more initalization also for encryption
	    * src/ribbon-callbacks.cpp (encryptInspector): Initialize
	    dispatcher pointers

2013-08-01  Andre Heinecke  <aheinecke@intevation.de>

	Be more agressive in fix linebreaks
	    This now replaces all consecutive break indicating characters
	    by a single \n.

	    * src/common.c (fix_linebreaks): Replace all consecutive
	    linebreaks.

	Fix accessing uninitialized memory
	    When called to decrypt the full body the wordApplication,
	    wordEditor and selection would be uninitalized and
	    but when they are not NULL they would still be released in
	    the end.

	    * src/ribbon-callbacks.cpp (decryptInspector): Initialize
	    dispatcher pointers.

2013-07-31  Andre Heinecke  <aheinecke@intevation.de>

	Factor out recipient lookup and some cleanups
	    * src/oomhelp.cpp, src/oomhelp.h (get_oom_recipients): New.
	    * src/ribbon-callbacks.cpp (encrypt_inspector): Move out
	    recipient handling code. Fix indentation.
	    (decrypt_inspector): Clean up some comments.

	Enable Addin for Outlook 2013
	    * src/gpgoladdin.cpp (GpgolAddin::OnConnection): Do not disable
	    for major version 15

	Reanable GUI for adding an encrypted attachment
	    * src/gpgoladding.cpp (getCustomUI): Enable Add encrypted
	    attachment button.

	Add get_open_filename utility function
	    Can be used to open an existing file using the Windows
	    filedialog.

	    * src/common.c, src/common.h: Add get_open_filename.

	Factor out duplicated code and move to oomhelp
	    * src/oomhelp.cpp, src/oomhelp.h (get_oom_context_window): New.
	    * src/ribbon-callbacks.cpp (encryptInspector)
	    (decryptAttachments, decryptInspector, startCertManager): Use
	    get_oom_context_window.
	    * src/oomhelp.h, src/ribbon-callbacks.cpp (RELDISP): Move macro
	    from ribbon-callbacks.cpp to oomhelp.h

2013-07-15  Andre Heinecke  <aheinecke@intevation.de>

	Merge branch 'outlook14'

	Handle attachments in the reader window.
	    Previously the UI was only shown in the Preview window (Explorer)

	    * src/gpgoladdin.cpp (GetCustomUI): Add contextualmenu and context
	    menu for attachments.

	Really fix gettext usage for the welcome message
	    * src/olflange.cpp (GpgolExt): Combine welcome message strings
	    with printf.

	Also hack of garbage at the end of OpenPGP stream
	    Testing showed that this can also happen for OpenPGP
	    encrypted messages. Need to investigate what is wrong.

	    * src/ribbon-callbacks.cpp (encryptInspector): Cut of garbage
	    at the end of OpenPGP stream, too.

	Fix welcome page translation and update PO's
	    The welcome text was changed to no longer include the
	    Version in the i18n text.

	    * po/de.po: Update translation
	    * po/pt.po, po/sv.po: Update generated files.
	    * src/olflange.cpp: Fix translation macro in welcome text.

2013-07-12  Andre Heinecke  <aheinecke@intevation.de>

	Fix operator priority
	    * src/ribbon-callbacks.cpp (decryptInspector): Fix operator
	    priorty in check for flags.

	Update translations
	    * po/de.po: Update German translations.
	    * po/pt.po, po/sv.po: Update generated files

	Add temporary Hack for strange encrypted data
	    When encrypting with SMIME there is some garbage added
	    to the end of the stream. Until we figure out where that
	    comes from. Cut it of.

	    * src/ribbon-callbacks.cpp (encryptInspector): Cut of
	    SMIME data after the last linebreak.

	Update UI to reflect implementation
	    Comment out add encrypted attachment selection and
	    the decrypt action in the explorer context.

	    * src/gpgoladdin.cpp (GetContext): Comment out code.

	Make decryptInspector work for Explorer Context
	    Beware: If you decrypt a Mail in the explorer context outlook
	    automatically saves it!

	    * src/ribbon-callbacks.cpp (decryptInspector): Handle explorer
	    context. Clean up variable names.

	Implement decryptBody command
	    Similar to the split in encryptSelection / encryptInspector.

	    * src/ribbon-callbacks.cpp (decryptInspector): New.
	    (decryptSelection, decryptBody): Wrapper around decryptInspector.

	Release dispatcher objects
	    QueryInterface adds a reference that has to be released.

	    * src/ribbon-callbacks.cpp (encryptInspector, decryptAttachments),
	    (startCertManager, decryptSelection): Release dispatcher.

	Implent encryptBody and add some dummy callbacks
	    The old encryptSelection is now split up into encryptInspector
	    and encryptSelection. encryptInspector accepts flags to control
	    it's behavior.

	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke): Handle command
	    callbacks
	    * src/ribbon-callbacks.cpp (encryptInspector): New. More
	    general version of encryptSelection.
	    (encryptBody): New. Calls encryptSelection with body flags.
	    (addEncSignedAttachment): New. Dummy.
	    (decryptBody): New. Dummy.
	    * src/ribbon-callbacks.h: Add new command ids

	Add ui for additional composer actions
	    Add dummy buttons for encrypt/decrypt body and adding of
	    an encrypted attachment.

	    * src/Makefile.am: Add new icon.
	    * src/encrypt-sign-file-48.png: New.
	    * src/gpgoladdin.cpp (GetCustomUI): Add UiXML for new actions
	    (Invoke, GetIDsOfNames): Handle new callbacks.
	    * src/ribbon-callbacks.h: Map new Icon.

	Handle fileextensions in save attachment dialog
	    If the filename has an extension add it as the first filter
	    entry.

	    * src/common.c (get_save_filename): Add file extension as Filter.
	    Generalize dialog title.

	Load png images from resource for RibbonUi
	    This uses gdiplus to convert the PNG data. It also
	    simplyfies the invoke as the size is now taken
	    from the resource file.

	    * src/Makefile.am: Link gdiplus
	    * src/gpgoladdin.cpp (Invoke): Just call getIcon for button
	    callbacks
	    * src/ribbon-callbacks.cpp (getIcon): Load images from resource
	    as PNG and convert them.
	    * src/ribbon-callbacks.h: Use png icons.

	Add png icons to be used in RibbonUI
	    * src/Makefile.am (extra_dist): Add added Icons
	    * src/README.icons: Add documentation
	    * src/decrypt-16.png, src/decrypt-48.png, src/encrypt-16.png,
	    src/encrypt-48.png, src/key-manager-64.png: New.
	    * src/dialogs.h, src/dialogs.rc: Add new Ressources

	Remove GpgolExt reference and check Version
	    The addin should only be used in Ol 14 otherwise
	    the old ExchangeExtension is used.

	    * src/gpgoladdin.cpp, src/gpgoladdin.h (GpgolAddin): Remove
	    reference to GpgolExt Object.
	    (QueryInterface, ~GpgolAddin): Check if addin is enabled.
	    (OnConnection): Disable based on Version and handle
	    initialization.

	Update translation
	    * po/POTFILES.in: Add new files.
	    * po/de.po: Add new translations.
	    * po/pt.po, po/sv.po: Update generated content.

2013-07-11  Andre Heinecke  <aheinecke@intevation.de>

	Implement start certificate manager
	    Simple wrapper for engine_start_keymanager using the callback
	    interface.

	    * src/gpgoladdin.cpp (GetIDsOfNames, Invoke): Handle
	    startCertManager.
	    * src/ribbon-callbacks.cpp, src/ribbon-callbacks.h
	    (startCertManager): New.

	Add decrypt selection to reader context
	    * src/gpgoladdin.cpp (GetCustomUI): Add context menu actions
	    * src/ribbon-callbacks.cpp (decryptSelection): Show MessageBox
	    with text in case the selected Text can not be set.

	Encapsulate SMIME data in the message
	    This adds the same BEGIN and END lines as gnupg adds
	    when using the armor option.

	    * src/ribbon-callbacks.cpp (encrypt_selection): Encapsulate
	    encrypted data

	Fix crash in decryptAttachments
	    If the save file dialog was aborted it crashed.

	    * src/ribbon-callbacks.cpp (decryptAttachments): Continue
	    if get_save_file_name returns NULL.

	Change some user visible strings
	    * src/ribbon-callbacks.cpp: Change wording in some Messages.
	    Do not localize very unlikely errors.

	Localize ribbon UI
	    Using swprintf we can directly use gettext strings to include
	    UTF-8 encoded strings in the CustomUI XML code.

	    * src/gpgoladdin.cpp (getCustomUI): Add gettext usage.
	    (loadXMLResource): Removed.

	Handle OnDisconnect call
	    * src/gpgoladdin.cpp (OnDisconnect): Delete gpgolext object
	    * src/olflange.cpp (~GpgolExt): Shutdown also in case there
	    is no context set.

	Fix decryptSelection by handling \r breaks
	    * src/ribbon-callbacks.cpp (decryptSelection): Use fix_linebreaks.

	Add fix_linebreaks function
	    This tries to fix linebreaks to be unix \n breaks.

	    * src/common.c, src/util.h (fix_linebreaks): New.

	Include information source in comment
	    The referenced blog contains a good explanation about
	    changes in image handling the ribbonUI

	    * src/ribbon-callbacks.cpp (getIcon): Expand comment about
	    PNG's

2013-07-10  Andre Heinecke  <aheinecke@intevation.de>

	Add icon callbacks and decrypt selection action
	    This uses the same icons / icon ID's as the old extension
	    and does not handle transparency. There is some prepared
	    code to enable full alpha channel handling by using PNG included.

	    * src/gpgoladdin.cpp (GetIDsOfNames): Return dispID's for new
	    callbacks. Use new ID_MAPPER macro.
	    (Invoke): Resolve getIcon and decryptSelection calls.
	    (GetCustomUI): Add image callbacks and decrypt selection.
	    * src/ribbon-callbacks.cpp (encryptSelection): Add missing free.
	    (decryptSelection): New. Decrypt selected text and replace it
	    by plaintext if decryption was successful.
	    (getIcon): Create picturedispatcher on the queried ressource
	    bitmap.
	    * src/ribbon-callbacks.h: Add new ID's and prototypes

	Fix debug output in dump_excepinfo
	    One line was accidentally removed.

	    * src/oomhelp.cpp (dump_excepinfo): Add source line.

	Use CMS object detection from GPA
	    * src/common.c, src/common.h: Remove old tlv parser code which
	    was the base for the gpa implementation.
	    * src/mapihelp.cpp, src/mimeparser.c: Use new macro names
	    * src/parsetlv.c, src/parsetlv.h, src/filetype.c, src/filetype.h:
	    New. Taken from GPA revision 7a5b070
	    * src/Makefile.am: Add new files

2013-07-09  Andre Heinecke  <aheinecke@intevation.de>

	Add nohup option to decrypt command
	    Otherwise Outlook would block until the decryption
	    completes.

	    * src/engine-assuan.c (op_assuan_start_decrypt_files):
	    Add --nohup to decrypt files command

	Add encrypt selection command and improve for OL14
	    This implements a context menu action to encrypt selected
	    text when composing a mail. This also removes a crash
	    under some optimization circumstances because it no longer uses
	    the RibbonCallback interface directly.

	    * src/gpgoladdin.cpp, src/gpgoladdin.h (decrypt_attachments):
	    Moved into ribbon-callbacks.cpp. Removed usage of
	    LPRIBBONCALLBACK as a structure.
	    * src/gpgoladdin.cpp (Invoke): Add support for encryptSelection
	    * src/gpgoladdin.cpp (GetCustomUI): Add ui prototype for
	    encryptSelection
	    * src/ribbon-callbacks.cpp, src/ribbon-callbacks.h: New.
	    Source files to handle the Ribbon UI actions.
	    (encryptSelection): New. Parse an Inspector context to replace
	    selected plain text with encrpyted text. Based on mimemaker code.
	    * src/Makefile.am: Add ribbon callbacks

	Excpose sink functions and structures
	    * src/mimemaker.c (write_buffer, sink_std_write),
	    (write_buffer_for_cb, sink_encryption_write): Remove staticness.
	    * src/mimemaker.h (write_buffer, sink_std_write),
	    (write_buffer_for_cb, sink_encryption_write): Add prototypes.
	    * src/mimemaker.c, src/mimemaker.h (sink_s, sink_t): Move
	    declaration into header.

	Improve debug output in get_oom_object
	    Sometimes there is some additional information hidden
	    in the execpinfo structure. So print it in case of an error.

	    * src/oomhelp.cpp (dump_excepinfo): New. Dumps an excepinfo
	    structure to log_debug.
	    (get_oom_object): Use exceptinfo from Invoke call.

2013-07-05  Andre Heinecke  <aheinecke@intevation.de>

	Add ContextualTab action for Attachments
	    Proof of concept how additional ui elements can be added.

	    * src/gpgoladdin.cpp (GetCustomUI): Add contextualTabs element,
	    add comment pointing to the documentation for this.
	    (decryptAttachments): Handle Explorer context additionally
	    to the AttachmentSelection context. Better error handling.

	Prototype Outlook 14 support
	    This adds a prototype "Save and decrypt" action for attachments.
	    The main advancement is that gpgOl can now interact with
	    Outlook 14 using the Ribbon extension interface.

	    * src/gpgoladdin.cpp, src/gpgoladdin.h: New. Classes implementing
	    the COM Objects to interact with outlook.
	    * src/gpgoladdin.cpp, src/gpgol.def (DllGetClassObject),
	    (DllCanUnloadNow): New entry points into the library.
	    * src/olflange.cpp (DllRegisterServer, DllUnregisterServer):
	    Register / Unregister gpgOl as an Outlook Addin.
	    (GpgolExt): Use VERSION macro.
	    (install_sinks, install_forms): Expose for other classes.
	    * src/olflange.h: Move GUID and some string definitions into
	    header. Add function declarations.

	Add decrypt_files operation to the assuan engine
	    To be used to decrypt a list of filenames.

	    * src/common.c (percent_escape): New. Taken from gpgEx to escape
	    file names.
	    * src/engine-assuan.c (op_assuan_start_decrypt_files): New. Handles
	    the assuan transactions.
	    * src/engine-assuan.h, src/util.h: Add prototypes
	    * src/util.h (tohex_lower): New. Taken from gpgEx

	Update copyright year in resource file
	    * src/versioninfo.rc.in: Update copyright

2013-04-29  Werner Koch  <wk@gnupg.org>

	Changes to use the w64-mingw32 toolchain.
	* autogen.sh: Use i686-w64-mingw32 as default toolchain.
	* src/common.c (OEMRESOURCE): Add
	* src/ext-commands.cpp (_WIN32_IE): Define to 6.0

2011-12-27  Werner Koch  <wk@gnupg.org>

	Release version 1.1.3.

	Store gitCommit registry entry as hex number.
	* src/main.c (write_options): Write gitCommit as hex number.

	po: Remove line number comments.

	Use GIT commit ids instead of SVN revision numbers.
	* configure.ac: Remove SVN revision number tracking.  Replace by GIT
	commit ids.
	(GPGOL_FORMS_REVISION): New.
	(GIT_COMMIT_DECIMAL): New.
	(BUILD_TIMESTAMP): Base version number on the decimalised 4 hex digit
	commit id.
	* src/common.h (opt): s/svn_revision/git_commit/.
	* src/main.c (read_options): Read gitCommit instead of svnRevision.
	(write_options): Use git_commit.
	* src/olflange.cpp (GpgolExt): Use GPGOL_FORMS_REVISION to trigger
	forms installation.

	Generate the ChangeLog from commit logs.
	* build-aux/gitlog-to-changelog: New script.  Taken from libassuan.
	* build-aux/git-log-fix: New file.
	* doc/HACKING: New file.
	* ChangeLog: New file.
	* doc/Makefile.am (EXTRA_DIST): Add HACKING.
	* Makefile.am (gen-ChangeLog): New.
	(dist-hook): Run gen-ChangeLog.
	* autogen.sh: Install git hooks.

	Merge src/Changelog and ChangeLog to ChangeLog-2011 and keep the
	latter only in the GIT repo.

2011-12-23  Werner Koch  <wk@gnupg.org>

	Add gitignore file

	Fix data corruption during encryption.
	That extra write was plainly wrong.  I have no idea, how it slipped
	it.  The error comes up with attachments of certain lengths.  For
	example with a file length of 13859 bytes.

	* src/mimemaker.c (write_b64): Remove a stupid buffer write of 4
	bytes.

	Fix double free.
	This bug led to crashes unter OL2007 and Vista and W7.  See bug#1110.

	* src/attached-file-events.cpp (decrypt_and_write_file): Set BUF to
	NULL after free.

2010-07-21  Werner Koch  <wk@g10code.com>

	Release 1.1.2.

2010-07-21  Marco A.G.Pinto  <marcoagpinto@mail.telepac.pt>  (wk)

	* po/pt.po: New.
	* po/LINGUAS: Add pt.

2010-07-21  Werner Koch  <wk@g10code.com>

	* configure.ac: Require libgpg-error 1.9 due to gpg_err_deinit.

	* src/main.c (DllMain): Init and deinit libgpg-error which is now
	required due to our use of a static libgpg-error.

2010-04-21  Marcus Brinkmann  <marcus@g10code.de>

	* configure.ac (NEED_LIBASSUAN_API, NEED_LIBASSUAN_VERSION): Bump
	to 2/2.0.0.
	(_ASSUAN_ONLY_GPG_ERRORS): Remove.

	* src/engine-assuan.c (connect_uiserver): Update to new libassuan
	interface.

2010-01-13  Werner Koch  <wk@g10code.com>

	Release 1.1.1.

	* src/README.icons: Change instructions to better cope with alpha
	channels.

2010-01-12  Werner Koch  <wk@g10code.com>

	* src/decrypt-verify-16.bmp, decrypt-verify-16m.bmp: Update.
	* src/decrypt-verify-32.bmp, decrypt-verify-32m.bmp: Update.
	* src/verify-16.bmp, verify-16m.bmp: Update.
	* src/verify-32m.bmp, verify-32.bmp: Update.

	* po/POTFILES.in (explorers.cpp, inspectors.cpp, mailitem.cpp): New.

2010-01-08  Werner Koch  <wk@g10code.com>

	* forms/encr-s.ico, forms/sign-s.ico: Fix them.

	* src/README.icons: Fix instructions for forms icons.

2010-01-05  Werner Koch  <wk@g10code.com>

	Release 1.1.0.

2009-12-22  Werner Koch  <wk@g10code.com>

	* forms/encr-l.ico, forms/encr-s.ico: Update.
	* forms/sign-l.ico, forms/encr-l.ico: Update.

	* src/key-manager-16.bmp, key-manager-16m.bmp: Update.
	* src/key-manager-32.bmp, key-manager-32m.bmp: Update.
	* src/key-manager-64.bmp, key-manager-64m.bmp: New.
	* src/verify-16.bmp, verify-16m.bmp: Update.
	* src/verify-32.bmp, verify-32m.bmp: New.
	* src/sign-16.bmp, sign-16m.bmp: Update.
	* src/sign-32.bmp, sign-32m.bmp: New.
	* src/encrypt-16.bmp, encrypt-16m.bmp: Update.
	* src/encrypt-32.bmp, encrypt-32m.bmp: New.
	* src/decrypt-16.bmp, decrypt-16m.bmp: Update.
	* src/decrypt-32.bmp, decrypt-32m.bmp: New.
	* src/decrypt-verify-16.bmp, decrypt-verify-16m.bmp: Update.
	* src/decrypt-verify-32.bmp, decrypt-verify-32m.bmp: New.
	* src/Makefile.am (EXTRA_DIST): Add new bitmaps.
	* src/dialogs.rc: Add new bitmaps.

2009-12-01  Werner Koch  <wk@g10code.com>

	* src/README.icons: New.

2009-12-08  Marcus Brinkmann  <marcus@g10code.de>

	* src/engine-assuan.c (getinfo_pid_cb, prep_foo_status_cb): Change
	return type to gpg_error_t.

2009-11-30  Werner Koch  <wk@g10code.com>

	* src/message-events.cpp (OnReadComplete): Use GetInspector if
	none was found.
	* src/display.cpp (update_display): Print the window hierarchy in case
	of an error.
	* src/ext-commands.cpp (get_inspector): Add arg HWND.  First try
	get_inspector_from_hwnd.
	(get_crypto_flags, set_crypto_flags): Add arg HWND.
	(InstallCommands, DoCommand): Pass HWND to crypt_flags functions.

2009-11-27  Werner Koch  <wk@g10code.com>

	* src/message-events.cpp (get_crypto_flags): Replace EECB arg by HWND.
	(OnRead): Pass HWND to get_crypto_flags. Change all callers.
	(get_inspector): Remove.
	(get_crypto_flags, OnReadComplete): Use get_inspector_from_hwnd.

	* src/oomhelp.h (IID_IOleWindow): Define.
	* src/inspectors.cpp (find_ole_window): New.
	(struct inspector_info_s): Add field HWND.
	(register_inspector): Store it..
	(get_inspector_from_hwnd): New.

	* src/common.h (DBG_OOM_EXTRA): New.
	* src/main.c (read_options): Read new debug flag.
	* src/eventsink.h (debug_oom_extra): Use it.

2009-11-03  Werner Koch  <wk@g10code.com>

	* src/inspectors.cpp (deregister_inspector): Delete the buttons.
	(set_one_button): New.
	(set_inspector_composer_flags): Also set toolbar buttons.
	(toggle_button): Use set_one_button.
	(get_button_by_instid_and_tag): Remove.

	* src/oomhelp.cpp (del_oom_button): New.

2009-11-02  Werner Koch  <wk@g10code.com>

	* forms/Makefile.am (cfg_english): New.

	* src/mailitem.cpp, mailitem.h: New.

	* src/inspectors.cpp (get_message_from_button): New.
	(get_inspector_from_instid): New.
	(proc_inspector_button_click): Implement missing commands.

	* src/message.cpp (message_display_handler): Change to take an
	LPMESSAGE argument.
	* src/display.cpp (update_display): Replace the eecb arg by an
	inspector object.
	* src/message-events.cpp (OnReadComplete): Adjust for changes.

	* src/oomhelp.cpp (get_oom_iunknown): New.
	* src/revert.cpp (gpgol_folder_revert): Change to work without an eecb.

2009-10-30  Werner Koch  <wk@g10code.com>

	* forms/Makefile.am (icons): Udpate all icons.

	* src/oomhelp.cpp (get_oom_control_bytag): Fix silly bug.

	* src/inspectors.cpp (get_inspector_composer_flags): New.
	(set_inspector_composer_flags): New.
	* src/oomhelp.cpp (get_eecb_object): New.
	* src/message-events.cpp (get_inspector): New.
	(get_crypto_flags): New.
	(OnWrite, OnWriteComplete): Use new functions instead of the class
	members.  Use the new oom property functions.
	* src/ext-commands.cpp (get_inspector, get_crypto_flags): New.
	(DoCommand): Use new function.
	(set_crypto_flags): New.
	(InstallCommands): Use set_crypto_flags.
	(add_menu, check_menu, add_toolbar, struct toolbar_info_s): Remove.
	(QueryButtonInfo): Remove all code.
	(InstallCommands): Make use of get_eecb_object and put_oom_string.
	(DoCommand): Use get_eecb_object.
	* src/olflange.h (IExchExt): Remove m_protoSelection, m_gpgSign,
	m_gpgEncrypt and all related code.
	* src/olflange.cpp (Install): Use get_oom_string.
	* src/display.cpp (update_display): Ditto.
	* src/ol-ext-callback.h, ol-ext-callback.cpp: Remove.

2009-10-29  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp: Remove m_nCmdDebugN, m_nCmdRevertFolder,
	m_nCmdSign, m_nCmdEncrypt and all related code.  Now handled in
	inspectors.cpp.

2009-10-28  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp: Remove m_nCmdCryptoState and all related code;
	now handled in inspectors.cpp.  Remove m_nCmdKeyManager and all
	related code; now handled in cmdbarcontrols.cpp.

	* src/oomhelp.cpp, oomhelp.h, eventsink.h: New.
	* src/myexchext.h: Move generic COM+ stuff to oomhelp.h.
	* src/explorers.cpp, explorers.h: New.
	* src/inspectors.cpp, inspectors.h: New.
	* src/cmdbarcontrols.cpp cmdbarcontrols.h: New.
	* src/olflange.cpp (install_sinks): New.
	(Install): Call install_sinks.
	* src/main.c (DllMain): Call initialize_inspectors.

	* src/common.c (fatal_error): New.

2009-10-20  Werner Koch  <wk@g10code.com>

	* src/myexchext.h (IID_IConnectionPoint)
	(IID_IConnectionPointContainer): Define.  There are missing in
	current wine  From ReactOS.

2009-10-19  Werner Koch  <wk@g10code.com>

	* src/message-events.cpp (show_event_object): Move to ..
	* src/ol-ext-callback.cpp (show_event_object): .. here.
	(show_preview_pane): Revert dispparms order to make it work.

	* src/common.c (mem2str): New.

2009-10-08  Werner Koch  <wk@g10code.com>

	* configure.ac (CFLAGS): Add -fno-strict-aliasing.

2009-10-07  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (InstallCommands): Comment out the protocol
	selection.
	(DoCommand, Help, QueryHelpText, QueryButtonInfo): Ditto.
	(update_protocol_menu): Comment out.
	* src/main.c (write_options): Do not write the default protocol.
	(read_options): Always set it to auto.
	* src/dialogs.rc: Remove openpgp-by-default and smime-by-default check
	boxes.
	* src/olflange-dlgs.cpp (set_labels): Likewise.
	(GPGOptionsDlgProc): Likewise.

2009-09-28  Werner Koch  <wk@g10code.com>

	Release 1.0.1.

2009-09-25  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): Enable Smime by default.

2009-08-28  Werner Koch  <wk@g10code.com>

	* configure.ac [GCC]: Test for -Wno-pointer-sign.

	* src/mimemaker.c (do_mime_sign): Comment cleanup.

2009-08-27  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_get_sender): Add hack for Kleopatra.

2009-08-21  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (async_worker_thread): Disable the use of
	MsgWaitForMultipleObjects.
	* src/common.h (struct compat): Add USE_MWFMO.
	* src/main.c (read_options): Read that flag.

2009-08-19  Werner Koch  <wk@g10code.com>

	* src/message.cpp (ul_release): Add arg LNR.  Change all callers.
	* src/ol-ext-callback.cpp (ul_release): Add args FUNC and LNR.  Change
	all callers.
	* src/item-events.cpp (ul_release): ditto.
	* src/session-events.cpp (ul_release): Ditto.

2009-07-21  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (create_gpgol_tag, get_internetcharsetbody_tag)
	(mapi_set_header): Release data returned from GetIDsFromNames.

	* src/engine.h (ENGINE_FLAG_SIGN_FOLLOWS): New macro.
	* src/engine.c (engine_encrypt_prepare): Add arg flags.  Change
	callers.
	* src/engine-assuan.c (op_assuan_encrypt): Ditto.  send PREP_ENCRYPT
	if the sign-follows flag is used.
	* src/mimemaker.c (mime_sign_encrypt): Pass new flag.

2009-06-18  Werner Koch  <wk@g10code.com>

	Release 1.0.0.

2009-06-18  Werner Koch  <wk@g10code.com>

	* src/common.h (struct opt): Add ANNOUNCE_NUMBER.
	* src/main.c (write_options, read_options): Store and load that number.

2009-02-27  Werner Koch  <wk@g10code.com>

	Release 0.10.19.

2009-02-26  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (start_attachment): Try to figure out a good file
	name suffix for the FILENAME property.

	* src/ext-commands.cpp (InstallCommands): Disable decrypt button for
	non GpgOl messages.

	* src/engine.c (engine_encrypt_prepare): Add arg SENDER.
	* src/engine-assuan.c (op_assuan_encrypt): Ditto.
	* src/mimemaker.c (do_mime_sign): Free sender string.
	(mime_encrypt): Pass the sender address to the engine.
	(mime_sign_encrypt): Ditto.

2009-02-25  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_gpgoldraftinfo_tag): New.
	(mapi_get_gpgol_draft_info, mapi_set_gpgol_draft_info): New.
	* src/ext-commands.cpp (DoCommand): Save encryption selection.
	(InstallCommands): Get encryption selection from the draft info.
	* src/mimemaker.c (finalize_message): Delete the property.

2009-01-28  Werner Koch  <wk@g10code.com>

	Release 0.10.18.

	* po/de.po: s/Unterschrift/Signatur/.

	* src/mimeparser.c (t2body): Take care of x-pkcs7-mime as used by
	native OL signed messages.
	(mime_decrypt): Ditto.

2009-01-16  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (attach_thread_input_wndw_proc)
	(attach_thread_input): Enable code.
	(async_worker_thread): Replace WFMO by MsgWaitForMultipleObjects
	and add message dispatcher loops.

2008-11-27  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_get_sender): Extract the CN name if available.

2008-11-26  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (InstallCommands): Don't show status icon for
	non-gpgol messages.

	* src/config-dialog.c (start_key_manager): Remove.
	* src/ext-commands.cpp (DoCommand): Do not use start_key_manager as a
	fallback.

	* src/olflange.cpp (GpgolExt): Show new version warning only once.

	* src/dialogs.rc: Do not display the logo.  Move version info around.
	* src/dialogs.h (IDC_G10CODE_STRING): New.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Active product page by a
	click on IDC_G10CODE_STRING.
	(set_labels): Remove the build date from the Version field.

2008-11-14  Werner Koch  <wk@g10code.com>

	* src/dialogs.rc: Remove preview-decrypt check button.
	* src/olflange-dlgs.cpp (set_labels): Ditto.

2008-11-13  Werner Koch  <wk@g10code.com>

	* src/engine.c (FILTER_BUFFER_SIZE): Increase from 4k to 128k.
	(switch_threads, clear_switch_threads): Remove.
	(engine_filter): Pulse event only if anything happened.  Break
	loop if input data has been put completely into the buffer.  Add a
	short delay for an idle loop.
	* src/engine-assuan.c (work_item_s): Increase buffer from 1k to 8k.
	(switch_threads, clear_switch_threads): Remove.

2008-11-10  Werner Koch  <wk@g10code.com>

	* src/engine.c (engine_init): Allow the user to try again if the
	server did not come up.
	* src/engine-assuan.c (connect_uiserver, op_assuan_init): Add a hack
	to reset the retry counter.

2008-11-03  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (do_mime_sign): Add arg SESSION_NUMBER and pass it
	to the sign operation.  Set session title.
	(mime_sign): Create a new session number.
	(mime_sign_encrypt): Pass a session number and title to the engine.
	(mime_encrypt): Ditto.
	* src/engine-assuan.c (op_assuan_encrypt, op_assuan_sign): Send
	session info.

2008-10-29  Werner Koch  <wk@g10code.com>

	* src/engine.c (engine_filter): Collect more data in the in buffer.
	* src/mimemaker.c (write_b64): Buffer up to 2k of output.

2008-10-27  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (mime_encrypt): Check for an empty message before
	creating the filter.  Return a suitable error code.
	(do_mime_sign): Ditto.
	(mime_sign_encrypt): Ditto.
	(mime_sign): Return an error code.
	* src/message.cpp (sign_encrypt): Show an error message for empty
	messages.
	(message_sign): Ditto.

	* src/olflange.cpp (install_forms): Add gpgol-cs.

	* src/mapihelp.cpp (get_internetcharsetbody_tag): New.
	(mapi_get_body_as_stream): Try the new tag first.
	(get_msgcls_from_pgp_lines): Ditto.  Remove the simple access
	method.

2008-10-24  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (struct mime_context): Add flag
	MAY_BE_OPAQUE_SIGNED.
	(t2body): Set that flag.
	(is_cms_signed_data): New.
	(mime_decrypt): Try to verify if the content is opaque signed
	without proper MIME headers.

2008-10-23  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_delete_gpgol_body_attachment): New.
	* src/message-events.cpp (OnWriteComplete): Remove a body attachment.

	* src/message.cpp (message_display_handler): Do not display PGP
	clearsigned messages.
	(message_display_handler): Do not update GpgOLStatus; it is not
	used anyway.
	(pgp_mime_from_clearsigned): Fix bogus trailing white space
	removal code.  Insert an empty line.
	* src/mimeparser.c (mime_verify): Add arg MIMEHACK.
	(message_verify): Use it.

2008-10-17  Werner Koch  <wk@g10code.com>

	* src/recipient-dialog.c (load_rsetbox): Remove superfluous check on
	negativness for an unsigned variable.

	* src/mimeparser.c (mime_verify_opaque): Remove extra semicolon which
	shortcuted most of the code.  Why didn't gcc notice that?  Bug
	was introduced on 2008-06-12.

	* src/engine-assuan.c (create_io_pipe, send_options)
	(op_assuan_encrypt, op_assuan_sign, op_assuan_decrypt)
	(op_assuan_verify): Replace use of long in snprint by int to
	workaround a bug in mingw32. Doesn't matter on w32 anyway.

2008-10-16  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (start_attachment): Take care not to set the file
	name "smime.p7m".

	* src/mapihelp.cpp (is_really_cms_encrypted): Extend to detect unknown
	message types.
	(mapi_change_message_class): Adjust for this change.
	(mapi_change_message_class): Factor code out to ...
	(change_message_class_ipm_note)
	(change_message_class_ipm_note_smime)
	(change_message_class_ipm_note_smime_multipartsigned)
	(change_message_class_ipm_note_secure_cex): New.
	(get_first_attach_mime_tag): New.
	(change_message_class_ipm_note_secure_cex): Use it here for CexSig.
	(has_smime_filename): Also look at the long filename.

2008-10-15  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (op_assuan_sign): Send the new --protocol option
	to the server.

2008-09-30  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_change_message_class): Special handling for
	MultipartSigned if S/MIME support is disabled.

2008-08-06  Werner Koch  <wk@g10code.com>

	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Disable S/MIME notice.

2008-08-05  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (InstallCommands): Display protocolicons only
	for OL2007.
	* src/olflange.cpp (get_ol_main_version): New.

	* src/message.cpp (message_decrypt): Save a signature verification
	result.
	* src/mimeparser.c (mime_decrypt): Implement verification of included
	signatures.  This feature got lost during the removal of nested
	crypto operations.

2008-08-04  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (install_forms): New.
	(GpgolExt): Install forms if needed.
	* src/common.c (get_data_dir): New.
	* src/common.h (struct): Add field FORMS_REVISION.
	* src/main.c (read_options, write_options): Read and write that
	option.

2008-07-31  Werner Koch  <wk@g10code.com>

	* src/ext-commands.h (class GpgolExtCommands): Add m_nCmdRevertFolder.
	* src/ext-commands.cpp (GpgolExtCommands, InstallCommands): Ditto.
	(DoCommand): Implement RevertFolder command.

	* src/common.h (struct): Add variable DISABLE_GPGOL.
	* src/session-events.cpp (OnDelivery): Make use of that variable.
	* src/message.cpp (message_incoming_handler): Ditto.
	* src/user-events.cpp (OnSelectionChange): Ditto
	* src/message-events.cpp (OnRead, OnReadComplete, OnWrite)
	(OnWriteComplete): Ditto
	* src/mapihelp.cpp (mapi_get_int_prop): New.

	* src/olflange.cpp (Install): Improve version check.

	* src/revert.cpp, revert.h: New.
	* src/mapihelp.cpp (mapi_attachment_to_body): New.
	(mapi_get_old_message_class): New.
	(mapi_change_message_class): Do not release newvalue when saving
	the old class.
	* src/olflange.cpp (parse_version_number, parse_version_string)
	(compare_versions, gpgol_check_version): New.
	* src/ext-commands.cpp (DoCommand): Support a "revert message class"
	debug command.

2008-06-27  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_gpgololdmsgclass_tag): New.
	(mapi_change_message_class): Save old message class.

2008-06-19  Werner Koch  <wk@g10code.com>

	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Change S/MIME enabled
	message icon.
	* src/olflange.cpp (GpgolExt): Ditto for the new version installed
	notice.

2008-06-12  Werner Koch  <wk@g10code.com>

	* src/dialogs.rc: Add button for calling the engine's configuration.
	* src/dialogs.h (IDC_GPG_CONF): New.
	* src/engine.c (engine_start_confdialog): New.
	* src/engine-assuan.c (op_assuan_start_confdialog): New.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Act upon the button.

	* src/mapihelp.cpp (mapi_get_from_address): New.
	* src/engine.c (engine_decrypt_start, engine_verify_start): Add new
	arg FROM_ADDRESS.
	* src/engine-assuan.c (op_assuan_verify, op_assuan_decrypt): Ditto.
	* src/mimeparser.c (mime_verify, mime_verify_opaque, mime_decrypt):
	Pass FROM_ADDRESS to the backend.

	* src/olflange.cpp (DllUnregisterServer): Delete CLSIDs.

2008-06-05  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (mime_decrypt): Set session number and title.
	(mime_verify_opaque, mime_verify): Ditto.
	* src/mapihelp.cpp (mapi_get_subject): New.
	* src/engine.c (engine_set_session_number, engine_set_session_title)
	(engine_set_sender_address): New.
	(struct engine_filter_s): Add fields session_number, session_title
	and sender_address.
	(engine_private_get_session_number): New.
	(engine_private_get_session_title): New.
	(release_filter): Release them.
	(engine_new_session_number): New.
	* src/engine-assuan.c (send_session_info): New
	(op_assuan_decrypt, op_assuan_verify): Call it.
	(op_assuan_sign): Use the end-of-option option for the SENDER command.

2008-05-28  Werner Koch  <wk@g10code.com>

	* src/dialogs.h (IDC_BODY_AS_ATTACHMENT): New.
	* src/dialogs.rc: Add body-as-attachemnt checkbox to the otpion
	dialog.
	* src/olflange-dlgs.cpp (set_labels, GPGOptionsDlgProc): Add it.
	* src/main.c (write_options, read_options): Handle bodyAsAttachment
	registry key.
	* src/mimeparser.c (start_attachment): Do not set the hidden flag if
	the new option is used.
	* src/mapihelp.cpp (mapi_test_attach_hidden): New.
	(mapi_get_gpgol_body_attachment): Make use of that flag.

2008-05-23  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (struct sink_s): Add field ENC_COUNTER.
	(write_buffer_for_cb): Update that.
	(mime_encrypt): Bail out if no data has been encrypted.
	(mime_sign_encrypt): Ditto.

2008-05-07  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (t2body): Fix last change.

2008-05-02  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (t2body): Detect non-inline text parts.
	* src/rfc822parse.c (rfc822parse_query_parameter): Add special mode
	for an ATTR of NULL.

2008-04-16  Werner Koch  <wk@g10code.com>

	* src/message-events.h (class GpgolMessageEvents): Add M_GOTINSPECTOR.
	* src/message.cpp (message_incoming_handler): Change return type.

	* src/ext-commands.cpp (check_toolbar, check_menu_toolbar): New.
	(update_protocol_menu): Explicitly update the toolbar.

2008-04-15  Werner Koch  <wk@g10code.com>

	* src/Outlook.gpl: New.

2008-04-14  Werner Koch  <wk@g10code.com>

	* src/display.cpp (is_inspector_display): New.
	(find_message_window): Rewrote.

	* src/message-events.cpp (OnRead): Use it.
	* src/message.cpp (message_incoming_handler): Add arg FORCE.
	* src/message-events.cpp (OnRead): Pass false for FORCE.
	* src/item-events.cpp (OnOpen): Ditto.
	* src/ext-commands.cpp (DoCommand): Let CmdCryptoState process and
	display the current message again.
	(GpgolExtCommands): Remove m_nCmdCheckSig and m_nCmdDecrypt.

2008-04-10  Werner Koch  <wk@g10code.com>

	* src/ol-ext-callback.cpp (is_preview_pane_visible)
	(show_preview_pane): New.

	* src/display.cpp (update_display): Add arg IS_SENSITIVE and do not
	use the OOM method if this is set.

	* src/mapihelp.h (mapi_save_changes): New. Use if everywhere.
	(mapi_delete_body_props): Use it to delete body parts.
	* src/mapihelp.cpp (mapi_do_save_changes): New.
	* src/mimemaker.c (finalize_message): Do no delete body parts because
	mapi_save_changes does this now.

	* src/mimeparser.c (finish_message): Remove the body property in
	protect mode.

2008-04-04  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (worker_start_read, worker_check_read): Factor
	common code out to ..
	(write_to_callback): .. new.
	(async_worker_thread): Better comments and minor changes.
	(enqueue_callback): Add arg INACTIVE.
	(set_items_active): New.
	(start_command): Set items active.
	(op_assuan_encrypt): Create input and output items as inactive.
	(async_worker_thread): Handle the inactive flag.

	* src/common.c (gpgol_spawn_detached): Do not inherit handles.

2008-04-02  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (destroy_command): Add arg FORCE.
	(op_assuan_encrypt_bottom): Call destroy_command.

	* src/mimeparser.c (struct mime_context): Use parser_error to return
	gpg error codes.

	* src/main.c (read_options): Allow names for debug flags.
	* src/common.c (trim_spaces): New.

2008-03-31  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (struct work_item_s): Add SWITCH_COUNTER.
	(switch_threads, clear_switch_threads): New.
	(worker_start_write): Use it.
	* src/engine.c (struct engine_filter_s): Add SWITCH_COUNTER.
	(switch_threads, clear_switch_threads): New.
	(filter_gpgme_read_cb): Use it.

	* src/ext-commands.h (class GpgolExtCommands): Add m_nCmdCryptoState.
	* src/ext-commands.cpp (InstallCommands): Add a toolbar crypto state
	button.
	(DoCommand): Show a message when trying to select the disabled
	S/MIME protocol.

	* src/message.cpp (message_sign, message_verify, message_decrypt)
	(sign_encrypt): Display message boxes only in debug mode.

	* src/olflange-dlgs.cpp: Remove G-Data 2001 copyright because all that
	old code has gone.

	* src/dialogs.rc (IDD_EXT_OPTIONS): Remove option to select the key
	manager.
	(IDD_GPG_OPTIONS): Remove caching time, reorder options, add group
	boxes.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Clean up accordingly.
	* src/config-dialog.c (config_dlg_proc): Ditto.
	(get_open_file_name, does_file_exist, error_box): Remove.

	* src/ext-commands.cpp: Rename nCmdShowInfo to nCmdDebug0 and enable
	it only in debug mode.

2008-03-26  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (cleanup): Implement.
	(op_gpgme_init): Save thread handle.
	(waiter_thread): Check shutdown flags.

	* src/engine-assuan.c (get_uiserver_name): Fallback to GPA.

2008-03-19  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_change_message_class): Look into
	multipart/mixed for PGP messages.

	* src/mapihelp.cpp (mapi_get_attach): Add arg UNPROTECT and changed
	all callers.
	* src/common.h (DBG_MIME_PARSER, DBG_MIME_DATA): New.
	* src/mimeparser.c (debug_mime_parser, debug_mime_data): New to
	replace DEBUG_PARSER.
	(struct mime_context): Add field is_opaque_signed.
	(t2body): Set it.
	(mime_decrypt): Handle an embedded opaque signed S/MIME part.
	(mime_verify_opaque): Add arg INBUFER, INBUFFERLEN and
	START_PART_COUNTER.

2008-03-18  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (message_cb): Clear all mimestruct fields.  Fixes
	segv introduced 2008-03-07.

	* src/engine-assuan.c (async_worker_thread): Handle broken pipe.

2008-03-13  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (message_cb): Skip the OPEN event in non-MIME mode.

	* src/rfc822parse.c (rfc822parse_open): Reset ERRNO.

2008-03-11  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (op_assuan_encrypt): Factor some code out to ..
	(op_assuan_encrypt_bottom): .. new.
	(engine_assuan_encstate_s): New.
	* src/engine.c (engine_encrypt_start): Split some code into ..
	(engine_encrypt_prepare): .. new.
	(engine_cancel): Cancel prepared encryption.
	* src/mimemaker.c (mime_encrypt): Use engine_encrypt_prepare and
	_start.
	(mime_sign_encrypt): Likewise, but do the _start only after
	completing the signing.

2008-03-10  Werner Koch  <wk@g10code.com>

	* src/engine.c (FILTER_BUFFER_SIZE): Increase to 4k.
	(engine_filter, engine_wait, engine_wait): Replace Sleep by
	SwitchToThread.
	* src/engine-assuan.c (struct work_item_s): Increase buffer to 1k.
	(worker_start_write, async_worker_thread): Replace Sleep by
	SwitchToThread.

2008-03-07  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_get_sender): New.
	* src/mymapitags.h (PR_PRIMARY_SEND_ACCT): New.
	* src/mimemaker.c (do_mime_sign): Pass the sender to the engine.

	* src/common.h (opt): Add field SVN_REVISION.
	* src/main.c (read_options, write_options): Set it.
	* src/olflange.cpp (GpgolExt): Print a warning on program update.

	* src/engine.c (struct engine_filter_s): Add field ADD_EXTRA_LF.
	(engine_request_exra_lf): New.
	(engine_wait): Implement that.
	* src/mimeparser.c (mime_decrypt): Add arg SIMPLE_PGP and call
	engine_request_exra_lf.
	(struct mime_context): Add field NO_MAIL_HEADER.
	(message_cb): Implement it.
	* src/message.cpp (message_decrypt): Set that flag for old style PGP.

	* src/common.h (DBG_COMMANDS, debug_commands): New.
	* src/ext-commands.cpp: Use it.

2008-03-06  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (do_mime_sign): Figure out the protocol to use.
	* src/engine.c (engine_sign_start): Add new args SENDER and R_PROTOCOL.
	* src/engine-assuan.c (op_assuan_sign): Ditto.  Send SENDER command.

2008-03-05  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): Insert the debug registry key.
	(write_options): More debug output.

2008-02-28  Werner Koch  <wk@g10code.com>

	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Fix initial setting of
	openpgp and smime state.  I wish C would haved used := for
	assignments.

2008-02-26  Werner Koch  <wk@g10code.com>

	* src/common.c (qp_decode): Add arg S_LBRK.
	* src/mimeparser.c (plaintext_handler, ciphertext_handler): Handle
	soft line breaks.

	* src/mapihelp.cpp (mapi_change_message_class): Handle opaque S/MIME
	messages without an smime-type parameter.

2008-02-25  Werner Koch  <wk@g10code.com>

	* src/message.cpp (message_verify): Show message boxes for non-signed
	messages.
	(message_decrypt): Likewise.

2008-02-19  Marcus Brinkmann  <marcus@g10code.de>

	* src/engine-assuan.c (get_uiserver_name): Change default uiserver
	path and remove work-around.

2008-02-18  Werner Koch  <wk@g10code.com>

	* src/message.cpp (pgp_body_to_attachment): New.
	(message_decrypt): Use it.
	(message_wipe_body_cruft): Also wipe already processed PGP
	encrypted messages.  Factor common code out to ...
	(do_wipe_body): .. new.
	* src/mapihelp.h (ATTACHTYPE_PGPBODY): New.

2008-02-15  Werner Koch  <wk@g10code.com>

	* src/olflange-dlgs.cpp: Remove code for IDC_ENCRYPT_WITH_STANDARD_KEY
	and IDC_ENCRYPT_TO.
	* src/dialogs.rc: Ditto.

2008-02-13  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_gpgolcharset_tag, mapi_get_gpgol_charset)
	(mapi_set_gpgol_charset): New.
	(mapi_get_gpgol_body_attachment): Transcode from Latin-1.
	* src/mimeparser.c (start_attachment): Set the charset property.
	(struct mime_context): Remove is_utf8 field.

2008-02-11  Werner Koch  <wk@g10code.com>

	* src/common.h (tlvinfo_t): New.
	* src/common.c (parse_tlv): New.  Based on code from libksba.
	* src/mapihelp.cpp (has_smime_filename): New.
	(is_really_cms_encrypted): New.
	(mapi_change_message_class): Use this here to work around a
	CryptoEx bug.

2008-02-08  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_change_message_class): Improve detecion of
	CryptoEx messages.

2008-02-07  Werner Koch  <wk@g10code.com>

	* src/engine.c (engine_verify_start): Enable opaque signature for the
	assuan backend.
	* src/engine-assuan.c (op_assuan_verify): New arg OUTDATA.  Add
	support for opaque signatures.

	* src/mimeparser.c (mime_verify_opaque): New.
	* src/message.cpp (message_verify): Handle opaque signed S/MIME.

	* src/message.cpp (message_wipe_body_cruft): Delete only encrypted
	messages.

2008-02-06  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (mime_decrypt): New arg IS_RFC822.
	* src/message.cpp (message_decrypt): Add code to see whether to use
	the new arg.

2008-02-01  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (ciphertext_handler, ciphermessage_cb)
	(ciphermessage_t2body): New.
	(mime_decrypt): Use an rfc822 parser to pass the message to the
	engine.

	* src/mapihelp.cpp (mapi_get_attach_as_stream): Add arg R_ATTACH.
	(mapi_set_attach_hidden): New.

2008-01-31  Werner Koch  <wk@g10code.com>

	* src/message.cpp (message_verify): Check that the body attachment is
	available before shortcutting the verification.
	* src/user-events.cpp (OnSelectionChange): Change SMIME message
	class.
	* src/mapihelp.cpp (mapi_change_message_class): Add arg
	SYNC_OVERRIDE. Changed all callers to pass false.
	(mapi_test_sig_status): Take care of sent messages.
	(mapi_get_gpgol_body_attachment): Change args to allow use as
	testing fucntion too.  Adjusted caller.

2008-01-29  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (do_mime_sign): Set CTE for SMIME.
	(delete_all_attachments): Remove extra semicolon accidently
	inserted with revision 916.

2008-01-18  Marcus Brinkmann  <marcus@g10code.de>

	* src/mimeparser.c (mime_verify): New variable sig_len, and pass it on
	to engine_verify_start.
	* src/engine.h (engine_verify_start): Add new argument sig_len.
	* src/engine.c (engine_verify_start): Add new argument sig_len and
	pass it on to op_assuan_verify and op_gpgme_verify.
	* src/engine-assuan.h (op_asssuan_verify): Add new argument sig_len.
	* src/engine-gpgme.c (op_gpgme_verify): New argument sig_len and use
	it instead of string length of signature.
	* src/engine-assuan.c (op_assuan_verify): Likewise.

2008-01-11  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (finalize_message): Add args PROTOCOL and ENCRYPT
	and use them to set the override message class.
	(mime_sign, mime_encrypt, mime_sign_encrypt): Pass this info via
	the new args.
	(do_mime_sign): Set micalg to sha1 for CMS.

	* src/message.cpp (message_decrypt): Add hack fro seldgenerated
	messages.

2008-01-10  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_gpgolmsgclass_tag, mapi_set_gpgol_msg_class):
	New.
	(mapi_change_message_class, mapi_get_message_type): Try override
	first.

	* src/message.cpp (message_incoming_handler): Remove arg MSGTYE and
	let the function retrieve it.  Changed all callers.  Retry after a
	sucessful message class change.
	* src/olflange.cpp (getMsgtype): Remove.  The caching might lead to
	problems and makes it all more complex.  Changed all callers to
	use mapi_get_message_type.

	* src/mimemaker.c (create_top_encryption_header) <SMIME>: Write empty
	line after header.

2008-01-09  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (finish_saved_body): New.
	(finish_attachment): Keep the body attachment open.
	(mime_decrypt, mime_verify): Close the saved body data.
	(t2body): Continue body attachments.

	* src/message.cpp (message_verify): Save changes.

	* src/mapihelp.cpp (mapi_change_message_class): Handle case of
	PGP/MIME signed with IPM.Note.  Save only of really needed, use
	FORCE_SAVE and keep it open for read and write.

2008-01-07  Marcus Brinkmann  <marcus@g10code.de>

	* src/engine-assuan.c (replace_dollar_s): Remove obsolete function.
	(get_quoted_socket_name): Remove obsolete function.
	(get_uiserver_name): Invoke GUI server with --daemon.  Fix buglet
	in assignment.
	(destroy_command): Change return type to void to suppress compiler
	warning.

2008-01-04  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (send_options): Call AllowSetForegroundWindow.

	* src/main.c (read_options): Allo other values than 1 for enableDebug.
	* src/common.h (DBG_IOWORKER, DBG_IOWORKER_EXTRA, DBG_FILTER)
	(DBG_FILTER): New.
	* src/engine.c (debug_filter): Turn it into a macro.
	(debug_filter_extra): New macro, used instead of checking the
	value of debug_filter.
	* src/engine-assuan.c (debug_ioworker, debug_ioworker_extra): new.
	Use them all over the file to enable debugging.
	* src/engine.c (engine_encrypt_start): Add arg HWND.
	(engine_sign_start, engine_decrypt_start, engine_verify_start)
	(engine_start_keymanager): Ditto.

	* src/mimemaker.c (mime_encrypt, mime_sign_encrypt, mime_sign)
	(do_mime_sign): Add arg HWND and pass it to the engine.
	* src/mimeparser.c (mime_verify, mime_decrypt): Pass HWND.
	* src/message.cpp (message_sign, sign_encrypt): Pass HWND.
	(message_incoming_handler, message_verify, message_decrypt): Add
	arg HWND and pass it on.
	* src/message-events.cpp (OnRead): Pass HWND to message function.
	* src/ext-commands.cpp (DoCommand):  Ditto.

2008-01-03  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (mime_sign_encrypt): Fix result test of do_mime_sign.
	(write_tempsign_attachment): Remove.
	(do_mime_sign): Change last ark to a sink_t.
	(mime_sign_encrypt): Rework to use a temporary stream instead of a
	temporary attachment.
	(create_mapi_attachment): Remove arg TEMPSIGN.

2007-12-18  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (get_msgcls_from_pgp_lines): Limit check to the
	first 1 k and stop testing after the first PGP armor line.
	(mapi_get_message_type): Return MSGTYPE_SMIME.
	(mapi_change_message_class): Take care of CryptoEx signatures.
	* src/mapihelp.h (MSGTYPE_SMIME): New.
	* src/message.cpp (message_incoming_handler): Check message class for
	unknown and unchecked messages.  Take care MSGTYPE_SMIME.
	* src/ext-commands.cpp (DoCommand): Add debug command change
	message class.

2007-12-07  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (InstallCommands): Removed toolbar button fro
	decrypt as this is not anymore needed.  Fixes bug#860.
	(QueryHelpText): Ditto.

2007-11-12  Werner Koch  <wk@g10code.com>

	* src/olflange.h (class GpgolExt): Rename m_gpgSelectSmime to
	m_protoSelection.
	* src/message-events.cpp (OnWriteComplete): Use it accordingly.
	* src/main.c (write_options, read_options): Load and save it.
	* src/dialogs.rc: Add new check box for OpenPGP default protocol.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Adjust for above chnages.

2007-11-09  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): New option ENABLE_DEBUG to be enabled
	only using the Registry.
	(read_options): Show warning for certain option combinations.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Hide the Advanced options
	button unless in debug mode.

	* src/mapihelp.cpp (get_gpgollastdecrypted_tag): New.
	(mapi_test_last_decrypted): New.
	(mapi_has_last_decrypted): new.
	* src/mimeparser.c (finish_message): Update the Last Decrypted property.
	* src/message.cpp (message_decrypt): Use it here.
	(message_wipe_body_cruft): New.

	* src/main.c (do_log_window_hierarchy): Factor some code out to ..
	(do_log_window_info): .. this.
	(log_window_hierarchy): Log parent window info.
	(get_64bit_session_marker): New.
	(initialize_session_key): Init session marker.

	* src/Makefile.am (gpgol_SOURCES): Remove item-events.cpp
	* src/olflange.cpp (GpgolExt): Disable the GpgOLItemEvents as they can
	only be used with the undocumented ECF file.

2007-10-29  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c (create_top_signing_header): Add arg FIRST.
	(mime_sign): Factor allmost all code out to ..
	(do_mime_sign): .. new function.
	(create_mapi_attachment): Add arg TEMPSIGN.
	(delete_all_attachments): Adjust for that.
	(mime_encrypt): Factor some code out to ..
	(create_top_encryption_header): .. new.
	(write_tempsign_attachment): New.
	(mime_sign_encrypt): Implement.

2007-10-22  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (connect_uiserver): Try to start the server.
	(get_uiserver_name, replace_dollar_s, get_quoted_socket_name): New.

	* src/main.c (REGKEY): Remove.
	* src/common.h (GNUPG_REGKEY): New.
	* src/common.c (default_homedir): Use it in place of a hard coded one.
	(get_locale_dir): Ditto.
	(gpgol_spawn_detached): New.

2007-10-18  Werner Koch  <wk@g10code.com>

	* src/common.c (get_system_check_bitmap): New.

	* src/decrypt.bmp, encrypt.bmp, sign.bmp, key_mana.bmp: Change
	background color to pink and voila Outlook presents them
	transparent.

	* src/logo.bmp: Cleaned up to use just one color.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Do not use LoadImage.

2007-10-16  Werner Koch  <wk@g10code.com>

	* src/myexchext.h (EECMDID_): Add a few more of these constants.
	* src/ext-commands.cpp (check_menu): New.
	(toolbar_add_menu): Rename to ..
	(add_menu): .. this.
	(toolbar_from_tbe): Remove.
	(add_toolbar): New.
	(InstallCommands): Use new toolbar helper.
	(QueryButtonInfo): Changed to use new toolbar helper.
	(~GpgolExtCommands): New.

	* src/engine.c (engine_encrypt_start): Add arg R_PROTOCOL.
	* src/engine-assuan.c (op_assuan_encrypt): Add arg R_USED_PROTOCOL and
	ask the server for it.
	* src/mimemaker.c (sink_encryption_write_b64): New.
	(mime_encrypt): Add S/MIME support.

2007-10-15  Werner Koch  <wk@g10code.com>

	* src/engine-assuan.c (op_assuan_start_keymanager): New.
	* src/engine.c (engine_start_keymanager): New.
	* src/ext-commands.cpp (DoCommand): Call it.

2007-10-12  Werner Koch  <wk@g10code.com>

	* src/gpgol-rsrcs.rc: Remove.
	* src/dialogs.rc: Renamed from olflange-rsrcs.rc.
	* src/dialogs.h: Rename for olflange-ids.h.  Changed all includers.
	* src/Makefile.am: Adjust accordingly.

	* src/verify-dialog.c (verify_dialog_box): Do not distinguish
	languages.
	(verify_dlg_set_labels): New.
	(verify_dlg_proc): Call it.

	* src/passphrase-dialog.c (passphrase_callback_box): Do not
	distinguish languages.
	(decrypt_key_dlg_set_labels): New.
	(decrypt_key_dlg_proc): Call it.
	(decrypt_key_ext_dlg_set_labels): New.
	(decrypt_key_ext_dlg_proc): Call it.

	* src/recipient-dialog.c (recipient_dialog_box): Do not distinguish
	languages.
	(recipient_dialog_box2): Ditto.
	(recipient_dlg_set_labels): New.
	(recipient_dlg_proc): Call it.

2007-10-11  Werner Koch  <wk@g10code.com>

	* src/ext-commands.cpp (toolbar_add_menu): USe "@" to indicate a
	separator and "" to ski the entry.  Changed callers.

	* src/common.h (struct): Remove AUTO_SIGN_ATTACH.  Add ENABLE_SMIME.
	* src/main.c (read_options, write_options): Save the new option.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Implement new option and
	print warning.
	* src/mapihelp.cpp (mapi_change_message_class): Take care of
	enable_smime.

	* src/olflange-ids.h: Renumbered.
	* src/olflange-rsrcs.rc: Keep only the english dialog and changed all
	text to dummy texts.
	* src/olflange-dlgs.cpp (set_labels): New.
	(GPGOptionsDlgProc): Call it.
	* src/property-sheets.cpp (GetPages): Do not distinguish languages.
	* src/config-dialog.c (config_dialog_box): Ditto.
	(config_dlg_set_labels): New.
	* src/gpgol-rsrcs.rc (IDD_OPT): Move to olflange-rsrcs.rc and rename
	to IDD_EXT_OPTIONS.
	(IDD_OPT_DE): Remove.

2007-10-10  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): Remove saveDecryptedAttachment.  Add
	smimeDefault.

2007-10-08  Werner Koch  <wk@g10code.com>

	* src/main.c (do_log): Remove trailing LF from w32 error message and
	also print the numeric error code.

2007-09-25  Werner Koch  <wk@g10code.com>

	* src/Makefile.am (gpgol_LDADD): Link against libassuan.

	* src/util.h (DIM, DIMof): New.

	* src/engine.c (filter_gpgme_read_cb): Implement nonblock feature.
	(filter_gpgme_write_cb): Ditto.

2007-09-24  Werner Koch  <wk@g10code.com>

	* src/common.c (standard_homedir, default_homedir): New.
	(w32_shgetfolderpath): Make static.

2007-09-21  Werner Koch  <wk@g10code.com>

	* src/mimeparser.c (build_mimeinfo): New.
	(finish_message): Store the mime structure.
	* src/mapihelp.cpp (mapi_get_message_class): New.
	(mapi_get_sig_status): New.
	(get_gpgolprotectiv_tag, get_gpgolsigstatus_tag)
	(get_gpgolattachtype_tag): Factored code out to ...
	(create_gpgol_tag): .. New.
	(get_gpgolmimeinfo_tag): New.
	(mapi_get_mime_info): New.

2007-09-20  Werner Koch  <wk@g10code.com>

	* src/user-events.cpp, user-events.h:  New.
	* src/olflange.h (class GpgolExt): Add member for it.
	* src/olflange.cpp (QueryInterface): Hook it in.

2007-09-19  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_has_sig_status): Return true if any sig
	status is present.
	(mapi_test_sig_status): New. Take semantics of the former
	mapi_has_sig_status.  Changed all callers.
	(mapi_change_message_class): Set sign status to n/a for other
	message classed.
	* src/mimemaker.c (finalize_message): Mark created messages.
	(write_buffer_for_cb): Rename from write_buffer_voidarg and return
	number of bytes written.
	(collect_signature): Return number of bytes written.

	* src/mapihelp.h (struct mapi_attach_item_s): New member
	PRIVATE_MAPITABLE.
	* src/mapihelp.cpp (mapi_create_attach_table)
	(mapi_release_attach_table): Keep the mapi table oben and put
	PR_ATATCH_NUM into the MAPIPOS member.
	(mapi_get_gpgol_body_attachment): Use PR_ATATCH_NUM.

	* src/mimeparser.c (finish_message): New.
	(mime_decrypt, mime_verify): Call it.

2007-09-17  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp: Print gpgme version.

2007-09-14  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c: Rewrote most of it.

2007-09-13  Werner Koch  <wk@g10code.com>

	* src/common.c (xrealloc): New.

2007-09-11  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (op_encrypt_data): New.

2007-09-08  Werner Koch  <wk@g10code.com>

	* src/engine.c: New.
	* src/engine.h: Rewrite.  Factor existing stuff out to ..
	* src/engine-gpgme.h: .. new.
	* src/engine-assuan.h, engine-assuan.c: New.

2007-09-07  Werner Koch  <wk@g10code.com>

	* src/common.c (qp_decode): Handle softe line breaks.

2007-09-06  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_get_body): New.

	* src/mimeparser.c (protocol_t): Move to .. common.h.

2007-09-05  Werner Koch  <wk@g10code.com>

	* src/mimemaker.c, mimemaker.h: New.

2007-08-31  Werner Koch  <wk@g10code.com>

	* src/mapihelp.cpp (mapi_set_header): New.
	* src/message.cpp (pgp_mime_from_clearsigned): New.
	(message_verify): Use it.
	* src/main.c: Call srand ().
	* src/util.h (trailing_ws_p): New.
	* src/common.c (generate_boundary): New.

2007-08-30  Werner Koch  <wk@g10code.com>

	* src/message-events.h (class GpgolMessageEvents): Rename M_IS_SMIME
	to M_PROCESSED.
	* src/message-events.cpp (OnRead, OnReadComplete): Ditto.
	(OnReadComplete): Remove preview decryption stuff.
	(OnWriteComplete): Remove GpgMsg based code.
	* src/ext-commands.cpp (DoCommand): Ditto
	(InstallCommands): Do not init the watcher.
	* src/olflange.cpp (GpgolExt): Do not init the watcher.
	(GpgolExt): Do not clanup the watcher.
	* src/main.c (DllMain): Ditto.
	* src/gpgmsg.cpp, gpgmsg.hh: Remove.
	* src/watcher.cpp: Remove
	* src/pgpmime.c, pgpmime.h: Remove.

	* src/mapihelp.h (MSGTYPE_GPGOL_CLEAR_SIGNED)
	(MSGTYPE_GPGOL_PGP_MESSAGE): New.
	* src/mapihelp.cpp (mapi_get_message_type): Map them.
	(get_msgcls_from_pgp_lines): New.
	(mapi_change_message_class): Detect old old style PGP messages.
	(mapi_get_body_as_stream): New.
	* src/message.cpp (message_verify, message_decrypt): Handle them.
	* src/message-events.cpp (OnRead): Ditto.

2007-08-29  Werner Koch  <wk@g10code.com>

	* src/ext-commands.h (class GpgolExtCommands): Add members
	M_NCMDKEYMANAGER and M_NCMDDECRYPT.
	* src/ext-commands.cpp (GpgolExtCommands): Initialize it.
	(InstallCommands): Use them here instead of reusing another variable.
	(DoCommand, Help, QueryHelpText, QueryButtonInfo): Restructured
	for better readibility.

2007-08-21  Werner Koch  <wk@g10code.com>

	* src/w32-gettext.c (SUBLANG_BENGALI_BANGLADESH): Fix to 2 as per MSDN.
	(SUBLANG_PUNJABI_PAKISTAN): Remove as it is not in MSDN.
	(SUBLANG_ROMANIAN_MOLDOVA): Remove as it is not in MSDN.
	(SUBLANG_ROMANIAN_ROMANIA): Change to value 1 as per MSDN.

2007-08-13  Marcus Brinkmann  <marcus@g10code.de>

	* src/Makefile.am (gpgol_SOURCES): Add common.h.

2007-08-06  Werner Koch  <wk@g10code.com>

	Lots of changes to support S/MIME and to revamp most of the old
	code.  More changes to follow.  The list of changes below is not
	complete as it does not identfy all newly written code.

	* src/mimeparser.c: New. Based on pgpmime.c

	* src/display.cpp (update_display): Removed unused arg MSG.
	(update_display): Set the body to an empty string even if it is
	not HTML.

	* src/olflange.cpp (Install): Print OL version only once.

	* src/verify-dialog.c (verify_dialog_box): Add arg PROTOCOL.
	(load_sigbox): Ditto.
	(verify_dlg_proc): Changed title acccording to used protocol.

	* src/Makefile.am (gpgol_LDADD): Add libadvapi due to our use of
	CryptGenRandom.

	* src/main.c (get_crypt_random, initialize_session_key): New.
	(DllMain): Initialize the session key.
	(get_128bit_session_key, create_initialization_vector): New.

	* src/serpent.c: New.  Taken from libgcrypt 1.3.0 and stripped down to
	fit our needs.  Add CFB encryption API.
	* src/serpent.h: New.

	* src/mapihelp.cpp (mapi_mark_moss_attach): New.
	* src/mymapitags.h (PR_ATTACHMENT_HIDDEN): New.

	* src/display.cpp (open_inspector): New.

	* src/mapihelp.cpp (mapi_get_binary_prop): New.

	* src/engine-gpgme.c (op_verify_detached_sig_gpgme): Add arg
	PROTOCOL.  Changed all callers to pass the OPENPGP protocol.

	* src/common.c (b64_decode): Renamed from base64_decode and use new
	type for the context.
	(b64_init): New.
	* src/pgpmime.c (qp_decode, base64_decode): Move to common.c and make
	public.

	* src/common.h (STRICT): Remove.
	* src/intern.h: Rename to common.h.

2007-07-20  Werner Koch  <wk@g10code.com>

	* src/myexchext.h (IOutlookExtItemEvents.): New.
	* src/item-events.h, item-events.cpp: New.
	* src/olflange.cpp (GpgolExt, QueryInterface): Hook it in.

2007-07-19  Werner Koch  <wk@g10code.com>

	* src/attached-file-events.cpp: Renamed from attach.c.
	* src/attached-file-events.h: Renamed from attach.h.  Removed some
	inlines to the impl file.

	* src/Makefile.am (gpgol_LDADD): Add libole32.

2007-07-18  Werner Koch  <wk@g10code.com>

	* src/mapihelp.c (log_mapi_property): Support STRIGN8 and UNICODE.

	* src/myexchext.h (IExchExtUserEvents, IExchExtSessionEvents): New
	declarations.
	* src/session-events.cpp, session-events.h: New.
	* src/olflange.cpp (GpgolExt, QueryInterface): Hook session-events in.

	* src/olflange.cpp (DllRegisterServer): Register only for interfaces
	we really use.
	(ext_context_name): New. Factored out from several places.
	(Install): Initialize for Session context.

	Renamed all CGPGExchExt* src/classes to Gpgol*.

	* src/olflange.h, olflange.cpp: Factor most code out to ..
	* src/ext-commands.cpp, ext-commands.h, message-events.cpp
	* src/message-events.h, property-sheets.cpp, property-sheets.h
	* src/ol-ext-callback.cpp, ol-ext-callback.h: .. New.

2007-07-17  Werner Koch  <wk@g10code.com>

	* src/Makefile.am (gpgol_LDADD): Add ws2_32.

	* src/main.c (log_window_hierarchy, do_log_window_hierarchy): New.
	* src/olflange.cpp (show_window_hierarchy): Replace by
	log_window_hierarchy.
	(g_initdll): Make static.
	(InstallCommands): Factor some code out to ..
	(toolbar_from_tbe, toolbar_add_menu): .. new.

	* src/mapihelp.c, mapihelp.h: New.
	* src/olflange.cpp (show_mapi_property): Factor out to mapihelp.c
	and rename to log_mapi_property.

2007-04-10  Werner Koch  <wk@g10code.com>

	* src/display.cpp (find_message_window): Add arg LEVEL for debugging.
	Ignore MsoCommand* src/Windows.  Fixes bug 735.

2006-10-14  Timo Schulz  <ts@g10code.de>

	* src/recipient-dialog.c (lv_get_item_param): New.
	(copy_item): Use it here to copy the opaque param.
	(recipient_dlg_proc): And here to avoid the hidden column.
	(initialize_rsetbox): Localize column names.

	* src/olflange.cpp (get_outlook_property): Free returned BSTR.
	(InstallCommands): Likewise.

2009-09-06  Timo Schulz  <ts@g10code.de>

	* src/recipient-dialog.c (recipient_dialog2): Do not free
	key array here.

2008-11-14  Werner Koch  <wk@g10code.com>

	Release 0.10.17.

2008-11-11  Werner Koch  <wk@g10code.com>

	Release 0.10.16.

2008-10-27  Werner Koch  <wk@g10code.com>

	* forms/gpgol-cs_de.cfg: New.

2008-08-21  Timo Schulz  <ts@g10code.de>

	* src/engine-gpgme.c (op_lookup_keys): Only add useable keys
	and add all invalid keys to unknown.
	* src/recipient-dialog.c (copy_item): Rewritten.
	(initialize_keybox): Add comment to clarify use of fnd_keys.
	(recipient_dialog_box): Simplified.
	(find_item): Support partial search.

2008-08-06  Werner Koch  <wk@g10code.com>

	Release 0.10.15.

	* forms/sign-l.ico, forms/sign-s.ico: New.
	* forms/encr-l.ico, forms/encr-s.ico: New

2008-08-04  Werner Koch  <wk@g10code.com>

	* Makefile.am (SUBDIRS): Add forms.
	* forms/Makefile.am: New.
	* forms/gpgol_de.cfg, forms/gpgol-ms_de.cfg: New.

2008-06-04  Werner Koch  <wk@g10code.com>

	* doc/gpgol.texi (Assuan Protocol): Remove protocol specs.  They
	are now part of the GPGME manual.

2008-05-28  Werner Koch  <wk@g10code.com>

	* Release 0.10.14.

2008-05-06  Werner Koch  <wk@g10code.com>

	* Release 0.10.13.

2008-04-16  Werner Koch  <wk@g10code.com>

	* Release 0.10.12.

2008-04-04  Werner Koch  <wk@g10code.com>

	* Release 0.10.11.

2008-04-02  Werner Koch  <wk@g10code.com>

	* Release 0.10.10.

2008-04-01  Werner Koch  <wk@g10code.com>

	* configure.ac (AC_INIT): Fix quoting.

2008-03-19  Werner Koch  <wk@g10code.com>

	* Release 0.10.9.

2008-03-18  Werner Koch  <wk@g10code.com>

	* Release 0.10.8.

2008-03-11  Werner Koch  <wk@g10code.com>

	* Release 0.10.7.

2008-03-10  Werner Koch  <wk@g10code.com>

	* Release 0.10.6.

2008-03-07  Werner Koch  <wk@g10code.com>

	* configure.ac (SVN_REVISION): New AC_DEFINE.

2008-03-06  Werner Koch  <wk@g10code.com>

	* doc/gpgol.texi (SIGN): Extend the SIGNER command to allow
	suggestion of a protocol.

2008-02-18  Werner Koch  <wk@g10code.com>

	Release 0.10.5 development version.

2008-02-15  Werner Koch  <wk@g10code.com>

	* po/de.po: Describe more explicit on how to start the UI-server.

2008-02-06  Werner Koch  <wk@g10code.com>

	Released 0.10.4 development version.

2006-12-13  Werner Koch  <wk@g10code.com>

	* po/LINGUAS: Added sv.

2007-12-10  Werner Koch  <wk@g10code.com>

	Released 0.10.3 development version.

2007-11-12  Werner Koch  <wk@g10code.com>

	Released 0.10.2 development version.

2007-10-22  Werner Koch  <wk@g10code.com>

	Released 0.10.1 development version.

2007-10-12  Werner Koch  <wk@g10code.com>

	* po/POTFILES.in: Add more files.

2007-10-11  Werner Koch  <wk@g10code.com>

	Released 0.10.0 development version.

2007-10-05  Werner Koch  <wk@g10code.com>

	* doc/: New.
	* doc/Makefile.am: New.
	* doc/gpgol.texi: New.
	* doc/gpl.texi: New.

2007-09-25  Werner Koch  <wk@g10code.com>

	* configure.ac: Check for libassuan.

2007-09-17  Werner Koch  <wk@g10code.com>

	* autogen.sh (FORCE): Add --force option.

2007-08-13  Marcus Brinkmann  <marcus@g10code.de>

	* configure.ac (svn_revision): Update to latest version from gnupg.

2006-12-13  Daniel Nylander <po@danielnylander.se>  (wk)

	* po/sv.po: New.

2006-10-13  Werner Koch  <wk@g10code.com>

	Released 0.9.91.

2006-08-28  Werner Koch  <wk@g10code.com>

	Released 0.9.90.

2006-08-19  Timo Schulz  <ts@g10code.de>

	* src/olflange-rsrcs.rc: Correct some dialog sizes.
	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Automatically
	select the secret key if only one is available.
	* src/config-dialog.c (GPGOptionsDlgProc): Passphrase cache
	time is now requested in minutes but still internally
	stored as seconds.

2006-08-15  Timo Schulz  <ts@g10code.de>

	* src/decrypt.bmp, encrypt.bmp: Restore format.
	* src/olflange.cpp (OnWriteComplete): Correct exit code handling.
	* src/recipient-dialog.c (initialize_rsetbox): Correct column width.
	(recipient_dlg_proc): Do not show the cancel error any longer.
	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Likewise.
	(decrypt_key_ext_dlg_proc): Ditto.
	* src/olgpgcore.def: Deleted unused file.

2006-06-14  Timo Schulz  <ts@g10code.com>

	* src/gpgol-rscs.rc (IDD_OPT): The English version of the dialog
	has no log file item. Add it.

2006-05-22  Timo Schulz  <ts@g10code.com>

	* src/verify-dialog.c (load_sigbox): A sigsum of 0 also indicates
	a valid (good) signature.

2006-04-25  Werner Koch  <wk@g10code.com>

	Released 0.9.10.

	* src/xmalloc.h: New.  Moved prototypes from util.h
	* src/w32-gettext.h:  Include it.
	* src/common.c (utf8_to_wincp): Removed and replaced all callers by
	utf8_to_native.
	* src/common.c (wchar_to_utf8, utf8_to_wchar): Moved to ..
	* src/w32-gettext.c: .. here.
	(utf8_to_native): Make sure that we always return
	a string and never NULL.
	(native_to_utf8): New.
	(native_to_wchar): New.
	* src/gpgmsg.cpp (decrypt): Use native_to_utf8 for i18n strings
	expected to be utf-8.
	* src/pgpmime.c (pgpmime_decrypt, pgpmime_verify): Ditto.

2006-04-24  Werner Koch  <wk@g10code.com>

	Released 0.9.9.

	* configure.ac: Use M4 macros to get the actual SVN revision.

	* src/gpgmsg.cpp (decrypt): New arg INFO_ONLY.
	* src/olflange.cpp (OnReadComplete): Add code to call decrypt but with
	INFO_ONLY if preview decryption has not been requested.
	* src/main.c (read_options): New compatibility option no_preview_info.

	* src/gpgmsg.cpp (getRecipients): Don't add the default key here.
	(encrypt_and_sign): But do it here.
	* src/engine-gpgme.c (op_get_one_key): New.

2006-04-22  Timo Schulz  <ts@g10code.com>

	* src/common.c (utf8_to_wincp): Corrected utf8 decoding.
	* src/passphrase-dialog.c (load_recipbox): Likewise.
	* src/olflange-dlg.cpp (GPGOptionsDlgProc): Activate the
	'confirm' button when the dialog state has been changed.
	* src/olflange-rsrcs.rc (IDD_GPG_OPTIONS_DE): Change description.

2006-03-28  Werner Koch  <wk@g10code.com>

	* src/olflange-rsrcs.rc (IDD_GPG_OPTIONS_DE): Add new control box.
	(IDD_GPG_OPTIONS): Updated to match German version.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Ditto.
	* src/gpgmsg.cpp (decrypt): Implemented PREFER_HTML option.
	(get_long_attach_data): New.

2006-03-27  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (op_verify_detached_sig_gpgme): New.

	* src/pgpmime.c (pgpmime_verify): New. First take on a PGP/MIME
	signature verification.

	* src/gpgmsg.cpp (is_pgpmime): Renamed to is_pgpmime_enc.
	(class GpgMsgImpl): Niew members media_type. media_subtype and
	ct_protocol.
	(get_msg_content_type): New.
	(decrypt): Show a warning for PGP/MIME signed messages.

2006-03-26  Werner Koch  <wk@g10code.com>

	* src/intern.h: New option PREFER_HTML.
	* src/main.c (write_options, read_options): Ditto.

2006-03-21  Werner Koch  <wk@g10code.com>

	Released 0.9.7.

2006-03-20  Werner Koch <wk@g10code.com>

	* src/olflange.cpp (Install): Also check major part of build version.

2006-03-17  Timo Schulz  <ts@g10code.com>

	* src/w32-gettext.c (utf8_to_native): Make it global.
	* src/config-dialog.c (get_open_file_name): Make sure the selected
	file really exists.
	* src/passphrase-dialog.c (decrypt_dlg_proc): UTF8 conversion.
	(passphrase_callback_box): Likewise.
	* src/recipient-dialog.c (recipient_dlg_proc): Likewise.
	* src/verify-dialog.c (load_akalist): Likewise.
	(load_sigbox): Likewise.
	* src/common.c (utf8_to_wincp): New.

2006-03-15  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (Install): Print gpgol version for debugging.

2006-03-14  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (decrypt_dlg_proc): When used
	as a signing key selection dialog, use a different title.
	* src/gpgol-rsrcs.rc: Use German titles for German dialog versions.

2006-02-23  Werner Koch  <wk@g10code.com>

	* src/main.c (read_options): Set default caching time to 10 minutes.

2006-01-26  Werner Koch  <wk@g10code.com>

	Released 0.9.6.

2006-01-16  Werner Koch  <wk@g10code.com>

	* src/verify-dialog.c (load_sigbox): Give a hint in case of a bad
	signature.

	* src/gpgol-rsrcs.rc (IDD_ENC_DE): Add an informational header.

2005-12-07  Werner Koch  <wk@g10code.com>

	Released 0.9.5.

2005-12-07  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (Install): Check the version and print a warning.

	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Simplified the default
	key code.

	* src/config-dialog.c (store_config_value): Create key if it does not
	exists.
	(load_config_value_ext): Removed.

2005-12-06  Werner Koch  <wk@g10code.com>

	Released 0.9.4.

2005-12-06  Werner Koch  <wk@g10code.com>

	* src/config-dialog.c (start_key_manager): Don't pass the options to
	access.

2005-12-06  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (getRecipients): Add the default key to the list of
	recipients.
	* src/recipient-dialog.c (recipient_dlg_proc): Add the already found
	keys to the selected ones.

	* src/olflange.cpp (OnWriteComplete): Need to disable the deleting of
	HTML bodys.

2005-12-05  Werner Koch  <wk@g10code.com>

	* src/Makefile.am (gpgol_LDADD): Add -loleaut32.
	* src/engine-gpgme.c (op_verify_detached_sig_mem): New.
	* src/olflange.cpp (OnWriteComplete): Pass HTML flag to sign call.
	(put_outlook_property): Need to use a BSTR for the sake of putting
	HTMLBody.
	* src/gpgmsg.cpp (sign): Add arg WANT_HTML.
	(free_attach_info): New.  Use it in the destructor.
	(createHtmlAttachment): New.
	(encrypt_and_sign, sign): Use it here.
	(writeAttestation): Don't write an empty attestation.

2005-12-02  Werner Koch  <wk@g10code.com>

	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New.

	* src/verify-dialog.c (verify_dialog_box): Actually allow for German
	dialog.
	* src/recipient-dialog.c (recipient_dialog_box)
	(recipient_dialog_box2): Ditto.
	* src/passphrase-dialog.c (signer_dialog_box)
	(passphrase_callback_box): Ditto.

	* src/intern.h (struct): New field PREVIEW_DECRYPT.  Use it instead os
	the old compatibility flags.
	* src/main.c (write_options, read_options): Store/load preview decrypt.
	* src/config-dialog.c (config_dlg_proc): Removed homedir and gpgbinary
	options as they are deprecated. Put logfile entry here.
	* src/olflange-dlgs.cpp (GPGOptionsDlgProc): Remove logfile entry. Add
	preview-decrypt checkbox.
	* src/olflange.cpp (InstallCommands): Remove experimental preview
	command.

	* src/w32-gettext.c (gettext_localename): New.
	* src/config-dialog.c (config_dialog_box): Use it here to match the
	gettext behaviour.
	(GetPages): Ditto.

2005-12-01  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (op_decrypt_stream_to_gpgme, decrypt_stream)
	(op_decrypt): Add arg PREVIEW_MODE.
	* src/pgpmime.c (pgpmime_decrypt): New arg PREVIEW_MODE.
	(struct pgpmime_context): New field PREVIEW.
	(message_cb, plaintext_handler): Handle preview mode.
	* src/gpgmsg.cpp (class GpgMsgImpl): Renamed SILENT to PREVIEW.
	(setSilent): Renamed to ..
	(setPreview): .. this.
	(decrypt): Handle preview mode.  Display a string while decrypting
	PGP/MIME messages.

	* src/display.cpp (update_display): New arg TEXT.
	* src/gpgmsg.cpp (class GpgMsgImpl): Removed BODY_PLAIN and BODY.
	(getDisplayText): Removed.
	(loadBody): Changes to return the allocated body.
	(getOrigText): Removed.
	(getMessageType): Rewritten to take the body text as argument.
	(decrypt): Pass plaintext directly to update_display.  Free
	plaintext.
	(sign, encrypt_and_sign): Likewise.

	* src/olflange.cpp (OnWriteComplete): Always delete PR_BODY on error.

2005-11-30  Werner Koch  <wk@g10code.com>

	* po/de.po: New.

	* po/: New; created by autopoint.
	* po/Makevars: New.
	* m4/Makefile.am: Add new m4 files.
	* autogen.sh: Detect gettext.
	* configure.ac: Check for gettext.

	* src/gpgmsg.cpp: Made more strings translatable.
	* src/olflange.cpp: Replaced all LoadStrings by gettext calls.
	* src/olflange-ids.h: Removed the IDS_ constants.
	* src/olflange-rsrcs.rc: Removed the stringtables.

	* src/common.c (get_root_key, read_w32_registry_string): New.  Taken
	for libgpg-error.
	* src/main.c (i18n_init): New.
	(DllMain): Call it.
	(get_locale_dir, drop_locale_dir): New.

	* src/w32-gettext.c, w32-gettext.h: New.  Taken form libgpg-error.
	Slightly modified due to the fact that gpgol is W32-only.
	* src/util.h (_, N_): Define standard i18n macros.

	* src/display.cpp (set_message_body): Do not delete a RTF property.

	* src/util.h (SRCNAME): New.  Changed all __FILE__ to this.
	* src/main.c (log_srcname): New.

2005-11-20  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (loadBody): For HTML try to read the HTMLBody from
	the OOM as a last resort.
	* src/olflange.cpp (get_outlook_property): New.
	(put_outlook_property_int): New.

2005-11-15  Werner Koch  <wk@g10code.com>

	* configure.ac (BUILD_TIMESTAMP): Include SVN revision.
	(AM_INIT_AUTOMAKE): Fixed invocation.

	* src/Makefile.am (gpgol_LDADD): Remove -lintl for now.

	* src/olflange.cpp (OnWriteComplete): Make sure that we don't sent out
	unencrypted stuff on error.
	* src/display.cpp (set_message_body): Add arg IS_HTML.
	(update_display): Ditto.

	* src/gpgmsg.cpp (loadBody): New arg WANT_HTML.
	(getOrigText): Ditto.

	* src/olflange.h (class CGPGExchExtMessageEvents): Add M_WANT_HTML.
	* src/olflange.cpp (OnWrite): Set it.
	(OnWriteComplete): Pass its value to the encrypt functions.

2005-11-10  Werner Koch  <wk@g10code.com>

	* configure.ac: Use MS style bitfields.

	* src/config-dialog.c (start_key_manager): Changed invocation of
	default keymanager.

2005-10-21  Marcus Brinkmann  <marcus@g10code.de>

	* m4/gpg-error.m4: New file.
	* configure.ac: Also check for gpg-error.

	* src/Makefile.am (libgpgme.a, libgpgme.a): New targets.
	(gpgol_DEPENDENCIES): Add libgpgme.a and libgpg-error.a.
	(clean-local): Likewise.
	(gpgol_LDADD): Link to these local versions statically.

2005-10-20  Marcus Brinkmann  <marcus@g10code.de>

	* src/mapi32.def: New file.
	* src/Makefile.am (gpgol_DEPENDENCIES): New variable.
	(libmapi32.a): New target.
	(gpgol_LDADD): Replace mapi32.dll with "-L . -lmapi32".
	(clean-local): New target.

2005-10-19  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (sign, encrypt_and_sign): Don't set the body first to
	empty. If this is really required we should do this in
	set_message_body.
	(sign): Save changes. Set content type to text/plain.
	(encrypt_and_sign): Save changes also for empty bodies.

2005-10-06  Marcus Brinkmann  <marcus@g10code.de>

	* configure.ac: Change AC_CONFIG_SRCDIR argument to src/gpgol.def.

2005-10-06  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (writeAttestation): Use gpgme_free for BUFFER.
	* src/engine-gpgme.c (data_to_file): Ditto.

2005-10-06  Marcus Brinkmann  <marcus@g10code.de>

	* src/Makefile.am (gpgol_DEPENDENCIES): New variable.
	(libmapi32.a): New target.
	(gpgol_LDADD): Replace mapi32.dll with "-L . -lmapi32".

	* src/Makefile.am (gpgol_LDADD): Prefix gpgol.def and mapi32.dll with
	$(srcdir).

	* src/Makefile.am (.rc.o): Invoke windres with "-I .".

	* src/Makefile.am (.rc.o): Invoke windres with -I $(srcdir).

	* src/Makefile.am (gpgol_SOURCES): Add util.h.

2005-09-29  Werner Koch  <wk@g10code.com>

	Released 0.9.3.

2005-09-29  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (encrypt_and_sign): Pass signing key to encryption
	function.

	* src/passphrase-dialog.c (signer_dialog_box): New arg encrypting.

	* src/gpgmsg.cpp (encrypt_and_sign): Set content type.

	* src/engine-gpgme.c (op_lookup_keys): Fixed multiple key detection.

2005-09-28  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (DoCommand): Catch close command and resend to
	avoid the "save changes?".

	* src/display.cpp (update_display): Take care of utf-8 issues.
	* src/common.c (latin1_to_utf8): New.
	* src/pgpmime.c (latin1_data_write): New.
	(plaintext_handler): Use it here.
	(message_cb): Detect utf-8 encoding.

	* src/main.c (read_options): Make sure that compat flags are always
	properly initialized.

	* src/display.cpp (find_message_window): First try to find the window
	by class name.

	* src/common.c (wchar_to_utf8_2): New.

2005-09-27  Werner Koch  <wk@g10code.com>

	* src/pgpmime.c (pgpmime_decrypt): Pass a pseduo filename to the
	decryption function.

	* src/verify-dialog.c (load_sigbox): Get key direct from gpgme.
	* src/passphrase-dialog.c (load_secbox, load_recipbox): Reworked.
	(decrypt_key_dlg_proc, decrypt_key_ext_dlg_proc): Reworked.
	(count_keys, release_keyarray): New.
	(signer_dialog_box, passphrase_callback_box): Adjusted to above
	changes.
	* src/engine-gpgme.c (op_deinit): Remove keycache cleanup.
	* src/Makefile.am (gpgol_SOURCES): Removed keycache.c, keycache.h.
	* src/keycache.c, keycache.h: Removed.

	* src/recipient-dialog.c (recipient_dialog_box)
	(recipient_dialog_box2): Rewritten and changed interface.
	(load_rsetbox): Removed keycache stuff and rewrote to make use of
	the keyarray.
	(copy_item, initialize_keybox, recipient_dlg_proc): Ditto.
	(keycache_to_key_array): Removed.
	* src/engine-gpgme.c (op_lookup_keys): Rewritten, changed interface.
	* src/gpgmsg.cpp (count_recipients): Renamed to ..
	(count_strings): .. this.
	(count_keys): New.
	(free_recipient_array): Renamed to ..
	(free_string_array): .. this.
	(encrypt_and_sign): Adjusted for changes in op_lookup_keys and
	recipient_dialog_box2.

2005-09-26  Werner Koch  <wk@g10code.com>

	* src/passphrase-dialog.c (get_pubkey_algo_str): Add DSA and old
	Elgamal.

	* src/gpgmsg.cpp (gatherAttachmentInfo): Ignore attachments we can't
	open.

	* src/main.c (write_options): Print message on error.  Rearranged to
	make use of a table for all options.

2005-09-23  Werner Koch  <wk@g10code.com>

	* src/recipient-dialog.c (recipient_dlg_proc): Removed
	IDC_ENC_OPTARMOR stuff; it was not used.
	(load_rsetbox): Fixed detection of encryption capability.

	* src/gpgol-ids.h, gpgol-rsrcs.rc: Ditto.

2005-09-22  Werner Koch  <wk@g10code.com>

	Released 0.9.2.

2005-09-22  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (decrypt_stream): Use gpgme_op_decrypt_verify.

	* src/gpgmsg.cpp (gatherAttachmentInfo): Ignore attestations when
	checking for pgp/mime.

	* src/pgpmime.c (pgpmime_decrypt): Added arg HWND.
	(message_cb, plaintext_handler): Write attachments.
	* src/pgpmime.c (base64_decode): New.
	* src/rfc822parse.c (parse_field): Treat Content-Disposition special.

	* src/gpgmsg.cpp (get_save_filename): Moved to ..
	* src/common.c (get_save_filename): .. here.

2005-09-20  Timo Schulz  <ts@g10code.com>

	* src/attach.c: New.
	* src/attach.h: New.
	* src/olflange.cpp (CGPGExchExt): Allocate class for
	attached file events.
	(QueryInterface): Return interface pointer for
	attached file events.
	* src/passphrase-dialog.c (load_secbox): Use new GPGME
	interface.
	(get_pubkey_algo_str): New.
	* src/verify-dialog.c (load_sigbox): Likewise.
	* src/recipient-dialog.c (load_recipbox): Likewise.

2005-09-19  Werner Koch  <wk@g10code.com>

	Released 0.9.1.

2005-09-19  Werner Koch  <wk@g10code.com>

	* src/msgcache.c (flush_if_needed): New.
	(msgcache_put): use it.
	* src/intern.h (opt): New compatibility flags AUTO_DECRYPT and
	NO_ATTESTATION.
	* src/olflange.cpp (InstallCommands): Use watcher stuff only when this
	option has been enabled.
	* src/gpgmsg.cpp (decrypt): Take care of NO_ATTESTATION.
	* src/main.c (DllMain): Removed debug output; this should not be
	used before initialization!
	* src/watcher.cpp: Include config.h.  Removed weird line endings.
	* src/gpgmsg.cpp (encrypt_and_sign): Call SaveChanges.

2005-09-15  Timo Schulz  <ts@g10code.com>

	* src/util.h: Provider watcher prototypes.
	* src/watcher.cpp (watcher_init_hook): New.
	(watcher_free_hook): New.
	(watcher_set_callback_ctx): New.
	(cbt_proc): New.
	* src/display.cpp (find_message_window): Removed GpgMsg param.
	Changed all callers.

2005-09-15  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (OnWriteComplete): Take care of EEME_FAILED.
	(OnWrite): Check that we are encrypting only plain text messages.

	* src/myexchext.h: Add flags used by OnReadComplete.

2005-09-14  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (writeAttestation): Add a content type.
	(gatherAttachmentInfo): Detect whether we already have an attestation.
	(decrypt): Don't create duplicate attestations.
	(writeAttestation): Translate LF to CRLF.

2005-09-13  Werner Koch  <wk@g10code.com>

	* src/pgpmime.c (pgpmime_decrypt): New arg ATTESTATION.
	* src/engine-gpgme.c (add_verify_attestation): New.
	(op_decrypt, op_verify_detached_sig, op_verify_detached_sig)
	(op_verify_detached_sig): Add new arg ATTESTATION.  Changed all
	callers.
	(at_sig_summary, at_sig_validity, add_verify_attestation): New.
	The code has been taken and modified from Mutt's crypt-gpgme.c and
	entirely been writen by g10 Code.
	(at_fingerprint): Ditto.

	* src/gpgmsg.cpp (class GpgMsgImpl): New member ATTESTATION.  Use it
	in all calls to the functions above.

	* src/gpgmsg.cpp (decryptAttachment, decrypt): Save plaintext back
	into the MAPI if desired.

2004-09-08  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (lod_recipbox): Use gpgme directly
	to resolve the keyids to userids.
	* src/usermap.c, usermap.h: Removed.
	* src/HashTable.cpp, HashTable.h: Removed.

2005-09-07  Timo Schulz  <ts@g10code.com>

	* src/common.c: Removed unused code.
	* src/intern.h: Likewise.

2005-09-07  Timo Schulz  <ts@g10code.com>

	* src/olflange.cpp (ul_release): New. Wrapper with error checking
	around UlRelease.
	(InstallCommands): Separate test for type and if string is empty.

2005-09-06  Werner Koch  <wk@g10code.com>

	* src/engine-gpgme.c (op_decrypt_stream): Factored most code out to ..
	(decrypt_stream): .. new.
	(op_decrypt_stream_to_buffer): Simplified accordingly.  Fixed
	possible buffer overflow when trying to make it a string.
	(op_decrypt_stream_to_gpgme): New.

	* src/pgpmime.c, pgpmime.h: New.
	* src/rfc822parse.h, rfc822parse.c: New.  Taken from GnuPG 1.9.

2005-09-06  Timo Schulz  <ts@g10code.com>

	* src/config-dialog.c (get_open_file_name): Correctly terminated filter.
	New parameter for the title. Changed all callers.
	(get_folder): Likewise.

2005-09-04  Werner Koch  <wk@g10code.com>

	Released 0.9.0.

2005-09-01  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp (get_pgp_armor_type): New.
	(gatherAttachmentInfo):  Enhanced to detect text/plain pgp.
	(verify): Removed.
	(decrypt): Do clearsig verification here.

	* src/gpgmsg.cpp (decrypt): Kludge to workaround OL not updating a
	window.
	* src/msgcache.c (msgcache_get_from_mapi): New.
	* src/display.cpp (find_message_window): Don't use the GpgMsg function
	to to the string compare.
	* src/gpgmsg.cpp (matchesString): Removed.

	* src/msgcache.c (msgcache_set_active): Removed.
	(msgcache_get): Rewritten.
	(msgcache_put): Now uses PR_CONVERSATION_INDEX as key.  Update
	existing entries.

	* src/olflange.cpp (OnRead): Removed msgcache_set_active.
	(InstallCommands): Now uses the ConversationIndex to match the
	reply with the message.

2005-08-31  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp (DllRegisterServer): Define a CLSID and set the
	ThreadingModel.

2005-08-30  Werner Koch  <wk@g10code.com>

	Renamed project from "outlgpg" to "gpgol".

	More or less finished this major rewrite.

2005-08-26  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp, MapiGPGME.h: Removed.
	* src/display.cpp, display.h: New.

2005-08-23  Werner Koch  <wk@g10code.com>

	* src/msgcache.c, msgcache.h: New.

2005-08-22  Werner Koch  <wk@g10code.com>

	* src/olflange.cpp: Major cleanups and partly rewrites.

2005-08-18  Werner Koch  <wk@g10code.com>

	* src/gpgmsg.cpp, gpgmsg.hh: New.

2005-08-17  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (setMessageAccess): Removed as it was only used at
	one place.
	(setRTFBody): Use the above code here directly..
	(setWindow, setMessage): Removed.  We can't use that because there
	is only one instance of this class.
	(decrypt): Add args HWND and MSG.  Changed caller.
	(getBody): Changed to ..
	(get_body): .. plain function and add new arg MSG.  Changed all
	callers.
	(isHtmlMessage): Likewise changed to ..
	(is_html_message): .. plain function and add new arg MSG.
	(doCmd): Removed.

	* src/common.c (utf8_to_wchar): New.

	* src/MapiGPGME.cpp (passphraseCallback): Removed.
	(getPassphrase, clearPassphrase, storePassphrase): Removed.
	(add_html_line_endings): Rewritten.

	* src/engine-gpgme.c (op_sign_encrypt_start): Removed because it is
	not used anywhere.
	(op_sign): Renamed to ..
	(do_sign): .. this and made local.

2005-08-16  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (signAttachment): Simplified.
	* src/engine-gpgme.c (op_sign_file): Add arg TTL.
	(op_sign_file_ext): Removed.
	(op_sign_file_next): Renamed to ..
	(do_sign_file): .. this and made local.
	(do_sign_file): Updated to use new passphrase callback
	semantics.
	(op_decrypt_file): Ditto.
	(free_recipients): Need to use gpgme_key_release and not just
	free.

	* src/engine-gpgme.c (do_decrypt): Factored some code out to ..
	(update_passphrase_cache): .. new.
	(op_sign_encrypt_file): Updated to use new passphrase callback
	semantics.

	* src/MapiGPGME.cpp (getBody): Properly distinguish property types.
	(delete_buf): Removed macro.  We now use malloc for the body
	string.  Changed other places to use delete directly for clarity.
	(fail_if_null): Removed.  Replaced by direct tests and a call to
	out_of_core.
	(setDefaultKey): Now use malloc/free instead of new/delete.
	Changed at other places too.
	(getDefaultKey): Changed to return a const char *.

	* src/common.c (wchar_to_utf8): New.
	(out_of_core): Made global and call abort after displaying the
	message box.

2005-08-14  Werner Koch  <wk@g10code.com>

	* configure.ac: Build src/versioninfo.rc.

2005-08-14  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (log_debug_w32): New.
	(do_log): New arg W32ERR.  Make sure to print a trailing LF.

	* src/passphrase-dialog.c (passphrase_callback_box): Revamped.
	(free_decrypt_key): Wipe out a passphrase.  Remove superfluous
	variable clearing.
	* src/util.h (wipememory2, wipememory): New.
	(wipestring): New.
	* src/engine-gpgme.c (op_decrypt): Renamed to ..
	(do_decrypt): .. this and made local.
	(clear_error_if_cancel): Removed as we inlined the code.
	(do_decrypt): Cleaned up.
	* src/main.c (DllMain): Initialize passcaching subsystem.
	* src/passcache.c, passcache.h: New.
	* src/intern.h: Include it here.
	* src/util.h: New.

	* src/olflange.cpp (DllRegisterServer): Remove key for the old
	versions of this plugin.

	Merged olgpgmain.dll and olgpgcore.dll into outlgpg.dll.

	* src/Makefile.am: Renamed target to outlgpg. Added required files.
	* src/olflange.cpp, olflange.h: Renamed from GPGExch.cpp and
	GPGExch.h.  Removed all the MFC cruft as it is not required - it
	was only used to get hands on the hInstance of the DLL; chnaged
	that to use the glob_hinst which gets set by DllMain.
	* src/outlgpg.def: New.
	* src/olflange-def.h: New.
	* src/olflange-dlgs.cpp: Renamed from GPGOptionsDlgs.cpp.
	* src/olflange-ids.h: Renamed from ../olflange/resource.h
	* src/olflange-rsrcs.rc: Renamed from ..olflange/olgpgmaindlgs.rc and
	stripped off unneedded stuff.
	* src/olgpgcoredlgs.rc: Renamed to ..
	* src/outlgpg-rsrcs.rc: .. this and stripped of cruft.
	* src/olgpgcoredlgs.h: Renamed to ..
	* src/outlgpg-ids.h: .. this.
	* src/versioninfo.rc.in: New.

2005-08-12  Timo Schulz  <ts@g10code.com>

	* src/config-dialog.c (sotre_extension_value, load_extension_value):
	Adjust registry key.

2005-08-12  Werner Koch  <wk@g10code.com>

	* src/intern.h: Moved keycache prototypes to keycache.h.
	* src/MapiGPGME.cpp (lock_log, unlock_log): New.
	* src/engine-gpgme.c (op_init): Check GPGME version.
	* src/main.c (outlook_gpg_get_version): Removed as it is now derived
	from config.h.
	(DllMain): Initializes gpgme and mapigpgme.
	* src/MapiGPGME.cpp (initialize_mapi_gpgme): New.

	* src/config-dialog.c (store_extension_value, load_extension_value):
	Changed key to "OutlGPG".

	* src/MapiGPGME.h (class MapiGPGME): New methods versionString and
	showVersion.  Breaks ABI but it doesn't matter as we are also
	going to change the name of the project.

	* src/Makefile.am: Renamed target to olgpgcore.
	* src/resource.h: Renamed to ...
	* src/olgpgcoredlgs.h: .. and removed cruft from generator.
	* src/gpgmedlgs.rc: Renamed to ..
	* src/olgpgcoredlgs.rc: ... and removed cruft.
	* src/libgpgmedlgs.def: Renamed to ..
	* src/olgpgcore.def: .. this.

2005-08-11  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (log_debug): New.  Rewrote the whole log stuff.
	It is not anymore per instance.
	(logDebug): New version with va_list arg.

	* src/MapiGPGME.cpp (passphraseCallback): Use gpgme_error_t becuase
	C++ enforces enum types.

	* src/engine-gpgme.c (op_lookup_keys): s/id/names/.  id is a reved
	word Obj-C and it is good style not to use it in plain C code.
	(op_sign_file_next): Use gpgme_passphrase_cb_t in declaration.
	(op_decrypt_next): Ditto.

	* src/MapiGPGME.cpp (count_recipients): Renamed from countRecipients
	method, made local and changed both callers.
	(log_key_info): Changed output format.  New arg PREFIX. Changed
	callers.
	(add_html_line_endings): Renamed from addHtmlLineEndings method
	and made local.
	(logDebug): Open in text mode.  Removed all superfluous "\r" from
	callers.

2005-08-10  Werner Koch  <wk@g10code.com>

	* configure.ac: Check for and define DLLTOOL.

2005-08-09  Timo Schulz  <ts@g10code.com>

	* src/main.c (outlook_gpg_get_version): New.
	Use same version as the Outlook GPG plugin.

	* src/MapiGPGME.cpp [!__MINGW32__]: Changed sequence of include files.

2005-08-09  Werner Koch  <wk@g10code.com>

	* src/MapiGPGME.cpp (userid_from_key, keyid_from_key): New. Changed
	all calls to the deprecated gpgme_key_get_string_attr function by
	these.

	* src/MapiGPGME.h, MapiGPGME.cpp: Splitted into interace and
	implementation.
	* src/HashTable.h (class HashTable): No need to dll export anything.

2005-08-08  Werner Koch  <wk@g10code.com>

	* src/common.c (w32_shgetfolderpath): Added.
	* src/config-dialog.c (load_config_value_ext): use it here.

2005-07-21  Timo Schulz  <twoaday@g10code.com>

	* src/MapiGPGME.cpp (decrypt): Only return if no valid PGP
	data was found and the message has no attachments.
	* src/engine-gpgme.c (op_encrypt): Use --textmode to fix
	problems when the recipient OS has different line endings.
	For example Win32->Linux.

2005-07-20  Timo Schulz  <twoaday@g10code.com>

	* src/MapiGPGME.cpp (addHtmlLineEndings): New.
	(encrypt):Use it here.
	(signEncrypt): Likewise. Free memory in case of errors.
	(decrypt): Free memory in case of the verify procedure.
	Issue a warning when the text of the mail could not be
	updated.
	(isMessageEncrypted): New.
	(countAttachments): Check for null pointers.
	(clearPassphrase): Likewise.
	* src/config-dialog.c (store_config_value): Support '%val%' input.
	* src/verify-dialog.c (load_akalist): Return the number of user-ids
	which were added.
	* src/passphrase-dialog.c (load_secbox): Make sure we really start
	to add the item data at the begin.
	* src/intern.h: Fixed GCC compiler problem.

2005-07-19  Timo Schulz  <twoaday@g10code.com>

	* src/MapiGPGME.cpp (encrypt): Handle cancel.
	(encryptAttachments): If no attachments exist, close the table.
	(decryptAttachments): Likewise.
	(signAttachments): Likewise.
	(isHtmlBody): New.
	(isHtmlMessage): New.
	(setBody): Html support.
	(encrypt): Figure out if message is html and encode the right body.
	(signEncrypt): Likewise.
	(verify): Always use the non-html body for GPG input.
	(decrypt): Likewise.

	* src/engine-gpgme.c (recipient_dialog_box2): Set cancel flag.
	(op_sign_start): Handle cancel.
	(recipient_dlg_proc): Make sure there is at least one selected
	key. Disable armor checkbox.

2005-07-19  Timo Schulz  <twoaday@g10code.com>

	* src/MapiGPGME.cpp (~MapiGPGME): After releasing the
	memory, set all pointers to NULL. It seems that NT5
	bases operating systems are more pedantic with such
	issues than 9X based systems.
	(freeUnknownKeys): Likewise.
	(freeRecipients): Likewise.
	(encrypt): Outlook 2003 returns a body string which
	is not NULL but \0 with a length of 0. Handle it.
	(sign): Likewise.
	(signEncrypt): Likewise.

	* src/engine-gpgme.c (free_recipients): New.
	(op_encrypt_start): Handle cancel and free memory.


2005-07-18  Timo Schulz  <ts@g10code.com>

	* src/gpgmedlgs.rc: Native language support for German.

2005-07-14  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp: Add some missing MAPI constants.
	(passphrase_callback_box): Repair cancel button.
	(decrypt): If the user cancels the operation, do not
	alter the message text.
	* src/config-dialog.c (expand_path): New. From WinPT.
	(load_config_value): Support for REG_EXPAND_SZ.
	Suggested by Sebastian.

2005-07-13  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp (sign): Ignore empty bodies.
	(signEncrypt): Likewise. Free recipient memory.
	(encrypt): Modify code so it really works.
	(attachPublicKey): New.
	* src/engine-gpgme.c (op_export_keys): New.

2005-07-12  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp (displayError): New.
	(writeOptions): Use it here. Simplify the code.
	(signAttachments): New.
	(sign): Sign attachments. Noted by Ralf.
	(processAttachment): Support for sign-only.

2005-07-08  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp (setEnableLogging): New.
	(getEnableLogging): New.
	(logDebug): Move all logging code to this function.
	(readOptions): Automatically enable logging if the
	'LogFile' registry entry is valid.
	(prepareLogging): New.
	(readOptions): Properly handle ""-strings.
	* src/config-dialog.c (does_file_exist): Allow to have
	parameters like '--keymanager' and cut them off before
	checking the existence.
	(start_key_manager): Free memory.
	(config_dlg_proc): Initialize pointer to 'NULL'.
	(SHFree): New. Special function to handle shell memory.
	(get_folder): Free memory.
	(does_folder_exist): New.

2005-07-06  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp: s/ATTR_/ATT_.
	(saveDecryptedAttachment): Cut off the prefix.
	(clearConfig): New.
	(clearObject): New.
	(MapiGPGME): Use it here.

	Use ATT_PREFIX instead of a hardcoded string.

	* src/engine-gpgme.c
	(op_sign_file_next): New.
	(op_sign_file): Call op_sign_file2.
	(op_sign_file_ext): New.

2005-07-05  Timo Schulz  <ts@g10code.de>

	* src/MapiGPGME.cpp (readOptions, writeOptions):
	Support for the new 'auto sign attachment' flag.
	(signAttachment): New.
	(setSignAttachments): New.
	(getSignAttachments): New.
	* src/engine-gpgme.c (op_sign_file): Enable armor.

2005-07-03  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (processAttachment): Implement
	the decryption part and only use it if the 'save
	decrypted attachment' flag is set.
	(saveDecryptedAttachment): New.
	(writeOptions): Save 'decrypt attachment' flag.
	(readOptions): Load it here.
	(cleanupTempFiles): Check handle.
	(encrypt): If the message has no body skip the
	procedure.
	(op_decrypt_file): Set recipient callback.
	(decryptAttachments): We do not alter the attachment
	so there is no need to release it again.

	Replace all 'free' with 'xfree'.

2005-07-01  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (processAttachment): Check that
	the file has a valid PGP extension before we try
	to decrypt the attachment.
	(checkAttachmentExtension): Check if the file
	extension is a vliad PGP extension.


2005-06-30  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (processAttachment): Use a unique
	temp name to make a cleanup at the end easier.
	(cleanupTempFiles): Delete possible left over
	temp files.
	(~MapiGPGME): Use it here.

2005-06-22  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (processAttachment): Close attachment
	before we delete it.
	(streamOnFile): Directly use the attachment.
	(streamFromFile): Likewise.
	(closeAttachment): Renamed to..
	(releaseAttachment): ..this.

2005-06-21  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (getMessageType): Support all types.
	(streamOnFile): More straight forward now.
	(encryptAttachments): Get the attachment table first.
	(getAttachPathname): New.
	(processAttachment): Add new parameter for the position
	of the attachment.
	(streamFromFile): New.
	(generateTempname): New.
	* src/engine-gpgme.c (op_sign_encrypt_file): New.

2005-06-17  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (MapiGPGME): Initialize all attachment
	components to zero. Thanks to Sebstian for pointing this out.

2005-06-16  Timo Schulz  <ts@g10code.com>

	* src/engine-gpgme.c (check_encrypt_result): New. Check if
	the encrypt procedure returned some invalid recipients.
	(op_encrypt): Use it here.
	(op_encrypt_file): Likewise.
	(op_sign_encrypt): Likewise.
	* src/missing.h: Removed unused constants.
	* src/verify-dialog.c (load_sigbox): Handle v3 RSA keys.
	* src/passphrase-dialog.c (load_secbox): Make sure the index
	from the first loop matche the second. Which means skip
	all invalid keys also.

2005-06-13  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (writeOptions): New Option 'defaultKey'.
	(readOptions): Likewise. Force overwrite 'addDefaultKey'.

2005-06-07  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Add a
	reference to the key object so it will be still valid
	after the dialog is destroyed.
	* src/MapiGPGME.cpp (freeUnknownKeys): Do not try to free
	the context if no keys are available. Fixed a segv.
	(signEncrypt): The new code now gets a persistent pointer
	to the key.
	* src/engine-gpgme.c (op_sign_encrypt): Load the right
	dialog to request the passphrase.

2005-06-05  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (load_recipbox): Check ctx if null.
	(passphrase_callback_box): Different dialogs for sign
	and decrypt.
	(signer_dialog_box): Do not zero the context too early.
	* src/keycache.c (enum_gpg_seckeys): Also reload if ctx
	is NULL.
	* src/MapiGPGME.cpp (signEncrypt): Return if the user
	cancelled the signer selection dialog.
	* src/recipient-dialog.c (recipient_dlg_proc): Check 'Text Mode'
	button.
	* src/keycache.c (enum_gpg_keys, enum_gpg_seckeys): Fully
	reset the keycache initializing it again. Thanks to Ralf.

2005-06-04  Timo Schulz  <ts@g10code.com>

	* src/verify-dialog.c (load_sigbox): Only issue a warning
	if the key exists but is not valid.
	Get pkalgo from the signature.
	Fixed format string problem s/%d/%s.
	* src/config-dialog.c (load_config_value): Close reg handle.
	(config_dlg_proc): Show error if the values could not
	be written to the registry.

2005-06-03  Timo Schulz  <ts@g10code.com>

	* src/mapuser.c (new_usermap): New.
	(free_usermap): New.
	* src/engine-gpgme.c (op_decrypt): Return 'No_Seckey' if
	appropriate and not just 'Decrypt_Failed'.
	Set the gpgme_ctx_t object in the callback to allow
	to list the 'encrypt_to' entries.
	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Make sure
	we only warn when there is a valid callback context.
	(load_secbox): New parameter 'ctlid'. Changed all callers.
	(load_recipbox): New. Use usermap to lookup user-id's.
	(decrypt_key_ext_dlg_proc): New dialog procedure for
	the callback mode.
	* src/HashTable.cpp (HashTable_new): New. C-interface.
	(HashTable_free): Likewise.
	(HashTable_get): Likewise.
	(HashTable_put): Likewise.
	(HashTable_get_i): Likewise.
	(HashTable_size): Likewise.

2005-05-29  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Warning
	if the user cancels the signing process.
	Make the passphrase field invisible if the key is used
	in selection mode.
	(recipient_dlg_proc): Likewise.
	(signer_dialog_box): Return -1 if the user cancelled the
	dialog.
	* src/engine-gpgme.c (op_sign): Set flags to '1' to indicate
	signing process.
	* src/config-dialog.c (does_file_exist): Use appropriate
	length for xmalloc. Noted by Sebastian.

2005-05-24  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (setXHeader): New.
	(getXHeader): New.
	* src/engine-gpgme.c (op_sign_file): Implemented.

2005-05-22  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (createAttachment): New.
	(deleteAttachment): New.
	(encryptAttachments): New.
	(encrypt): Also encrypt the attachments if possible.
	(signEncrypt): Likewise.
	(setEncodingFormat): New.
	(getEncodingFormat): New.
	(readOptions, writeOptions): Store encoding format.
	(MapiGPGME): The default encoding is 'CLASSIC'.

2005-05-21  Timo Schulz  <ts@g10code.com>

	* src/HashTable.h: Export functions.
	* src/MapiGPGME.cpp (freeAttachments): New.
	(getAttachments): New.
	(openAttachment): New.
	(closeAttachment): New.
	(processAttachment): New.
	(hasAttachments): New.
	(countAttachments): New.
	(doCmdFile): New. Can handle files.
	(doCmdAttach): New. Can handle attachment action types.
	(signEncrypt): Release locusr key.
	* src/engine-gpgme.c (op_sign_file): New. Dummy.
	(op_sign_encrypt_file): New. Dummy.

2005-05-11  Timo Schulz  <ts@g10code.com>

	* src/common.c (cache_item_new): New.
	(cache_item_free): New.
	* src/engine-gpgme.c (op_decrypt_start_ext): Return an cache item and
	not just the passphrase. Changed all caller.
	* src/MapiGPGME.cpp (passphraseCallback): Support caching.
	(decrypt): Likewise.
	(storePassphrase): Likewise.
	(getPassphrase): Likewise.
	* src/HashTable.cpp: New.

2005-05-10  Timo Schulz  <ts@g10code.com>

	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Reset 'hide state'.
	Show some text when the user entered a wrong passphrase.
	* src/MapiGPGME.cpp (findMessageWindow): New.
	(setRTFBody): New.
	(decrypt): Just change the window text, not the MAPI object.
	Call verify() if this is a clearsigned message.
	(getMessageType): New.
	(getAttachmentExtension): New.
	(verify): Extract text and set it.
	* src/engine-gpgme.c (op_decrypt): Spawn verify dialog if the text
	was also signed.
	(op_decrypt_file): New.
	* src/verify-dialog.c (load_sigbox): Avoid key cache and give more
	information.
	* src/passphrase-dialog.c (decrypt_key_dlg_proc): Handle 'x' clicks.
	* src/logging.c (log_debug): Disable it for release versions.

2005-05-08  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (readOptions): Handle logfile.
	(writeOptions): Likewise.
	(storePassphrase): New.
	(clearPassphrase): New.
	(passphraseCallback): New. Needs to be static...
	(decrypt): Store passphrase if requested.
	(~MapiGPGME): Free memory.
	(streamOnFile): New.
	(getAttachMethod): New.
	(getAttachFilename): New.
	(setAttachMethod): New.
	(getAttachFilename): New.
	(getMessageHasAttachments): New.
	(getMessageFlags): New.

	* src/engine-gpgme.c (op_decrypt): New. Factoured out
	code from...
	(op_decrypt_start): ..here. Now call op_decrypt
	with standard parameters.
	(op_decrypt_next): Allow to use a pre-defined
	passphrase callback. Needed for caching.

2005-05-02  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (fail_if_null, delete_buf): New
	(doCmd): New.
	(setBody): If the body to set is empty, do nothing.
	(freeKeyArray): New.
	(readOptions): New.
	(writeOptions): New.
	Implement all getters and setters for the config code.

	* src/keycache.c: Now that we use a DLL, we create a
	shared data segment for static data.
	(load_keycache_objects): New.

2005-05-01  Timo Schulz  <ts@g10code.com>

	* src/MapiGPGME.cpp (rtfSync): New.
	* src/logging.c (log_debug): New.
	* src/common.c (xfree): New.
	* src/engine-gpgme.c (op_lookup_keys): Corrected offsets.

2005-04-29  Timo Schulz  <ts@g10code.com>

	* src/engine-gpgme.c (op_encrypt_file): New.

2005-04-27  Timo Schulz  <ts@g10code.com>

	* src/config-dialog.c (config_dialog_box): Add dialog
	item to select a GUI key manager.
	Check that the entered files really exist.
	(config_dlg_proc): Likewise.
	(does_file_exist): New.

2005-04-24  Timo Schulz  <ts@g10code.com>

	* src/main.c (DllMain): New. With a static library it was not
	possible to have a separate resource file. Thus we use a
	DLL now which contains all needed dialogs.
	* src/common.c (set_global_hinstance): New.
	* src/libgpgmedlgs.def: New.

2005-04-18  Timo Schulz  <ts@g10code.com>

	* src/recipient-dialog.c (recipient_dialog_box2): New
	way to show pre-selected keys.
	(copy_item): New paramenter for the pos.
	(find_item): Do not select the item.

	* src/gpgmedlgs.rc (IDD_ENC): New label to describe
	the listbox.

2005-04-15  Timo Schulz  <ts@g10code.com>

	* src/common.c (xmalloc, xcalloc, xstrdup): New.
	(out_of_core): New.
	* src/recipient-dialog.c (initialize_keybox): New.
	(find_item): New.
	* src/MapiGPGME.cpp (freeUnknownKeys): New.
	(signEncrypt): Show dialog to select a key if no
	default key was set.

	* src/Replace all std-c alloc functions with x equivalents.

2005-04-13  Timo Schulz  <ts@g10code.com>

	* src/engine-gpgme.c (do_init): Alloc keycache objects.
	(do_deinit): Cleanup the mess.
	(op_lookup_keys): New. Allow to find keys via the email.

	* src/GPGME.cpp (MapiGPGME): New. MAPI interface.

2005-04-07  Timo Schulz  <ts@g10code.com>

	* src/verify-dialog.c (load_akalist): New.
	(load_sigbox): Handle bad signatures.
	* src/keycache.c (enum_gpg_keys): Allow to reset the
	enum context.
	* src/config-dialog.c (get_open_file_name): Use MAX_PATH.
	(get_folder): Likewise.
	* src/recipient-dialog.c (load_rsetbox): Modify code to
	add the last keycache item.
	* src/passphrase-dialog.c (load_secbox): Likewise.

 Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 g10 Code GmbH

 This file is free software; as a special exception the author gives
 unlimited permission to copy and/or distribute it, with or without
 modifications, as long as this notice is preserved.

 This file is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
