mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
First set of changes to backport the new card code from 2.0.
For compatibility reasons a few new files had to be added. Also added estream-printf as this is now used in app-openpgp.c and provides a better and generic asprintf implementation than the hack we used for the W32 code in ttyio.c. Card code is not yet finished.
This commit is contained in:
parent
b478389753
commit
3459c6b015
37 changed files with 7385 additions and 1694 deletions
35
g10/apdu.h
35
g10/apdu.h
|
@ -1,5 +1,5 @@
|
|||
/* apdu.h - ISO 7816 APDU functions and low level I/O
|
||||
* Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2003, 2008 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GnuPG.
|
||||
*
|
||||
|
@ -29,8 +29,11 @@ enum {
|
|||
SW_MORE_DATA = 0x6100, /* Note: that the low byte must be
|
||||
masked of.*/
|
||||
SW_EOF_REACHED = 0x6282,
|
||||
SW_TERM_STATE = 0x6285, /* Selected file is in termination state. */
|
||||
SW_EEPROM_FAILURE = 0x6581,
|
||||
SW_WRONG_LENGTH = 0x6700,
|
||||
SW_SM_NOT_SUP = 0x6882, /* Secure Messaging is not supported. */
|
||||
SW_CC_NOT_SUP = 0x6884, /* Command Chaining is not supported. */
|
||||
SW_CHV_WRONG = 0x6982,
|
||||
SW_CHV_BLOCKED = 0x6983,
|
||||
SW_USE_CONDITIONS = 0x6985,
|
||||
|
@ -38,6 +41,7 @@ enum {
|
|||
SW_NOT_SUPPORTED = 0x6a81,
|
||||
SW_FILE_NOT_FOUND = 0x6a82,
|
||||
SW_RECORD_NOT_FOUND = 0x6a83,
|
||||
SW_BAD_LC = 0x6a87, /* Lc does not match command or p1/p2. */
|
||||
SW_REF_NOT_FOUND = 0x6a88,
|
||||
SW_BAD_P0_P1 = 0x6b00,
|
||||
SW_EXACT_LENGTH = 0x6c00,
|
||||
|
@ -62,13 +66,20 @@ enum {
|
|||
SW_HOST_GENERAL_ERROR = 0x1000b,
|
||||
SW_HOST_NO_READER = 0x1000c,
|
||||
SW_HOST_ABORTED = 0x1000d,
|
||||
SW_HOST_NO_KEYPAD = 0x1000e
|
||||
SW_HOST_NO_KEYPAD = 0x1000e,
|
||||
SW_HOST_ALREADY_CONNECTED = 0x1000f
|
||||
};
|
||||
|
||||
|
||||
#define SW_EXACT_LENGTH_P(a) (((a)&~0xff) == SW_EXACT_LENGTH)
|
||||
|
||||
|
||||
/* Bit flags for the card status. */
|
||||
#define APDU_CARD_USABLE (1) /* Card is present and ready for use. */
|
||||
#define APDU_CARD_PRESENT (2) /* Card is just present. */
|
||||
#define APDU_CARD_ACTIVE (4) /* Card is active. */
|
||||
|
||||
|
||||
/* Note , that apdu_open_reader returns no status word but -1 on error. */
|
||||
int apdu_open_reader (const char *portstr);
|
||||
int apdu_open_remote_reader (const char *portstr,
|
||||
|
@ -83,13 +94,19 @@ int apdu_open_remote_reader (const char *portstr,
|
|||
void *closefnc_value);
|
||||
int apdu_shutdown_reader (int slot);
|
||||
int apdu_close_reader (int slot);
|
||||
void apdu_prepare_exit (void);
|
||||
int apdu_enum_reader (int slot, int *used);
|
||||
unsigned char *apdu_get_atr (int slot, size_t *atrlen);
|
||||
|
||||
const char *apdu_strerror (int rc);
|
||||
|
||||
|
||||
/* These apdu functions do return status words. */
|
||||
/* These APDU functions return status words. */
|
||||
|
||||
int apdu_connect (int slot);
|
||||
int apdu_disconnect (int slot);
|
||||
|
||||
int apdu_set_progress_cb (int slot, gcry_handler_progress_t cb, void *cb_arg);
|
||||
|
||||
int apdu_activate (int slot);
|
||||
int apdu_reset (int slot);
|
||||
|
@ -97,19 +114,21 @@ int apdu_get_status (int slot, int hang,
|
|||
unsigned int *status, unsigned int *changed);
|
||||
int apdu_check_keypad (int slot, int command, int pin_mode,
|
||||
int pinlen_min, int pinlen_max, int pin_padlen);
|
||||
int apdu_send_simple (int slot, int class, int ins, int p0, int p1,
|
||||
int apdu_send_simple (int slot, int extended_mode,
|
||||
int class, int ins, int p0, int p1,
|
||||
int lc, const char *data);
|
||||
int apdu_send_simple_kp (int slot, int class, int ins, int p0, int p1,
|
||||
int lc, const char *data,
|
||||
int pin_mode,
|
||||
int pinlen_min, int pinlen_max, int pin_padlen);
|
||||
int apdu_send (int slot, int class, int ins, int p0, int p1,
|
||||
int lc, const char *data,
|
||||
int apdu_send (int slot, int extended_mode,
|
||||
int class, int ins, int p0, int p1, int lc, const char *data,
|
||||
unsigned char **retbuf, size_t *retbuflen);
|
||||
int apdu_send_le (int slot, int class, int ins, int p0, int p1,
|
||||
int apdu_send_le (int slot, int extended_mode,
|
||||
int class, int ins, int p0, int p1,
|
||||
int lc, const char *data, int le,
|
||||
unsigned char **retbuf, size_t *retbuflen);
|
||||
int apdu_send_direct (int slot,
|
||||
int apdu_send_direct (int slot, size_t extended_length,
|
||||
const unsigned char *apdudata, size_t apdudatalen,
|
||||
int handle_more,
|
||||
unsigned char **retbuf, size_t *retbuflen);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue