2017-03-28  Werner Koch  <wk@gnupg.org>

	Release 1.9.0.
	+ commit aa0390ec3b910bbbc323a15ec3c3351e77785a9a
	* configure.ac <c>: Bump LT version to C29/A18/R0.
	<cpp>: Bump LT version to C10/A4/R0.
	<qt>: Bump LT version to C9/A2/R0.

	core: Prepare for new key listing data send by gpg.
	+ commit 813ae5fa2d712aa9679b791c67c9c1c43d36ffe4
	* src/gpgme.h.in (gpgme_user_id_t): New fields 'origin' and
	'last_update'.
	(gpgme_key_t): New fields 'origin' and 'last_update'.
	* src/conversion.c (_gpgme_parse_timestamp_ul): New.
	* src/keylist.c (keylist_colon_handler): Parse fields 19 and 20.

	* tests/run-keylist.c (main): Print new fields.

2017-03-27  Andre Heinecke  <aheinecke@intevation.de>

	qt: Disable testEncryptDecryptNowrap.
	+ commit 57d60b20f16dd5f1bccbbcaa0a6ed75a554a6414
	* lang/qt/tests/t-encrypt.cpp (EncryptTest::testEncryptDecryptNowrap):
	Disable test.

2017-03-27  Justus Winter  <justus@g10code.com>

	python: Skip tests if running with GnuPG < 2.1.12.
	+ commit 348da58fe0c3656e6177c98fef6b4c4331326c8e
	* lang/python/tests/support.py (assert_gpg_version): Fix error
	message.  Skip all tests when we use GnuPG older than 2.1.12.

2017-03-24  Andre Heinecke  <aheinecke@intevation.de>

	cpp: Respect decrypt flags in new functions.
	+ commit 18b7906078cf08962c54c1e711cf2d91a24fd4e5
	* lang/cpp/src/context.cpp: Respect directly provided flags
	in the new decrypt functions.

	qt: Add unittest for decrypt unwrap.
	+ commit 5493164f8665fabf795f3b34a7084770a38ae940
	* lang/qt/tests/t-encrypt.cpp
	(EncryptTest::testEncryptDecryptNowrap): New.

	cpp: Use gpgme_op_decrypt_ex and add new flags.
	+ commit 8ad37ecc297f208d0a63783c1ffae33ad4c3c81a
	* lang/cpp/src/context.cpp: New decrypt and decryptVerify functions
	that take flags as arguments. Use new variants in old functions.
	(Context::setDecryptionFlags): New helper.
	(Context::Private::Private): Initialize new member.
	* lang/cpp/src/context_p.h (Context::Private::decryptFlags): New.
	* lang/cpp/src/context.h (Context::DecryptFlags): New enum.
	(Context::EncryptionFlags): Extend for EncryptWrap.

2017-03-24  Werner Koch  <wk@gnupg.org>

	core: New flags GPGME_DECRYPT_UNWRAP and GPGME_ENCRYPT_WRAP.
	+ commit 6ac1f2cdedb085b4ac9372c1e591497e2e618de4
	* src/gpgme.h.in (GPGME_ENCRYPT_WRAP): New const.
	(gpgme_decrypt_flags_t): New enum.
	(GPGME_DECRYPT_VERIFY): New const
	(GPGME_DECRYPT_UNWRAP): New const
	(gpgme_op_decrypt_ext_start): New func.
	(gpgme_op_decrypt_ext): New func.
	* src/decrypt-verify.c (gpgme_op_decrypt_ext_start): New.
	(gpgme_op_decrypt_ext): New.
	(decrypt_verify_start): Add arg FLAGS.  Replace call to
	engine_op_decrypt_verify by the plain decrypt with the flag set.
	(gpgme_op_decrypt_verify_start): Pass the flag.
	(gpgme_op_decrypt_verify): Pass the flag.
	* src/decrypt.c (decrypt_start): Rename to ...
	(_gpgme_decrypt_start): this.  Add arg FLAGS.  Pass FLAGS to
	engine_op_decrypt.
	(gpgme_op_decrypt_start): Adjust for chnage pass 0 for FLAG.
	(gpgme_op_decrypt_start): Ditto.
	* src/engine.c (_gpgme_engine_op_decrypt_verify): Remove.
	(_gpgme_engine_op_decrypt): Add arg FLAGS.
	* src/gpgme.def, src/libgpgme.vers: Add new functions.
	* src/engine-backend.h (struct engine_ops): Remove member
	'decrypt_verify'.  Add FLAGS to 'decrypt'.  Adjust all initialization.
	* src/engine-uiserver.c (uiserver_decrypt): Remove.
	(uiserver_decrypt_verify): Remove.
	(_uiserver_decrypt): Rename to ...
	(uiserver_decrypt): this.  Replace arg VERIFY by new arg FLAGS.
	* src/engine-gpg.c (gpg_decrypt): Support GPGME_DECRYPT_UNWRAP.
	(gpg_encrypt): Support GPGME_ENCRYPT_WRAP.

	* tests/run-decrypt.c (main): New option --unwrap.
	* tests/run-encrypt.c (main): New option --wrap.

2017-03-22  Andre Heinecke  <aheinecke@intevation.de>

	qt: Add test for Data::toKeys.
	+ commit 66c334650bd64fdb72c4bd5975e25b8659d320ec
	* lang/qt/tests/t-various.cpp (TestVarious::testKeyFromFile): New.

	cpp: Wrap keylist_from_data.
	+ commit 8ddb42ada46f00d8393f6c2df7d6b79a4a5878f0
	* lang/cpp/data.h, lang/cpp/data.cpp (GpgME::Data::toKeys): New.

	qt: Initialize library first in tests.
	+ commit 121873b821636052c10d9e0bd885eb9013c52096
	* lang/qt/tests/t-support.cpp (QGpgMETest::initTestCase): Initialize
	library.

