doc: python bindings howto
[gpgme.git] / NEWS
diff --git a/NEWS b/NEWS
index 10296ff..1a342b1 100644 (file)
--- a/NEWS
+++ b/NEWS
-Noteworthy changes in version 1.7.0 (unreleased) [C25/A14/R_]
+Noteworthy changes in version 1.10.1 (unreleased)
+-------------------------------------------------
+
+ * Interface changes relative to the 1.10.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ cpp: Key::locate                     NEW.
+ cpp: Data::toString                  NEW.
+
+
+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)
 ------------------------------------------------
 
- * New function to format a GnuPG style public key algorithm string.
+ * Clarified meaning of the 'expire' parameter of gpgme_op_createkey
+   and gpgme_op_createsubkey.  New flag to force a key without an
+   expiration date.
 
- * Notation flags are now correctly set on verify.
+ * 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.
 
- * Bindings for Python 2 and 3 are now included.
+ * 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.
@@ -23,6 +271,19 @@ Noteworthy changes in version 1.7.0 (unreleased) [C25/A14/R_]
  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.
@@ -50,6 +311,11 @@ Noteworthy changes in version 1.7.0 (unreleased) [C25/A14/R_]
  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]