2016-11-16  Werner Koch  <wk@gnupg.org>

	Release 1.8.0.
	* configure.ac: Set version to 1.8.0.  Set LT version C28/A17/RO.
	Set CPP LT version to C9/A3/R0.  Set Qt LT version to C8/A1/R0.

	core: Do not leak the override session key to ps(1).
	* src/engine-gpg.c (struct engine_gpg): New field
	override_session_key.
	(gpg_release): Free that field.
	(gpg_decrypt): With gnupg 2.1.16 use --override-session-key-fd.

	* tests/run-decrypt.c (main): Fix setting over the override key.

2016-11-16  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	doc,tests: Require use of ctx_flag before use of session_key.
	* doc/gpgme.texi: Document requirements of verifying that it is OK to
	use session_key.
	* tests/run-decrypt.c: Ensure that we fail if we're unable to access
	the session key, so that we do not violate the guidance above.


	Changed the description

	 -@code{gpgme_set_ctx_flag (ctx, "export-session-key")} returns
	 -@code{GPG_ERR_NO_ERROR} or @code{gpgme_get_ctx_flag (ctx,
	 -"export-session-key")} returns @code{"1"}.
	 +@code{gpgme_set_ctx_flag (ctx, "export-session-key")} returns success
	 +or @code{gpgme_get_ctx_flag (ctx, "export-session-key")} returns true
	 +(non-empty string).

	to get gpgme_get_ctx_flag for boolean values in sync with its own
	description.

	Note that I don't agree with the above suggestion but it does not
	really harm to have it in the man page.

2016-11-15  Andre Heinecke  <aheinecke@intevation.de>

	qt, cpp: Add cmake config files for w32.
	* lang/cpp/src/GpgmeppConfig-w32.cmake.in.in
	lang/qt/src/QGpgmeConfig-w32.cmake.in.in: New.
	* lang/cpp/src/GpgmeppConfig.cmake.in.in,
	lang/qt/src/QGpgmeConfig.cmake.in.in: Remove libsuffix handling.
	* lang/cpp/src/Makefile.am,
	lang/qt/src/Makefile.am: Create / install w32 config files.
	* configure.ac: Configure them.

	qt: Use new style connect in th..mixin.
	* lang/qt/src/threadedjobmixin.h
	(ThreadedJobMixin::lateInitialization): Use new style connect.

2016-11-15  Werner Koch  <wk@gnupg.org>

	core: Implement context flag "override-session-key".
	* src/gpgme.c (gpgme_set_ctx_flag): Add flags "export-session-key" and
	"override-session-key".
	(gpgme_get_ctx_flag): Ditto.
	(gpgme_set_export_session_keys): Remove.
	(gpgme_get_export_session_keys): Remove.
	* src/gpgme.def, src/libgpgme.vers: Remove them.
	* src/context.h (struct gpgme_context): Add field
	override_session_key.
	* src/decrypt-verify.c (decrypt_verify_start): Pass
	override_session_key value to the engine.
	* src/decrypt.c (decrypt_start): Ditto.
	* src/engine.c (_gpgme_engine_op_decrypt): Ditto.
	(_gpgme_engine_op_decrypt_verify): Ditto.
	* src/engine-backend.h (struct engine_ops): Extend DECRYPT and
	DECRYPT_VERIFY_START with override_session_key.
	* src/engine-uiserver.c (_uiserver_decrypt): Add stub arg
	override_session_key.
	(uiserver_decrypt): Ditto.
	(uiserver_decrypt_verify): Ditto.
	* src/engine-gpgsm.c (gpgsm_decrypt): Ditto.
	* src/engine-gpg.c (gpg_decrypt): Add arg override_session_key and set
	corresponding gpg option.

	* tests/run-decrypt.c (print_result): Print the session key if
	available.
	(main): Add options --export-session-key and --override-session-key.

	core: Add public function gpgme_get_ctx_flag.
	* src/gpgme.h.in (gpgme_get_ctx_flag): New.
	* src/gpgme.c (gpgme_set_ctx_flag): Move down the file and add a trace
	statement.
	(gpgme_get_ctx_flag): New.
	* src/gpgme.def, src/libgpgme.vers: Add new interface.

2016-11-15  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	core: Enable extraction of session keys.
	* src/gpgme.c (gpgme_set_export_session_keys): New function.
	(gpgme_get_export_session_keys): New function.
	* src/gpgme.h.in (struct _gpgme_op_decrypt_result): Add session_key
	member.
	(gpgme_{set,get}_export_session_keys): Declare new functions.
	* src/libgpgme.vers, src/gpgme.def: Export new functions in shared
	object.
	* src/engine.h: (_gpgme_engine_op_decrypt) Add export_session_key
	parameter.
	(_gpgme_engine_op_decrypt_verify): Add export_session_key parameter.
	* src/engine-backend.h: (struct engine_ops): Change function
	pointer declarations to match.
	* src/context.h (struct gpgme_context): Add export_session_keys member.
	* src/decrypt.c (release_op_data): Free result.session_key.
	(_gpgme_decrypt_status_handler): Store a copy of the exported session
	key.
	(decrypt_start): Pass export_session_keys from the context.
	* src/decrypt-verify.c (decrypt_verify_start): Pass
	export_session_keys from context.
	* src/engine.c (_gpgme_engine_op_decrypt): Pass through
	export_session_key flag.
	(_gpgme_engine_op_decrypt_verify): Pass through export_session_key
	flag.
	* src/engine-gpg.c (gpg_decrypt): If export_session_key is set, add
	--export-session-key to argument list.
	* src/engine-gpgsm.c (gpgsm_decrypt): Ignore export_session_key for
	now, since gpgsm offers no such mechanism.
	* src/engine-uiserver.c (_uiserver_decrypt): If export_session_key is
	set, add --export-session-key flag to cmd.
	* doc/gpgme.texi: Document new functions and session_key member of
	decrypt_result_t.
	* doc/uiserver.texi: Add --export-session-key flag to DECRYPT command.

2016-11-14  Andre Heinecke  <aheinecke@intevation.de>

	qt: Add API to get the context for a Job.
	* lang/qt/src/job.cpp,
	lang/qt/src/job.h (Job::context): New.
	* lang/qt/src/threadedjobmixin.cpp
	(ThreadedJobMixin::~ThreadedJobMixin): New. Unregister context.
	(ThreadedJobMixin::lateInitialization): Register context.
	* NEWS: Update for cpp and qt.

	cpp: Add get / set Sender API.
	* cpp/src/context.cpp, cpp/src/context.h (Context::setSender),
	(Context::getSender): Add simple wrappers.

	qt, cpp: Enable dll build for windows.
	* lang/cpp/src/Makefile.am,
	lang/qt/src/Makefile.am: Add -no-undefined to LDFLAGS.

	w32: Fix build of w32-glib.
	* src/Makefile.am (main_sources): Remove system_components_not_extra.
	(libgpgme_la_SOURCES): Add system_components_not_extra.
	(libgpgme_glib_la_SOURCES): Remove duplicated ath files.

2016-11-11  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	doc: Correct deftypefun for gpgme_op_decrypt_verify_start.
	* doc/gpgme.texi: Documentationabout gpgme_op_decrypt_verify_start was
	stored under the name gpgme_op_decrypt_verify instead.

	doc: Correct text about gpgme_cancel_async.
	* doc/gpgme.texi: Documentation about gpgme_cancel_async should refer
	to the correct name.

	core: Non-zero values should set _armor, _textmode, and _online.
	* src/gpgme.c (gpgme_set_armor, gpgme_set_textmode,
	gpgme_set_offline): Ensure that non-zero values actually set the
	appropriate internal bit.

2016-11-11  Alon Bar-Lev  <alon.barlev@gmail.com>

	tests,python: Atomic directory creation.
	* lang/python/tests/Makefile.am:  Use MIDIR_P.
	* tests/gpg/Makefile.am: Ditto.
	* tests/gpgsm/Makefile.am: Ditto.

2016-11-10  Werner Koch  <wk@gnupg.org>

	core: Use better error code when using select with a too high fd.
	* src/posix-io.c (_gpgme_io_select): Return EMFILE instead of EBADF.

2016-11-10  Andre Heinecke  <aheinecke@intevation.de>

	tests: Reduce thread count in new thread tests.
	* gpg/t-thread-keylist-verify.c,
	gpg/t-thread-keylist.c: Reduce threads to 100

2016-11-10  Werner Koch  <wk@gnupg.org>

	core: Detect unreadable keyrings.
	* src/keylist.c (op_data_t): Add field keydb_search_err.
	(keylist_status_handler): Parse STATUS_ERROR into that var.
	(gpgme_op_keylist_next): Use that err instead of GPG_ERR_EOF.

2016-11-10  Andre Heinecke  <aheinecke@intevation.de>

	tests: Fix additional memleaks in thread tests.
	* tests/gpg/t-thread-keylist-verify.c (start_verify): Release
	data.
	(start_keylist): Unref keys.
	* tests/gpg/t-thread-keylist.c (start_keylist): Unref keys.

	tests: Improve new thread tests.
	* tests/gpg/t-thread-keylist-verify.c (start_keylist): Mark
	arg as unused. Release context.
	(start_verify): Ditto.
	(main): Mark args as unused.
	* tests/gpg/t-thread-keylist.c (start_keylist):  Mark
	arg as unused. Release context.
	(main): Mark args as unused.

	core: Use gpgrt locking for thread safeness.
	* configure.ac: Require libgpg-error 1.17. No longer
	check for pthread.
	* doc/gpgme.texi: Document removed neccessity for thread
	safe gpgme flavours.
	* src/sema.h (DEFINE_GLOBAL_LOCK),
	(DEFINE_STATIC_LOCK, INIT_LOCK, DECLARE_LOCK)
	(DESTROY_LOCK, LOCK, UNLOCK): Change to gpgrt equivalents.
	* src/posix-sema.c, src/w32-sema.c: Removed.
	* src/Makefile.am: Remove libpthread and
	Update accordingly.
	* src/ath.c, src/ath.h (ath_mutex_init)
	(ath_mutex_destroy, ath_mutex_lock, ath_mutex_unlock): Removed.
	* src/ath.h (ATH_MUTEX_INITIALIZER): Removed.
	* src/version.c (do_subsystem_inits): sema_subsystem_init is
	no longer required.
	* tests/gpg/Makefile.am: Add new threading tests.
	(t_thread1_LDADD, t_cancel_LDADD):
	Use just gpgme.
	* tests/gpg/t-thread-keylist-verify.c,
	tests/gpg/t-thread-keylist.c: New.
	* src/gpgme-config.in: Use -lgpgme for thread-model pthread.

2016-11-09  Justus Winter  <justus@g10code.com>

	python: Require at least GPGME 1.7 for out-of-tree builds.
	* lang/python/setup.py.in: Bump required version to 1.7.

2016-11-09  Werner Koch  <wk@gnupg.org>

	w32: Better protect the IO-system's fd_table.
	* src/w32-io.c (fd_table_lock): New.
	(new_fd): Lock allocation of a new slot.
	(release_fd): Lock deallocation of a slot.

2016-11-04  Andre Heinecke  <aheinecke@intevation.de>

	cpp: Add API for swdb queries.
	* lang/cpp/src/swdbresult.cpp,
	 lang/cpp/src/swdbresult.h (SwdbResult): New.
	* lang/cpp/src/Makefile.am: Update accordingly.

	cpp: Add more EngineInfo::Version ctors.
	* lang/cpp/src/engineinfo.h
	(EngineInfo::Version::Version(const char*)),
	(EngineInfo::Version::Version()): New.

	cpp: Don't include gpgme.h in tofuinfo header.
	* lang/cpp/src/tofuinfo.h: Don't include gpgme.h

	cpp: Extend gpgmefw for tofuinfo and swdb query.
	* lang/cpp/src/gpgmefw.h (gpgme_tofu_info_t)
	(gpgme_query_swdb_result_t): New forwards.

2016-11-04  Werner Koch  <wk@gnupg.org>

	w32: Fix locating gpgconf on 64 bit systems.
	* src/w32-util.c (find_program_at_standard_place): Use access to check
	whether the binary is at CSIDL_PROGRAM_FILES before testing
	CSIDL_PROGRAM_FILESX86.

2016-11-03  Werner Koch  <wk@gnupg.org>

	core: Add gpgme_op_query_swdb and helper.
	* src/gpgme.h.in (gpgme_query_swdb_result_t): New.
	(gpgme_op_query_swdb): New.
	(gpgme_op_query_swdb_result): New.
	* src/libgpgme.vers, src/gpgme.def: Add the two new functions.
	* src/queryswdb.c: New.
	* src/Makefile.am (main_sources): Add new file.
	* src/context.h (OPDATA_QUERY_SWDB): New.
	* src/engine-backend.h (struct engine_ops): Add field 'query_swdb'.
	Adjust all initializer.
	* src/engine.c (_gpgme_engine_op_query_swdb): New.
	* src/engine-gpgconf.c (parse_swdb_line): New.
	(gpgconf_query_swdb): New.
	(_gpgme_engine_ops_gpgconf): Register that function.

	* src/util.h (GPG_ERR_TOO_OLD): Define for older libgpg-error.
	(GPG_ERR_ENGINE_TOO_OLD): Ditto.

	* tests/run-swdb.c: New.
	* tests/Makefile.am (noinst_PROGRAMS): Add new debug tool.

2016-11-03  Andre Heinecke  <aheinecke@intevation.de>

	qt: Change license of export / version header.
	* lang/qt/src/qgpgme_export.h,
	lang/qt/src/qgpgme_version.h: Change license to GPLv2+

2016-11-03  Werner Koch  <wk@gnupg.org>

	core: Make use of --homedir in gpgconf.
	* src/engine-gpgconf.c (struct engine_gpgconf): Add field 'version'.
	(have_gpgconf_version): New.
	(gpgconf_release): Free VERSION.
	(gpgconf_new): Set VERSION.
	(gpgconf_read, gpgconf_write): Use --homedir with recent gnupg.

2016-11-02  Andras Mantia  <andras@kdab.com>

	qt: Fix build with g++ 4.8.x.
	* lang/qt/src/defaultkeygenerationjob.cpp
	(DefaultKeyGenerationJob::start): Explicitly connect pointer
	in the QPointer.

2016-11-02  Andre Heinecke  <aheinecke@intevation.de>

	qt, cpp: Fix versioning in cmake config and header.
	* configure.ac (VERSION_MAJOR, VERSION_MINOR, VERSION_MICRO): New
	subst variables for the version header.
	* lang/cpp/src/GpgmeppConfigVersion.cmake.in,
	lang/cpp/src/gpgmepp_version.h.in,
	lang/qt/src/QGpgmeConfigVersion.cmake.in,
	lang/qt/src/qgpgme_version.h.in: Use new variables.

	qt: Install cmake config into qgpgme subdir.
	* lang/qt/src/Makefile.am: Install cmake config file in qgpgme subdir.

	qt: Require gpgmepp from cmake config script.
	* lang/qt/src/QGpgmeConfig.cmake.in.in: Require cpp.

	qt, cpp: Add all generated files to cleanfiles.
	* cpp/src/Makefile.am (CLEANFILES),
	qt/src/Makefile.am (CLEANFILES): Add all generated files
	to cleanfiles.

2016-11-01  Andre Heinecke  <aheinecke@intevation.de>

	qt: Add Distinguished Name parser from libkleo.
	* lang/qt/src/dn.cpp (DN, DN::Attribute): New public API.
	* lang/qt/src/dn.h: New.
	* lang/qt/src/Makefile.am: Update accordingly.

	qt, cpp: Install version headers in subdirs.
	* lang/cpp/src/Makefile.am,
	lang/qt/src/Makefile.am: Install version headers in include
	subdirs.

2016-10-31  Justus Winter  <justus@g10code.com>

	python: Use vanity modules for constants in tests and examples.
	* lang/python/gpg/constants/sig/notation.py: New file.
	* lang/python/gpg/constants/sig/__init__.py: Import new module.

	* lang/python/examples/assuan.py: Use more specific module for
	constants, e.g. 'protocol.ASSUAN' instead of 'PROTOCOL_ASSUAN'.
	* lang/python/examples/testCMSgetkey.py: Likewise.
	* lang/python/tests/initial.py: Likewise.
	* lang/python/tests/t-callbacks.py: Likewise.
	* lang/python/tests/t-decrypt-verify.py: Likewise.
	* lang/python/tests/t-decrypt.py: Likewise.
	* lang/python/tests/t-edit.py: Likewise.
	* lang/python/tests/t-encrypt-large.py: Likewise.
	* lang/python/tests/t-encrypt-sign.py: Likewise.
	* lang/python/tests/t-encrypt-sym.py: Likewise.
	* lang/python/tests/t-encrypt.py: Likewise.
	* lang/python/tests/t-export.py: Likewise.
	* lang/python/tests/t-file-name.py: Likewise.
	* lang/python/tests/t-idiomatic.py: Likewise.
	* lang/python/tests/t-import.py: Likewise.
	* lang/python/tests/t-keylist.py: Likewise.
	* lang/python/tests/t-protocol-assuan.py: Likewise.
	* lang/python/tests/t-sig-notation.py: Likewise.
	* lang/python/tests/t-sign.py: Likewise.
	* lang/python/tests/t-signers.py: Likewise.
	* lang/python/tests/t-trustlist.py: Likewise.
	* lang/python/tests/t-verify.py: Likewise.
	* lang/python/tests/t-wait.py: Likewise.

	python: Import the topmost module in tests and examples.
	* examples/verifydetails.py: Only import the topmost module 'gpg' and
	update the code accordingly.
	* tests/support.py: Likewise.
	* tests/t-callbacks.py: Likewise.
	* tests/t-data.py: Likewise.
	* tests/t-decrypt-verify.py: Likewise.
	* tests/t-decrypt.py: Likewise.
	* tests/t-edit.py: Likewise.
	* tests/t-encrypt-large.py: Likewise.
	* tests/t-encrypt-sign.py: Likewise.
	* tests/t-encrypt-sym.py: Likewise.
	* tests/t-encrypt.py: Likewise.
	* tests/t-export.py: Likewise.
	* tests/t-file-name.py: Likewise.
	* tests/t-import.py: Likewise.
	* tests/t-keylist.py: Likewise.
	* tests/t-sig-notation.py: Likewise.
	* tests/t-sign.py: Likewise.
	* tests/t-signers.py: Likewise.
	* tests/t-trustlist.py: Likewise.
	* tests/t-verify.py: Likewise.
	* tests/t-wait.py: Likewise.
	* tests/t-wrapper.py: Likewise.

	python: Improve constants module.
	* lang/python/gpg/constants/__init__.py: Import all modules below
	'constants/'.  Interface hygiene: delete 'util'.
	* lang/python/gpg/constants/data/encoding.py: Delete 'util'.
	* lang/python/gpg/constants/event.py: Likewise.
	* lang/python/gpg/constants/import.py: Likewise.
	* lang/python/gpg/constants/keylist/mode.py: Likewise.
	* lang/python/gpg/constants/md.py: Likewise.
	* lang/python/gpg/constants/pk.py: Likewise.
	* lang/python/gpg/constants/protocol.py: Likewise.
	* lang/python/gpg/constants/sig/mode.py: Likewise.
	* lang/python/gpg/constants/sigsum.py: Likewise.
	* lang/python/gpg/constants/validity.py: Likewise.
	* lang/python/gpg/errors.py: Likewise.

2016-10-31  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	python: Rename Python module from PyME to gpg.
	This follows weeks of discussion on the gnupg-devel mailing list.
	Hopefully it will make it easier for people using Python to use GnuPG
	in the future.

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

	core: New API functions gpgme_set_sender, gpgme_get_sender.
	* src/context.h (struct gpgme_context): Add field 'sender'.
	* src/gpgme.c: Include mbox-util.h.
	(gpgme_release): Free SENDER.
	(gpgme_set_sender): New.
	(gpgme_get_sender): New.
	* src/gpgme.def, src/libgpgme.vers: Add new functions.

	* src/engine-gpg.c (append_args_from_sender): New.
	(gpg_encrypt_sign, gpg_sign): Call append_args_from_sender.
	(gpg_verify): Add arg CTX.  Call append_args_from_sender/
	* src/engine-gpgsm.c (gpgsm_verify): Add dummy arg CTX.
	* src/engine-uiserver.c (uiserver_verify): Ditto.
	* src/engine.c (_gpgme_engine_op_verify): Add arg CTX.
	* src/verify.c (verify_start): Pass CTX to engine function.

	* tests/gpg/t-verify.c (main): Add some checks for new functions.
	* tests/run-sign.c (main): Add option --sender.
	* tests/run-verify.c (main): Ditto.

2016-10-19  Andre Heinecke  <aheinecke@intevation.de>

	qt: Improve WKSPublishJob apidoc.
	* lang/qt/src/wkspublishjob.h: Improve doc.

2016-10-18  Werner Koch  <wk@gnupg.org>

	Release 1.7.1.
	* configure.ac: Set LT version to C27/A16/R0.  Note that the LT
	versions for cpp and Qt have already been updated.

2016-10-14  Werner Koch  <wk@gnupg.org>

	tests: Make t-cancel more portable.
	* tests/gpg/t-cancel.c: Include sys/time.h and protect sys/select.h.

	python: Call ln(1) in a portable way.
	* lang/python/Makefile.am: Specify target dir for ln.

2016-10-14  Andre Heinecke  <aheinecke@intevation.de>

	cpp: Fix init of string from null.
	* lang/cpp/src/key.cpp (UserID::addrSpecFromString): Check return
	value before creating the string.

2016-10-13  Justus Winter  <justus@g10code.com>

	python: Make 'get_key' more idiomatic.
	* lang/python/pyme/core.py (Context.get_key): Raise errors.KeyNotFound
	if the key is not found.  This error is both a KeyError for idiomatic
	error handling as well as a GPGMEError so we don't break existing
	code.
	* lang/python/pyme/errors.py (KeyNotFound): New class.
	* lang/python/tests/support.py (no_such_key): New variable.
	* lang/python/tests/t-keylist.py: Test the new behavior.

	python: Return public keys by default.
	* lang/python/pyme/core.py (Core.get_key): Return public keys by
	default, improve docstring.
	* lang/python/examples/testCMSgetkey.py: Update example.
	* lang/python/examples/verifydetails.py: Likewise.

	GnuPG-bug-id: 2751

	python: Fix example.
	* lang/python/examples/inter-edit.py: Fix example.

	Fixes-commit: a458e7fe

2016-10-13  Andre Heinecke  <aheinecke@intevation.de>

	cpp: Fix version number.
	* configure.ac (LIBGPGMEPP_LT_CURRENT): Bump.

	qt, cpp: Fix permissions of Config files.
	* lang/cpp/src/Makefile.am,
	lang/qt/src/Makefile.am: Do not install config files as executable.

	qt: Install SpecialJob.
	* lang/qt/src/Makefile.am: Install SpecialJob
	* NEWS: mention it.

	qt, cpp: Fix expected targets in Config files.
	* lang/cpp/src/GpgmeppConfig.cmake.in.in,
	lang/qt/src/QGpgmeConfig.cmake.in.in: Remove KF5 variants.

2016-10-11  Daniel Vrátil  <dvratil@kde.org>

	qt: Add missing implementation of MultiDeleteJob.
	* lang/qt/src/multideletejob.h: Fix include, cryptobackend.h is now
	called protocol.h
	* lang/qt/src/multideletejob.cpp: New file.
	* lang/qt/src/Makefile.am: Add multideletejob.cpp.

	qt: Install abstractimportjob.h.
	* lang/cpp/src/Makefile.am: Install abstractimportjob.h since it's
	included from importjob.h

2016-10-11  Andre Heinecke  <aheinecke@intevation.de>

	cpp: Add API for gpgme_addrspec_from_uid.
	* lang/cpp/src/key.cpp (UserID::addrSpecFromString): New static
	function to expose addrspec from uid.
	(UserID::addrSpec): New. Get addrSpec from Userid.
	* NEWS: Update accordingly.

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

	Add NEWS for cpp and qt, bump cpp version.
	* NEWS: Add entries for cpp and qt changes.
	* configure.ac: Bump cpp version because of added API.

	Add convenience function to get key from sig.
	* lang/cpp/src/verificationresult.cpp (Signature::key(bool, bool)):
	New. Can be used to search / update the key associcated with this
	signature.

	cpp: Return null key if the signature had no key.
	* lang/cpp/src/verificationresult.cpp (Private): Add null key
	to list when there is no key associated with the signature.

	qt: Add simple verify test.
	* lang/qt/tests/t-verify.cpp: New. Small test if a signature
	returns a key with fingerprint.
	* lang/qt/tests/Makefile.am: Add new test.

	core: Fix w32 crash in find_program_in_dir.
	* src/w32-util.c (find_program_in_dir): Fix call to _gpgme_strconcat.

2016-10-08  Werner Koch  <wk@gnupg.org>

	core: New helper function gpgme_addrspec_from_uid.
	* src/gpgme.h.in: Add gpgme_addrspec_from_uid.
	* src/gpgme.def, src/libgpgme.vers: Ditto.
	* src/mbox-util.c (gpgme_addrspec_from_uid): New.

2016-10-06  Justus Winter  <justus@g10code.com>

	Add missing includes.
	* lang/cpp/src/key.cpp: Include <strings.h> for 'strcasecmp'.
	* tests/gpg/t-cancel.c: Include <sys/select.h> for 'fd_set' and
	friends.

2016-10-05  Andre Heinecke  <aheinecke@intevation.de>

	cpp: Bump Revision.
	* configure.ac (LIBGPGMEPP_LT_REVISION): Bump revision.

	qt: Fix spelling error in WKSPublishJob.
	* src/qgpgmewkspublishjob.cpp,
	src/qgpgmewkspublishjob.h,
	src/wkspublishjob.h,
	tests/t-wkspublish.cpp: Fix spelling of received.
	* src/configure.ac (LIBQGPGME_LT_CURRENT): Bump
	accordingly.

	qt: Disable tests that require a password for 2.0.
	* lang/qt/tests/t-encrypt.cpp: Disable tests that require
	a password for 2.0.

	Add warning flags for c++ compiler, too.
	* configure.ac (CXXFLAGS): Add Wall and Wextra.

	qt: Fix unused variable warnings.
	* qt/src/qgpgmenewcryptoconfig.cpp,
	qt/src/threadedjobmixin.h,
	qt/tests/t-encrypt.cpp,
	qt/tests/t-support.h,
	qt/tests/t-wkspublish.cpp: Mark additional variables as unused.

	cpp: Add support for URL Data encodings.
	* lang/cpp/src/data.h (Data::Encoding): Extend enum.
	* lang/cpp/src/data.cpp (Data::encoding),
	Data::setEncoding): Support new values.

	cpp: Fix gcc diagnostic push / pop.
	* lang/cpp/src/context.cpp: Fix pragmas.

	qt: Disable t-wkspublish test.
	* lang/qt/tests/Makefile.am (TESTS): Remove t-wkspublish.