2017-03-22  Justus Winter  <justus@g10code.com>

	python: Improve Python detection.
	+ commit 104635eb503ec764146731888a6975b4329660fd
	* m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Prefer the generic
	'pythonX' over 'pythonX.Y'.  This way we select the users preferred
	version for both flavors.  Prefer 'python' over 'python3' but not over
	'python2' so that the algorithm still finds a 'python2' even if
	'python' is a Python3.

2017-03-21  Werner Koch  <wk@gnupg.org>

	core: New API gpgme_op_set_uid_flag.
	+ commit 421ddd1e6706046c5062417fd69a87e10c9fc0a9
	* src/gpgme.h.in (gpgme_op_set_uid_flag_start): New.
	(gpgme_op_set_uid_flag_start): New.
	* src/gpgme.def, src/libgpgme.vers: Add them.
	* src/genkey.c (addrevuid_start): Change arg revoke to a flag.
	(gpgme_op_revuid_start): Pass GENKEY_EXTRAFLAG_REVOKE for the fomer
	revoke parameter.
	(gpgme_op_revuid): Ditto.
	(set_uid_flag): New.
	(gpgme_op_set_uid_flag_start): New.
	(gpgme_op_set_uid_flag): New.
	* src/engine.h (GENKEY_EXTRAFLAG_SETPRIMARY): new.
	* src/engine-gpg.c (gpg_adduid): Implement that flag.

	* tests/run-genkey.c (main): New command --set-primary.

2017-03-21  Justus Winter  <justus@g10code.com>

	python: Wrap 'gpgme_op_keylist_from_data_start'.
	+ commit f3e8d8a4518de2768692e0b392262d0da6d0fd84
	* NEWS: Update.
	* lang/python/gpg/core.py (Context.keylist): New keyword argument
	'source'.  If given, list keys from 'source'.
	* lang/python/gpgme.i: Wrap the argument to
	'gpgme_op_keylist_from_data_start'.
	* lang/python/tests/Makefile.am (py_tests): Add new test.
	* lang/python/tests/support.py (EphemeralContext): Do not throw an
	error if no agent has been started in the context.
	* lang/python/tests/t-keylist-from-data.py: New file.

2017-03-21  Werner Koch  <wk@gnupg.org>

	core: Extend gpgme_get_dirinfo to return the gpg-wks-client name.
	+ commit 55ac5eed9f59081283d34098a9e0ada753d61d59
	* src/dirinfo.c (WANT_GPG_WKS_CLIENT_NAME): New const.
	(struct dirinfo): New field 'gpg_wks_client_name'.
	(get_gpgconf_item): Build it on demand.
	(gpgme_get_dirinfo): New value "gpg-wks-client-name" for WHAT.

	core: New encryption flag GPGME_ENCRYPT_THROW_KEYIDS.
	+ commit fab8b1a166fff7265d8a7a7acbbf5f30d26cc93c
	* src/gpgme.h.in (GPGME_ENCRYPT_THROW_KEYIDS): New flag.
	* src/engine-gpg.c (gpg_encrypt): Implement flag
	(gpg_encrypt_sign): Implement flag.

	* tests/run-encrypt.c (main): New option --throw-keyids.

2017-03-21  Andre Heinecke  <aheinecke@intevation.de>
	    Werner Koch  <wk@gnupg.org>

	core: New public API gpgme_op_keylist_from_data_start.
	+ commit 35023f313622fb1b34108dd934e84831c58b81aa
	* src/gpgme.h.in: New API gpgme_op_keylist_from_data_start.
	* src/libgpgme.vers, src/gpgme.def: Add it.
	* src/keylist.c (gpgme_op_keylist_from_data_start): New.
	* src/engine-backend.h (engine_ops): Add field 'keylist_data'.  Change
	all engines to pass NULL for it.
	* src/engine.c (_gpgme_engine_op_keylist_data): New.
	* src/engine-gpg.c (gpg_keylist_data): New.
	(_gpgme_engine_ops_gpg): Register gpg_keylist_data.

	* tests/run-keylist.c (main): New option --from-file.

2017-03-20  Werner Koch  <wk@gnupg.org>

	core,cpp: New key flag 'is_de_vs'.
	+ commit ea9686ec71a2dd2225ce2b6d6d4038821d36205f
	* src/gpgme.h.in (_gpgme_subkey): New flag is_de_vs.
	* tests/run-keylist.c (main): Print that flag.
	* src/keylist.c (parse_pub_field18): New.
	(keylist_colon_handler): Parse compliance flags.
	* lang/cpp/src/key.cpp (Key::isDeVs): New.
	(Subkey::isDeVs): New.

	* lang/cpp/src/key.h (class Key): New method isDeVs.
	(class Subkey): New method isDeVs.

2017-03-20  Justus Winter  <justus@g10code.com>

	tests: Fix distcheck.
	+ commit 392e51dd1181d035c19918222da65d08fdb2ee6d
	* tests/start-stop-agent: Do not create 'gpg-agent.conf' if it does
	not exist.

	python: Fix version check.
	+ commit 57e64d019d993fdeb4323def5352f8ecc98c6fd9
	* lang/python/tests/support.py (assert_gpg_version): Cope with
	non-released versions.

	tests: Use 'gpg-agent --allow-loopback-pinentry' if applicable.
	+ commit 16b202d9999591b71fb8bb49f6db10ef96d4cbe8
	* lang/python/tests/Makefile.am (gpg-agent.conf): Do not hard-code the
	option.  This breaks gpg-agent from GnuPG 2.0.
	* tests/start-stop-agent: Rather, check if the option is supported and
	add it to the configuration if it is.

	python: Skip tests if GnuPG is too old.
	+ commit e1cf8bab319ba1dea41ba5d711dbb66ffd8e6fd6
	* lang/python/tests/support.py (assert_gpg_version): New function.
	* lang/python/tests/t-callbacks.py: Use the new function to skip the
	test if GnuPG is too old.
	* lang/python/tests/t-edit.py: Likewise.
	* lang/python/tests/t-encrypt-sym.py: Likewise.
	* lang/python/tests/t-quick-key-creation.py: Likewise.
	* lang/python/tests/t-quick-key-manipulation.py: Likewise.
	* lang/python/tests/t-quick-key-signing.py: Likewise.

	python: Remove superfluous initialization.
	+ commit 4572e8d2ac1d3b45e75ce71265c99e591fbf0e28
	* lang/python/tests/support.py (init_gpgme): Remove.  This is an
	remnant from the c tests.  Nowadays, the Python bindings initialize
	GPGME automagically.
	* lang/python/tests/initial.py: Remove call to 'support.init_gpgme'.
	* 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-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.

