* New interface gpgme_op_keylist_ext_start to search for multiple patterns.
+ * gpgme_key_get_ulong_attr supports the GPGME_ATTR_EXPIRE attribute.
+
* Interface changes relative to the 0.3.3 release:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gpgme_op_encrypt CHANGED: Can fail with GPGME_Invalid_Recipients
gpgme_op_verify EXTENDED: Accepts uninitialized text argument
+gpgme_key_get_ulong_attr EXTENDED: Supports GPGME_ATTR_EXPIRE
gpgme_set_include_certs NEW
gpgme_get_include_certs NEW
gpgme_op_encrypt_sign NEW
* add locking to the key cache?
-* GpgmeKey misses GPGME_ATTR_EXPIRE attribute
-
* Documentation
** Add note about GPGME clearing out pointer return values.
** validity/trust
* Error Values
** Map ASSUAN/GpgSM ERR error values in a better way than is done now.
** Verify (and document) if Read_Error, Write_Error, Pipe_Error set errno.
-** "There is an inconsistent behaviour: if we pass three times an
- invalid (but non empty) passphrase, return code is GPGME_No_Data,
- but if we pass three times an empty (and invalid) passphrase, we
- get GPGME_No_Passphrase." Bug reported by Stephane Corthesy.
* Tests
** Write a fake gpg-agent so that we can supply known passphrases to
+2002-03-03 Marcus Brinkmann <marcus@g10code.de>
+
+ * gpgme.texi (Information About Keys): Document GPGME_ATTR_EXPIRE.
+
2002-03-03 Marcus Brinkmann <marcus@g10code.de>
* gpgme.texi (Verify): Document verification of normal and
representable as a number.
@item GPGME_ATTR_EXPIRE
-XXX FIXME
+This is the expiration time of a sub key. It is representable as a
+number.
@item GPGME_ATTR_OTRUST
XXX FIXME (also for trust items)
+2002-03-03 Marcus Brinkmann <marcus@g10code.de>
+
+ * passphrase.c (_gpgme_passphrase_status_handler): Also set the
+ error No_Passphrase if only a bad passphrase was provided.
+
2002-03-03 Marcus Brinkmann <marcus@g10code.de>
* rungpg.c (_gpgme_gpg_op_verify): If TEXT is of mode
break;
case STATUS_EOF:
- if (ctx->result.passphrase->no_passphrase)
+ if (ctx->result.passphrase->no_passphrase
+ || ctx->result.passphrase->bad_passphrase)
ctx->error = mk_error (No_Passphrase);
break;