2016-09-30  Alon Bar-Lev  <alon.barlev@gmail.com>

	python: Link 'data.h' and 'config.h' into the builddir.
	* lang/python/Makefile.am: Link to the files.
	* lang/python/gpgme.i: Update path.
	* lang/python/setup.py.in: Do not add the top builddir to the include
	path.

	python: Add 'prepare' target.
	* lang/python/Makefile.am: Add 'prepare' target.

2016-09-29  Andre Heinecke  <aheinecke@intevation.de>

	cpp, qt: Handle modified includedir installation.
	* lang/cpp/src/Makefile.am,
	lang/qt/src/Makefile.am: Replace resolved_includedir.
	* lang/cpp/src/GpgmeppConfig.cmake.in.in,
	lang/qt/src/QGpgmeConfig.cmake.in.in: Use resolved_includedir
	instead of relying on a common installation prefix.

2016-09-27  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	Clarify licensing.
	* src/b64dec.c, src/mbox-util.c, src/mbox-util.h: These three files
	  are explicitly licensed under LGPL, but their comments suggest that
	  details about the warranty can be found in the GPL.  Adjust comments
	  to refer to the correct license.

2016-09-27  Justus Winter  <justus@g10code.com>

	tests: Fix check for gpg versions not reporting the critical flag.
	* lang/python/tests/t-sig-notation.py: Also blacklist 2.0.x.
	* tests/gpg/t-sig-notation.c: Likewise.

2016-09-26  Justus Winter  <justus@g10code.com>

	python: Correctly translate to size_t.
	* lang/python/gpgme.i: Correctly translate Python number to size_t.

	python: Correctly translate off_t.
	* lang/python/gpgme.i: Improve int/long translations, correctly handle
	off_t with large file support.

	python: Include 'config.h'.
	* lang/python/Makefile.am: Pass 'top_builddir' to 'setup.py'.
	* lang/python/gpgme.i: Include 'config.h'.
	* lang/python/helpers.c: Likewise.
	* lang/python/helpers.h: Likewise.
	* lang/python/setup.py.in: Make sure that 'config.h' can be found.

2016-09-23  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	Fix spelling.
	 * lang/cpp/src/context.h, lang/qt/src/protocol.h,
	   lang/qt/src/wkspublishjob.h, src/data-identify.c, src/engine-gpg.c:
	   minor spelling cleanup.

	move some file encodings to UTF-8.
	* THANKS, doc/ChangeLog-2011, tests/ChangeLog-2011,
	  tests/gpg/geheim.txt: convert from iso 8859-1 to utf-8.
	* lang/qt/src/dataprovider.cpp, lang/qt/src/qgpgmerefreshkeysjob.cpp,
	  lang/qt/src/qgpgmesecretkeyexportjob.cpp: replace U+FFFD REPLACEMENT
	  CHARACTER with proper U+00E4 LATIN SMALL LETTER A WITH DIAERESIS.

2016-09-23  Andre Heinecke  <aheinecke@intevation.de>

	tests: Check data after decryption.
	* tests/gpgsm/t-decrypt.c (main): Check data matches expected.
	Only print result if it does not.

	cpp, qt: Include config.h.
	lang/cpp/src/callbacks.cpp,
	lang/cpp/src/configuration.cpp,
	lang/cpp/src/context.cpp,
	lang/cpp/src/context_glib.cpp,
	lang/cpp/src/context_qt.cpp,
	lang/cpp/src/context_vanilla.cpp,
	lang/cpp/src/data.cpp,
	lang/cpp/src/decryptionresult.cpp,
	lang/cpp/src/defaultassuantransaction.cpp,
	lang/cpp/src/editinteractor.cpp,
	lang/cpp/src/encryptionresult.cpp,
	lang/cpp/src/engineinfo.cpp,
	lang/cpp/src/eventloopinteractor.cpp,
	lang/cpp/src/exception.cpp,
	lang/cpp/src/gpgadduserideditinteractor.cpp,
	lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
	lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
	lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
	lang/cpp/src/gpgsignkeyeditinteractor.cpp,
	lang/cpp/src/importresult.cpp,
	lang/cpp/src/key.cpp,
	lang/cpp/src/keygenerationresult.cpp,
	lang/cpp/src/keylistresult.cpp,
	lang/cpp/src/scdgetinfoassuantransaction.cpp,
	lang/cpp/src/signingresult.cpp,
	lang/cpp/src/tofuinfo.cpp,
	lang/cpp/src/trustitem.cpp,
	lang/cpp/src/verificationresult.cpp,
	lang/cpp/src/vfsmountresult.cpp,
	lang/qt/src/dataprovider.cpp,
	lang/qt/src/defaultkeygenerationjob.cpp,
	lang/qt/src/gpgme_backend_debug.cpp,
	lang/qt/src/job.cpp,
	lang/qt/src/qgpgmeadduseridjob.cpp,
	lang/qt/src/qgpgmebackend.cpp,
	lang/qt/src/qgpgmechangeexpiryjob.cpp,
	lang/qt/src/qgpgmechangeownertrustjob.cpp,
	lang/qt/src/qgpgmechangepasswdjob.cpp,
	lang/qt/src/qgpgmedecryptjob.cpp,
	lang/qt/src/qgpgmedecryptverifyjob.cpp,
	lang/qt/src/qgpgmedeletejob.cpp,
	lang/qt/src/qgpgmedownloadjob.cpp,
	lang/qt/src/qgpgmeencryptjob.cpp,
	lang/qt/src/qgpgmeexportjob.cpp,
	lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
	lang/qt/src/qgpgmeimportjob.cpp,
	lang/qt/src/qgpgmekeyformailboxjob.cpp,
	lang/qt/src/qgpgmekeygenerationjob.cpp,
	lang/qt/src/qgpgmekeylistjob.cpp,
	lang/qt/src/qgpgmelistallkeysjob.cpp,
	lang/qt/src/qgpgmenewcryptoconfig.cpp,
	lang/qt/src/qgpgmerefreshkeysjob.cpp,
	lang/qt/src/qgpgmesecretkeyexportjob.cpp,
	lang/qt/src/qgpgmesignencryptjob.cpp,
	lang/qt/src/qgpgmesignjob.cpp,
	lang/qt/src/qgpgmesignkeyjob.cpp,
	lang/qt/src/qgpgmetofupolicyjob.cpp,
	lang/qt/src/qgpgmeverifydetachedjob.cpp,
	lang/qt/src/qgpgmeverifyopaquejob.cpp,
	lang/qt/src/qgpgmewkspublishjob.cpp,
	lang/qt/src/threadedjobmixin.cpp,
	lang/qt/tests/run-keyformailboxjob.cpp,
	lang/qt/tests/t-encrypt.cpp,
	lang/qt/tests/t-keylist.cpp,
	lang/qt/tests/t-keylocate.cpp,
	lang/qt/tests/t-ownertrust.cpp,
	lang/qt/tests/t-support.cpp,
	lang/qt/tests/t-tofuinfo.cpp,
	lang/qt/tests/t-wkspublish.cpp: Include config.h

2016-09-22  Werner Koch  <wk@gnupg.org>

	w32: Silence some warnings about unused parameters.
	* src/assuan-support.c (my_recvmsg, my_sendmsg, my_waitpid)
	(my_socketpair) [W32]: Mark unused parameters.

	core: Fix error checking in _gpgme_mkstemp.
	* src/w32-util.c (_gpgme_mkstemp): Fix error checking.
	(dlopen): Mark FLAGS as unused.

	core: New helper function _gpgme_strconcat.
	* src/conversion.c: Include stdarg.h.
	(do_strconcat): New.
	(_gpgme_strconcat): New.
	* src/util.h: Provide fallback for GPGRT_ATTR_SENTINEL.
	(_gpgme_strconcat): New with sentinel.

	* src/w32-util.c (find_program_in_dir): Replace malloc and stpcpy by
	_gpgme_strconcat.
	(find_program_at_standard_place): Ditto.
	(_gpgme_set_default_gpg_name): Ditto.
	(_gpgme_set_default_gpgconf_name): Ditto.
	(_gpgme_mkstemp): Ditto.
	(_gpgme_set_override_inst_dir): Repalce malloc and strcpy by strdup.

2016-09-22  Daiki Ueno  <ueno@gnu.org>

	tests: Add test for cancellation.
	* tests/gpg/t-cancel.c: New file.
	* tests/gpg/Makefile.am (tests_skipped): New variable, default to
	t-genkey and t-cancel.
	(noinst_PROGRAMS): Add $(tests_skipped).
	* tests/gpg/.gitignore: Add t-cancel.

	gpg: Add option --exit-on-status-write-error.
	* src/engine-gpg.c (gpg_new): Add --exit-on-status-write-error if the
	engine version is latest enough to expect progress output from gpg.

	tests: Fix select usage in t-eventloop.
	* tests/gpg/t-eventloop.c (do_select): Supply timeout value to select.

	doc: Fix minor errors in I/O callback example.
	* gpgme.texi (I/O Callback Example): Fix typos, add timeout to select,
	and initialize mutex as recursive.

2016-09-21  Andreas Stieger  <astieger@suse.com>

	cpp: Avoid missing returns in non-void functions.
	* lang/cpp/src/context.cpp
	  (Context::signaturePolicyURL): return nullptr on default
	  (to_tofu_policy_t): add default case for unknown
	* lang/cpp/src/key.cpp
	  (Key::primaryFingerprint): return nullptr on default
	* lang/cpp/src/tofuinfo.cpp
	  (GpgME::TofuInfo::policy): add default case for unknown

2016-09-21  Werner Koch  <wk@gnupg.org>

	Release 1.7.0.
	* configure.ac: Bump LT vesion to C26/A15/R0.

	python: Create install dir.
	* lang/python/Makefile.am (install-exec-local): Create dir.

2016-09-20  Werner Koch  <wk@gnupg.org>

	tests: Make "make -j distcheck" work in Python.
	* lang/python/Makefile.am (SUBDIRS): Make current dir fist.
	* lang/python/tests/Makefile.am (xcheck): Depend on pubring-stamp.
	(CLEANFILES): Remove private-keys-v1.d/gpg-sample.stamp.
	(check-local): Remove.
	(initial.py): Remove dependency.
	(./pubring-stamp): Depend on conf files and the
	private-keys-v1.d/gpg-sample.stamp file.  Also replace use of
	basename.

	tests: Use --batch for gpg import.
	* lang/python/tests/Makefile.am (./pubring-stamp): Use --batch with
	GPG to avoid Pinentries during import when using GnuPG >= 2.1.
	Replace touch by echo.
	* tests/gpg/Makefile.am (./pubring-stamp): Ditto.

	tests: Improve portability.
	* lang/qt/tests/Makefile.am (clean-local): Avoid non-portable "--"
	* lang/python/Makefile.am (copystamp): Use well defined cp -R instead
	of cp -r.

	build: Create swdb file.
	* Makefile.am (distcheck-hook): New.
	(dist-hook): s/VERSION/PACKAGE_VERSION/ for future compatibility.

2016-09-20  Justus Winter  <justus@g10code.com>

	python: Fix detection of Python available versions.
	* configure.ac: Test for 'PYTHON_VERSION' as 'AX_PYTHON_DEVEL' sets
	'PYTHON' but clears the former.

	Fixes-commit: 99db3512

2016-09-19  Andre Heinecke  <aheinecke@intevation.de>

	core: Remove moc artifact.
	* src/moc_kdpipeiodevice.cpp: Removed.
	* src/Makefile.am (EXTRA_DIST): Remove moc_kdpipeiodevice.cpp.

	qt: Improve README.
	* lang/qt/README: Add more content. Clearly note license difference.

	cpp: Improve README.
	* lang/cpp/README: Add more content, move license to bottom.

	qt: Add debug output for testTofuPolicy.
	* lang/qt/tests/t-tofuinfo.cpp (testTofuPolicy): Add
	debug output.

2016-09-19  Ben Kibbey  <bjk@luxsci.net>

	core: Check for GPG_TTY as well as DISPLAY.
	* src/engine-assuan.c (llass_new): Update --ttyname from GPG_TTY.
	* src/engine-g13.c (g13_new): Ditto.
	* src/engine-gpg.c (gpg_new): Ditto.
	* src/engine-uiserver.c (uiserver_new): Ditto.
	* src/engine-gpgsm.c (gpgsm_new): Ditto.

2016-09-16  Andre Heinecke  <aheinecke@intevation.de>

	qt: Add test for setting tofu policy.
	* lang/qt/tests/t-tofuinfo.cpp (testTofuPolicy): New.

	qt: Add job for tofupolicy.
	* lang/qt/src/job.cpp, lang/qt/src/protocol.h,
	lang/qt/src/protocol_p.h: Register job.
	* lang/qt/src/qgpgmetofupolicyjob.cpp,
	lang/qt/src/qgpgmetofupolicyjob.h,
	lang/qt/src/tofupolicyjob.h: New.
	* lang/qt/src/Makefile.am: Update accordingly.

	cpp: Add support for gpgme_op_tofu_policy.
	* src/context.cpp, src/context.h (setTofuPolicy, setTofuPolicyStart):
	New.

	cpp: Declare sizes of tofu-info enums.
	* lang/cpp/src/tofuinfo.h (Policy, Validity): Declare sizes.

2016-09-16  Werner Koch  <wk@gnupg.org>

	cpp: Silence use of deprecated function warning.
	* lang/cpp/src/context.cpp (GpgME): Use pragma to silence wardning.

	core: Document the version a function has been deprecated.
	* src/gpgme.h.in (_GPGME_DEPRECATED): Change to take versio numbers
	for documentation.  Change all places.
	(_GPGME_DEPRECATED_OUTSIDE_GPGME): Ditto.
	* lang/python/gpgme-h-clean.py: Adjust RE.

	core: Map GPGME_STATUS_EOF to the empty string.
	* src/status-table.c (_gpgme_status_to_string): Return "" for EOF.
	* src/engine-gpg.c (read_status): Ditto.  The old code accidently used
	GPGME_STATUS_EOF which is the integer 0 and neiteyr NULL nor a string.

2016-09-16  Justus Winter  <justus@g10code.com>
	    Kai Michaelis  <kai@gnupg.org>

	python: Release the GIL during calls into GPGME.
	* lang/python/helpers.c (pyme_raise_callback_exception): Re-acquire
	the Global Interpreter Lock.
	(pyPassphraseCb, pyme_set_passphrase_cb, pyProgressCb,
	pyme_set_progress_cb, pyStatusCb, pyme_set_status_cb,
	_pyme_interact_cb, pyDataReadCb, pyDataWriteCb, pyDataSeekCb,
	pyDataReleaseCb, pyme_data_new_from_cbs, _pyme_assuan_data_cb,
	_pyme_assuan_inquire_cb, _pyme_assuan_status_cb): Likewise.
	* lang/python/setup.py.in: Make 'gpgme-config' emit the correct
	cflags, and SWIG generate code to release the GIL before calling us.

2016-09-16  Justus Winter  <justus@g10code.com>

	python: Adapt to 'gpgme_op_interact'.
	* lang/python/examples/inter-edit.py: Update example.
	* lang/python/gpgme.i (gpgme_edit_cb_t): Turn into
	'gpgme_interact_cb_t'.
	* lang/python/helpers.c (_pyme_edit_cb): Turn into
	'_pyme_interact_cb_t'.
	* lang/python/private.h (_pyme_edit_cb): Likewise.
	* lang/python/pyme/constants/__init__.py: Replace numeric status codes
	with the keywords.
	* lang/python/pyme/constants/status.py: Likewise.
	* lang/python/pyme/core.py (Context.interact): New method.
	(Context.op_edit): Deprecate, update docstring, implement using
	Context.interact.
	* lang/python/tests/t-edit.py: Test both interfaces.

2016-09-16  Werner Koch  <wk@gnupg.org>

	core: Remove stub to try implementing gpg < 2.1 support for createkey.
	* src/engine-gpg.c (gpg_createkey_legacy): Remove.
	(gpg_genkey): Remove call.

	core: Fix setting og the verification result.
	* src/verify.c (parse_new_sig): Proberly handle the RC in an ERRSIG
	status.

2016-09-15  Werner Koch  <wk@gnupg.org>

	core: New function gpgme_op_interact, deprecate gpgme_op_edit.
	* src/gpgme.h.in (gpgme_interact_cb_t): New.
	(GPGME_INTERACT_CARD): New.
	(gpgme_op_interact_start, gpgme_op_interact): New.
	* src/libgpgme.vers, src/gpgme.def: Add new functions.
	* src/edit.c (op_data_t): Rename fnc to fnc_old and change users.  Add
	fnc.
	(edit_status_handler): Call old or new callback.
	(command_handler): Ditto.
	(interact_start): New.
	(gpgme_op_interact_start, gpgme_op_interact_start): New.
	* src/status-table.c (_gpgme_status_to_string): New.

	* tests/gpg/t-edit.c (edit_fnc): Rename to interact_fnc and change
	type of STATUS.  Use gpgme_io_writen.
	(main): s/gpgme_op_edit/gpgme_op_interact/.

	core: Minor change of the gpgme_op_edit semantics.
	* src/edit.c (command_handler): Handle special error code.
	* src/engine-gpg.c (read_status): Ditto.
	* src/engine-gpgsm.c (status_handler): Ditto.
	* src/engine-uiserver.c (status_handler): Ditto.
	* src/util.h (GPG_ERR_FALSE): Define for older libgpg-error versions.

2016-09-14  Werner Koch  <wk@gnupg.org>

	core: New function gpgme_op_tofu_policy.
	* src/gpgme.h.in (gpgme_op_tofu_policy_start): New function.
	(gpgme_op_tofu_policy): New function.
	* src/libgpgme.vers, src/gpgme.def: Add new functions.
	* src/tofupolicy.c: New.
	* src/Makefile.am (main_sources): Add that file.
	* src/context.h (ctx_op_data_id_t): Add OPDATA_TOFU_POLICY.
	* src/engine.c (_gpgme_engine_op_tofu_policy): New.
	* src/engine-backend.h (engine_ops): Add funcptr 'tofu_policy'.
	Adjust all engine initializations.
	* src/engine-gpg.c (gpg_tofu_policy): New.
	(_gpgme_engine_ops_gpg): Register this function.

	* tests/run-tofu.c: New.
	* tests/Makefile.am (noinst_PROGRAMS): Add it.

	core: Defer implementation of gpgme_op_createkey with gpg < 2.1.
	* src/engine-gpg.c (gpg_createkey_legacy): Mark unused variables.

	core: New function gpgme_op_keysign.
	* src/gpgme.h.in (gpgme_op_keysign_start, gpgme_op_keysign): New.
	(GPGME_KEYSIGN_LOCAL): New.
	(GPGME_KEYSIGN_LFSEP): New.
	(GPGME_KEYSIGN_NOEXPIRE): New.
	* src/context.h (ctx_op_data_id_t): Add OPDATA_KEYSIGN.
	* src/keysign.c: New.
	* src/Makefile.am (main_sources): Add keysig.
	* src/libgpgme.vers, src/gpgme.def: Add gpgme_op_keysign_start.
	* src/engine.c (_gpgme_engine_op_keysign): New.
	* src/engine-backend.h (engine_ops): Add 'keysign' and adjust all
	engine initializers.
	* src/engine-gpg.c (_add_arg): Add args PREFIX and ARGLEN and change
	callers to set them.
	(add_arg_pfx): New.
	(add_arg_len): New.
	(gpg_keysign): New.
	(_gpgme_engine_ops_gpg): Set keysign to gpg_keysign.
	* tests/run-keysign.c: New.
	* tests/Makefile.am (noinst_PROGRAMS): Add run-keysign.

2016-09-14  Justus Winter  <justus@g10code.com>

	python: Clarify that we support Python 2.7 too.
	* lang/python/README: Use 'Python' instead of 'Python 3'.
	* lang/python/pyme/version.py.in: Likewise.
	* lang/python/setup.py.in: Add classifier for 2.7, drop 3 only.

	python: Trim imports.
	* lang/python/examples/encrypt-to-all.py: Drop unused import of 'os'.
	* lang/python/examples/signverify.py: Likewise.
	* lang/python/examples/simple.py: Likewise.
	* lang/python/examples/verifydetails.py: Likewise.

	python: Improve error handling.
	* lang/python/gpgme.i (gpgme_engine_info_t): Improve error handling.

	python: Adapt to TOFU changes.
	* lang/python/pyme/results.py (TofuInfo): Drop.
	(Signature): The TOFU information moved to the key.

	python: Improve build system integration.
	* configure.ac: Try to compile a Python module for each version.
	* m4/m4_ax_swig_python.m4: Drop unused file.

2016-09-14  Werner Koch  <wk@gnupg.org>

	core: New function gpgme_op_revuid.
	* src/engine.h (GENKEY_EXTRAFLAG_REVOKE): New.
	* src/genkey.c (adduid_start): Rename to addrevuid_start.  Add arg
	REVOKE and pass it as extraflags.  Remove useless ARMOR extraflag.
	Adjust callers.
	(gpgme_op_revuid_start, gpgme_op_revuid): New.
	* src/gpgme.def, src/libgpgme.vers: Add them.

	* tests/run-genkey.c: Add option --revuid.

	core: Change a parameter for the engine's genkey function.
	* src/engine.h (GENKEY_EXTRAFLAG_ARMOR): New.
	* src/engine-backend.h (engine_ops): Rename USE_ARMOR in genkey to
	EXTRAFLAGS.
	* src/engine.c (_gpgme_engine_op_genkey): Ditto.
	* src/engine-gpg.c (gpg_createkey_from_param): Ditto and test the
	flags.
	(gpg_createkey_legacy): Ditto.
	(gpg_createkey): Ditto.
	(gpg_addkey): Ditto.
	(gpg_genkey): Ditto.

2016-09-14  Justus Winter  <justus@g10code.com>

	python: Build for both Python2 and Python3.
	* NEWS: Update.
	* configure.ac: Check for multiple Python versions.
	* lang/python/Makefile.am: Build and install for both Python versions.
	* lang/python/tests/Makefile.am: Test both versions.
	* lang/python/tests/run-tests.py: New test runner.

2016-09-14  Werner Koch  <wk@gnupg.org>

	core: New function gpgme_op_adduid.
	* src/genkey.c: Replace most error codes GPG_ERR_INV_VALUE by
	GPG_ERR_INV_ARG.
	(struct op_data_t): Add field UIDMODE.
	(genkey_status_handler): Use UIDMODE.
	(adduid_start): New.
	(gpgme_op_adduid_start, gpgme_op_adduid): New.
	* src/gpgme.def, src/libgpgme.vers: Add them.
	* tests/run-genkey.c: Add option --adduid.

	core: New function gpgme_op_createsubkey.
	* src/genkey.c (createsubkey_start): New.
	(gpgme_op_createsubkey_start, gpgme_op_createsubkey): New.
	* src/gpgme.def, src/libgpgme.vers: Add them.
	* src/engine-gpg.c (gpg_createkey): Factor some code out to ...
	(gpg_add_algo_usage_expire): new.
	(gpg_addkey): Implement.
	* tests/run-genkey.c: Add option --addkey.

2016-09-13  Werner Koch  <wk@gnupg.org>

	core: Use const char * where appropriate.

	core: Cast away the common const problem with spawn and argv.
	* src/dirinfo.c (read_gpgconf_dirs): Use a cast to assignd to ARGV.

	core: Fix condition-always-true warning in trace macro.
	* src/data-compat.c (old_user_read): Cast AMT.

	core: Mark unused function args.

	tests: Mark lots of unused vars and fix const mismatches.

	tests: Use gpgme_io_write in passhrase callbacks.
	* tests/gpg/t-support.h (passphrase_cb): Use gpgme_io_write.
	* tests/gpgsm/t-support.h (passphrase_cb): Ditto.
	* tests/run-support.h (passphrase_cb): Ditto.

	core: Do not pass const char* to functions taking a char*.

	build: Use more compiler warnings.
	* configure.ac: Add useful compiler warnings.

	core: New function gpgme_op_create_key.
	* src/engine-backend.h (engine_ops): Change prototype of genkey.
	* src/engine-gpgsm.c (gpgsm_genkey): Change accordingly.
	* src/engine-gpg.c (gpg_genkey): Change it to a dispatcher.
	(gpg_createkey_from_param): New for the old functionality.
	(gpg_createkey_legacy): New.  Stub for now.
	(gpg_createkey): New.
	(gpg_addkey): New.  Stub for now.
	(gpg_adduid): New.  Stub for now.
	* src/engine.c (_gpgme_engine_op_genkey): Add new args.
	* src/genkey.c (op_data_t): Add field ERROR_CODE.
	(parse_error): New.
	(genkey_status_handler): Parse ERROR status line.
	(genkey_start): Use NULL/0 for the new args.
	(createkey_start): New.
	(gpgme_op_createkey_start, gpgme_op_createkey): New.
	* src/gpgme.def, src/libgpgme.vers: Add gpgme_op_createkey_start and
	gpgme_op_createkey.
	* src/gpgme.h.in (_gpgme_op_genkey_result): Add fields PUBKEY and
	SECKEY.
	(GPGME_CREATE_SIGN): New.
	(GPGME_CREATE_ENCR): New.
	(GPGME_CREATE_CERT): New.
	(GPGME_CREATE_AUTH): New.
	(GPGME_CREATE_NOPASSWD): New.
	(GPGME_CREATE_SELFSIGNED): New.
	(GPGME_CREATE_NOSTORE): New.
	(GPGME_CREATE_WANTPUB): New.
	(GPGME_CREATE_WANTSEC): New.
	(GPGME_CREATE_FORCE): New.

	* tests/run-genkey.c: New.
	* tests/Makefile.am (noinst_PROGRAMS): Add it.

2016-09-13  Justus Winter  <justus@g10code.com>

	python: Handle slight differences between Python 2 and 3.
	* lang/python/helpers.c (pyDataWriteCb): Handle Python integers being
	returned on Python 2.
	(pyDataSeekCb): Likewise.
	* lang/python/pyme/core.py (Data.__init__): Fix testing for string
	argument.
	(Data.new_from_filepart): Likewise.
	* lang/python/pyme/util.py (is_a_string): New function.
	* lang/python/tests/t-encrypt-large.py (read_cb): Force evaluation of
	generator.
	* lang/python/tests/t-idiomatic.py: Partly skip test on Python 2.
	* lang/python/tests/t-verify.py (check_result): Here, the difference
	between 2 and 3 really matters.  We cannot change the char *
	conversion in Python 2 without breaking all existing applications, and
	using bytestrings in Python 3 would be very inconvenient.

	python: Fix types and error handling.
	* lang/python/helpers.c (_pyme_edit_cb): Drop the const.
	(_pyme_assuan_{data,inquire,status}_cb): Fix error handling.

