* configure.ac: Bumbed LT_Revision; now at C12/A1/R1.
(NEED_GPGSM_VERSION): Set to 1.9.3.
* sign.c: Include util.h for prototype of _gpgme_parse_timestamp.
* gpg/t-keylist-sig.c (main): Temporary disabled one test due top
gpg 1.3.4 problems.
* gpg/t-import.c (check_result): Likewise.
2003-12-25 Marcus Brinkmann <marcus@g10code.de>
* gpgme.texi (Key Management): Rename member class in
gpgme_key_sig_t to sig_class.
(Creating a Signature): Likewise for gpgme_signature_t.
gpgme/
2003-12-25 Marcus Brinkmann <marcus@g10code.de>
* gpgme.h (_GPGME_D_CLASS): Revert this change.
(struct _gpgme_key_sig): For C++ compilers, rename class
member to _obsolete_class. Add new member sig_class.
(struct _gpgme_new_signature): Same here.
* key.c (gpgme_key_sig_get_ulong_attr): Use CERTSIG->sig_class,
not CERTSIG->class.
* keylist.c (keylist_colon_handler): Likewise for KEYSIG, but keep
setting KEYSIG->class, too. Rename variable CLASS to SIG_CLASS.
* sign.c (parse_sig_created): Set SIG->sig_class.
* gpg/t-verify.c (check_result): Rewrote test for notations
because the order of notaions is not guaranteed.
* gpgsm/t-support.h (fail_if_err): Also print the numeric values.
(atoi_1, atoi_2, atoi_4): New.
* keylist.c (parse_timestamp): Removed. Changed all callers to use
the new function.
* verify.c (parse_valid_sig): Ditto. Repalced the errno check.
* sign.c (parse_sig_created): Ditto.
2003-10-06 Marcus Brinkmann <marcus@g10code.de>
* gpgme.texi (Signal Handling): New section.
gpgme/
2003-10-06 Marcus Brinkmann <marcus@g10code.de>
* io.h (_gpgme_io_subsystem_init): New prototype.
* posix-io.c (_gpgme_io_subsystem_init): Add function.
(_gpgme_io_spawn): Do not fixup signal handler here.
* version.c (do_subsystem_inits): Call _gpgme_io_subsystem_init.
tests/
2003-10-06 Marcus Brinkmann <marcus@g10code.de>
* gpg/t-thread1.c (thread_one): Do not call initialize_gpgme.
Likewise.
* ath.h [HAVE_SYS_SELECT_H]: Include <sys/select.h> for fd_set.
[!HAVE_SYS_SELECT_H]: Include <sys/time.h>.
* conversion.c (_gpgme_hextobyte): Drop "unsigned" from type of
SRC argument.
* util.h (_gpgme_hextobyte): Likewise for prototype.
* gpgme.h: Remove trailing comma in enum.
* gpgme.c (gpgme_hash_algo_name): Change name of RMD160 to
RIPEMD160, name of TIGER to TIGER192, name of CRC32-RFC1510 to
CRC32RFC1510, and name of CRC24-RFC2440 to CRC24RFC2440.
*configure.ac (AM_PATH_GPG_ERROR): Require 0.3.
assuan/
See README.1st.
gpgme/
2003-08-19 Marcus Brinkmann <marcus@g10code.de>
The ath files (ath.h, ath.c, ath-pth.c, ath-pthread.c,
ath-compat.c, ath-pth-compat.c and ath-pthread-compat.c) have been
updated to have better thread support, and the Makefile.am was
changed to reflect that.
* util.h [!HAVE_FOPENCOOKIE]: Remove fopencookie declaration.
* engine-gpgsm.c (gpgsm_assuan_simple_command): Set ERR to return
value of status_fnc.
* rungpg.c (start): Return SAVED_ERRNO, not errno.
*configure.ac (AM_PATH_GPG_ERROR): Require 0.3.
assuan/
See README.1st.
gpgme/
2003-08-19 Marcus Brinkmann <marcus@g10code.de>
The ath files (ath.h, ath.c, ath-pth.c, ath-pthread.c,
ath-compat.c, ath-pth-compat.c and ath-pthread-compat.c) have been
updated to have better thread support, and the Makefile.am was
changed to reflect that.
* util.h [!HAVE_FOPENCOOKIE]: Remove fopencookie declaration.
* engine-gpgsm.c (gpgsm_assuan_simple_command): Set ERR to return
value of status_fnc.
* rungpg.c (start): Return SAVED_ERRNO, not errno.
* configure.ac: If building Assuan, check for funopen and
fopencookie, and make isascii, putc_unlocked and memrchr
replacement functions.
assuan/
Update to the latest assuan version.
gpgme/
2003-08-18 Marcus Brinkmann <marcus@g10code.de>
* funopen.c, putc_unlocked.c, isascii.c, memrchr.c: New files.
* fopencookie.c: File removed.
2003-08-14 Marcus Brinkmann <marcus@g10code.de>
* gpgme.texi (Creating a Signature): Change type of member class
to unsigned int.
gpgme/
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.
tests/
2003-08-14 Marcus Brinkmann <marcus@g10code.de>
* gpg/t-sign.c (check_result): Change output format for signature
class to unsigned int.
2003-08-04 Marcus Brinkmann <marcus@g10code.de>
* gpgme.texi (Verify): Get error code from SIG->status in the code
for gpgme_get_sig_status.
gpgme/
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.texi (Listing Keys): Document GPG_ERR_AMBIGUOUS_NAME for
gpgme_get_key.
gpgme/
2003-07-31 Marcus Brinkmann <marcus@g10code.de>
* keylist.c (gpgme_get_key): Check if there is more than one key
listed, and return GPG_ERR_AMBIGUOUS_NAME in that case.
* gpg/t-verify.c (check_result): Change type of SUMMARY to
unsigned int.
* gpg/t-decrypt-verify.c (check_verify_result): Likewise.
* gpg/t-keylist-sig.c (keys): Change type of member CLASS to
unsigned int.
* t-data.c (read_cb): Change type of AMOUNT to unsigned int.
* t-version.c (version): Remove unused variable.
* 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.
* gpgme.texi (Encrypting a Plaintext): Bad passphrase is only
possible with symmetric encryption, change the wording to reflect
that.
* gpgme.texi (Creating a Signature): Document
GPG_ERR_UNUSABLE_SECKEY.
* gpgme.texi (Key Listing Mode): Remove word duplication.
(Listing Keys): Remove mentioning of force argument.
(Verify): Don't mention r_stat. Fix some typos.
(Decrypt and Verify): Correct info how to get the result. Don't
mention r_stat.
(Manipulating Data Buffers): Fix documentation of return value.
(Listing Keys): Update examples.
(Decrypt): Result might also be available when operation failed.
(Verify): Result might also be available when operation failed.
All spotted by St�phane Corth�sy.
* gpgme.texi (Key Management): Clarify difference between can_sign
and can_certify.
(Information About Keys): Likewise for GPGME_ATTR_CAN_SIGN and
GPGME_ATTR_CAN_CERTIFY.
2003-05-29 Marcus Brinkmann <marcus@g10code.de>
* gpgme.texi (Exporting Keys): Change and document prototypes.
Add new gpgme_op_export_ext and gpgme_op_export_ext_start
variants.
(Selecting Recipients): Section removed.
(Encrypting a Plaintext): Change prototypes and document the
changes.
gpgme/
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.
tests/
2003-05-29 Marcus Brinkmann <marcus@g10code.de>
* gpg/t-encrypt-sym.c (main): Adapt to new syntax.
* gpg/t-encrypt.c (main): Likewise.
* gpg/t-eventloop.c (main): Likewise.
* gpg/t-encrypt-sign.c (main): Likewise.
* gpgsm/t-export.c (main): Likewise.
* gpgsm/t-encrypt.c (main): Likewise.
* 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.
* gpg/Makefile.am (TESTS): Order t-keylist and t-keylist-sig after
t-import.
* gpg/t-edit.c (edit_fnc): Work around gpg 1.2.2 bug by resetting
primary uid after setting expiration date.
* gpg/t-keylist.c: Change order of user IDs.
* gpg/t-keylist-sig.c: Likewise.
* gpg/t-import.c: Add support for gpg in CVS.
2003-05-27 Marcus Brinkmann <marcus@g10code.de>
* gpgme.texi (Passphrase Callback): Document new prototype.
gpgme/
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.
tests/
2003-05-27 Marcus Brinkmann <marcus@g10code.de>
* (t-decrypt-verify.c, t-decrypt.c, t-edit.c, t-encrypt-sign.c,
t-encrypt-sym.c, t-sign.c, t-signers.c): Include <unistd.h>.
(passphrase_cb): Rewritten.
* t-edit.c (edit_fnc): Rewritten.
* configure.ac (NEED_GPG_VERSION): Bump up to 1.2.2.
gpgme/
2003-05-26 Marcus Brinkmann <marcus@g10code.de>
* 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.
In all files, replace the Gpgme* type names with the new gpgme_*
type names.
doc/
2003-05-18 Marcus Brinkmann <marcus@g10code.de>
* gpgme.texi (Header): Remove Gpgme as namespace prefix. Add
_GPGME to namespace prefix.
* gpgme.texi (Multi Threading): Add note about link order.
gpgme/
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.