1
/* app-common.h - Common declarations for all card applications
2
* Copyright (C) 2003 Free Software Foundation, Inc.
4
* This file is part of GnuPG.
6
* GnuPG is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
11
* GnuPG is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20
* $Id: app-common.h,v 1.6 2004/10/20 09:39:56 wk Exp $
23
#ifndef GNUPG_SCD_APP_COMMON_H
24
#define GNUPG_SCD_APP_COMMON_H
26
#if GNUPG_MAJOR_VERSION != 1
30
struct app_local_s; /* Defined by all app-*.c. */
33
int initialized; /* The application has been initialied and the
34
function pointers may be used. Note that for
35
unsupported operations the particular
36
function pointer is set to NULL */
37
int slot; /* Used reader. */
38
unsigned char *serialno; /* Serialnumber in raw form, allocated. */
39
size_t serialnolen; /* Length in octets of serialnumber. */
41
unsigned int card_version;
43
int force_chv1; /* True if the card does not cache CHV1. */
46
struct app_local_s *app_local; /* Local to the application. */
48
void (*deinit) (app_t app);
49
int (*learn_status) (app_t app, ctrl_t ctrl);
50
int (*readcert) (app_t app, const char *certid,
51
unsigned char **cert, size_t *certlen);
52
int (*getattr) (app_t app, ctrl_t ctrl, const char *name);
53
int (*setattr) (app_t app, const char *name,
54
int (*pincb)(void*, const char *, char **),
56
const unsigned char *value, size_t valuelen);
57
int (*sign) (app_t app,
58
const char *keyidstr, int hashalgo,
59
int (pincb)(void*, const char *, char **),
61
const void *indata, size_t indatalen,
62
unsigned char **outdata, size_t *outdatalen );
63
int (*auth) (app_t app, const char *keyidstr,
64
int (*pincb)(void*, const char *, char **),
66
const void *indata, size_t indatalen,
67
unsigned char **outdata, size_t *outdatalen);
68
int (*decipher) (app_t app, const char *keyidstr,
69
int (pincb)(void*, const char *, char **),
71
const void *indata, size_t indatalen,
72
unsigned char **outdata, size_t *outdatalen);
73
int (*genkey) (app_t app, ctrl_t ctrl,
74
const char *keynostr, unsigned int flags,
75
int (*pincb)(void*, const char *, char **),
77
int (*change_pin) (app_t app, ctrl_t ctrl,
78
const char *chvnostr, int reset_mode,
79
int (*pincb)(void*, const char *, char **),
81
int (*check_pin) (app_t app, const char *keyidstr,
82
int (pincb)(void*, const char *, char **),
88
#if GNUPG_MAJOR_VERSION == 1
89
int app_select_openpgp (app_t app);
90
int app_get_serial_and_stamp (app_t app, char **serial, time_t *stamp);
91
int app_openpgp_storekey (app_t app, int keyno,
92
unsigned char *template, size_t template_len,
94
const unsigned char *m, size_t mlen,
95
const unsigned char *e, size_t elen,
96
int (*pincb)(void*, const char *, char **),
100
gpg_error_t app_help_get_keygrip_string (ksba_cert_t cert, char *hexkeygrip);
101
size_t app_help_read_length_of_cert (int slot, int fid, size_t *r_certoff);
105
app_t select_application (ctrl_t ctrl, int slot, const char *name);
106
void release_application (app_t app);
107
int app_munge_serialno (app_t app);
108
int app_get_serial_and_stamp (app_t app, char **serial, time_t *stamp);
109
int app_write_learn_status (app_t app, ctrl_t ctrl);
110
int app_readcert (app_t app, const char *certid,
111
unsigned char **cert, size_t *certlen);
112
int app_getattr (app_t app, ctrl_t ctrl, const char *name);
113
int app_setattr (app_t app, const char *name,
114
int (*pincb)(void*, const char *, char **),
116
const unsigned char *value, size_t valuelen);
117
int app_sign (app_t app, const char *keyidstr, int hashalgo,
118
int (pincb)(void*, const char *, char **),
120
const void *indata, size_t indatalen,
121
unsigned char **outdata, size_t *outdatalen );
122
int app_auth (app_t app, const char *keyidstr,
123
int (*pincb)(void*, const char *, char **),
125
const void *indata, size_t indatalen,
126
unsigned char **outdata, size_t *outdatalen);
127
int app_decipher (app_t app, const char *keyidstr,
128
int (pincb)(void*, const char *, char **),
130
const void *indata, size_t indatalen,
131
unsigned char **outdata, size_t *outdatalen );
132
int app_genkey (app_t app, ctrl_t ctrl,
133
const char *keynostr, unsigned int flags,
134
int (*pincb)(void*, const char *, char **),
136
int app_get_challenge (app_t app, size_t nbytes, unsigned char *buffer);
137
int app_change_pin (app_t app, ctrl_t ctrl,
138
const char *chvnostr, int reset_mode,
139
int (*pincb)(void*, const char *, char **),
141
int app_check_pin (app_t app, const char *keyidstr,
142
int (*pincb)(void*, const char *, char **),
146
/*-- app-openpgp.c --*/
147
int app_select_openpgp (app_t app);
149
int app_openpgp_cardinfo (app_t app,
153
unsigned char **fpr1,
154
unsigned char **fpr2,
155
unsigned char **fpr3);
156
int app_openpgp_storekey (app_t app, int keyno,
157
unsigned char *template, size_t template_len,
159
const unsigned char *m, size_t mlen,
160
const unsigned char *e, size_t elen,
161
int (*pincb)(void*, const char *, char **),
163
int app_openpgp_readkey (app_t app, int keyno,
164
unsigned char **m, size_t *mlen,
165
unsigned char **e, size_t *elen);
167
int app_select_nks (app_t app);
169
/*-- app-dinsig.c --*/
170
int app_select_dinsig (app_t app);
173
int app_select_p15 (app_t app);
180
#endif /*GNUPG_SCD_APP_COMMON_H*/