2016-09-12  Justus Winter  <justus@g10code.com>

	python: Avoid Python3-only form of super().
	* lang/python/pyme/core.py (GpgmeWrapper.__repr__): Use more
	compatible form of super.
	(GpgmeWrapper.__setattr__): Likewise.
	(Context.__init__): Likewise.
	(Data.__init__): Likewise.

	python: Make type translation compatible with Python 2.7.
	* lang/python/gpgme.i: Avoid functions not available in Python 2.7.
	* lang/python/helpers.c: Likewise.

	python: Avoid hardcoding the interpreter.
	* lang/python/setup.py.in: Avoid hardcoding the interpreter.

	python: Do not rely on subprocess.DEVNULL.
	* lang/python/setup.py.in: Do not rely on subprocess.DEVNULL.

	tests: Fix version comparison.
	* tests/gpg/t-sig-notation.c: Fix version comparison.

	Fixes-commit: a0263ad2

	tests: Make signature notation test compatible with older GnuPGs.
	* lang/python/tests/t-sig-notation.py: Only check the critical flag
	when GnuPG >= 2.1.13 is used.
	* tests/gpg/t-sig-notation.c: Likewise.

	Fixes-commit: c88c9ef3

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

	qt: Fix some includes.
	* lang/qt/src/qgpgmekeyformailboxjob.cpp: Explicitly include
	QStringList.
	* lang/qt/tests/t-support.h, lang/qt/tests/t-support.cpp: Move
	includes into impl. Explicitly include QDir.

2016-09-12  Justus Winter  <justus@g10code.com>

	qt: Fix tofu test.
	* lang/qt/tests/t-tofuinfo.cpp: Adjust member names.

	Fixes-commit: 120b1478

2016-09-07  Werner Koch  <wk@gnupg.org>

	core,cpp: Extend the TOFU information.
	* src/gpgme.h.in (struct _gpeme_tofu_info): Rename FIRSTSEEN to
	SIGNFIRST and LASTSEEN to SIGNLAST.  Add ENCRFIST and ENCRLAST.
	* src/keylist.c (parse_tfs_record): Parse to ENCRFIRST and ENCRLAST.
	* src/verify.c (parse_tofu_stats): Ditto.
	* tests/run-keylist.c (main): Adjust and print encrypt stats.
	* tests/run-verify.c (print_result): Ditto.

	* lang/cpp/src/tofuinfo.h (TofuInfo): Rename firstSeen to signFirst
	and lastSeen to signLast.  Add encrCount, encrFirst and encrLast.
	* lang/cpp/src/tofuinfo.cpp (encrCount, encrFirst, encrLast): New.

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

	tests: Set passphrase cb in t-encrypt-mixed.
	* tests/gpg/t-encrypt-mixed.c (main): Set passphrase cb.

	core: Check for gpg version for loopback mode.
	* src/engine-gpg.c (build_argv): Check for version 2.1.0
	before adding pinentry-mode.

	core: Fix passphrase cb for mixed sym encrypt.
	* src/encrypt.c (encrypt_start): Handle SYMMETRIC flag.
	* src/encrypt-sign.c (encrypt_sign_start): Ditto.

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

	qt: Clarify comment and strings in tofuinfo test.
	* lang/qt/tests/t-tofuinfo.cpp (testTofuSignCount)
	(testTofuKeyList): Ensure distinct messages. Clarify comment.

	qt: Enable signcount checks in tofuinfo test.
	* lang/qt/tests/t-tofuinfo.cpp: Enable checks for signcount.

	cpp: Add convenience update function to a key.
	* lang/cpp/src/key.cpp (Key::update): New.
	* lang/cpp/src/key.h: Update accordingly.

	cpp: Add ostream operators for key and uid.
	* lang/cpp/src/key.cpp (Key, UserID): Add ostream operator.
	* lang/cpp/src/key.h: Update accordingly.

	qt: Add missing header redirection.
	* lang/qt/src/keyformailboxjob.h,
	lang/qt/src/qgpgmekeyformailboxjob.h: Fix includes.

	qt: Include cpp before core directory.
	* lang/qt/src/Makefile.am (AM_CPPFLAGS): Include cpp before core.

