libchipcard 5.0.0

card.h

Go to the documentation of this file.
00001 /***************************************************************************
00002     begin       : Mon Mar 01 2004
00003     copyright   : (C) 2004-2010 by Martin Preuss
00004     email       : martin@libchipcard.de
00005 
00006  ***************************************************************************
00007  *          Please see toplevel file COPYING for license details           *
00008  ***************************************************************************/
00009 
00010 
00011 #ifndef CHIPCARD_CLIENT_CARD_H
00012 #define CHIPCARD_CLIENT_CARD_H
00013 
00014 
00018 
00019 #include <gwenhywfar/inherit.h>
00020 
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024 
00025 typedef struct LC_CARD LC_CARD;
00026 
00027 #ifdef __cplusplus
00028 }
00029 #endif
00030 
00031 #include <chipcard/chipcard.h>
00032 #include <chipcard/client.h>
00033 #include <chipcard/sharedstuff/pininfo.h>
00034 
00035 
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039 
00040 GWEN_INHERIT_FUNCTION_LIB_DEFS(LC_CARD, CHIPCARD_API)
00041 GWEN_LIST2_FUNCTION_LIB_DEFS(LC_CARD, LC_Card, CHIPCARD_API)
00042 
00047 #define LC_CARD_ISO_FLAGS_EFID_MASK        0x00000001f
00048 
00050 #define LC_CARD_ISO_FLAGS_RECSEL_MASK      0x0000000e0
00051 
00053 #define   LC_CARD_ISO_FLAGS_RECSEL_FIRST   (0 << 5)
00054 
00056 #define   LC_CARD_ISO_FLAGS_RECSEL_LAST    (1 << 5)
00057 
00059 #define   LC_CARD_ISO_FLAGS_RECSEL_NEXT    (2 << 5)
00060 
00062 #define   LC_CARD_ISO_FLAGS_RECSEL_PREV    (3 << 5)
00063 
00065 #define   LC_CARD_ISO_FLAGS_RECSEL_GIVEN   (4 << 5)
00066 
00075 
00080 CHIPCARD_API
00081 void LC_Card_free(LC_CARD *cd);
00082 
00083 CHIPCARD_API
00084 void LC_Card_List2_freeAll(LC_CARD_LIST2 *l);
00085 
00086 
00092 CHIPCARD_API
00093 LC_CLIENT_RESULT LC_Card_Open(LC_CARD *card);
00094 
00100 CHIPCARD_API
00101 LC_CLIENT_RESULT LC_Card_Close(LC_CARD *card);
00121 
00128 CHIPCARD_API
00129 LC_CLIENT_RESULT LC_Card_ExecApdu(LC_CARD *card,
00130                                   const char *apdu,
00131                                   unsigned int len,
00132                                   GWEN_BUFFER *rbuf,
00133                                   LC_CLIENT_CMDTARGET t);
00134 
00145 CHIPCARD_API
00146 LC_CLIENT_RESULT LC_Card_ExecCommand(LC_CARD *card,
00147                                      const char *commandName,
00148                                      GWEN_DB_NODE *cmdData,
00149                                      GWEN_DB_NODE *rspData);
00150 
00155 CHIPCARD_API
00156 LC_CLIENT_RESULT LC_Card_BuildApdu(LC_CARD *card,
00157                                    const char *command,
00158                                    GWEN_DB_NODE *cmdData,
00159                                    GWEN_BUFFER *gbuf);
00160 
00179 CHIPCARD_API
00180 LC_CLIENT_RESULT LC_Card_SelectCard(LC_CARD *card, const char *s);
00181 
00182 CHIPCARD_API
00183 LC_CLIENT_RESULT LC_Card_SelectApp(LC_CARD *card, const char *appName);
00191 
00196 CHIPCARD_API
00197 LC_CLIENT_RESULT LC_Card_SelectMf(LC_CARD *card);
00198 
00206 CHIPCARD_API
00207 LC_CLIENT_RESULT LC_Card_SelectDf(LC_CARD *card, const char *fname);
00208 
00216 CHIPCARD_API
00217 LC_CLIENT_RESULT LC_Card_SelectEf(LC_CARD *card, const char *fname);
00225 CHIPCARD_API
00226 GWEN_XMLNODE *LC_Card_GetCardNode(const LC_CARD *card);
00227 
00228 CHIPCARD_API
00229 GWEN_XMLNODE *LC_Card_GetAppNode(const LC_CARD *card);
00230 
00231 CHIPCARD_API
00232 GWEN_XMLNODE *LC_Card_GetDfNode(const LC_CARD *card);
00233 
00234 CHIPCARD_API
00235 GWEN_XMLNODE *LC_Card_GetEfNode(const LC_CARD *card);
00236 
00246 
00251 CHIPCARD_API
00252 uint32_t LC_Card_GetCardId(const LC_CARD *cd);
00253 
00254 
00255 CHIPCARD_API
00256 const char *LC_Card_GetReaderType(const LC_CARD *cd);
00257 
00258 CHIPCARD_API
00259 const char *LC_Card_GetDriverType(const LC_CARD *cd);
00260 
00265 CHIPCARD_API
00266 uint32_t LC_Card_GetReaderFlags(const LC_CARD *cd);
00267 
00272 CHIPCARD_API
00273 const char *LC_Card_GetCardType(const LC_CARD *cd);
00274 
00279 CHIPCARD_API
00280 const GWEN_STRINGLIST *LC_Card_GetCardTypes(const LC_CARD *cd);
00281 
00290 CHIPCARD_API
00291 unsigned int LC_Card_GetAtr(const LC_CARD *cd,
00292                             const unsigned char **pbuf);
00293 
00294 
00298 CHIPCARD_API
00299 LC_CLIENT *LC_Card_GetClient(const LC_CARD *cd);
00310 CHIPCARD_API
00311 int LC_Card_GetLastSW1(const LC_CARD *card);
00312 
00313 CHIPCARD_API
00314 int LC_Card_GetLastSW2(const LC_CARD *card);
00315 
00316 CHIPCARD_API
00317 const char *LC_Card_GetLastResult(const LC_CARD *card);
00318 
00319 CHIPCARD_API
00320 const char *LC_Card_GetLastText(const LC_CARD *card);
00321 
00322 CHIPCARD_API
00323 void LC_Card_CreateResultString(const LC_CARD *card,
00324                                 const char *lastCommand,
00325                                 LC_CLIENT_RESULT res,
00326                                 GWEN_BUFFER *buf);
00334 CHIPCARD_API
00335 void LC_Card_Dump(const LC_CARD *cd, int indent);
00345 
00351 CHIPCARD_API
00352 LC_PININFO *LC_Card_GetPinInfoById(LC_CARD *card, uint32_t pid);
00353 
00361 CHIPCARD_API
00362 LC_PININFO *LC_Card_GetPinInfoByName(LC_CARD *card, const char *name);
00363 
00364 CHIPCARD_API
00365 LC_CLIENT_RESULT LC_Card_GetPinStatus(LC_CARD *card,
00366                                       unsigned int pid,
00367                                       int *maxErrors,
00368                                       int *currentErrors);
00369 
00370 CHIPCARD_API
00371 LC_CLIENT_RESULT LC_Card_GetInitialPin(LC_CARD *card,
00372                                        int id,
00373                                        unsigned char *buffer,
00374                                        unsigned int maxLen,
00375                                        unsigned int *pinLength);
00376 
00377 CHIPCARD_API
00378 LC_CLIENT_RESULT LC_Card_IsoVerifyPin(LC_CARD *card,
00379                                       uint32_t flags,
00380                                       const LC_PININFO *pi,
00381                                       const unsigned char *ptr,
00382                                       unsigned int size,
00383                                       int *triesLeft);
00384 
00385 CHIPCARD_API
00386 LC_CLIENT_RESULT LC_Card_IsoModifyPin(LC_CARD *card,
00387                                       uint32_t flags,
00388                                       const LC_PININFO *pi,
00389                                       const unsigned char *oldptr,
00390                                       unsigned int oldsize,
00391                                       const unsigned char *newptr,
00392                                       unsigned int newsize,
00393                                       int *triesLeft);
00394 
00395 CHIPCARD_API
00396 LC_CLIENT_RESULT LC_Card_IsoPerformVerification(LC_CARD *card,
00397                                                 uint32_t flags,
00398                                                 const LC_PININFO *pi,
00399                                                 int *triesLeft);
00400 
00401 CHIPCARD_API
00402 LC_CLIENT_RESULT LC_Card_IsoPerformModification(LC_CARD *card,
00403                                                 uint32_t flags,
00404                                                 const LC_PININFO *pi,
00405                                                 int *triesLeft);
00406 
00415 CHIPCARD_API
00416 LC_CLIENT_RESULT LC_Card_IsoReadBinary(LC_CARD *card,
00417                                        uint32_t flags,
00418                                        int offset,
00419                                        int size,
00420                                        GWEN_BUFFER *buf);
00421 
00422 CHIPCARD_API
00423 LC_CLIENT_RESULT LC_Card_IsoWriteBinary(LC_CARD *card,
00424                                         uint32_t flags,
00425                                         int offset,
00426                                         const char *ptr,
00427                                         unsigned int size);
00428 
00429 
00430 CHIPCARD_API
00431 LC_CLIENT_RESULT LC_Card_IsoUpdateBinary(LC_CARD *card,
00432                                          uint32_t flags,
00433                                          int offset,
00434                                          const char *ptr,
00435                                          unsigned int size);
00436 
00437 CHIPCARD_API
00438 LC_CLIENT_RESULT LC_Card_IsoEraseBinary(LC_CARD *card,
00439                                         uint32_t flags,
00440                                         int offset,
00441                                         unsigned int size);
00442 
00448 CHIPCARD_API
00449 LC_CLIENT_RESULT LC_Card_ReadBinary(LC_CARD *card,
00450                                     int offset,
00451                                     int size,
00452                                     GWEN_BUFFER *buf);
00453 
00461 
00462 CHIPCARD_API
00463 LC_CLIENT_RESULT LC_Card_IsoReadRecord(LC_CARD *card,
00464                                        uint32_t flags,
00465                                        int recNum,
00466                                        GWEN_BUFFER *buf);
00467 CHIPCARD_API
00468 LC_CLIENT_RESULT LC_Card_IsoWriteRecord(LC_CARD *card,
00469                                         uint32_t flags,
00470                                         int recNum,
00471                                         const char *ptr,
00472                                         unsigned int size);
00473 
00474 CHIPCARD_API
00475 LC_CLIENT_RESULT LC_Card_IsoAppendRecord(LC_CARD *card,
00476                                          uint32_t flags,
00477                                          const char *ptr,
00478                                          unsigned int size);
00479 
00480 CHIPCARD_API
00481 LC_CLIENT_RESULT LC_Card_IsoUpdateRecord(LC_CARD *card,
00482                                          uint32_t flags,
00483                                          int recNum,
00484                                          const char *ptr,
00485                                          unsigned int size);
00494 
00495 CHIPCARD_API
00496 LC_CLIENT_RESULT LC_Card_IsoManageSe(LC_CARD *card,
00497                                      int tmpl, int kids, int kidp, int ar);
00498 
00499 CHIPCARD_API
00500 LC_CLIENT_RESULT LC_Card_IsoEncipher(LC_CARD *card,
00501                                      const char *ptr,
00502                                      unsigned int size,
00503                                      GWEN_BUFFER *codeBuf);
00504 
00505 CHIPCARD_API
00506 LC_CLIENT_RESULT LC_Card_IsoDecipher(LC_CARD *card,
00507                                      const char *ptr,
00508                                      unsigned int size,
00509                                      GWEN_BUFFER *plainBuf);
00510 
00511 CHIPCARD_API
00512 LC_CLIENT_RESULT LC_Card_IsoSign(LC_CARD *card,
00513                                  const char *ptr,
00514                                  unsigned int size,
00515                                  GWEN_BUFFER *sigBuf);
00516 
00517 CHIPCARD_API
00518 LC_CLIENT_RESULT LC_Card_IsoVerify(LC_CARD *card,
00519                                    const char *dptr,
00520                                    unsigned int dsize,
00521                                    const char *sigptr,
00522                                    unsigned int sigsize);
00523 
00524 
00534 
00535 CHIPCARD_API
00536 LC_CLIENT_RESULT LC_Card_ParseData(LC_CARD *card,
00537                                    const char *format,
00538                                    GWEN_BUFFER *buf,
00539                                    GWEN_DB_NODE *dbData);
00540 
00541 CHIPCARD_API
00542 LC_CLIENT_RESULT LC_Card_CreateData(LC_CARD *card,
00543                                     const char *format,
00544                                     GWEN_BUFFER *buf,
00545                                     GWEN_DB_NODE *dbData);
00546 
00547 CHIPCARD_API
00548 LC_CLIENT_RESULT LC_Card_ParseRecord(LC_CARD *card,
00549                                      int recNum,
00550                                      GWEN_BUFFER *buf,
00551                                      GWEN_DB_NODE *dbRecord);
00552 
00553 CHIPCARD_API
00554 LC_CLIENT_RESULT LC_Card_CreateRecord(LC_CARD *card,
00555                                       int recNum,
00556                                       GWEN_BUFFER *buf,
00557                                       GWEN_DB_NODE *dbRecord);
00558 
00559 
00562 #ifdef __cplusplus
00563 }
00564 #endif
00565  /* addtogroup */
00567 
00568 
00569 #endif /* CHIPCARD_CLIENT_CARD_H */