diff options
Diffstat (limited to 'scd/apdu.h')
-rw-r--r-- | scd/apdu.h | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/scd/apdu.h b/scd/apdu.h index 47fd1a8f6..44166a3fe 100644 --- a/scd/apdu.h +++ b/scd/apdu.h @@ -22,7 +22,7 @@ #define APDU_H /* ISO 7816 values for the statusword are defined here because they - should not be visible to the users of the actual iso command + should not be visible to the users of the actual ISO command API. */ enum { SW_MORE_DATA = 0x6100, /* Note: that the low byte must be @@ -32,19 +32,31 @@ enum { SW_CHV_WRONG = 0x6982, SW_CHV_BLOCKED = 0x6983, SW_USE_CONDITIONS = 0x6985, + SW_NOT_SUPPORTED = 0x6a81, SW_BAD_PARAMETER = 0x6a80, /* (in the data field) */ SW_REF_NOT_FOUND = 0x6a88, SW_BAD_P0_P1 = 0x6b00, SW_INS_NOT_SUP = 0x6d00, SW_CLA_NOT_SUP = 0x6e00, - SW_SUCCESS = 0x9000 + SW_SUCCESS = 0x9000, + + /* The follwoing statuswords are no real ones but used to map host + OS errors into status words. A status word is 16 bit so that + those values can't be issued by a card. */ + SW_HOST_OUT_OF_CORE = 0x10001, /* No way yet to differentiate + between errnos on a failed malloc. */ + SW_HOST_INV_VALUE = 0x10002, + SW_HOST_INCOMPLETE_CARD_RESPONSE = 0x10003, }; +/* Note , that apdu_open_reader returns no status word but -1 on error. */ int apdu_open_reader (int port); unsigned char *apdu_get_atr (int slot, size_t *atrlen); + +/* The apdu send functions do return status words. */ int apdu_send_simple (int slot, int class, int ins, int p0, int p1, int lc, const char *data); int apdu_send (int slot, int class, int ins, int p0, int p1, @@ -56,3 +68,6 @@ int apdu_send_le (int slot, int class, int ins, int p0, int p1, #endif /*APDU_H*/ + + + |