2017-03-14  Justus Winter  <justus@g10code.com>

	python: Make error message more helpful.
	+ commit 9d6825be092f1590f28b5bab462eeb944d9b800c
	* lang/python/tests/run-tests.py: Make the error message shown when we
	cannot locate the python module in the build tree more helpful.

	python: Make tests more robust.
	+ commit ac4849953860547b06a167ca9612c4de369d02b6
	* lang/python/tests/support.py (TemporaryDirectory): Always use our
	own version even if 'tempfile.TemporaryDirectory' is provided, because
	we need to use 'shutil.rmtree(..., ignore_errors=True)' to avoid it
	tripping over gpg-agent deleting its own sockets.

	python: Improve build system integration.
	+ commit a4201035fdc050f337a6b9f520c8ddbb569e2eb4
	* lang/python/Makefile.am: Use 'set -e' when chaining shell commands
	together in rules.

	build: Improve Python detection.
	+ commit 6a371663886a7ba6073f385a3ab5f5a03de8e008
	* configure.ac: Do not error out too early if we don't find a matching
	Python version.  We handle this case later.

	build: Tune M4 macros for our needs.
	+ commit 5189c08af9468cdeb6f16a6ecd0fee53e1e3aa0e
	* m4/ax_python_devel.m4: Do not emit 'HAVE_PYTHON'.
	* m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Add newer Python
	versions, drop older ones.  Also, sort the list with older versions at
	the front, newer and generic versions towards the end.  This makes the
	algorithm pick the lowest version that meets the version requirement.

	build: Add M4 macros for python.
	+ commit 067da472f919e78c95a0a01b68e79a8b7dff173b
	* m4/python.m4: New file.

2017-03-13  Andre Heinecke  <aheinecke@intevation.de>

	qt: Add test for DN parser.
	+ commit 43aa3eed15dcc4f848915ceabeff35c29c1c57e4
	* qt/tests/t-various.cpp (testDN): New.

	qt: Use gpgrt_asprintf instead of qstrdup.
	+ commit 9d5048d47446450a34cae4f27eb81c02ea5d4afc
	* lang/qt/src/dn.cpp (parse_dn_part): Use gpgrt_asprintf instead
	of qstrdup.

2017-03-09  Werner Koch  <wk@gnupg.org>

	core: Fix status error return for gpgsm.
	+ commit d2240a2a1819874929bdab820bcbd3bee7f94407
	* src/engine-gpgsm.c (gpgsm_assuan_simple_command): Make sure CB_ERR
	is returned.
	* src/import.c (parse_import_res): Do not return an error for the last
	field.
	(import_status_handler): Actually return the error from
	parse_import_res.

2017-03-02  Justus Winter  <justus@g10code.com>

	python: Print path of the Python module used during tests.
	+ commit 41398779abbcb1ec2d7491e141469a752fc706ff
	* lang/python/tests/initial.py: Print path of the Python module used
	during tests.  Useful to detect if by any mistake the wrong module is
	picked up.

2017-03-02  Werner Koch  <wk@gnupg.org>

	core: Fix minor code style thing.
	+ commit ef035f079fb067f207e5477d5ed6c5a68fb41f59
	* src/engine-gpg.c (gpg_add_algo_usage_expire): Use double parenthesis
	for bit tests.

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

	cpp: Add subkey keygrip to API.
	+ commit 8071a6b2ca33c2a46ed1d50ae7283241daaafcd3
	* lang/cpp/src/key.cpp (Subkey::keyGrip): New.
	* lang/cpp/src/key.h: Update accordingly.

2017-03-01  Andre Heinecke  <aheinecke@intevation.de>

	cpp: Add interactor to generate keys on smartcard.
	+ commit d63258066d008de113ed1170f1b0e787a5bdaba1
	* lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
	Handle new states.
	* lang/cpp/src/gpggencardkeyinteractor.cpp,
	lang/cpp/src/gpggencardkeyinteractor.h: New.
	* lang/cpp/src/Makefile.am: Update accordingly.

	qt: Allow creation of default keys without name.
	+ commit fbafb5474d8898ba1b267f4b4dfbefe39f04e72f
	* lang/qt/src/defaultkeygenerationjob.cpp
	(DefaultKeyGenerationJob::start): Handle empty name and email.

2017-02-26  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	doc: Correct documentation for recp arg of gpgme_op_encrypt_sign_start.
	+ commit 5b49095b89b07591c69827df3973ffabfb3e97b8
	* doc/gpgme.texi (gpgme_op_encrypt_sign_start): recp is an array of
	gpgme_key_t, not a single element.

2017-02-20  Justus Winter  <justus@g10code.com>

	python: Fix test.
	+ commit a7c6353edab57b67180aa127ec77d9353c2366fb
	* lang/python/tests/t-quick-key-manipulation.py: Modify the
	configuration file in the ephemeral home directory, not the one used
	by all the tests.

