card.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: card.h 163 2006-02-15 19:31:45Z aquamaniac $
00005     begin       : Mon Mar 01 2004
00006     copyright   : (C) 2004 by Martin Preuss
00007     email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *          Please see toplevel file COPYING for license details           *
00011  ***************************************************************************/
00012 
00013 
00014 #ifndef CHIPCARD_CLIENT_CARD_H
00015 #define CHIPCARD_CLIENT_CARD_H
00016 
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020 
00021 
00086 
00094 typedef struct LC_CARD LC_CARD;
00095 
00096 #include <chipcard2/chipcard2.h>
00097 
00098 #include <gwenhywfar/buffer.h>
00099 #include <gwenhywfar/inherit.h>
00100 #include <gwenhywfar/xml.h>
00101 #include <gwenhywfar/list2.h>
00102 #include <stdio.h>
00103 
00104 GWEN_INHERIT_FUNCTION_LIB_DEFS(LC_CARD, CHIPCARD_API)
00105 GWEN_LIST2_FUNCTION_LIB_DEFS(LC_CARD, LC_Card, CHIPCARD_API)
00106 
00107 
00108 
00115 #define LC_CARD_READERFLAGS_KEYPAD  LC_READER_FLAGS_KEYPAD
00116 
00117 #define LC_CARD_READERFLAGS_DISPLAY LC_READER_FLAGS_DISPLAY
00118 
00119 #define LC_CARD_READERFLAGS_NOINFO  LC_READER_FLAGS_NOINFO
00120 
00121 #define LC_CARD_READERFLAGS_REMOTE  LC_READER_FLAGS_REMOTE
00122 
00123 #define LC_CARD_READERFLAGS_AUTO    LC_READER_FLAGS_AUTO
00124 
00131 #define LC_CARD_ISO_FLAGS_EFID_MASK        0x00000001f
00132 
00134 #define LC_CARD_ISO_FLAGS_RECSEL_MASK      0x0000000e0
00135 
00137 #define   LC_CARD_ISO_FLAGS_RECSEL_FIRST   (0 << 5)
00138 
00140 #define   LC_CARD_ISO_FLAGS_RECSEL_LAST    (1 << 5)
00141 
00143 #define   LC_CARD_ISO_FLAGS_RECSEL_NEXT    (2 << 5)
00144 
00146 #define   LC_CARD_ISO_FLAGS_RECSEL_PREV    (3 << 5)
00147 
00149 #define   LC_CARD_ISO_FLAGS_RECSEL_GIVEN   (4 << 5)
00150 
00153 #include <chipcard2-client/client/client.h>
00154 #include <chipcard2/sharedstuff/pininfo.h>
00155 
00156 
00157 
00162 typedef LC_CLIENT_RESULT (*LC_CARD_OPEN_FN)(LC_CARD *card);
00163 typedef LC_CLIENT_RESULT (*LC_CARD_CLOSE_FN)(LC_CARD *card);
00164 
00165 typedef
00166 LC_CLIENT_RESULT (*LC_CARD_GETPINSTATUS_FN)(LC_CARD *card,
00167                                             unsigned int pid,
00168                                             int *maxErrors,
00169                                             int *currentErrors);
00170 
00171 typedef
00172 LC_CLIENT_RESULT (*LC_CARD_GETINITIALPIN_FN)(LC_CARD *card,
00173                                              int id,
00174                                              unsigned char *buffer,
00175                                              unsigned int maxLen,
00176                                              unsigned int *pinLength);
00177 
00178 
00179 typedef
00180 LC_CLIENT_RESULT (*LC_CARD_ISOREADBINARY_FN)(LC_CARD *card,
00181                                              GWEN_TYPE_UINT32 flags,
00182                                              int offset,
00183                                              int size,
00184                                              GWEN_BUFFER *buf);
00185 
00186 typedef
00187 LC_CLIENT_RESULT (*LC_CARD_ISOWRITEBINARY_FN)(LC_CARD *card,
00188                                               GWEN_TYPE_UINT32 flags,
00189                                               int offset,
00190                                               const char *ptr,
00191                                               unsigned int size);
00192 
00193 
00194 typedef
00195 LC_CLIENT_RESULT (*LC_CARD_ISOUPDATEBINARY_FN)(LC_CARD *card,
00196                                                GWEN_TYPE_UINT32 flags,
00197                                                int offset,
00198                                                const char *ptr,
00199                                                unsigned int size);
00200 
00201 typedef
00202 LC_CLIENT_RESULT (*LC_CARD_ISOERASEBINARY_FN)(LC_CARD *card,
00203                                               GWEN_TYPE_UINT32 flags,
00204                                               int offset,
00205                                               unsigned int size);
00206 
00207 typedef
00208 LC_CLIENT_RESULT (*LC_CARD_ISOREADRECORD_FN)(LC_CARD *card,
00209                                              GWEN_TYPE_UINT32 flags,
00210                                              int recNum,
00211                                              GWEN_BUFFER *buf);
00212 
00213 typedef
00214 LC_CLIENT_RESULT (*LC_CARD_ISOWRITERECORD_FN)(LC_CARD *card,
00215                                               GWEN_TYPE_UINT32 flags,
00216                                               int recNum,
00217                                               const char *ptr,
00218                                               unsigned int size);
00219 
00220 typedef
00221 LC_CLIENT_RESULT (*LC_CARD_ISOAPPENDRECORD_FN)(LC_CARD *card,
00222                                                GWEN_TYPE_UINT32 flags,
00223                                                const char *ptr,
00224                                                unsigned int size);
00225 
00226 typedef
00227 LC_CLIENT_RESULT (*LC_CARD_ISOUPDATERECORD_FN)(LC_CARD *card,
00228                                                GWEN_TYPE_UINT32 flags,
00229                                                int recNum,
00230                                                const char *ptr,
00231                                                unsigned int size);
00232 
00233 typedef
00234 LC_CLIENT_RESULT (*LC_CARD_ISOVERIFYPIN_FN)(LC_CARD *card,
00235                                             GWEN_TYPE_UINT32 flags,
00236                                             const LC_PININFO *pi,
00237                                             const unsigned char *ptr,
00238                                             unsigned int size,
00239                                             int *triesLeft);
00240 
00241 typedef
00242 LC_CLIENT_RESULT (*LC_CARD_ISOMODIFYPIN_FN)(LC_CARD *card,
00243                                             GWEN_TYPE_UINT32 flags,
00244                                             const LC_PININFO *pi,
00245                                             const unsigned char *oldptr,
00246                                             unsigned int oldsize,
00247                                             const unsigned char *newptr,
00248                                             unsigned int newsize,
00249                                             int *triesLeft);
00250 
00251 typedef
00252 LC_CLIENT_RESULT (*LC_CARD_ISOPERFORMVERIFICATION_FN)(LC_CARD *card,
00253                                                       GWEN_TYPE_UINT32 flags,
00254                                                       const LC_PININFO *pi,
00255                                                       int *triesLeft);
00256 
00257 typedef
00258 LC_CLIENT_RESULT (*LC_CARD_ISOPERFORMMODIFICATION_FN)(LC_CARD *card,
00259                                                       GWEN_TYPE_UINT32 flags,
00260                                                       const LC_PININFO *pi,
00261                                                       int *triesLeft);
00262 
00263 
00264 typedef LC_CLIENT_RESULT (*LC_CARD_ISOMANAGESE_FN)(LC_CARD *card,
00265                                                    int tmpl,
00266                                                    int kids, int kidp,
00267                                                    int ar);
00268 
00269 typedef LC_CLIENT_RESULT (*LC_CARD_ISOSIGN_FN)(LC_CARD *card,
00270                                                const char *ptr,
00271                                                unsigned int size,
00272                                                GWEN_BUFFER *sigBuf);
00273 
00274 typedef LC_CLIENT_RESULT (*LC_CARD_ISOVERIFY_FN)(LC_CARD *card,
00275                                                  const char *dptr,
00276                                                  unsigned int dsize,
00277                                                  const char *sigptr,
00278                                                  unsigned int sigsize);
00279 typedef LC_CLIENT_RESULT (*LC_CARD_ISOENCIPHER_FN)(LC_CARD *card,
00280                                                    const char *ptr,
00281                                                    unsigned int size,
00282                                                    GWEN_BUFFER *codeBuf);
00283 typedef LC_CLIENT_RESULT (*LC_CARD_ISODECIPHER_FN)(LC_CARD *card,
00284                                                    const char *ptr,
00285                                                    unsigned int size,
00286                                                    GWEN_BUFFER *codeBuf);
00287 
00297 
00298 CHIPCARD_API
00299 LC_CARD_OPEN_FN LC_Card_GetOpenFn(const LC_CARD *card);
00300 
00301 CHIPCARD_API
00302 void LC_Card_SetOpenFn(LC_CARD *card, LC_CARD_OPEN_FN fn);
00303 
00304 CHIPCARD_API
00305 LC_CARD_CLOSE_FN LC_Card_GetCloseFn(const LC_CARD *card);
00306 
00307 CHIPCARD_API
00308 void LC_Card_SetCloseFn(LC_CARD *card, LC_CARD_CLOSE_FN fn);
00309 
00310 CHIPCARD_API
00311 void LC_Card_SetGetInitialPinFn(LC_CARD *card, LC_CARD_GETINITIALPIN_FN fn);
00312 
00313 CHIPCARD_API
00314 void LC_Card_SetGetPinStatusFn(LC_CARD *card, LC_CARD_GETPINSTATUS_FN fn);
00315 
00316 CHIPCARD_API
00317 void LC_Card_SetIsoReadBinaryFn(LC_CARD *card, LC_CARD_ISOREADBINARY_FN f);
00318 
00319 CHIPCARD_API
00320 void LC_Card_SetIsoWriteBinaryFn(LC_CARD *card, LC_CARD_ISOWRITEBINARY_FN f);
00321 
00322 CHIPCARD_API
00323 void LC_Card_SetIsoUpdateBinaryFn(LC_CARD *card, LC_CARD_ISOUPDATEBINARY_FN f);
00324 
00325 CHIPCARD_API
00326 void LC_Card_SetIsoEraseBinaryFn(LC_CARD *card, LC_CARD_ISOERASEBINARY_FN f);
00327 
00328 CHIPCARD_API
00329 void LC_Card_SetIsoReadRecordFn(LC_CARD *card, LC_CARD_ISOREADRECORD_FN f);
00330 
00331 CHIPCARD_API
00332 void LC_Card_SetIsoWriteRecordFn(LC_CARD *card, LC_CARD_ISOWRITERECORD_FN f);
00333 
00334 CHIPCARD_API
00335 void LC_Card_SetIsoUpdateRecordFn(LC_CARD *card, LC_CARD_ISOUPDATERECORD_FN f);
00336 
00337 CHIPCARD_API
00338 void LC_Card_SetIsoAppendRecordFn(LC_CARD *card, LC_CARD_ISOAPPENDRECORD_FN f);
00339 
00340 CHIPCARD_API
00341 void LC_Card_SetIsoVerifyPinFn(LC_CARD *card, LC_CARD_ISOVERIFYPIN_FN f);
00342 
00343 CHIPCARD_API
00344 void LC_Card_SetIsoModifyPinFn(LC_CARD *card, LC_CARD_ISOMODIFYPIN_FN f);
00345 
00346 CHIPCARD_API
00347 void LC_Card_SetIsoPerformVerificationFn(LC_CARD *card,
00348                                          LC_CARD_ISOPERFORMVERIFICATION_FN f);
00349 
00350 CHIPCARD_API
00351 void LC_Card_SetIsoPerformModificationFn(LC_CARD *card,
00352                                          LC_CARD_ISOPERFORMMODIFICATION_FN f);
00353 
00354 CHIPCARD_API
00355 void LC_Card_SetIsoManageSeFn(LC_CARD *card, LC_CARD_ISOMANAGESE_FN f);
00356 
00357 CHIPCARD_API
00358 void LC_Card_SetIsoSignFn(LC_CARD *card, LC_CARD_ISOSIGN_FN f);
00359 
00360 CHIPCARD_API
00361 void LC_Card_SetIsoVerifyFn(LC_CARD *card, LC_CARD_ISOVERIFY_FN f);
00362 
00363 CHIPCARD_API
00364 void LC_Card_SetIsoEncipherFn(LC_CARD *card, LC_CARD_ISOENCIPHER_FN f);
00365 
00366 CHIPCARD_API
00367 void LC_Card_SetIsoDecipherFn(LC_CARD *card, LC_CARD_ISODECIPHER_FN f);
00384 CHIPCARD_API
00385 LC_CLIENT_RESULT LC_Card_Open(LC_CARD *card);
00386 
00396 CHIPCARD_API
00397 LC_CLIENT_RESULT LC_Card_Close(LC_CARD *card);
00398 
00399 
00404 CHIPCARD_API
00405 void LC_Card_free(LC_CARD *cd);
00406 
00407 CHIPCARD_API
00408 void LC_Card_List2_freeAll(LC_CARD_LIST2 *l);
00416 CHIPCARD_API
00417 LC_CLIENT_RESULT LC_Card_Check(LC_CARD *card);
00418 
00425 CHIPCARD_API
00426 LC_CLIENT_RESULT LC_Card_Reset(LC_CARD *card);
00427 
00435 
00440 CHIPCARD_API
00441 GWEN_TYPE_UINT32 LC_Card_GetCardId(const LC_CARD *cd);
00442 
00447 CHIPCARD_API
00448 GWEN_TYPE_UINT32 LC_Card_GetReaderFlags(const LC_CARD *cd);
00449 
00454 CHIPCARD_API
00455 const char *LC_Card_GetCardType(const LC_CARD *cd);
00456 
00461 CHIPCARD_API
00462 const GWEN_STRINGLIST *LC_Card_GetCardTypes(const LC_CARD *cd);
00463 
00472 CHIPCARD_API
00473 GWEN_BUFFER *LC_Card_GetAtr(const LC_CARD *cd);
00474 
00475 
00479 CHIPCARD_API
00480 LC_CLIENT *LC_Card_GetClient(const LC_CARD *cd);
00537 CHIPCARD_API
00538 int LC_Card_SelectApp(LC_CARD *card, const char *appName);
00539 
00544 CHIPCARD_API
00545 const char *LC_Card_GetSelectedApp(const LC_CARD *card);
00546 
00553 CHIPCARD_API
00554 LC_CLIENT_RESULT LC_Card_SelectCardAndApp(LC_CARD *card,
00555                                           const char *cardName,
00556                                           const char *appName);
00557 
00566 CHIPCARD_API
00567 LC_CLIENT_RESULT LC_Card_SelectMF(LC_CARD *card);
00585 CHIPCARD_API
00586 int LC_Card_GetRecordNumber(LC_CARD *card, const char *recName);
00587 
00593 CHIPCARD_API
00594 int LC_Card_ParseRecord(LC_CARD *card,
00595                         int recNum,
00596                         GWEN_BUFFER *buf,
00597                         GWEN_DB_NODE *dbRecord);
00598 
00604 CHIPCARD_API
00605 int LC_Card_CreateRecord(LC_CARD *card,
00606                          int recNum,
00607                          GWEN_BUFFER *buf,
00608                          GWEN_DB_NODE *dbRecord);
00609 
00620 CHIPCARD_API
00621 int LC_Card_ParseData(LC_CARD *card,
00622                       const char *format,
00623                       GWEN_BUFFER *buf,
00624                       GWEN_DB_NODE *dbData);
00625 
00635 CHIPCARD_API
00636 int LC_Card_CreateData(LC_CARD *card,
00637                        const char *format,
00638                        GWEN_BUFFER *buf,
00639                        GWEN_DB_NODE *dbData);
00640 
00656 CHIPCARD_API
00657 GWEN_XMLNODE *LC_Card_GetAppInfo(const LC_CARD *card);
00658 
00665 CHIPCARD_API
00666 GWEN_XMLNODE *LC_Card_GetEfInfo(const LC_CARD *card);
00667 
00674 CHIPCARD_API
00675 GWEN_XMLNODE *LC_Card_GetDfInfo(const LC_CARD *card);
00676 
00677 
00687 
00693 CHIPCARD_API
00694 LC_PININFO *LC_Card_GetPinInfoById(LC_CARD *card, GWEN_TYPE_UINT32 pid);
00695 
00703 CHIPCARD_API
00704 LC_PININFO *LC_Card_GetPinInfoByName(LC_CARD *card, const char *name);
00705 
00706 CHIPCARD_API
00707 LC_CLIENT_RESULT LC_Card_GetPinStatus(LC_CARD *card,
00708                                       unsigned int pid,
00709                                       int *maxErrors,
00710                                       int *currentErrors);
00711 
00712 CHIPCARD_API
00713 LC_CLIENT_RESULT LC_Card_GetInitialPin(LC_CARD *card,
00714                                        int id,
00715                                        unsigned char *buffer,
00716                                        unsigned int maxLen,
00717                                        unsigned int *pinLength);
00718 
00719 CHIPCARD_API
00720 LC_CLIENT_RESULT LC_Card_IsoVerifyPin(LC_CARD *card,
00721                                       GWEN_TYPE_UINT32 flags,
00722                                       const LC_PININFO *pi,
00723                                       const unsigned char *ptr,
00724                                       unsigned int size,
00725                                       int *triesLeft);
00726 
00727 CHIPCARD_API
00728 LC_CLIENT_RESULT LC_Card_IsoModifyPin(LC_CARD *card,
00729                                       GWEN_TYPE_UINT32 flags,
00730                                       const LC_PININFO *pi,
00731                                       const unsigned char *oldptr,
00732                                       unsigned int oldsize,
00733                                       const unsigned char *newptr,
00734                                       unsigned int newsize,
00735                                       int *triesLeft);
00736 
00737 CHIPCARD_API
00738 LC_CLIENT_RESULT LC_Card_IsoPerformVerification(LC_CARD *card,
00739                                                 GWEN_TYPE_UINT32 flags,
00740                                                 const LC_PININFO *pi,
00741                                                 int *triesLeft);
00742 
00743 CHIPCARD_API
00744 LC_CLIENT_RESULT LC_Card_IsoPerformModification(LC_CARD *card,
00745                                                 GWEN_TYPE_UINT32 flags,
00746                                                 const LC_PININFO *pi,
00747                                                 int *triesLeft);
00748 
00757 CHIPCARD_API
00758 LC_CLIENT_RESULT LC_Card_IsoReadBinary(LC_CARD *card,
00759                                        GWEN_TYPE_UINT32 flags,
00760                                        int offset,
00761                                        int size,
00762                                        GWEN_BUFFER *buf);
00763 
00764 CHIPCARD_API
00765 LC_CLIENT_RESULT LC_Card_IsoWriteBinary(LC_CARD *card,
00766                                         GWEN_TYPE_UINT32 flags,
00767                                         int offset,
00768                                         const char *ptr,
00769                                         unsigned int size);
00770 
00771 
00772 CHIPCARD_API
00773 LC_CLIENT_RESULT LC_Card_IsoUpdateBinary(LC_CARD *card,
00774                                          GWEN_TYPE_UINT32 flags,
00775                                          int offset,
00776                                          const char *ptr,
00777                                          unsigned int size);
00778 
00779 CHIPCARD_API
00780 LC_CLIENT_RESULT LC_Card_IsoEraseBinary(LC_CARD *card,
00781                                         GWEN_TYPE_UINT32 flags,
00782                                         int offset,
00783                                         unsigned int size);
00791 
00792 CHIPCARD_API
00793 LC_CLIENT_RESULT LC_Card_IsoReadRecord(LC_CARD *card,
00794                                        GWEN_TYPE_UINT32 flags,
00795                                        int recNum,
00796                                        GWEN_BUFFER *buf);
00797 CHIPCARD_API
00798 LC_CLIENT_RESULT LC_Card_IsoWriteRecord(LC_CARD *card,
00799                                         GWEN_TYPE_UINT32 flags,
00800                                         int recNum,
00801                                         const char *ptr,
00802                                         unsigned int size);
00803 
00804 CHIPCARD_API
00805 LC_CLIENT_RESULT LC_Card_IsoAppendRecord(LC_CARD *card,
00806                                          GWEN_TYPE_UINT32 flags,
00807                                          const char *ptr,
00808                                          unsigned int size);
00809 
00810 CHIPCARD_API
00811 LC_CLIENT_RESULT LC_Card_IsoUpdateRecord(LC_CARD *card,
00812                                          GWEN_TYPE_UINT32 flags,
00813                                          int recNum,
00814                                          const char *ptr,
00815                                          unsigned int size);
00824 
00825 CHIPCARD_API
00826 LC_CLIENT_RESULT LC_Card_IsoManageSe(LC_CARD *card,
00827                                      int tmpl, int kids, int kidp, int ar);
00828 
00829 CHIPCARD_API
00830 LC_CLIENT_RESULT LC_Card_IsoEncipher(LC_CARD *card,
00831                                      const char *ptr,
00832                                      unsigned int size,
00833                                      GWEN_BUFFER *codeBuf);
00834 
00835 CHIPCARD_API
00836 LC_CLIENT_RESULT LC_Card_IsoDecipher(LC_CARD *card,
00837                                      const char *ptr,
00838                                      unsigned int size,
00839                                      GWEN_BUFFER *plainBuf);
00840 
00841 CHIPCARD_API
00842 LC_CLIENT_RESULT LC_Card_IsoSign(LC_CARD *card,
00843                                  const char *ptr,
00844                                  unsigned int size,
00845                                  GWEN_BUFFER *sigBuf);
00846 
00847 CHIPCARD_API
00848 LC_CLIENT_RESULT LC_Card_IsoVerify(LC_CARD *card,
00849                                    const char *dptr,
00850                                    unsigned int dsize,
00851                                    const char *sigptr,
00852                                    unsigned int sigsize);
00853 
00854 
00866 CHIPCARD_API
00867 int LC_Card_GetLastSW1(const LC_CARD *card);
00868 
00869 CHIPCARD_API
00870 int LC_Card_GetLastSW2(const LC_CARD *card);
00871 
00872 CHIPCARD_API
00873 const char *LC_Card_GetLastResult(const LC_CARD *card);
00874 
00875 CHIPCARD_API
00876 const char *LC_Card_GetLastText(const LC_CARD *card);
00877 
00878 CHIPCARD_API
00879 void LC_Card_CreateResultString(const LC_CARD *card,
00880                                 const char *lastCommand,
00881                                 LC_CLIENT_RESULT res,
00882                                 GWEN_BUFFER *buf);
00890 CHIPCARD_API
00891 LC_CLIENT_RESULT LC_Card_ExecAPDU(LC_CARD *card,
00892                                   const char *apdu,
00893                                   unsigned int len,
00894                                   GWEN_BUFFER *rbuf,
00895                                   LC_CLIENT_CMDTARGET t,
00896                                   int timeout);
00897 
00898 CHIPCARD_API
00899 LC_CLIENT_RESULT LC_Card_ExecCommand(LC_CARD *card,
00900                                      GWEN_DB_NODE *dbReq,
00901                                      GWEN_DB_NODE *dbResp,
00902                                      int timeout);
00909 CHIPCARD_API
00910 void LC_Card_Dump(const LC_CARD *cd, FILE *f, int indent);
00919 
00923 CHIPCARD_API CHIPCARD_DEPRECATED
00924 LC_CLIENT_RESULT LC_Card_ReadBinary(LC_CARD *card,
00925                                     int offset,
00926                                     int size,
00927                                     GWEN_BUFFER *buf);
00928 
00930 CHIPCARD_API CHIPCARD_DEPRECATED
00931 LC_CLIENT_RESULT LC_Card_WriteBinary(LC_CARD *card,
00932                                      int offset,
00933                                      GWEN_BUFFER *buf);
00934 
00936 CHIPCARD_API CHIPCARD_DEPRECATED
00937 LC_CLIENT_RESULT LC_Card_WriteBinary2(LC_CARD *card,
00938                                       int offset,
00939                                       const char *ptr,
00940                                       unsigned int size);
00941 
00943 CHIPCARD_API CHIPCARD_DEPRECATED
00944 LC_CLIENT_RESULT LC_Card_GetDriverVar(LC_CARD *card,
00945                                       const char *varName,
00946                                       GWEN_BUFFER *vbuf);
00947 
00951  /* addtogroup */
00952 
00953 
00954 #ifdef __cplusplus
00955 }
00956 #endif
00957 
00958 
00959 #endif /* CHIPCARD_CLIENT_CARD_H */
00960 
00961 
00962 

Generated on Sat Sep 22 04:38:38 2007 for libchipcard2 by  doxygen 1.5.3