crypttoken.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: crypttoken.h 1099 2006-12-25 16:32:51Z martin $
00005     begin       : Wed Mar 16 2005
00006     copyright   : (C) 2005 by Martin Preuss
00007     email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *          Please see toplevel file COPYING for license details           *
00011  ***************************************************************************/
00012 
00013 
00014 #ifndef GWEN_CRYPTTOKEN_H
00015 #define GWEN_CRYPTTOKEN_H
00016 
00017 #include <gwenhywfar/keyspec.h>
00018 #include <gwenhywfar/crypt.h>
00019 #include <gwenhywfar/buffer.h>
00020 #include <gwenhywfar/db.h>
00021 #include <gwenhywfar/xml.h>
00022 #include <gwenhywfar/plugin.h>
00023 
00024 #include <gwenhywfar/crypttoken_user.h>
00025 
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif
00029 
00030 #define GWEN_CRYPTMANAGER_NAME "crypttoken"
00031 
00032 
00033 #define GWEN_CRYPTTOKEN_FLAGS_MANAGES_SIGNSEQ           0x00000001
00034 #define GWEN_CRYPTTOKEN_FLAGS_PREDEF_CONTEXT_ONLY       0x00000002
00035 
00036 #define GWEN_CRYPTTOKEN_FLAGS_DISABLE_SMALLER_SIGNATURE 0x00000004
00037 
00038 #define GWEN_CRYPTTOKEN_FLAGS_FORCE_PIN_ENTRY           0x00000008
00039 
00040 
00041 #define GWEN_CRYPTTOKEN_GETPIN_FLAGS_CONFIRM            0x00000001
00042 #define GWEN_CRYPTTOKEN_GETPIN_FLAGS_NUMERIC            0x00000002
00043 #define GWEN_CRYPTTOKEN_GETPIN_FLAGS_SHOW               0x00000004
00044 #define GWEN_CRYPTTOKEN_GETPIN_FLAGS_RETRY              0x00000008
00045 #define GWEN_CRYPTTOKEN_GETPIN_FLAGS_ALLOW_DEFAULT      0x00000010
00046 
00047 
00049 #define GWEN_CRYPTTOKEN_MODES_FORCE_PIN_ENTRY           0x00000001
00050 
00055 #define GWEN_CRYPTTOKEN_KEYSTATUS_FREE     0
00056 #define GWEN_CRYPTTOKEN_KEYSTATUS_NEW      1
00057 #define GWEN_CRYPTTOKEN_KEYSTATUS_ACTIVE   2
00058 #define GWEN_CRYPTTOKEN_KEYSTATUS_UNKNOWN  99
00059 
00062 typedef struct GWEN_CRYPTTOKEN GWEN_CRYPTTOKEN;
00063 
00064 
00065 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_CRYPTTOKEN,
00066                             GWEN_CryptToken,
00067                             GWENHYWFAR_API)
00068 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_CRYPTTOKEN,
00069                                GWENHYWFAR_API)
00070 
00071 
00072 GWENHYWFAR_API
00073 GWEN_TYPE_UINT32 GWEN_CryptToken_Flag_fromString(const char *s);
00074 
00075 GWENHYWFAR_API
00076 GWEN_TYPE_UINT32 GWEN_CryptToken_Flags_fromDb(GWEN_DB_NODE *db,
00077                                               const char *n);
00078 GWENHYWFAR_API
00079 void GWEN_CryptToken_Flags_toDb(GWEN_DB_NODE *db,
00080                                 const char *n,
00081                                 GWEN_TYPE_UINT32 flags);
00082 
00083 
00084 typedef enum {
00085   GWEN_CryptToken_HashAlgo_Unknown=-1,
00086   GWEN_CryptToken_HashAlgo_None=0,
00087   GWEN_CryptToken_HashAlgo_Any,
00089   GWEN_CryptToken_HashAlgo_SHA1,
00091   GWEN_CryptToken_HashAlgo_RMD160,
00093   GWEN_CryptToken_HashAlgo_MD5,
00094 } GWEN_CRYPTTOKEN_HASHALGO;
00095 
00096 GWENHYWFAR_API
00097 GWEN_CRYPTTOKEN_HASHALGO GWEN_CryptToken_HashAlgo_fromString(const char *s);
00098 
00099 GWENHYWFAR_API
00100 const char *GWEN_CryptToken_HashAlgo_toString(GWEN_CRYPTTOKEN_HASHALGO a);
00101 
00102 
00103 typedef enum {
00104   GWEN_CryptToken_PaddAlgo_Unknown=-1,
00105   GWEN_CryptToken_PaddAlgo_None=0,
00106   GWEN_CryptToken_PaddAlgo_Any,
00108   GWEN_CryptToken_PaddAlgo_ISO9796_1,
00110   GWEN_CryptToken_PaddAlgo_ISO9796_1A4,
00112   GWEN_CryptToken_PaddAlgo_ISO9796_2,
00114   GWEN_CryptToken_PaddAlgo_PKCS1_1,
00116   GWEN_CryptToken_PaddAlgo_PKCS1_2,
00118   GWEN_CryptToken_PaddAlgo_LeftZero,
00120   GWEN_CryptToken_PaddAlgo_RightZero,
00122   GWEN_CryptToken_PaddAlgo_ANSIX9_23,
00123 } GWEN_CRYPTTOKEN_PADDALGO;
00124 
00125 GWENHYWFAR_API
00126 GWEN_CRYPTTOKEN_PADDALGO GWEN_CryptToken_PaddAlgo_fromString(const char *s);
00127 
00128 GWENHYWFAR_API
00129 const char *GWEN_CryptToken_PaddAlgo_toString(GWEN_CRYPTTOKEN_PADDALGO a);
00130 
00131 
00132 typedef enum {
00133   GWEN_CryptToken_CryptAlgo_Unknown=-1,
00134   GWEN_CryptToken_CryptAlgo_None=0,
00135   GWEN_CryptToken_CryptAlgo_Any,
00137   GWEN_CryptToken_CryptAlgo_RSA,
00139   GWEN_CryptToken_CryptAlgo_DSA,
00140   /* DES */
00141   GWEN_CryptToken_CryptAlgo_DES,
00143   GWEN_CryptToken_CryptAlgo_DES_3K
00144 } GWEN_CRYPTTOKEN_CRYPTALGO;
00145 
00146 GWENHYWFAR_API
00147 GWEN_CRYPTTOKEN_CRYPTALGO GWEN_CryptToken_CryptAlgo_fromString(const char *s);
00148 
00149 GWENHYWFAR_API
00150 const char *GWEN_CryptToken_CryptAlgo_toString(GWEN_CRYPTTOKEN_CRYPTALGO a);
00151 
00152 
00153 
00154 typedef enum {
00155   GWEN_CryptToken_Device_Unknown=-1,
00156   GWEN_CryptToken_Device_None=0,
00157   GWEN_CryptToken_Device_File,
00158   GWEN_CryptToken_Device_Card,
00159   GWEN_CryptToken_Device_Any=999
00160 } GWEN_CRYPTTOKEN_DEVICE;
00161 
00162 GWENHYWFAR_API
00163 GWEN_CRYPTTOKEN_DEVICE GWEN_CryptToken_Device_fromString(const char *s);
00164 
00165 GWENHYWFAR_API
00166 const char *GWEN_CryptToken_Device_toString(GWEN_CRYPTTOKEN_DEVICE d);
00167 
00168 
00169 
00170 typedef enum {
00171   GWEN_CryptToken_PinType_Unknown=-1,
00172   GWEN_CryptToken_PinType_None=0,
00173   GWEN_CryptToken_PinType_Access,
00174   GWEN_CryptToken_PinType_Manage
00175 } GWEN_CRYPTTOKEN_PINTYPE;
00176 
00177 GWENHYWFAR_API
00178 GWEN_CRYPTTOKEN_PINTYPE GWEN_CryptToken_PinType_fromString(const char *s);
00179 
00180 GWENHYWFAR_API
00181 const char *GWEN_CryptToken_PinType_toString(GWEN_CRYPTTOKEN_PINTYPE pt);
00182 
00183 
00184 
00185 typedef enum {
00186   GWEN_CryptToken_PinEncoding_Unknown=-1,
00187   GWEN_CryptToken_PinEncoding_None=0,
00188   GWEN_CryptToken_PinEncoding_Bin,
00189   GWEN_CryptToken_PinEncoding_BCD,
00190   GWEN_CryptToken_PinEncoding_ASCII,
00191   GWEN_CryptToken_PinEncoding_FPIN2
00192 } GWEN_CRYPTTOKEN_PINENCODING;
00193 
00194 GWENHYWFAR_API
00195 GWEN_CRYPTTOKEN_PINENCODING
00196 GWEN_CryptToken_PinEncoding_fromString(const char *s);
00197 
00198 GWENHYWFAR_API
00199 const char*
00200   GWEN_CryptToken_PinEncoding_toString(GWEN_CRYPTTOKEN_PINENCODING pe);
00201 
00202 
00203 #ifdef __cplusplus
00204 }
00205 #endif
00206 
00207 #include <gwenhywfar/crypttoken_signinfo.h>
00208 #include <gwenhywfar/crypttoken_cryptinfo.h>
00209 #include <gwenhywfar/crypttoken_keyinfo.h>
00210 #include <gwenhywfar/crypttoken_context.h>
00211 #include <gwenhywfar/crypttoken_plugin.h>
00212 
00213 
00214 #ifdef __cplusplus
00215 extern "C" {
00216 #endif
00217 
00218 
00219 
00224 
00225 
00226 
00227 typedef int (*GWEN_CRYPTTOKEN_OPEN_FN)(GWEN_CRYPTTOKEN *ct,
00228                                        int manage);
00229 typedef int (*GWEN_CRYPTTOKEN_CREATE_FN)(GWEN_CRYPTTOKEN *ct);
00230 typedef int (*GWEN_CRYPTTOKEN_CLOSE_FN)(GWEN_CRYPTTOKEN *ct);
00231 
00232 typedef int (*GWEN_CRYPTTOKEN_CHANGEPIN_FN)(GWEN_CRYPTTOKEN *ct,
00233                                             GWEN_CRYPTTOKEN_PINTYPE pt);
00234 
00235 typedef int (*GWEN_CRYPTTOKEN_SIGN_FN)(GWEN_CRYPTTOKEN *ct,
00236                                        const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00237                                        const char *ptr,
00238                                        unsigned int len,
00239                                        GWEN_BUFFER *dst);
00240 typedef int (*GWEN_CRYPTTOKEN_VERIFY_FN)(GWEN_CRYPTTOKEN *ct,
00241                                          const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00242                                          const char *ptr,
00243                                          unsigned int len,
00244                                          const char *sigptr,
00245                                          unsigned int siglen);
00246 typedef int (*GWEN_CRYPTTOKEN_ENCRYPT_FN)(GWEN_CRYPTTOKEN *ct,
00247                                           const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00248                                           const char *ptr,
00249                                           unsigned int len,
00250                                           GWEN_BUFFER *dst);
00251 typedef int (*GWEN_CRYPTTOKEN_DECRYPT_FN)(GWEN_CRYPTTOKEN *ct,
00252                                           const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00253                                           const char *ptr,
00254                                           unsigned int len,
00255                                           GWEN_BUFFER *dst);
00256 typedef int (*GWEN_CRYPTTOKEN_AUTHSIGN_FN)(GWEN_CRYPTTOKEN *ct,
00257                                            const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00258                                            const char *ptr,
00259                                            unsigned int len,
00260                                            GWEN_BUFFER *dst);
00261 typedef int
00262   (*GWEN_CRYPTTOKEN_AUTHVERIFY_FN)(GWEN_CRYPTTOKEN *ct,
00263                                    const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00264                                    const char *ptr,
00265                                    unsigned int len,
00266                                    const char *sigptr,
00267                                    unsigned int siglen);
00268 
00269 typedef int (*GWEN_CRYPTTOKEN_READKEY_FN)(GWEN_CRYPTTOKEN *ct,
00270                                           GWEN_TYPE_UINT32 kid,
00271                                           GWEN_CRYPTKEY **key);
00272 typedef int (*GWEN_CRYPTTOKEN_WRITEKEY_FN)(GWEN_CRYPTTOKEN *ct,
00273                                            GWEN_TYPE_UINT32 kid,
00274                                            const GWEN_CRYPTKEY *key);
00275 typedef int (*GWEN_CRYPTTOKEN_READKEYSPEC_FN)(GWEN_CRYPTTOKEN *ct,
00276                                               GWEN_TYPE_UINT32 kid,
00277                                               GWEN_KEYSPEC **ks);
00278 typedef int (*GWEN_CRYPTTOKEN_WRITEKEYSPEC_FN)(GWEN_CRYPTTOKEN *ct,
00279                                                GWEN_TYPE_UINT32 kid,
00280                                                const GWEN_KEYSPEC *ks);
00281 
00282 typedef int (*GWEN_CRYPTTOKEN_GENERATEKEY_FN)(GWEN_CRYPTTOKEN *ct,
00283                                               const GWEN_CRYPTTOKEN_KEYINFO *ki,
00284                                               GWEN_CRYPTKEY **key);
00285 
00286 typedef int (*GWEN_CRYPTTOKEN_GETSIGNSEQ_FN)(GWEN_CRYPTTOKEN *ct,
00287                                              GWEN_TYPE_UINT32 kid,
00288                                              GWEN_TYPE_UINT32 *signSeq);
00289 
00290 typedef int
00291   (*GWEN_CRYPTTOKEN_FILLCONTEXTLIST_FN)(GWEN_CRYPTTOKEN *ct,
00292                                         GWEN_CRYPTTOKEN_CONTEXT_LIST *l);
00293 typedef int
00294   (*GWEN_CRYPTTOKEN_FILLSIGNINFOLIST_FN)(GWEN_CRYPTTOKEN *ct,
00295                                          GWEN_CRYPTTOKEN_SIGNINFO_LIST *l);
00296 
00297 typedef int
00298   (*GWEN_CRYPTTOKEN_FILLCRYPTINFOLIST_FN)(GWEN_CRYPTTOKEN *ct,
00299                                           GWEN_CRYPTTOKEN_CRYPTINFO_LIST *l);
00300 
00301 typedef int
00302   (*GWEN_CRYPTTOKEN_FILLKEYINFOLIST_FN)(GWEN_CRYPTTOKEN *ct,
00303                                         GWEN_CRYPTTOKEN_KEYINFO_LIST *l);
00304 
00305 typedef int
00306   (*GWEN_CRYPTTOKEN_FILLUSERLIST_FN)(GWEN_CRYPTTOKEN *ct,
00307                                      GWEN_CRYPTTOKEN_USER_LIST *l);
00308 
00309 typedef int
00310   (*GWEN_CRYPTTOKEN_MODIFYUSER_FN)(GWEN_CRYPTTOKEN *ct,
00311                                    const GWEN_CRYPTTOKEN_USER *u);
00312 
00313 typedef int (*GWEN_CRYPTTOKEN_GETTOKENIDDATA_FN)(GWEN_CRYPTTOKEN *ct,
00314                                                  GWEN_BUFFER *buf);
00315 
00316 
00317 GWENHYWFAR_API
00318 GWEN_CRYPTTOKEN *GWEN_CryptToken_new(GWEN_PLUGIN_MANAGER *pm,
00319                                      GWEN_CRYPTTOKEN_DEVICE devType,
00320                                      const char *typeName,
00321                                      const char *subTypeName,
00322                                      const char *name);
00323 
00324 GWENHYWFAR_API
00325 void GWEN_CryptToken_free(GWEN_CRYPTTOKEN *ct);
00326 
00327 GWENHYWFAR_API
00328 GWEN_CRYPTTOKEN *GWEN_CryptToken_fromXml(GWEN_PLUGIN_MANAGER *pm,
00329                                          GWEN_CRYPTTOKEN_DEVICE devType,
00330                                          GWEN_XMLNODE *n);
00331 
00332 GWENHYWFAR_API
00333 int GWEN_CryptToken_ReadXml(GWEN_CRYPTTOKEN *ct, GWEN_XMLNODE *n);
00334 
00335 GWENHYWFAR_API
00336 GWEN_PLUGIN_MANAGER*
00337 GWEN_CryptToken_GetCryptManager(const GWEN_CRYPTTOKEN *ct);
00338 
00339 GWENHYWFAR_API
00340 const char *GWEN_CryptToken_GetTokenName(const GWEN_CRYPTTOKEN *ct);
00341 
00342 GWENHYWFAR_API
00343 void GWEN_CryptToken_SetTokenName(GWEN_CRYPTTOKEN *ct, const char *s);
00344 
00345 GWENHYWFAR_API
00346 const char *GWEN_CryptToken_GetTokenType(const GWEN_CRYPTTOKEN *ct);
00347 
00348 GWENHYWFAR_API
00349 const char *GWEN_CryptToken_GetTokenSubType(const GWEN_CRYPTTOKEN *ct);
00350 
00351 GWENHYWFAR_API
00352 GWEN_CRYPTTOKEN_DEVICE
00353 GWEN_CryptToken_GetDeviceType(const GWEN_CRYPTTOKEN *ct);
00354 
00355 GWENHYWFAR_API
00356 GWEN_TYPE_UINT32 GWEN_CryptToken_GetFlags(const GWEN_CRYPTTOKEN *ct);
00357 
00358 GWENHYWFAR_API
00359 void GWEN_CryptToken_SetFlags(GWEN_CRYPTTOKEN *ct, GWEN_TYPE_UINT32 fl);
00360 
00361 GWENHYWFAR_API
00362 void GWEN_CryptToken_AddFlags(GWEN_CRYPTTOKEN *ct, GWEN_TYPE_UINT32 fl);
00363 
00364 GWENHYWFAR_API
00365 void GWEN_CryptToken_SubFlags(GWEN_CRYPTTOKEN *ct, GWEN_TYPE_UINT32 fl);
00366 
00367 
00368 GWENHYWFAR_API
00369 GWEN_TYPE_UINT32 GWEN_CryptToken_GetModes(const GWEN_CRYPTTOKEN *ct);
00370 
00371 GWENHYWFAR_API
00372 void GWEN_CryptToken_SetModes(GWEN_CRYPTTOKEN *ct, GWEN_TYPE_UINT32 fl);
00373 
00374 GWENHYWFAR_API
00375 void GWEN_CryptToken_AddModes(GWEN_CRYPTTOKEN *ct, GWEN_TYPE_UINT32 fl);
00376 
00377 GWENHYWFAR_API
00378 void GWEN_CryptToken_SubModes(GWEN_CRYPTTOKEN *ct, GWEN_TYPE_UINT32 fl);
00379 
00380 GWENHYWFAR_API
00381 const char *GWEN_CryptToken_GetDescriptiveName(const GWEN_CRYPTTOKEN *ct);
00382 
00383 GWENHYWFAR_API
00384 void GWEN_CryptToken_SetDescriptiveName(GWEN_CRYPTTOKEN *ct, const char *s);
00385 
00386 
00387 
00388 
00389 GWENHYWFAR_API
00390 void GWEN_CryptToken_SetOpenFn(GWEN_CRYPTTOKEN *ct,
00391                                GWEN_CRYPTTOKEN_OPEN_FN fn);
00392 
00393 GWENHYWFAR_API
00394 GWEN_CRYPTTOKEN_OPEN_FN GWEN_CryptToken_GetOpenFn(const GWEN_CRYPTTOKEN *ct);
00395 
00396 GWENHYWFAR_API
00397 void GWEN_CryptToken_SetCreateFn(GWEN_CRYPTTOKEN *ct,
00398                                  GWEN_CRYPTTOKEN_CREATE_FN fn);
00399 
00400 GWENHYWFAR_API
00401 GWEN_CRYPTTOKEN_CREATE_FN GWEN_CryptToken_GetCreateFn(const GWEN_CRYPTTOKEN *ct);
00402 
00403 GWENHYWFAR_API
00404 void GWEN_CryptToken_SetCloseFn(GWEN_CRYPTTOKEN *ct,
00405                                 GWEN_CRYPTTOKEN_CLOSE_FN fn);
00406 
00407 GWENHYWFAR_API
00408 GWEN_CRYPTTOKEN_CLOSE_FN
00409   GWEN_CryptToken_GetCloseFn(const GWEN_CRYPTTOKEN *ct);
00410 
00411 GWENHYWFAR_API
00412 void GWEN_CryptToken_SetChangePinFn(GWEN_CRYPTTOKEN *ct,
00413                                     GWEN_CRYPTTOKEN_CHANGEPIN_FN fn);
00414 
00415 GWENHYWFAR_API
00416 void GWEN_CryptToken_SetSignFn(GWEN_CRYPTTOKEN *ct,
00417                                GWEN_CRYPTTOKEN_SIGN_FN fn);
00418 
00419 GWENHYWFAR_API
00420 void GWEN_CryptToken_SetVerifyFn(GWEN_CRYPTTOKEN *ct,
00421                                  GWEN_CRYPTTOKEN_VERIFY_FN fn);
00422 
00423 GWENHYWFAR_API
00424 void GWEN_CryptToken_SetEncryptFn(GWEN_CRYPTTOKEN *ct,
00425                                   GWEN_CRYPTTOKEN_ENCRYPT_FN fn);
00426 GWENHYWFAR_API
00427 void GWEN_CryptToken_SetDecryptFn(GWEN_CRYPTTOKEN *ct,
00428                                   GWEN_CRYPTTOKEN_DECRYPT_FN fn);
00429 
00430 GWENHYWFAR_API
00431 void GWEN_CryptToken_SetAuthSignFn(GWEN_CRYPTTOKEN *ct,
00432                                    GWEN_CRYPTTOKEN_AUTHSIGN_FN fn);
00433 
00434 GWENHYWFAR_API
00435 void GWEN_CryptToken_SetAuthVerifyFn(GWEN_CRYPTTOKEN *ct,
00436                                      GWEN_CRYPTTOKEN_AUTHVERIFY_FN fn);
00437 
00438 GWENHYWFAR_API
00439 void GWEN_CryptToken_SetReadKeyFn(GWEN_CRYPTTOKEN *ct,
00440                                   GWEN_CRYPTTOKEN_READKEY_FN fn);
00441 
00442 GWENHYWFAR_API
00443 void GWEN_CryptToken_SetWriteKeyFn(GWEN_CRYPTTOKEN *ct,
00444                                    GWEN_CRYPTTOKEN_WRITEKEY_FN fn);
00445 
00446 GWENHYWFAR_API
00447 void GWEN_CryptToken_SetReadKeySpecFn(GWEN_CRYPTTOKEN *ct,
00448                                       GWEN_CRYPTTOKEN_READKEYSPEC_FN fn);
00449 
00450 GWENHYWFAR_API
00451 void GWEN_CryptToken_SetWriteKeySpecFn(GWEN_CRYPTTOKEN *ct,
00452                                        GWEN_CRYPTTOKEN_WRITEKEYSPEC_FN fn);
00453 
00454 GWENHYWFAR_API
00455 void GWEN_CryptToken_SetGenerateKeyFn(GWEN_CRYPTTOKEN *ct,
00456                                       GWEN_CRYPTTOKEN_GENERATEKEY_FN fn);
00457 
00458 GWENHYWFAR_API
00459 void GWEN_CryptToken_SetFillContextListFn(GWEN_CRYPTTOKEN *ct,
00460                                           GWEN_CRYPTTOKEN_FILLCONTEXTLIST_FN fn);
00461 
00462 GWENHYWFAR_API
00463 void GWEN_CryptToken_SetFillSignInfoListFn(GWEN_CRYPTTOKEN *ct,
00464                                            GWEN_CRYPTTOKEN_FILLSIGNINFOLIST_FN fn);
00465 
00466 GWENHYWFAR_API
00467 void GWEN_CryptToken_SetFillCryptInfoListFn(GWEN_CRYPTTOKEN *ct,
00468                                             GWEN_CRYPTTOKEN_FILLCRYPTINFOLIST_FN fn);
00469 
00470 GWENHYWFAR_API
00471 void GWEN_CryptToken_SetFillKeyInfoListFn(GWEN_CRYPTTOKEN *ct,
00472                                           GWEN_CRYPTTOKEN_FILLKEYINFOLIST_FN fn);
00473 
00474 GWENHYWFAR_API
00475 void GWEN_CryptToken_SetFillUserListFn(GWEN_CRYPTTOKEN *ct,
00476                                        GWEN_CRYPTTOKEN_FILLUSERLIST_FN fn);
00477 
00478 GWENHYWFAR_API
00479 void GWEN_CryptToken_SetGetSignSeqFn(GWEN_CRYPTTOKEN *ct,
00480                                      GWEN_CRYPTTOKEN_GETSIGNSEQ_FN fn);
00481 
00482 GWENHYWFAR_API
00483 void GWEN_CryptToken_SetModifyUserFn(GWEN_CRYPTTOKEN *ct,
00484                                      GWEN_CRYPTTOKEN_MODIFYUSER_FN fn);
00485 
00486 GWENHYWFAR_API
00487 void
00488   GWEN_CryptToken_SetGetTokenIdDataFn(GWEN_CRYPTTOKEN *ct,
00489                                       GWEN_CRYPTTOKEN_GETTOKENIDDATA_FN fn);
00490 
00491 
00492 
00493 /* _________________________________________________________________________
00494  * AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
00495  *                               Virtual Functions
00496  * YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
00497  */
00498 
00499 GWENHYWFAR_API
00500 int GWEN_CryptToken_Open(GWEN_CRYPTTOKEN *ct, int manage);
00501 
00502 GWENHYWFAR_API
00503 int GWEN_CryptToken_Create(GWEN_CRYPTTOKEN *ct);
00504 
00505 GWENHYWFAR_API
00506 int GWEN_CryptToken_Close(GWEN_CRYPTTOKEN *ct);
00507 
00508 GWENHYWFAR_API
00509 int GWEN_CryptToken_ChangePin(GWEN_CRYPTTOKEN *ct,
00510                               GWEN_CRYPTTOKEN_PINTYPE pt);
00511 
00512 GWENHYWFAR_API
00513 int GWEN_CryptToken_Sign(GWEN_CRYPTTOKEN *ct,
00514                          const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00515                          const char *ptr,
00516                          unsigned int len,
00517                          GWEN_BUFFER *dst);
00518 
00519 GWENHYWFAR_API
00520 int GWEN_CryptToken_Verify(GWEN_CRYPTTOKEN *ct,
00521                            const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00522                            const char *ptr,
00523                            unsigned int len,
00524                            const char *sigptr,
00525                            unsigned int siglen);
00526 
00527 GWENHYWFAR_API
00528 int GWEN_CryptToken_AuthSign(GWEN_CRYPTTOKEN *ct,
00529                              const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00530                              const char *ptr,
00531                              unsigned int len,
00532                              GWEN_BUFFER *dst);
00533 
00534 GWENHYWFAR_API
00535 int GWEN_CryptToken_AuthVerify(GWEN_CRYPTTOKEN *ct,
00536                                const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00537                                const char *ptr,
00538                                unsigned int len,
00539                                const char *sigptr,
00540                                unsigned int siglen);
00541 
00542 GWENHYWFAR_API
00543 int GWEN_CryptToken_Encrypt(GWEN_CRYPTTOKEN *ct,
00544                             const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00545                             const char *ptr,
00546                             unsigned int len,
00547                             GWEN_BUFFER *dst);
00548 
00549 GWENHYWFAR_API
00550 int GWEN_CryptToken_Decrypt(GWEN_CRYPTTOKEN *ct,
00551                             const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00552                             const char *ptr,
00553                             unsigned int len,
00554                             GWEN_BUFFER *dst);
00555 
00556 GWENHYWFAR_API
00557 int GWEN_CryptToken_ReadKey(GWEN_CRYPTTOKEN *ct,
00558                             GWEN_TYPE_UINT32 kid,
00559                             GWEN_CRYPTKEY **key);
00560 
00561 GWENHYWFAR_API
00562 int GWEN_CryptToken_WriteKey(GWEN_CRYPTTOKEN *ct,
00563                              GWEN_TYPE_UINT32 kid,
00564                              const GWEN_CRYPTKEY *key);
00565 
00566 GWENHYWFAR_API
00567 int GWEN_CryptToken_ReadKeySpec(GWEN_CRYPTTOKEN *ct,
00568                                 GWEN_TYPE_UINT32 kid,
00569                                 GWEN_KEYSPEC **ks);
00570 
00571 GWENHYWFAR_API
00572 int GWEN_CryptToken_WriteKeySpec(GWEN_CRYPTTOKEN *ct,
00573                                  GWEN_TYPE_UINT32 kid,
00574                                  const GWEN_KEYSPEC *ks);
00575 
00576 GWENHYWFAR_API
00577 int GWEN_CryptToken_GenerateKey(GWEN_CRYPTTOKEN *ct,
00578                                 const GWEN_CRYPTTOKEN_KEYINFO *ki,
00579                                 GWEN_CRYPTKEY **key);
00580 
00581 GWENHYWFAR_API
00582 int GWEN_CryptToken_GetSignSeq(GWEN_CRYPTTOKEN *ct,
00583                                GWEN_TYPE_UINT32 kid,
00584                                GWEN_TYPE_UINT32 *signSeq);
00585 
00586 GWENHYWFAR_API
00587 int GWEN_CryptToken_FillContextList(GWEN_CRYPTTOKEN *ct,
00588                                     GWEN_CRYPTTOKEN_CONTEXT_LIST *l);
00589 
00590 GWENHYWFAR_API
00591 int GWEN_CryptToken_FillSignInfoList(GWEN_CRYPTTOKEN *ct,
00592                                      GWEN_CRYPTTOKEN_SIGNINFO_LIST *l);
00593 
00594 GWENHYWFAR_API
00595 int GWEN_CryptToken_FillCryptInfoList(GWEN_CRYPTTOKEN *ct,
00596                                       GWEN_CRYPTTOKEN_CRYPTINFO_LIST *l);
00597 
00598 GWENHYWFAR_API
00599 int GWEN_CryptToken_FillKeyInfoList(GWEN_CRYPTTOKEN *ct,
00600                                     GWEN_CRYPTTOKEN_KEYINFO_LIST *l);
00601 
00602 GWENHYWFAR_API
00603 int GWEN_CryptToken_FillUserList(GWEN_CRYPTTOKEN *ct,
00604                                  GWEN_CRYPTTOKEN_USER_LIST *ul);
00605 
00606 GWENHYWFAR_API
00607 int GWEN_CryptToken_ModifyUser(GWEN_CRYPTTOKEN *ct,
00608                                const GWEN_CRYPTTOKEN_USER *u);
00609 
00610 GWENHYWFAR_API
00611 int GWEN_CryptToken_GetTokenIdData(GWEN_CRYPTTOKEN *ct, GWEN_BUFFER *buf);
00612 
00613 
00614 GWENHYWFAR_API
00615 const GWEN_CRYPTTOKEN_SIGNINFO*
00616   GWEN_CryptToken_GetSignInfoByAlgos(GWEN_CRYPTTOKEN *ct,
00617                                      GWEN_CRYPTTOKEN_HASHALGO hashAlgo,
00618                                      GWEN_CRYPTTOKEN_PADDALGO paddAlgo);
00619 
00620 GWENHYWFAR_API
00621 const GWEN_CRYPTTOKEN_SIGNINFO*
00622   GWEN_CryptToken_GetSignInfoById(GWEN_CRYPTTOKEN *ct,
00623                                   GWEN_TYPE_UINT32 id);
00624 
00625 GWENHYWFAR_API
00626 const GWEN_CRYPTTOKEN_CRYPTINFO*
00627   GWEN_CryptToken_GetCryptInfoByAlgos(GWEN_CRYPTTOKEN *ct,
00628                                       GWEN_CRYPTTOKEN_CRYPTALGO cryptAlgo,
00629                                       GWEN_CRYPTTOKEN_PADDALGO paddAlgo);
00630 
00631 GWENHYWFAR_API
00632 const GWEN_CRYPTTOKEN_CRYPTINFO*
00633   GWEN_CryptToken_GetCryptInfoById(GWEN_CRYPTTOKEN *ct,
00634                                    GWEN_TYPE_UINT32 id);
00635 
00636 
00637 GWENHYWFAR_API
00638 const GWEN_CRYPTTOKEN_KEYINFO*
00639   GWEN_CryptToken_GetKeyInfoById(GWEN_CRYPTTOKEN *ct,
00640                                  GWEN_TYPE_UINT32 kid);
00641 
00642 GWENHYWFAR_API
00643 const GWEN_CRYPTTOKEN_CONTEXT*
00644   GWEN_CryptToken_GetContextById(GWEN_CRYPTTOKEN *ct,
00645                                  GWEN_TYPE_UINT32 id);
00646 
00653 GWENHYWFAR_API
00654 int
00655 GWEN_CryptToken_GetMatchingContexts(GWEN_CRYPTTOKEN *ct,
00656                                     const GWEN_CRYPTTOKEN_CONTEXT *pattern,
00657                                     GWEN_CRYPTTOKEN_CONTEXT_LIST *cl);
00658 
00659 GWENHYWFAR_API
00660   GWEN_CRYPTTOKEN_CONTEXT*
00661   GWEN_CryptToken_FindContextInList(const GWEN_CRYPTTOKEN_CONTEXT_LIST *cl,
00662                                     GWEN_TYPE_UINT32 id);
00663 
00664 GWENHYWFAR_API
00665 int GWEN_CryptToken_Hash(GWEN_CRYPTTOKEN_HASHALGO algo,
00666                          const char *src,
00667                          unsigned int slen,
00668                          GWEN_BUFFER *dstBuf);
00669 
00670 GWENHYWFAR_API
00671 int GWEN_CryptToken_Padd(GWEN_CRYPTTOKEN_PADDALGO algo,
00672                          unsigned int chunkSize,
00673                          GWEN_BUFFER *buf);
00674 
00675 GWENHYWFAR_API
00676 int GWEN_CryptToken_Unpadd(GWEN_CRYPTTOKEN_PADDALGO algo,
00677                            GWEN_BUFFER *buf);
00678 
00679 GWENHYWFAR_API
00680 int GWEN_CryptToken_AddContext(GWEN_CRYPTTOKEN *ct,
00681                                const GWEN_CRYPTTOKEN_CONTEXT *ctx);
00682 
00690 
00691 GWENHYWFAR_API
00692 int GWEN_CryptToken_TransformPin(GWEN_CRYPTTOKEN_PINENCODING peSrc,
00693                                  GWEN_CRYPTTOKEN_PINENCODING peDst,
00694                                  unsigned char *buffer,
00695                                  unsigned int bufLength,
00696                                  unsigned int *pinLength);
00697 
00700 #ifdef __cplusplus
00701 }
00702 #endif
00703 
00704 
00705 
00706 
00707 
00708 
00709 #endif /* GWEN_CRYPTTOKEN_H */
00710 
00711 

Generated on Tue May 1 12:56:30 2007 for gwenhywfar by  doxygen 1.5.1