2017-02-17  Justus Winter  <justus@g10code.com>

	python: Support manipulating the TOFU policy.
	+ commit 15fbac9e72a4d1bff9a3b9e9822f9175b09fbcd5
	* NEWS: Update.
	* doc/gpgme.texi: Fix typos.
	* lang/python/gpg/constants/__init__.py: Import new files.
	* lang/python/gpg/constants/tofu/__init__.py: New file.
	* lang/python/gpg/constants/tofu/policy.py: New file.
	* lang/python/gpg/core.py (Context.key_tofu_policy): New function.
	* lang/python/gpgme.i: Nice reprs for gpgme_tofu_info_t.
	* lang/python/setup.py.in: Install new package.
	* lang/python/tests/t-quick-key-manipulation.py: Extend test.

	python: Support quick key signing.
	+ commit 48634e651fcd02431c0518d42ada1f3b402feb2c
	* NEWS: Update.
	* doc/gpgme.texi (gpgme_op_keysign): Fix the description of the
	'expire' argument.
	* lang/python/gpg/constants/__init__.py: Import new file.
	* lang/python/gpg/constants/keysign.py: New file.
	* lang/python/gpg/core.py (Context.key_sign): New function.
	* lang/python/tests/Makefile.am (py_tests): Add new test.
	* lang/python/tests/t-quick-key-signing.py: New test.

	python: Fix teardown of ephemeral contexts.
	+ commit de8494b16bc50c60a8438f2cae1f8c88e8949f7a
	* lang/python/tests/support.py (EphemeralContext): New function.
	* lang/python/tests/t-quick-key-creation.py: Use the new function to
	manage ephemeral contexts.
	* lang/python/tests/t-quick-key-manipulation.py: Likewise.
	* lang/python/tests/t-quick-subkey-creation.py: Likewise.

	python: Fix using strings as commands in the assuan protocol.
	+ commit 9350168a1eed3f055040d7cc8a9bf4cdf745b23a
	* lang/python/gpg/core.py (Context.assuan_transact): Fix testing
	whether the command is a string on Python2.
	* lang/python/tests/t-protocol-assuan.py: Improve the test to detect
	this problem.

2017-02-16  Justus Winter  <justus@g10code.com>

	python: Support adding and revoking UIDs.
	+ commit 7641b7b5f2c9d5b38c60cd9326bcb4810c37dae5
	* NEWS: Update.
	* lang/python/gpg/core.py (Context.key_add_uid): New function.
	(Context.key_revoke_uid): Likewise.
	* lang/python/tests/Makefile.am (XTESTS): Add new test.
	* lang/python/tests/t-quick-key-manipulation.py: New file.

	python: Support quick subkey creation.
	+ commit 13bace25e3d8422f93fd24919994be36042fd220
	* NEWS: Update.
	* lang/python/gpg/core.py (Context.create_subkey): New function.
	* lang/python/tests/Makefile.am (XTESTS): Add new test.
	* lang/python/tests/t-quick-subkey-creation.py: New file.

	python: Support quick key creation.
	+ commit 476b97822b169c30cc246c1de2ff94cf89084706
	* NEWS: Update.
	* lang/python/gpg/constants/__init__.py: Import new file.
	* lang/python/gpg/constants/create.py: New file.
	* lang/python/gpg/core.py (Context.create_key): New function.
	* lang/python/tests/Makefile.am (XTESTS): Add new test.
	* lang/python/tests/support.py (TemporaryDirectory): New class.
	* lang/python/tests/t-quick-key-creation.py: New file.

	python: Fix passphrase callback wrapping.
	+ commit 3bdce4aa3ddd4a3f55b24678faf978d61daa8909
	* lang/python/helpers.c (pyPassphraseCb): Cope with 'passphrase_info'
	being NULL.

	python: Fix error handling.
	+ commit 048c5f74b61d5e4fa7617ce7c9111c6754bd4409
	* lang/python/gpgme.i (typemap gpgme_key_t[]): Set an error if a
	non-key element is discovered.

2017-02-15  Justus Winter  <justus@g10code.com>

	core: Fix expiration time handling when creating keys.
	+ commit de708e5934cda380dbc3ae51f587c09041de7562
	* NEWS: Update.
	* doc/gpgme.texi (gpgme_op_createkey): Clarify the meaning of the
	'expire' parameter.
	(GPGME_CREATE_NOEXPIRE): Document new flag.
	(gpgme_op_createsubkey): Clarify the meaning of the 'expire'
	parameter.
	* src/engine-gpg.c (gpg_add_algo_usage_expire): Fix handling of the
	expiration time.
	* src/gpgme.h.in (GPGME_CREATE_NOEXPIRE): New macro.

	python: Fix build system integration.
	+ commit 27544d0a74267ab6057dc816ea3311bc9149a200
	* lang/python/Makefile.am (copystamp): Also copy the setup script, and
	link the header files.
	(all-local): Use local setup script.
	(sdist): Fix Python source distribution creation.
	(CLEANFILES): Remove now obsolete files.
	(install-exec-local): Use local setup script.
	* lang/python/setup.py.in: Adjust relative paths to in-tree files.

	python: Update lists of functions returning gpgme_error_t.
	+ commit 25f0435a0022a70af77660d72d33f17bec2d4e51
	* lang/python/gpg/core.py (Context._errorcheck): Add instructions how
	to update the list.  Update list.
	(Data._errorcheck): Likewise.
	(Context.set_engine_info): Simplify.

	core: Fix error types.
	+ commit 6df6e01ed5a581765d245bf7303cda4497d0eb22
	* NEWS: Update.
	* src/data.c (gpgme_data_set_flag): Return a 'gpgme_error_t'.
	* src/error.c (gpgme_strerror_r): Fix type of first argument.
	* src/gpgme.h.in (gpgme_strerror_r): Adapt.
	(gpgme_data_set_flag): Likewise.

