be4ff75d7d
* src/gpgme.h.in (struct _gpgme_signature): Remove field 'tofu'. Add field 'key'. (struct _gpgme_key): Add field 'fpr'. (struct _gpgme_user_id): Add field 'tofu'. (struct _gpgme_tofu_info): Remove fields 'address' and 'fpr'. * src/key.c (gpgme_key_unref): Release TOFU and FPR. * src/keylist.c (keylist_colon_handler): Store the fingerprint of the first subkey also in KEY. * src/verify.c (release_tofu_info): Remove. (release_op_data): Release KEY. (parse_tofu_user): Rewrite for new data structure. (parse_tofu_stats): Ditto. (parse_tofu_stats_long): Ditto. * tests/run-verify.c (print_result): Ditto. * tests/run-keylist.c (main): Print more fields. -- TOFU information are now associated with the user ID and not with a separate object. Note that this breaks code relying on the former non-released TOFU feature. The C++ bindings won't work right now. Signed-off-by: Werner Koch <wk@gnupg.org>
192 lines
6.1 KiB
C
192 lines
6.1 KiB
C
/* ops.h - Internal operation support.
|
||
Copyright (C) 2000 Werner Koch (dd9jn)
|
||
Copyright (C) 2001, 2002, 2003, 2004, 2005 g10 Code GmbH
|
||
|
||
This file is part of GPGME.
|
||
|
||
GPGME is free software; you can redistribute it and/or modify it
|
||
under the terms of the GNU Lesser General Public License as
|
||
published by the Free Software Foundation; either version 2.1 of
|
||
the License, or (at your option) any later version.
|
||
|
||
GPGME is distributed in the hope that it will be useful, but
|
||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
Lesser General Public License for more details.
|
||
|
||
You should have received a copy of the GNU Lesser General Public
|
||
License along with this program; if not, write to the Free Software
|
||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||
02111-1307, USA. */
|
||
|
||
#ifndef OPS_H
|
||
#define OPS_H
|
||
|
||
#include "gpgme.h"
|
||
#include "context.h"
|
||
|
||
|
||
/* From gpgme.c. */
|
||
gpgme_error_t _gpgme_cancel_with_err (gpgme_ctx_t ctx, gpg_error_t ctx_err,
|
||
gpg_error_t op_err);
|
||
/* Clear all notation data from the context. */
|
||
void _gpgme_sig_notation_clear (gpgme_ctx_t ctx);
|
||
|
||
void _gpgme_release_result (gpgme_ctx_t ctx);
|
||
|
||
|
||
/* From wait.c. */
|
||
gpgme_error_t _gpgme_wait_one (gpgme_ctx_t ctx);
|
||
gpgme_error_t _gpgme_wait_one_ext (gpgme_ctx_t ctx, gpgme_error_t *op_err);
|
||
gpgme_error_t _gpgme_wait_on_condition (gpgme_ctx_t ctx, volatile int *cond,
|
||
gpgme_error_t *op_err);
|
||
|
||
|
||
/* From data.c. */
|
||
gpgme_error_t _gpgme_data_inbound_handler (void *opaque, int fd);
|
||
gpgme_error_t _gpgme_data_outbound_handler (void *opaque, int fd);
|
||
|
||
|
||
/* From op-support.c. */
|
||
|
||
/* Find or create the op data object of type TYPE. */
|
||
gpgme_error_t _gpgme_op_data_lookup (gpgme_ctx_t ctx, ctx_op_data_id_t type,
|
||
void **hook, int size,
|
||
void (*cleanup) (void *));
|
||
|
||
/* Prepare a new operation on CTX. */
|
||
gpgme_error_t _gpgme_op_reset (gpgme_ctx_t ctx, int synchronous);
|
||
|
||
/* Parse the KEY_CONSIDERED status line. */
|
||
gpgme_error_t _gpgme_parse_key_considered (const char *args,
|
||
char **r_fpr, unsigned int *r_flags);
|
||
|
||
/* Parse the INV_RECP status line in ARGS and return the result in
|
||
KEY. */
|
||
gpgme_error_t _gpgme_parse_inv_recp (char *args, int for_signing,
|
||
const char *kc_fpr, unsigned int kc_flags,
|
||
gpgme_invalid_key_t *key);
|
||
|
||
/* Parse the PLAINTEXT status line in ARGS and return the result in
|
||
FILENAMEP. */
|
||
gpgme_error_t _gpgme_parse_plaintext (char *args, char **filenamep);
|
||
|
||
/* Parse a FAILURE status line and return the error code. ARGS is
|
||
modified to contain the location part. */
|
||
gpgme_error_t _gpgme_parse_failure (char *args);
|
||
|
||
|
||
|
||
/* From verify.c. */
|
||
gpgme_error_t _gpgme_op_verify_init_result (gpgme_ctx_t ctx);
|
||
gpgme_error_t _gpgme_verify_status_handler (void *priv,
|
||
gpgme_status_code_t code,
|
||
char *args);
|
||
|
||
|
||
/* From decrypt.c. */
|
||
gpgme_error_t _gpgme_op_decrypt_init_result (gpgme_ctx_t ctx);
|
||
gpgme_error_t _gpgme_decrypt_status_handler (void *priv,
|
||
gpgme_status_code_t code,
|
||
char *args);
|
||
|
||
|
||
/* From signers.c. */
|
||
void _gpgme_signers_clear (gpgme_ctx_t ctx);
|
||
|
||
/* From sign.c. */
|
||
|
||
/* Create an initial op data object for signing. Needs to be called
|
||
once before calling _gpgme_sign_status_handler. */
|
||
gpgme_error_t _gpgme_op_sign_init_result (gpgme_ctx_t ctx);
|
||
|
||
/* Process a status line for signing operations. */
|
||
gpgme_error_t _gpgme_sign_status_handler (void *priv,
|
||
gpgme_status_code_t code,
|
||
char *args);
|
||
|
||
|
||
/* From encrypt.c. */
|
||
|
||
/* Create an initial op data object for encrypt. Needs to be called
|
||
once before calling _gpgme_encrypt_status_handler. */
|
||
gpgme_error_t _gpgme_op_encrypt_init_result (gpgme_ctx_t ctx);
|
||
|
||
/* Process a status line for encryption operations. */
|
||
gpgme_error_t _gpgme_encrypt_status_handler (void *priv,
|
||
gpgme_status_code_t code,
|
||
char *args);
|
||
|
||
|
||
/* From passphrase.c. */
|
||
gpgme_error_t _gpgme_passphrase_status_handler (void *priv,
|
||
gpgme_status_code_t code,
|
||
char *args);
|
||
gpgme_error_t _gpgme_passphrase_command_handler (void *opaque,
|
||
gpgme_status_code_t code,
|
||
const char *key, int fd,
|
||
int *processed);
|
||
|
||
|
||
/* From progress.c. */
|
||
gpgme_error_t _gpgme_progress_status_handler (void *priv,
|
||
gpgme_status_code_t code,
|
||
char *args);
|
||
|
||
|
||
/* From key.c. */
|
||
gpgme_error_t _gpgme_key_new (gpgme_key_t *r_key);
|
||
gpgme_error_t _gpgme_key_add_subkey (gpgme_key_t key,
|
||
gpgme_subkey_t *r_subkey);
|
||
gpgme_error_t _gpgme_key_append_name (gpgme_key_t key,
|
||
const char *src, int convert);
|
||
gpgme_key_sig_t _gpgme_key_add_sig (gpgme_key_t key, char *src);
|
||
|
||
|
||
|
||
/* From keylist.c. */
|
||
void _gpgme_op_keylist_event_cb (void *data, gpgme_event_io_t type,
|
||
void *type_data);
|
||
|
||
|
||
/* From trust-item.c. */
|
||
|
||
/* Create a new trust item. */
|
||
gpgme_error_t _gpgme_trust_item_new (gpgme_trust_item_t *r_item);
|
||
|
||
|
||
/* From trustlist.c. */
|
||
void _gpgme_op_trustlist_event_cb (void *data, gpgme_event_io_t type,
|
||
void *type_data);
|
||
|
||
|
||
/* From version.c. */
|
||
|
||
/* Return true if MY_VERSION is at least REQ_VERSION, and false
|
||
otherwise. */
|
||
int _gpgme_compare_versions (const char *my_version,
|
||
const char *req_version);
|
||
char *_gpgme_get_program_version (const char *const path);
|
||
|
||
|
||
/* From sig-notation.c. */
|
||
|
||
/* Create a new, empty signature notation data object. */
|
||
gpgme_error_t _gpgme_sig_notation_create (gpgme_sig_notation_t *notationp,
|
||
const char *name, int name_len,
|
||
const char *value, int value_len,
|
||
gpgme_sig_notation_flags_t flags);
|
||
|
||
/* Free the signature notation object and all associated resources.
|
||
The object must already be removed from any linked list as the next
|
||
pointer is ignored. */
|
||
void _gpgme_sig_notation_free (gpgme_sig_notation_t notation);
|
||
|
||
/* Parse a notation or policy URL subpacket. If the packet type is
|
||
not known, return no error but NULL in NOTATION. */
|
||
gpgme_error_t _gpgme_parse_notation (gpgme_sig_notation_t *notationp,
|
||
int type, int pkflags, int len,
|
||
char *data);
|
||
|
||
#endif /* OPS_H */
|