aboutsummaryrefslogtreecommitdiffstats
path: root/g10/app-common.h
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2005-05-20 20:37:08 +0000
committerWerner Koch <[email protected]>2005-05-20 20:37:08 +0000
commitbd644c8d45ff2903625edb8b41bffcb6a8a69b85 (patch)
treed9a7fedf142c24fb6b48f719d70a90bb3b192cd4 /g10/app-common.h
parent* gpg.sgml: Document --default-sig-expire and --default-cert-expire, (diff)
downloadgnupg-bd644c8d45ff2903625edb8b41bffcb6a8a69b85.tar.gz
gnupg-bd644c8d45ff2903625edb8b41bffcb6a8a69b85.zip
(ccid_transceive): Arghhh. The seqno is another
bit in the R-block than in the I block, this was wrong at one place. Fixes bug #419 and hopefully several others.
Diffstat (limited to 'g10/app-common.h')
-rw-r--r--g10/app-common.h126
1 files changed, 73 insertions, 53 deletions
diff --git a/g10/app-common.h b/g10/app-common.h
index 48bd349f4..f1058dda1 100644
--- a/g10/app-common.h
+++ b/g10/app-common.h
@@ -1,5 +1,5 @@
/* app-common.h - Common declarations for all card applications
- * Copyright (C) 2003 Free Software Foundation, Inc.
+ * Copyright (C) 2003, 2005 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -23,10 +23,15 @@
#ifndef GNUPG_SCD_APP_COMMON_H
#define GNUPG_SCD_APP_COMMON_H
-#if GNUPG_MAJOR_VERSION != 1
-#include <ksba.h>
+#if GNUPG_MAJOR_VERSION == 1
+# ifdef ENABLE_AGENT_SUPPORT
+# include "assuan.h"
+# endif
+#else
+# include <ksba.h>
#endif
+
struct app_local_s; /* Defined by all app-*.c. */
struct app_ctx_s {
@@ -35,6 +40,15 @@ struct app_ctx_s {
unsupported operations the particular
function pointer is set to NULL */
int slot; /* Used reader. */
+
+ /* If this is used by GnuPG 1.4 we need to know the assuan context
+ in case we need to divert the operation to an already running
+ agent. This if ASSUAN_CTX is not NULL we take this as indication
+ that all operations are diverted to gpg-agent. */
+#if GNUPG_MAJOR_VERSION == 1 && defined(ENABLE_AGENT_SUPPORT)
+ assuan_context_t assuan_ctx;
+#endif /*GNUPG_MAJOR_VERSION == 1*/
+
unsigned char *serialno; /* Serialnumber in raw form, allocated. */
size_t serialnolen; /* Length in octets of serialnumber. */
const char *apptype;
@@ -46,54 +60,56 @@ struct app_ctx_s {
struct app_local_s *app_local; /* Local to the application. */
struct {
void (*deinit) (app_t app);
- int (*learn_status) (app_t app, ctrl_t ctrl);
- int (*readcert) (app_t app, const char *certid,
+ gpg_error_t (*learn_status) (app_t app, ctrl_t ctrl);
+ gpg_error_t (*readcert) (app_t app, const char *certid,
unsigned char **cert, size_t *certlen);
- int (*getattr) (app_t app, ctrl_t ctrl, const char *name);
- int (*setattr) (app_t app, const char *name,
- int (*pincb)(void*, const char *, char **),
+ gpg_error_t (*readkey) (app_t app, const char *certid,
+ unsigned char **pk, size_t *pklen);
+ gpg_error_t (*getattr) (app_t app, ctrl_t ctrl, const char *name);
+ gpg_error_t (*setattr) (app_t app, const char *name,
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg,
const unsigned char *value, size_t valuelen);
- int (*sign) (app_t app,
+ gpg_error_t (*sign) (app_t app,
const char *keyidstr, int hashalgo,
- int (pincb)(void*, const char *, char **),
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg,
const void *indata, size_t indatalen,
unsigned char **outdata, size_t *outdatalen );
- int (*auth) (app_t app, const char *keyidstr,
- int (*pincb)(void*, const char *, char **),
+ gpg_error_t (*auth) (app_t app, const char *keyidstr,
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg,
const void *indata, size_t indatalen,
unsigned char **outdata, size_t *outdatalen);
- int (*decipher) (app_t app, const char *keyidstr,
- int (pincb)(void*, const char *, char **),
+ gpg_error_t (*decipher) (app_t app, const char *keyidstr,
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg,
const void *indata, size_t indatalen,
unsigned char **outdata, size_t *outdatalen);
- int (*genkey) (app_t app, ctrl_t ctrl,
+ gpg_error_t (*genkey) (app_t app, ctrl_t ctrl,
const char *keynostr, unsigned int flags,
- int (*pincb)(void*, const char *, char **),
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg);
- int (*change_pin) (app_t app, ctrl_t ctrl,
+ gpg_error_t (*change_pin) (app_t app, ctrl_t ctrl,
const char *chvnostr, int reset_mode,
- int (*pincb)(void*, const char *, char **),
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg);
- int (*check_pin) (app_t app, const char *keyidstr,
- int (pincb)(void*, const char *, char **),
+ gpg_error_t (*check_pin) (app_t app, const char *keyidstr,
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg);
} fnc;
};
#if GNUPG_MAJOR_VERSION == 1
-int app_select_openpgp (app_t app);
-int app_get_serial_and_stamp (app_t app, char **serial, time_t *stamp);
-int app_openpgp_storekey (app_t app, int keyno,
+gpg_error_t app_select_openpgp (app_t app);
+gpg_error_t app_get_serial_and_stamp (app_t app, char **serial, time_t *stamp);
+gpg_error_t app_openpgp_storekey (app_t app, int keyno,
unsigned char *template, size_t template_len,
time_t created_at,
const unsigned char *m, size_t mlen,
const unsigned char *e, size_t elen,
- int (*pincb)(void*, const char *, char **),
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg);
#else
/*-- app-help.c --*/
@@ -102,75 +118,79 @@ size_t app_help_read_length_of_cert (int slot, int fid, size_t *r_certoff);
/*-- app.c --*/
-app_t select_application (ctrl_t ctrl, int slot, const char *name);
+gpg_error_t select_application (ctrl_t ctrl, int slot, const char *name,
+ app_t *r_app);
void release_application (app_t app);
-int app_munge_serialno (app_t app);
-int app_get_serial_and_stamp (app_t app, char **serial, time_t *stamp);
-int app_write_learn_status (app_t app, ctrl_t ctrl);
-int app_readcert (app_t app, const char *certid,
+gpg_error_t app_munge_serialno (app_t app);
+gpg_error_t app_get_serial_and_stamp (app_t app, char **serial, time_t *stamp);
+gpg_error_t app_write_learn_status (app_t app, ctrl_t ctrl);
+gpg_error_t app_readcert (app_t app, const char *certid,
unsigned char **cert, size_t *certlen);
-int app_getattr (app_t app, ctrl_t ctrl, const char *name);
-int app_setattr (app_t app, const char *name,
- int (*pincb)(void*, const char *, char **),
+gpg_error_t app_readkey (app_t app, const char *keyid,
+ unsigned char **pk, size_t *pklen);
+gpg_error_t app_getattr (app_t app, ctrl_t ctrl, const char *name);
+gpg_error_t app_setattr (app_t app, const char *name,
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg,
const unsigned char *value, size_t valuelen);
-int app_sign (app_t app, const char *keyidstr, int hashalgo,
- int (pincb)(void*, const char *, char **),
+gpg_error_t app_sign (app_t app, const char *keyidstr, int hashalgo,
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg,
const void *indata, size_t indatalen,
unsigned char **outdata, size_t *outdatalen );
-int app_auth (app_t app, const char *keyidstr,
- int (*pincb)(void*, const char *, char **),
+gpg_error_t app_auth (app_t app, const char *keyidstr,
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg,
const void *indata, size_t indatalen,
unsigned char **outdata, size_t *outdatalen);
-int app_decipher (app_t app, const char *keyidstr,
- int (pincb)(void*, const char *, char **),
+gpg_error_t app_decipher (app_t app, const char *keyidstr,
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg,
const void *indata, size_t indatalen,
unsigned char **outdata, size_t *outdatalen );
-int app_genkey (app_t app, ctrl_t ctrl,
+gpg_error_t app_genkey (app_t app, ctrl_t ctrl,
const char *keynostr, unsigned int flags,
- int (*pincb)(void*, const char *, char **),
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg);
-int app_get_challenge (app_t app, size_t nbytes, unsigned char *buffer);
-int app_change_pin (app_t app, ctrl_t ctrl,
+gpg_error_t app_get_challenge (app_t app, size_t nbytes,
+ unsigned char *buffer);
+gpg_error_t app_change_pin (app_t app, ctrl_t ctrl,
const char *chvnostr, int reset_mode,
- int (*pincb)(void*, const char *, char **),
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg);
-int app_check_pin (app_t app, const char *keyidstr,
- int (*pincb)(void*, const char *, char **),
+gpg_error_t app_check_pin (app_t app, const char *keyidstr,
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg);
/*-- app-openpgp.c --*/
-int app_select_openpgp (app_t app);
+gpg_error_t app_select_openpgp (app_t app);
-int app_openpgp_cardinfo (app_t app,
+gpg_error_t app_openpgp_cardinfo (app_t app,
char **serialno,
char **disp_name,
char **pubkey_url,
unsigned char **fpr1,
unsigned char **fpr2,
unsigned char **fpr3);
-int app_openpgp_storekey (app_t app, int keyno,
+gpg_error_t app_openpgp_storekey (app_t app, int keyno,
unsigned char *template, size_t template_len,
time_t created_at,
const unsigned char *m, size_t mlen,
const unsigned char *e, size_t elen,
- int (*pincb)(void*, const char *, char **),
+ gpg_error_t (*pincb)(void*, const char *, char **),
void *pincb_arg);
-int app_openpgp_readkey (app_t app, int keyno,
+gpg_error_t app_openpgp_readkey (app_t app, int keyno,
unsigned char **m, size_t *mlen,
unsigned char **e, size_t *elen);
/*-- app-nks.c --*/
-int app_select_nks (app_t app);
+gpg_error_t app_select_nks (app_t app);
/*-- app-dinsig.c --*/
-int app_select_dinsig (app_t app);
+gpg_error_t app_select_dinsig (app_t app);
/*-- app-p15.c --*/
-int app_select_p15 (app_t app);
+gpg_error_t app_select_p15 (app_t app);
#endif