2017-02-14  Justus Winter  <justus@g10code.com>

	python: Wrap utility functions.
	+ commit 92adc9bbf640eb5d9177d3ba0189e0f6cee4e995
	* NEWS: Update.
	* lang/python/gpg/core.py (pubkey_algo_string): New function.
	(pubkey_algo_name): Add docstring.
	(hash_algo_name): Likewise.
	(get_protocol_name): Likewise.
	(addrspec_from_uid): New function.
	* lang/python/gpgme.i (gpgme_pubkey_algo_string): Result must be
	freed.
	(gpgme_addrspec_from_uid): Likewise.

	python: Use the correct function to free buffers.
	+ commit 9fc9533c2835ec53c4fd4f822b09e9fec14626d0
	* lang/python/gpgme.i (char *): Free using 'gpgme_free'.

	python: Add keylist mode parameter.
	+ commit fdc4e33dc3f6c84fe9d7bf9795c603ae3cf5f28d
	* NEWS: Update.
	* lang/python/gpg/core.py (Context.keylist): Add 'mode' parameter.

	python: Nicer repr for user ids.
	+ commit e17ab84129045512cf60c221ee43aa877507662f
	* lang/python/gpgme.i (_gpgme_user_id): Provide a nicer repr() for
	user ids.

	python: Add convenience functions for the home directory.
	+ commit 99b7f4f34dd595579181a696ae976a678fe00d49
	* NEWS: Update.
	* lang/python/gpg/core.py (Context.__init__): Add 'home_dir' argument.
	(__repr__): Include 'home_dir'.
	(Context.home_dir): New property.

	qt: Make sure to remove the tofu.db on clean.
	+ commit 30a603580e0f196c721fa4bd44d24077d9bc06c3
	* lang/qt/tests/Makefile.am (CLEANFILES): Add 'tofu.db'.

2017-02-14  Tobias Mueller  <muelli@cryptobitch.de>

	python: Extend SWIG gpgme_{sub,}key with a __repr__ method.
	+ commit 01d5c17587578c729bbbb60f8a65635975e35592
	* lang/python/gpgme.i: Added a genericrepr macro and use it for
	gpgme_key, gpgme_subkey, and gpgme_key_sig.

	python: Remove the -builtin flag for SWIG.
	+ commit aa49be1ab80c200ab6b62d33bf5d0f5aa334fc56
	* lang/python/setup.py.in: Call SWIG without the builtin flag.

	python: Call SWIG_NewPointerObj rather than SWIG_Python_NewPointerObj.
	+ commit d35651917097ae2eee7d52396d53d010bc34df19
	* lang/python/gpgme.i (pygpgme_wrap_gpgme_data_t): Provide a "self"
	variable for SWIG_NewPointerObj and call SWIG_NewPointerObj rather than
	SWIG_Python_NewPointerObj.

	python: Conditionally provide py3 argument to SWIG.
	+ commit d184dbbba8987d9f387feb25791ed891e108dabc
	* lang/python/setup.py.in: Only call with -py3 when we run under python3
	or higher.

2017-02-13  Justus Winter  <justus@g10code.com>

	python: Use one copy of the source tree per Python version.
	+ commit fe65a26ab584bd70fad45c7c4d44330e30a748a4
	* lang/python/Makefile.am (copystamp): Create one copy per Python
	version.
	(all-local): Adapt.
	(clean-local): Likewise.
	(install-exec-local): Likewise.
	* lang/python/tests/run-tests.py: Likewise.

	build: Use macOS' compatibility macros to enable all features.
	+ commit 60273e8b2c11d42215a5707bc55e3e0d8f350e07
	* configure.ac: On macOS, use the compatibility macros to expose every
	feature of the libc.  This is the equivalent of _GNU_SOURCE on GNU
	libc.

	Revert "Disable fd-passing for Apple."
	+ commit f8db658f8b4c3c7941d0029273fb23fbe1ba74ad
	The actual bug has been located, so this can be reverted.

	This reverts commit ef5b4ae37d13142e89a051908dc080cda3d24baa.

2017-02-13  Igor Gnatenko  <ignatenkobrain@fedoraproject.org>

	qt: Add missing #include <functional>
	+ commit 60064c665ec98a2a994fc6c8ad701e60b963ce7e
	* lang/qt/src/qgpgmenewcryptoconfig.cpp,
	lang/qt/src/threadedjobmixin.h: Include functional.

2017-02-07  Andre Heinecke  <aheinecke@intevation.de>

	qt: Don't rely on implicit include in t-verify.
	+ commit 903bf16a416b1bf608b1e647937c9b06864b0141
	* lang/qt/tests/t-various.cpp: Include QTemporaryDir

2017-02-06  Daniel Kahn Gillmor  <dkg@fifthhorseman.net>

	doc: Document that gpgme_op_genkey() parms parameter is not XML.
	+ commit ad22bee5387b1e9a40e8c822a081db3228bb9def
	* doc/gpgme.texi (GnupgKeyParms): document that input format is not
	true XML.

2017-02-03  Werner Koch  <wk@gnupg.org>

	core: Optimize fork/exec for *BSD and Solaris.
	+ commit 51bd69f216a9e2930eeba4b5f6c20e952a381720
	* configure.ac (closefrom): Add to ac_check_funcs.
	* src/posix-io.c (_gpgme_io_spawn): Use closefrom.

	core: Fix possible deadlock due to get_max_fds.
	+ commit 93a59070c699d569d1eac7ba22355fe3f5d10882
	* src/posix-io.c (get_max_fds): Do not use the Linux optimization.

	core: Minor cleanup of commit 195c735.
	+ commit afc308598d1ddaf20d54b4eab30b959066a4e5e6
	* src/verify.c (parse_tofu_user): For cleanness use gpg_error ...
	(_gpgme_verify_status_handler): ... and gpg_err_code.