2016-08-25  Andre Heinecke  <aheinecke@intevation.de>

	qt: Fix 2.1 t-support copy.
	* lang/qt/src/t-support.cpp (copyKeyring): Fix seckey copy.

	qt: Fix and extend TofuInfo test.
	* lang/qt/tests/t-tofuinfo.cpp: Delete executed jobs.
	(testTofuKeyList): New.
	(testSupported): Activate for 2.1.16
	(signAndVerify): Disable sigcount tests.

	qt: Fix keyring copy in tests.
	* lang/qt/test/t-encrypt.cpp,
	lang/qt/test/t-tofuinfo.cpp: Assert on copy failure.
	* lang/qt/test/t-support.cpp (copyKeyrings): Fix path.

	qt: Add generic flag support for keylistjobs.
	* lang/qt/src/keylistjob.h (addMode): New.
	* lang/qt/src/qgpgmekeylistjob.h (addMode): New.
	* lang/qt/src/qgpgmekeylistjob.cpp (addMode: New.

	qt: Ensure that current src dir is included first.
	* lang/qt/src/Makefile.am: Reorder include directives.

	cpp: Add WithTofu Keylist Mode.
	* lang/cpp/src/context.cpp: Handle WithTofu.
	* lang/cpp/src/global.h (KeyListMode): Add WithTofu.
	* lang/cpp/src/util.h (add_to_gpgme_keylist_mode_t): Handle WithTofu.

	qt: Fix tofuinfo test when gpg is gpg2.
	* lang/qt/tests/t-support.cpp (QGpgMETest::copyKeyrings): New helper.
	* lang/qt/tests/t-support.h: Declare.
	* lang/qt/tests/t-encrypt.cpp: use it
	* lang/qt/tests/t-tofuinbo.cpp: ditto.

	qt: Remove unused variable in test.
	* t-wkspublish.cpp (testWKSPublishCreate): Remove context.

	qt: Add test for wkspublishjob.
	* lang/qt/tests/t-wkspublish.cpp: New.
	* lang/qt/tests/Makefile.am: Update accordingly.

	qt: Add WKSPublishJob.
	* lang/qt/src/Makefile.am: Add new files.
	* lang/qt/src/job.cpp: Include moc / subclass stub.
	* lang/qt/src/protocol.h: Add virtual for new job.
	* lang/qt/src/protocol_p.h: Add job.
	* lang/qt/src/wkspublishjob.h: Interface for WKSPublishJob.
	* lang/qt/src/qgpgmewkspublishjob.cpp,
	lang/qt/src/qgpgmewkspublishjob.h: New.

	Cpp: Change firstSeen / lastSeen return values.
	* lang/cpp/src/tofuinfo.cpp,
	lang/cpp/src/tofuinfo.h (TofuInfo::firstSeen, TofuInfo::lastSeen):
	Change return values to unsigned long and update doc.

	Cpp: Add wrapper for gpgme_get_dirinfo.
	* lang/cpp/src/context.cpp (dirInfo): New.
	* lang/cpp/src/global.h (dirInfo): New.

	Cpp: Add support for spawn engine.
	* lang/cpp/src/context.cpp (Context::spawn, Context::spawnAsync): New.
	* lang/cpp/src/context.h: Add prototypes.
	(SpawnFlags): New.
	* lang/cpp/src/global.h (SpawnEngine): Added.

2016-08-25  Werner Koch  <wk@gnupg.org>

	core: Add GPGME_KEYLIST_MODE_WITH_TOFU.
	* src/gpgme.h.in (GPGME_KEYLIST_MODE_WITH_TOFU): New.
	* src/engine-gpg.c (gpg_keylist_build_options): Use that.
	* src/keylist.c: Include limits.h.
	(parse_tfs_record): New.
	(keylist_colon_handler): Support TFS record.
	* tests/run-keylist.c: Include time.h.
	(isotimestr): New.
	(main): Add option --tofu.  Print TOFU info.
	* tests/run-verify.c: Include time.h.
	(isotimestr): New.
	(print_result): Use isotimestr for TOFU dates.

2016-08-24  Werner Koch  <wk@gnupg.org>

	core: Adjust for TOFU_STATS change in gnupg 2.1.16.
	* src/gpgme.h.in (_gpgme_tofu_info): Change 'firstseen' and 'lastseen'
	to a timestamp value.
	* src/verify.c (parse_tofu_stats): Do not cap these values at UINT_MAX.

	core: Set the 'encrcount' field in gpgme_tofu_info_t.
	* src/verify.c (parse_tofu_stats): Set ENCRCOUNT field.

	cpp: Get rid of AssuanResult due to its deprecation.
	* lang/cpp/src/assuanresult.cpp: Remove.
	* lang/cpp/src/assuanresult.h: Remove.
	* lang/cpp/src/Makefile.am: Remove these files.
	* lang/cpp/src/context.cpp: Remove header assuanresult.h
	(assuanTransact): Change return type to Error.  Use
	gpgme_op_assuan_transact_ext.
	(startAssuanTransaction): Change return type to Error.
	(assuanResult): Remove
	* lang/cpp/src/context.h (assuanResult): Adjust for changes.

2016-08-24  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Adapt (disabled) tofuinfo test to new API.
	* lang/qt/tests/t-tofuinfo.cpp: Switch to UID based API.

	Cpp: Add Key to signature.
	* lang/cpp/src/verificationresult.cpp,
	lang/cpp/src/verificationresult.h (Signature::key): New.

	Cpp: Use fpr field for primaryFingerprint.
	* lang/cpp/src/key.cpp (Key::primaryFingerprint): Return
	fpr value if available.

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

	Cpp: Move tofuinfo from signature to userid.
	* lang/cpp/src/key.cpp (UserID::tofuInfo): New.
	* lang/cpp/src/key.h: Update accordingly.
	* lang/cpp/src/tofuinfo.cpp: Remove dropped fields.
	* lang/cpp/src/tofuinfo.h: Update accordingly.
	* lang/cpp/src/verificationresult.cpp,
	lang/cpp/src/verificationresult.h: Remove tofu info.
	* lang/qt/tests/t-tofuinfo.cpp: Disable for now.

2016-08-23  Werner Koch  <wk@gnupg.org>

	core: Put the protocol into a TOFU created key object.
	* src/verify.c (parse_tofu_user): Add arg 'protocol' and store it in
	the KEY.
	(_gpgme_verify_status_handler): Pass protocol.

	core: Change the way TOFU information are represented.
	* src/gpgme.h.in (struct _gpgme_signature): Remove field 'tofu'.  Add
	field 'key'.
	(struct _gpgme_key): Add field 'fpr'.
	(struct _gpgme_user_id): Add field 'tofu'.
	(struct _gpgme_tofu_info): Remove fields 'address' and 'fpr'.
	* src/key.c (gpgme_key_unref): Release TOFU and FPR.
	* src/keylist.c (keylist_colon_handler): Store the fingerprint of the
	first subkey also in KEY.
	* src/verify.c (release_tofu_info): Remove.
	(release_op_data): Release KEY.
	(parse_tofu_user): Rewrite for new data structure.
	(parse_tofu_stats): Ditto.
	(parse_tofu_stats_long): Ditto.
	* tests/run-verify.c (print_result): Ditto.
	* tests/run-keylist.c (main): Print more fields.

	core: Extend gpgme_user_id_t with 'address'.
	* src/mbox-util.c, src/mbox-util.h: Adjust for use in gpgme.
	* src/Makefile.am (main_sources): Add mbox-util.
	* src/key.c (_gpgme_key_append_name): Set 'address' field of uid.
	(gpgme_key_unref): Free it.

2016-08-22  Werner Koch  <wk@gnupg.org>

	core: New code for parsing mail addresses.
	* src/mbox-util.c: New.
	* src/mbox-util.h: New.

	core: Add new items for gpgme_get_dirinfo.
	* src/dirinfo.c (WANT_SYSCONFDIR, WANT_LIBEXECDIR, WANT_LIBDIR): New.
	(WANT_DATADIR, WANT_LCOALEDIR, WANT_AGENT_SSH_SOCKET): New
	(WANT_DIRMNGR_SOCKET): New.
	(dirinfo): Add fields 'sysconfdir', 'bindir', 'libexecdir', 'libdir',
	'datadir', 'localedir', 'agent_ssh_socket', and 'dirmngr_socket'.
	(parse_output): Set these fields.
	(get_gpgconf_item): Return them.
	(gpgme_get_dirinfo): Likewise.

	core: Base gpgme_get_dirinfo(uiserver-socket) on the socket dir.
	* src/dirinfo.c (dirname_len): New.
	(parse_output): Change computation of UISRV_SOCKET.

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

	core: New commands --lang and --have-lang for gpgme-config.
	* configure.ac (GPGME_CONFIG_AVAIL_LANG): New ac_subst.
	* src/gpgme-config.in (avail_lang): Add commands --lang and
	--have-lang.

2016-08-18  Andre Heinecke  <aheinecke@intevation.de>

	core: Remove (now) useless diagnostic.
	* src/w32-io.c(_gpgme_io_spawn): Remove spawnhelper not found
	diagnostic.

	core: Fail loudly in case w32 spawner not found.
	* src/w32-io.c (_gpgme_io_spawn): Show a message box in
	case gpgme-w32spawn.exe not found.

2016-08-17  Andre Heinecke  <aheinecke@intevation.de>

	Cpp: Fix some pedantic warnings.
	* lang/cpp/src/context.cpp,
	lang/cpp/src/context.h (Context::getKeysFromRecipients): Remove
	ignored / invalid const qualifier.
	* lang/cpp/src/result.h: Don't shadow error function in ctor.

2016-08-16  Werner Koch  <wk@gnupg.org>

	core: New global flag "require-gnupg".
	* src/gpgme.c (gpgme_set_global_flag): Add flag.
	* src/engine.c (engine_minimal_version): New variable.
	(_gpgme_set_engine_minimal_version): New function.
	(gpgme_get_engine_info): Check that flag.

	* tests/run-keylist.c (main): New option --require-gnupg.

	core: Simplify setting of dummy versions.
	* src/engine.c (_gpgme_engine_info_release): Do not assert but free
	FILE_NAME.
	(gpgme_get_engine_info): Provide default for VERSION and REQ_VERSION.
	Use calloc instead of malloc.
	(_gpgme_set_engine_info): Ditto.
	* src/engine-assuan.c (llass_get_version): Return NULL.
	(llass_get_req_version): Ditto.
	* src/engine-spawn.c (engspawn_get_version): Ditto.
	(engspawn_get_req_version): Ditto.
	* src/engine-uiserver.c (uiserver_get_version): Ditto.
	(uiserver_get_req_version): Ditto.

2016-08-12  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Add test for progress signal of encryptjob.
	* lang/qt/tests/t-encrypt.cpp (testProgress): New.

	Cpp: Provide size-hint for seekable and mem data.
	* lang/cpp/src/data.cpp (GpgME::Data::Data): Set size-hint for
	mem and DataProvider based Data.

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

	core: Make use of the "size-hint" in engine-gpg.
	* src/engine-gpg.c: Include data.h.
	(add_input_size_hint): New.
	(gpg_decrypt, gpg_encrypt, gpg_encrypt_sign, gpg_sign)
	(gpg_verify): Call new function,

	* tests/run-encrypt.c (status_cb): Print to stderr.
	(progress_cb): New.o
	(main): Add option --progress.  Print full-status lines.  Provide a
	size for the input data.

	core: Add gpgme_data_set_flag to add more meta data to data objects.
	* src/gpgme.h.in (gpgme_data_set_flag): New public function.
	* src/data.c (gpgme_data_set_flag): New.
	(_gpgme_data_get_size_hint): New.
	* src/data.h (strucy gpgme_data): Add field 'size_hint'.
	* src/gpgme.def, src/libgpgme.vers: Add new function.
	* src/conversion.c (_gpgme_string_to_off): New.

2016-08-12  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Fix defaultkeygenerationjob build.
	* lang/qt/src/defaultkeygenerationjob.cpp: Include moc.

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

	Qt: Add DefaultKeyGenerationJob.
	* lang/qt/src/defaultkeygenerationjob.cpp,
	lang/qt/src/defaultkeygenerationjob.h: New.
	* lang/qt/src/Makefile.am: Update accordingly.

	Qt: Ensure all public classes are exported.
	* src/abstractimportjob.h,
	src/cryptoconfig.h,
	src/deletejob.h,
	src/exportjob.h,
	src/importfromkeyserverjob.h,
	src/importjob.h,
	src/keygenerationjob.h,
	src/keylistjob.h,
	src/listallkeysjob.h,
	src/refreshkeysjob.h,
	src/signencryptjob.h,
	src/specialjob.h,
	src/verifydetachedjob.h: Export classes.

	Qt: Add KeyForMailboxJob.
	* lang/qt/src/job.cpp: Include moc and make subclass.
	* lang/qt/src/keyformailboxjob.h,
	lang/qt/src/qgpgmekeyformailboxjob.cpp,
	lang/qt/src/qgpgmekeyformailboxjob.h: New.
	* lang/qt/tests/run-keyformailboxjob.cpp: New manual test.
	* lang/qt/tests/Makefile.am: Add run-keyformailboxjob.
	* lang/qt/src/Makefile.am: Update accordingly.
	* lang/qt/src/protocol.h, lang/qt/src/protocol_p.h: Add
	keyformailboxjob.

2016-08-10  Werner Koch  <wk@gnupg.org>

	doc: Get rid of version.texi.
	* configure.ac (CC_FOR_BUILD): New.
	* doc/mkdefsinc.c: New.  Taken from GnuPG and modified for gpgme.
	* doc/Makefile.am (EXTRA_DIST): Add defsincdate and mkdefsinc.c
	(BUILT_SOURCES): new.
	(gpgme.texi): New dependency.
	(mkdefsinc, defsincdate, defs.inc): New rules.
	(dist-hook): New.
	* doc/gpgme.texi: Include defs.inc.  Remove version.texi.

	build: Declare all languages for make dist.
	* lang/Makefile.am (DIST_SUBDIRS): New.

	core: Do not identify PNG files as PGP signatures.
	* src/data-identify.c (next_openpgp_packet): Blacklist PNG files.

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

	Cpp: Handle empty recipients consistently.
	* lang/cpp/src/context.cpp (Context::getKeysFromRecipients):
	New helper.
	(Context::encrypt, Context::startEncryption, Context::signAndEncrypt)
	(Context::startCombinedSigningAndEncryption): Use new helper.
	* lang/cpp/src/context.h (Context::getKeysFromRecipients): Add
	as private helper.

	core: Handle ENCRYPT_SYMMETRIC also for sig & enc.
	* src/engine-gpg.c (gpg_encrypt_sign): Handle ENCRYPT_SYMMETRIC
	flag.

	Qt: Remove unused variable.
	* lang/qt/src/qgpgmerefreshkeysjob.cpp (slotStatus): Remove
	unused variable typ.

	Qt: Create TestPassphraseProvider on stack.
	* lang/qt/tests/t-encrypt.cpp, lang/qt/tests/t-tofuinfo.cpp: Create
	TestPassphraseProvider on stack.

	Cpp: Clarify ownership of provider classes.
	* lang/cpp/src/context.h: Note that the context does not take
	ownership of providers.

2016-08-10  Justus Winter  <justus@g10code.com>

	tests: Fix memory leak.
	* tests/gpg/t-encrypt-mixed.c (main): Free 'text2'.

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

	core: Ensure err is initalized in gpg_encrypt.
	* src/engine-gpg.c (gpg_encrypt): Initialize err.

	Qt: Fix t-keylist moc include.
	* lang/qt/tests/t-keylist.cpp: Don't include t-support.moc

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

	Qt: Clean up debug output in tests.
	* lang/qt/tests/t-support.cpp: Remove accidentally commited
	debug output.

	Qt: Add encryption test and refactor testsuite.
	* lang/qt/tests/Makefile.am: Add t-encrypt and t-support.
	* lang/qt/tests/t-support.cpp, lang/qt/tests/t-support.c (QGpgMETest):
	New. Class to handle common cleanup / init.
	* lang/qt/tests/t-keylist.cpp,
	lang/qt/tests/t-keylocate.cpp,
	lang/qt/tests/t-ownertrust.cpp,
	lang/qt/tests/t-tofuinfo.cpp: Inherit QGpgMETest.
	* lang/qt/tests/t-encrypt.cpp: New. Test Symetric and Asymectric
	encryption. Mixed encryption test is disabled.

	Qt: Add support for EncryptJobs with generic flags.
	* lang/qt/src/encryptjob.h, lang/qt/src/signencryptjob.h,
	lang/qt/src/qgpgmeencryptjob.h, lang/qt/src/qgpgmeencryptjob.cpp,
	lang/qt/src/qgpgmesignencryptjob.cpp,
	lang/qt/src/qgpgmeencryptjob.cpp: Add start and exec overloads
	that accept generic EncryptFlags.

	Cpp: Add support for all EncryptionFlags.
	* lang/cpp/src/context.h (EncryptionFlags): Extend.
	* lang/cpp/src/context.cpp (encryptflags2encryptflags): Ditto.

	Cpp: Fix simple symmetric encryption.
	* lang/cpp/src/context.cpp (Context::encrypt): If no recipients
	are provided encrypt with NULL and not an empty array.

	core: Add support for mixed symmetric and asym enc.
	* src/gpgme.h.in (gpgme_encrypt_flags_t): New flag
	GPGME_ENCRYPT_SYMMETRIC.
	* src/engine-gpg.c (gpg_encrypt): Also add --symmetric if the flag
	is given.
	* NEWS: Mention new flag.
	* tests/run-encrypt.c (show_usage): Extend for --symmetric.
	(main): Handle --symmetric.
	(main): Set passphrase_cb in loopback mode.
	(main): Fix encrypt call if no recipients are given.
	* tests/gpg/t-encrypt-mixed.c: New.
	* tests/gpg/Makefile.am (c_tests): Add new test.
	* doc/gpgme.texi: Document new flag.

2016-08-08  Werner Koch  <wk@gnupg.org>

	core: Let GPGME_PROTOCOL_ASSUAN pass Assuan comments through.
	* src/engine-assuan.c (llass_new): Set ASSUAN_CONVEY_COMMENTS,

2016-08-08  Andre Heinecke  <aheinecke@intevation.de>

	Prepend LD_LIBRARY_PATH for python tests.
	* lang/python/tests/Makefile.am (TESTS_ENVIRONMENT): Prepend path
	instead of setting the value.

2016-08-05  Justus Winter  <justus@g10code.com>

	python: Clean up and modernize examples.
	* lang/python/examples/Examples.rst: Delete file.
	* lang/python/examples/t-edit.py: Likewise.  This is actually a test
	case and has been moved to 'tests'.
	* lang/python/examples/assuan.py: New file.
	* lang/python/examples/decryption-filter.py: Likewise.
	* lang/python/examples/delkey.py: Modernize.
	* lang/python/examples/encrypt-to-all.py: Likewise.
	* lang/python/examples/exportimport.py: Likewise.
	* lang/python/examples/genkey.py: Likewise.
	* lang/python/examples/inter-edit.py: Likewise.
	* lang/python/examples/sign.py: Likewise.
	* lang/python/examples/signverify.py: Likewise.
	* lang/python/examples/simple.py: Likewise.
	* lang/python/examples/testCMSgetkey.py: Likewise.
	* lang/python/examples/verifydetails.py: Likewise.

2016-08-04  Werner Koch  <wk@gnupg.org>

	core: Extend gpgme_subkey_t to carry the keygrip.
	* src/gpgme.h.in (struct _gpgme_subkey): Add file 'keygrip'.
	* src/key.c (gpgme_key_unref): Free KEYGRIP.
	* src/keylist.c (keylist_colon_handler): Parse GRP records.
	* src/engine-gpg.c (gpg_keylist_build_options): Do not use
	--with-fingerprint options for gpg versions >= 2.1.15.

	* tests/run-keylist.c (main): Print subkeys and keygrips.

2016-08-03  Justus Winter  <justus@g10code.com>

	python: Add a nicer interface to list keys.
	* lang/python/pyme/core.py (Context.keylist): New method.
	* lang/python/tests/t-keylist.py: Test new method.

2016-08-02  Justus Winter  <justus@g10code.com>

	python: Add a flag identifying in-tree builds.
	* lang/python/helpers.c (pyme_in_tree_build): New variable.
	* lang/python/helpers.h (pyme_in_tree_build): New declaration.
	* lang/python/pyme/version.py.in (in_tree_build): New variable.
	* lang/python/setup.py.in: Rework macro handling, set 'IN_TREE_BUILD'
	as appropriate.

	python: Fix build system integration.
	* lang/python/Makefile.am: Be more careful when cleaning the build
	directory, we must not delete the generated file 'pyme/version.py'.

	doc: Document the Assuan protocol.
	* doc/gpgme.texi: Document the Assuan protocol.

	GnuPG-bug-id: 2407

2016-07-28  Justus Winter  <justus@g10code.com>

	python: Fix out-of-tree build.
	* lang/python/MANIFEST.in: Add 'private.h'.

	Fixes-commit: 3d4dc3f0

	python: Improve error handling.
	* lang/python/pyme/core.py (Context.protocol): Check that the engine
	is usable before setting the protocol.
	(Context._errorcheck): Add missing functions.

	src: Fix dummy engine versions.
	Previously, 'gpgme_engine_check_version' failed for these protocols
	because the version parser failed to parse the dummy versions.

	* src/engine-assuan.c (llass_get_version): Use a version triple that
	the parser can understand.
	(llass_get_req_version): Likewise.
	* src/engine-spawn.c (engspawn_get_version): Likewise.
	(engspawn_get_req_version): Likewise.
	* src/engine-uiserver.c (uiserver_get_version): Likewise.
	(uiserver_get_req_version): Likewise.

	python: Drop superfluous imports and trim public interface.
	* lang/python/pyme/__init__.py: Avoid leaking low-level 'gpgme', make
	sure the main module looks nice and tidy, appease pyflakes.
	* lang/python/pyme/errors.py: Appease pyflakes.
	* lang/python/pyme/util.py: Avoid leaking low-level 'gpgme' into the
	module namespace.
	* lang/python/pyme/version.py.in: Likewise.
	* lang/python/tests/t-keylist.py: Drop superfluous imports.
	* lang/python/tests/t-sig-notation.py: Likewise.
	* lang/python/tests/t-sign.py: Likewise.
	* lang/python/tests/t-signers.py: Likewise.

	python: Rename compiled SWIG module.
	Avoid the name pygpgme, as this is the name of another popular Python
	binding for GPGME.

	This commit renames the compiled Python module produced by SWIG.

	* lang/python/Makefile.am: Rename the compiled Python module.
	* lang/python/gpgme.i: Likewise.
	* lang/python/pyme/core.py: Likewise.
	* lang/python/pyme/errors.py: Likewise.
	* lang/python/pyme/util.py: Likewise.
	* lang/python/pyme/version.py.in: Likewise.
	* lang/python/setup.py.in: Likewise.

	python: Rename exported functions.
	Avoid the name pygpgme, as this is the name of another popular Python
	binding for GPGME.

	This commit renames all functions that are exported to the Python
	world.

	* lang/python/helpers.c: Rename all exported functions.
	* lang/python/helpers.h: Likewise.
	* lang/python/pyme/core.py: Likewise.

	python: Rename private functions.
	Avoid the name pygpgme, as this is the name of another popular Python
	binding for GPGME.

	This commit renames all functions that are not exported to the Python
	world.

	* lang/python/gpgme.i: Rename all private functions.
	* lang/python/helpers.c: Likewise.
	* lang/python/helpers.h: Likewise.
	* lang/python/private.h: Likewise.  Also move the SWIG runtime helper
	prototypes here.

	python: Support the Assuan engine.
	* lang/python/gpgme.i: Add typemaps for the Assuan protocol callbacks.
	* lang/python/helpers.c (_pyme_assuan_{data,inquire,status}_cb): New
	functions.
	* lang/python/private.h (_pyme_assuan_{data,inquire,status}_cb): New
	prototypes.
	* lang/python/pyme/core.py (Context.assuan_transact): New method.
	* lang/python/pyme/util.py (percent_escape): New function.
	* lang/python/tests/Makefile.am (py_tests): Add new test.
	* lang/python/tests/t-protocol-assuan.py: New file.

	python: Improve engine information handling.
	* lang/python/gpgme.i (gpgme_engine_info_t): Wrap engine infos.
	* lang/python/pyme/core.py (Context.engine_info): New property.
	(Context.{g,s}et_engine_info): Improve docstrings.
	* lang/python/pyme/results.py (EngineInfo): New class.

	python: Add accessors for the protocol.
	* lang/python/pyme/core.py (Context.__init__): Add 'protocol'
	parameter.
	(Context.protocol): New accessors.

	python: Expose less functions to the Python world.
	* lang/python/Makefile.am (EXTRA_DIST, COPY_FILES): Add new file.
	* lang/python/gpgme.i: Include new file and add comments.
	* lang/python/helpers.c: Include new file.
	* lang/python/helpers.h: Move functions we do not need to expose...
	* lang/python/private.h: ... here.

2016-07-19  Ben Kibbey  <bjk@luxsci.net>

	Fix including nil bytes in keylist output.
	* src/gpgme-tool.c (cmd_keylist,gt_result): use strlen().

2016-07-15  Justus Winter  <justus@g10code.com>

	python: Make GPGME's version easily accessible.
	* lang/python/pyme/version.py.in (gpgme_versionstr): New variable.

	python: Add an idiomatic interface.
	* configure.ac: Bump required Python version.
	* lang/python/pyme/__init__.py: Update docstring.  Import Context and
	Data.
	* lang/python/pyme/core.py (Context.encrypt): New function.
	(Context.decrypt): Likewise.
	(Context.sign): Likewise.
	(Context.verify): Likewise.
	* lang/python/pyme/errors.py: Add new errors.
	* lang/python/pyme/util.py (process_constants): Rework and return the
	inserted keys.
	* lang/python/tests/Makefile.am (EXTRA_DIST): Add new keys.
	* lang/python/tests/encrypt-only.asc: New file.
	* lang/python/tests/sign-only.asc: Likewise.
	* lang/python/tests/initial.py: Mark key 'Alpha' as trusted, import
	new keys.
	* lang/python/tests/support.py: Add fingerprints of known keys.
	(in_srcdir): New function.
	(print_data): Handle bytes too.
	(mark_key_trusted): New function.
	* lang/python/tests/t-decrypt-verify.py: Adjust test.  Test idiomatic
	interface.
	* lang/python/tests/t-decrypt.py: Test idiomatic interface.
	* lang/python/tests/t-encrypt-sign.py: Likewise.
	* lang/python/tests/t-encrypt-sym.py: Likewise.
	* lang/python/tests/t-encrypt.py: Likewise.
	* lang/python/tests/t-idiomatic.py: Simplify.
	* lang/python/tests/t-keylist.py: Adjust to newly trusted key.
	* lang/python/tests/t-sign.py: Likewise.  Test idiomatic interface.
	* lang/python/tests/t-signers.py: Likewise.
	* lang/python/tests/t-verify.py: Likewise.

2016-07-14  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Disable keylocate test for gnupg < 2.0.10.
	* lang/qt/tests/t-keylocate.cpp: Disable test for gnupg < 2.0.10

	Cpp: Add EngineInfo::Version class.
	* lang/cpp/src/engineinfo.cpp (EngineInfo::engineVersion): New.
	* lang/cpp/src/engineinfo.h (EngineInfo::engineVersion): Declare.
	(EngineInfo::Version): Small helper to work with versions.

	Qt: Fix usage of ignore-invalid-option in tests.
	* Makefile.am (pubring-stamp): Fix config.

	Qt: Fix tests if gpg2 is gpg.
	* lang/qt/tests/Makefile.am (pubring-stamp): Loopback and provide
	passphrase on command line when importing.

2016-07-14  Justus Winter  <justus@g10code.com>

	python: Fix test.
	* lang/python/tests/t-keylist.py: Do not assume key alpha is trusted
	yet.

2016-07-13  Werner Koch  <wk@gnupg.org>

	build: Update config.{guess,sub} to {2016-05-15,2016-06-20}.
	* build-aux/config.guess: Update.
	* build-aux/config.sub: Update.

	core: New GPGME_DATA_ENCODING_MIME.
	* src/gpgme.h.in (GPGME_DATA_ENCODING_MIME): New.
	* src/data.c (gpgme_data_set_encoding): Adjust check.
	* src/engine-gpg.c (have_gpg_version): New.
	(gpg_encrypt, gpg_encrypt_sign): Pass flag '--mimemode'.
	(gpg_sign): Ditto.

	* lang/cpp/src/data.h (GpgME): Add MimeEncoding.
	* lang/cpp/src/data.cpp (encoding, setEncoding): Support MimeEncoding.

	* src/gpgme-tool.c (server_data_encoding): Add flag --mime.

	core: Pass the engine's version string to the engine's new function.
	* src/engine-backend.h (engine_ops): Add arg 'version' to NEW.
	* src/engine-assuan.c (llass_new): Add dummy arg 'version'.
	* src/engine-g13.c (g13_new): Ditto.
	* src/engine-gpgconf.c (gpgconf_new): Ditto.
	* src/engine-gpgsm.c (gpgsm_new): Ditto.
	* src/engine-spawn.c (engspawn_new): Ditto.
	* src/engine-uiserver.c (uiserver_new): Ditto.
	* src/engine.c (_gpgme_engine_new): Pass version string to the new
	function.
	* src/engine-gpg.c (struct engine_gpg): Add field 'version'.
	(gpg_new): Add arg 'version'.
	(gpg_release): Free VERSION.

2016-07-13  Andre Heinecke  <aheinecke@intevation.de>

	Cpp: Add feature enum for new identify.
	* lang/cpp/src/context.cpp (supported_features2): Add
	BinaryAndFineGrainedIdentify
	* lang/cpp/src/global.h (Feature2): ditto.

2016-07-12  Justus Winter  <justus@g10code.com>

	python: Port more tests.
	* lang/python/pyme/core.py (Context.op_keylist_all): Add missing
	'op_keylist_end'.
	(Context.op_trustlist_all): Fix function. Add missing
	'op_trustlist_end'.
	* lang/python/tests/Makefile.am (pytests): Add new files.
	* lang/python/tests/t-import.py: New file.
	* lang/python/tests/t-keylist.py: Likewise.
	* lang/python/tests/t-trustlist.py: Check alternate interface.

	python: Improve python packaging.
	* lang/python/Makefile.am: Sign source releases, and upload them.
	* lang/python/setup.py.in: Add categories.

2016-07-12  Andre Heinecke  <aheinecke@intevation.de>

	m4: Don't set fpic for qt on windows.
	* m4/qt.m4 (FIND_QT): Do not set fpic for windows.

	m4: Use LIBS instead of LDFLAGS for Qt libs.
	* m4/qt.m4: Modify LIBS instead of LDFLAGS for link test.

	Bump version to 1.7.0.
	* configure.ac(mym4_version_minor),
	(mym4_version_micro): Next release will be 1.7.0

	Qt: Install CamelCase forward includes.
	* lang/qt/src/Makefile.am (camelcase_headers): New. Create and install
	CamelCase headers.

	Qt: Export VerifyDetachedJob.
	* lang/qt/src/verifydetachedjob.h (VerifyDetachedJob): Export it.

	Qt/Cpp: Add version headers.
	* lang/cpp/src/gpgmepp_version.h.in,
	lang/qt/src/qgpgme_version.h.in: New. Version information.
	* lang/qt/src/Makefile.am, lang/cpp/src/Makefile.am: Add them.
	* configure.ac: Configure them.

	Qt/Cpp: Add license blurb to export headers.
	* lang/cpp/src/gpgmepp_export.h,
	lang/qt/src/qgpgme_export.h: Add license blurb.

2016-07-11  Justus Winter  <justus@g10code.com>

	python: Fix distcheck.
	* lang/python/Makefile.am (EXTRA_DIST): Add missing files.

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

	m4: Add compile / link check for qt.
	* m4/qt.m4 (FIND_QT): Check if a qt application can be compiled and
	linked.

2016-07-11  Justus Winter  <justus@g10code.com>

	python: Enable out-of-tree build of pyme bindings.
	* lang/python/MANIFEST.in: Update manifest template.
	* lang/python/Makefile.am: Copy more files, move generation of files
	to Python build script, add 'sdist' target to build a Python source
	distribution.
	* lang/python/gpgme-h-clean.py: Add code to build 'errors.i'.
	* lang/python/setup.py.in: Generate files, enable out-of-tree builds.

	python: Do not depend on access to internal data structures.
	* lang/python/gpgme.i (gpgme_data_t): Rework so that it works without
	access to the definition of 'struct gpgme_data'.
	* lang/python/helpers.c (object_to_gpgme_data_t): Add assertion.

	python: Make result wrapping backwards compatible.
	* lang/python/pyme/results.py (Result.__init__): Skip missing fields.

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

	Qt: Fix memleaks in tests.
	* lang/qt/tests/t-keylist.cpp(cleanupTestCase): Ensure that
	posted events are handled for autodeletion.
	(testSingleKeylistSync): delete job.
	* lang/qt/tests/t-ownertrust.cpp(cleanupTestCase): Ditto
	* lang/qt/tests/t-ownertrust.cpp(testChangeOwnerTrust): Delete
	keylistjobs.
	* lang/qt/tests/t-keylocate.cpp(cleanupTestCase): Ditto

	Qt: Add some general Protocol documentation.
	* lang/qt/src/protocol.h (Protocol): Add doc.

	Qt: Disable t-tofuinfo tests.
	* lang/qt/tests/t-tofuinfo.cpp: Disable tests.

2016-07-08  Justus Winter  <justus@g10code.com>

	src: Fix error handling.
	* src/encrypt.c (encrypt_status_handler): Fix error handling, ||
	conflates errors.

	python: Fix raising stashed exceptions.
	Fixes an issue with newer versions of Python.

	* lang/python/helpers.c (pygpgme_raise_callback_exception): Be more
	careful when restoring the exception.

2016-07-07  Justus Winter  <justus@g10code.com>

	python: Fix distcheck.
	* lang/python/INSTALL: Drop obsolete file.
	* lang/python/Makefile.am (EXTRA_DIST): Add missing files.
	(CLEANFILES): Remove generated files.
	(clean-local): Fix permissions of copied files.
	* lang/python/tests/Makefile.am (TESTS): Use our own setup and
	teardown scripts.
	(EXTRA_DIST): Add missing files.
	* lang/python/tests/final.py: New file.
	* lang/python/tests/initial.py: Likewise.

	qt: Fix distcheck.
	* lang/qt/src/Makefile.am (qgpgme_headers): Add missing file.
	(CLEANFILES): Add generated file.
	* lang/qt/tests/Makefile.am (clean-local): Remove private keys.

	cpp: Fix distcheck.
	* lang/cpp/src/Makefile.am (CLEANFILES): Remove generated file.

2016-07-06  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Add test for publicKeyAlgorithmAsString.
	* lang/qt/tests/t-keylist.cpp (testPubkeyAlgoAsString): New.

	Cpp: Expose gpgme_pubkey_algo_name.
	* lang/cpp/src/key.cpp (Subkey::publicKeyAlgorithmAsString): New
	static variant.
	* lang/cpp/src/key.h: Declare function. Clarify comment about name
	mismatch.

	Qt: Add check for pubkeyAlgo in t-keylist.
	* lang/qt/tests/t-keylist.cpp (testSingleKeyListSync): Check
	pubkeyAlgo.

	Cpp: Add PubkeyAlgo enum.
	* lang/cpp/src/key.h (Subkey::PubkeyAlgo): New enum.
	(Subkey::publicKeyAlgorithm): Change return type.
	* lang/cpp/src/key.cpp (Subkey::publicKeyAlgorithm): Use enum.

	Qt: Fix include order when buildin test.
	* lang/qt/tests/Makefile.am (AM_CPPFLAGS): Include cpp before
	gpgme src directory.

	Revert "Qt: More robust lookup of Cpp's context.h"
	* lang/qt/src/threadedjobmixin.h: Revert using full path
	for context.h

2016-07-05  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Fix test build with Qt < 5.4.0.
	* lang/qt/tests/t-keylist.cpp,
	lang/qt/tests/t-keylocate.cpp,
	lang/qt/tests/t-ownertrust.cpp: Use old style SIGNAl syntax for
	QSignalSpy

	Qt: More robust lookup of Cpp's context.h.
	* lang/qt/src/threadedjobmixin.h: When building qgpgme look for
	context.h in the full cpp subdirectory.

	w32: Fallback to 2.1 reg key for gpgconf search.
	* src/w32-util.c (_gpgme_get_gpgconf_path): Fallback to 2.1 installer
	 registry key.

2016-07-04  Andre Heinecke  <aheinecke@intevation.de>

	Doc: Document pinentry mode.
	* doc/gpgme.texi (Passphrase Callback): Document as context
	attribute.
	(gpgme_set_passphrase_cb): Note that this requires LOOPBACK mode
	with GnuPG 2.1.

	Qt: Add testTofuSignCount.
	* src/lang/qt/tests/t-tofuinfo.cpp(testTofuSignCount): New.
	(initTestCase): Set gpg-agent loopback pinentry config.
	(signAndVerify): Helper for tofuTestSignCount.

	Qt: Add test passphrase provider.
	* lang/qt/tests/t-support.h (TestPassphraseProvider): New.
	* lang/qt/tests/Makefile.am (t_tofuinfo_SOURCES): Add t-support.h

	Cpp: Add support for TOFU_CONFLICT sigsum.
	* lang/cpp/src/verificationresult.cpp (GpgME::Signature::Summary):
	Handle TOFU_CONFLICT.
	* lang/cpp/src/verificationresult.h (Summary): Add TofuConflict.

	Cpp: Add support for pinentry_mode.
	* lang/cpp/src/context.cpp (Context::pinentryMode): Return mode.
	(Context::setPinentryMode): Set mode.
	* lang/cpp/src/context.h (PinentryMode): Add enum.

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

	Qt: Add test for TofuInfo.
	* lang/qt/tests/t-tofuinfo.cpp: New.
	* lang/qt/tests/Makefile.am: Update accordingly.

	Cpp: Add TofuInfo to signatures.
	* lang/cpp/src/tofuinfo.cpp, lang/cpp/src/tofuinfo.h: New class.
	* lang/cpp/src/verificationresult.cpp (Signature::tofuInfo): New.
	(VerificationResult::Private): Handle tofu info.
	(GpgME::operator<<(std::ostream &os, const Signature &sig)): Include
	TofuInfo in dump.
	* lang/cpp/src/verificationresult.h (Signature::tofuInfo): New.
	* lang/cpp/src/Makefile.am (main_sources, gpgmepp_headers): Add
	new files.
	* configure.ac (LIBGPGMEPP_LT_REVISION): Bump for new API.

	core: Clarify documentation of tofu_stats address.
	* src/gpgme.h.in: Mention that Address is not always in addr-spec.

	core: Fix identify for armored detached sigs.
	* src/data-identify.c (basic_detection): Return signature for
	signature.

2016-06-27  Andre Heinecke  <aheinecke@intevation.de>

	Cpp: Expose new data_identify values.
	* lang/cpp/src/data.cpp (GpgME::Data::type): Handle PGP Encrypted
	 and Signature.
	* lang/cpp/src/data.h: Add values accordingly.

	Cpp: Do not treat KEYEXPIRED as error.
	* lang/cpp/src/editinteractor.cpp (status_to_error): No error
	for KEYEXPIRED.

2016-06-24  Andre Heinecke  <aheinecke@intevation.de>

	tests: Add new test tool run-decrypt.
	* tests/run-decrypt.c: New.
	* tests/Makefile.am (noinst_PROGRAMS): Add run-decrypt.

2016-06-23  Werner Koch  <wk@gnupg.org>

	core: Add closer inspection of "PGP MESSAGE".
	* src/data-identify.c (inspect_pgp_message): New.
	(basic_detection): Un-const arg DATA. Call inspect_pgp_message.

	core: Add a base 64 decoder.
	* src/b64dec.c: New. Taken from gnupg.  Prefix function names with
	_gpgme_ and change to use standard C malloc functions.
	* src/util.h.h (struct b64state): New.
	* src/Makefile.am (main_sources): Add file.

2016-06-22  Werner Koch  <wk@gnupg.org>

	core: Detect compressed signed OpenPGP data.
	* src/data-identify.c (next_openpgp_packet): Allow partial encoding.
	(pgp_binary_detection): Handle compressed packets.

2016-06-21  Werner Koch  <wk@gnupg.org>

	tests: Add new test tool run-identify.
	* src/gpgme-tool.c (gt_identify): Add new strings.
	* tests/run-identify.c: New.
	* tests/Makefile.am (noinst_PROGRAMS): Add run-identify.

	core: Enhance gpgme_data_identify to detect binary PGP messages.
	* src/gpgme.h.in (GPGME_DATA_TYPE_PGP_ENCRYPTED): New.
	(GPGME_DATA_TYPE_PGP_SIGNATURE): New.
	* src/data-identify.c: Add enum for OpenPGP packet types.
	(buf32_to_ulong): New.
	(next_openpgp_packet): New.  Based on the gnupg/kbx/keybox-openpgp.c
	implementation and relicensed to LGPL by g10 Code.
	(pgp_binary_detection): New.
	(basic_detection): Call pgp_binary_detection instead of returning
	unknown.

2016-06-16  Justus Winter  <justus@g10code.com>

	python: Improve autmatically generated docstrings.
	* lang/python/gpgme.i: Add comment.
	* lang/python/pyme/core.py (__getattr__): Rewrite automatically
	generated doctrings for the wrapper methods.

	python: Make result objects more robust.
	Results returned by the GPGME are fragile, i.e. they are only valid
	until the next operation is performed in the context.

	We cannot arbitrarily constrain the lifetime of Python objects, we
	therefore create deep copies of the results.

	* lang/python/gpgme.i (gpgme_tofu_info_t): Turn these into a list.
	(gpgme_*_result_t): Create deep copies of these objects.
	* lang/python/helpers.c (pygpgme_wrap_fragile_result): New function.
	* lang/python/helpers.h (pygpgme_wrap_fragile_result): New prototype.
	* lang/python/pyme/results.py: New file.

	python: Avoid creating SWIG proxy classes.
	* lang/python/Makefile.am (gpgme_wrap.c): Use '-builtin' to make SWIG
	generate builtin types for c types.
	* lang/python/gpgme.i (pygpgme_wrap_gpgme_data_t): Adapt slightly.

	python: Simplify wrapping glue.
	* lang/python/pyme/core.py: Rename '_getctype' to '_ctype' and turn it
	  into a string.  Likewise rename '_getnameprepend' to '_cprefix'.
	* lang/python/helpers.c: Adapt accordingly.

	python: Rework callbacks.
	Simplify how the lifetime of callback arguments is managed.

	* lang/python/gpgme.i (gpgme_edit_cb_t): Check arguments.
	(PyObject_p_p, void_p_p): Drop rather dangerous interface.
	(pygpgme_unwrap_gpgme_ctx_t): New function.
	* lang/python/helpers.c (pygpgme_clear_generic_cb): Drop dangerous
	function.
	(pyPassphraseCb): Assert contract.
	(pygpgme_set_passphrase_cb): Use Python's calling convention so that
	we can raise exceptions.  Hand in 'self', get the wrapped object, and
	simply store the hook data as attribute of the wrapper object.
	(pyProgressCb, pygpgme_set_progress_cb): Likewise.
	(pygpgme_set_status_cb): Likewise.
	(pygpgme_data_new_from_cbs): Likewise.
	* lang/python/helpers.h (pygpgme_clear_generic_cb): Drop prototype.
	(pygpgme_set_passphrase_cb): Update prototype.
	(pygpgme_set_progress_cb): Likewise.
	(pygpgme_set_status_cb): Likewise.
	(pygpgme_data_new_from_cbs): Likewise.
	(pygpgme_unwrap_gpgme_ctx_t): New prottotype.
	* lang/python/pyme/core.py (Context, Data): Update callsites.

	python: Wrap objects implementing the buffer protocol.
	* lang/python/Makefile.am: Add the toplevel source directory to CFLAGS
	when compiling the bindings so that we can use private header files.
	* lang/python/gpgme.i (gpgme_data_t): Rework the object wrapping.  Do
	not create a Python wrapper object, merely a gpgme_data_t object, and
	keep references to buffer objects, if any.  If necessary, update the
	buffer after the function call.
	(pygpgme_wrap_gpgme_data_t): New function.
	* lang/python/helpers.c (object_to_gpgme_data_t): Rework object
	wrapping.  Also wrap objects implementing the buffer protocol.
	* lang/python/helpers.h (object_to_gpgme_data_t): Update prototype.
	(pygpgme_wrap_gpgme_data_t): New prototype.
	* lang/python/tests/t-idiomatic.py: Demonstrate this.

	python: Add properties to wrapped object.
	* lang/python/pyme/core.py (GpgmeWrapper.__repr__): Saner
	representation.
	(GpgmeWrapper.__str__): Construct a nicer human readable string.
	(GpgmeWrapper._boolean_properties): New field.
	(GpgmeWrapper.__wrap_boolean_property): New function.
	(GpgmeWrapper.__getattr__): Wrap functions using properties.
	(GpgmeWrapper.__setattr__): New method.  Likewise wrap functions.
	(Context.signers): New property.
	(Context.pinentry_mode): Likewise.
	(Context._boolean_properties): List boolean properties.
	(Context.__init__): Add keyword arguments for properties and apply
	them.

	python: Improve the documentation.
	* lang/python/Makefile.am: Copy the README file.
	* lang/python/README: Rename, convert to org, and update.
	* lang/python/pyme/__init__.py: Move license out of the docstring,
	update docstring.
	* lang/python/pyme/core.py: Add and update docstrings.

	python: Get version information from the build system.
	* configure.ac: Generate 'setup.py' and 'version.py'.
	* lang/python/Makefile.am: Use generated setup script.
	* lang/python/pyme/version.py: Turn it into a template, and get
	version information from the build system.  Also drop some variables.
	* lang/python/setup.py: Likewise.  This way we can avoid importing the
	version module, which is frowned upon and actually caused a problem.

	python: Fix exception leak.
	* lang/python/helpers.c (pygpgme_stash_callback_exception): Fix leak.

	python: Fix license.
	Other parts of the build system are also LGPLed.

	* lang/python/Makefile.am: Fix license.

2016-06-14  Werner Koch  <wk@gnupg.org>

	core: Make sure FD_SET is not used with an out of range fd.
	* src/posix-io.c (_gpgme_io_select): Check for FD out of range.

2016-06-08  Justus Winter  <justus@g10code.com>

	python: Improve error handling.
	* lang/python/helpers.c (pyPassphraseCb): Handle write errors.
	(pyEditCb): Likewise.

	python: Add function to raise exceptions from c.
	* lang/python/helpers.c (pygpgme_raise_exception): New function.

	python: Fix stripping deprecated functionality.
	* lang/python/Makefile.am (gpgme.h): Add script as input.
	* lang/python/gpgme-h-clean.py (deprec_func): Also match struct
	members.
	(line_break): Fix matching on struct members.

	python: Fix type.
	* lang/python/gpgme.i: Use correct Python type for size.

	python: Implement the context manager protocol.
	* lang/python/pyme/core.py (Context.__del__): Make function
	idemptotent.
	(Context.{__enter__,__exit__}): Implement the context manager
	protocol.
	(Data.__del__): Make function idemptotent, drop debug print.
	(Data.{__enter__,__exit__}): Implement the context manager
	protocol.
	* lang/python/tests/t-idiomatic.py: Demonstrate this.

2016-06-07  Justus Winter  <justus@g10code.com>

	python: Fix error handling.
	* lang/python/gpgme.i: Fix freeing an uninitialized pointer in the
	error handling of generated wrapper functions by explicitly storing
	the pointer in a local variable which can be initialized.

2016-06-06  Justus Winter  <justus@g10code.com>

	python: Wrap file-like objects on demand.
	* lang/python/gpgme.i (gpgme_data_t): Use new function to create
	wrapper objects if necessary, and deallocate them after the function
	call.
	* lang/python/helpers.c (object_to_gpgme_data_t): New function.
	* lang/python/helpers.h (object_to_gpgme_data_t): New prototype.
	* lang/python/tests/Makefile.am (pytests): Add new test.
	* lang/python/tests/t-idiomatic.py: New file.

	python: Move helper function.
	* lang/python/gpgme.i (object_to_gpgme_t): Move...
	* lang/python/helpers.c: ... here.
	* lang/python/helpers.h (object_to_gpgme_t): New prototype.

	python: Fix error handling.
	* lang/python/gpgme.i (object_to_gpgme_t): Properly propagate
	exceptions.

	python: Initialize GPGME for the user.
	* lang/python/pyme/core.py: Call 'check_version' and explain why.
	* lang/python/tests/support.py (init_gpgme): Drop call here.

2016-06-01  Justus Winter  <justus@g10code.com>

	python: Fix test suite with GnuPG prior to 2.1.12.
	* lang/python/tests/Makefile.am (gpg-agent.conf): Use
	'allow-loopback-pinentry'.

	python: Make Python detection more robust.
	Previously, missing Python development packages made configure fail
	instead of merely disabling the bindings.

	* configure.ac: Check for 'PYTHON_VERSION'.
	* m4/ax_python_devel.m4: Make test non-fatal.

	python: Improve build system integration, fix warnings.
	* lang/python/Makefile.am: Pass CFLAGS to python build system.
	* lang/python/helpers.c (pyPassphraseCb): Use correct type for length.
	(pygpgme_data_new_from_cbs): Drop unused variable.

2016-06-01  Andre Heinecke  <aheinecke@intevation.de>

	Cpp: Use whitelist for status messages.
	* lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
	Use whitelist instead of blacklist.

	Qt: Fix debug output in t-ownertrust.
	* lang/qt/tests/t-ownertrust.cpp (testChangeOwnerTrust): Remove
	general debug of trust level. Add debug output for error.

2016-06-01  Justus Winter  <justus@gnupg.org>

	tests: Fix notation tests.
	* lang/python/tests/t-sig-notation.py (check_result): Check critical
	flag.
	* tests/gpg/t-sig-notation.c (check_result): Likewise.

	Fixes-commit: 1cacd7d0

2016-06-01  Werner Koch  <wk@gnupg.org>

	core: Set notation flags for verify.
	* src/gpgme.h.in (GPGME_STATUS_NOTATION_FLAGS): New.
	* src/status-table.c (status_table): Add new status.
	* src/verify.c (parse_notation): Handle flags.  Also fix NOTATION_DATA
	in case gpg would not percent-escape spaces.
	(_gpgme_verify_status_handler): Handle flags.
	* tests/run-verify.c (print_result): Print notaion data.

2016-05-31  Tobias Mueller  <muelli@cryptobitch.de>

	python: use GPG_ERROR_CONFIG variable.
	instead of calling gpg-error-config.
	This is useful when configuring with --with-gpgerror-prefix
	because then GPG_ERROR_CONFIG contains the correct
	/path/to/bin/gpg-error-config whereas calling gpg-error-config
	directly would look in the user's PATH (and not in the prefix
	where gpg-error-config was installed).

