Bump to gpgme 1.18.0
[platform/upstream/gpgme.git] / NEWS
diff --git a/NEWS b/NEWS
index 82d4914..063a8ca 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,908 @@
+Noteworthy changes in version 1.18.0 (2022-08-10)
+-------------------------------------------------
+
+ * New keylist mode to force refresh via external methods.  [T5951]
+
+ * The keylist operations now create an import result to report the
+   result of the locate keylist modes.  [T5951]
+
+ * core: Return BAD_PASSPHRASE error code on symmetric decryption
+   failure.  [T5939]
+
+ * cpp, qt: Do not export internal symbols anymore.  [T5906]
+
+ * cpp, qt: Support revocation of own OpenPGP keys.  [T5904]
+
+ * qt: The file name of (signed and) encrypted data can now be set.  [T6056]
+
+ * cpp, qt: Support setting the primary user ID.  [T5938]
+
+ * python: Fix segv(NULL) when inspecting contect after exeception.  [T6060]
+
+ * Interface changes relative to the 1.17.1 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ GPGME_KEYLIST_MODE_FORCE_EXTERN            NEW.
+ GPGME_KEYLIST_MODE_LOCATE_EXTERNAL         NEW.
+ cpp: RevocationReason                      NEW.
+ cpp: GpgRevokeKeyEditInteractor            NEW.
+ cpp: Result::setError                      NEW.
+ cpp: KeyListMode::ForceExtern              NEW.
+ cpp: KeyListMode::LocateExternal           NEW.
+ cpp: KeyListMode::KeyListModeMask          NEW.
+ cpp: ImportResult::mergeWith               NEW.
+ cpp: KeyListModeSaver                      NEW.
+ cpp: Context::setPrimaryUid                NEW.
+ cpp: Context::startSetPrimaryUid           NEW.
+ qt: RevokeKeyJob                           NEW.
+ qt: Protocol::revokeKeyJob                 NEW.
+ qt: EncryptJob::setFileName                NEW.
+ qt: EncryptJob::fileName                   NEW.
+ qt: SignEncryptJob::setFileName            NEW.
+ qt: SignEncryptJob::fileName               NEW.
+ qt: SetPrimaryUserIDJob                    NEW.
+ qt: Protocol::setPrimaryUserIDJob          NEW.
+
+ [c=C38/A27/R0 cpp=C21/A15/R0 qt=C16/A1/R0]
+
+ Release-info: https://dev.gnupg.org/T6128
+
+
+Noteworthy changes in version 1.17.1 (2022-03-06)
+-------------------------------------------------
+
+ * qt: Fix a bug in the ABI compatibility of 1.17.0.  [T5834]
+
+ [c=C37/A26/R0 cpp=C20/A14/R0 qt=C15/A0/R0]
+
+ Release-info: https://dev.gnupg.org/T5872
+
+
+Noteworthy changes in version 1.17.0 (2022-02-07)
+-------------------------------------------------
+
+ * New context flag "key-origin".  [#5733]
+
+ * New context flag "import-filter".  [#5739]
+
+ * New export mode to export secret subkeys.  [#5757]
+
+ * Detect errors during the export of secret keys.  [#5766]
+
+ * New function gpgme_op_receive_keys to import keys from a keyserver
+   without first running a key listing.  [#5808]
+
+ * Detect bad passphrase error in certificate import.  [T5713]
+
+ * Allow setting --key-origin when importing keys.  [T5733]
+
+ * Support components "keyboxd", "gpg-agent", "scdaemon", "dirmngr",
+   "pinentry", and "socketdir" in gpgme_get_dirinfo.  [T5727,T5613]
+
+ * Under Unix use poll(2) instead of select(2), when available.
+   [T2385]
+
+ * Do not use --flat_namespace when linking for macOS.  [T5610]
+
+ * Fix results returned by gpgme_data_* functions.  [T5481]
+
+ * Support closefrom also for glibc.  [rM4b64774b6d]
+
+ * cpp,qt: Add support for export of secret keys and secret subkeys.
+   [#5757]
+
+ * cpp,qt: Support for adding existing subkeys to other keys.  [#5770]
+
+ * qt: Extend ChangeExpiryJob to change expiration of primary key
+   and of subkeys at the same time.  [#4717]
+
+ * qt: Support WKD lookup without implicit import.  [#5728]
+
+ * qt: Allow specifying an import filter when importing keys.  [#5739]
+
+ * qt: Expect UTF-8 on stderr on Windows.  [rM8fe1546282]
+
+ * qt: Allow retrieving the default value of a config entry.  [T5515]
+
+ * Interface changes relative to the 1.16.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_op_receive_keys                      NEW.
+ gpgme_op_receive_keys_start                NEW.
+ qt: Protocol::secretSubkeyExportJob        NEW.
+ cpp: Context::exportSecretSubkeys          NEW.
+ cpp: Context::startSecretSubkeyExport      NEW.
+ qt: Protocol::secretKeyExportJob      CHANGED: Param 'charset' is ignored.
+ cpp: Context::exportKeys                   NEW.
+ cpp: Context::startKeyExport               NEW.
+ cpp: Context::exportSecretKeys             NEW.
+ cpp: Context::startSecretKeyExport         NEW.
+ cpp: GpgAddExistingSubkeyEditInteractor    NEW.
+ GPGME_EXPORT_MODE_SECRET_SUBKEY            NEW.
+ gpgme_set_ctx_flag                    EXTENDED: New flag 'key-origin'.
+ gpgme_set_ctx_flag                    EXTENDED: New flag 'import-filter'.
+ qt: ChangeExpiryJob::Option                NEW.
+ qt: ChangeExpiryJob::Options               NEW.
+ qt: ChangeExpiryJob::setOptions            NEW.
+ qt: ChangeExpiryJob::options               NEW.
+ qt: CryptoConfigEntry::defaultValue        NEW.
+ qt: WKDLookupJob                           NEW.
+ qt: WKDLookupResult                        NEW.
+ qt: Protocol::wkdLookupJob                 NEW.
+ qt: ImportJob::setKeyOrigin                NEW.
+ qt: ImportJob::keyOrigin                   NEW.
+ qt: ImportJob::keyOriginUrl                NEW.
+ qt: setImportFilter                        NEW.
+ qt: importFilter                           NEW.
+ qt: AddExistingSubkeyJob                   NEW.
+ qt: Protocol::addExistingSubkeyJob         NEW.
+
+ [c=C37/A26/R0 cpp=C20/A14/R0 qt=C14/A7/R0]
+
+ Release-info: https://dev.gnupg.org/T5819
+
+
+Noteworthy changes in version 1.16.0 (2021-06-24)
+-------------------------------------------------
+
+ * New context flag "cert-expire".  [#5505]
+
+ * New data flags "io-buffer-size" and "sensitive".  [#5478]
+
+ * Increase I/O buffer size from 512 to 4k under Windows.
+
+ * cpp,qt: Add support for trust signatures. [#5421]
+
+ * qt: Add support for flags in LDAP server options. [#5217]
+
+ * qt: Fix too high memory consumption due to QProcess.  [#5475]
+
+ * qt: Do not set empty base DN as query of keyserver URL.  [#5465]
+
+ * qt: Extend SignKeyJob to create signatures with expiration date.
+   [5506]
+
+ * python: New optional parameter filter_signatures for decrypt.
+   [#5292]
+
+ * Interface changes relative to the 1.15.1 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_set_ctx_flag                    EXTENDED: New flag 'cert-expire'.
+ cpp: SignKeyJob::setTrustSignature         NEW.
+ cpp: TrustSignatureTrust                   NEW.
+ cpp: GpgSignKeyEditInteractor::setTrustSignatureTrust NEW.
+ cpp: GpgSignKeyEditInteractor::setTrustSignatureDepth NEW.
+ cpp: GpgSignKeyEditInteractor::setTrustSignatureScope NEW.
+ cpp: UserID::Signature::isTrustSignature   NEW.
+ cpp: UserID::Signature::trustValue         NEW.
+ cpp: UserID::Signature::trustDepth         NEW.
+ cpp: UserID::Signature::trustScope         NEW.
+ gpgme_key_sig_t                       EXTENDED: New field 'trust_depth'.
+ gpgme_key_sig_t                       EXTENDED: New field 'trust_value'.
+ gpgme_key_sig_t                       EXTENDED: New field 'trust_scope'.
+ GPGME_KEYSIGN_FORCE                   NEW.
+ qt: CryptoConfig::entry               CHANGED: Added overload; deprecated old
+
+ [c=C36/A25/R0 cpp=C19/A13/R0 qt=C13/A6/R0]
+
+ Release-info: https://dev.gnupg.org/T5499
+
+
+Noteworthy changes in version 1.15.1 (2021-01-08)
+-------------------------------------------------
+
+ * Fix another bug in the secret key export.  [#5046]
+
+ * Make listing of signatures work if only secret keys are listed.  [#3580]
+
+ * Fix build problem on FreeBSD.  [a6220adf30]
+
+ * qt: Avoid empty "rem@gnupg.org" signature notations.  [#5142]
+
+ * python: Fix key_export functions.  [#5149]
+
+
+ [c=C35/A24/R1 cpp=C18/A12/R1 qt=C12/A5/R1]
+
+ Release-info: https://dev.gnupg.org/T5225
+
+
+Noteworthy changes in version 1.15.0 (2020-11-12)
+-------------------------------------------------
+
+ * New function gpgme_op_setexpire to make changing the expiration
+   easier (requires GnuPG 2.1.22). [#4999]
+
+ * New function gpgme_op_revsig to revoke key signatures (requires
+   GnuPG 2.2.24). [#5094]
+
+ * Support exporting secret keys. [#5046]
+
+ * cpp: Support for set expire operations in the C++ bindings. [#5003]
+
+ * cpp: Support for revoking key signatures in the C++ bindings. [#5094]
+
+ * qt: Extended ChangeExpiryJob to support changing the expiry of
+   subkeys. [#4717]
+
+ * qt: Extended QuickJob to support revoking of key signatures. [#5094]
+
+ * qt: Added QDebug stream operator for GpgME::Error.
+
+ * Require a somewhat newer version of libgpg-error (1.36).
+
+ * Interface changes relative to the 1.14.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_op_setexpire_start                   NEW.
+ gpgme_op_setexpire                         NEW.
+ gpgme_op_revsig_start                      NEW.
+ gpgme_op_revsig                            NEW.
+ GPGME_REVSIG_LFSEP                         NEW.
+ cpp: Context::setExpire                    NEW.
+ cpp: Context::startSetExpire               NEW.
+ cpp: EngineInfo::Version::operator<=       NEW.
+ cpp: EngineInfo::Version::operator>=       NEW.
+ cpp: EngineInfo::Version::operator!=       NEW.
+ cpp: StatusConsumer                        NEW.
+ cpp: StatusConsumerAssuanTransaction       NEW.
+ cpp: Context::cancelPendingOperationImmediately NEW.
+ cpp: Context::revokeSignature              NEW.
+ cpp: Context::startRevokeSignature         NEW.
+ cpp: UserID::Signature::operator<          NEW.
+ qt: operator<<(QDebug debug, const GpgME::Error &err) NEW.
+ qt: QuickJob::startRevokeSignature         NEW.
+ qt: QuickJob::result                   CHANGED: Made params 'auditLogAsHtml'
+                                                and 'auditLogError' optional.
+
+ [c=C35/A24/R0 cpp=C18/A12/R0 qt=C12/A5/R0]
+
+ Release-info: https://dev.gnupg.org/T5131
+
+
+Noteworthy changes in version 1.14.0 (2020-07-16)
+-------------------------------------------------
+
+ * New keylist mode to force the engine to return the keygrip. [#4820]
+
+ * New export mode to export as OpenSSH public key.  [#4310]
+
+ * New context flag "extended-edit" to enable expert key edit. [#4734]
+
+ * Deprecate the anyway non working trustlist functions.  [#4834]
+
+ * cpp: Add convenience API to obtain remarks. [#4734]
+
+ * cpp: The sign key edit-interactor now supports multiple signatures
+   from the same key. [#4734]
+
+ * qt: Extended signkeyjob to handle remarks and multiple signatures.
+   [#4734]
+
+ * qt: Added job API for gpg-card.
+
+ * qt: The logging category has been changed to gpg.qgpgme to be more
+       consistent with other qt logging categories.
+
+ * Interface changes relative to the 1.13.1 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ GPGME_KEYLIST_MODE_WITH_KEYGRIP              NEW.
+ GPGME_EXPORT_MODE_SSH                        NEW.
+ gpgme_user_id_t                         EXTENDED: New field 'uidhash'.
+ cpp: UserID::remark                          NEW.
+ cpp: UserID::remarks                         NEW.
+ cpp: GpgSignKeyEditInteractor::setDupeOk     NEW.
+ cpp: Context::exportPublicKeys          EXTENDED: New param 'flags'.
+ cpp: Context::startPublicKeyExport      EXTENDED: New param 'flags'.
+ cpp: Context::ExportMode                     NEW.
+ qt: SignKeyJob::setDupeOk                    NEW.
+ qt: SignKeyJob::setRemark                    NEW.
+ qt: GpgCardJob                               NEW.
+ qt: ExportJob::setExportFlags                NEW.
+
+ [c=C34/A23/R0 cpp=C17/A11/R0 qt=C11/A4/R0]
+
+ Release-info: https://dev.gnupg.org/T4996
+
+
+Noteworthy changes in version 1.13.1 (2019-06-13)
+-------------------------------------------------
+
+ * cpp: gpgme_set_global_flag is now wrapped.  [#4471]
+
+ * w32: Improved handling of unicode install paths.  [#4453]
+
+ * w32: The gpgme_io_spawn error message is now only shown once. [#4453]
+
+ * Fixed a crash introduced in 1.13.0 when working with S/MIME. [#4556]
+
+ * w32: Fixed format string errors introduced in 1.13.0 that could
+   cause crashes.  [#4440]
+
+ * w32: Fixed an error in the new diagnostic gpgsm support introduced
+   in 1.13.0 that caused crashes in low fd scenarios.  [#4439]
+
+ * python: Fixed a DecryptionError Exception.  [#4478]
+
+ * python: No longer raises BadSignatures from decrypt(verify=True).
+   [#4276]
+
+ * Interface changes relative to the 1.13.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ cpp: setGlobalFlag                         NEW.
+
+ [c=C33/A22/R1 cpp=C16/A10/R0 qt=C10/A3/R4]
+
+ Release-info: https://dev.gnupg.org/T4551
+
+
+Noteworthy changes in version 1.13.0 (2019-03-26)
+-------------------------------------------------
+
+ * Support GPGME_AUDITLOG_DIAG for gpgsm.  [#4426]
+
+ * New context flag "trust-model".
+
+ * Removed support for WindowsCE and Windows ME.
+
+ * Aligned the gpgrt-config code with our other libaries.
+
+ * Auto-check for all installed Python versions.  [#3354]
+
+ * Fixed generating card key in the C++ bindings.  [#4428]
+
+ * Fixed a segv due to bad parameters in genkey.  [#4192]
+
+ * Fixed crash if the plaintext is ignored in a CMS verify.
+
+ * Fixed memleak on Windows.  [T4238]
+
+ * Tweaked the Windows I/O code.
+
+ * Fixed random crashes on Windows due to closing an arbitrary
+   handle.  [#4237]
+
+ * Fixed a segv on Windows.  [#4369]
+
+ * Fixed test suite problems related to dtags.  [#4298]
+
+ * Fixed bunch of python bugs.  [#4242,commit 9de1c96ac3cf]
+
+ * Several fixes to the Common Lisp bindings.
+
+ * Fixed minor bugs in gpgme-json.  [#4331,#4341,#4342,#4343
+
+ * Require trace level 8 to dump all I/O data.
+
+ * The compiler must now support variadic macros.
+
+ * Interface changes relative to the 1.12.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_set_ctx_flag               EXTENDED: New flag 'trust-model'.
+ cpp: Context::create                       NEW.
+ cpp: Key::isBad                            NEW.
+ cpp: Subkey::isBad                         NEW.
+ cpp: UserID::isBad                         NEW.
+ cpp: UserID::Signature::isBad              NEW.
+ cpp: GenCardKeyInteractor::setAlgo         NEW.
+
+ [c=C33/A22/R0 cpp=C15/A9/R0 qt=C10/A3/R3]
+
+ Release-info: https://dev.gnupg.org/T4376
+
+
+Noteworthy changes in version 1.12.0 (2018-10-08)
+-------------------------------------------------
+
+ * Enhanced the JSON based interface tool gpgme-json to support Native
+   Messaging as well as new Javascript code to support the browser
+   site.  See lang/js/README for details.
+
+ * Major overhaul of the Python language bindings documentation.
+
+ * Even for old versions of gpg a missing MDC will now lead to a
+   decryption failure.
+
+ * Added context flag "auto-key-locate" to control the
+   behavior of GPGME_KEYLIST_MODE_LOCATE.
+
+ * New data function to create a data object from an estream.
+
+ * Add more interfaces to the C++ bindings.
+
+ * Improved error codes on decryption failure.
+
+ * Lots of minor fixes.
+
+ * Interface changes relative to the 1.11.1 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_data_new_from_estream                NEW.
+ gpgme_decrypt_result_t           EXTENDED: New field legacy_cipher_nomdc.
+ gpgme_set_ctx_flag               EXTENDED: New flag 'ignore-mdc-error'.
+ GPGME_AUDITLOG_DEFAULT                     NEW.
+ GPGME_AUDITLOG_DIAG                        NEW.
+ gpgme_set_ctx_flag               EXTENDED: New flag 'auto-key-locate'.
+ cpp: DecryptionResult::sessionKey          NEW.
+ cpp: DecryptionResult::symkeyAlgo          NEW.
+ cpp: DecryptionResult::isLegacyCipherNoMDC New.
+ cpp: Data::rewind                          NEW.
+ cpp: Context::setFlag                      NEW.
+ cpp: Context::getFlag                      NEW.
+ cpp: Context::createKeyEx                  NEW.
+
+ [c=C32/A21/R0 cpp=C14/A8/R0 qt=C10/A3/R2]
+
+ Release-info: https://dev.gnupg.org/T4109
+
+
+Noteworthy changes in version 1.11.1 (2018-04-20)
+-------------------------------------------------
+
+ * Fixed build problems in the 1.11.0 release.
+
+ * Added C++ interfaces which were planned for 1.11.0.
+
+ * Interface changes relative to the 1.10.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ cpp: Key::origin                     NEW.
+ cpp: Key::lastUpdate                 NEW.
+ cpp: UserID::origin                  NEW.
+ cpp: UserID::lastUpdate              NEW.
+
+ [c=C31/A20/R1 cpp=C13/A7/R0 qt=C10/A3/R2]
+
+
+Noteworthy changes in version 1.11.0 (2018-04-18)
+-------------------------------------------------
+
+ * New encryption API to support direct key specification including
+   hidden recipients option and taking keys from a file.  This also
+   allows to enforce the use of a subkey.
+
+ * New encryption flag for the new API to enforce the use of plain
+   mail addresses (addr-spec).
+
+ * The import API can now tell whether v3 keys are skipped.  These old
+   and basically broken keys are not anymore supported by GnuPG 2.1.
+
+ * The decrypt and verify API will now return the MIME flag as
+   specified by RFC-4880bis.
+
+ * The offline mode now has an effect on gpg by disabling all network
+   access.  [#3831]
+
+ * A failed OpenPGP verification how returns the fingerprint of the
+   intended key if a recent gpg version was used for signature
+   creation.
+
+ * New tool gpgme-json as native messaging server for web browsers.
+   As of now public key encryption and decryption is supported.
+   Requires Libgpg-error 1.29.
+
+ * New context flag "request-origin" which has an effect when used
+   with GnuPG 2.2.6 or later.
+
+ * New context flag "no-symkey-cache" which has an effect when used
+   with GnuPG 2.2.7 or later.
+
+ * New convenience constant GPGME_KEYLIST_MODE_LOCATE.
+
+ * Improved the Python documentation.
+
+ * Fixed a potential regression with GnuPG 2.2.6 or later.
+
+ * Fixed a crash in the Python bindings on 32 bit platforms.  [#3892]
+
+ * Various minor fixes.
+
+ * Interface changes relative to the 1.10.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_op_encrypt_ext             NEW.
+ gpgme_op_encrypt_ext_start       NEW.
+ gpgme_op_encrypt_sign_ext        NEW.
+ gpgme_op_encrypt_sign_ext_start  NEW.
+ GPGME_ENCRYPT_WANT_ADDRESS       NEW.
+ GPGME_KEYLIST_MODE_LOCATE        NEW.
+ gpgme_import_result_t            EXTENDED: New field 'skipped_v3_keys'.
+ gpgme_decrypt_result_t           EXTENDED: New field 'symkey_algo'.
+ gpgme_decrypt_result_t           EXTENDED: New field 'is_mime'.
+ gpgme_verify_result_t            EXTENDED: New field 'is_mime'.
+ cpp: Key::locate                 NEW.
+ cpp: Data::toString              NEW.
+ cpp: ImportResult::numV3KeysSkipped  NEW.
+
+ [c=C31/A20/R0 cpp=C12/A6/R0 qt=C10/A3/R1]
+
+
+Noteworthy changes in version 1.10.0 (2017-12-12)
+-------------------------------------------------
+
+ * Now returns more specific error codes for decryption to distinguish
+   between bad passphrase, user canceled, and no secret key.
+
+ * Now returns key origin information if available.
+
+ * Added context flag "auto-key-retrieve" to selectively enable the
+   corresponding gpg option.
+
+ * Added flag is_de_vs to decryption and verify results.
+
+ * py: Use SEEK_SET as default for data.seek.
+
+ * cpp: Various new APIs.
+
+ * Reduced spawn overhead on Linux again.  Added new configure option
+   --disable-linux-getdents to disable this feature for very old
+   Linux versions.
+
+ * Improved the Python bindings build system.
+
+ * Made the test suite less fragile.
+
+ * Interface changes relative to the 1.9.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_decrypt_result_t      EXTENDED: New field 'is_de_vs'.
+ gpgme_signature_t           EXTENDED: New field 'is_de_vs'.
+ gpgme_keyorg_t              NEW.
+ gpgme_op_delete_ext         NEW.
+ gpgme_op_delete_ext_start   NEW.
+ GPGME_DELETE_ALLOW_SECRET   NEW.
+ GPGME_DELETE_FORCE          NEW.
+ gpgme_op_conf_dir           NEW.
+ gpgme_set_ctx_flag          EXTENDED: New flag 'auto-key-retrieve'.
+ cpp: DecryptionResult::isDeVs         NEW.
+ cpp: Signature::isDeVs                NEW.
+ cpp: EngineInfo::Version::operator>   NEW.
+ cpp: Context::createKey               NEW.
+ cpp: Context::startCreateKey          NEW.
+ cpp: Context::createSubkey            NEW.
+ cpp: Context::startCreateSubkey       NEW.
+ qt: QuickJob                          NEW.
+ py: DecryptResult           EXTENDED: New boolean field 'is_de_vs'.
+ py: Signature               EXTENDED: New boolean field 'is_de_vs'.
+ py: GpgError                EXTENDED: Partial results in 'results'.
+
+ [c=C30/A19/R0 cpp=C11/A5/R0 qt=C10/A3/R0]
+
+
+Noteworthy changes in version 1.9.0 (2017-03-28)
+------------------------------------------------
+
+ * Clarified meaning of the 'expire' parameter of gpgme_op_createkey
+   and gpgme_op_createsubkey.  New flag to force a key without an
+   expiration date.
+
+ * New function gpgme_op_keylist_from_data_start to list keys from
+   data objects without importing them.
+
+ * New function gpgme_op_set_uid_flag to flag a key as primary.
+
+ * New function gpgme_op_decrypt_ext to run decryption with special
+   flags.  This can for example be used to unwrap keys (remove only
+   the encryption layer).
+
+ * New encryption flags to wrap a key (adding an encryption layer to
+   an OpenPGP message) or to create anonymously encrypted messages.
+
+ * Support for adduid and revuid operations in the C++ bindings.
+
+ * Support for smartcard key generation in the C++ bindings.
+
+ * Several new functions for the Python binding.
+
+ * Many smaller bug fixes.
+
+ * Interface changes relative to the 1.8.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_op_createkey          CHANGED: Meaning of 'expire' parameter.
+ gpgme_op_createsubkey       CHANGED: Meaning of 'expire' parameter.
+ GPGME_CREATE_NOEXPIRE       NEW.
+ gpgme_key_t                 EXTENDED: New field 'origin'.
+ gpgme_key_t                 EXTENDED: New field 'last_update'.
+ gpgme_subkey_t              EXTENDED: New field 'is_de_vs'.
+ gpgme_user_id_t             EXTENDED: New field 'origin'.
+ gpgme_user_id_t             EXTENDED: New field 'last_update'.
+ gpgme_op_keylist_from_data_start NEW.
+ gpgme_op_set_uid_flag_start      NEW.
+ gpgme_op_set_uid_flag            NEW.
+ gpgme_op_decrypt_ext_start       NEW.
+ gpgme_op_decrypt_ext             NEW.
+ GPGME_ENCRYPT_THROW_KEYIDS       NEW.
+ GPGME_ENCRYPT_WRAP               NEW.
+ GPGME_DECRYPT_VERIFY             NEW.
+ GPGME_DECRYPT_UNWRAP             NEW.
+ gpgme_data_rewind                UN-DEPRECATE.
+ cpp: Context::revUid(const Key&, const char*)      NEW.
+ cpp: Context::startRevUid(const Key&, const char*) NEW.
+ cpp: Context::addUid(const Key&, const char*)      NEW.
+ cpp: Context::startAddUid(const Key&, const char*) NEW.
+ cpp: Key::UserID::revoke()                         NEW.
+ cpp: Key::addUid()                                 NEW.
+ cpp: Key::isDeVs                                   NEW.
+ cpp: GpgGenCardKeyInteractor                       NEW.
+ cpp: Subkey::keyGrip                               NEW.
+ cpp: Subkey::isDeVs                                NEW.
+ cpp: Data::toKeys                                  NEW.
+ cpp: Context::setDecryptFlags                      NEW.
+ cpp: Context::decrypt                         EXTENDED: Flags added.
+ cpp: Context::startDecrypt                    EXTENDED: Flags added.
+ cpp: Context::decryptAndVerify                EXTENDED: Flags added.
+ cpp: Context::startCombinedDecryptionAndVerification EXTENDED: Flags.
+ cpp: Context::encryptFlags                    EXTENDED: New flags.
+ qt: CryptoConfig::stringValueList()                NEW.
+ py: Context.__init__        EXTENDED: New keyword arg home_dir.
+ py: Context.home_dir        NEW.
+ py: Context.keylist         EXTENDED: New keyword arg mode.
+ py: Context.keylist         EXTENDED: New keyword arg source.
+ py: Context.create_key      NEW.
+ py: Context.create_subkey   NEW.
+ py: Context.key_add_uid     NEW.
+ py: Context.key_revoke_uid  NEW.
+ py: Context.key_sign        NEW.
+ py: Context.key_tofu_policy NEW.
+ py: core.pubkey_algo_string NEW.
+ py: core.addrspec_from_uid  NEW.
+
+ [c=C29/A18/R0 cpp=C10/A4/R0 qt=C9/A2/R0]
+
+
+Noteworthy changes in version 1.8.0 (2016-11-16)
+------------------------------------------------
+
+ * The module of the Python bindings has been renamed to 'gpg'.
+
+ * New interface to query current software versions.
+
+ * New feature to use gpg's --{show,override}session-key options.
+
+ * New interface to set the sender of a mail.
+
+ * qt: Added Distinguished Name parser from libkleo
+
+ * The --homedir option is now used with recent gpgconf versions.
+
+ * On 64 bit Windows systems gpgconf is now properly located.
+
+ * The internal locking functions have been replaced by libgpg-error
+   locking functions.
+
+ * Interface changes relative to the 1.7.1 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_set_sender                NEW.
+ gpgme_get_sender                NEW.
+ gpgme_op_query_swdb             NEW.
+ gpgme_op_query_swdb_result      NEW.
+ gpgme_query_swdb_result_t       NEW.
+ gpgme_get_ctx_flag              NEW.
+ gpgme_decrypt_result_t          EXTENDED: New field session_key.
+ qt: DN                          NEW.
+ qt: DN::Attribute               NEW.
+ qt: Job::context(Job*)          NEW.
+ cpp: EngineInfo::Version::Version(const char*) NEW.
+ cpp: EngineInfo::Version::Version()            NEW.
+ cpp: SwdbResult                                NEW.
+ cpp: Context::setSender(const char*)           NEW.
+ cpp: Context::getSender()                      NEW.
+
+ [c=C28/A17/R0 cpp=C9/A3/R0 qt=C8/A1/R0]
+
+
+Noteworthy changes in version 1.7.1 (2016-10-18)
+------------------------------------------------
+
+ * Fixed problems with the new language bindings.
+
+ * New helper function gpgme_addrspec_from_uid.
+
+ * Use option --exit-on-status-write-error with newer gpg versions.
+
+ * qt: Missed API from the Qt Binding inclusion has
+   been added again.
+
+ * qt: abstractimportjob.h is now installed to that
+   ImportJobs can be used again.
+
+ * qt: Fixed spelling error in API (startReceive).
+
+ * Interface changes relative to the 1.7.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_addrspec_from_uid         NEW.
+ qt: WksPublishJob::startRecieve RENAMED to ::startReceive.
+ qt: MultiDeleteJob              NEW.
+ qt: AbstractImportJob           NEW.
+ qt: SpecialJob                  NEW.
+ cpp: Signature::key(bool, bool)              NEW.
+ cpp: UserID::addrSpecFromString(const char*) NEW.
+ cpp: UserID::addrSpec()                      NEW.
+
+ [c=C27/A16/R0 cpp=C8/A2/R0 qt=C7/A0/R0]
+
+
+Noteworthy changes in version 1.7.0 (2016-09-21)
+------------------------------------------------
+
+ * New language bindings for Python 2 and 3.
+
+ * New language Bindings for C++ and the Qt-Framework API.
+
+ * New functions gpgme_op_createkey and gpgme_op_createsubkey to make
+   key creation easier (requires GnuPG 2.1).
+
+ * New functions gpgme_op_adduid and gpgme_op_revuid to make user id
+   management easier (requires GnuPG 2.1).
+
+ * New function gpgme_op_keysign to make key signing easier (requires
+   GnuPG 2.1).
+
+ * New function gpgme_op_interact to replace the now deprecated
+   functions gpgme_op_edit and gpgme_op_card_edit.
+
+ * New function gpgme_pubkey_algo_string to convert a public key
+   algorithm into a GnuPG 2.1 style string.
+
+ * Support for GnuPG 2.1's TOFU trust model.
+
+ * Notation flags are now correctly set on verify.
+
+ * New global flag "require-gnupg" to set a minimal gnupg version.
+
+ * More supported items in gpgme_get_dirinfo.
+
+ * New function gpgme_data_set_flag and flag "size-hint".
+
+ * New function gpgme_set_ctx_flag and flags "full-status" and
+   "raw-description".
+
+ * Improved gpgme_data_identify to distinguish more file types.
+
+ * New flag GPGME_ENCRYPT_SYMMETRIC for gpgme_op_encrypt to allow
+   mixed public key and symmetric encryption.
+
+ * New field KEYGRIP in gpgme_subkey_t.  New fields FPR in gpgme_key_t.
+
+ * New flag GPGME_DATA_ENCODING_MIME to declare that the encrypted or
+   signed data is a valid MIME part.  This is to support future GnuPG
+   versions.
+
+ * Interface changes relative to the 1.6.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_pubkey_algo_string       NEW.
+ GPGME_PK_EDDSA                 NEW.
+ gpgme_set_ctx_flag             NEW.
+ gpgme_data_set_flag            NEW.
+ gpgme_op_createkey             NEW.
+ gpgme_op_createkey_start       NEW.
+ gpgme_op_createsubkey          NEW.
+ gpgme_op_createsubkey_start    NEW.
+ gpgme_op_adduid_start          NEW.
+ gpgme_op_adduid                NEW.
+ gpgme_op_revuid_start          NEW.
+ gpgme_op_revuid                NEW.
+ gpgme_op_keysign_start         NEW.
+ gpgme_op_keysign               NEW.
+ gpgme_op_tofu_policy_start     NEW.
+ gpgme_op_tofu_policy           NEW.
+ gpgme_op_interact_start        NEW.
+ gpgme_op_interact              NEW.
+ gpgme_interact_cb_t            NEW.
+ gpgme_op_edit_start            DEPRECATED.
+ gpgme_op_edit                  DEPRECATED.
+ gpgme_op_card_edit_start       DEPRECATED.
+ gpgme_op_card_edit             DEPRECATED.
+ gpgme_edit_cb_t                DEPRECATED.
+ gpgme_status_code_t            DEPRECATED.
+ gpgme_genkey_result_t          EXTENDED: New fields pubkey and seckey.
+ gpgme_signature_t              EXTENDED: New field key.
+ gpgme_key_t                    EXTENDED: New field fpr.
+ gpgme_subkey_t                 EXTENDED: New field keygrip.
+ gpgme_user_id_t                EXTENDED: New field tofu.
+ gpgme_tofu_policy_t            NEW.
+ gpgme_tofu_info_t              NEW.
+ GPGME_STATUS_KEY_CONSIDERED    NEW.
+ GPGME_STATUS_TOFU_USER         NEW.
+ GPGME_STATUS_TOFU_STATS        NEW.
+ GPGME_STATUS_TOFU_STATS_LONG   NEW.
+ GPGME_STATUS_NOTATION_FLAGS    NEW.
+ GPGME_KEYLIST_MODE_WITH_TOFU   NEW.
+ GPGME_DATA_TYPE_PGP_ENCRYPTED  NEW.
+ GPGME_DATA_TYPE_PGP_SIGNATURE  NEW.
+ GPGME_DATA_ENCODING_MIME       NEW.
+ GPGME_ENCRYPT_SYMMETRIC        NEW.
+ 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.
+ GPGME_KEYSIGN_LOCAL            NEW.
+ GPGME_KEYSIGN_LFSEP            NEW.
+ GPGME_INTERACT_CARD            NEW.
+
+ [c=C26/A15/R0 cpp=C6/A0/R1 qt=C6/A0/R1]
+
+
+Noteworthy changes in version 1.6.0 (2015-08-26) [C25/A14/R0]
+------------------------------------------------
+
+ * Added gpgme_set_offline to do a key listinging w/o requiring CRL.
+
+ * Added gpgme_set_status_cb to allow a user to see some status
+   messages.
+
+ * Added an export mode for secret keys.
+
+ * More precise error codes are returned if GnuPG >= 2.1.8 is used.
+
+ * The passphrase handler for the loopback mode has been improved and may
+   also be used with genkey.
+
+ * [w32] The standard GnuPG 2.1 install directory is now searched for
+   gpgconf.exe before a registry specified directory and the Gpg4win
+   install directory.
+
+ * [w32] gpgme-w32spawn.exe will now only be searched in the gpgme DLL
+   directory.
+
+ * Interface changes relative to the 1.5.1 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_set_offline              NEW.
+ gpgme_get_offline              NEW.
+ gpgme_set_status_cb            NEW.
+ gpgme_get_status_cb            NEW.
+ GPGME_EXPORT_MODE_SECRET       NEW
+ GPGME_EXPORT_MODE_RAW          NEW.
+ GPGME_EXPORT_MODE_PKCS12       NEW.
+
+
+Noteworthy changes in version 1.5.5 (2015-06-08) [C24/A13/R4]
+------------------------------------------------
+
+ * Fixed crash in key listings for user ids with a backslash.
+
+ * Fixed regression for GPGSM use with GnuPG < 2.1.
+
+ * Properly set signature summary for revoked OpenPGP keys.
+
+
+Noteworthy changes in version 1.5.4 (2015-04-13) [C24/A13/R3]
+------------------------------------------------
+
+ * Fixed a possible crash in the debug code.
+
+ * Fixed building for Windows with newer versions of Mingw.
+
+
+Noteworthy changes in version 1.5.3 (2014-12-11) [C24/A13/R2]
+-------------------------------------------------------------
+
+ * The export key functions do now return an error if used with the
+   latest GnuPG version.
+
+
+Noteworthy changes in version 1.5.2 (2014-11-21) [C24/A13/R1]
+-------------------------------------------------------------
+
+ * gpgme-tool is now installed.
+
+ * Fix external listing for modern keyservers.
+
+ * Minor other fixes.
+
+
+Noteworthy changes in version 1.5.1 (2014-07-30) [C24/A13/R0]
+-------------------------------------------------------------
+
+ * Fixed possible overflow in gpgsm and uiserver engines.
+   [CVE-2014-3564]
+
+ * Added support for GnuPG 2.1's --with-secret option.
+
+ * Interface changes relative to the 1.5.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ GPGME_KEYLIST_MODE_WITH_SECRET NEW.
+
+
 Noteworthy changes in version 1.5.0 (2014-05-21) [C23/A12/R0]
 -------------------------------------------------------------
 
@@ -235,7 +1140,7 @@ Noteworthy changes in version 1.1.8 (2008-12-08)
 ------------------------------------------------
 
  * SIGPIPE is now again ignored as described in the manual.  Fixes
-   regresion introduced with 1.1.6.
+   regression introduced with 1.1.6.
 
 
 Noteworthy changes in version 1.1.7 (2008-10-17)
@@ -431,8 +1336,8 @@ Noteworthy changes in version 1.0.3 (2005-06-20)
  * Previousy, GPGME would use a default "include certs" of 1.  This
    has been changed.  Now GPGME will use the crypto backend engines
    default unless you set the value with gpgme_set_include_certs()
-   explicitely.  A new macro GPGME_INCLUDE_CERTS_DEFAULT can be used
-   as a value to explicitely request the new default behaviour.
+   explicitly.  A new macro GPGME_INCLUDE_CERTS_DEFAULT can be used
+   as a value to explicitly request the new default behaviour.
 
    Because the default changes, this is a slight change of the API
    semantics.  We consider it to be a bug fix.
@@ -519,7 +1424,7 @@ Noteworthy changes in version 0.4.7 (2004-04-29)
    disabled in the gpgme_key_t structures.
 
  * A bug fix: The flag wrong_key_usage of gpgme_signature_t was
-   accidently of type int instead unsigned int.
+   accidentally of type int instead unsigned int.
 
  * Interface changes relative to the 0.4.5 release:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -732,7 +1637,7 @@ Noteworthy changes in version 0.4.1 (2003-06-06)
 
  The error values have been completely replaced by a more
  sophisticated model that allows GPGME to transparently and accurately
- report all errors from the other GnuPG components, irregardless of
+ report all errors from the other GnuPG components, regardless of
  process boundaries.  This is achieved by using the library
  libgpg-errors, which is shared by all GnuPG components.  This library
  is now required for GPGME.
@@ -1350,7 +2255,7 @@ Noteworthy changes in version 0.3.1 (2002-02-09)
    selects between local keyring, remote keyserver, or both.
    For this, two new macros are defined, GPGME_KEYLIST_MODE_LOCAL
    and GPGME_KEYLIST_MODE_EXTERN.  To make it possible to modify the
-   current setting, a fucntion gpgme_get_keylist_mode was added to
+   current setting, a function gpgme_get_keylist_mode was added to
    retrieve the current mode.
 
  * gpgme_wait accepts a new argument STATUS to return the error status