2017-02-02  Andre Heinecke  <aheinecke@intevation.de>

	qt: Add test for tofu conflict.
	+ commit 43160a39f27f6c3507447620666c85af00b3499c
	* lang/qt/tests/t-tofuinfo.cpp (TofuInfoTest::testTofuConflict): New.

	core: Handle multiple TOFU_USER lines in verify.
	+ commit 195c73589232160f45d00f4901c9bb2b0162f0e5
	* src/verify.c (op_data_t): Add conflict_user_seen.
	(parse_tofu_user): Return ERR_DUP_VALUE for mutltiple TOFU_USERS.
	(_gpgme_verify_status_handler): Handle ERR_DUP_VALUE from
	parse_tofu_user to ignore the next TOFU_STATS.

2017-02-02  Werner Koch  <wk@gnupg.org>

	core: Replace all calls to *sprintf by gpgrt_*sprintf.
	+ commit 15050ce5fce4ed815503db7c029abb38d08970d6
	* configure.ac (vasprintf): Remove check.
	* src/vasprintf.c: Remove file.
	* src/util.h (vasprintf, asprintf): Remove prototypes.  Replace all
	calls to vasprintf and asprintf by gpgrt_vasprintf or gpgrt_asprintf.
	Also take care to use gpgrt_free on the returned value.
	* src/w32-util.c (_gpgme_get_gpgconf_path): Replace a gpgrt_asprintf
	by _gpgme_strconcat.
	(snprintf): New macro to use gpgrt_snprintf instead of the system's
	standard snprintf.

	core: Remove unused check for funopen/fopencookie.
	+ commit 563420a88f8a4f561a2faea4d2b4a1c58b375fd8
	* configure.ac (funopen): Remove check.
	* src/funopen.c: Remove file.

	core: Un-deprecate gpgme_data_rewind.
	+ commit d19bea52afe6efb66a46af6aa4d09928c5d05ee5
	* src/gpgme.h.in (gpgme_data_rewind): Un-deprecate.
	* src/data-compat.c (gpgme_data_rewind): Move to ...
	* src/data.c (gpgme_data_rewind): here.

	core: Move all deprecated stuff to the end of gpgme.h.
	+ commit 9b7d81998b734fabeb4fbc697f08fc7795eaa90a


2017-02-01  Andre Heinecke  <aheinecke@intevation.de>

	core: Cleanup gpgme_key_unref frees.
	+ commit 8ede86795a1d419c01b4910ec2fd1fb18b629452
	* src/key.c (gpgme_key_unref): Nowadays we assume free(NULL) is ok.

	core: Fix leakage of address for mail only uids.
	+ commit b5075030bec9b21bf4e515bc1686df3fa43eced2
	* src/key.c (gpgme_key_unref): Always free address if set.
	(_gpgme_key_append_name): Remove memory optimization for address.

	core: Improve mailbox only uid handling.
	+ commit a28d31fdb623f2ee30e8094d09f1a0d1ae446a9b
	* src/key.c (_gpgme_key_append_name): Set email and remove name
	for uid only keys.

2017-01-31  Justus Winter  <justus@g10code.com>

	qt: Increase timeout when waiting for signals.
	+ commit ba594d85e35e63301755977234d3af88a167a215
	* lang/qt/tests/t-support.h (QSIGNALSPY_TIMEOUT): New macro.
	* lang/qt/tests/t-encrypt.cpp: Use the new macro as timeout when
	waiting for signals.
	* lang/qt/tests/t-keylist.cpp: Likewise.
	* lang/qt/tests/t-keylocate.cpp: Likewise.
	* lang/qt/tests/t-ownertrust.cpp: Likewise.
	* lang/qt/tests/t-wkspublish.cpp: Likewise.

2017-01-31  Werner Koch  <wk@gnupg.org>

	core: Add new context flag "redraw".
	+ commit 752d3597ef02a95efd693373132bf1e246f0edb0
	* src/context.h (struct gpgme_context): New field 'redraw_suggested'.
	* src/op-support.c (_gpgme_op_reset): Clear REDRAW_SUGGESTED.
	* src/progress.c (_gpgme_progress_status_handler): Set REDRAW_SUGGESTED.
	* src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Add "redraw".
	* tests/run-sign.c (main): Use it.

2017-01-30  Andre Heinecke  <aheinecke@intevation.de>

	tests: Reduce iterations / threads.
	+ commit 7bd6ab4a91d43d7cbf5d347c0c12e0e4f9f7e3bf
	* tests/gpg/t-gpgconf.c (main): Reduce iterations to 10.
	* tests/gpg/t-thread-keylist-verify.c,
	tests/gpg/t-thread-keylist.c (THREAD_COUNT): Reduce to 10.

2017-01-26  Andre Heinecke  <aheinecke@intevation.de>

	python: Ensure quick-random is used if gpg is gpg2.
	+ commit f3ca2c9ce9fd4a03e293065f10b92589a7e642d6
	* lang/python/tests/Makefile.am (gpg.conf): Configure
	agent-program accordingly.

2017-01-25  Tobias Mueller  <muelli@cryptobitch.de>

	python: default op_keylist_start parameters.
	+ commit 9291ebaa4151a1f6c8c0601095ec45809b963383
	* lang/python/gpgme.i: Added gpgme_op_keylist_start with defaults
	* lang/python/tests/t-keylist.py: Added tests for default parameters

2017-01-25  Andre Heinecke  <aheinecke@intevation.de>

	tests: Use --debug-quick-random for tests.
	+ commit a98951a30a6ae603ffac4ec8c5168aa6d1019933
	* tests/start-stop-agent: Don't autostart agent on --stop and
	running check. Use --debug-quick-random when starting.

