2025-06-03  Werner Koch  <wk@gnupg.org>

	Release 2.0.0.
	+ commit 301d39f8b97a79369292280e201e45f472d71e91


2025-06-03  Ingo Klöcker  <dev@ingo-kloecker.de>

	build: Fix logic for appending "-unknown" to version number.
	+ commit 1e948b3f3ee10806eaee282e489609fa370277d8
	* cmake/modules/G10GetFullVersion.cmake (G10_GET_FULL_VERSION): Use
	DEFINED to check if output variable is set.

2025-05-27  Ingo Klöcker  <dev@ingo-kloecker.de>

	On Windows, use gpgme_off_t and gpgme_ssize_t in the API.
	+ commit b75caf9ce2bcf3813a10bc889b4fa4e0a7d63a4e
	* src/callbacks.cpp (passphrase_callback): Use gpgme_ssize_t.
	(data_seek_callback): Don't cast offset to off_t.
	* src/data.cpp (Data::Data, Data::read, Data::write, Data::seek): Use
	gpgme_off_t and gpgme_ssize_t instead of off_t and ssize_t everywhere.
	* src/data.h (Data::Data, Data::read, Data::write, Data::seek): On
	Windows, use gpgme_off_t and gpgme_ssize_t in the API.
	* src/interfaces/dataprovider.h (DataProvider::read,
	DataProvider::write, DataProvider::seek): Ditto.

2025-05-26  Ingo Klöcker  <dev@ingo-kloecker.de>

	Fix wrong definition of operator<<(std::ostream &, const Error &)
	+ commit 67abbf811080645430e24eb532ff0d26ea83b0c2
	* src/error.cpp (operator<<): Put definition in namespace GpgME.

2025-05-19  Ingo Klöcker  <dev@ingo-kloecker.de>

	build: Don't compile with _FILE_OFFSET_BITS=64 on Windows (MinGW)
	+ commit a13ba8a8170e81733c89af794f13839891efd563
	* cmake/modules/G10CompilerSettings.cmake: Remove adding definition of
	-D_FILE_OFFSET_BITS=64 for MinGW.

2025-05-15  Ingo Klöcker  <dev@ingo-kloecker.de>

	Move definition of functions declared in error.h to error.cpp.
	+ commit 23c297d13e0437ae88e81230ba44d97b462dc93b
	* src/CMakeLists.txt (Gpgmepp_SOURCES): Add new file.
	* src/context.cpp (format_error, Error::source, Error::asString,
	Error::asStdString, Error::code, Error::sourceID, Error::isSuccess,
	Error::isCanceled, Error::isError, Error::toErrno,
	Error::hasSystemError, Error::setSystemError, Error::setErrno,
	Error::fromSystemError, Error::fromErrno, Error::fromCode,
	operator<<(std::ostream &, const Error &)): Move to...
	* src/error.cpp: ...this new file.

	Remove long obsolete feature checking API.
	+ commit ee85d38a2f9e62efa4973c46b91e9953d09d66f1
	* src/global.h (enum Feature, enum Feature2, hasFeature): Remove.
	* src/context.cpp (supported_features, supported_features2, hasFeature):
	Remove.