2016-05-31  Justus Winter  <justus@gnupg.org>

	python: Port more tests.
	* lang/python/gpgme.i: Hide length fields of notations.
	* lang/python/tests/Makefile.am (pytests): Add new tests.
	* lang/python/tests/t-decrypt-verify.py: New file.
	* lang/python/tests/t-sig-notation.py: Likewise.
	* lang/python/tests/t-verify.py: Likewise.

2016-05-27  Werner Koch  <wk@gnupg.org>

	Speedup closing of fds before exec.
	* src/posix-io.c [__linux__]: Include dirent.h.
	(get_max_fds) [__linux__]: Try to figure out the highest used fd.

2016-05-27  Justus Winter  <justus@gnupg.org>

	python: Port more tests.
	* lang/python/pyme/core.py (Data._error_check): Add
	'gpgme_data_get_file_name' to the list of functions not returning an
	error code.
	* lang/python/tests/Makefile.am (pytests): Add new tests.
	* lang/python/tests/support.py (verbose): New variable.
	* lang/python/tests/t-data.py: Test setting and getting the filename.
	* lang/python/tests/t-encrypt-large.py: New file.
	* lang/python/tests/t-file-name.py: Likewise.
	* lang/python/tests/t-trustlist.py: Likewise.

	python: Implement data callbacks.
	* lang/python/gpgme.i (object_to_gpgme_t): Set exception on error.
	* lang/python/helpers.c (pyDataReadCb): New function.
	(pyDataWriteCb): Likewise.
	(pyDataSeekCb): Likewise.
	(pyDataReleaseCb): Likewise.
	(pygpgme_data_new_from_cbs): Likewise.
	* lang/python/helpers.h (pygpgme_data_new_from_cbs): New prototype.
	* lang/python/pyme/core.py (Data.__init__): Fix docstring, fix read
	callbacks.
	(Data.__del__): Fix read callbacks.
	(Data._free_readcb): Drop function.
	(Data._free_datacbs): New function.
	(Data.new_from_cbs): Fix setting the callbacks.
	(Data.write): Raise stashed exceptions.
	(Data.read): Likewise.
	* lang/python/tests/t-callbacks.py: Test new functionality.
	* lang/python/tests/t-data.py: Likewise.

	python: Fix object deallocation.
	Handing a reference to the wrapper object created a non-trivial
	circular reference that Pythons garbage collector is unable to break.
	Explicitly break it by using a weak reference.

	* lang/python/helpers.c (pygpgme_stash_callback_exception): Retrieve
	object from weak reference.
	* lang/python/pyme/core.py (Context.__del__): Free status callback.
	(Context.set_passphrase_cb): Use a weak reference.
	(Context.set_progress_cb): Likewise.
	(Context.set_status_cb): Likewise.
	(Context.op_edit): Likewise.

	Improve comments.
	* src/gpgme.h.in (gpgme_data_seek_cb_t, gpgme_data_seek): Clarify that
	these functions return the new offset.
	(gpgme_data_release_cb_t): Fix name of parameter.

	python: Fix reading data from existing files.
	* lang/python/pyme/core.py (Data.__init__): Add 'copy' kwargument, and
	pass it to functions supporting it.  PEP8 fix.
	(Data.new_from_fd): PEP8 fix.
	(Data.new_from_file): Give a more helpful error message if copy is
	False.  PEP8 fix.
	(Data.new_from_fd): Hand the file descriptor to
	'gpgme_data_new_from_fd', not a stream.  Fix docstring.
	* lang/python/tests/t-data.py: Add tests for this.

2016-05-25  Justus Winter  <justus@gnupg.org>

	src: Fix trace string.
	* src/data-compat.c (gpgme_data_new_from_file): Fix trace string.

2016-05-24  Justus Winter  <justus@gnupg.org>

	python: Improve and test Context.wait.
	* lang/python/pyme/core.py (Context.wait): Improve docstring.  As the
	context passed to 'gpgme_wait' is never NULL, it is pointless to look
	at the returned context.  Always raise exceptions.
	* lang/python/tests/Makefile.am (pytests): Add new test.
	* lang/python/tests/t-wait.py: New file.

	python: Make all GnuPG errors available.
	* lang/python/Makefile.am (errors.i): Generate file.
	* lang/python/gpgme.i: Include generated file.
	* lang/python/pyme/errors.py: Pull in all errors and error sources.

	python: Move the base wrapper class.
	* python/lang/pyme/util.py (GpgmeWrapper): Move...
	* python/lang/pyme/core.py: ... here.

	python: Support status callbacks.
	* lang/python/helpers.c (pyStatusCb): New function.
	(pygpgme_set_status_cb): Likewise.
	* lang/python/helpers.h (pygpgme_set_status_cb): New prototype.
	* lang/python/pyme/core.py (Context.__init__): Initialize
	'last_statuscb'.
	(Context._free_statuscb): New function.
	(Context.set_status_cb): Likewise.
	* lang/python/tests/t-callbacks.py: Test status callbacks.

	python: Improve docstring.
	* lang/python/pyme/core.py (Context.set_progress_cb): Improve
	docstring.

2016-05-24  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Fix test build with clang.
	* lang/qt/tests/Makefile.am (LDADD): Explicitly add -lstdc++

	Cpp: Set -std=c++11 also if CXXCPP is already set.
	* m4/ax_cxx_compile_stdxx.m4 (AX_CXX_COMPILE_STDCXX): Set CXXCPP if
	neccessary.

2016-05-24  Justus Winter  <justus@gnupg.org>

	python: Improve support for edit callbacks.
	* lang/python/helpers.c (pyEditCb): Stash exceptions.
	* lang/python/pyme/core.py (Context.op_edit): Hand in 'self'.
	* lang/python/tests/Makefile.am (py_tests): Add new test.
	* lang/python/tests/t-callbacks.py: Test edit callbacks.
	* lang/python/tests/t-edit.py: New file.

2016-05-23  Justus Winter  <justus@gnupg.org>

	python: Fix hook.
	* lang/python/helpers.c (pyProgressCb): Fix getting hook data.
	* lang/python/tests/t-callbacks.py: Show that this works.

	python: Move edit callback function.
	* lang/python/gpgme.i (pyEditCb): Move...
	* lang/python/helpers.c: ... here.
	* lang/python/helpers.h (pyEditCb): New prototype.

	python: Port more tests.
	* lang/python/tests/Makefile.am (TESTS_ENVIRONMENT): Set
	LD_LIBRARY_PATH.
	(pytests): Add new tests.
	* lang/python/tests/t-callbacks.py: Trim imports.
	* lang/python/tests/t-encrypt-sign.py: New file.
	* lang/python/tests/t-export.py: Likewise.
	* lang/python/tests/t-signers.py: Likewise.

	python: Translate list of strings.
	* lang/python/gpgme.i: Add typemap translating list of strings.

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

	api: Return Tofu info for signatures.
	* src/gpgme.h.in (gpgme_tofu_policy_t): New.
	(gpgme_status_code_t): Add status codes for TOFU.
	(struct _gpgme_tofu_info, gpgme_tofu_info_t): New.
	(struct _gpgme_signature): Add field 'tofu'.
	* src/status-table.c (status_table): Add new codes.
	* src/verify.c: Include limits.h.
	(release_tofu_info): New.
	(release_op_data): Call that.
	(parse_tofu_user): New.
	(parse_tofu_stats): New.
	(parse_tofu_stats_long): New.
	(_gpgme_verify_status_handler): Handle TOFU status lines.

	* tests/run-verify.c (print_description): New.
	(print_result): print tofu info.

	api: Add new context flag "raw-description".
	* src/context.h (struct gpgme_context): Add field raw_description.
	* src/gpgme.c (gpgme_set_ctx_flag): New flag.

	core: New functions to help parsing of status lines.
	* src/conversion.c (_gpgme_split_fields): New.
	(_gpgme_strtoul_field): New.

2016-05-20  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Add test for changeownertrust.
	* lang/qt/tests/t-ownertrust.cpp: New test.
	* lang/qt/tests/Makefile.am: Add test.

	Cpp: Ignore STATUS_KEY_CONSIDERED when editing.
	* lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
	Handle GPGME_STATUS_KEY_CONSIDERED.

2016-05-19  Werner Koch  <wk@gnupg.org>

	api: Add new function gpgme_set_ctx_flag.
	* src/gpgme.h.in (gpgme_set_ctx_flag): New prototype.
	* src/gpgme.c (gpgme_set_ctx_flag): New.
	* src/gpgme.def, src/libgpgme.vers: Add new function.
	* src/context.h (struct gpgme_context): Add FULL_STATUS.
	* src/decrypt.c (_gpgme_decrypt_status_handler): Do not call the
	  status callback if FULL_STATUS is set.
	* src/genkey.c (genkey_status_handler): Ditto.
	* src/passphrase.c (_gpgme_passphrase_status_handler): Ditto.
	* src/sign.c (_gpgme_sign_status_handler): Ditto.

	* src/engine-backend.h (struct engine_ops): Add SET_STATUS_CB and add
	adjust all definitions of that variable.
	* src/engine.c (_gpgme_engine_set_status_cb): New.
	* src/op-support.c (_gpgme_op_reset): Call this function.

	* src/engine-gpg.c (struct engine_gpg): Add fields MON_CB and
	MON_CB_VALUE.
	(gpg_set_status_cb): New.
	(_gpgme_engine_ops_gpg): Register that function.
	(read_status): Call the monitor callback.

	* src/engine-gpgsm.c (struct engine_gpgsm): Add fields MON_CB and
	MON_CB_VALUE.
	(_gpgme_engine_ops_gpgsm): Register that function.
	(gpgsm_assuan_simple_command): Change first arg to be an engine
	context and adjust call callers.  Call the monitor callback.

	* src/engine-uiserver.c (struct engine_uiserver): Add fields MON_CB
	and MON_CB_VALUE.
	(_gpgme_engine_ops_uiserver): Register that function.
	(uiserver_assuan_simple_command): Change first arg to be an engine
	context and adjust call callers.  Call the monitor callback.

	* tests/run-verify.c (status_cb): New.
	(print_result): Print algo names.
	(main): Add option --status.

	api: Remove arbitrary restriction from gpgme_op_verify.
	* src/verify.c (verify_start): Do not return GPG_ERR_INV_VALUES when
	when SIGNED_TEXT is not given.

2016-05-19  Justus Winter  <justus@gnupg.org>

	python: Improve progress callbacks.
	* lang/python/helpers.c (pyProgressCb): Stash python errors, convert
	'what' to Unicode object.
	* lang/python/pyme/core.py (Context.set_progress_cb): Hand in 'self'.
	* lang/python/tests/t-callbacks.py: Test progress callbacks.

	python: Robust exception handling in callbacks.
	* lang/python/helpers.c (pygpgme_stash_callback_exception): New
	function.
	(pygpgme_raise_callback_exception): Likewise.
	(pyPassphraseCb): Stash python errors.
	* lang/python/helpers.h (pygpgme_raise_callback_exception): New
	prototype.
	* lang/python/pyme/core.py ({Context,Data}.__init__): Move common
	initialization to superclass.
	(Context.set_progress_cb): Hand in 'self'.
	* lang/python/pyme/util.py (GpgmeWrapper.__init__): New function.
	(GpgmeWrapper.__getattr__): Raise stashed exceptions.
	* lang/python/tests/Makefile.am (py_tests): Add new test.
	* lang/python/tests/t-callbacks.py: New file.

2016-05-19  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Check for graphviz and set HAVE_DOT correctly.
	* configure.ac: Check for graphviz and define HAVE_DOT.
	* lang/qt/doc/Doxyfile.in (HAVE_DOT): Use variable.

2016-05-19  Justus Winter  <justus@gnupg.org>

	python: Add more tests.
	* lang/python/tests/Makefile.am (py_tests): Add new tests.
	* lang/python/tests/support.py (print_data): New function.
	* lang/python/tests/t-decrypt.py: Use new function.
	* lang/python/tests/t-encrypt.py: Likewise.
	* lang/python/tests/t-sign.py: New file.
	* lang/python/tests/t-encrypt-sym.py: Likewise.

	python: More type conversion fixes.
	* lang/python/helpers.c (pyPassphraseCb): Cope with 'uid_hint' being
	NULL, convert it to an Unicode object, and cope with the callback
	returning both Unicode and bytes objects.

	python: Fix import.
	* lang/python/helpers.c (pygpgme_exception_init): Make module import
	relative.

2016-05-19  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Fix compilation of unit tests.
	* lang/qt/tests/Makefile.am (AM_CPPFLAGS): Add -DBUILDING_QGPGME.

2016-05-18  Justus Winter  <justus@gnupg.org>

	python: Various fixes.
	* configure.ac: Fix SWIG detection, bump required Python version.
	* lang/python/Makefile.am: Portability fix.

2016-05-18  Andre Heinecke  <aheinecke@intevation.de>

	Fix typo in compatibility declaration.
	* src/op-support.c (GPG_ERR_SUBKEYS_EXP_REV): Change to
	GPG_ERR_SUBKEYS_EXP_OR_REV.

2016-05-17  Werner Koch  <wk@gnupg.org>

	tests: New maintenance helper run-encrypt.
	* tests/run-encrypt.c: New.

	Return dedicated error code for all subkeys expired or revoked.
	* src/gpgme.h.in (GPGME_STATUS_KEY_CONSIDERED): New.
	(GPGME_SIGSUM_TOFU_CONFLICT): New.
	* src/status-table.c (KEY_CONSIDERED): New.
	* src/op-support.c (_gpgme_parse_inv_recp): Add argc KC_FPR and
	KC_FLAGS.  Use calloc.  Detect all expired or revoked subkeys.
	(_gpgme_parse_key_considered): New.
	* src/sign.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
	(release_op_data): Free KC_FPR.
	(_gpgme_sign_status_handler): Handle STATUS_KEY_CONSIDERED.
	* src/encrypt.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
	(release_op_data): Free KC_FPR.
	(_gpgme_encrypt_status_handler): Handle STATUS_KEY_CONSIDERED.

2016-05-17  Andre Heinecke  <aheinecke@intevation.de>

	Qt / Cpp: Port auto_ptr to unique_ptr.
	* lang/cpp/src/context.cpp,
	lang/cpp/src/context.h,
	lang/cpp/src/context_p.h (Context::createForEngine),
	(Context::edit, Context::startEditing),
	(Context::takeLastEditInteractor, Context::cardEdit),
	(Context::startCardEditing, Context::takeLastCardEditInteractor),
	(Context::assuanTransact, Context::startAssuanTransaction),
	(Context::takeLastAssuanTransaction): Port to unique_ptr.
	* lang/qt/src/qgpgmeadduseridjob.cpp,
	lang/qt/src/qgpgmechangeexpiryjob.cpp,
	lang/qt/src/qgpgmechangeownertrustjob.cpp,
	lang/qt/src/qgpgmechangepasswdjob.cpp,
	lang/qt/src/qgpgmesignkeyjob.cpp: Update accordingly.

2016-05-17  Justus Winter  <justus@gnupg.org>

	build: Add python autoconf macro.
	* m4/ax_python_devel.m4: New file.

	python: Clean up examples.
	* lang/python/examples/delkey.py: Clean up example.
	* lang/python/examples/encrypt-to-all.py: Likewise.
	* lang/python/examples/genkey.py: Likewise.
	* lang/python/examples/inter-edit.py: Likewise.
	* lang/python/examples/sign.py: Likewise.
	* lang/python/examples/signverify.py: Likewise.
	* lang/python/examples/simple.py: Likewise.
	* lang/python/examples/t-edit.py: Likewise.
	* lang/python/examples/verifydetails.py: Likewise.
	* lang/python/pyme/__init__.py: Likewise.

	python: Import GPGMEError.
	* pyme/core.py: Import GPGMEError.

	Fixes c5d118b2.

	python: Port more tests.
	* lang/python/Makefile.am: Add bits from the c test suite.
	* lang/python/support.py: New file.
	* lang/python/t-decrypt.py: Likewise.
	* lang/python/t-encrypt.py: Likewise.

2016-05-13  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Add keyLocateJob and test for it.
	* configure.ac (LIBQGPGME_LT_REVISION): Bump.
	* lang/qt/src/protocol.h (locateKeysJob): Add Job.
	* lang/qt/src/protocol_p.h (locateKeysJob): Implement.
	* lang/qt/tests/Makefile.am: Add t-keylocate.
	* lang/qt/tests/t-keylocate.cpp: New.

	Qt: Add missing copyright header in test.
	* lang/qt/tests/t-keylist.cpp: Add copyright header.

2016-05-12  Justus Winter  <justus@gnupg.org>

	python: Share generated methods between objects.
	* lang/python/pyme/util.py (GpgmeWrapper.__getattr__): Monkey-patch
	the class.
	* lang/python/tests/t-wrapper.py: Demonstrate the sharing.

	python: Raise exceptions on write errors.
	* lang/python/pyme/core.py (Data.write): Handle errors.
	* lang/python/pyme/errors.py (GPGMEError.fromSyserror): New function.

	python: Fix writing to data buffers.
	* lang/python/gpgme.i: Add typemap for buffers.
	* lang/python/pyme/core.py (Data.write): Fix function.
	* lang/python/tests/Makefile.am: Add new test.
	* lang/python/tests/t-data.py: New file.

	python: Add a test suite.
	* configure.ac: Add new Makefile.
	* lang/python/Makefile.am: Add subdirectory.
	* lang/python/tests/Makefile.am: New file.
	* lang/python/tests/t-wrapper.py: Likewise.

	python: Cache generated wrapper functions.
	* lang/python/util.py (GpgmeWrap.__getattr__): Cache generated wrapper
	functions.

	python: Fix function invocation.
	* lang/python/pyme/core.py (Data.new_from_fd): Fix function
	invocation.

	python: Fix name of exception, make slot methods explicit.
	* lang/python/pyme/util.py (GpgmeWrapper._getctype): Fix exception,
	add docstring.
	(GpgmeWrapper._getnameprepend): New function.
	(GpgmeWrapper._errorcheck): Likewise.

	python: Handle interpreter shutdown.
	* lang/python/pyme/core.py: Avoid races at interpreter shutdown.  This
	silences the most annoying occurrences, however this problem also
	affects the SWIG generated code, which might indicate that the real
	problem is somewhere else.  If so, this change can be easily reverted.

	python: Make test case more robust.
	* lang/python/examples/t-edit.py: Check if key is found.

	python: Fix type translation.
	* lang/python/gpgme.i: Adjust to Python3's string type being
	'Unicode', not 'bytes'.  Fix type checking.
	* lang/python/core.py (Data.write): Add docstring mentioning the
	expected type of parameter 'buffer'.
	(Data.read): Adjust read loop.  Also, use a saner chunk size, and join
	all chunks at the end instead of adding them.
	* lang/python/examples/simple.py: Adjust example.

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

	Cpp: Ensure gpgme.h is taken from current build.
	* lang/cpp/src/Makefile.am (AM_CPPFLAGS): Add gpgme.h location.

2016-05-11  Justus Winter  <justus@gnupg.org>

	python: Fix simple example.
	* lang/python/examples/simple.py: Flush stdout, encode name as
	UTF-8 before passing it to GPGME.

	python: Integrate into the build system.
	* configure.ac: Make Python bindings configurable, add new Makefile.
	* lang/python/Makefile.am: New file.
	* lang/python/setup.py: Integrate into the build system.
	* m4/ax_pkg_swig.m4: New file from the autoconf archive.
	* m4/m4_ax_swig_python.m4: Likewise.

2016-05-10  Andre Heinecke  <aheinecke@intevation.de>

	Qt / Cpp: Fix make dist.
	* lang/cpp/src/Makefile.am (EXTRA_DIST): Fix typo.
	(private_gpgmepp_headers): New. Private headers.
	(libgpgmepp_la_SOURCES): Add private headers.
	* lang/qt/src/Makefile.am (t_keylist_SOURCES): Remove non existent
	header.

2016-05-10  Justus Winter  <justus@gnupg.org>

	python: PEP8 fixes.
	Cherry picked from 0267c151.

2016-05-10  Andre Heinecke  <aheinecke@intevation.de>

	Qt: Make Protocol class public API.
	* lang/qt/src/Makefile.am (qgpgme_headers): Add protocol.h
	(private_qgpgme_headers): Add protocol_p.h
	* lang/qt/src/protocol.h: New. From QGpgMEBackend.
	* lang/qt/src/protocol_p.h: New. From QGpgMEBackend.
	* lang/qt/src/qgpgmebackend.h,
	lang/qt/src/qgpgmebackend.cpp (Protocol): Removed.

	Qt: Make doxygen quieter.
	* lang/qt/doc/Doxyfile.in: Quiet and no undocumented warnings.

	Qt: Only install public headers.
	* lang/qt/src/Makefile.am: Do not install all headers.

	Qt: Add test for async keylisting.
	* src/lang/qt/tests/t-keylist.cpp(KeyListTest::testKeyListAsync): New.

2016-05-10  Werner Koch  <wk@gnupg.org>

	Allow cc to detect missing cases in a switch.
	* src/delete.c (delete_status_handler): Remove default case from a
	switch so that cc can check the use of all enum values.

2016-05-06  Andre Heinecke  <aheinecke@intevation.de>

	Use common error message style for qt lang checks.
	* configure.ac: Use common error highliting for qt lang options.

	Qt: Fix license mentioned in README.
	* lang/qt/README: License is GPLv2+ and not LGPL.

	Add maybe mode for langs and default to it.
	* configure.ac (languages): Warn and disable langs for which
	requirements are not met.

	Cpp: Handle PINENTRY_LAUNCHED status line.
	* lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
	Add GPGME_STATUS_PINENTRY_LAUNCHED.

2016-04-12  Andre Heinecke  <aheinecke@intevation.de>

	Cpp: Add support for pubkey_algo_name.
	* lang/cpp/src/key.cpp (Subkey::algoName): New.
	* lang/cpp/src/key.h: Declare.

	Cpp: Add support for gpgme_data_identify.
	* lang/cpp/src/data.cpp (Data::type): New.
	* lang/cpp/src/data.h (Data::Type): New enum mapping.

	Fix configuration without Qt language.
	* configure.ac: Define HAVE_DOXYGEN also if qt should not be built.

2016-04-11  Andre Heinecke  <aheinecke@intevation.de>

	Qt/Cpp: Bump so version to 6.
	* configure.ac (LIBGPGMEPP_LT_CURRENT, LIBQGPGME_LT_CURRENT): Bump.

	Qt / Cpp: Mention coding style in READMES.
	* src/lang/cpp/README, src/lang/qt/README: Add hacking note.

	Qt: Add doc generation with doxygen.
	* configure.ac: Look for doxygen if qt is built.
	 Configure new files.
	* lang/qt/doc/Doxyfile.in: New.
	* lang/qt/doc/Makefile.am: New.
	* lang/qt/README: Update.

	Qt: Fix unit test by adding initial.test dep.
	* lang/qt/tests/t-keylist.cpp: Verify that GNUPGHOME is set.
	* lang/qt/tests/initial.test: New dummy test.
	* lang/qt/tests/Makefile.am: Add dependency to initial.test

	Qt: Remove remaining boost usage.
	* lang/qt/src/dataprovider.h,
	 lang/qt/src/decryptjob.h,
	 lang/qt/src/decryptverifyjob.h,
	 lang/qt/src/encryptjob.h,
	 lang/qt/src/qgpgmeadduseridjob.cpp,
	 lang/qt/src/qgpgmechangeexpiryjob.cpp,
	 lang/qt/src/qgpgmechangeownertrustjob.cpp,
	 lang/qt/src/qgpgmechangepasswdjob.cpp,
	 lang/qt/src/qgpgmedecryptjob.cpp,
	 lang/qt/src/qgpgmedecryptverifyjob.cpp,
	 lang/qt/src/qgpgmedeletejob.cpp,
	 lang/qt/src/qgpgmedownloadjob.cpp,
	 lang/qt/src/qgpgmeencryptjob.cpp,
	 lang/qt/src/qgpgmeexportjob.cpp,
	 lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
	 lang/qt/src/qgpgmeimportjob.cpp,
	 lang/qt/src/qgpgmekeygenerationjob.cpp,
	 lang/qt/src/qgpgmekeylistjob.cpp,
	 lang/qt/src/qgpgmenewcryptoconfig.cpp,
	 lang/qt/src/qgpgmenewcryptoconfig.h,
	 lang/qt/src/qgpgmesignencryptjob.cpp,
	 lang/qt/src/qgpgmesignjob.cpp,
	 lang/qt/src/qgpgmesignkeyjob.cpp,
	 lang/qt/src/qgpgmeverifydetachedjob.cpp,
	 lang/qt/src/qgpgmeverifyopaquejob.cpp,
	 lang/qt/src/signencryptjob.h,
	 lang/qt/src/signjob.h,
	 lang/qt/src/threadedjobmixin.cpp,
	 lang/qt/src/threadedjobmixin.h,
	 lang/qt/src/verifydetachedjob.h,
	 lang/qt/src/verifyopaquejob.h: Remove boost usage.

	Qt: Remove predicates.h and stl_util.h.
	* src/lang/qt/predicates.h, src/lang/qt/stl_util.h: Removed.

	Qt: Remove usage of stl_util.h and predicates.h.
	* src/lang/qt/qgpgmelistallkeysjob.cpp: Use comperators from
	  gpgmepp instead of detail. Remove boost usage.

	Cpp: Add string comparators for keys.
	* lang/cpp/src/global.h (GPGMEPP_MAKE_STRCMP): New.
	  (_gpgmepp_strcmp): NULL save wrapper around std::strcmp.
	* lang/cpp/src/key.h: Add comparators for various attributes.

	Cpp: Remove last usages of boost.
	* lang/cpp/src/configuration.cpp: Use std::remove_pointer.
	  (Configuration::operator<<): std::for_each.
	* lang/cpp/src/context.cpp: Delete manually instead of scoped ptr.
	* lang/cpp/src/scdgetinfoassuantransaction.cpp: Use static_assert.
	  (to_reader_list): Tokenize with getline.