2017-01-23  Justus Winter  <justus@g10code.com>

	w32: Fix closing file descriptors.
	+ commit 6f02133bb07726afa6950e5b4685e75621276e60
	* src/w32-io.c (writer): Only stop once the buffer is drained.
	(destroy_writer): Wait for the writers buffer to be drained.  This
	aligns '_gpgme_io_close's behavior with close(2) and fclose(3).

2017-01-17  Andre Heinecke  <aheinecke@intevation.de>

	tests: Add safeguards against nullptr deref.
	+ commit ca69df8c8d3f044340aee2a118cc20d33cd600a1
	* t-gpgconf.c (main): Test some values before dereferencing them.

2017-01-16  Andre Heinecke  <aheinecke@intevation.de>

	qt: Use QVERIFY instead of Q_ASSERT in conf test.
	+ commit abfd241d1a1ae8e30e18b7c5e0658b8c54d89544
	* lang/qt/tests/t-config.cpp: Use QVERIFY instead of Q_ASSERT.

	qt: Add test for CryptoConfig.
	+ commit 8aba08d1d0871f439fb7193adc4a2f43a81ee216
	* lang/qt/tests/t-config.cpp: New.
	* lang/qt/tests/Makefile.am: Update accordingly.

2017-01-16  Justus Winter  <justus@g10code.com>

	tests: Fix distcheck.
	+ commit 92543da94cbf8e807b1b33070d273f995cdd5c62
	* tests/gpg/Makefile.am (CLEANFILES): Remove gpgconf backups.

	Fix changing options with gpgconf.
	+ commit 0e242278dfaa64ce31a45b72f5fa0806a3dba898
	* src/engine-gpgconf.c (gpgconf_write): Connect a pipe to the child's
	stderr, and wait for it to be closed as an indication that gpgconf has
	exited.  Also improve error handling.

2017-01-12  Justus Winter  <justus@g10code.com>

	tests: Improve the gpgconf test.
	+ commit 186dcd3494eda7383de57a530fd15776410531a5
	* tests/gpg/t-gpgconf.c: Include support functions.
	(fail_if_err): Remove macro.
	(init_gpgme): Remove function.
	(lookup): New function.
	(main): Update some values and verify that the changes are applied.
	* tests/gpg/t-support.h (test): New assert-like macro.

2017-01-12  Andre Heinecke  <aheinecke@intevation.de>

	qt: Add support for stringValueList in CryptoConf.
	+ commit 9640dc58e498966b482dcded6990cf4b47c556ac
	* lang/qt/src/Makefile.am (qgpgme_sources): Add cryptoconfig.cpp
	* lang/qt/src/cryptoconfig.cpp: New.
	* lang/qt/src/cryptoconfig.h (CryptoConfigEntry::stringValueList):
	New.
	* lang/qt/src/qgpgmenewcryptoconfig.cpp
	(QGpgMENewCryptoConfigEntry::stringValueList): New.
	* lang/qt/src/qgpgmenewcryptoconfig.h: Update accordingly.

	qt: Don't use qstrdup in test passphrase cb.
	+ commit a09ed3f26a1fab54079c37c49df5c440cc792f78
	* lang/qt/tests/t-support.h (TestPassphraseProvider::getPassphrase):
	Use gpgrt_asprintf instead of strdup.

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

	qt: Clean up test dirs on failure.
	+ commit 56926c9b5012e8135541a933af1d69c5a81f02b3
	* t-encrypt.cpp,
	t-keylist.cpp,
	t-keylocate.cpp,
	t-ownertrust.cpp,
	t-tofuinfo.cpp,
	t-various.cpp,
	t-verify.cpp,
	t-wkspublish.cpp: Use QVERIFY instead of Q_ASSERT

	qt: Add test for uid functions.
	+ commit 9e643ab67168dfbd189ccc0bfed8fb59253ee79c
	* lang/qt/tests/t-various.cpp: New.
	* lang/qt/tests/Makefile.am: Update accordingly.

	cpp: Add revuid and adduid support.
	+ commit e416f9961837039f259558edf41fccbc181ad128
	* lang/cpp/src/context.cpp
	(Context::revUid, Context::startRevUid),
	(Context::addUid, Context::startAddUid): New.
	* lang/cpp/src/context.h: Declare new functions.
	* lang/cpp/src/key.cpp (Key::UserID::revoke)
	(Key::addUid): Idomatic helpers.
	lang/cpp/src/key.h: Declare new functions.
	* NEWS: Update accordingly.

	Fix Qgpgme build for macos.
	+ commit efe58fe011f195d98adb4f03b1e1068a26ba287b
	* lang/qt/src/dn.cpp: Include string.h
	(parse_dn_part): Use qstrdup.
	* lang/qt/tests/t-support.h (getPassphrase): Use qstrdup.

	Fix cmake configuration files for MacOS.
	+ commit 2e661b9e1a9b50656a5c9646d7444a98477010c1
	* configure.ac: Set HAVE_MACOS_SYSTEM conditional.
	* lang/qt/src/Makefile.am,
	lang/cpp/src/Makefile.am,
	lang/qt/src/QGpgmeConfig.cmake.in.in,
	lang/cpp/src/GpgmeConfig.cmake.in.in: Use libsuffix again to
	distinguish between macos .dylib

2017-01-03  Justus Winter  <justus@g10code.com>

	python: Improve compatibility with Scheme tests.
	+ commit b14419f68b3aaa90025e0e97151de7c3da7806fb
	* lang/python/tests/run-tests.py: Add stub --parallel option.

	python: Add a switch '--quiet' to the test runner.
	+ commit d0e91d28f63b74e53673902e675be8a54b6b90d3
	* lang/python/tests/run-tests.py: Add and honor a switch '--quiet'.
	This way we can use this script to run Python tests one by one without
	the noise, and the script will setup the necessary environment for us.

