doc/
[gpgme.git] / gpgme / ChangeLog
index 3b44aac..a69c048 100644 (file)
@@ -1,5 +1,662 @@
+2003-08-14  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (struct _gpgme_new_signature): Rename member CLASS to
+       _OBSOLETE_CLASS, add member CLASS with type unsigned int.
+       * sign.c (parse_sig_created): Also set SIG->_unused_class for
+       backward compatibility.
+
+2003-08-04  Marcus Brinkmann  <marcus@g10code.de>
+
+       * verify.c (parse_new_sig): Fix status parsing case.
+
+2003-07-31  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (struct _gpgme_subkey): Add flag CAN_AUTHENTICATE.
+       Lower _UNUSED to 23 bits.
+       (struct _gpgme_key): Likewise.
+       * keylist.c (set_mainkey_capability): Support 'a' and 'A'.
+       (set_subkey_capability): Support 'a'.
+
+       * keylist.c (gpgme_get_key): Check if there is more than one key
+       listed, and return GPG_ERR_AMBIGUOUS_NAME in that case.
+
+       * util.h (_gpgme_decode_c_string): Change type of LEN argument to
+       size_t.
+       (_gpgme_decode_percent_string): Likewise.
+       * conversion.c (_gpgme_decode_c_string): Likewise.
+       (_gpgme_decode_percent_string): Likewise.
+       (_gpgme_map_gnupg_error): Change type of I to unsigned int.
+       * signers.c (gpgme_signers_clear): Likewise.
+       (gpgme_signers_enum): New unsigned variable SEQNO, set to SEQ.
+       Use SEQNO instead SEQ.
+       * wait.c (fd_table_put): Change type of I and J to unsigned int.
+       * wait-global.c (_gpgme_wait_global_event_cb): Change type of IDX
+       to unsigned int.
+       (gpgme_wait): Change type of I and IDX to unsigned int.
+       * wait-private.c (_gpgme_wait_on_condition): Change type of IDX
+       and I to unsigned int.
+       * posix-io.c (_gpgme_io_close): Cast return value of macro DIM to
+       int to suppress gcc warning.
+       (_gpgme_io_set_close_notify): Likewise.
+       (_gpgme_io_select): Change type of I to unsigned int.
+       * engine.c (gpgme_get_engine_info): Change type of PROTO to
+       unsigned int.
+       * wait-user.c (_gpgme_user_io_cb_handler): Change type of IDX and
+       I to unsigned int.
+
+2003-07-29  Marcus Brinkmann  <marcus@g10code.de>
+
+       * decrypt-verify.c (decrypt_verify_status_handler): Expand silly
+       and wrong expression.
+       * encrypt-sign.c (encrypt_sign_status_handler): Likewise.
+       * encrypt.c (encrypt_sym_status_handler): Likewise.
+       * sign.c (sign_status_handler): Likewise.
+       * verify.c (verify_status_handler): Likewise.
+       * decrypt.c (decrypt_status_handler): Likewise.
+
+       * engine.c (gpgme_get_engine_info): Initialize NULL.
+
+2003-07-23  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme-config.in (gpg_error_libs): Quote GPG_ERROR_CFLAGS and
+       GPG_ERROR_LIBS when setting the corresponding variables.
+       Reported by St├ęphane Corth├ęsy.
+
+2003-07-22  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine-gpgsm.c (set_recipients): Move declaration of NEWLEN to
+       the beginning of the block.
+
+2003-06-22  Marcus Brinkmann  <marcus@g10code.de>
+
+       * data-mem.c (mem_write): Copy original buffer content.
+
+2003-06-22  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpgme_user_ids_release, gpgme_user_ids_append): Remove
+       prototypes.
+
+2003-06-06  Marcus Brinkmann  <marcus@g10code.de>
+
+       * Makefile.am (AM_CPPFLAGS): Add @GPG_ERROR_CFLAGS@.
+       * gpgme-config.in (gpg_error_libs, gpg_error_cflags): New variables.
+       Print them.
+
+       * op-support.c (_gpgme_parse_inv_userid): Rename to
+       _gpgme_parse_inv_recp and change to new datatype.
+       * ops.h (_gpgme_parse_inv_key): Fix prototype.
+       * gpgme.h (struct _gpgme_invalid_user_id): Rename to
+       __gpgme_invalid_key.  Rename field ID to KEY.
+       (gpgme_invalid_user_id_t): Rename to gpgme_invalid_key_t.
+       (struct _gpgme_op_encrypt_result): Here, too.
+       (struct _gpgme_op_sign_result): Likewise.
+       * encrypt.c (struct op_data): Likewise.
+       (release_op_data): Likewise.
+       * sign.c (struct op_data): Likewise.
+       (release_op_data): Likewise.
+
+       * posix-io.c (_gpgme_io_read): Save errno across debug calls.
+       (_gpgme_io_write): Likewise.
+       (_gpgme_io_pipe): Likewise.
+       (_gpgme_io_select): Likewise.
+
+       * rungpg.c (struct engine_gpg): Remove arg_error.
+       (add_arg): Don't set arg_error.
+       (add_data): Likewise.
+       (start): Don't check arg_error.
+       (gpg_new): Check return value of add_arg.
+       * verify.c (parse_notation): Free allocated memory at error.
+
+2003-06-05  Marcus Brinkmann  <marcus@g10code.de>
+
+       Everywhere: Use libgpg-error error codes.
+
+       * Makefile.am (EXTRA_DIST): Remove mkerrors.
+       (BUILT_SOURCES): Remove errors.c.
+       (MOSTLYCLEANFILES): Likewise.
+       (libgpgme_la_SOURCES): Likewise.  Add error.c.
+       (errors.c): Remove target.
+       * mkerrors: File removed.
+       * error.c: New file.
+
+       * gpgme.h (gpgme_error_t): Change to type gpg_error_t.
+       (gpgme_err_code_t, gpgme_err_source_t): New types.
+       (gpgme_err_code, gpgme_err_source, gpgme_error, gpgme_err_make):
+       New static inline functions.
+       (gpgme_strsource, gpgme_err_code_from_errno,
+       gpgme_err_code_to_errno, gpgme_err_make_from_errno,
+       gpgme_error_from_errno): New prototypes.
+
+2003-05-29  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpgme_op_export_start): Change second arg to const char *.
+       (gpgme_op_export): Likewise.
+       (gpgme_op_export_ext_start): New prototype.
+       (gpgme_op_export_ext): Likewise.
+       * engine.h: Likewise for _gpgme_engine_op_export and
+       _gpgme_engine_op_export_ext.
+       * engine-backend.h (struct engine_ops): Change second argument of
+       prototype of export to const char *, and add reserverd int as
+       third argument.  Add prototype for export_ext.
+       * engine.c (_gpgme_engine_op_export_ext): New function.
+       (_gpgme_engine_op_export): Change second argument of prototype of
+       export to const char *, and add reserverd int as third argument.
+       * rungpg.c (gpg_export): Change second argument of prototype of
+       export to const char *, and add reserverd int as third argument.
+       (gpg_export_ext): New function.
+       (gpg_keylist_ext): Break loop at error.
+       (_gpgme_engine_ops_gpg): Add gpg_export_ext.
+       * engine-gpgsm.c (gpgsm_export): Change second argument of
+       prototype of export to const char *, and add reserverd int as
+       third argument.
+       (gpgsm_export_ext): New function.
+       (_gpgme_engine_ops_gpgsm): Add gpgsm_export_ext.
+       * export.c (export_start): Change second argument of prototype of
+       export to const char *, and add reserverd int as third argument.
+       (gpgme_op_export_start): Likewise.
+       (export_ext_start): New function.
+       (gpgme_op_export_ext_start): Likewise.
+       (gpgme_op_export_ext): Likewise.
+
+       * gpgme.h (gpgme_keylist_mode_t): New type for anonymous enum.
+       (gpgme_sigsum_t): New type for anonymous enum.
+
+       * encrypt-sign.c (encrypt_sign_start): Check for errors earlier,
+       and return an error if RECP is not set.
+
+       * Makefile.am (libgpgme_la_SOURCES): Remove user-id.c.
+       * user-id.c: Remove file.
+       * ops.h: Remove prototype for _gpgme_user_ids_all_valid.
+       * gpgme.h (gpgme_encrypt_flags_t): New type.
+       (gpgme_op_encrypt_start): Change second parameter to type
+       gpgme_key_t[], and add third parameter.
+       (gpgme_op_encrypt): Likewise.
+       (gpgme_op_encrypt_sign_start): Likewise.
+       (gpgme_op_encrypt_sign): Likewise.
+       * encrypt.c (encrypt_start): Likewise.
+       (gpgme_op_encrypt_start): Likewise.
+       (gpgme_op_encrypt): Likewise.  Pass flags to engine.
+       * encrypt-sign.c (encrypt_sign_start): Likewise.
+       (gpgme_op_encrypt_sign_start): Likewise.
+       (gpgme_op_encrypt_sign): Likewise.
+       * engine-backend.h (struct engine_ops): Likewise for prototypes of
+       encrypt and encrypt_sign.
+       * engine.h: Likewise for prototypes of _gpgme_engine_op_encrypt
+       and _gpgme_engine_op_encrypt_sign.
+       * engine.c (_gpgme_engine_op_encrypt): Likewise.
+       (_gpgme_engine_op_encrypt_sign): Likewise.
+       * rungpg.c (gpg_encrypt): Likewise.
+       (gpg_encrypt_sign): Likewise.
+       * rungpg.c (gpg_encrypt): Check flags for always trust option.
+       * engine-gpgsm.c (gpgsm_encrypt): Likewise.
+       (set_recipients): Rewritten to use keys instead user IDs.
+       * rungpg.c (append_args_from_recipients): Rewritten to use keys
+       instead user IDs.
+       * encrypt.c (_gpgme_encrypt_status_handler): Change errors
+       returned to GPGME_Invalid_Key and GPGME_General_Error.
+
+2003-05-28  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine-gpgsm.c: Rename GpgsmObject to engine_gpgsm_t.
+       (struct gpgsm_object_s): Rename to struct engine_gpgsm.
+       * rungpg.c: Rename GpgObject to engine_gpg_t.
+       (struct gpg_object_s): Rename to struct engine_gpg.
+
+       * context.h (struct gpgme_context): Change EngineObject to
+       engine_object_t.
+       (enum ctx_op_data_type): Rename to ctx_op_data_id_t.
+       (ctx_op_data_t): New type.
+       (struct gpgme_context): Use it.
+       * ops.h (_gpgme_op_data_lookup): Use new type name.
+       * op-support.c (_gpgme_op_data_lookup): Likewise.
+       * engine.c: Rename EngineObject to engine_t in the file.  Also
+       EngineStatusHandler to engine_status_handler_t,
+       EngineCommandHandler to engine_command_handler_t and
+       EngineColonLineHandler to engine_colon_line_handler.    
+       * rungpg.c (start): Likewise.
+       * engine-gpgsm.c: Likewise.
+       * engine-backend.h (struct engine_ops): Likewise
+       * engine.h (struct engine_object_s): Rename to struct engine.
+       (EngineObject): Rename to engine_t.  Also everywhere else in the
+       file.
+       (EngineStatusHandler): Rename to engine_status_handler_t.
+       (EngineColonLineHandler): Rename to engine_colon_line_handler_t.
+       (EngineCommandHandler): Rename to engine_command_handler_t.
+
+       * engine-gpgsm.c (gpgsm_export): Fix bug in last change.
+
+       * Makefile.am (libgpgme_la_SOURCES): Remove recipient.c, add
+       user-id.c.
+       * gpgme.h (gpgme_recipients_t): Removed.
+       (gpgme_recipients_new, gpgme_recipients_release,
+       gpgme_recipients_add_name,
+       gpgme_recipients_add_name_with_validity, gpgme_recipients_count,
+       gpgme_recipients_enum_open, gpgme_recipients_enum_read,
+       gpgme_recipients_enum_close): Removed.
+       (gpgme_op_encrypt, gpgme_op_encrypt_start, gpgme_op_encrypt_sign,
+       gpgme_op_encrypt_sign_start, gpgme_op_export_start,
+       gpgme_op_export): Change second argument to gpgme_user_id_t.
+       (gpgme_user_ids_release): New prototype.
+       (gpgme_user_ids_append): Likewise.
+       * ops.h (_gpgme_recipients_all_valid): Remove.
+       (_gpgme_user_ids_all_valid): Add.
+       * context.h (struct gpgme_recipients): Removed.
+       * user-id.c: New file.
+       * recipient.c: Removed file.
+       * rungpg.c (append_args_from_recipients): Change last arg to
+       gpgme_user_id_t.  Reimplement.
+       (gpg_encrypt): Change second arg to gpgme_user_id_t.
+       (gpg_encrypt_sign): Likewise.
+       (gpg_export): Likewise.  Rewrite user ID list code.
+       * engine.c (_gpgme_engine_op_encrypt): Change second arg to
+       gpgme_user_id_t.
+       (_gpgme_engine_op_encrypt_sign): Likewise.
+       (_gpgme_engine_op_export): Likewise.
+       * engine.h (_gpgme_engine_op_encrypt, _gpgme_engine_op_encrypt_sign,
+       _gpgme_engine_op_export): Likewise.
+       * engine-gpgsm.c (set_recipients): Likewise.  Rewrite loop code.
+       (gpgsm_encrypt): Likewise.
+       (gpgsm_export): Likewise.
+       * engine-backend.h (struct engine_ops): Likewise for members
+       ENCRYPT, ENCRYPT_SIGN and EXPORT.
+       * export.c (export_start, gpgme_op_export_start, gpgme_op_export):
+       Likewise.
+       * encrypt.c (encrypt_start): Likewise.  Don't check for count of
+       recipients.
+       (gpgme_op_encrypt_start): Likewise.
+       (gpgme_op_encrypt): Likewise.
+       * encrypt-sign.c (encrypt_sign_start): Likewise.
+       (gpgme_op_encrypt_sign): Likewise.
+       (gpgme_op_encrypt_sign_start): Likewise.
+
+2003-05-27  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (struct _gpgme_op_import_result): Add skipped_new_keys.
+       * import.c (parse_import_res): Add skipped_new_keys parser.
+
+       * op-support.c (_gpgme_parse_inv_userid): Add missing break
+       statements.
+       * encrypt.c (gpgme_op_encrypt): Use gpgme_error_t instead of int.
+
+2003-05-27  Marcus Brinkmann  <marcus@g10code.de>
+
+       * encrypt.c (gpgme_op_encrypt_result): Use intermediate variable
+       HOOK to avoid compiler warning.  Don't ask, you don't want to know.
+       (_gpgme_encrypt_status_handler): Likewise.
+       (_gpgme_op_encrypt_init_result): Likewise.
+       * decrypt.c (gpgme_op_decrypt_result): Likewise.
+       (_gpgme_decrypt_status_handler): Likewise.
+       (_gpgme_op_decrypt_init_result): Likewise.
+       * verify.c (gpgme_op_verify_result): Likewise.
+       (_gpgme_verify_status_handler): Likewise.
+       (_gpgme_op_verify_init_result): Likewise.
+       * edit.c (edit_status_handler): Likewise.
+       (command_handler): Likewise.
+       (edit_start): Likewise.
+       * genkey.c (gpgme_op_genkey_result): Likewise.
+       (genkey_status_handler): Likewise.
+       (genkey_start): Likewise.
+       * import.c (gpgme_op_import_result): Likewise.
+       (import_status_handler): Likewise.
+       (_gpgme_op_import_start): Likewise.
+       * trustlist.c (gpgme_op_trustlist_next): Likewise.
+       (_gpgme_op_trustlist_event_cb): Likewise.
+       (gpgme_op_trustlist_start): Likewise.
+       * keylist.c (gpgme_op_keylist_result): Likewise.
+       (keylist_colon_handler): Likewise.
+       (keylist_status_handler): Likewise.
+       (_gpgme_op_keylist_event_cb): Likewise.
+       (gpgme_op_keylist_start): Likewise.
+       (gpgme_op_keylist_ext_start): Likewise.
+       (gpgme_op_keylist_next): Likewise.
+       * passphrase.c (_gpgme_passphrase_status_handler): Likewise.
+       (_gpgme_passphrase_command_handler_internal): Likewise.
+       * sign.c (gpgme_op_sign_result): Likewise.
+       (_gpgme_sign_status_handler): Likewise.
+       (_gpgme_op_sign_init_result): Likewise.
+
+       * passphrase.c (_gpgme_passphrase_command_handler_internal): Fix
+       access to pointer type.
+
+2003-05-26  Marcus Brinkmann  <marcus@g10code.de>
+
+       * engine.h (EngineCommandHandler): Change last argument to int fd.
+       * gpgme.h (gpgme_passphrase_cb_t): Rewritten to take parts of the
+       description and fd.
+       (gpgme_edit_cb_t): Change last argument to int fd.
+       * ops.h (_gpgme_passphrase_command_handler_internal): New prototype.
+       * passphrase.c: Include <assert.h>.
+       (op_data_t): Rename userid_hint to uid_hint, remove last_pw_handle.
+       (release_op_data): Check values before calling free.
+       (_gpgme_passphrase_status_handler): Likewise.
+       (_gpgme_passphrase_command_handler_internal): New function.
+       (_gpgme_passphrase_command_handler): Rewritten.
+       * edit.c (edit_status_handler): Pass -1 as fd argument.
+       (command_handler): Update prototype.  New variable processed.  Use
+       it to store return value of
+       _gpgme_passphrase_command_handler_internal which is now used
+       instead _gpgme_passphrase_command_handler.  Use it also to check
+       if we should call the user's edit function.  Pass fd to user's
+       edit function.
+       * rungpg.c (struct gpg_object_s): Change type of cmd.cb_data to
+       void *.
+       (gpg_release): Check value before calling free.  Do not release
+       cmd.cb_data.
+       (command_cb): Function removed.
+       (command_handler): New function.  Thus we don't use a data object
+       for command handler stuff anymore, but handle it directly.  This
+       allows proper error reporting (cancel of passphrase requests, for
+       example).  Also all callbacks work via direct writes to the file
+       descriptor (so that passphrases are not kept in insecure memory).
+       (gpg_set_command_handler): Rewritten to use even more ugly hacks.
+       (read_status): Check cmd.keyword before calling free.  Install
+       command_handler as the I/O callback handler with GPG as private
+       data.
+
+       * rungpg.c (gpg_new): Add --enable-progress-filter to gpg
+       invocation.
+       * decrypt-verify.c (_gpgme_op_decrypt_verify_start): Rename to
+       decrypt_verify_start.
+       (gpgme_op_decrypt_verify_start): Call decrypt_verify_start.
+       (gpgme_op_decrypt_verify): Likewise.
+       * verify.c (verify_status_handler): New function that also calls
+       progress status handler.
+       (_gpgme_op_verify_start): Set status handler to verify_status_handler.
+       Rename to (verify_start).
+       (gpgme_op_verify_start): Call verify_start.
+       (gpgme_op_verify): Likewise.
+       * encrypt.c (encrypt_status_handler): New function.
+       (_gpgme_encrypt_sym_status_handler): Call progress status handler.
+       Make static.  Rename to encrypt_sym_status_handler.
+       (encrypt_start): Set status handler to encrypt_sym_status_handler
+       or encrypt_status_handler.
+       * sign.c (sign_status_handler): New function.
+       (sign_start): Set status handler to sign_status_handler.
+       * decrypt.c (decrypt_status_handler): New function that also calls
+       progress status handler.
+       (decrypt_start): Set status handler to decrypt_status_handler.
+       * encrypt-sign.c (encrypt_sign_status_handler): Likewise.
+       * decrypt-verify.c (decrypt_verify_status_handler): Call
+       _gpgme_progress_status_handler.
+
+       * conversion.c (_gpgme_decode_c_string): Add missing break
+       statement.
+
+       * recipient.c (gpgme_recipients_add_name_with_validity): Add one
+       to buffer to allocate.
+
+2003-05-19  Marcus Brinkmann  <marcus@g10code.de>
+
+       * verify.c (parse_new_sig): Fix ERRSIG case.
+       Submitted by Benjamin Lee <benjaminlee@users.sf.net>.
+
+2003-05-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h: The following types are renamed.  The old name is kept
+       as a deprecated typedef.
+       (GpgmeCtx): Rename to gpgme_ctx_t.
+       (GpgmeData): Rename to gpgme_data_t.
+       (GpgmeRecipients): Rename to gpgme_recipients_t.
+       (GpgmeError): Rename to gpgme_error_t.
+       (GpgmeDataEncoding): Rename to gpgme_data_encoding_t.
+       (GpgmePubKeyAlgo): Rename to gpgme_pubkey_algo_t.
+       (GpgmeHashAlgo): Rename to gpgme_hash_algo_t.
+       (GpgmeSigStat): Rename to gpgme_sig_stat_t.
+       (GpgmeSigMode): Rename to gpgme_sig_mode_t.
+       (GpgmeAttr): Rename to gpgme_attr_t.
+       (GpgmeValidity): Rename to gpgme_validity_t.
+       (GpgmeProtocol): Rename to gpgme_protocol_t.
+       (GpgmeStatusCode): Rename to gpgme_status_code_t.
+       (GpgmeEngineInfo): Rename to gpgme_engine_info_t.
+       (GpgmeSubkey): Rename to gpgme_subkey_t.
+       (GpgmeKeySig): Rename to gpgme_keysig_t.
+       (GpgmeUserID): Rename to gpgme_user_id_t.
+       (GpgmePassphraseCb): Rename to gpgme_passphrase_cb_t.
+       (GpgmeProgressCb): Rename to gpgme_progress_cb_t.
+       (GpgmeEditCb): Rename to gpgme_edit_cb_t.
+       (GpgmeIOCb): Rename to gpgme_io_cb_t.
+       (GpgmeRegisterIOCb): Rename to gpgme_register_io_cb_t.
+       (GpgmeRemoveIOCb): Rename to gpgme_remove_io_cb_t.
+       (GpgmeEventIO): Rename to gpgme_event_io_t.
+       (GpgmeEventIOCb): Rename to gpgme_event_io_cb_t.
+       (GpgmeIOCbs): Rename to gpgme_io_cbs.
+       (gpgme_io_cbs_t): New type.
+       (GpgmeDataReadCb): Rename to gpgme_data_read_cb_t.
+       (GpgmeDataWriteCb): Rename to gpgme_data_write_cb_t.
+       (GpgmeDataSeekCb): Rename to gpgme_data_seek_cb_t.
+       (GpgmeDataReleaseCb): Rename to gpgme_data_release_cb_t.
+       (GpgmeDataCbs): Rename to gpgme_data_cbs.
+       (gpgme_data_cbs_t): New type.
+       (GpgmeInvalidUserID): Rename to gpgme_invalid_user_id_t.
+       (GpgmeEncryptResult): Rename to gpgme_encrypt_result_t.
+       (GpgmeDecryptResult): Rename to gpgme_decrypt_result_t.
+       (GpgmeNewSignature): Rename to gpgme_new_signature_t.
+       (GpgmeSignResult): Rename to gpgme_sign_result_t.
+       (GpgmeSigNotation): Rename to gpgme_sig_notation_t.
+       (GpgmeSignature): Rename to gpgme_signature_t.
+       (GpgmeVerifyResult): Rename to gpgme_verify_result_t.
+       (GpgmeImportStatus): Rename to gpgme_import_status_t.
+       (GpgmeImportResult): Rename to gpgme_import_result_t.
+       (GpgmeGenKeyResult): Rename to gpgme_genkey_result_t.
+       (GpgmeKeyListResult): Rename to gpgme_keylist_result_t.
+       (GpgmeTrustItem): Rename to gpgme_trust_item_t.
+       * gpgme.h (gpgme_deprecated_error_t): New type, swallowing macros
+       GPGME_No_Recipients, GPGME_Invalid_Recipient and
+       GPGME_No_Passphrase.
+       * data.h (struct gpgme_data_s): Rename to struct gpgme_data.
+       * context.h (struct gpgme_context_s): Rename to struct
+       gpgme_context.
+       (struct gpgme_recipients_s): Rename to gpgme_recipients.
+
+2003-05-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * keylist.c (finish_key): Clear OPD->tmp_uid.
+
+2003-05-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * verify.c (_gpgme_verify_status_handler): Return GPGME_No_Data
+       for NODATA status without signatures.
+
+2003-05-05  Marcus Brinkmann  <marcus@g10code.de>
+
+       * key.c (_gpgme_key_append_name): Use decoded string to parse user id.
+       (_gpgme_key_add_sig): Likewise.
+
+2003-05-04  Marcus Brinkmann  <marcus@g10code.de>
+
+       * context.h (struct gpgme_context_s): Remove member op_info.
+
+       * key.c (_gpgme_key_add_sig): Initialize SIG->uid.
+
+       * gpgme.h (GpgmeError): Add deprecated values for
+       GPGME_Invalid_Type and GPGME_Invalid_Mode.
+
+2003-04-30  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpgme_get_op_info): Remove prototype.
+       * ops.h (_gpgme_set_op_info,
+       _gpgme_data_release_and_return_string, _gpgme_data_get_as_string,
+       _gpgme_data_append, _gpgme_data_append_string,
+       _gpgme_data_append_string_for_xml, _gpgme_data_append_for_xml,
+       _gpgme_data_append_percentstring_for_xml): Likewise.
+       (_gpgme_progress_status_handler): Change first arg to void *.
+       * progress.c (_gpgme_progress_status_handler): Likewise.
+       * conversion.c: Do not include <string.h>, <errno.h>, <ctype.h>,
+       and <sys/types.h>, but <string.h>.
+       (_gpgme_data_append): Remove function.
+       (_gpgme_data_append_string): Likewise.
+       (_gpgme_data_append_for_xml): Likewise.
+       (_gpgme_data_append_string_for_xml): Likewise.
+       (_gpgme_data_append_percentstring_for_xml): Likewise.
+       * data-mem.c (_gpgme_data_get_as_string): Likewise.
+       (_gpgme_data_release_and_return_string): Likewise.
+       * gpgme.c (gpgme_get_op_info): Likewise.
+       (_gpgme_set_op_info): Likewise.
+
+       * gpgme.h (struct _gpgme_key): New structure.
+       (GpgmeKey): Define using _gpgme_key.
+       (struct _gpgme_subkey): New structure.
+       (GpgmeSubKey): New type.
+       (struct _gpgme_key_sig): New structure.
+       (GpgmeKeySig): New type.
+       (struct _gpgme_user_id): New structure.
+       (GpgmeUserID): New type.
+       (struct _gpgme_op_keylist_result): New structure.
+       (GpgmeKeyListResult): New type.
+       (gpgme_op_keylist_result): New function.
+       (gpgme_key_get_as_xml): Remove prototype.
+       * context.h (struct gpgme_context_s): Remove members tmp_key,
+       tmp_uid, key_cond and key_queue.
+       (struct key_queue_item_s): Remove structure.
+       (struct user_id_s): Remove structure.
+       (struct gpgme_recipients_s): Replace with simple
+       GpgmeUserID list.
+       * gpgme.c (gpgme_release): Do not release CTX->tmp_key.
+       * ops.h (_gpgme_key_add_subkey, _gpgme_key_append_name,
+       _gpgme_key_add_sig, _gpgme_trust_item_new): New prototypes.
+       * rungpg.c (command_cb): Return GpgmeError instead int.
+       New variable ERR.  Use it to hold return value of cmd handler.
+       (gpg_delete): Access fingerprint of key directly.
+       (append_args_from_signers): Likewise.
+       (gpg_edit): Likewise.
+       (append_args_from_recipients): Use GpgmeUserID for recipient list.
+       * engine-gpgsm.c: Do not include "key.h".
+       (gpgsm_delete): Access fingerprint of key directly.
+       (gpgsm_sign): Likewise.
+       (set_recipients): Use GpgmeUserID for recipients.  Invert invalid
+       user ID flag.
+       * key.h: File removed.
+       * key.c: Completely reworked to use exposed GpgmeKey data types.
+       * keylist.c: Likewise.
+       * recipient.c: Completely reworked to use GpgmeUserID.
+
+2003-04-29  Marcus Brinkmann  <marcus@g10code.de>
+
+       * gpgme.h (gpgme_get_key): Remove force_update argument.
+       * key-cache.c: File removed.
+       * Makefile.am (libgpgme_la_SOURCES): Remove key-cache.c.
+       * ops.h (_gpgme_key_cache_add, _gpgme_key_cache_get): Remove
+       prototypes.
+       * keylist.c (_gpgme_op_keylist_event_cb): Don't call
+       _gpgme_key_cache_add.
+       (gpgme_get_key): New function.
+       * verify.c (gpgme_get_sig_key): Remove last argument to
+       gpgme_get_key invocation.
+
+       * gpgme.h (struct _gpgme_trust_item): New structure.
+       (GpgmeTrustItem): New type.
+       (gpgme_trust_item_ref, gpgme_trust_item_unref): New prototypes.
+       * context.h (struct trust_queue_item_s): Remove structure.
+       (struct gpgme_context_s): Remove trust_queue member.
+       * Makefile.am (libgpgme_la_SOURCES): Add trust-item.c.
+       * trust-item.c: New file.
+       * trustlist.c: Do not include <stdio.h> or <time.h>, but
+       "gpgme.h".
+       (struct trust_queue_item_s): Change to new type op_data_t.
+       (trust_status_handler): Change first argument to void *.
+       (trust_colon_handler): Likewise.
+       (_gpgme_op_trustlist_event_cb): Use op_data_t type.
+       (gpgme_op_trustlist_start): Use op_data_t and rework error
+       handling.
+       (gpgme_op_trustlist_next): Use op_data_t.
+       (gpgme_trust_item_release): Remove function.
+       (gpgme_trust_item_get_string_attr): Likewise.
+       (gpgme_trust_item_get_int_attr): Likewise.
+
+       * verify.c (calc_sig_summary): Do not set GPGME_SIGSUM_SYS_ERROR
+       for bad signatures.
+
+2003-04-28  Marcus Brinkmann  <marcus@g10code.de>
+
+       * context.h: Remove OPDATA_VERIFY_COLLECTING.
+       (struct gpgme_context_s): Remove member notation.
+       * gpgme.h: Make enum for GPGME_KEYLIST_MODE_* values.
+
+       * gpgme.h (struct _gpgme_sig_notation): New structure.
+       (GpgmeSigNotation): New type.
+       (struct _gpgme_signature): New structure.
+       (GpgmeSignature): New type.
+       (struct _gpgme_op_verify_result): New structure.
+       (GpgmeVerifyResult): New type.
+       (gpgme_op_verify_result): New prototype.
+       (gpgme_get_notation): Remove prototype.
+       * ops.h (_gpgme_op_verify_init_result): New prototype.
+       (_gpgme_verify_status_handler): Change first argument to void *.
+       * util.h (_gpgme_decode_percent_string, _gpgme_map_gnupg_error):
+       New prototypes.
+       * conversion.c (_gpgme_decode_percent_string): New function.
+       (gnupg_errors): New static global.
+       (_gpgme_map_gnupg_error): New function.
+       * gpgme.c (gpgme_release): Don't release CTX->notation.
+       (gpgme_get_notation): Remove function.
+       * decrypt-verify.c (_gpgme_op_decrypt_verify_start): Call
+       _gpgme_op_verify_init_result.
+       * verify.c: Do not include <stdio.h>, <assert.h> and "key.h", but
+       do include "gpgme.h".
+       (struct verify_result): Replace with ...
+       (op_data_t): ... this type.
+       (release_verify_result): Remove function.
+       (release_op_data): New function.
+       (is_token): Remove function.
+       (skip_token): Remove function.
+       (copy_token): Remove function.
+       (gpgme_op_verify_result): New function.
+       (calc_sig_summary): Rewritten.
+       (finish_sig): Remove function.
+       (parse_new_sig): New function.
+       (parse_valid_sig): New function.
+       (parse_notation): New function.
+       (parse_trust): New function.
+       (parse_error): New function.
+       (_gpgme_verify_status_handler): Rewritten.  Change first argument
+       to void *.
+       (_gpgme_op_verify_start): Rework error handling.  Call
+       _gpgme_op_verify_init_result.
+       (gpgme_op_verify): Do not release or clear CTX->notation.
+       (gpgme_get_sig_status): Rewritten.
+       (gpgme_get_sig_string_attr): Likewise.
+       (gpgme_get_sig_ulong_attr): Likewise.
+       (gpgme_get_sig_key): Likewise.
+
+       * gpgme.h (struct _gpgme_op_decrypt_result): New structure.
+       (GpgmeDecryptResult): New type.
+       (gpgme_op_decrypt_result): New prototype.
+       * ops.h (_gpgme_op_decrypt_init_result): New prototype.
+       (_gpgme_decrypt_status_handler): Fix prototype.
+       (_gpgme_decrypt_start): Remove prototype.
+       * decrypt-verify.c: Do not include <stdio.h>, <stdlib.h>,
+       <string.h> and <assert.h>, "util.h" and "context.h", but
+       "gpgme.h".
+       (decrypt_verify_status_handler): Change first argument to void *,
+       and rework error handling.
+       (_gpgme_op_decrypt_verify_start): New function.
+       (gpgme_op_decrypt_verify_start): Rewrite using
+       _gpgme_op_decrypt_verify_start.
+       (gpgme_op_decrypt_verify): Likewise.
+       * decrypt.c: Include <string.h>, "gpgme.h" and "util.h".
+       (struct decrypt_result): Change to typedef op_data_t, rewritten.
+       (is_token): Remove function.
+       (release_op_data): New function.
+       (skip_token): Remove function.
+       (gpgme_op_decrypt_result): New function.
+       (_gpgme_decrypt_status_handler): Change first argument to void *.
+       Rework error handling.
+       (_gpgme_decrypt_start): Rename to ...
+       (decrypt_start): ... this.  Call _gpgme_op_decrypt_init_result.
+       (_gpgme_op_decrypt_init_result): New function.
+       (gpgme_op_decrypt_start): Use decrypt_start.
+       (gpgme_op_decrypt): Likewise.
+
 2003-04-27  Marcus Brinkmann  <marcus@g10code.de>
 
+       * encrypt-sign.c: Do not include <stddef.h>, <stdio.h>,
+       <stdlib.h>, <string.h>, <assert.h> and "util.h", but "gpgme.h".
+       (_gpgme_op_encrypt_sign_start): Rename to ...
+       (encrypt_sign_start): ... this.
+       (gpgme_op_encrypt_sign_start): Use encrypt_sign_start, not
+       _gpgme_op_encrypt_sign_start.
+       (gpgme_op_encrypt_sign): Likewise.
+
        * gpgme.h (GpgmeEncryptResult): New data type.
        (gpgme_op_encrypt_result): New prototype.
        * ops.h (_gpgme_op_encrypt_init_result): New prototype.