2016-04-04  Andre Heinecke  <aheinecke@intevation.de>

	Add pthread in gpgmepp config.
	* lang/cpp/src/GpgmeppConfig.cmake.in.in: Add pthread.

2016-04-03  Andre Heinecke  <aheinecke@intevation.de>

	Cpp / Qt: Reduce boost usage (memory and tuple)
	* cpp/src/assuanresult.h,
	 cpp/src/configuration.cpp,
	 cpp/src/configuration.h,
	 cpp/src/data.h,
	 cpp/src/decryptionresult.h,
	 cpp/src/defaultassuantransaction.cpp,
	 cpp/src/encryptionresult.cpp,
	 cpp/src/encryptionresult.h,
	 cpp/src/engineinfo.h,
	 cpp/src/gpgagentgetinfoassuantransaction.cpp,
	 cpp/src/gpgsignkeyeditinteractor.cpp,
	 cpp/src/importresult.cpp,
	 cpp/src/importresult.h,
	 cpp/src/key.h,
	 cpp/src/keygenerationresult.h,
	 cpp/src/keylistresult.h,
	 cpp/src/notation.h,
	 cpp/src/signingresult.cpp,
	 cpp/src/signingresult.h,
	 cpp/src/verificationresult.cpp,
	 cpp/src/verificationresult.h,
	 cpp/src/vfsmountresult.h,
	 qt/src/dataprovider.cpp,
	 qt/src/dataprovider.h,
	 qt/src/decryptjob.h,
	 qt/src/decryptverifyjob.h,
	 qt/src/downloadjob.h,
	 qt/src/encryptjob.h,
	 qt/src/qgpgmeadduseridjob.cpp,
	 qt/src/qgpgmechangeexpiryjob.cpp,
	 qt/src/qgpgmechangeownertrustjob.cpp,
	 qt/src/qgpgmechangepasswdjob.cpp,
	 qt/src/qgpgmedecryptjob.cpp,
	 qt/src/qgpgmedecryptjob.h,
	 qt/src/qgpgmedecryptverifyjob.cpp,
	 qt/src/qgpgmedecryptverifyjob.h,
	 qt/src/qgpgmedeletejob.cpp,
	 qt/src/qgpgmedownloadjob.cpp,
	 qt/src/qgpgmedownloadjob.h,
	 qt/src/qgpgmeencryptjob.cpp,
	 qt/src/qgpgmeencryptjob.h,
	 qt/src/qgpgmeexportjob.cpp,
	 qt/src/qgpgmeexportjob.h,
	 qt/src/qgpgmeimportfromkeyserverjob.cpp,
	 qt/src/qgpgmeimportfromkeyserverjob.h,
	 qt/src/qgpgmeimportjob.cpp,
	 qt/src/qgpgmeimportjob.h,
	 qt/src/qgpgmekeygenerationjob.cpp,
	 qt/src/qgpgmekeygenerationjob.h,
	 qt/src/qgpgmekeylistjob.cpp,
	 qt/src/qgpgmekeylistjob.h,
	 qt/src/qgpgmelistallkeysjob.cpp,
	 qt/src/qgpgmelistallkeysjob.h,
	 qt/src/qgpgmenewcryptoconfig.cpp,
	 qt/src/qgpgmenewcryptoconfig.h,
	 qt/src/qgpgmesignencryptjob.cpp,
	 qt/src/qgpgmesignencryptjob.h,
	 qt/src/qgpgmesignjob.cpp,
	 qt/src/qgpgmesignjob.h,
	 qt/src/qgpgmesignkeyjob.cpp,
	 qt/src/qgpgmeverifydetachedjob.cpp,
	 qt/src/qgpgmeverifydetachedjob.h,
	 qt/src/qgpgmeverifyopaquejob.cpp,
	 qt/src/qgpgmeverifyopaquejob.h,
	 qt/src/signencryptjob.h,
	 qt/src/signjob.h,
	 qt/src/threadedjobmixin.h,
	 qt/src/verifydetachedjob.h,
	 qt/src/verifyopaquejob.h: Reduce boost usage.

	Cpp: Require c++ 11 if cpp binding requested.
	* configure.ac: Call ax_cxx_compile_stdcxx
	* m4/ax_cxx_compile_stdcxx.m4

	Qt: Add static factor methods for protocol.
	* lang/qt/src/qgpgmebackend.cpp (QGpgME::openpgp, QGpgME::smime): New.
	* lang/qt/src/qgpgmebackend.h: Declare.
	* lang/qt/tests/t-keylist.cpp (KeyListTest::testSingleKeyListSync):
	  Use new functions.

	Qt: Add a unit test for qgpgme.
	* configure.ac: Configure test Makefile.
	* m4/qt.m4: Look up Qt5Test flags.
	* lang/qt/tests/t-keylist.cpp: New. Simple keylist check.
	* lang/qt/tests/Makefile.am: New. General test framework.

	Qt: Add missing MOC includes.
	* qgpgmeadduseridjob.cpp,
	 qgpgmechangeexpiryjob.cpp,
	 qgpgmechangeownertrustjob.cpp,
	 qgpgmechangepasswdjob.cpp,
	 qgpgmedecryptjob.cpp,
	 qgpgmedecryptverifyjob.cpp,
	 qgpgmedeletejob.cpp,
	 qgpgmedownloadjob.cpp,
	 qgpgmeencryptjob.cpp,
	 qgpgmeexportjob.cpp,
	 qgpgmeimportfromkeyserverjob.cpp,
	 qgpgmeimportjob.cpp,
	 qgpgmekeygenerationjob.cpp,
	 qgpgmekeylistjob.cpp,
	 qgpgmelistallkeysjob.cpp,
	 qgpgmerefreshkeysjob.cpp,
	 qgpgmesecretkeyexportjob.cpp,
	 qgpgmesignencryptjob.cpp,
	 qgpgmesignjob.cpp,
	 qgpgmesignkeyjob.cpp,
	 qgpgmeverifydetachedjob.cpp,
	 qgpgmeverifyopaquejob.cpp: Add missing MOC includes.

	Qt: Declare pure virtuals as such.
	* lang/qt/src/qgpgmebackend.h (Protocol): Make all functions
	 pure virtual.

	Qt: Don't declare showErrorDialog anymore.
	* cpp/qt/src/job.h: Remove showErrorDialog.

	Qt: Only use GpgME based config class.
	* lang/qt/src/qgpgmecryptoconfig.cpp,
	 lang/qt/src/qgpgmecryptoconfig.h: Removed.
	* lang/qt/src/qgpgmebackend.cpp: Return newcryptoconfig.

2016-04-02  Andre Heinecke  <aheinecke@intevation.de>

	Add additional include path in config files.
	* lang/cpp/src/GpgmeppConfig.cmake.in.in
	 lang/qt/src/QGpgmeConfig.cmake.in.in: Include directory above headers.

	Qt: Fix library name in nodist variable.
	* lang/qt/Makefile.am (nodist_qgpgme_SOURCES): Change to real name.

	Add missing files to QGpgME.
	* lang/qt/src/gpgme_backend_debug.cpp,
	 lang/qt/src/gpgme_backend_debug.h,
	 lang/qt/src/predicates.h,
	 lang/qt/src/stl_util.h: New.

	Add QGpgME code from libkleo.
	* lang/qt/src/Makefile.am,
	lang/qt/src/abstractimportjob.h,
	lang/qt/src/adduseridjob.h,
	lang/qt/src/changeexpiryjob.h,
	lang/qt/src/changeownertrustjob.h,
	lang/qt/src/changepasswdjob.h,
	lang/qt/src/cryptoconfig.h,
	lang/qt/src/decryptjob.h,
	lang/qt/src/decryptverifyjob.h,
	lang/qt/src/deletejob.h,
	lang/qt/src/downloadjob.h,
	lang/qt/src/encryptjob.h,
	lang/qt/src/exportjob.h,
	lang/qt/src/hierarchicalkeylistjob.h,
	lang/qt/src/importfromkeyserverjob.h,
	lang/qt/src/importjob.h,
	lang/qt/src/job.cpp,
	lang/qt/src/job.h,
	lang/qt/src/keygenerationjob.h,
	lang/qt/src/keylistjob.h,
	lang/qt/src/listallkeysjob.h,
	lang/qt/src/multideletejob.h,
	lang/qt/src/qgpgmeadduseridjob.cpp,
	lang/qt/src/qgpgmeadduseridjob.h,
	lang/qt/src/qgpgmebackend.cpp,
	lang/qt/src/qgpgmebackend.h,
	lang/qt/src/qgpgmechangeexpiryjob.cpp,
	lang/qt/src/qgpgmechangeexpiryjob.h,
	lang/qt/src/qgpgmechangeownertrustjob.cpp,
	lang/qt/src/qgpgmechangeownertrustjob.h,
	lang/qt/src/qgpgmechangepasswdjob.cpp,
	lang/qt/src/qgpgmechangepasswdjob.h,
	lang/qt/src/qgpgmecryptoconfig.cpp,
	lang/qt/src/qgpgmecryptoconfig.h,
	lang/qt/src/qgpgmedecryptjob.cpp,
	lang/qt/src/qgpgmedecryptjob.h,
	lang/qt/src/qgpgmedecryptverifyjob.cpp,
	lang/qt/src/qgpgmedecryptverifyjob.h,
	lang/qt/src/qgpgmedeletejob.cpp,
	lang/qt/src/qgpgmedeletejob.h,
	lang/qt/src/qgpgmedownloadjob.cpp,
	lang/qt/src/qgpgmedownloadjob.h,
	lang/qt/src/qgpgmeencryptjob.cpp,
	lang/qt/src/qgpgmeencryptjob.h,
	lang/qt/src/qgpgmeexportjob.cpp,
	lang/qt/src/qgpgmeexportjob.h,
	lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
	lang/qt/src/qgpgmeimportfromkeyserverjob.h,
	lang/qt/src/qgpgmeimportjob.cpp,
	lang/qt/src/qgpgmeimportjob.h,
	lang/qt/src/qgpgmekeygenerationjob.cpp,
	lang/qt/src/qgpgmekeygenerationjob.h,
	lang/qt/src/qgpgmekeylistjob.cpp,
	lang/qt/src/qgpgmekeylistjob.h,
	lang/qt/src/qgpgmelistallkeysjob.cpp,
	lang/qt/src/qgpgmelistallkeysjob.h,
	lang/qt/src/qgpgmenewcryptoconfig.cpp,
	lang/qt/src/qgpgmenewcryptoconfig.h,
	lang/qt/src/qgpgmerefreshkeysjob.cpp,
	lang/qt/src/qgpgmerefreshkeysjob.h,
	lang/qt/src/qgpgmesecretkeyexportjob.cpp,
	lang/qt/src/qgpgmesecretkeyexportjob.h,
	lang/qt/src/qgpgmesignencryptjob.cpp,
	lang/qt/src/qgpgmesignencryptjob.h,
	lang/qt/src/qgpgmesignjob.cpp,
	lang/qt/src/qgpgmesignjob.h,
	lang/qt/src/qgpgmesignkeyjob.cpp,
	lang/qt/src/qgpgmesignkeyjob.h,
	lang/qt/src/qgpgmeverifydetachedjob.cpp,
	lang/qt/src/qgpgmeverifydetachedjob.h,
	lang/qt/src/qgpgmeverifyopaquejob.cpp,
	lang/qt/src/qgpgmeverifyopaquejob.h,
	lang/qt/src/refreshkeysjob.h,
	lang/qt/src/signencryptjob.h,
	lang/qt/src/signjob.h,
	lang/qt/src/signkeyjob.h,
	lang/qt/src/specialjob.h,
	lang/qt/src/threadedjobmixin.cpp,
	lang/qt/src/threadedjobmixin.h,
	lang/qt/src/verifydetachedjob.h,
	lang/qt/src/verifyopaquejob.h: New.
	* lang/qt/src/Makefile.am:

2016-03-08  Andre Heinecke  <aheinecke@intevation.de>

	Add qgpgme as qt language binding.
	* configure.ac: Add version defines. Check for qt if neccessary.
	* lang/README: Mention qt
	* lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove comment. Find qgpgme.
	* lang/qt/src/Makefile.am: New. Build qgpgme.
	* lang/qt/README,
	 lang/qt/src/Makefile.am,
	 lang/qt/src/QGpgmeConfig.cmake.in.in,
	 lang/qt/src/QGpgmeConfigVersion.cmake.in,
	 lang/qt/src/dataprovider.cpp,
	 lang/qt/src/dataprovider.h,
	 lang/qt/src/qgpgme_export.h,
	 m4/qt.m4: New.
	* lang/cpp/src/GpgmeppConfig.cmake.in.in,
	 lang/cpp/src/Makefile.am: Fix generated config file.

	Remove obsolete w32-qt code.
	* configure.ac (w32-qt): Remove option and Qt checks.
	* src/Makefile.am: Remove BUILD_W32_QT handling.
	* src/kdpipeiodevice.cpp,
	 src/kdpipeiodevice.h,
	 src/kdpipeiodevice.moc,
	 src/w32-qt-io.cpp: Removed.

2016-03-02  Andre Heinecke  <aheinecke@intevation.de>

	Add version info for gpgmepp.
	* lang/cpp/src/Makefile.am (libgpgmepp_la_LDFLAGS): Add version info.

	Add cmake configuration files.
	* configure.ac: Add libgpgmepp version. Configure cmake files.
	* lang/cpp/src/Makefile.am: Add targets for cmake files.
	 (EXTRA_DIST): Add cmake files.

	Fix export header and windows export macros.
	* lang/cpp/src/gpgme_export.h: Fix variable name. Add Windows ifdefs.

	Add header installation.
	* lang/cpp/src/Makefile.am: Add headers as deps and install them.
	 (AM_CPPFLAGS): Add BUILDING_GPGMEPP to be used in export macros.

	Add enable-languages build option.
	* acinclude.m4 (LIST_MEMBER): New macro.
	* configure.ac (enable-languages): New option. Add info output.
	* lang/Makefile.am: Only add enabled language subdirs.

2016-02-22  Andre Heinecke  <aheinecke@intevation.de>

	Add README for gpgmepp.
	* lang/README: Note down cpp.
	* cpp/README: Add README based on original repo version.

	Add buildsystem for Gpgmepp.
	* configure.ac: Configure Makefiles.
	* lang/Makefile.am: Add cpp subdir
	* lang/cpp/Makefile.am: New. Add src subdir.
	* lang/cpp/src/Makefile.am: New. Basic buildsystem.

	Remove feature check ifdefs.
	* lang/cpp/src/assuanresult.cpp,
	 lang/cpp/src/callbacks.cpp,
	 lang/cpp/src/configuration.cpp,
	 lang/cpp/src/context.cpp,
	 lang/cpp/src/context_glib.cpp,
	 lang/cpp/src/context_qt.cpp,
	 lang/cpp/src/context_vanilla.cpp,
	 lang/cpp/src/data.cpp,
	 lang/cpp/src/decryptionresult.cpp,
	 lang/cpp/src/defaultassuantransaction.cpp,
	 lang/cpp/src/editinteractor.cpp,
	 lang/cpp/src/encryptionresult.cpp,
	 lang/cpp/src/engineinfo.cpp,
	 lang/cpp/src/eventloopinteractor.cpp,
	 lang/cpp/src/global.h,
	 lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
	 lang/cpp/src/importresult.cpp,
	 lang/cpp/src/interfaces/assuantransaction.h,
	 lang/cpp/src/key.cpp,
	 lang/cpp/src/keygenerationresult.cpp,
	 lang/cpp/src/keylistresult.cpp,
	 lang/cpp/src/scdgetinfoassuantransaction.cpp,
	 lang/cpp/src/signingresult.cpp,
	 lang/cpp/src/trustitem.cpp,
	 lang/cpp/src/util.h,
	 lang/cpp/src/verificationresult.cpp,
	 lang/cpp/src/vfsmountresult.cpp: Remove feature checks.

	Initial checkin of gpgmepp sources.
	Based on git.kde.org/pim/gpgmepp rev. 0e3ebc02

	* lang/cpp/src/assuanresult.cpp,
	 lang/cpp/src/assuanresult.h,
	 lang/cpp/src/callbacks.cpp,
	 lang/cpp/src/callbacks.h,
	 lang/cpp/src/configuration.cpp,
	 lang/cpp/src/configuration.h,
	 lang/cpp/src/context.cpp,
	 lang/cpp/src/context.h,
	 lang/cpp/src/context_glib.cpp,
	 lang/cpp/src/context_p.h,
	 lang/cpp/src/context_qt.cpp,
	 lang/cpp/src/context_vanilla.cpp,
	 lang/cpp/src/data.cpp,
	 lang/cpp/src/data.h,
	 lang/cpp/src/data_p.h,
	 lang/cpp/src/decryptionresult.cpp,
	 lang/cpp/src/decryptionresult.h,
	 lang/cpp/src/defaultassuantransaction.cpp,
	 lang/cpp/src/defaultassuantransaction.h,
	 lang/cpp/src/editinteractor.cpp,
	 lang/cpp/src/editinteractor.h,
	 lang/cpp/src/encryptionresult.cpp,
	 lang/cpp/src/encryptionresult.h,
	 lang/cpp/src/engineinfo.cpp,
	 lang/cpp/src/engineinfo.h,
	 lang/cpp/src/error.h,
	 lang/cpp/src/eventloopinteractor.cpp,
	 lang/cpp/src/eventloopinteractor.h,
	 lang/cpp/src/exception.cpp,
	 lang/cpp/src/exception.h,
	 lang/cpp/src/global.h,
	 lang/cpp/src/gpgadduserideditinteractor.cpp,
	 lang/cpp/src/gpgadduserideditinteractor.h,
	 lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
	 lang/cpp/src/gpgagentgetinfoassuantransaction.h,
	 lang/cpp/src/gpgmefw.h,
	 lang/cpp/src/gpgmepp_export.h,
	 lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
	 lang/cpp/src/gpgsetexpirytimeeditinteractor.h,
	 lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
	 lang/cpp/src/gpgsetownertrusteditinteractor.h,
	 lang/cpp/src/gpgsignkeyeditinteractor.cpp,
	 lang/cpp/src/gpgsignkeyeditinteractor.h,
	 lang/cpp/src/importresult.cpp,
	 lang/cpp/src/importresult.h,
	 lang/cpp/src/key.cpp,
	 lang/cpp/src/key.h,
	 lang/cpp/src/keygenerationresult.cpp,
	 lang/cpp/src/keygenerationresult.h,
	 lang/cpp/src/keylistresult.cpp,
	 lang/cpp/src/keylistresult.h,
	 lang/cpp/src/notation.h,
	 lang/cpp/src/result.h,
	 lang/cpp/src/result_p.h,
	 lang/cpp/src/scdgetinfoassuantransaction.cpp,
	 lang/cpp/src/scdgetinfoassuantransaction.h,
	 lang/cpp/src/signingresult.cpp,
	 lang/cpp/src/signingresult.h,
	 lang/cpp/src/trustitem.cpp,
	 lang/cpp/src/trustitem.h,
	 lang/cpp/src/util.h,
	 lang/cpp/src/verificationresult.cpp,
	 lang/cpp/src/verificationresult.h,
	 lang/cpp/src/vfsmountresult.cpp,
	 lang/cpp/src/vfsmountresult.h,
	 lang/cpp/src/interfaces/assuantransaction.h,
	 lang/cpp/src/interfaces/dataprovider.h,
	 lang/cpp/src/interfaces/passphraseprovider.h,
	 lang/cpp/src/interfaces/progressprovider.h: New.

2016-01-15  Werner Koch  <wk@gnupg.org>

	Fix possible _SC_OPEN_MAX max problem on AIX.
	* src/posix-io.c [HAVE_STDINT_H]: Include stdint.h.
	(get_max_fds): Limit returned value for too high values.

2015-12-09  Werner Koch  <wk@gnupg.org>

	w32: Avoid conflict with Mingw-w64 version 4.0.4-1.
	* src/w32-util.c (mkstemp): Rename to my_mkstemp.  Change caller.

2015-12-04  Daiki Ueno  <ueno@gnu.org>

	Return on user cancellation of delete operation.
	* src/delete.c (delete_status_handler): Return on ERROR status, if the
	error location is set to "delete_key.secret" and the code is either
	CANCELED or FULLY_CANCELED, which indicates a situation that the user
	selected "No" on the confirmation dialog.

	doc: Fix minor errors.
	* doc/gpgme.texi: Fix errors and typos in the cancellation and
	gpgme_import_result_t documentation.

2015-10-29  Ben Kibbey  <bjk@luxsci.net>

	Make use of user passphrase handler during passwd.
	* src/passwd.c (passwd_start): set engine passphrase command handler.

2015-10-28  Werner Koch  <wk@gnupg.org>

	w32: Add extra diagnostic about possible missing gpgme-w32spawn.exe.
	* src/w32-io.c (_gpgme_io_spawn): Add a new diagnostic.

	w32: Improve locating gpgconf on 64 bit systems.
	* src/w32-util.c (find_program_at_standard_place): Fallback to
	CSIDL_PROGRAM_FILESX86.

	w32: Add new global flag "w32-inst-dir".
	* src/gpgme.c (gpgme_set_global_flag): Add flag "w32-inst-dir";
	* src/posix-util.c (_gpgme_set_override_inst_dir): New stub.
	* src/w32-util.c (override_inst_dir): New var.
	(_gpgme_get_inst_dir): Return this var is set.
	(_gpgme_set_override_inst_dir): New.

2015-10-16  NIIBE Yutaka  <gniibe@fsij.org>

	cleanup: Fix type mismatch around gpgme_error_t.
	* src/data-compat.c (gpgme_error_to_errno): Use gpg_err_code
	to get error code from gpgme_error_t.
	* src/gpgme.c (gpgme_new): Don't use gpgme_error.

2015-08-31  Werner Koch  <wk@gnupg.org>

	gpgme-tool: Switch to argparse.c for option parsing.
	* src/argparse.c, src/argparse.h: New. Taken from current gnupg.
	* src/Makefile.am (gpgme_tool_SOURCES): New.
	* src/gpgme-tool.c: Remove all argp.h stuff.
	(my_strusage): New.
	(main): Change to use argparse.

2015-08-30  Werner Koch  <wk@gnupg.org>

	Add gpgme_pubkey_algo_string.
	* src/gpgme.h.in (GPGME_PK_EDDSA): New.
	(gpgme_pubkey_algo_string): New.
	* src/conversion.c (_gpgme_map_pk_algo): Add new algo.
	* src/gpgme.c (gpgme_pubkey_algo_string): New.
	(gpgme_pubkey_algo_name): Reformat.

2015-08-26  Werner Koch  <wk@gnupg.org>

	Release 1.6.0.
	* configure.ac: Set LT version to C25/A14/R0.

	Make use of GPGRT macros is available.
	* src/gpgme.h.in (_GPGME_INLINE): Define using GPGRT_INLINE if
	possible.  Fix problem with -Wundef by adding an extra "defined()".
	(_GPGME_GCC_VERSION): Define using GPGRT_ macro if possible.

2015-08-25  Werner Koch  <wk@gnupg.org>

	Avoid -Wundef warnings if gpgme.h is used by g++.
	* src/gpgme.h.in (_GPGME_INLINE): Move definition into the
	extern-C-scope.

	Add configure option --enable-build-timestamp.
	* configure.ac (BUILD_TIMESTAMP): Set to "<none>" by default.

2015-08-25  Daiki Ueno  <ueno@gnu.org>

	Relax ttyname_r error checks.
	* src/engine-assuan.c (llass_new): Don't treat ttyname_r error as
	fatal.
	* src/engine-g13.c (g13_new): Likewise.
	* src/engine-gpg.c (gpg_new): Likewise.
	* src/engine-gpgsm.c (gpgsm_new): Likewise.
	* src/engine-uiserver.c (uiserver_new): Likewise.

2015-08-25  Werner Koch  <wk@gnupg.org>

	Cleanup layout of gpgme.h.
	* src/gpgme.h.in: Reorder prototypes.  Chnage some comments.

	Improve error return by checking the FAILURE status.
	* src/gpgme.h.in (GPGME_STATUS_FAILURE): New.
	* src/status-table.c (FAILURE): New.
	* src/op-support.c (_gpgme_parse_failure): New.
	* src/passphrase.c (_gpgme_passphrase_status_handler): Forward FAILURE
	status line to the status callback.

	* src/decrypt.c (op_data_t): Add field failure_code.
	(_gpgme_decrypt_status_handler): Parse that code and act upon it on EOF.
	* src/encrypt.c (op_data_t): Add field failure_code.
	(_gpgme_encrypt_status_handler): Parse that code and act upon it on EOF.
	* src/genkey.c (op_data_t): Add field failure_code.
	(genkey_status_handler): Parse that code and act upon it on EOF.
	* src/passwd.c (op_data_t): Add field failure_code.
	(passwd_status_handler): Parse that code and act upon it on EOF.
	* src/sign.c (op_data_t): Add field failure_code.
	(_gpgme_sign_status_handler): Parse that code and act upon it on EOF.
	* src/verify.c (op_data_t): Add field failure_code.
	(_gpgme_verify_status_handler): Parse that code and act upon it on EOF.

	tests: Allow using run-sign to test loopback pinentry problems.
	* tests/run-sign.c: Add options --status and --loopback.