2025-05-14  Ingo Klöcker  <dev@ingo-kloecker.de>

	Remove deprecated functions and types.
	+ commit 9200517f23c5b1e2df4e1773d64b2d45a3cdb864
	src/decryptionresult.h (unsupportedAlgortihm, wrongKeyUsage): Remove.
	src/key.h (Key::canReallySign, Key::isSecret,
	UserID::Signature::Notation, non-const UserID::Signature::operator<
	overload): Remove.
	src/keygenerationresult.h (KeyGenerationResult::primaryKeyGenerated,
	KeyGenerationResult::subkeyGenerated): Remove.
	src/verificationresult.h (Signature::Notation,
	Signature::wrongKeyUsage): Remove.

	Add CreationFlags and simplify API of createKey and createSubkey.
	+ commit d3559c8abcfe8dd66e3a674d041459ab5341b956
	* src/context.h (enum Context::CreationFlags): New.
	(Context::createKey, Context::startCreateKey, Context::createSubkey,
	Context::startCreateSubkey): Add overload. Deprecate old overload.
	(Context::createKeyEx): Deprecate.
	(operator|, operator|=): New.
	* src/context.cpp ((Context::createKey, Context::startCreateKey,
	Context::createSubkey, Context::startCreateSubkey): Define new overload.

	* tests/CMakeLists.txt: Add new test program.
	* tests/run-createkey.cpp: New.

2025-05-13  Ingo Klöcker  <dev@ingo-kloecker.de>

	New decrypt flag DecryptListOnly.
	+ commit 8b853b09d54242dcf3978303f407a1106db747d1
	src/context.h (enum DecryptionFlags): Add value DecryptListOnly.

2025-05-12  Ingo Klöcker  <dev@ingo-kloecker.de>

	Make checking if Error represents success or error more easy.
	+ commit 836885ea9c68b57e27d463130cfeb73e5849bcd8
	* src/context.cpp, src/error.h (Error::isSuccess, Error::isError): New.
	* src/error.h (Error::operator bool): Use Error::isError.

	Replace usage of safe-bool idiom with explicit conversion operator.
	+ commit 4b9b73a8b2da170772e8900f7cb479c022b1ec05
	* src/global.h (GPGMEPP_MAKE_SAFE_BOOL_OPERATOR): Remove.
	* src/configuration.h (class Component, class Option, class Argument):
	Replace "safe bool operator" with explicit operator bool.
	* src/error.h (class Error): Ditto.

2025-05-06  Ingo Klöcker  <dev@ingo-kloecker.de>

	build: Append the linker search paths to the RPATH for installed targets
	+ commit 2b30653d48b52bab2c4a00eff288303279b491e0
	* cmake/modules/G10CMakeSettings.cmake: For Unix systems, enable
	CMAKE_INSTALL_RPATH_USE_LINK_PATH.

2025-05-05  Carl Schwan  <carl@carlschwan.eu>

	Add missing Context::EncryptionFlags.
	+ commit 7a82afe66309cb7aa9956586d11749be6c6dd6e5
	* src/context.cpp: Add AddRecipient and ChangeRecipient enum value

2025-04-11  Ingo Klöcker  <dev@ingo-kloecker.de>

	Add missing transition and remove two ignored (and wrong) transitions.
	+ commit 5b77f4072d03342b8719bbe93fc77641fffb476a
	* src/gpgsignkeyeditinteractor.cpp (makeTable): Remove two transitions.
	Add one transition.

2025-04-10  Ingo Klöcker  <dev@ingo-kloecker.de>

	Validate the transition map.
	+ commit 6f2e91d4d25afa6934ceaf1563a4d826a904d644
	* src/gpgsignkeyeditinteractor.cpp (makeTable): Assert that all
	transitions go from one state to a different state.

	Ensure that all transitions go from one state to a different state.
	+ commit aee2b30482406e677dbddf1a68b2a11a5dc70adf
	* src/gpgsignkeyeditinteractor.cpp (makeTable): Replace transitions from
	CONFIRM to CONFIRM with transitions from CONFIRM to CONFIRM2 and vice
	versa. Add transitions from CONFIRM2 to some other state for all
	transitions from CONFIRM to some other state.

2025-03-24  Ingo Klöcker  <dev@ingo-kloecker.de>

	Add API for generating random bytes and single random values.
	+ commit a68baf81e3dfdb51c961de3f2f4e4d670d899f63
	* src/randomresults.h: New.
	* src/CMakeLists.txt: Add new file.
	* src/context.h (class Context): Add enum RandomMode.
	* src/context.h, src/context.cpp (class Context): Add member
	functions generateRandomBytes and generateRandomValue.

	* tests/run-genrandom.cpp: New.
	* tests/CMakeLists.txt: Add new file.

2025-02-26  Ingo Klöcker  <dev@ingo-kloecker.de>

	Remove never working TrustItem listing functionality.
	+ commit 532bc8b248ccc8f5805ce47d42f1838a378a4260
	* src/CMakeLists.txt (Gpgmepp_SOURCES): Remove trustitem.cpp.
	(Gpgmepp_HEADERS): Remove trustitem.h.
	* src/context.cpp, src/context.h (class Context): Remove member
	functions startTrustItemListing, nextTrustItem, endTrustItemListing.
	* src/context_p.h (enum Context::Private::Operation): Remove value
	TrustList.
	* src/eventloopinteractor.cpp (EventLoopInteractor::Private::eventIOCb):
	Remove handling of event GPGME_EVENT_NEXT_TRUSTITEM.
	* src/eventloopinteractor.h (EventLoopInteractor): Remove pure virtual
	nextTrustItemEvent.
	* src/trustitem.cpp, src/trustitem.h: Remove files.

	build: Require same major/minor version of gpgme as version of gpgmepp.
	+ commit 6f94663cfc2c3d212be4bd9475ef95c94f5f9c08
	* CMakeLists.txt: Set GPGME_REQUIRED_VERSION to
	VERSION_MAJOR.VERSION_MINOR.0.

2025-01-29  Ingo Klöcker  <dev@ingo-kloecker.de>

	build: Run chmod instead of using cmake's file CHMOD command.
	+ commit 69dde050edd4ef9da8d5879bb2f4c9de07d86f5e
	* cmake/modules/G10AddDistTargets.cmake,
	cmake/modules/G10AddReleaseTargets.cmake,
	cmake/modules/G10GitHooks.cmake: Replace file(CHMOD ...) with
	execute_process(COMMAND chmod +x ...).

	doc: Update build instructions and some other documentation.
	+ commit 6df272737689e3221e7115a0e064ec9e912df9fe
	* INSTALL: Remove.
	* INSTALL.md: New.
	* README: Remove remark about missing key edit interface. Update
	reference to tests in QGpgME. Mention examples in tests folder. Update
	URL of KDE's coding style.
	* README.GIT: Remove.
	* doc/HACKING: Update URL of KDE's coding style. Add information about
	GPGMEPP_INTERACTOR_DEBUG variable.

2025-01-22  Ingo Klöcker  <dev@ingo-kloecker.de>

	build: Optionally, add host value to gpgmepp's pkgconfig file.
	+ commit 415ac3f1adfa466d2cfcf683fbd6b61443cec787
	* CMakeLists.txt: Add option PKGCONFIG_HOST (default "").
	* src/CMakeLists.txt: Set replacement for pkgconfig_host_line variable
	referenced in gpgmepp.pc.in if PKGCONFIG_HOST is set.
	* src/gpgmepp.pc.in: Add placeholder for pkgconfig_host_line.

	build: Allow building gpgmepp as static library.
	+ commit 8422057b85f8b5923166997e0ebf0d5b5646a833
	* CMakeLists.txt: Add options ENABLE_SHARED (default ON) and
	ENABLE_STATIC (default OFF). Build tests only with the shared library.
	* src/CMakeLists.txt: Add target Gpgmepp for the shared library if
	ENABLE_SHARED is true. Add target GpgmeppStatic for the static library
	if ENABLE_STATIC is true. Set sources, includes, properties, etc. only
	for enabled targets. If the shared library isn't built then generate the
	export header with a dummy shared library. Install the cmake config
	files only for the shared library.

	build: Always compile with _FILE_OFFSET_BITS=64 on Windows (MinGW)
	+ commit 629daa8492de4c0a42e4a3be31eafad072a4524b
	* cmake/modules/G10CompilerSettings.cmake: Add -D_FILE_OFFSET_BITS=64
	for MinGW.

2025-01-20  Ingo Klöcker  <dev@ingo-kloecker.de>

	build: Add the usual Git hooks.
	+ commit a06f8d41bbaeec10230d0e5067517cab79b6326e
	* CMakeLists.txt: Include G10GitHooks. Call g10_configure_git_hooks.
	* cmake/modules/G10GitHooks.cmake: New.

	build: Add custom targets only on Unix-like systems.
	+ commit ffa48fbaf787d25a1f632aaf8244e4ca479b8709
	* CMakeLists.txt: Call g10_add_gen_changelog_target,
	g10_add_dist_targets, and g10_add_release_targets only for UNIX.

	build: Add "gen-swdb", "release", and "sign-release" targets.
	+ commit 8747ce7ff4cca73052ae48884f2edfe4ad31e110
	* CMakeLists.txt: Include G10AddReleaseTargets. Add the release targets.
	* cmake/modules/G10AddReleaseTargets.cmake,
	cmake/modules/g10_generate_swdb.sh.in,  cmake/modules/g10_release.sh.in,
	cmake/modules/g10_sign-release.sh.in: New.

	build: Generate ChangeLog and add it to the tarball.
	+ commit f1698cb2a6f009990dcfa7709ead2b7974012e36
	* .gitattributes: New.
	* CMakeLists.txt: Include G10AddGenChangeLogTarget. Add "gen-ChangeLog"
	target. Make "dist" target depend on "gen-ChangeLog" target.
	* cmake/modules/G10AddGenChangeLogTarget.cmake,
	cmake/modules/g10_generate_ChangeLog.cmake.in: New.

	build: Add "dist" and "distcheck" targets.
	+ commit 585c31afca6e94cf71a0b890a4474e051bf322cc
	* CMakeLists.txt: Include G10AddDistTargets. Set EXTRA_DIST. Add "dist"
	and "distcheck" target.
	* cmake/modules/G10AddDistTarget.cmake, cmake/modules/g10_dist.sh.in,
	cmake/modules/g10_distcheck.sh.in: New.

	build: Add "uninstall" target.
	+ commit d7890971eb2e1ac1533b55ae55d1200e9a635e0f
	* CMakeLists.txt: Include ECMUninstallTarget.
	* cmake/modules/ECMUninstallTarget.cmake,
	cmake/modules/ecm_uninstall.cmake.in: New.

	build: Add cmake files for building the tests.
	+ commit dacfe7f9cad56e368afaec9368ac49504b5ee2bc
	* CMakeLists.txt: Add subdirectory tests to the build.
	* cmake/modules/G10CMakeSettings.cmake: Add option BUILD_TESTING.
	* tests/CMakeLists.txt: New.
	* tests/Makefile.am: Remove.
	* tests/README: Update.

	build: Generate and install pkg-config file with cmake.
	+ commit ffcd1ca3b7aba8ffbec05fedc9ebb88b8eeea402
	* src/CMakeLists.txt: Generate and install gpgmepp.pc.
	* src/gpgmepp.pc.in: Use cmake variables. Use ${prefix}/${exec_prefix}
	for exec_prefix, includedir, libdir. Remove host. Use fixed values for
	Cflags and Libs.

	build: Create VERSION file with full version and commit ID.
	+ commit 192f4e71a52020ea7ebd230e2d13be86f2ef3f63
	* CMakeLists.txt: Include G10GetFullVersion. Get full version and
	commit ID. Write VERSION file.
	* cmake/modules/G10GetFullVersion.cmake: New.

	build: Generate version file and cmake config files with cmake modules.
	+ commit 6148e7e68bea3ce1d1c30df999d4dbd447fa06e0
	* cmake/modules/ECMSetupVersion.cmake,
	cmake/modules/ECMVersionHeader.h.in: New.
	* cmake/modules/G10CMakeSettings.cmake: Enable versioned DLLs for MinGW
	builds.
	* src/CMakeLists.txt: Remove unused variables. Use ecm_setup_version
	instead of configure_file to generate gpgmepp_version.h and
	GpgmeppConfigVersion.cmake. Use configure_package_config_file instead
	of configure_file to generate the GpgmeppConfig.cmake files. Generate
	the exported GpgmeppTargets*.cmake files and install them. Install the
	Find modules.
	* src/GpgmeppConfig.cmake.in: New.
	* src/GpgmeppConfig-msvc.cmake.in.in, src/GpgmeppConfig-w32.cmake.in.in,
	src/GpgmeppConfig.cmake.in.in, src/GpgmeppConfigVersion.cmake.in,
	src/gpgmepp_version.h.in: Remove.

	build: Generate the export header.
	+ commit 08760bd6352828a599fb0f0f7be5374e0bc96167
	* src/CMakeLists.txt: Remove compile definition BUILDING_GPGMEPP. Remove
	gpgmepp_export.h from gpgmepp_HEADERS. Use generate_export_header
	to generate gpgmepp_export.h. Create a copy of the export header in a
	gpgme++/ folder in the build folder. Install the generated header.
	* src/gpgmepp_export.h: Remove.
	* src/interfaces/{assuantransaction.h,dataprovider.h,statusconsumer.h}:
	Include export header with gpgme++/gpgmepp_export.h.

	build: Move common cmake and compiler settings to cmake modules.
	+ commit 94bc585c92d2d693da9f9040b18defbed2b7c0e4
	* CMakeLists.txt: Don't set a few variables. Include G10CMakeSettings
	and G10CompilerSettings.
	* cmake/modules/G10CMakeSettings.cmake,
	cmake/modules/G10CompilerSettings.cmake: New.
	* src/CMakeLists.txt: Don't set include directories for PRIVATE and
	PUBLIC scope. Set include directory for INTERFACE scope.

	build: Add support for cmake and remove support for autotools.
	+ commit 106eb525bafa6df94229625ef92ead5e0c0ab156
	* CMakeLists.txt, cmake/modules/FindGpgme.cmake,
	cmake/modules/FindLibGpgError.cmake, src/CMakeLists.txt,
	src/GpgmeppConfig-msvc.cmake.in.in: New.
	* Makefile.am, autogen.rc, autogen.sh, build-aux/compile,
	build-aux/config.guess, build-aux/config.sub, build-aux/depcomp,
	build-aux/install-sh, build-aux/libtool-patch.sed, build-aux/ltmain.sh,
	build-aux/missing, build-aux/mkinstalldirs, configure.ac,
	m4/ax_cxx_compile_stdcxx.m4, m4/ax_gcc_func_attribute.m4,
	m4/gpg-error.m4, m4/gpgme.m4, m4/libtool.m4, m4/ltoptions.m4,
	m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4, src/Makefile.am:
	Remove.

2024-12-10  Ingo Klöcker  <dev@ingo-kloecker.de>

	doc: Fix a few license headers.
	+ commit 07060c4719552a662c09accd335e86b4bc237e1d
	* src/GpgmeppConfig-w32.cmake.in.in, src/GpgmeppConfig.cmake.in.in,
	src/GpgmeppConfigVersion.cmake.in: Fix license headers.
	* src/trustitem.cpp, src/trustitem.h: Fix project name.
	* tests/run-getkey.cpp, tests/run-keylist.cpp, tests/run-verify.cpp:
	Fix license headers.

	Avoid clashes of gpgme++ headers with other headers.
	+ commit ca6c423b477d932ab2027a34379bacaa0ea410cd
	* src/GpgmeppConfig-w32.cmake.in.in, src/GpgmeppConfig.cmake.in.in:
	Don't put gpgme++ subfolder in interface include paths.

2024-12-05  Ingo Klöcker  <dev@ingo-kloecker.de>

	Add files for building the project with autotools.
	+ commit 31819fdb8b5f39720ebe50f613bcd4c867f2c166
	* COPYING, COPYING.LESSER, INSTALL, README.GIT, autogen.sh,
	build-aux/compile, build-aux/config.guess, build-aux/config.sub,
	build-aux/depcomp, build-aux/install-sh, build-aux/libtool-patch.sed,
	build-aux/ltmain.sh, build-aux/missing, build-aux/mkinstalldirs,
	m4/ax_cxx_compile_stdcxx.m4, m4/ax_gcc_func_attribute.m4,
	m4/gpg-error.m4, m4/libtool.m4, m4/ltoptions.m4, m4/ltsugar.m4,
	m4/ltversion.m4, m4/lt~obsolete.m4: New.
	* .gitignore, AUTHORS, COPYING.LIB, ChangeLog, NEWS, autogen.rc,
	configure.ac: New.
	* Makefile.am (EXTRA_DIST): Add autogen.sh, autogen.rc,
	build-aux/libtool-patch.sed, doc/DCO, doc/HACKING, VERSION.
	(RELEASE_ARCHIVE_SUFFIX, ACLOCAL_AMFLAGS, dist-hook, distcheck-hook,
	.PHONY, gen_start_date, gen-ChangeLog, RELEASE_NAME, release,
	sign-release): New (copied with minor adjustments from gpgme's top-level
	Makefile.am).
	* build-aux/git-hooks/commit-msg: New.
	* build-aux/git-log-footer: New (copied with some adjustments from
	gpgme).
	* doc/DCO, doc/HACKING: New (copied with some adjustments from gpgme).
	* m4/gpgme.m4: New (copied from gpgme/src/gpgme.m4).
	* src/GpgmeppConfig-w32.cmake.in.in, src/GpgmeppConfig.cmake.in.in:
	Remove @LIBASSUAN_LIBS@ from the INTERFACE_LINK_LIBRARIES property of
	gpgmepp.
	* src/Makefile.am (AM_CPPFLAGS): Replace include path of gpgme relative
	to top_builddir with @GPGME_CFLAGS@. Replace @GPGME_CPP_CFLAGS@ with
	@GPGMEPP_CFLAGS@. Remove unneeded @LIBASSUAN_CFLAGS@.
	(libgpgmepp_la_LIBADD): Replace relative paths of libgpgme.la with
	@GPGME_LIBS@. Remove unneeded @LIBASSUAN_LIBS@.

	* tests/Makefile.am (LDADD): Adjust paths of libgpgmepp.la. Replace
	relative paths of libgpgme.la with @GPGME_LIBS@.
	(AM_CPPFLAGS): Adjust include paths of source files. Replace relative
	include paths of gpgme with @GPGME_CFLAGS@. Remove unneeded
	@LIBASSUAN_CFLAGS@. Remove unneeded define of TOP_SRCDIR.

2024-11-14  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add Kyber algorithm.
	+ commit 23c5fccec2d89715db9c1d2a4031471572c7ccbe
	* lang/cpp/src/key.h (enum Subkey::PubkeyAlgo): Add AlgoKyber with
	same value as GPGME_PK_KYBER.

2024-10-23  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Put attributes before declarations.
	+ commit 32f67e8a2eb8c06156d2cda02f7820e08ea7f1fb
	* lang/cpp/src/key.h (UserID::Signature::Notation): Move
	GPGMEPP_DEPRECATED before the whole typedef declaration.
	* lang/cpp/src/verificationresult.h (Signature::Notation): Ditto.

	cpp: Add/change some includes.
	+ commit c05e55bc2f320e662ca3c97ec76c7fd6fc4b0e3e
	* lang/cpp/src/gpgaddexistingsubkeyeditinteractor.h,
	lang/cpp/src/gpgrevokekeyeditinteractor.h: Include <string>.
	* lang/cpp/src/key.h: Include <ctime> instead of <sys/time.h>.

2024-10-21  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add support for new flag fields beta_compliance.
	+ commit 92227ece77d88913aedcfc9935811ba690fd530d
	* lang/cpp/src/decryptionresult.cpp, lang/cpp/src/decryptionresult.h
	(class DecryptionResult): Add method isBetaCompliance.
	* lang/cpp/src/decryptionresult.cpp (operator<<): Add new flag.
	* lang/cpp/src/key.cpp, lang/cpp/src/key.h (class Key): Add method
	isBetaCompliance.
	(class Subkey): Add method isBetaCompliance.
	* lang/cpp/src/key.cpp:
	(Key::isDeVs): Remove duplicate check of is_de_vs of first subkey.
	(operator<<): Add new flag.
	* lang/cpp/src/verificationresult.cpp, lang/cpp/src/verificationresult.h
	(class Signature): Add method isBetaCompliance.
	* lang/cpp/src/verificationresult.cpp (operator<<): Add new flag.

2024-08-29  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add pkgconfig file for gpgmepp.
	+ commit d2d410081da79a99c4d05e17232a8eb939fda9f6
	* configure.ac: Add substitutions GPGMEPP_PKGCONFIG_LIBS,
	GPGMEPP_PKGCONFIG_CFLAGS, GPGMEPP_PKGCONFIG_HOST. Apply them. Configure
	gpgmepp.pc file.
	* lang/cpp/src/Makefile.am (pkgconfigdir, pkgconfig_DATA): New.
	(EXTRA_DIST): Add gpgmepp.pc.in.
	* lang/cpp/src/gpgmepp.pc.in: New.

2024-08-28  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Go with default answer on unknown question by key edit interface.
	+ commit 1f95cc1fa69d2c2e58f7518460b7130216d81331
	* lang/cpp/src/editinteractor.cpp (edit_interactor_callback_impl):
	Send empty string to edit interface if General Error occurred.

2024-08-06  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add support for setting owner trust and for disabling keys.
	+ commit 626d2c2ee9dbad940aa57be30acd9c7bde3e9229
	* lang/cpp/src/context.cpp, lang/cpp/src/context.h (class Context): Add
	member functions setOwnerTrust, startSetOwnerTrust, setKeyEnabled,
	startSetKeyEnabled.
	* lang/cpp/src/context.cpp (owner_trust_to_string): New.

2024-07-10  Ingo Klöcker  <dev@ingo-kloecker.de>

	build,cpp: Fix include paths in forwarding headers in gpgme++ folder.
	+ commit 00433ef231e405fd6c7416aa5b087f8adfa776d8
	* lang/cpp/src/Makefile.am (build rule for copied headers): Write
	abs_srcdir instead of srcdir in the generated headers.

2024-07-05  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Deprecate Error::asString and update users.
	+ commit c5d0e390133f6efb011a6cd7b0ed3c0c63e01e7b
	* lang/cpp/src/error.h (Error::asString): Mark as deprecated.
	* lang/cpp/src/context.cpp (operator<<),
	lang/cpp/src/editinteractor.cpp (edit_interactor_callback_impl),
	lang/cpp/tests/run-getkey.cpp (main),
	lang/cpp/tests/run-keylist.cpp (main),
	lang/cpp/tests/run-wkdlookup.cpp (main): Use Error::asStdString instead
	of Error::asString.

	cpp: Add safer member function returning text describing an error.
	+ commit 21ff2e210c34959ba410e66e8874d43150494d45
	* lang/cpp/src/error.h, lang/cpp/src/context.cpp (class Error): New
	member function asStdString.

	build,cpp: Create forwarding headers in a gpgme++ folder.
	+ commit 2d3499295edf1f6ef9aa2c1330735ee022ad9bea
	* lang/cpp/src/Makefile.am (copied_headers): New.
	(build rule for all copied headers): New.
	(BUILT_SOURCES): New.
	(CLEANFILES): Add copied_headers.

2024-06-28  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Remove obsolete files.
	+ commit bc0693c200cbb56997e5f864b9fbb678dffab88b
	* lang/cpp/src/context_glib.cpp, lang/cpp/src/context_qt.cpp: Remove.

2024-06-10  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Remove commented out and disabled code.
	+ commit e7b9c5f5b5caefcade1574f9413f6fd7f73e6417
	* lang/cpp/src/configuration.cpp: Remove disabled, abandoned code.
	* lang/cpp/src/context.cpp: Remove commented out, obsolete code.

2024-05-24  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Fix includes in public headers.
	+ commit 0b867d8336a1c9199af8e2935c0fc57f6df4c04f
	* lang/cpp/src/defaultassuantransaction.h,
	lang/cpp/src/gpgadduserideditinteractor.h,
	lang/cpp/src/gpgagentgetinfoassuantransaction.h,
	lang/cpp/src/gpggencardkeyinteractor.h,
	lang/cpp/src/gpgsetexpirytimeeditinteractor.h,
	lang/cpp/src/gpgsetownertrusteditinteractor.h,
	lang/cpp/src/gpgsignkeyeditinteractor.h,
	lang/cpp/src/interfaces/assuantransaction.h,
	lang/cpp/src/interfaces/dataprovider.h,
	lang/cpp/src/interfaces/statusconsumer.h,
	lang/cpp/src/scdgetinfoassuantransaction.h,
	lang/cpp/src/statusconsumerassuantransaction.h,
	lang/cpp/src/trustitem.h: Use #include "foo.h" instead of
	#include <foo.h> for own headers.

2024-05-22  Tobias Fella  <tobias.fella@gnupg.com>

	qt,cpp: Implement adding ADSKs to existing keys.
	+ commit c906985ff29d9311676a24eb1a2887e8f725c409
	* lang/cpp/src/context.cpp: Add functions for adding ADSKs.
	* lang/cpp/src/context.h: Ditto.
	* lang/qt/src/qgpgmequickjob.cpp: Add implementation of ADSK job.
	* lang/qt/src/qgpgmequickjob.h: Ditto.
	* lang/qt/src/quickjob.h: Add job for adding ADSKs.

2024-05-21  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add information about revocation keys to Key.
	+ commit 25663892aa418ecca2262b253dfc313dab79b20c
	* lang/cpp/src/gpgmefw.h (gpgme_revocation_key_t): New forward
	declaration.
	* lang/cpp/src/key.cpp, lang/cpp/src/key.h (class Key): New methods
	revocationKey, numRevocationKeys, revocationKeys.
	(class RevocationKey): New.
	(swap): New overload for RevocationKey.
	(operator<<): New overload for RevocationKey.
	* lang/cpp/src/key.cpp (operator<<): Add information about revocation
	keys to the output stream for Key.

	* lang/cpp/tests/run-keylist.cpp (main): Don't output Key if nextKey
	failed, e.g. at the end of the key listing.

2024-04-05  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Handle smart card op failure status messages.
	+ commit 7aea45397eabc2059349928eacf806a0866b3e45
	* lang/cpp/src/editinteractor.cpp (parse_sc_op_failure): New.
	(CallbackHelper::edit_interactor_callback_impl): Parse failure code on
	GPGME_STATUS_SC_OP_FAILURE status.
	(sc_op_failure_to_error): New.

2024-01-09  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp,tests: Launch dirmngr with gpg-conf.
	+ commit 56cba989a9db929d86520e431089d3327aa97a3d
	* lang/cpp/tests/run-wkdlookup.cpp (main): Replace backslashes with
	forward slashes in homedir returned by GpgME::dirInfo. Use "gpgconf
	--launch dirmngr" to start dirmngr.

2023-12-19  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Support new flags for direct signing/encryption of files.
	+ commit c5177d3bcb4a53807c2c6a91267f45ddf50dbe98
	* lang/cpp/src/context.h (enum EncryptionFlags): Add constant
	EncryptFile.
	* lang/cpp/src/global.h (enum SignatureMode): Add constant SignFile.
	* lang/cpp/src/context.cpp (sigflags2sigflags): Handle new flag
	SignFile.
	(encryptflags2encryptflags): Handle new flag EncryptFile.
	(operator<<): Add new flags to the corresponding debug streams.
	* lang/cpp/src/signingresult.cpp (CreatedSignature::mode): Handle
	new flag SignFile (even if it cannot occur).

2023-10-05  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Support new key capability flags.
	+ commit 5700f00f642b7b3fa3e5cc5a2948a8c474f1ad34
	* lang/cpp/src/key.cpp, lang/cpp/src/key.h (class Key): New methods
	hasCertify, hasSign, hasEncrypt, hasAuthenticate.

2023-08-04  Carl Schwan  <carl.schwan@gnupg.com>

	cpp: Expose gpgme_decrypt_result_t.is_mime through cpp API.
	+ commit 1cfad17ddafb6742ea85b092d6b59cf823c3caaf
	* lang/cpp/src/descriptionresult.cpp (DescriptionResult::isMime): New.
	* lang/cpp/src/descriptionresult.h: Update accordingly.

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

	qt, cpp: Support larger size-hint on 32 bit builds.
	+ commit e3eb5afe13a920b6aeb0a28d0d3e7b9ad2dc4e28
	* NEWS: Mention this.
	* lang/cpp/src/data.h, lang/cpp/src/data.cpp (Data::setSizeHint): New.
	* lang/qt/src/qgpgmedecryptjob.cpp,
	 lang/qt/src/qgpgmedecryptverifyarchivejob.cpp,
	 lang/qt/src/qgpgmedecryptverifyjob.cpp,
	 lang/qt/src/qgpgmeencryptjob.cpp,
	 lang/qt/src/qgpgmesignencryptjob.cpp,
	 lang/qt/src/qgpgmesignjob.cpp,
	 lang/qt/src/qgpgmeverifydetachedjob.cpp,
	 lang/qt/src/qgpgmeverifyopaquejob.cpp: Set size for input IODevice.

	cpp: Expose gpgme_data_set_flag through cpp API.
	+ commit 5fee1b6846d83fbaaad60ff57ead617ab7a4e45c
	* lang/cpp/src/data.cpp (Data::setFlag): New.
	* lang/cpp/src/data.h: Update accordingly.
	* NEWS: Mention this.

2023-06-01  Ingo Klöcker  <dev@ingo-kloecker.de>

	doc,cpp: Treat GPG_ERR_FULLY_CANCELED as canceled.
	+ commit b729775584ffd77ef6293c29d04af7859d62e8d5
	* doc/gpgme.texi (GPG_ERR_FULLY_CANCELED): New.
	* lang/cpp/src/context.cpp (Error::isCanceled): Also return true for
	GPG_ERR_FULLY_CANCELED.

2023-05-30  Biswapriyo Nath  <nathbappai@gmail.com>

	cpp,python: Respect --disable-gpg-test for tests.
	+ commit 9d39389ac9230f0e73eb88d4604b8d4fca294b9b
	lang/cpp/Makefile.am (SUBDIRS): Depend tests in RUN_GPG_TESTS.
	lang/python/Makefile.am (SUBDIRS): Ditto.

2023-04-18  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Fix Key::canSign()
	+ commit eb7817ab7617e1f3615e47b03d2a9526a4767839
	* lang/cpp/src/key.h (canReallySign): Deprecate.
	* lang/cpp/src/key.cpp (canSign): Remove workaround. Use implementation
	of canReallySign.
	(canReallySign): Use canSign().
	(operator<<): Use canSign().

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

	core,cpp: Add new key flags to gpgme_subkey_t.
	+ commit bd97412bd89ad3443881be6b0f1a0198973947c2
	* src/gpgme.h.in (struct _gpgme_subkey): Add bit flags can_renc,
	can_timestamp, adn is_group_owned. Reduce size of _unused.
	* src/keylist.c (set_subkey_capability): Set them.
	* tests/run-keylist.c (main): Print them.

	* lang/cpp/src/key.h (Subkey::canRenc): New.
	(Subkey::canTimestamp): New.
	(Subkey::isGroupOwned): New.
	* lang/cpp/src/key.cpp: Implement new methods.
	(Subkey::isQualified): Print them.
	(std::ostream &operator<<): Print them.

2023-02-09  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Improve debug output of some enums.
	+ commit 1031bf62065181d7df5c2093f1ef44d27b5d33bb
	* lang/cpp/src/verificationresult.cpp (operator<<): Fix output of
	Signature::PKAStatus which doesn't represent flags. Print corresponding
	name of enum value if Signature::Summary or Notation::Flags are 0.

2023-02-02  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Return successful verification for signed but not encrypted data.
	+ commit 3ce1385f5207ec2f424264f30c7c98f6d69cc768
	* lang/cpp/src/context.cpp (Context::decrypt): Use decryptionResult().
	(Context::verifyDetachedSignature, Context::verifyOpaqueSignature):
	Use verificationResult().
	(Context::verificationResult): Ignore "no data" error for signed but
	not encrypted data.
	(Context::decryptAndVerify): Use decryptionResult() and
	verificationResult().

	cpp: Update decryption flags.
	+ commit 6a4f6aaea825058845886bdcbb94777be07840f0
	* lang/cpp/src/context.h (DecryptArchive): New flag.

	cpp: Add const-overloads of version comparison operators.
	+ commit ad0ee84dc5734dcabf90570c3d0dc695cbb81ab6
	* lang/cpp/src/engineinfo.h (EngineInfo::Version): Add const-overloads
	of all comparison operators.

2023-01-31  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Fix debug output of SignatureMode.
	+ commit d60de32aae71573767fdec850cfb7be923d7890c
	* lang/cpp/src/context.cpp (operator<<): Treat signature mode as
	combination of a 2-bit flag and a 1-bit flag.

2023-01-30  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Support new archive signing flag.
	+ commit 4d72304dbe4137b7e80fac7a76d98e64bbd3d476
	* lang/cpp/src/global.h (enum SignatureMode): Add constant SignArchive.
	* lang/cpp/src/context.cpp (sigmode2sigmode): Rename to
	sigflags2sigflags
	(sigflags2sigflags): ... and rename argument mode to flags and treat
	it as flags. Adjust the callers.
	(operator<<): Change local CHECK macro to handle flags. Add new flag
	to debug stream.
	* lang/cpp/src/signingresult.cpp (CreatedSignature::mode): Handle
	new flags (even if it cannot occur currently).

2023-01-27  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Support new archive encryption flag.
	+ commit c8c443a440c4bc6ce7c9325ee0b4dae28276e918
	* lang/cpp/src/context.h (EncryptArchive): New flag.
	* lang/cpp/src/context.cpp (encryptflags2encryptflags): Convert
	EncryptArchive to corresponding gpgme encrypt flags.
	(operator<<): Add new flag to debug stream.

	cpp: Add convenience overload to set file name.
	+ commit c449cd2b084b9db110c81bf2fbc9e36bb632a427
	* lang/cpp/src/data.h, lang/cpp/src/data.cpp (setFileName): Add
	overload.

2023-01-26  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Support all encryption flags.
	+ commit 631a7b96aae3155696a0f846f7b19cab3cb3d8d0
	* lang/cpp/src/context.h (WantAddress): New flag.
	* lang/cpp/src/context.cpp (encryptflags2encryptflags): Convert
	WantAddress to corresponding gpgme encrypt flags.
	(operator<<): Add new flag to debug stream.

	cpp: Pass ThrowKeyIds and EncryptWrap flags to GpgME.
	+ commit bde2597f2117e7953731d0afd0796e49b3fecc1e
	* lang/cpp/src/context.cpp (encryptflags2encryptflags): Convert
	ThrowKeyIds and EncryptWrap to corresponding gpgme encrypt flags.
	(operator<<): Add flags to debug stream.

2023-01-05  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Fix comparisons of integer expressions of different signedness.
	+ commit 73686de886886928f35efb270999a1e9228facb4
	* lang/cpp/src/gpgrevokekeyeditinteractor.cpp
	(GpgRevokeKeyEditInteractor::Private::nextState): Cast signed nextLine
	value to std::size_t.

	cpp: Expliticly declare compiler generated copy constructors.
	+ commit 85fd6b872a3a8cce18d3b2edae3155b8e86f81a6
	* lang/cpp/src/configuration.h (Component, Option),
	lang/cpp/src/data.h (Data),
	lang/cpp/src/decryptionresult.h (DecryptionResult,
	DecryptionResult::Recipient),
	lang/cpp/src/encryptionresult.h (EncryptionResult, InvalidRecipient),
	lang/cpp/src/engineinfo.h (EngineInfo),
	lang/cpp/src/importresult.h (ImportResult, Import),
	lang/cpp/src/key.h (Key, Subkey, UserID, UserID::Signature),
	lang/cpp/src/keygenerationresult.h (KeyGenerationResult),
	lang/cpp/src/keylistresult.h (KeyListResult),
	lang/cpp/src/notation.h (Notation),
	lang/cpp/src/signingresult.h (SigningResult, InvalidSigningKey,
	CreatedSignature),
	lang/cpp/src/swdbresult.h (SwdbResult),
	lang/cpp/src/tofuinfo.h (TofuInfo),
	lang/cpp/src/verificationresult.h (VerificationResult, Signature),
	lang/cpp/src/vfsmountresult.h (VfsMountResult): Explitily declare
	compiler generated copy constructor.

2022-12-08  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Handle status errors in the base edit interactor.
	+ commit baab2bf0ea010bf329d59f453701abc573b78c24
	* lang/cpp/src/editinteractor.cpp (edit_interactor_callback_impl):
	Handle status errors.
	* lang/cpp/src/gpgrevokekeyeditinteractor.cpp
	(GpgRevokeKeyEditInteractor::Private::nextState): Remove handling of
	status errors.

	cpp: Handle statuses that need no response in the base edit interactor.
	+ commit d48d7665bfe1b8be12ecd6d5265b8181512cea37
	* lang/cpp/src/editinteractor.cpp (edit_interactor_callback_impl): Do
	not call nextState() if status needs no response.
	* lang/cpp/src/gpgaddexistingsubkeyeditinteractor.cpp
	(GpgAddExistingSubkeyEditInteractor::Private::nextState),
	lang/cpp/src/gpgadduserideditinteractor.cpp
	(GpgAddUserIDEditInteractor::nextState),
	lang/cpp/src/gpggencardkeyinteractor.cpp
	(GpgGenCardKeyInteractor::nextState),
	lang/cpp/src/gpgrevokekeyeditinteractor.cpp
	(GpgRevokeKeyEditInteractor::Private::nextState),
	lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp
	(GpgSetExpiryTimeEditInteractor::nextState),
	lang/cpp/src/gpgsetownertrusteditinteractor.cpp
	(GpgSetOwnerTrustEditInteractor::nextState),
	lang/cpp/src/gpgsignkeyeditinteractor.cpp
	(GpgSignKeyEditInteractor::nextState): Remove handling of statuses that
	need no response.

2022-10-24  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Allow setting the curve to use when generating ECC keys.
	+ commit 7440649171ef35d9035b8cd64a0f8681215ad174
	lang/cpp/src/gpggencardkeyinteractor.h (class GpgGenCardKeyInteractor):
	Add enum Curve. Add member function setCurve.
	lang/cpp/src/gpggencardkeyinteractor.cpp
	(class GpgGenCardKeyInteractor::Private): Initialize simple members
	in-class. Add member curve.
	(GpgGenCardKeyInteractor::~GpgGenCardKeyInteractor): Use default d'tor.
	(GpgGenCardKeyInteractor::setCurve): New.
	(GpgGenCardKeyInteractor::action): Return curve defaulting to
	Curve25519.

2022-09-14  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Reject signing expired keys.
	+ commit 018a9c41f68cfa20e40e78d31d59834212ce2cd7
	* lang/cpp/src/gpgsignkeyeditinteractor.cpp (enum SignKeyState): Add
	new state REJECT_SIGN_EXPIRED.
	(makeTable): Add entries for new state to transition map.
	(GpgSignKeyEditInteractor::action): Handle new state.

2022-08-19  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Fix building with C++11.
	+ commit eaf5b2be86191d932c747b7ad95f7c870ac2d1a6
	* lang/cpp/src/importresult.cpp (ImportResult::mergeWith): Replace
	'auto' in lambdas with the actual type.

2022-08-18  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Fix handling of "no key" or "invalid time" situations.
	+ commit 6a6ad6cacd6ab96ae60233c4f7cc849adabf60ac
	* lang/cpp/src/gpgaddexistingsubkeyeditinteractor.cpp
	(GpgAddExistingSubkeyEditInteractor::Private::nextState): Fix inverted
	logic of string comparisons.

2022-08-09  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add support for gpgme_op_set_uid_flag.
	+ commit 0e90d1e85630f604d8b379edf5f53c32cf6590db
	* lang/cpp/src/context.cpp, lang/cpp/src/context.h
	(Context::setPrimaryUid, Context::startSetPrimaryUid): New.

2022-06-30  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Remove obsolete compatibility with KF5 variants.
	+ commit e72739389acfc897e2cd4ff8bff545dcfeb08b1f
	* lang/cpp/src/GpgmeppConfig-w32.cmake.in.in,
	lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove find_package() call.

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

	cpp: Export KeyListModeSaver.
	+ commit 897f4832d5e753c22c5d46f73963f8b9227ca5ca
	* lang/cpp/src/context.h (Context::KeyListModeSaver): Add Export.

2022-05-05  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Output more properties of a subkey.
	+ commit 1b9234393e2d39fa5dd1cbd531554d7acc552e2d
	* lang/cpp/src/key.cpp (ostream operator<< for Subkey): Fix wrong output
	of isInvalid and isDisabled flags. Add output of key grip, card serial
	number and the flags isSecret, isQualified, isDeVs, and isCardKey.

	cpp,tests: Actually parse the --with-secret option.
	+ commit df6b0682f53818b07ec5bad62114346f50c8026a
	* lang/cpp/tests/run-keylist.cpp (main): Handle --with-secret option.
	Print error for unknown option.

2022-05-04  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Allow retrieving import result of key listing with locate mode.
	+ commit ddf660eb5e15e7defe4fd0b60a770deb087b3e83
	* lang/cpp/src/context_p.h (enum Context::Private::Operation): Add
	value KeyListWithImport.
	* lang/cpp/src/context.cpp (Context::startKeyListing, Context::nextKey):
	Set lastop to KeyListWithImport if keylist mode includes Locate.

	cpp: Allow merging the results of two imports.
	+ commit 036686b8a7706335b58df50409b95acb383bdec1
	* lang/cpp/src/importresult.h, lang/cpp/src/importresult.cpp (class
	ImportResult): Add member function mergeWith.

2022-05-02  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add RAII class for saving/restoring the key list mode.
	+ commit 3c03beb2f86d5b39b260b8a25b5bfea1c291843d
	* lang/cpp/src/context.h, lang/cpp/src/context.cpp (class Context):
	Add nested class KeyListModeSaver.

2022-04-28  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp,tests: Verify that requested keylist mode is used.
	+ commit 46f959b3e0d42a44862c81cff67dea831412891e
	* lang/cpp/tests/run-getkey.cpp, lang/cpp/tests/run-keylist.cpp (main):
	Check used keylist mode.

2022-04-27  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Support new keylist modes.
	+ commit 8d4dcb96ccc96d0d2b4455620c89d55daebb142d
	* lang/cpp/src/global.h (ForceExtern, LocateExternal, KeyListModeMask):
	New.
	* lang/cpp/src/context.cpp (operator<<): Add check.
	* lang/cpp/src/util.h (gpgme_keylist_mode_t,
	convert_from_gpgme_keylist_mode_t): Handle ForceExtern.
	* lang/cpp/tests/run-getkey.cpp (show_usage, main): Add arguments
	--force-extern and --locate-external.
	* lang/cpp/tests/run-keylist.cpp (show_usage, main): Ditto.

2022-04-22  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Allow changing the error of a result.
	+ commit cd9738e8be499c3275a46b95bd92f00bc9cbf403
	* lang/cpp/src/result.h (class Result): Add member function setError.

2022-04-05  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Handle canceling of an edit operation.
	+ commit 1691f35125b3f2651efc72e8a8f2cec777ca55af
	* lang/cpp/src/editinteractor.cpp
	(CallbackHelper::edit_interactor_callback_impl): Check for error _or_
	canceled state.

	cpp: Return actual error if revocation fails.
	+ commit 9ee87441078465b60c7430102e64085d557ab6e1
	* lang/cpp/src/editinteractor.cpp, lang/cpp/src/editinteractor.h
	(EditInteractor::parseStatusError): New.
	* lang/cpp/src/gpgrevokekeyeditinteractor.cpp
	(GpgRevokeKeyEditInteractor::Private::nextState): Handle status
	error.

	cpp: Add internal utility function for splitting strings.
	+ commit d54d078dfe5ffbac790a2559ba7ff474cafe278b
	* lang/cpp/src/util.h (split): New.

	cpp: Do not export symbols of the Private class.
	+ commit 807224b66d5343bd4b255235dd90a9efd2c11732
	* lang/cpp/src/gpgrevokekeyeditinteractor.h (class
	GpgRevokeKeyEditInteractor): Mark nested class Private as hidden.

2022-03-30  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add interactor to revoke a key.
	+ commit 99e0c016138dba9ff69305ce197f360f616fe9bf
	* lang/cpp/src/global.h (enum class RevocationReason): New.
	* lang/cpp/src/gpgrevokekeyeditinteractor.cpp,
	lang/cpp/src/gpgrevokekeyeditinteractor.h: New.
	* lang/cpp/src/Makefile.am: Add new files.

2022-03-28  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Set default visibility of all symbols to hidden.
	+ commit 0d77fecdc2f1788626b5acde36f9a4905b5d45e2
	* configure.ac: Add -fvisibility=hidden to GPGME_CPP_CFLAGS if gcc
	supports the flag.
	* lang/cpp/src/Makefile.am (AM_CPPFLAGS): Add GPGME_CPP_CFLAGS.
	* m4/ax_gcc_func_attribute.m4: New.

	cpp: Put local helper function into unnamed namespace.
	+ commit 6b164183ccf11570d7c11c12aaaa131313b5a26f
	lang/cpp/src/context.cpp (to_auditlog_flags): Wrap in unnamed namespace.

2022-02-03  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Allow import of keys given by key ids.
	+ commit 3843f98f2a5d8169c0e0455dea4ed989d8170214
	* lang/cpp/src/context.h (class Context): Add overloads of member
	functions importKeys and startKeyImport
	* lang/cpp/src/context.cpp (class Context): ... and implement them.

	cpp: Add internal adapter for passing a vector of strings to gpgme.
	+ commit 35bc09378a0794b9f835769acf0942de27973350
	* lang/cpp/src/util.h (class StringsToCStrings): New.
	* lang/cpp/src/util.cpp: New.
	* lang/cpp/src/Makefile.am: Add new file.

2022-01-12  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add interactor to add existing subkeys to other keys.
	+ commit d4717811be11f73a35a1f73739b0fe602403e031
	* lang/cpp/src/gpgaddexistingsubkeyeditinteractor.cpp,
	lang/cpp/src/gpgaddexistingsubkeyeditinteractor.h: New.
	* lang/cpp/src/Makefile.am: Add new files.

2022-01-04  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Allow export of secret subkeys.
	+ commit d86a351f83d5e9dac05fa34d25444c0579a71229
	* lang/cpp/src/context.h (enum Context::ExportMode): Add value
	ExportSecretSubkey.
	(class Context): Add member functions exportSecretSubkeys and
	startSecretSubkeyExport.
	* lang/cpp/src/context.cpp (Context::exportPublicKeys,
	Context::startPublicKeyExport): Return error if ExportSecretSubkey
	mode flag is set.
	(Context::exportSecretSubkeys, Context::startSecretSubkeyExport):
	Implement.

	cpp: Allow export of secret keys.
	+ commit 7efc67248d8470c8108442fe599a21972308e9fc
	* lang/cpp/src/context.h (class Context): New member functions
	exportSecretKeys, startSecretKeyExport, exportKeys, startKeyExport.
	(Context::exportPublicKeys, Context::startPublicKeyExport): Rename
	argument flags/export_mode to mode.
	* lang/cpp/src/context.cpp (Context::exportPublicKeys): Return error if
	ExportSecret mode flag is set. Call exportKeys().
	(Context::startPublicKeyExport): Return error if
	ExportSecret mode flag is set. Call startKeyExport().
	(Context::exportSecretKeys, Context::startSecretKeyExport,
	Context::exportKeys, Context::startKeyExport): Implement.

	cpp: Mark ExportNoUID flag as obsolete.
	+ commit 7b853524f1a69a3450ad0490ed16114d5c4914e6
	* lang/cpp/src/context.h (enum Context::ExportMode): Mark value
	ExportNoUID as obsolete