2017-01-02  Andre Heinecke  <aheinecke@intevation.de>

	qt: Update config sync doc / comment.
	+ commit ececfd5de81f1851943be7b284b672d5b02aceb4
	* lang/qt/src/cryptoconfig.h (CryptoConfig::sync): Document
	that runtime option is always set.
	* lang/qt/Src/qgpgmenewcryptoconfig.cpp
	(QGpgMENewCryptoConfigComponent::sync): Remove outdated comment
	and warn on error.

	core: Always use runtime for gpgconf changes.
	+ commit 7103315829847163f1c6f52cad25d1ddb33358f0
	* src/engine-gpgconf.c (gpgconf_write): Add --runtime.
	* src/gpgme.h.in (gpgme_conf_opt_change): Document this
	behavior.

2017-01-01  Ben Kibbey  <bjk@luxsci.net>

	Fix gpg_addkey() to work with GPGME_CREATE_NOPASSWD as well.
	+ commit a4b9f1a2b404fd8627d5ac567617510abd55d980
	* src/engine-gpg.c (gpg_addkey): Pass --batch to gpg when
	GPGME_CREATE_NOPASSWD is set to fix pinentry without loopback mode.

2016-12-27  Ben Kibbey  <bjk@luxsci.net>

	Fix GPGME_CREATE_NOPASSWD without pinentry loopback.
	+ commit d83b8f0dc84d6cf7fe2e091bd1b103ceedfa3d6c
	* src/engine-gpg.c(gpg_createkey): Pass --batch to gpg when
	GPGME_CREATE_NOPASSWD is set.

2016-12-19  Raphael Kubo da Costa  <rakuco@FreeBSD.org>

	Qt: Make sure extended grep is used with '|'.
	+ commit 211844f049d714cd4d5aab96347705cb0c209c5d
	* m4/qt.m4: Use grep -E when using the alternation character.

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

	cpp: Ensure that hasSecret is correct after update.
	+ commit da5343a9d2c8c0ca6431162aac4bd5c73b4ae6dd
	* lang/cpp/src/key.cpp (Key::update): Check for
	a secret key first before listing public keys.

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

	cpp: Fix addrSpec for keys without email.
	+ commit 85e05537e15346896a271d3f62bead9dd7e3f180
	* lang/cpp/src/key.cpp (UserID::addrSpec): Use uid->address instead
	of normalizing again.
	(&operator<<(std::ostream &, const UserID &): Print it.

	cpp: Fix update of partial key in verifyresult.
	+ commit 5673f3e54af535155893290a685b3afb44c7f58d
	* lang/cpp/src/verificationresult.cpp
	(Signature::key(bool,bool)): Don't update the returned copy
	but the actual key of the signature.

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

	Clarify what "checking on bit" means.
	+ commit 7880335273382f05cbbe38aa965a566c4127ba6a
	* doc/gpgme.texi (gpgme_sigsum_t summary): Clarify what "you
	can check one bit means"

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

	python: Try to be more helpful when given a string to encrypt().
	+ commit 05896c210f7fa9ce7b97784a75e49dc4489e9252
	* lang/python/helpers.c (_gpg_obj2gpgme_data_t): Extended error
	message.
	* lang/python/tests/t-encrypt.py: Test for "encode" in error message.

	python: Define a macro for wrapping fragile result objects.
	+ commit fb7f4cb973abc9f5eb05eb240607be35c1be986c
	* lang/python/gpgme.i (wrapresult): New Macro.

2016-12-01  Tobias Mueller  <muelli@cryptobitch.de>

	python: Check "buffer" when writing to sys.stdout for python2 compat.
	+ commit ae21d2705fc46725e1f9af1651b68d16155d1501
	* lang/python/tests/support.py (print_data): Add check for buffer.

	python: Make Context have a repr method.
	+ commit 154389f2a5e4c13081cf0624222aad29ee480b56
	* lang/python/gpg/core.py (Context.__repr__): New function.

	python: Make Results have a nicer __repr__.
	+ commit db2f6c1ca3d2ef228f4ca6653d594537622c8588
	* lang/python/gpg/results.py (Result.__str__): Renamed to '__repr__'
	...
	* lang/python/gpg/results.py (Result.__repr__): ... and added fields.

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

	python: Fix removing the TOFU database.
	+ commit fd4d476214ae06e33f4a6dac534d3deca5cc6cd3
	* lang/python/Makefile.am (CLEANFILES): Move 'tofu.db'...
	* lang/python/tests/Makefile.am (CLEANFILES): ... here.

	tests: Remove tofu.db.
	+ commit 9b22f82afc5518961e4bea1fc516b79800e379a2
	* lang/python/Makefile.am (CLEANFILES): Add 'tofu.db'.
	* tests/gpg/Makefile.am (CLEANFILES): Likewise.

2016-11-17  Heiko Becker  <heirecka@exherbo.org>

	Remove a forgotten instance of @libsuffix@
	+ commit 572c1aac107125ce62230251713349348373db5a
	* lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove a forgotten
	instance of @libsuffix@.

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

	Release 1.8.0.
	+ commit f06220b691e9711afdabaa19886244ae7724eed5
	* 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).
	+ commit 9fc92a15bd0a30437a39d0eb28b6f40edc22e6e8
	* 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.
	+ commit 573064742145aa5f9bf04baa88af918c0c4d5e12
	* 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.
	+ commit b2c07bd47bd608afa5cc819b60a7b5bb8c9dd96a
	* 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.
	+ commit 45abe6d142e314ba7099ad80b6365af171b06fec
	* 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".
	+ commit 7659d42468b604db2936b021425683f407eba4a7
