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]
-------------------------------------------------------------

 * On Unices the engine file names are not not anymore hardwired but
   located via the envvar PATH.  All options to set the name of the
   engines for the configure run are removed.

 * If GPGME finds the gpgconf binary it defaults to using gpg2 or
   whatever gpgconf tells as name for the OpenPGP engine.  If gpgconf
   is not found, GPGME looks for an engine named "gpg".

 * New feature to use the gpgme I/O subsystem to run arbitrary
   commands.

 * New flag to use encryption without the default compression step.

 * New function to access "gpg-conf --list-dirs"

 * New configure option --enable-fixed-path for use by Android.

 * Support ECC algorithms.

 * Interface changes relative to the 1.4.3 release:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 gpgme_get_dirinfo              NEW.
 gpgme_op_spawn_start           NEW.
 gpgme_op_spawn                 NEW.
 GPGME_PROTOCOL_SPAWN           NEW.
 GPGME_SPAWN_DETACHED           NEW.
 GPGME_SPAWN_ALLOW_SET_FG       NEW.
 GPGME_ENCRYPT_NO_COMPRESS      NEW.
 GPGME_PK_ECC                   NEW.
 GPGME_MD_SHA224                NEW.
 gpgme_subkey_t                 EXTENDED: New field curve.
 GPGME_STATUS_PLAINTEXT_LENGTH  NEW.
 GPGME_STATUS_MOUNTPOINT        NEW.
 GPGME_STATUS_PINENTRY_LAUNCHED NEW.
 GPGME_STATUS_ATTRIBUTE         NEW.
 GPGME_STATUS_BEGIN_SIGNING     NEW.
 GPGME_STATUS_KEY_NOT_CREATED   NEW.


Noteworthy changes in version 1.4.3 (2013-08-12) [C22/A11/R0]
-------------------------------------------------------------

 * The default engine names are now taken from the output of gpgconf.
   If gpgconf is not found the use of gpg 1 is assumed.

 * Under Windows the default engines names are first searched in the
   installation directory of the gpgme DLL.

 * New function gpgme_data_identify to detect the type of a message.

 * Interface changes relative to the 1.4.2 release:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 gpgme_signers_count            NEW.
 gpgme_data_type_t              NEW.
 gpgme_data_identify            NEW.


Noteworthy changes in version 1.4.2 (2013-05-28) [C21/A10/R0]
-------------------------------------------------------------

 * Allow symmetric encryption with gpgme_op_encrypt_sign.

 * Fixed mismatching off_t definitions on Windows.

 * Interface changes relative to the 1.4.1 release:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 gpgme_off_t                    NEW.
 gpgme_size_t                   NEW.
 GPGME_PROTOCOL_OPENPGP         NEW alias.


Noteworthy changes in version 1.4.1 (2013-05-01) [C20/A9/R1]
------------------------------------------------------------

 * Fixed reading of gpg.conf files with excessive use of the group
   option.

 * Fixed building with the i686-w64-mingw32 toolchain.

 * Disabled FD passing by default for Apple.


Noteworthy changes in version 1.4.0 (2013-02-26) [C20/A9/R0]
------------------------------------------------------------

 * New function gpgme_set_global_flag to help debugging on Android.

 * New function gpgme_io_writen as a convenience wrapper around
   gpgme_io_write.

 * New functions to support the pinentry mode feature of GnuPG 2.1.

 * New macro GPGME_VERSION_NUMBER to allow supporting different API
   versions without the need for a configure test.

 * Several improvements for gpgme-tool.

 * Better logging of the common "invalid engine" error code.

 * Support for FD passing is now enabled by default.  The configure
   option --disable-fd-passing may be used to disable this.

 * Interface changes relative to the 1.3.1 release:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 GPGME_VERSION_NUMBER           NEW.
 gpgme_io_writen                NEW.
 gpgme_set_global_flag          NEW.
 gpgme_set_pinentry_mode        NEW.
 gpgme_get_pinentry_mode        NEW.
 gpgme_pinentry_mode_t          NEW.
 GPGME_PINENTRY_MODE_DEFAULT    NEW.
 GPGME_PINENTRY_MODE_ASK        NEW.
 GPGME_PINENTRY_MODE_CANCEL     NEW.
 GPGME_PINENTRY_MODE_ERROR      NEW.
 GPGME_PINENTRY_MODE_LOOPBACK   NEW.


