libchipcard  5.1.0beta
card.h
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Mon Mar 01 2004
3  copyright : (C) 2004-2010 by Martin Preuss
4  email : martin@libchipcard.de
5 
6  ***************************************************************************
7  * Please see toplevel file COPYING for license details *
8  ***************************************************************************/
9 
10 
11 #ifndef CHIPCARD_CLIENT_CARD_H
12 #define CHIPCARD_CLIENT_CARD_H
13 
14 
18 
19 #include <gwenhywfar/inherit.h>
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 typedef struct LC_CARD LC_CARD;
26 
27 #ifdef __cplusplus
28 }
29 #endif
30 
31 #include <chipcard/chipcard.h>
32 #include <chipcard/client.h>
33 #include <chipcard/sharedstuff/pininfo.h>
34 
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
40 GWEN_INHERIT_FUNCTION_LIB_DEFS(LC_CARD, CHIPCARD_API)
41 GWEN_LIST2_FUNCTION_LIB_DEFS(LC_CARD, LC_Card, CHIPCARD_API)
42 
43 
47 #define LC_CARD_ISO_FLAGS_EFID_MASK 0x00000001f
48 
50 #define LC_CARD_ISO_FLAGS_RECSEL_MASK 0x0000000e0
51 
53 #define LC_CARD_ISO_FLAGS_RECSEL_FIRST (0 << 5)
54 
56 #define LC_CARD_ISO_FLAGS_RECSEL_LAST (1 << 5)
57 
59 #define LC_CARD_ISO_FLAGS_RECSEL_NEXT (2 << 5)
60 
62 #define LC_CARD_ISO_FLAGS_RECSEL_PREV (3 << 5)
63 
65 #define LC_CARD_ISO_FLAGS_RECSEL_GIVEN (4 << 5)
66 
75 
81 void LC_Card_free(LC_CARD *cd);
82 
84 void LC_Card_List2_freeAll(LC_CARD_LIST2 *l);
85 
86 
94 
121 
130  const char *apdu,
131  unsigned int len,
132  GWEN_BUFFER *rbuf,
134 
147  const char *commandName,
148  GWEN_DB_NODE *cmdData,
149  GWEN_DB_NODE *rspData);
150 
157  const char *command,
158  GWEN_DB_NODE *cmdData,
159  GWEN_BUFFER *gbuf);
160 
180 LC_CLIENT_RESULT LC_Card_SelectCard(LC_CARD *card, const char *s);
181 
183 LC_CLIENT_RESULT LC_Card_SelectApp(LC_CARD *card, const char *appName);
191 
198 
207 LC_CLIENT_RESULT LC_Card_SelectDf(LC_CARD *card, const char *fname);
208 
217 LC_CLIENT_RESULT LC_Card_SelectEf(LC_CARD *card, const char *fname);
226 GWEN_XMLNODE *LC_Card_GetCardNode(const LC_CARD *card);
227 
229 GWEN_XMLNODE *LC_Card_GetAppNode(const LC_CARD *card);
230 
232 GWEN_XMLNODE *LC_Card_GetDfNode(const LC_CARD *card);
233 
235 GWEN_XMLNODE *LC_Card_GetEfNode(const LC_CARD *card);
236 
246 
252 uint32_t LC_Card_GetCardId(const LC_CARD *cd);
253 
254 
256 const char *LC_Card_GetReaderType(const LC_CARD *cd);
257 
259 const char *LC_Card_GetDriverType(const LC_CARD *cd);
260 
266 uint32_t LC_Card_GetReaderFlags(const LC_CARD *cd);
267 
273 const char *LC_Card_GetCardType(const LC_CARD *cd);
274 
280 const GWEN_STRINGLIST *LC_Card_GetCardTypes(const LC_CARD *cd);
281 
291 unsigned int LC_Card_GetAtr(const LC_CARD *cd,
292  const unsigned char **pbuf);
293 
294 
311 int LC_Card_GetLastSW1(const LC_CARD *card);
312 
314 int LC_Card_GetLastSW2(const LC_CARD *card);
315 
317 const char *LC_Card_GetLastResult(const LC_CARD *card);
318 
320 const char *LC_Card_GetLastText(const LC_CARD *card);
321 
323 void LC_Card_CreateResultString(const LC_CARD *card,
324  const char *lastCommand,
325  LC_CLIENT_RESULT res,
326  GWEN_BUFFER *buf);
335 void LC_Card_Dump(const LC_CARD *cd, int indent);
345 
352 LC_PININFO *LC_Card_GetPinInfoById(LC_CARD *card, uint32_t pid);
353 
362 LC_PININFO *LC_Card_GetPinInfoByName(LC_CARD *card, const char *name);
363 
366  unsigned int pid,
367  int *maxErrors,
368  int *currentErrors);
369 
372  int id,
373  unsigned char *buffer,
374  unsigned int maxLen,
375  unsigned int *pinLength);
376 
379  uint32_t flags,
380  const LC_PININFO *pi,
381  const unsigned char *ptr,
382  unsigned int size,
383  int *triesLeft);
384 
387  uint32_t flags,
388  const LC_PININFO *pi,
389  const unsigned char *oldptr,
390  unsigned int oldsize,
391  const unsigned char *newptr,
392  unsigned int newsize,
393  int *triesLeft);
394 
397  uint32_t flags,
398  const LC_PININFO *pi,
399  int *triesLeft);
400 
403  uint32_t flags,
404  const LC_PININFO *pi,
405  int *triesLeft);
406 
417  uint32_t flags,
418  int offset,
419  int size,
420  GWEN_BUFFER *buf);
421 
424  uint32_t flags,
425  int offset,
426  const char *ptr,
427  unsigned int size);
428 
429 
432  uint32_t flags,
433  int offset,
434  const char *ptr,
435  unsigned int size);
436 
439  uint32_t flags,
440  int offset,
441  unsigned int size);
442 
450  int offset,
451  int size,
452  GWEN_BUFFER *buf);
453 
461 
464  uint32_t flags,
465  int recNum,
466  GWEN_BUFFER *buf);
469  uint32_t flags,
470  int recNum,
471  const char *ptr,
472  unsigned int size);
473 
476  uint32_t flags,
477  const char *ptr,
478  unsigned int size);
479 
482  uint32_t flags,
483  int recNum,
484  const char *ptr,
485  unsigned int size);
494 
497  int tmpl, int kids, int kidp, int ar);
498 
501  const char *ptr,
502  unsigned int size,
503  GWEN_BUFFER *codeBuf);
504 
507  const char *ptr,
508  unsigned int size,
509  GWEN_BUFFER *plainBuf);
510 
513  const char *ptr,
514  unsigned int size,
515  GWEN_BUFFER *sigBuf);
516 
519  const char *dptr,
520  unsigned int dsize,
521  const char *sigptr,
522  unsigned int sigsize);
523 
526  int kid,
527  const unsigned char *ptr,
528  unsigned int size,
529  GWEN_BUFFER *rBuf);
530 
540 
543  const char *format,
544  GWEN_BUFFER *buf,
545  GWEN_DB_NODE *dbData);
546 
549  const char *format,
550  GWEN_BUFFER *buf,
551  GWEN_DB_NODE *dbData);
552 
555  int recNum,
556  GWEN_BUFFER *buf,
557  GWEN_DB_NODE *dbRecord);
558 
561  int recNum,
562  GWEN_BUFFER *buf,
563  GWEN_DB_NODE *dbRecord);
564 
565 
568 #ifdef __cplusplus
569 }
570 #endif
571  /* addtogroup */
573 
574 
575 #endif /* CHIPCARD_CLIENT_CARD_H */
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_IsoReadBinary(LC_CARD *card, uint32_t flags, int offset, int size, GWEN_BUFFER *buf)
LC_CLIENT_CMDTARGET
Definition: client.h:64
CHIPCARD_API void LC_Card_List2_freeAll(LC_CARD_LIST2 *l)
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 * LC_Card_GetClient(const LC_CARD *cd)
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_ExecCommand(LC_CARD *card, const char *commandName, GWEN_DB_NODE *cmdData, GWEN_DB_NODE *rspData)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoUpdateBinary(LC_CARD *card, uint32_t flags, int offset, const char *ptr, unsigned int size)
struct LC_CLIENT LC_CLIENT
Definition: client.h:33
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_ReadBinary(LC_CARD *card, 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_Close(LC_CARD *card)
CHIPCARD_API GWEN_XMLNODE * LC_Card_GetEfNode(const LC_CARD *card)
LC_CLIENT_RESULT LC_Card_IsoInternalAuth(LC_CARD *card, int kid, const unsigned char *ptr, unsigned int size, GWEN_BUFFER *rBuf)
CHIPCARD_API GWEN_XMLNODE * LC_Card_GetAppNode(const LC_CARD *card)
CHIPCARD_API const char * LC_Card_GetReaderType(const LC_CARD *cd)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_SelectEf(LC_CARD *card, const char *fname)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoPerformModification(LC_CARD *card, uint32_t flags, const LC_PININFO *pi, int *triesLeft)
CHIPCARD_API GWEN_XMLNODE * LC_Card_GetCardNode(const LC_CARD *card)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoUpdateRecord(LC_CARD *card, uint32_t flags, int recNum, const char *ptr, unsigned int size)
CHIPCARD_API const char * LC_Card_GetCardType(const LC_CARD *cd)
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 uint32_t LC_Card_GetCardId(const LC_CARD *cd)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_SelectApp(LC_CARD *card, const char *appName)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_CreateData(LC_CARD *card, const char *format, GWEN_BUFFER *buf, GWEN_DB_NODE *dbData)
CHIPCARD_API LC_PININFO * LC_Card_GetPinInfoByName(LC_CARD *card, const char *name)
CHIPCARD_API int LC_Card_GetLastSW2(const LC_CARD *card)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoPerformVerification(LC_CARD *card, uint32_t flags, const LC_PININFO *pi, int *triesLeft)
#define CHIPCARD_API
Definition: chipcard.h:50
CHIPCARD_API LC_CLIENT_RESULT LC_Card_BuildApdu(LC_CARD *card, const char *command, GWEN_DB_NODE *cmdData, GWEN_BUFFER *gbuf)
LC_CLIENT_RESULT
Definition: client.h:40
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_SelectDf(LC_CARD *card, const char *fname)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoSign(LC_CARD *card, const char *ptr, unsigned int size, GWEN_BUFFER *sigBuf)
CHIPCARD_API const char * LC_Card_GetLastText(const LC_CARD *card)
CHIPCARD_API unsigned int LC_Card_GetAtr(const LC_CARD *cd, const unsigned char **pbuf)
CHIPCARD_API const char * LC_Card_GetDriverType(const LC_CARD *cd)
CHIPCARD_API void LC_Card_CreateResultString(const LC_CARD *card, const char *lastCommand, LC_CLIENT_RESULT res, GWEN_BUFFER *buf)
CHIPCARD_API LC_PININFO * LC_Card_GetPinInfoById(LC_CARD *card, uint32_t pid)
CHIPCARD_API const char * LC_Card_GetLastResult(const LC_CARD *card)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoVerify(LC_CARD *card, const char *dptr, unsigned int dsize, const char *sigptr, unsigned int sigsize)
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_GetDfNode(const LC_CARD *card)
CHIPCARD_API uint32_t LC_Card_GetReaderFlags(const LC_CARD *cd)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_ParseData(LC_CARD *card, const char *format, GWEN_BUFFER *buf, GWEN_DB_NODE *dbData)
CHIPCARD_API void LC_Card_free(LC_CARD *cd)
CHIPCARD_API void LC_Card_Dump(const LC_CARD *cd, int indent)
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_SelectCard(LC_CARD *card, const char *s)
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_SelectMf(LC_CARD *card)
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_Open(LC_CARD *card)
CHIPCARD_API const GWEN_STRINGLIST * LC_Card_GetCardTypes(const LC_CARD *cd)
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_IsoDecipher(LC_CARD *card, const char *ptr, unsigned int size, GWEN_BUFFER *plainBuf)
CHIPCARD_API int LC_Card_GetLastSW1(const LC_CARD *card)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_ParseRecord(LC_CARD *card, int recNum, GWEN_BUFFER *buf, GWEN_DB_NODE *dbRecord)
struct LC_CARD LC_CARD
Definition: card.h:25
struct LC_PININFO LC_PININFO
Definition: pininfo.h:77
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)