2015-08-24  Werner Koch  <wk@gnupg.org>

	Call status_cb for an ERROR status seen in the passphrase handler.
	* src/passphrase.c (_gpgme_passphrase_status_handler): Call status_cb.

	w32: Look for gpgconf in the new GnuPG 2.1 install dir.
	* src/w32-util.c (_gpgme_get_gpgconf_path): Try another location of
	gpgconf.exe.

	w32: Expect gpgme-w32spawn.exe only in the gpgme installation dir.
	* src/w32-util.c (find_program_at_standard_place): Remove.
	(_gpgme_get_gpg_path): Make the search order more explicit.
	(_gpgme_get_gpgconf_path): Ditto.
	(_gpgme_get_w32spawn_path): Search only in the inst_dir.

	w32: Print the installation directory in debug mode.
	* src/debug.c (debug_init) [W32]: Show libgpgme installation dir.

	Add an export secret key feature.
	* src/gpgme.h.in (GPGME_EXPORT_MODE_SECRET): New.
	(GPGME_EXPORT_MODE_RAW): New.
	(GPGME_EXPORT_MODE_PKCS12): New.
	* src/export.c (export_start, export_ext_start): Allow new flags.
	* src/engine-gpg.c (export_common): Support secret key export.
	* src/engine-gpgsm.c (gpgsm_export, gpgsm_export_ext): Ditto.

	* src/gpgme-tool.c (cmd_export): Add options --secret, --raw,
	and --pkcs12.
	* tests/run-export.c (main): Likewise.

2015-08-16  Ben Kibbey  <bjk@luxsci.net>

	Parse INQUIRE_MAXLEN in the passphrase callback.
	* src/passphrase.c (_gpgme_passphrase_status_handler): Parse
	GPGME_STATUS_INQUIRE_MAXLEN.
	* src/passphrase.c (_gpgme_passphrase_command_handler): Send the
	INQUIRE_MAXLEN status message.

	Fix gpgme_{get,set}_status_cb to match documentation.
	* doc/gpgme.texi: Minor fixes.
	* src/gpgme.c (gpgme_get_status_cb): Set return variables to NULL and
	check for a valid ctx pointer.

	Parse the INQUIRE_MAXLEN status message.
	* src/gpgme.h.in: (gpgme_status_code_t): Add INQUIRE_MAXLEN.
	* src/status-table.c (status_table_s): Ditto.
	* src/genkey.c (genkey_status_handler): Parse INQUIRE_MAXLEN.
	* src/decrypt.c (_gpgme_decrypt_status_handler): Ditto.
	* src/sign.c (_gpgme_sign_status_handler): Ditto.

	This status message informs the client of the maximum length of an
	inquired line. It is sent from gpg and forwarded to the client via
	gpgme_status_cb_t.

	Add gpgme_set/get_status_cb().
	* src/gpgme.h.in (gpgme_set_status_cb): New.
	(gpgme_get_status_cb): New.
	(gpgme_status_cb_t): New.
	* src/gpgme.c (gpgme_set_status_cb): New.
	(gpgme_get_status_cb): New.
	* src/context.h (status_cb): New.
	(status_cb_value): New.
	* src/gpgme.def: Export new symbols.
	* src/libgpgme.vers: Ditto.
	* doc/gpgme.texi: Document these new functions.

	Make use of user passphrase handler during genkey.
	* src/genkey.c (genkey_start): set engine passphrase command handler.

2015-08-12  Ben Kibbey  <bjk@luxsci.net>

	Also check the return code in gpg_sign().
	* src/engine-gpg.c (gpg_sign): Check return value from start().

2015-08-11  Ben Kibbey  <bjk@luxsci.net>

	Check the return value when starting gpg.
	* src/engine-gpg.c (gpg_decrypt, gpg_delete, gpg_passwd): Check return
	value of start().

2015-08-02  Ben McGinnes  <ben@adversary.org>

	More GTK2 removal.
	* Missed a couple of files, these 2 go for the same reason as the
	  previous 3.

	Removed GUI examples.
	* GUI examples written with pygtk, which has not been ported to Python
	  3 and won't be as it is for GTK2 and GNOME is moving to GTK3.
	* New GUI examples may be required in future using any of several GUI
	  frameworks (e.g. wxPython, PyQt, PySide, PyGObject, etc.).

2015-07-31  Andre Heinecke  <aheinecke@intevation.de>

	Add offline mode support for CMS keylisting.
	* doc/gpgme.texi: Document offline mode.
	* src/context.h (gpgme_context): Add offline.
	* src/engine-backend.h (keylist, keylist_ext): Add engine_flags.
	* src/engine.c, src/engine.h (_gpgme_engine_op_keylist): Ditto.
	  (_gpgme_engine_op_keylist_ext): Ditto.
	* src/engine.h (GPGME_ENGINE_FLAG_OFFLINE): New.
	* src/engine-gpg.c (gpg_keylist, gpg_keylist_ext): Ditto.
	* src/engine-gpgsm.c (gpgsm_keylist): Handle engine_flags.
	  (gpgsm_keylist_ext): Ditto.
	* src/gpgme.c (gpgme_set_offline, gpgme_get_offline): New.
	* src/gpgme.def (gpgme_set_offline, gpgme_get_offline): New.
	* src/gpgme.h.in (gpgme_set_offline, gpgme_get_offline): New.
	* src/libgpgme.vers (gpgme_set_offline, gpgme_get_offline): New.
	* src/keylist.c (gpgme_op_keylist_start): Set offline flag.
	  (gpgme_op_keylist_ext_start): Ditto.
	* tests/run-keylist.c (show_usage, main): Add offline argument.

2015-07-23  Peter Wu  <peter@lekensteyn.nl>

	build: ignore scissor line for the commit-msg hook.
	* build-aux/git-hooks/commit-msg: Stop processing more lines when the
	  scissor line is encountered.

2015-07-23  Werner Koch  <wk@gnupg.org>

	Add option --lib-version to gpgme-tool.
	* src/gpgme-tool.c (options, parse_options):  Add --lib-version
	(CMD_LIBVERSION): New.
	(main): Implement.

2015-06-08  Werner Koch  <wk@gnupg.org>

	Release 1.5.5.

	Fix regression with gpgsm 2.0 due to "OPTION with-secret".
	* src/engine-gpgsm.c (gpgsm_assuan_simple_command): Do not terminate
	on a status lines.

	tests: Add option --secret to run-keylist.

	Fix compiler warnings about unused value in TRACE macros.
	* src/debug.h: Change macros to not have a literal 0 as last
	expression of the comma operator.
	* src/debug.c (_gpgme_debug_frame_end): Return 0.
	(_gpgme_debug): Return 0.

	Fix test suite for GnuPG 2.1 which uses pubring.kbx.
	* tests/gpgsm/final.test: New.
	* tests/gpgsm/initial.test: New.
	* tests/gpg/start-stop-agent: Move to ../.
	* tests/gpgsm/Makefile.am (TESTS_ENVIRONMENT): Export top_srcdir.
	(TESTS): Add intial.test and final.test.
	(AM_LDFLAGS): Add -no-install.
	(clean-local): Use start-stop-agent
	(initial.test): Add dependency.
	* tests/gpg/Makefile.am (top_srcdir): Export top_srcdir.
	(AM_LDFLAGS): Add -no-install.
	(check-local): Depend on pubring-stamp instead of pubring.gpg.
	(initial.test): Depend on check-local.
	(./pubring-gpg): Replace by rule for ./pubring-stamp.

2015-06-05  Matthew Barnes  <mbarnes@redhat.com>

	Set GPGME_SIGSUM_KEY_REVOKED also for gpg.
	* src/verify.c (calc_sig_summary): Handle GPG_ERR_CERT_REVOKED.

2015-06-05  Werner Koch  <wk@gnupg.org>

	Fix segv for userids with a backslash.
	* src/engine-gpg.c (gpg_keylist_preprocess): Increment SRC for a
	backslash.

2015-05-16  Ben McGinnes  <ben@adversary.org>

	Python 3 port of PyME.
	* Port of PyME 0.9.0 for Python 2 to Python 3 along with most of the
	  example scripts.
	* Intended to be developed in parallel with the original Python 2
	  version until such time as a rewrite of GPGME leads to developing an
	  IO API in Python 3 from scratch.
	* Python 3 PyME and API maintainer has entered, stage left with current
	  GPG key ID 0x321E4E2373590E5D, primary fingerprint is "DB47 24E6 FA42
	  86C9 2B4E  55C4 321E 4E23 7359 0E5D" and signing subkey fingerprint is
	  "B7F0 FE75 9387 430D D0C5  8BDB 7FF2 D371 35C7 553C" for future
	  reference with git commit signatures.

	Explaining why not all scripts work.
	* Some of them cannot be properly tested on OS X, especially with GTK in
	  the mix (it works on OS X, but is unlikely to be as easily accessible
	  as Cocoa or Qt).
	* Most major functions are showcased and do work, albeit sometimes with
	  false positives of error messages, at least on OS X.

	Byte encoding.
	* More string updates.
	* verifydetails.py still fails, but as Bernhard is still contactable, it
	  might be worth him checking on it instead.

	No change, note added to explain why.

	Strings vs. Bytes.
	* CLI input must be byte encoded.

	More byte changes and passphrase changes.
	* exportimport works, but will still segfault for an as yet unknown
	  reason.
	* genkey produces a traceback error, but does create the key as
	  intended.
	* matched passphrase in signverify.

	More bytes good.
	* Another string to byte change.

	Updated encrypt-to-all.
	* Changed plaintext string to byte literal.
	* Nested key selection in a try/except statement in case of
	  UnicodeEncodeError instances.
	* Tested successfully on over 9,000 keys.

	Passphrase update.
	* Changed example passphrase to something that meets the current minimum
	  requirements.

	example email.
	* changed joe@foo.bar to joe@example.org as it is only a matter of time
	  before ICANN actually creates bar as a gTLD, if they haven't already.

	Updated string and key data.
	* Text changed to byte literals.
	* Changed key type to RSA/RSA.
	* Changed expiry to the future (2020).

2015-05-08  Ben McGinnes  <ben@adversary.org>

	String type.
	* the plain text string must be bytes and not unicode.
	* Expect most of the example code to have similar issues at present.

2015-05-05  Ben McGinnes  <ben@adversary.org>

	Python 3 port of PyME.
	* The entirety of the Python 3 port of PyME up to commit
	  2145348ec54c6027f2ea20f695de0277e2871405
	* The old commit log has been saved as
	  lang/py3-pyme/docs/old-commits.log
	* Can be viewed as a normal (separate) git repository at
	  https://github.com/adversary-org/pyme3
	* Utilising the submodule feature of git was deliberately skipped on
	  humanitarian grounds (in order to prevent pain and suffering on the
	  part of anyone having to manage this repository).

2015-04-13  Werner Koch  <wk@gnupg.org>

	Release 1.5.4.

	w32: Use -static-libgcc to avoid linking to libgcc_s_sjlj-1.dll.
	* src/Makefile.am (extra_ltoptions): New.
	(libgpgme_la_LDFLAGS): Use it.
	(libgpgme_pthread_la_LDFLAGS): Ditto.
	(libgpgme_glib_la_LDFLAGS): Ditto.

2015-03-16  Werner Koch  <wk@gnupg.org>

	Fix potential crash in trace macro.
	* src/signers.c (gpgme_signers_add): Avoid deref of a NULL KEY in the
	trace macro.
	* src/engine-spawn.c (engspawn_release): Remove always true condition.
	* src/engine-gpg.c (gpg_release): Ditto.

	Fix one byte too short malloc.
	* src/engine-spawn.c (add_data): Fix malloc

2015-01-30  Werner Koch  <wk@gnupg.org>

	Switch to automake 1.14 and update  build-aux files.

2014-12-11  Werner Koch  <wk@gnupg.org>

	Release 1.5.3.
	* configure.ac: Set LT version to C24/A13/R2.

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

	Return an error for some export key operations.
	* src/context.h (OPDATA_EXPORT): New.
	* src/export.c (op_data_t): New.
	(release_op_data): New.
	(parse_error): New.
	(export_status_handler): New.
	(export_start, export_ext_start): Prepare op_data.
	(gpgme_op_export_ext, gpgme_op_export_keys): Return an error from the
	status handler.

2014-11-21  Werner Koch  <wk@gnupg.org>

	Release 1.5.2.
	* configure.ac: Set LT version to C24/A13/R1.

	Update the previous commit.
	* src/sign.c (gpgme_op_sign_result): Reformat and take care of failed
	malloc.

2014-11-21  Ben Kibbey  <bjk@luxsci.net>

	Fix returning new signatures when there are none.
	* src/sign.c (gpgme_op_sign_result): Test that invalid and valid
	signatures add up to gpgme_signers_count().

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

	Improve the debug output a bit.
	* src/debug.h (TRACE_ERR): Include the line number in the output.

2014-10-02  Werner Koch  <wk@gnupg.org>

	build: Implement SYSROOT feature.
	* configure.ac: Document SYSROOT.
	* m4/gpg-error.m4: Update from libgpg-error master.
	* src/gpgme.m4: Implement SYSROOT stuff.

2014-09-24  Werner Koch  <wk@gnupg.org>

	tests: Delay some test file extraction until "make check".
	* tests/gpg/Makefile.am (all-local): Change to check-local.
	* tests/gpgsm/Makefile.am (all-local): Ditto.

2014-09-24  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	Clean up gpgme's tests/gpg when gpg2.1 is available.
	* tests/gpg/Makefile.am: Clean up .gpg-v21-migrated

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

	gpgme-tool: Print fingerprint and keyid with keyservers.
	* src/gpgme-tool.c (cmd_keylist): Print keyid.  Print FPR only if
	available.

	Handle modern keyserver output which may emit the fingerprint.
	* src/engine-gpg.c (read_colon_line): Split preprocessed lines.
	(gpg_keylist_preprocess): Limit keyid field and print fingerprint.

	gpgme-tool: Install gpgme-tool.
	* src/Makefile.am (bin_PROGRAMS): New.  Add gpgme-tools.
	(noinst_PROGRAMS): Remove.

	gpgme-tool: Fix segv for external key listing.
	* src/gpgme-tool.c (result_xml_escape): Allow for DATA being NULL.

2014-07-30  Werner Koch  <wk@gnupg.org>

	Release 1.5.1.
	* configure.ac: Change LT version to C24/A13/R0.

	Fix possible realloc overflow for gpgsm and uiserver engines.
	* src/engine-gpgsm.c (status_handler):
	* src/engine-uiserver.c (status_handler):

2014-06-26  Werner Koch  <wk@gnupg.org>

	w32: Get IOSPAWN flag back in sync with spawn helper.
	* src/gpgme-w32spawn.c: Include priv-io.h.

2014-06-10  Werner Koch  <wk@gnupg.org>

	Add new reason codes to the INV_RECP status code.
	* src/op-support.c (_gpgme_parse_inv_recp): Add codes 13 and 14.

2014-06-04  Werner Koch  <wk@gnupg.org>

	Add new keylist mode GPGME_KEYLIST_MODE_WITH_SECRET.
	* src/gpgme.h.in (GPGME_KEYLIST_MODE_WITH_SECRET): New.
	* src/engine-gpg.c (gpg_keylist_build_options): Handle new mode.
	* src/engine-gpgsm.c (gpgsm_keylist, gpgsm_keylist_ext): Ditto.
	* src/keylist.c (parse_sec_field15): Add arg key and take care of
	--with-secret output.

	* src/gpgme-tool.c (gt_get_keylist_mode, cmd_keylist_mode): Add
	"with_secret".  Print card info and and secret flag for subkeys.

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

	Release 1.5.0.
	* configure.ac: Change LT version to C22/A11/R0.

2014-05-13  Werner Koch  <wk@gnupg.org>

	Add 6 new GPGME_STATUS_ codes.
	* src/status-table.c: Also add missing DECRYPTION_INFO entry.

2014-05-08  Werner Koch  <wk@gnupg.org>

	Add field CURVE to the key info.
	* src/gpgme.h.in (struct _gpgme_subkey): Add field CURVE.
	* src/key.c (gpgme_key_unref): Free CURVE.
	* src/keylist.c (keylist_colon_handler): Set CURVE.

	* src/gpgme.c (gpgme_release): For failsafe reasons reset engine and
	engine info after freeing.

	Fix a memory access and a double slash bug.
	* src/engine-spawn.c (engspawn_start): Allocate space for list
	terminator.
	* src/posix-util.c (walk_path): Fix trailing slash detection.

	Map public key algos returned by gpg to gpgme values.
	* src/conversion.c (_gpgme_map_pk_algo): New.
	* src/decrypt.c (parse_enc_to): Add arg PROTOCOL and map pubkey algo.
	(_gpgme_decrypt_status_handler): Map pubkey algo.
	* src/keylist.c (keylist_colon_handler): Map pubkey algo.
	* src/sign.c (parse_sig_created): Add arg PROTOCOL and map pubkey
	algo.
	* src/verify.c (parse_new_sig): Ditto.
	(parse_valid_sig): Ditto.

	* src/gpgme.h.in (GPGME_PK_ECC): New.
	(GPGME_MD_SHA224): New.
	* src/gpgme.c (gpgme_pubkey_algo_name): Add GPGME_PK_ECC case.
	(gpgme_hash_algo_name): Add GPGME_MD_SHA224.

	Add GPGME_ENCRYPT_NO_COMPRESS flag.
	* src/gpgme.h.in (GPGME_ENCRYPT_NO_COMPRESS): New.
	* src/engine-gpg.c (gpg_encrypt, gpg_encrypt_sign): Implement it.
	* src/gpgme-tool.c (_cmd_sign_encrypt): Add option --no-compress.

2014-04-16  Werner Koch  <wk@gnupg.org>

	w32: Fix another memleak on error.
	* src/w32-io.c (create_reader): free CTX.

2014-04-15  Werner Koch  <wk@gnupg.org>

	w32: Fix memleak in an error code paths.
	* src/w32-io.c (create_writer): Free CTX in cased of bad FD.
	* src/w32-util.c (_gpgme_mkstemp): Free TMPNAME in case of a failed
	mkstemp.

	Fix possible zombie processes.
	* src/posix-io.c (_gpgme_io_waitpid): Protect waitpid agains EINTR.
	(_gpgme_io_dup): Likewise.
	(_gpgme_io_connect): Likewise.

2014-04-10  Werner Koch  <wk@gnupg.org>

	Actually implement flags for gpgme_op_spawn.
	* src/spawn.c (gpgme_op_spawn_start, gpgme_op_spawn): Pass FLAGS dow
	to spawn_start and add FLAGS args along the call path.
	* src/engine-spawn.c (engspawn_start): Hack to automagically provide
	argv[0].

	Add GPGME_PROTOCOL_SPAWN and gpgme_op_spawn.
	* src/gpgme.h.in (GPGME_PROTOCOL_SPAWN): New.
	(GPGME_SPAWN_DETACHED, GPGME_SPAWN_ALLOW_SET_FG): New.
	* src/gpgme.c (gpgme_set_protocol): Add new protocol.
	(gpgme_get_protocol_name): Ditto.
	* src/spawn.c: New.
	* src/libgpgme.vers, src/gpgme.def: Add new public functions.
	* src/engine-spawn.c: New.
	* src/Makefile.am: Add new files.
	* src/engine-backend.h (struct engine_ops): Add OPSPAWN.
	* src/engine.c (engine_ops): Add _gpgme_engine_ops_spawn.
	(gpgme_get_engine_info): Add Spawn to the list of protocols.
	(_gpgme_engine_op_spawn): New.

	* src/gpgme-tool.c (gt_protocol_from_name): Add new protocol.
	(gt_spawn, cmd_spawn): New.

	Add gpgme_get_dirinfo.
	* src/dirinfo.c (gpgme_get_dirinfo): New.
	* tests/t-engine-info.c (main): Print results from that function.

	Make use of internal iospawn flags more flexible.
	* src/priv-io.h (IOSPAWN_FLAG_DETACHED): New. Renumber the others.
	* src/w32-io.c (_gpgme_io_spawn): Use DETACHED_PROCESS process only if
	IOSPAWN_FLAG_DETACHED is given.
	* src/w32-qt-io.cpp (_gpgme_io_spawn): Ditto.
	* src/w32-glib-io.c (_gpgme_io_spawn): Ditto.
	* src/assuan-support.c (my_spawn): Pass IOSPAWN_FLAG_DETACHED flags.
	* src/dirinfo.c (read_gpgconf_dirs): Ditto.
	* src/engine-gpg.c (start): Ditto.
	* src/engine-gpgconf.c (gpgconf_read, gpgconf_write): Ditto.
	* src/version.c (_gpgme_get_program_version): Ditto.

	Make sure a spawned process has all standard fds connected.
	* src/posix-io.c (_gpgme_io_spawn): dup /dev/null also to unsued
	stdout.

2014-03-13  Werner Koch  <wk@gnupg.org>

	Add configure option --enable-fixed-path.
	* configure.ac: Add option --enable-fixed-path.
	(FIXED_SEARCH_PATH): New ac_define.
	* src/posix-util.c (walk_path): Make use of the option.  Remove
	current directory from fallback PATH.

2014-03-11  Werner Koch  <wk@gnupg.org>

	Avoid pointer arithmetic on void pointer.
	* src/gpgme.c (gpgme_io_writen): Use new var buffer.

	Change implementation return type to match the definition.
	* src/gpgme.c (gpgme_get_sub_protocol): Change return type to
	gpgme_protocol_t.

2014-03-05  Daiki Ueno  <ueno@gnu.org>

	doc: Fix documentation of struct data types.
	* gpgme.texi (Key Management): Document is_cardkey and card_number
	members of gpgme_subkey_t.
	(Decrypt): Remove description of the non-existent wrong_key_usage
	member of gpgme_recipient_t.
	(Verify): Document pka_address member of gpgme_signature_t.
	(Creating a Signature): Add missing member names in
	gpgme_new_signature_t.
	(Registering I/O Callbacks): Fix reference of gpgme_io_cbs struct.

2014-02-21  Werner Koch  <wk@gnupg.org>

	Always pass correct name to argv[0].  Ignore GPG_AGENT_INFO for gpg2.
	* src/dirinfo.c (WANT_GPG_ONE_MODE): New.
	(struct dirinfo): Add field "gpg_one_mode".
	(get_gpgconf_item): Set that field and return it if requested.
	(_gpgme_in_gpg_one_mode): New.
	* src/engine-gpg.c (build_argv): Check GPG_AGENT_INFO only in gpg-1
	mode.

	* src/dirinfo.c (_gpgme_get_basename): New.
	* src/engine-g13.c (g13_new): Take argv[0] from the pgmname.
	* src/engine-gpgsm.c (gpgsm_new): Ditto.
	* src/engine-gpg.c (build_argv): Ditto. Add arg PGMNAME.
	(start): Pass PGMNAME to buildargv.

2014-02-12  Werner Koch  <wk@gnupg.org>

	Fix type inconsistency between gpgme.h and gpgme.c.
	* src/gpgme.c (gpgme_set_pinentry_mode): Fix type of MODE.

2014-01-10  Werner Koch  <wk@gnupg.org>

	Use the generic autogen.sh script.
	* autogen.rc: New.
	* Makefile.am (EXTRA_DIST): Add it.
	* autogen.sh: Update from GnuPG.

	* configure.ac (AM_SILENT_RULES): New.

2014-01-07  Werner Koch  <wk@gnupg.org>

	Make gpgconf engine work again - fixes 02ba35c1.
	* src/gpgconf.c: Remove ENABLE_GPGCONF and move prototypes to ...
	* src/engine-backend.h: ... here.

	Make gpgme_new return a proper error if no engines are installed.
	* src/engine.c (gpgme_get_engine_info): Improve error handling.
	(_gpgme_engine_info_copy): Ditto.
	* src/gpgme.c (gpgme_new): Return error GPG_ERR_NO_ENGINE.

	Print the full PATH in the log if gpg was not found.
	* src/posix-util.c (walk_path): Keep a copy of PATH.