Noteworthy changes in version 1.3.2 (2012-05-02)
------------------------------------------------

 * Remove support for libgpgme-pth.  As far as we know, this was never used,
   and GnuPG is going to use our own npth in the future.

 * Fix signature summary information for a missing X.509 key.

 * Fix parsing of dates >= year 2038.


Noteworthy changes in version 1.3.1 (2011-06-16)
------------------------------------------------

 * Ported to Windows CE.

 * Detect GPG versions not supporting ---passwd.

 * Interface changes relative to the 1.3.0 release:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 GPGME_EXPORT_MODE_MINIMAL      NEW
 GPGME_STATUS_SUCCESS		NEW
 gpgme_err_code_from_syserror   NEW
 gpgme_err_set_errno            NEW
 gpgme_error_from_errno		CHANGED: Return gpgme_error_t (compatible type).
 gpgme_error_from_syserror      NEW
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Noteworthy changes in version 1.3.0 (2010-01-11)
------------------------------------------------

 * GPGME does not come with an internal libassuan version anymore.
   The external libassuan 1.1.0 release or later is required.  For
   application programmers on systems that can resolve inter-library
   dependencies at runtime, this is a transparent change.

 * New engine GPGME_PROTOCOL_G13 to support the new g13 tool.

 * New engine GPGME_PROTOCOL_UISERVER to support UI Servers.

 * New API to change the passphrase of a key.

 * Interface changes relative to the 1.2.0 release:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 GPGME_STATUS_INV_SGNR    NEW.
 GPGME_STATUS_NO_SGNR     NEW.
 GPGME_PROTOCOL_G13	  NEW.
 gpgme_op_g13_mount	  NEW.
 gpgme_g13_result_t	  NEW.
 GPGME_PK_ECDSA           NEW.
 GPGME_PK_ECDH            NEW.
 gpgme_op_passwd_start    NEW.
 gpgme_op_passwd          NEW.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Noteworthy changes in version 1.2.0 (2009-06-18)
------------------------------------------------

 * New encryption flag GPGME_ENCRYPT_NO_ENCRYPT_TO to disable default
   recipients.

 * gpgme_new will fail if gpgme_check_version was not called, or a
   selftest failed (for example, if -mms-bitfields was not used on
   MingW32 targets).

 * New functions gpgme_io_read and gpgme_io_write for use with
   gpgme_passphrase_cb_t and gpgme_edit_cb_t functions.

 * New functions gpgme_result_ref and gpgme_result_unref to detach
   result structures from a context.

 * New functions gpgme_op_export_keys_start and gpgme_op_export_keys
   that allow to specify exported keys through gpgme_key_t objects
   instead of patterns.

 * New mode of operation gpgme_export_mode_t that allows exporting
   external keys.

 * Interface changes relative to the 1.1.7 release:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 GPGME_KEYLIST_MODE_EPHEMERAL   NEW.
 GPGME_PROTOCOL_ASSUAN          NEW.
 gpgme_assuan_data_cb_t         NEW.
 gpgme_assuan_inquire_cb_t      NEW.
 gpgme_assuan_status_cb_t       NEW.
 gpgme_op_assuan_transact_start NEW.
 gpgme_op_assuan_transact       NEW.
 gpgme_op_assuan_result         NEW.
 gpgme_op_import_keys           NEW.
 gpgme_op_import_keys_start     NEW.
 gpgme_subkey_t                 EXTENDED: New fields is_cardkey, card_number.
 GPGME_ENCRYPT_NO_ENCRYPT_TO    NEW.
 gpgme_check_version            CHANGED: Is now a macro.
 gpgme_new                      EXTENDED: More failure codes.
 gpgme_io_read                  NEW.
 gpgme_io_write                 NEW.
 gpgme_result_ref               NEW.
 gpgme_result_unref             NEW.
 gpgme_export_mode_t            NEW.
 gpgme_export_ext_start         EXTENDED: Arg RESERVED is now a MODE flag.
 gpgme_op_export                EXTENDED: Arg RESERVED is now a MODE flag.
 gpgme_op_export_ext_start      EXTENDED: Arg RESERVED is now a MODE flag.
 gpgme_op_export_ext            EXTENDED: Arg RESERVED is now a MODE flag.
 gpgme_op_export_keys_start     NEW.
 gpgme_op_export_keys           NEW.
 GPGME_DATA_ENCODING_URL        NEW.
 GPGME_DATA_ENCODING_URL0       NEW.
 GPGME_DATA_ENCODING_URLESC     NEW.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Noteworthy changes in version 1.1.8 (2008-12-08)
------------------------------------------------

 * SIGPIPE is now again ignored as described in the manual.  Fixes
