2005-09-01 Timo Schulz * w32-util.c (expand_path): New. (read_w32_registry_string): Use it here. * sign.c (file_sign_start): Allow multiple signers. This makes the code behave the same as sign_start. Suggested by Kurt. 2005-08-06 Timo Schulz * keycache-openpgp.c (parse_secring): Support to update a single key. (keycache_prepare2): Likewise. Fix memory leaks. (gpgme_keycache_prepare_single): New. Skip 0x of the keyid part if present. * keycache.c (_gpgme_keycache_find_key2): For internal use. * keylist.c (gpgme_op_keylist_start): Do not use -vvv -k but --check-sigs which generates the same output. Thanks to David. Only support a new bit flag to include signatures in the key listing. * import.c (_gpgme_release_import_result): Release second key list. 2005-08-04 Timo Schulz * keycache.c (gpgme_keycache_delete_key): Really delete the node and do not mark it. * data.c (gpgme_data_release_and_set_file): Before we release the memory, we overwrite it because the data could contain sentensive information. This does not give perfect security, but reduces the risk a little. * w32-clip.c (gpgme_data_release_and_set_clipboard): Likewise. import.c (gpgme_get_import_status): If we are in interactive mode, we return the list of imported keys the user selected. Otherwise we return all imported keys. * import.c (import_status_handler): Support for IMPORT_OK. * keycache-openpgp.c (gpgme_keycache_prepare): Check all alloc results. 2005-08-03 Timo Schulz * delete.c (get_delete_result): New. (gpgme_op_delete): Use it here. (gpgme_op_delete_keys): Just spawn one GPG instance to delete multilple keys. * key.c (pkalgo_to_string): Fixed wrong IDs. * gpgme.c (gpgme_new): Use AES as default. 2005-07-22 Timo Schulz * gpgme.c (_gpgme_add_comment): Forgot to alloc an extra byte for the '0'. This fixes a lot of crashes related to file operations. * keylist.c (gpgme_op_keylist_getkey): Use the param for 'pub' or 'sec' mode. * keycache.c (gpgme_keycache_update_key): If the key is not in the cache, add it and if the cache contain secret key, sync it with the pub cache. * editkey.c (edit_key_colon_handler): Allocate 1 byte for the NUL-char. This also fixes a lot of reported crashes related to the showpref feature. 2005-05-20 Timo Schulz * gpgme.h: s/cliptype/pgptype. Suggested by Kurt Fitzner. s/CLIP/PGP. Likewise. * w32-io.c (_gpgme_io_select): Increment the right loop variable. Kudos to Kurt. * keylist.c (gpgme_op_keylist_getkey): New. Handy function to retrieve a single key. * verify.c (gpgme_get_sig_key): Use it here. * keycache.c (gpgme_keycache_update_key): Update a single key. 2005-05-12 Timo Schulz * key.c (gpgme_key_get_ulong_attr#GPGME_ATTR_KEY_USABLE): Also check if the key is disabled. 2005-03-22 Timo Schulz * editcard.c: Support new status-fd entries SC_OP_SUCCESS and SC_OP_FAILURE. * editkey.c (cmd_addrev_handler): Check if context != NULL. * import.c (import_command_handler): Wrong function signature. Noted by Kurt Fitzner. * types.h: Fixed encrypt_result_s. Noted by Kurt. * gpgme.h (gpgme_editkey_addrev_set): Changed return type. Kudos to Kurt. * key.c: Removed some unreachable code. By Kurt. 2005-01-07 Timo Schulz * gpgme.c (gpgnme_lib_cleanup): New. Cleanup all static locks. (gpgme_lib_init): New. * editkey.c (editkey_start): Use --ask-cert-level. Noted by a friendly user. 2004-10-07 Timo Schulz * editcard.c (editcard_start): Remove '--allow-admin' since GPG 1.3.90 has another interface. (editcard_command_handler): Support 'backup' question. * gpgme.h: Add card flags. * editkey.c (edit_key_colon_handler): Decode the name. 2004-08-24 Timo Schulz * key.c (gpgme_key_release): Release user-id hash if possible. 2004-08-20 Timo Schulz * editkey-util.c (gpgme_editkey_delsig_set): New. * editkey.c (check_edit_cmd): New. (cmd_delsig_handler): New. 2004-07-13 Timo Schulz * common-status.c (_gpgme_nodata_status_handler): New. (_gpgme_pass_status_handler): New. (_gpgme_sigtrust_status_handler): New. 2004-05-11 Timo Schulz * key.c (_gpgme_key_append_name): Return user-id pointer. Changed all callers. * keylist.c (keylist_colon_handler): Implemented new code. This fixed a problem with wrong user-id validities. 2003-12-23 Timo Schulz * verify.c, rungpg.c: Removed all pipemode code. It was never used and in newer version of GPG it is declared as 'obselete'. 2003-01-07 Timo Schulz * Removed all code for the primary user-id flag. Werner reminded me that the primary user-id is always the first in the colon mode. 2002-12-14 Timo Schulz * verify.c (verify_get_sig_date): Workaround because GPG does not return a valid timestam for bad signatures. 2002-10-15 Timo Schulz * datamisc.c: Removed. Merged stuff into data.c * file.c, file-xxx.c: Removed * keylist.c (parse_colon_line): Support for subkey fingerprints. * clipboard. (gpgme_op_verify_clipboard): Fix an error when a subkey was used for signing. 2002-10-13 Timo Schulz * siglist.c: Removed. Now we use the key directly to list the signatures. This is much easier and it will help us to implement the planned key manager style. 2002-09-23 Timo Schulz * keycache.c (gpgme_keycache_prepare): Added support to detect primary userID's. (uid_set_primary): New. 2002-09-17 Timo Schulz * Removed the --verbose support, we don't need it. 2002-09-14 Timo Schulz * implist.c (gpgme_impkey_release): Release the userid. 2001-05-28 Werner Koch * version.c (gpgme_check_engine): Stop version number parsing at the opening angle and not the closing one. By Tommy Reynolds. 2001-05-01 José Carlos García Sogo * encrypt.c (gpgme_op_encrypt_start): Deleted the assert ( !c->gpg ) line, because it gave an error if another operation had been made before using the same context. * decrypt.c (gpgme_op_decrypt_start): The same as above. Also added one line to release the gpg object in the context (if any). 2001-04-26 Werner Koch * key.c, key.h (_gpgme_key_cache_init): New. (_gpgme_key_cache_add): New. (_gpgme_key_cache_get): New. * version.c (do_subsystem_inits): Init the cache. * keylist.c (finish_key): Put key into the cache * verify.c (gpgme_get_sig_key): First look into the cache. 2001-04-19 Werner Koch * keylist.c (parse_timestamp): Adjusted for the changed --fixed-list-mode of gpg 1.0.4h. 2001-04-05 Werner Koch * verify.c (gpgme_op_verify_start): Enabled pipemode for detached sigs. 2001-04-04 Werner Koch * w32-io.c (_gpgme_io_select): Don't select on the writer if there are still bytes pending. Timo found this not easy to track down race condition. 2001-04-02 Werner Koch * gpgme.h: Add GPGME_ATTR_KEY_{EXPIRED,DISABLED}. * key.c (gpgme_key_get_ulong_attr): And return those attribs. * verify.c (gpgme_get_sig_key): Set keyliosting mode depending on the mode set in the current context. Suggested by Timo. * key.c (gpgme_key_get_ulong_attr): Return can_certify and not can_encrypt. By Timo. 2001-03-30 Werner Koch * debug.c (debug_init): Allow to specify a debug file. (_gpgme_debug_level): New. * posix-io.c (_gpgme_io_read, _gpgme_io_write): Print output. (_gpgme_io_select): Debug only with level > 2. 2001-03-15 Werner Koch * rungpg.c: Included time.h. * key.h: New keyflags for capabilities. * keylist.c (set_mainkey_capability, set_subkey_capability): New. (keylist_colon_handler): Parse them. * gpgme.h: New attribute values for capabilties. * key.c (gpgme_key_get_string_attr): Return them. (capabilities_to_string): New. (gpgme_key_get_ulong_attr): Return the global caps. 2001-03-14 Werner Koch * w32-io.c (destroy_reader,destroy_writer): Fixed syntax error. Thanks to Jan Oliver Wagner. 2001-03-13 Werner Koch * context.h: Add invalid and revoke flags to user_id structure. * keylist.c (gpgme_op_keylist_start): Use --fixed-list-mode. (keylist_colon_handler): Adjust for that. (set_userid_flags): New. (set_mainkey_trust_info): Handle new key invalid flag (set_subkey_trust_info): Ditto. * gpgme.h: Add new attributes for key and user ID flags. * key.c (_gpgme_key_append_name): Init these flags (gpgme_key_get_as_xml): Print them. (one_uid_as_xml): New helper for above. (gpgme_key_get_string_attr, gpgme_key_get_ulong_attr): Return the new attributes. Enhanced, so that subkey information can be returned now. 2001-02-28 Werner Koch * w32-io.c (destroy_reader): Set stop_me flag. (writer,create_writer,destroy_writer,find_writer,kill_writer): New. (_gpgme_io_write): Use a writer thread to avaoid blocking. (_gpgme_io_close): Cleanup a writer thread (_gpgme_io_select): Repalce tthe faked wait on writing by a real waiting which is now possible due to the use of a writer thread. 2001-02-20 Werner Koch * w32-io.c (destroy_reader,kill_reader): New. (create_reader, reader): Add a new event to stop the thread. (_gpgme_io_close): Kill the reader thread. * posix-io.c (_gpgme_io_select): Handle frozen fds here. * 32-io.c (_gpgme_io_select): Ditto. Removed a bunch of unused code. * wait.c: Reworked the whole thing. * rungpg.c (_gpgme_gpg_new): Init pid to -1. (_gpgme_gpg_release): Remove the process from the wait queue. 2001-02-19 Werner Koch * w32-io.c (_gpgme_io_set_close_notify): New. (_gpgme_io_close): Do the notification. * posix-io.c (_gpgme_io_select): Use a 1 sec timeout and not 200 microseconds. * wait.c (remove_process): Don't close the fd here. (do_select): Set the fd to -1 and remove the is_closed flag everywhere. (_gpgme_wait_on_condition): Remove the assert on the queue and break out if we could not find the queue. The whole thing should be reworked. * posix-io.c (_gpgme_io_set_close_notify): New. (_gpgme_io_close): Do the notification. * rungpg.c (close_notify_handler): New. (_gpgme_gpg_new): Register a callback for the fd. (_gpgme_gpg_set_colon_line_handler): Ditto. (build_argv): Ditto 2001-02-13 Werner Koch * rungpg.c (struct reap_s): Replaced pid_t by int. * types.h: Add ulong typedef. * rungpg.c (do_reaping,_gpgme_gpg_housecleaning): New. (_gpgme_gpg_release): Reap children. * io.h, posix-io.c (_gpgme_io_kill): New. * w32-io.c (_gpgme_io_kill): New (dummy). * keylist.c (gpgme_op_keylist_start): Cancel a pending request. * posix-io.c (_gpgme_io_read): Add some debug output. (_gpgme_io_write): Ditto. (_gpgme_io_select): Increased the timeout. 2001-02-12 Werner Koch Enhanced the signature verification, so that it can how handle more than one signature and is able to return more information on the signatures. * verify.c (gpgme_get_sig_key): New. (gpgme_get_sig_status): New. * gpgme.h: Add stdio.h. (GpgmeSigStat): New status DIFF. 2001-02-01 Werner Koch * w32-io.c (set_synchronize): Add EVENT_MODIFY_STATE. Add Debug code to all Set/ResetEvent(). * rungpg.c (read_status): Check for end of stream only if we have an r. By Timo. 2001-01-31 Werner Koch * wait.c (_gpgme_wait_on_condition): Removed all exit code processing. (propagate_term_results,clear_active_fds): Removed. (count_active_fds): Renamed to .. (count_active_and_thawed_fds): .. this and count only thawed fds. * rungpg.c (gpg_colon_line_handler): Return colon.eof and not status.eof ;-) 2001-01-30 Werner Koch * w32-io.c (_gpgme_io_spawn): Use the supplied path arg. * version.c (get_engine_info): Return better error information. * posix-util.c, w32-util.c: New. (_gpgme_get_gpg_path): New, suggested by Jan-Oliver. * rungpg.c (_gpgme_gpg_spawn): Use new function to get GPG's path. * signers.c (gpgme_signers_add): Ooops, one should test code and not just write it; the newarr was not assigned. Thanks to José for pointing this out. Hmmm, still not tested, why shoudl a coder test his fix :-) * w32-io.c: Does now use reader threads, so that we can use WaitForMultipleObjects. * sema.h, posix-sema.c, w32-sema.c: Support for Critcial sections. Does currently only work for W32. * debug.c, util.h : New. Changed all fprintfs to use this new set of debugging functions. 2001-01-23 Werner Koch * data.c (_gpgme_data_release_and_return_string): Fixed string termination. 2001-01-22 Werner Koch * delete.c: New. * signers.c: New. * key.c (gpgme_key_ref, gpgme_key_unref): New. * sign.c (gpgme_op_sign_start): Allow the use of other keys. * version.c (gpgme_get_engine_info,gpgme_check_engine): New. * rungpg.c (_gpgme_gpg_set_simple_line_handler): New. 2001-01-05 Werner Koch * data.c (gpgme_data_rewind): Allow to rewind data_type_none.