2014-01-06  Werner Koch  <wk@gnupg.org>

	Add global flags disable-gpgconf, gpgconf-name, and gpg-name.
	* src/gpgme.c (gpgme_set_global_flag): Add names "disable-gpgconf",
	"gpgconf-name", and "gpg-name".
	* src/dirinfo.c (_gpgme_dirinfo_disable_gpgconf): New.
	(get_gpgconf_item): Minor debug info change.
	* src/posix-util.c (default_gpg_name, default_gpgconf_name): Add vars.
	(_gpgme_set_default_gpg_name): New.
	(_gpgme_set_default_gpgconf_name): New.
	(_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Use new vars.
	(walk_path): Add debug output on failure.
	* src/w32-util.c (default_gpg_name, default_gpgconf_name): Add vars.
	(replace_slashes): New.
	(get_basename): New.
	(_gpgme_set_default_gpg_name): New.
	(_gpgme_set_default_gpgconf_name): New.
	(_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Use new vars.

	* tests/t-engine-info.c (main): Add --verbose and --set-global-flag
	options.

2013-12-27  Werner Koch  <wk@gnupg.org>

	Locate engine names only at runtime and prefer GnuPG-2.
	* configure.ac (NEED_GPG_VERSION, NEED_GPGSM_VERSION)
	(NEED_G13_VERSION, NEED_GPGCONF_VERSION): Remove vars and all related
	checks.  Do not check for any engine version.
	(HAVE_ASSUAN): Remove AM conditional.
	* src/Makefile.am: Remove separate component vars and always build all
	engines but uiserver.
	* src/dirinfo.c (WANT_GPGCONF_NAME): New.
	(struct dirinfo): Add field gpgconf_name.
	(_gpgme_get_default_gpgconf_name): Use WANT_GPGCONF_NAME.
	(get_gpgconf_item): Set gpgconf name and adjust for _gpgme_get_*_path
	now returning a malloced string.
	* src/engine.c (engine_ops): Always init all engines except for
	uiserver.
	* src/posix-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path):
	Remove unused functions.
	(walk_path): New.
	(_gpgme_get_gpg_path, _gpgme_get_gpgconf_path ): Re-implement using
	walk_path.
	* src/w32-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path): Remove
	unused functions.
	(_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Return a malloced
	string.
	* src/engine-g13.c (g13_get_req_version): Use a hardwired string with
	the required version.  This info belongs into this file.
	* src/engine-gpg.c (gpg_get_req_version): Ditto.
	* src/engine-gpgconf.c (gpgconf_get_req_version): Ditto.
	* src/engine-gpgsm.c (gpgsm_get_req_version): Ditto.
	* tests/t-engine-info.c: Replace now useless test by an info output.
	* tests/gpg/Makefile.am (GPG, GPG_AGENT): Hardwire gpg and gpg-agent.
	* tests/gpgsm/Makefile.am (GPGSM): Hardwire gpgsm.

2013-08-19  Werner Koch  <wk@gnupg.org>

	Document API change for GPGME_EVENT_DONE from 2009.
	* doc/gpgme.texi (I/O Callback Interface): Fix description for the
	event arg.

	Fix possible segv in the gpgme_op_card_edit.
	* src/edit.c (gpgme_op_edit_start, gpgme_op_card_edit_start): Do not
	deref a NULL KEY in TRACE_BEG.

	tests: Fix NULL ptr deref in gpgsm/t-verify.
	* tests/gpgsm/t-verify.c (check_result): Do not dereference a sig or
	sig->fpr if NULL.

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

	Release 1.4.3.
	* configure.ac: Change LT version to C22/A11/R0.

	Make test suite workable with GnuPG 2.1.
	* tests/gpg/start-stop-agent: New.
	* tests/gpg/initial.test: New.
	* tests/gpg/final.test: New.
	* tests/gpg/Makefile.am (c_tests): New.
	(TESTS): Move all to c_tests.  Add initial.test, final.test, and
	c_tests.
	(TESTS_ENVIRONMENT): Add C_ALL=C
	(private_keys): New.
	(EXTRA_DIST): Add new files.
	(./private-keys-v1.d/gpg-sample.stamp): Copy private keys.
	(all-local): Depend on gpg-sample.stamp.
	* tests/gpg/13CBE3758AFE42B5E5E2AE4CED27AFA455E3F87F: New.
	* tests/gpg/13CD0F3BDF24BE53FE192D62F18737256FF6E4FD: New.
	* tests/gpg/76F7E2B35832976B50A27A282D9B87E44577EB66: New.
	* tests/gpg/7A030357C0F253A5BBCD282FFC4E521B37558F5C: New.
	* tests/gpg/A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD: New.

	Improve detection of default gpg by configure.
	* configure.ac: Move test for gpgconf before test for gpg.
	(GPG, GPGSM, G13): Use gpgconf instead of AC_PATH_PROG if possible.

2013-08-09  Werner Koch  <wk@gnupg.org>

	Add function gpgme_data_identify.
	* src/gpgme.h.in (gpgme_data_type_t): New.
	(gpgme_data_identify): New prototype.
	* src/data-identify.c: New.
	* src/parsetlv.c, src/parsetlv.h: New.  Take from gpa.
	* src/libgpgme.vers, src/gpgme.def: Add gpgme_data_identify.
	* src/gpgme-tool.c (status): Add STATUS_IDENTIFY_RESULT.
	(gt_identify): New.
	(cmd_identify): New.

	(hlp_passwd): Move close to cmd_passwd.

2013-08-02  Werner Koch  <wk@gnupg.org>

	Prefer GnuPG-2 engines over GnuPG-1.
	* src/util.h: Move some prototypes to ...
	* src/sys-util.h: New.
	* src/Makefile.am (main_sources): Add sys-util.h.
	* configure.ac (AH_VERBATIM): Add DIRSEP_C and DIRSEP_S.
	* src/dirinfo.c: Include sys-util.h.
	(WANT_GPG_NAME, WANT_GPGSM_NAME, WANT_G13_NAME)
	(WANT_UISRV_SOCKET): New.
	(dirinfo): Add corresponding fields.
	(parse_output): Add arg COMPONENTS and set new fields.
	(read_gpgconf_dirs): Add arg components and act upon it.
	(get_gpgconf_item): Call read_gpgconf_dirs two times.  Add debug
	output.
	(_gpgme_get_default_gpg_name): New.
	(_gpgme_get_default_gpgsm_name): New.
	(_gpgme_get_default_g13_name): New.
	(_gpgme_get_default_gpgconf_name): New.
	(_gpgme_get_default_uisrv_socket): New.
	* src/engine-gpg.c, src/engine-g13.c, src/engine-gpgconf.c
	* src/engine-gpgsm.c, src/engine-uiserver.c: Change to use
	_gpgme_get_default_ instead of those from sys-util.h.
	* src/posix-util.c (_gpgme_get_gpg_path): Include sys-util.h.
	(_gpgme_get_uiserver_socket_path): Remove.
	* src/w32-util.c (_gpgme_get_gpg_path): Include sys-util.h.
	(_gpgme_get_uiserver_socket_path): Remove.

	w32: Try to locate gpg in the gpgme installation dir.
	* src/w32-util.c (my_hmodule): New.
	(wchar_to_utf8): New.
	(DllMain): New.
	(_gpgme_get_inst_dir): New.
	(find_program_in_dir): New.
	(find_program_in_inst_dir): Add arg INST_DIR.
	(_gpgme_get_gpg_path): Get inst_dir before acquiring the lock.
	(_gpgme_get_gpgconf_path): Ditto.
	(_gpgme_get_g13_path): Ditto.
	(_gpgme_get_w32spawn_path): Ditto.

2013-07-31  Werner Koch  <wk@gnupg.org>

	doc: Add --binary option for the OUTPUT command of an uiserver.

2013-06-18  Werner Koch  <wk@gnupg.org>

	Add function gpgme_signers_count.
	* src/signers.c (gpgme_signers_count): New.
	* src/libgpgme.vers, src/gpgme.def: Add as external symbol.
	* src/gpgme.h.in: Add prototype.

2013-05-28  Werner Koch  <wk@gnupg.org>

	Release 1.4.2.
	* configure.ac: Set LT version to C21/A10/R0.

	Add convenience macro GPGME_PROTOCOL_OPENPGP.
	* src/gpgme.h.in (GPGME_PROTOCOL_OPENPGP): New.

2013-05-23  Werner Koch  <wk@gnupg.org>

	w32: Fix installing of .def file.
	* src/Makefile.am (install-def-file): Create libdir first.

	Fix libtool 2.4.2 to correctly detect .def files.
	* build-aux/ltmain.sh (sed_uncomment_deffile): New.
	(orig_export_symbols): Uncomment def file before testing for EXPORTS.
	* m4/libtool.m4: Do the same for the generated code.

2013-05-22  Werner Koch  <wk@gnupg.org>

	Support --no-encrypt-to also with gpgme_op_encrypt_sign.
	* src/engine-gpg.c (gpg_encrypt_sign): Support the
	GPGME_ENCRYPT_NO_ENCRYPT_TO flag.

2013-05-22  Werner Koch  <wk@gnupg.org>
	    Kyle L. Huff  <g10bts@curetheitch.com>

	Allow symmetric encryption with gpgme_op_encrypt_sign.
	* src/encrypt-sign.c (encrypt_sym_status_handler): New.
	(encrypt_sign_start): Handle recp == NULL case.
	* src/engine-gpg.c (gpg_encrypt_sign): Implement symmetric encryption.
	* tests/gpg/t-encrypt-sign.c (main): Add a test case for this.

2013-05-22  Werner Koch  <wk@gnupg.org>

	gpgme-tool: Allow for symmetric encryption.
	* src/gpgme-tool.c (gt_sign_encrypt): Pass NULL for recp if no
	recipients are given.

	tests: Print auditlog in plain text format.
	* tests/gpgsm/t-verify.c (show_auditlog): Use plain text format.

2013-05-18  Werner Koch  <wk@gnupg.org>

	Improve C++ compatibility of previous patch.
	* src/gpgme.h.in: Move gpgme_sssize_t and gpgme_off_t typedefs into
	the extern "C" scope.

2013-05-16  Werner Koch  <wk@gnupg.org>

	Make definition of off_t robust against misbehaving w32 toolchains.
	* configure.ac (NEED__FILE_OFFSET_BITS): Change to define gpgme_off_t
	and gpgme_ssize_t.
	(API__OFF_T, API__SSIZE_T): New ac_subst.
	* src/gpgme.h.in: Replace all ssize_t and off_t by ac_subst macros.
	* src/assuan-support.c, src/ath-pthread.c, src/ath.c, src/ath.h
	* src/data-compat.c, src/data-fd.c, src/data-mem.c, src/data-stream.c
	* src/data-user.c, src/data.c, src/data.h, src/engine-gpgsm.c
	* src/engine-uiserver.c, src/gpgme-tool.c, src/gpgme.c: Replace off_t
	by gpgme_off_t and sszie_t by gpgme_ssize_t.
	* src/ath-pthread.c, src/ath.h: Include gpgme.h.

2013-05-11  Werner Koch  <wk@gnupg.org>

	w32: Change the way the I/O threads are cleaned up.
	* src/w32-io.c (reader_context_s, create_reader)
	(writer_context_s, create_writer): Rename STOPPED to CLOSE_EV.
	(reader, writer): Remove setting of STOPPED.  Wait for CLOSE_EV and
	then release the context.
	(destroy_reader, destroy_writer): Do not wait but set the CLOSE_EV.
	(kill_reader, kill_writer): Remove.
	(_gpgme_io_close): Add code from kill_reader and kill_writer.

2013-05-08  Werner Koch  <wk@gnupg.org>

	Fix hang in socket closing.
	* src/w32-io.c (destroy_reader): Call shutdown.
	(reader): Do not print an error in the shutdown case.

	Improve debug output of the I/O reader and writer.
	* src/w32-io.c (reader, writer): Also print file_sock.

2013-05-06  Werner Koch  <wk@gnupg.org>

	Simplify a debug code function.
	* src/debug.c (_gpgme_debug): Remove static space string.

2013-05-01  Werner Koch  <wk@gnupg.org>

	Release 1.4.1.
	* configure.ac: Bump LT version to C20/A9/R1.

	Disable fd-passing for Apple.
	* configure.ac: Disable fd-passing by default for Apple.

2013-04-30  Werner Koch  <wk@gnupg.org>

	Allow reading of long gpgconf output lines.
	* src/engine-gpgconf.c (gpgconf_read): Rewrite to allow for line
	lengths up to 64k.

2013-04-29  Werner Koch  <wk@gnupg.org>

	Fix for i686-w64-mingw32.
	* configure.ac (NEED__FILE_OFFSET_BITS): Do not define under Windows.

2013-02-26  Werner Koch  <wk@gnupg.org>

	Release 1.4.0.
	* configure.ac: Bump LT version to C20/A9/R0.

	Enable FD passing and thus building of the UI-server.
	* configure.ac: Make --enable-fd-passing the default.
	* src/engine-uiserver.c (_gpgme_engine_ops_uiserver): Syntax fix.

	w32: Hacks for building with 32 bit mingw64.
	* configure.ac (INSERT__TYPEDEFS_FOR_GPGME_H): Add hacks for 32 bit
	mingw64.
	* src/util.h [W32]: Include winsock2.h before windows to make mingw64
	happy.
	* src/w32-util.c (_WIN32_IE): Need to use 5.1 for mingw64.

	Improve missing libgpg-error reporting in configure.
	* configure.ac (NEED_GPG_ERROR_VERSION): New.  Improve reporting for
	missing libgpg-error.

	Change the various version numbers to the new scheme.
	* configure.ac: Rename my_foo variables to mym4_foo variables to make
	clear that they are processed by m4.
	(VERSION_NUMBER): New ac_subst.
	(AH_BOTTOM): Add CRIGHTBLURB macro.
	(BUILD_REVISION, BUILD_FILEVERSION, BUILD_TIMESTAMP): Change them to
	work similar to libgpg-error et al.
	* src/versioninfo.rc.in: Remove use of BUILD_NUMBER and get it in line
	with gpg-error et al.
	* src/version.c (cright_blurb): New.
	(gpgme_check_version_internal): Add magic to display the above
	information.
	* tests/t-version.c (main): Add option --verbose.

	Update GnuPG related m4 files.
	* m4/gpg-error.m4: Update from libgpg-error.
	* m4/libassuan.m4: Update from libassuan.

	Update helper scripts.
	* configure.ac: Use AC_CONFIG_AUX_DIR.  Remove args from
	AM_INIT_AUTOMAKE.  Replace AM_CONFIG_HEADER by AC_CONFIG_HEADER.
	* compile, config.guess, config.sub, depcomp, install-sh, ltmain.sh
	* mkinstalldirs, texinfo.texi: Move to build-aux/ and update from
	gnulib (c042abf).
	* build-aux/mdate-sh, build-aux/missing: Install via automake -a -c.
	Update autogen.sh for changed config dir.
	* autogen.sh: Adjust for scripts dir change.  Update W32 toolprefix
	list.

2013-02-25  Werner Koch  <wk@gnupg.org>

	Remove included gitlog-to-changelog.
	* build-aux/gitlog-to-changelog: Remove.
	* configure.ac (GITLOG_TO_CHANGELOG): Default to just
	gitlog-to-changelog.

2013-02-12  Werner Koch  <wk@gnupg.org>

	Add macro GPGME_VERSION_NUMBER.
	* src/gpgme.h.in (GPGME_VERSION_NUMBER): New.
	* configure.ac (my_version_major, my_version_minor)
	(my_version_micro): New m4 macros.
	(my_version): Build from new m4 macros.
	(VERSION_NUMBER): New ac_subst.

	Add public function gpgme_get_pinentry_mode.
	* src/gpgme.c (gpgme_get_pinentry_mode): New.

2013-02-07  Werner Koch  <wk@gnupg.org>

	gpgme_tool: Support GPG's new pinentry-mode.
	* src/gpgme-tool.c (log_error): Do not always print the error source.
	(gt_set_pinentry_mode): New.
	(server_passphrase_cb): New.
	(cmd_pinentry_mode): New.
	(register_commands): Add cmd_pinentry_mode.
	(options): Add option --gpg-binary.
	(struct args): Add field gpg-binary.
	(parse_options, main): Implement that option.

	Add public function gpgme_set_pinentry_mode.
	* src/gpgme.c (gpgme_set_pinentry_mode): New.
	* src/gpgme.h.in (gpgme_pinentry_t): New.
	(gpgme_set_pinentry_mode): New.
	* src/context.h (struct gpgme_context): Add field pinentry_mode.
	* src/engine-backend.h (struct engine_ops): Add field
	set_pinentry_mode.
	* src/engine-gpg.c (struct engine_gpg): Add field pinentry_mode.
	(build_argv): Implement pinentry_mode.
	(gpg_set_pinentry_mode): New.
	(_gpgme_engine_ops_gpg): Register gpg_set_pinentry_mode.

	Add public function gpgme_io_writen.
	* src/gpgme.c (gpgme_io_read): New.

2012-11-16  Werner Koch  <wk@gnupg.org>

	Improve parsing of the GIT revision number.
	* configure.ac (git_revision): Use git rev-parse.

	Fix non-portable use of chmod in autogen.sh.
	* autogen.sh: Remove option -c from chmod.

2012-11-15  Werner Koch  <wk@gnupg.org>

	Make _gpgme_encode_percent_string work for memory buffers.
	* src/conversion.c (D_gpgme_encode_percent_string): Remove stray
	semicolon.  Reported by Xi Wang.

2012-10-24  Werner Koch  <wk@gnupg.org>

	Make local variables configure hack more robust.
	* configure.ac (emacs_local_vars_begin): Use extra m4 quoting so that
	newer Emscasen won't take it up as Local Variables for this file.

	Fix ttyname problem on Android.
	* configure.ac: Define macro and conditional HAVE_ANDROID_SYSTEM.
	* m4/gnupg-ttyname.m4: Force use of replacement on Android.
	* src/ttyname_r.c: Ditto.

	tests: Adhere to the docs and call gpgme_check_version.
	* tests/t-engine-info.c: Call gpgme_check_version.

2012-10-19  Werner Koch  <wk@gnupg.org>

	Trace the use of GPG_ERR_INV_ENGINE.
	* src/debug.h: Include "gpgme.h"
	(_gpgme_trace_gpgme_error): New.
	(trace_gpg_error): New macro.  Use it in all files where we return
	GPG_ERR_INV_ENGINE; also "include debug.h" as needed.

	Avoid warning about initialized but not used variable.
	* src/engine-gpgsm.c (gpgsm_set_fd): Do not set DIR if not needed.

2012-10-11  Werner Koch  <wk@gnupg.org>

	gpgme-tool: Use membuf functions to build up strings.
	* src/gpgme-tool.c (clear_membuf, init_membuf, put_membuf)
	(put_membuf_str, get_membuf, peek_membuf): Add membuf functions.
	Take from GnuPG master's common/membuf.[ch] and patch for our use.
	(result_xml_escape): Rewrite using new functions.

	gpgme-tool: Change license from LPGLv2+ to GPLv3+
	* src/gpgme-tool.c: Change license notice.

2012-10-11  W. Trevor King  <wking@tremily.us>

	gpgme-tool: escape special characters in output XML data (<, >, and &).

	src/gpgme-tool.c (result_xml_escape_replacement, result_xml_escape):
	New.
	(result_xml_tag_data): Use result_xml_escape() to escape data.
	(result_add_error): Use unescaped < and >.

	gpgme-tool: Fix chain_id -> chain-id in KEYLIST XML.

	src/gpgme-tool.c (cmd_keylist): Use <chain-id> instead of <chain_id>.

2012-09-28  W. Trevor King  <wking@tremily.us>

	gpgme-tool: Return more detailed XML from KEYLIST.
	src/gpgme-tool.c (cmd_keylist): Convert output from a list of
	to more detailed XML.
	(xml_preamble1, xml_preamble2, xml_end): Make global.
	(result_add_protocol, result_add_validity): New functions for
	generating XML from GPGME types.
	(result_add_string): Treat NULL strings as "".
	(result_xml_tag_data): Make 'data' a 'const char' so we can use the
	value returned by gpgme_get_protocol_name directly.

	gpgme-tool: Initialize input_fd and output_fd.
	* src/gpgme-tool.c (gpgme_server): Initialize input_fd and output_fd.

2012-09-26  Werner Koch  <wk@gnupg.org>

	gpgme-tool: Fix handling of file descriptors.
	* src/gpgme-tool.c (server_reset_fds): Use close/CloseHandle instead
	of the assuan close functions.
	(_cmd_decrypt_verify, _cmd_sign_encrypt, cmd_verify, cmd_import)
	(cmd_export, cmd_genkey, cmd_getauditlog): Use SERVER object instead
	of assuan_get_*_fd functions.

2012-09-25  Werner Koch  <wk@gnupg.org>

	Document contribution rules.
	* doc/HACKING (License policy): New.
	* doc/DCO: New.
	* AUTHORS: Change maintainer address.

	Add gpgme_set_global_flag to help debugging.
	* src/gpgme.c (gpgme_set_global_flag): New.
	* src/gpgme.h.in (gpgme_set_global_flag): New.
	* src/gpgme.def, src/libgpgme.vers: Add new public function.
	* src/debug.c (envvar_override): New.:
	(_gpgme_debug_set_debug_envvar): New.
	(debug_init): Take ENVVAR_OVERRIDE in account.

2012-07-28  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>

	Add two recent contributors.

	Fix sign error in position calculation for mem_seek.
	* data-mem.c (mem_seek): Fix sign error in position calculation.

	Allow null context on gpgme_set_locale.
	* gpgme.c (gpgme_set_locale): Allow CTX to be a null pointer.

2012-07-13  Werner Koch  <wk@gnupg.org>

	Do not include the removed file status-table.h.
	* src/engine-uiserver.c: Remove status-table.h which is not anymore
	built.  Fixes bug#1412.

	Make handling of new conf values more robust (bug#1413).
	* src/engine-gpgconf.c (arg_to_data): Allow for NULL as value.string.

2012-05-02  Werner Koch  <wk@gnupg.org>

	Release 1.3.2.
	* configure.ac: Bump LT version to C19/A8/R1.

	* configure.ac (GITLOG_TO_CHANGELOG): Define.
	* Makefile.am (gen-ChangeLog): Use it.

	Remove unused pth stuff from gpgme-config.
	* src/gpgme-config.in: Remove unused pth stuff.

	Update signature summary for the case of missing X.509 keys.
	* src/verify.c (gpgme_op_verify_result): Update summary field.

2012-04-30  Werner Koch  <wk@gnupg.org>

	Fix timestamp parsing for y2038 hack.
	* src/conversion.c (_gpgme_parse_timestamp): Set ENDP before year 2038
	check.

2012-04-20  W. Trevor King  <wking@drexel.edu>

	.gitignore: flesh out rules and add subdirectory-.gitignores.

2012-04-13  W. Trevor King  <wking@drexel.edu>

	status-table.c: include string.h for strcmp.
	* status-table.c: include string.h to avoid `warning: implicit
	declaration of function 'strcmp'`.

2012-04-03  W. Trevor King  <wking@drexel.edu>

	gpgme-tool: add help messages for a number of commands.
	* src/gpgme-tool.c (hlp_engine, hlp_sub_protocol, hlp_armor, hlp_textmode,
	hlp_include_certs, hlp_keylist_mode, hlp_input, hlp_output, hlp_message,
	hlp_recipient, hlp_signer, hlp_signers_clear, hlp_decrypt, hlp_decrypt_verify,
	hlp_encrypt, hlp_sign_encrypt, hlp_sign, hlp_verify, hlp_import): New strings.
	(hlp_protocol): Fix typo.
	(register_commands): Add documentation strings.
	(doc): Mention Assuan.

	uiserver.texi: fix decryption -> encryption typo in PREP_ENCRYPT discussion.
	* doc/uiserver.texi (PREP_ENCRYPT): Fix documentation.

	Update Werner Koch's distribution signing key in the README.
	* README: Update signing key.

2012-03-12  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>

	Do not rely on glibc name of syscall.
	* src/ath.c (ath_self): Use __NR_gettid, not SYS_gettid.

	Update config.guess and config.sub to latest version.
	* config.guess, config.sub: Update to latest version.

2012-02-14  Marcus Brinkmann  <marcus.brinkmann@ruhr-uni-bochum.de>

	Rework status table to be less dynamically generated.
	* src/Makefile.am (EXTRA_DIST): Remove mkstatus.
	(BUILT_SOURCE, MOSTLYCLEANFILES): Remove.
	(main_sources): Remove status-table.h, extra-stati.h.
	Add status-table.c.
	(status-table.h): Remove rules for built source.
	* src/decrypt.c: Don't include extra-stati.h.
	* src/engine-gpg.c: Don't include status-table.h.
	(status_cmp): Remove function.
	(read_status): Use _gpgme_parse_status.
	* src/engine-gpgsm.c: Don't include status-table.h.
	(status_cmp, parse_status): Remove function.
	(gpgsm_assuan_simple_command, status_handler): Use _gpgme_parse_status.
	* src/engine-uiserver.c: Don't include status-table.h.
	(status_cmp, parse_status): Remove function.
	(uiserver_assuan_simple_command, status_handler): Use
	_gpgme_parse_status.
	* src/gpgme.h.in (gpgme_status_code_t): Add
	GPGME_STATUS_DECRYPTION_INFO.
	* src/util.h (_gpgme_status_init,_gpgme_parse_status): New declaration.
	* src/status-table.c: New file.
	* src/extra-stati.h, src/mkstatus: Files removed.
	* version.c (do_subsystem_inits): Call _gpgme_status_init.

2012-02-08  Marcus Brinkmann  <mb@g10code.com>

	Use gpgme interface for error handling to avoid linking with gpg-error.
	* tests/t-data.c, tests/run-export.c, tests/run-keylist.c,
	tests/run-support.h, tests/run-verify.c, tests/gpg/t-decrypt-verify.c,
	tests/gpg/t-edit.c, tests/gpg/t-eventloop.c, tests/gpg/t-keylist-sig.c,
	tests/gpg/t-keylist.c, tests/gpg/t-support.h, tests/gpg/t-trustlist.c,
	tests/gpg/t-verify.c, tests/gpg/t-wait.c, tests/gpgsm/cms-decrypt.c,
	tests/gpgsm/cms-keylist.c, tests/gpgsm/t-keylist.c,
	tests/gpgsm/t-support.h, tests/gpgsm/t-verify.c,
	tests/opassuan/t-command.c: Use gpgme interface for gpg-error functions.

	Link the thread test to pthread.
	* tests/gpg/Makefile.am (t_thread1_LDADD): Add -lpthread.

	Link gpgme-tool directly to libassuan, as it uses its interface.
	* src/Makefile.am (gpgme_tool_LDADD): Add @LIBASSUAN_LIBS@.

2012-01-19  Werner Koch  <wk@gnupg.org>

	Support the mingw-w64 toolchain.
	* autogen.sh (build-w32): Add i686-w64-mingw32 to the toolprefix.

	Fix Solaris problems with ttyname_r.
	* m4/gnupg-ttyname.m4: New.  Based on ttyname_r from gnulib.
	* src/ttyname_r.c (_gpgme_ttyname_r): Rename from ttyname_r.
	Implement hacks required for Solaris and possible other non-fully
	Posix systems.
	* src/util.h: Include unistd.h.  Redefine ttyname_r depending on
	REPLACE_TTYNAME_R and put it into the gpgme name space.

	Try to make configure.ac a bit smaller.
	* configure.ac: Move header checks.

	For W32 use a build number instead of abbreviated commit id.
	We would need to use a shortened commit id so that it fits into an 16
	bit Windows variable.  Further it is a random number and not something
	increasing.  Thus a build number made up from the day of the year and
	the hour is much more useful to describe a build number for a specific
	revision.
	* configure.ac [W32]: Replace BUILD_REVISION by BUILD_NUMBER.
	* src/versioninfo.rc.in: Ditto.

	Adjust configure.ac for modern autoconf.
	* configure.ac: Minor cleanups.

	Update to libtool 2.4.2.
	* ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4,
	* m4/lt~obsolete.m4: Update.

	Add ttyname_r check macro from gnulib.
	* m4/gnupg-ttyname.m4: New. Taken from current gnulib.

2011-12-02  Werner Koch  <wk@gnupg.org>

	Generate the ChangeLog from commit logs.
	* build-aux/gitlog-to-changelog: New script.  Taken from gnulib.
	* build-aux/git-log-fix: New file.
	* build-aux/git-log-footer: New file.
	* build-aux/git-hook/commit-msg: New script.
	* doc/HACKING: New file.
	* ChangeLog: New file.
	* Makefile.am (EXTRA_DIST): Add new files.
	(gen-ChangeLog): New.
	(dist-hook): Run gen-ChangeLog.
	* autogen.sh: Install commit-msg hook for git.

	Rename all ChangeLog files to ChangeLog-2011.

2011-12-02  Werner Koch  <wk@gnupg.org>

	NB: Changes done before December 1st, 2011 are described in
	per directory files named ChangeLog-2011.  See doc/HACKING for
	details.

        -----
        Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
                      2010, 2011, 2012, 2013 g10 Code GmbH

	Copying and distribution of this file and/or the original GIT
	commit log messages, with or without modification, are
	permitted provided the copyright notice and this notice are
	preserved.
