libchipcard
5.1.6
|
#include <gwenhywfar/inherit.h>
#include <chipcard/chipcard.h>
#include <chipcard/client.h>
#include <chipcard/sharedstuff/pininfo.h>
Go to the source code of this file.
Macros | |
Flags for ISO Commands | |
#define | LC_CARD_ISO_FLAGS_EFID_MASK 0x00000001f |
#define | LC_CARD_ISO_FLAGS_RECSEL_MASK 0x0000000e0 |
#define | LC_CARD_ISO_FLAGS_RECSEL_FIRST (0 << 5) |
#define | LC_CARD_ISO_FLAGS_RECSEL_LAST (1 << 5) |
#define | LC_CARD_ISO_FLAGS_RECSEL_NEXT (2 << 5) |
#define | LC_CARD_ISO_FLAGS_RECSEL_PREV (3 << 5) |
#define | LC_CARD_ISO_FLAGS_RECSEL_GIVEN (4 << 5) |
Typedefs | |
typedef struct LC_CARD | LC_CARD |
Functions | |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_SelectEfById (LC_CARD *card, const int sid) |
Opening, Closing, Destroying | |
CHIPCARD_API void | LC_Card_free (LC_CARD *cd) |
CHIPCARD_API void | LC_Card_List2_freeAll (LC_CARD_LIST2 *l) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_Open (LC_CARD *card) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_Close (LC_CARD *card) |
Executing Card Commands | |
There are two ways of letting Libchipcard execute card commands:
When working with Libchipcard the latter method is preferred since only in this case Libchipcard can adapt APDUs in order to make them work with a given combination of card and reader. Otherwise the application has to take care of the specialties of a given reader or card by itself. | |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_ExecApdu (LC_CARD *card, const char *apdu, unsigned int len, GWEN_BUFFER *rbuf, LC_CLIENT_CMDTARGET t) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_ExecCommand (LC_CARD *card, const char *commandName, GWEN_DB_NODE *cmdData, GWEN_DB_NODE *rspData) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_BuildApdu (LC_CARD *card, const char *command, GWEN_DB_NODE *cmdData, GWEN_BUFFER *gbuf) |
Select Card/Application Type | |
Functions in this group tell Libchipcard which instruction set is to be used for LC_Card_ExecApdu(). It also selects the XML descriptions appropriate for the card application to be used by the functions LC_Card_SelectDf() and LC_Card_SelectEf(). A card can contain multiple applications, e.g. some HBCI cards additionally contain the GeldKarte application. Different card applications contain different files/folders (EF/DF), so Libchipcard needs to be told which card application is to be used. | |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_SelectCard (LC_CARD *card, const char *s) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_SelectApp (LC_CARD *card, const char *appName) |
Select MF/DF/EF | |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_SelectMf (LC_CARD *card) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_SelectDf (LC_CARD *card, const char *fname) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_SelectEf (LC_CARD *card, const char *fname) |
XML Descriptions | |
CHIPCARD_API GWEN_XMLNODE * | LC_Card_GetCardNode (const LC_CARD *card) |
CHIPCARD_API GWEN_XMLNODE * | LC_Card_GetAppNode (const LC_CARD *card) |
CHIPCARD_API GWEN_XMLNODE * | LC_Card_GetDfNode (const LC_CARD *card) |
CHIPCARD_API GWEN_XMLNODE * | LC_Card_GetEfNode (const LC_CARD *card) |
Informational Functions | |
CHIPCARD_API uint32_t | LC_Card_GetCardId (const LC_CARD *cd) |
CHIPCARD_API const char * | LC_Card_GetReaderType (const LC_CARD *cd) |
CHIPCARD_API const char * | LC_Card_GetDriverType (const LC_CARD *cd) |
CHIPCARD_API uint32_t | LC_Card_GetReaderFlags (const LC_CARD *cd) |
CHIPCARD_API const char * | LC_Card_GetCardType (const LC_CARD *cd) |
CHIPCARD_API const GWEN_STRINGLIST * | LC_Card_GetCardTypes (const LC_CARD *cd) |
CHIPCARD_API unsigned int | LC_Card_GetAtr (const LC_CARD *cd, const unsigned char **pbuf) |
CHIPCARD_API LC_CLIENT * | LC_Card_GetClient (const LC_CARD *cd) |
Last Result | |
These functions return the result of the last command executed via LC_Card_ExecCommand (nearly all functions internally call that one) | |
CHIPCARD_API int | LC_Card_GetLastSW1 (const LC_CARD *card) |
CHIPCARD_API int | LC_Card_GetLastSW2 (const LC_CARD *card) |
CHIPCARD_API const char * | LC_Card_GetLastResult (const LC_CARD *card) |
CHIPCARD_API const char * | LC_Card_GetLastText (const LC_CARD *card) |
CHIPCARD_API void | LC_Card_CreateResultString (const LC_CARD *card, const char *lastCommand, LC_CLIENT_RESULT res, GWEN_BUFFER *buf) |
Debugging Functions | |
CHIPCARD_API void | LC_Card_Dump (const LC_CARD *cd, int indent) |
Pin Functions | |
CHIPCARD_API LC_PININFO * | LC_Card_GetPinInfoById (LC_CARD *card, uint32_t pid) |
CHIPCARD_API LC_PININFO * | LC_Card_GetPinInfoByName (LC_CARD *card, const char *name) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_GetPinStatus (LC_CARD *card, unsigned int pid, int *maxErrors, int *currentErrors) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_GetInitialPin (LC_CARD *card, int id, unsigned char *buffer, unsigned int maxLen, unsigned int *pinLength) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoVerifyPin (LC_CARD *card, uint32_t flags, const LC_PININFO *pi, const unsigned char *ptr, unsigned int size, int *triesLeft) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoModifyPin (LC_CARD *card, uint32_t flags, const LC_PININFO *pi, const unsigned char *oldptr, unsigned int oldsize, const unsigned char *newptr, unsigned int newsize, int *triesLeft) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoPerformVerification (LC_CARD *card, uint32_t flags, const LC_PININFO *pi, int *triesLeft) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoPerformModification (LC_CARD *card, uint32_t flags, const LC_PININFO *pi, int *triesLeft) |
Reading and Writing Data | |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoReadBinary (LC_CARD *card, uint32_t flags, int offset, int size, GWEN_BUFFER *buf) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoWriteBinary (LC_CARD *card, uint32_t flags, int offset, const char *ptr, unsigned int size) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoUpdateBinary (LC_CARD *card, uint32_t flags, int offset, const char *ptr, unsigned int size) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoEraseBinary (LC_CARD *card, uint32_t flags, int offset, unsigned int size) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_ReadBinary (LC_CARD *card, int offset, int size, GWEN_BUFFER *buf) |
Reading and Writing Records | |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoReadRecord (LC_CARD *card, uint32_t flags, int recNum, GWEN_BUFFER *buf) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoWriteRecord (LC_CARD *card, uint32_t flags, int recNum, const char *ptr, unsigned int size) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoAppendRecord (LC_CARD *card, uint32_t flags, const char *ptr, unsigned int size) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoUpdateRecord (LC_CARD *card, uint32_t flags, int recNum, const char *ptr, unsigned int size) |
Crypto Functions | |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoManageSe (LC_CARD *card, int tmpl, int kids, int kidp, int ar) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoEncipher (LC_CARD *card, const char *ptr, unsigned int size, GWEN_BUFFER *codeBuf) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoDecipher (LC_CARD *card, const char *ptr, unsigned int size, GWEN_BUFFER *plainBuf) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoSign (LC_CARD *card, const char *ptr, unsigned int size, GWEN_BUFFER *sigBuf) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_IsoVerify (LC_CARD *card, const char *dptr, unsigned int dsize, const char *sigptr, unsigned int sigsize) |
LC_CLIENT_RESULT | LC_Card_IsoInternalAuth (LC_CARD *card, int kid, const unsigned char *ptr, unsigned int size, GWEN_BUFFER *rBuf) |
Data Formats (Parsing and Generating) | |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_ParseData (LC_CARD *card, const char *format, GWEN_BUFFER *buf, GWEN_DB_NODE *dbData) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_CreateData (LC_CARD *card, const char *format, GWEN_BUFFER *buf, GWEN_DB_NODE *dbData) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_ParseRecord (LC_CARD *card, int recNum, GWEN_BUFFER *buf, GWEN_DB_NODE *dbRecord) |
CHIPCARD_API LC_CLIENT_RESULT | LC_Card_CreateRecord (LC_CARD *card, int recNum, GWEN_BUFFER *buf, GWEN_DB_NODE *dbRecord) |
CHIPCARD_API GWEN_XMLNODE* LC_Card_GetCardNode | ( | const LC_CARD * | card | ) |
CHIPCARD_API GWEN_XMLNODE* LC_Card_GetAppNode | ( | const LC_CARD * | card | ) |
CHIPCARD_API GWEN_XMLNODE* LC_Card_GetDfNode | ( | const LC_CARD * | card | ) |
CHIPCARD_API GWEN_XMLNODE* LC_Card_GetEfNode | ( | const LC_CARD * | card | ) |
CHIPCARD_API uint32_t LC_Card_GetCardId | ( | const LC_CARD * | cd | ) |
The chipcard2 server identifies cards by ids which are unique in the server environment. No two cards can have the same id.
CHIPCARD_API const char* LC_Card_GetReaderType | ( | const LC_CARD * | cd | ) |
CHIPCARD_API const char* LC_Card_GetDriverType | ( | const LC_CARD * | cd | ) |
CHIPCARD_API uint32_t LC_Card_GetReaderFlags | ( | const LC_CARD * | cd | ) |
Returns the reader flags of the reader the given card is in (see LC_READER_FLAGS_KEYPAD and others).
CHIPCARD_API const char* LC_Card_GetCardType | ( | const LC_CARD * | cd | ) |
Returns the type of the given card. Possible values are "MEMORY" and "PROCESSOR".
CHIPCARD_API const GWEN_STRINGLIST* LC_Card_GetCardTypes | ( | const LC_CARD * | cd | ) |
Returns a stringlist containing all types which match the ATR string of the given card. Possibly contents are "ddv0", "ddv1", "geldkarte" etc.
CHIPCARD_API unsigned int LC_Card_GetAtr | ( | const LC_CARD * | cd, |
const unsigned char ** | pbuf | ||
) |
Returns the Answer To Reset string returned by the card upon power up. These bytes indicate some properties of the card (e.g. card type, manufacturer, memory size etc). This function returns a pointer to the internally stored ATR. The card object still remains the owner of the object returned (if any) so you must neither manipulate nor free it.
CHIPCARD_API LC_CLIENT* LC_Card_GetClient | ( | const LC_CARD * | cd | ) |
Returns the pointer to the client object this card belongs to.
CHIPCARD_API int LC_Card_GetLastSW1 | ( | const LC_CARD * | card | ) |
CHIPCARD_API int LC_Card_GetLastSW2 | ( | const LC_CARD * | card | ) |
CHIPCARD_API const char* LC_Card_GetLastResult | ( | const LC_CARD * | card | ) |
CHIPCARD_API const char* LC_Card_GetLastText | ( | const LC_CARD * | card | ) |
CHIPCARD_API void LC_Card_CreateResultString | ( | const LC_CARD * | card, |
const char * | lastCommand, | ||
LC_CLIENT_RESULT | res, | ||
GWEN_BUFFER * | buf | ||
) |
CHIPCARD_API void LC_Card_Dump | ( | const LC_CARD * | cd, |
int | indent | ||
) |
CHIPCARD_API LC_PININFO* LC_Card_GetPinInfoById | ( | LC_CARD * | card, |
uint32_t | pid | ||
) |
Returns a pininfo object of the pin given by its id. The caller becomes the owner of the object returned (if any) and must call LC_PinInfo_free on it to avoid memory leaks.
CHIPCARD_API LC_PININFO* LC_Card_GetPinInfoByName | ( | LC_CARD * | card, |
const char * | name | ||
) |
Returns a pininfo object of the pin given by its name. The caller becomes the owner of the object returned (if any) and must call LC_PinInfo_free on it to avoid memory leaks. Standard names are "ch_pin" for the cardholder pin and "eg_pin" for the device pin (needed by STARCOS cards to modify security data on a card).
CHIPCARD_API LC_CLIENT_RESULT LC_Card_GetPinStatus | ( | LC_CARD * | card, |
unsigned int | pid, | ||
int * | maxErrors, | ||
int * | currentErrors | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_GetInitialPin | ( | LC_CARD * | card, |
int | id, | ||
unsigned char * | buffer, | ||
unsigned int | maxLen, | ||
unsigned int * | pinLength | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoVerifyPin | ( | LC_CARD * | card, |
uint32_t | flags, | ||
const LC_PININFO * | pi, | ||
const unsigned char * | ptr, | ||
unsigned int | size, | ||
int * | triesLeft | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoModifyPin | ( | LC_CARD * | card, |
uint32_t | flags, | ||
const LC_PININFO * | pi, | ||
const unsigned char * | oldptr, | ||
unsigned int | oldsize, | ||
const unsigned char * | newptr, | ||
unsigned int | newsize, | ||
int * | triesLeft | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoPerformVerification | ( | LC_CARD * | card, |
uint32_t | flags, | ||
const LC_PININFO * | pi, | ||
int * | triesLeft | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoPerformModification | ( | LC_CARD * | card, |
uint32_t | flags, | ||
const LC_PININFO * | pi, | ||
int * | triesLeft | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoReadBinary | ( | LC_CARD * | card, |
uint32_t | flags, | ||
int | offset, | ||
int | size, | ||
GWEN_BUFFER * | buf | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoWriteBinary | ( | LC_CARD * | card, |
uint32_t | flags, | ||
int | offset, | ||
const char * | ptr, | ||
unsigned int | size | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoUpdateBinary | ( | LC_CARD * | card, |
uint32_t | flags, | ||
int | offset, | ||
const char * | ptr, | ||
unsigned int | size | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoEraseBinary | ( | LC_CARD * | card, |
uint32_t | flags, | ||
int | offset, | ||
unsigned int | size | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_ReadBinary | ( | LC_CARD * | card, |
int | offset, | ||
int | size, | ||
GWEN_BUFFER * | buf | ||
) |
This functions reads any number of bytes from an already selected file of the card. It therefore issues multiple read requests until all bytes are read.
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoReadRecord | ( | LC_CARD * | card, |
uint32_t | flags, | ||
int | recNum, | ||
GWEN_BUFFER * | buf | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoWriteRecord | ( | LC_CARD * | card, |
uint32_t | flags, | ||
int | recNum, | ||
const char * | ptr, | ||
unsigned int | size | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoAppendRecord | ( | LC_CARD * | card, |
uint32_t | flags, | ||
const char * | ptr, | ||
unsigned int | size | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoUpdateRecord | ( | LC_CARD * | card, |
uint32_t | flags, | ||
int | recNum, | ||
const char * | ptr, | ||
unsigned int | size | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoManageSe | ( | LC_CARD * | card, |
int | tmpl, | ||
int | kids, | ||
int | kidp, | ||
int | ar | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoEncipher | ( | LC_CARD * | card, |
const char * | ptr, | ||
unsigned int | size, | ||
GWEN_BUFFER * | codeBuf | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoDecipher | ( | LC_CARD * | card, |
const char * | ptr, | ||
unsigned int | size, | ||
GWEN_BUFFER * | plainBuf | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoSign | ( | LC_CARD * | card, |
const char * | ptr, | ||
unsigned int | size, | ||
GWEN_BUFFER * | sigBuf | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoVerify | ( | LC_CARD * | card, |
const char * | dptr, | ||
unsigned int | dsize, | ||
const char * | sigptr, | ||
unsigned int | sigsize | ||
) |
LC_CLIENT_RESULT LC_Card_IsoInternalAuth | ( | LC_CARD * | card, |
int | kid, | ||
const unsigned char * | ptr, | ||
unsigned int | size, | ||
GWEN_BUFFER * | rBuf | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_ParseData | ( | LC_CARD * | card, |
const char * | format, | ||
GWEN_BUFFER * | buf, | ||
GWEN_DB_NODE * | dbData | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_CreateData | ( | LC_CARD * | card, |
const char * | format, | ||
GWEN_BUFFER * | buf, | ||
GWEN_DB_NODE * | dbData | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_ParseRecord | ( | LC_CARD * | card, |
int | recNum, | ||
GWEN_BUFFER * | buf, | ||
GWEN_DB_NODE * | dbRecord | ||
) |
CHIPCARD_API LC_CLIENT_RESULT LC_Card_CreateRecord | ( | LC_CARD * | card, |
int | recNum, | ||
GWEN_BUFFER * | buf, | ||
GWEN_DB_NODE * | dbRecord | ||
) |