libchipcard  5.1.6
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);
228 LC_CLIENT_RESULT LC_Card_SelectEfById(LC_CARD *card, const int sid);
237 GWEN_XMLNODE *LC_Card_GetCardNode(const LC_CARD *card);
238 
240 GWEN_XMLNODE *LC_Card_GetAppNode(const LC_CARD *card);
241 
243 GWEN_XMLNODE *LC_Card_GetDfNode(const LC_CARD *card);
244 
246 GWEN_XMLNODE *LC_Card_GetEfNode(const LC_CARD *card);
247 
257 
263 uint32_t LC_Card_GetCardId(const LC_CARD *cd);
264 
265 
267 const char *LC_Card_GetReaderType(const LC_CARD *cd);
268 
270 const char *LC_Card_GetDriverType(const LC_CARD *cd);
271 
277 uint32_t LC_Card_GetReaderFlags(const LC_CARD *cd);
278 
284 const char *LC_Card_GetCardType(const LC_CARD *cd);
285 
291 const GWEN_STRINGLIST *LC_Card_GetCardTypes(const LC_CARD *cd);
292 
302 unsigned int LC_Card_GetAtr(const LC_CARD *cd,
303  const unsigned char **pbuf);
304 
305 
322 int LC_Card_GetLastSW1(const LC_CARD *card);
323 
325 int LC_Card_GetLastSW2(const LC_CARD *card);
326 
328 const char *LC_Card_GetLastResult(const LC_CARD *card);
329 
331 const char *LC_Card_GetLastText(const LC_CARD *card);
332 
334 void LC_Card_CreateResultString(const LC_CARD *card,
335  const char *lastCommand,
336  LC_CLIENT_RESULT res,
337  GWEN_BUFFER *buf);
346 void LC_Card_Dump(const LC_CARD *cd, int indent);
356 
363 LC_PININFO *LC_Card_GetPinInfoById(LC_CARD *card, uint32_t pid);
364 
373 LC_PININFO *LC_Card_GetPinInfoByName(LC_CARD *card, const char *name);
374 
377  unsigned int pid,
378  int *maxErrors,
379  int *currentErrors);
380 
383  int id,
384  unsigned char *buffer,
385  unsigned int maxLen,
386  unsigned int *pinLength);
387 
390  uint32_t flags,
391  const LC_PININFO *pi,
392  const unsigned char *ptr,
393  unsigned int size,
394  int *triesLeft);
395 
398  uint32_t flags,
399  const LC_PININFO *pi,
400  const unsigned char *oldptr,
401  unsigned int oldsize,
402  const unsigned char *newptr,
403  unsigned int newsize,
404  int *triesLeft);
405 
408  uint32_t flags,
409  const LC_PININFO *pi,
410  int *triesLeft);
411 
414  uint32_t flags,
415  const LC_PININFO *pi,
416  int *triesLeft);
417 
428  uint32_t flags,
429  int offset,
430  int size,
431  GWEN_BUFFER *buf);
432 
435  uint32_t flags,
436  int offset,
437  const char *ptr,
438  unsigned int size);
439 
440 
443  uint32_t flags,
444  int offset,
445  const char *ptr,
446  unsigned int size);
447 
450  uint32_t flags,
451  int offset,
452  unsigned int size);
453 
461  int offset,
462  int size,
463  GWEN_BUFFER *buf);
464 
472 
475  uint32_t flags,
476  int recNum,
477  GWEN_BUFFER *buf);
480  uint32_t flags,
481  int recNum,
482  const char *ptr,
483  unsigned int size);
484 
487  uint32_t flags,
488  const char *ptr,
489  unsigned int size);
490 
493  uint32_t flags,
494  int recNum,
495  const char *ptr,
496  unsigned int size);
505 
508  int tmpl, int kids, int kidp, int ar);
509 
512  const char *ptr,
513  unsigned int size,
514  GWEN_BUFFER *codeBuf);
515 
518  const char *ptr,
519  unsigned int size,
520  GWEN_BUFFER *plainBuf);
521 
524  const char *ptr,
525  unsigned int size,
526  GWEN_BUFFER *sigBuf);
527 
530  const char *dptr,
531  unsigned int dsize,
532  const char *sigptr,
533  unsigned int sigsize);
534 
537  int kid,
538  const unsigned char *ptr,
539  unsigned int size,
540  GWEN_BUFFER *rBuf);
541 
551 
554  const char *format,
555  GWEN_BUFFER *buf,
556  GWEN_DB_NODE *dbData);
557 
560  const char *format,
561  GWEN_BUFFER *buf,
562  GWEN_DB_NODE *dbData);
563 
566  int recNum,
567  GWEN_BUFFER *buf,
568  GWEN_DB_NODE *dbRecord);
569 
572  int recNum,
573  GWEN_BUFFER *buf,
574  GWEN_DB_NODE *dbRecord);
575 
576 
579 #ifdef __cplusplus
580 }
581 #endif
582  /* addtogroup */
584 
585 
586 #endif /* CHIPCARD_CLIENT_CARD_H */
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoManageSe(LC_CARD *card, int tmpl, int kids, int kidp, int ar)
LC_CLIENT_CMDTARGET
Definition: client.h:64
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_GetInitialPin(LC_CARD *card, int id, unsigned char *buffer, unsigned int maxLen, unsigned int *pinLength)
CHIPCARD_API void LC_Card_List2_freeAll(LC_CARD_LIST2 *l)
CHIPCARD_API LC_CLIENT * LC_Card_GetClient(const LC_CARD *cd)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoEraseBinary(LC_CARD *card, uint32_t flags, int offset, unsigned int size)
CHIPCARD_API uint32_t LC_Card_GetCardId(const LC_CARD *cd)
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_ExecCommand(LC_CARD *card, const char *commandName, GWEN_DB_NODE *cmdData, GWEN_DB_NODE *rspData)
struct LC_CLIENT LC_CLIENT
Definition: client.h:33
CHIPCARD_API uint32_t LC_Card_GetReaderFlags(const LC_CARD *cd)
CHIPCARD_API const char * LC_Card_GetLastText(const LC_CARD *card)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_Close(LC_CARD *card)
CHIPCARD_API GWEN_XMLNODE * LC_Card_GetCardNode(const LC_CARD *card)
CHIPCARD_API const char * LC_Card_GetCardType(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_ExecApdu(LC_CARD *card, const char *apdu, unsigned int len, GWEN_BUFFER *rbuf, LC_CLIENT_CMDTARGET t)
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_SelectApp(LC_CARD *card, const char *appName)
CHIPCARD_API GWEN_XMLNODE * LC_Card_GetDfNode(const 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_IsoAppendRecord(LC_CARD *card, uint32_t flags, const char *ptr, unsigned int size)
#define CHIPCARD_API
Definition: chipcard.h:50
CHIPCARD_API unsigned int LC_Card_GetAtr(const LC_CARD *cd, const unsigned char **pbuf)
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_IsoPerformVerification(LC_CARD *card, uint32_t flags, const LC_PININFO *pi, int *triesLeft)
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 const char * LC_Card_GetDriverType(const LC_CARD *cd)
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_SelectDf(LC_CARD *card, const char *fname)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_CreateRecord(LC_CARD *card, int recNum, GWEN_BUFFER *buf, GWEN_DB_NODE *dbRecord)
CHIPCARD_API LC_PININFO * LC_Card_GetPinInfoById(LC_CARD *card, uint32_t pid)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_GetPinStatus(LC_CARD *card, unsigned int pid, int *maxErrors, int *currentErrors)
CHIPCARD_API const char * LC_Card_GetLastResult(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 LC_CLIENT_RESULT LC_Card_ReadBinary(LC_CARD *card, int offset, int size, GWEN_BUFFER *buf)
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_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_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 const char * LC_Card_GetReaderType(const LC_CARD *cd)
CHIPCARD_API int LC_Card_GetLastSW1(const LC_CARD *card)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoDecipher(LC_CARD *card, const char *ptr, unsigned int size, GWEN_BUFFER *plainBuf)
CHIPCARD_API GWEN_XMLNODE * LC_Card_GetAppNode(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 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 void LC_Card_free(LC_CARD *cd)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_SelectCard(LC_CARD *card, const char *s)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_SelectMf(LC_CARD *card)
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_IsoReadBinary(LC_CARD *card, uint32_t flags, int offset, int size, GWEN_BUFFER *buf)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_Open(LC_CARD *card)
CHIPCARD_API void LC_Card_Dump(const LC_CARD *cd, int indent)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_SelectEfById(LC_CARD *card, const int sid)
CHIPCARD_API LC_CLIENT_RESULT LC_Card_IsoUpdateBinary(LC_CARD *card, uint32_t flags, int offset, const char *ptr, unsigned int size)
struct LC_CARD LC_CARD
Definition: card.h:25
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_ParseRecord(LC_CARD *card, int recNum, GWEN_BUFFER *buf, GWEN_DB_NODE *dbRecord)
CHIPCARD_API GWEN_XMLNODE * LC_Card_GetEfNode(const LC_CARD *card)
CHIPCARD_API const GWEN_STRINGLIST * LC_Card_GetCardTypes(const LC_CARD *cd)
struct LC_PININFO LC_PININFO
Definition: pininfo.h:77