libchipcard 5.0.0
|
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 */