crypttoken.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: crypttoken.h 988 2006-02-15 02:05:42Z aquamaniac $
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 GWENHYWFAR_API
00387 void GWEN_CryptToken_SetOpenFn(GWEN_CRYPTTOKEN *ct,
00388                                GWEN_CRYPTTOKEN_OPEN_FN fn);
00389 
00390 GWENHYWFAR_API
00391 GWEN_CRYPTTOKEN_OPEN_FN GWEN_CryptToken_GetOpenFn(const GWEN_CRYPTTOKEN *ct);
00392 
00393 GWENHYWFAR_API
00394 void GWEN_CryptToken_SetCreateFn(GWEN_CRYPTTOKEN *ct,
00395                                  GWEN_CRYPTTOKEN_CREATE_FN fn);
00396 
00397 GWENHYWFAR_API
00398 GWEN_CRYPTTOKEN_CREATE_FN GWEN_CryptToken_GetCreateFn(const GWEN_CRYPTTOKEN *ct);
00399 
00400 GWENHYWFAR_API
00401 void GWEN_CryptToken_SetCloseFn(GWEN_CRYPTTOKEN *ct,
00402                                 GWEN_CRYPTTOKEN_CLOSE_FN fn);
00403 
00404 GWENHYWFAR_API
00405 GWEN_CRYPTTOKEN_CLOSE_FN
00406   GWEN_CryptToken_GetCloseFn(const GWEN_CRYPTTOKEN *ct);
00407 
00408 GWENHYWFAR_API
00409 void GWEN_CryptToken_SetChangePinFn(GWEN_CRYPTTOKEN *ct,
00410                                     GWEN_CRYPTTOKEN_CHANGEPIN_FN fn);
00411 
00412 GWENHYWFAR_API
00413 void GWEN_CryptToken_SetSignFn(GWEN_CRYPTTOKEN *ct,
00414                                GWEN_CRYPTTOKEN_SIGN_FN fn);
00415 
00416 GWENHYWFAR_API
00417 void GWEN_CryptToken_SetVerifyFn(GWEN_CRYPTTOKEN *ct,
00418                                  GWEN_CRYPTTOKEN_VERIFY_FN fn);
00419 
00420 GWENHYWFAR_API
00421 void GWEN_CryptToken_SetEncryptFn(GWEN_CRYPTTOKEN *ct,
00422                                   GWEN_CRYPTTOKEN_ENCRYPT_FN fn);
00423 GWENHYWFAR_API
00424 void GWEN_CryptToken_SetDecryptFn(GWEN_CRYPTTOKEN *ct,
00425                                   GWEN_CRYPTTOKEN_DECRYPT_FN fn);
00426 
00427 GWENHYWFAR_API
00428 void GWEN_CryptToken_SetAuthSignFn(GWEN_CRYPTTOKEN *ct,
00429                                    GWEN_CRYPTTOKEN_AUTHSIGN_FN fn);
00430 
00431 GWENHYWFAR_API
00432 void GWEN_CryptToken_SetAuthVerifyFn(GWEN_CRYPTTOKEN *ct,
00433                                      GWEN_CRYPTTOKEN_AUTHVERIFY_FN fn);
00434 
00435 GWENHYWFAR_API
00436 void GWEN_CryptToken_SetReadKeyFn(GWEN_CRYPTTOKEN *ct,
00437                                   GWEN_CRYPTTOKEN_READKEY_FN fn);
00438 
00439 GWENHYWFAR_API
00440 void GWEN_CryptToken_SetWriteKeyFn(GWEN_CRYPTTOKEN *ct,
00441                                    GWEN_CRYPTTOKEN_WRITEKEY_FN fn);
00442 
00443 GWENHYWFAR_API
00444 void GWEN_CryptToken_SetReadKeySpecFn(GWEN_CRYPTTOKEN *ct,
00445                                       GWEN_CRYPTTOKEN_READKEYSPEC_FN fn);
00446 
00447 GWENHYWFAR_API
00448 void GWEN_CryptToken_SetWriteKeySpecFn(GWEN_CRYPTTOKEN *ct,
00449                                        GWEN_CRYPTTOKEN_WRITEKEYSPEC_FN fn);
00450 
00451 GWENHYWFAR_API
00452 void GWEN_CryptToken_SetGenerateKeyFn(GWEN_CRYPTTOKEN *ct,
00453                                       GWEN_CRYPTTOKEN_GENERATEKEY_FN fn);
00454 
00455 GWENHYWFAR_API
00456 void GWEN_CryptToken_SetFillContextListFn(GWEN_CRYPTTOKEN *ct,
00457                                           GWEN_CRYPTTOKEN_FILLCONTEXTLIST_FN fn);
00458 
00459 GWENHYWFAR_API
00460 void GWEN_CryptToken_SetFillSignInfoListFn(GWEN_CRYPTTOKEN *ct,
00461                                            GWEN_CRYPTTOKEN_FILLSIGNINFOLIST_FN fn);
00462 
00463 GWENHYWFAR_API
00464 void GWEN_CryptToken_SetFillCryptInfoListFn(GWEN_CRYPTTOKEN *ct,
00465                                             GWEN_CRYPTTOKEN_FILLCRYPTINFOLIST_FN fn);
00466 
00467 GWENHYWFAR_API
00468 void GWEN_CryptToken_SetFillKeyInfoListFn(GWEN_CRYPTTOKEN *ct,
00469                                           GWEN_CRYPTTOKEN_FILLKEYINFOLIST_FN fn);
00470 
00471 GWENHYWFAR_API
00472 void GWEN_CryptToken_SetFillUserListFn(GWEN_CRYPTTOKEN *ct,
00473                                        GWEN_CRYPTTOKEN_FILLUSERLIST_FN fn);
00474 
00475 GWENHYWFAR_API
00476 void GWEN_CryptToken_SetGetSignSeqFn(GWEN_CRYPTTOKEN *ct,
00477                                      GWEN_CRYPTTOKEN_GETSIGNSEQ_FN fn);
00478 
00479 GWENHYWFAR_API
00480 void GWEN_CryptToken_SetModifyUserFn(GWEN_CRYPTTOKEN *ct,
00481                                      GWEN_CRYPTTOKEN_MODIFYUSER_FN fn);
00482 
00483 GWENHYWFAR_API
00484 void
00485   GWEN_CryptToken_SetGetTokenIdDataFn(GWEN_CRYPTTOKEN *ct,
00486                                       GWEN_CRYPTTOKEN_GETTOKENIDDATA_FN fn);
00487 
00488 
00489 
00490 /* _________________________________________________________________________
00491  * AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
00492  *                               Virtual Functions
00493  * YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
00494  */
00495 
00496 GWENHYWFAR_API
00497 int GWEN_CryptToken_Open(GWEN_CRYPTTOKEN *ct, int manage);
00498 
00499 GWENHYWFAR_API
00500 int GWEN_CryptToken_Create(GWEN_CRYPTTOKEN *ct);
00501 
00502 GWENHYWFAR_API
00503 int GWEN_CryptToken_Close(GWEN_CRYPTTOKEN *ct);
00504 
00505 GWENHYWFAR_API
00506 int GWEN_CryptToken_ChangePin(GWEN_CRYPTTOKEN *ct,
00507                               GWEN_CRYPTTOKEN_PINTYPE pt);
00508 
00509 GWENHYWFAR_API
00510 int GWEN_CryptToken_Sign(GWEN_CRYPTTOKEN *ct,
00511                          const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00512                          const char *ptr,
00513                          unsigned int len,
00514                          GWEN_BUFFER *dst);
00515 
00516 GWENHYWFAR_API
00517 int GWEN_CryptToken_Verify(GWEN_CRYPTTOKEN *ct,
00518                            const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00519                            const char *ptr,
00520                            unsigned int len,
00521                            const char *sigptr,
00522                            unsigned int siglen);
00523 
00524 GWENHYWFAR_API
00525 int GWEN_CryptToken_AuthSign(GWEN_CRYPTTOKEN *ct,
00526                              const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00527                              const char *ptr,
00528                              unsigned int len,
00529                              GWEN_BUFFER *dst);
00530 
00531 GWENHYWFAR_API
00532 int GWEN_CryptToken_AuthVerify(GWEN_CRYPTTOKEN *ct,
00533                                const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00534                                const char *ptr,
00535                                unsigned int len,
00536                                const char *sigptr,
00537                                unsigned int siglen);
00538 
00539 GWENHYWFAR_API
00540 int GWEN_CryptToken_Encrypt(GWEN_CRYPTTOKEN *ct,
00541                             const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00542                             const char *ptr,
00543                             unsigned int len,
00544                             GWEN_BUFFER *dst);
00545 
00546 GWENHYWFAR_API
00547 int GWEN_CryptToken_Decrypt(GWEN_CRYPTTOKEN *ct,
00548                             const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00549                             const char *ptr,
00550                             unsigned int len,
00551                             GWEN_BUFFER *dst);
00552 
00553 GWENHYWFAR_API
00554 int GWEN_CryptToken_ReadKey(GWEN_CRYPTTOKEN *ct,
00555                             GWEN_TYPE_UINT32 kid,
00556                             GWEN_CRYPTKEY **key);
00557 
00558 GWENHYWFAR_API
00559 int GWEN_CryptToken_WriteKey(GWEN_CRYPTTOKEN *ct,
00560                              GWEN_TYPE_UINT32 kid,
00561                              const GWEN_CRYPTKEY *key);
00562 
00563 GWENHYWFAR_API
00564 int GWEN_CryptToken_ReadKeySpec(GWEN_CRYPTTOKEN *ct,
00565                                 GWEN_TYPE_UINT32 kid,
00566                                 GWEN_KEYSPEC **ks);
00567 
00568 GWENHYWFAR_API
00569 int GWEN_CryptToken_WriteKeySpec(GWEN_CRYPTTOKEN *ct,
00570                                  GWEN_TYPE_UINT32 kid,
00571                                  const GWEN_KEYSPEC *ks);
00572 
00573 GWENHYWFAR_API
00574 int GWEN_CryptToken_GenerateKey(GWEN_CRYPTTOKEN *ct,
00575                                 const GWEN_CRYPTTOKEN_KEYINFO *ki,
00576                                 GWEN_CRYPTKEY **key);
00577 
00578 GWENHYWFAR_API
00579 int GWEN_CryptToken_GetSignSeq(GWEN_CRYPTTOKEN *ct,
00580                                GWEN_TYPE_UINT32 kid,
00581                                GWEN_TYPE_UINT32 *signSeq);
00582 
00583 GWENHYWFAR_API
00584 int GWEN_CryptToken_FillContextList(GWEN_CRYPTTOKEN *ct,
00585                                     GWEN_CRYPTTOKEN_CONTEXT_LIST *l);
00586 
00587 GWENHYWFAR_API
00588 int GWEN_CryptToken_FillSignInfoList(GWEN_CRYPTTOKEN *ct,
00589                                      GWEN_CRYPTTOKEN_SIGNINFO_LIST *l);
00590 
00591 GWENHYWFAR_API
00592 int GWEN_CryptToken_FillCryptInfoList(GWEN_CRYPTTOKEN *ct,
00593                                       GWEN_CRYPTTOKEN_CRYPTINFO_LIST *l);
00594 
00595 GWENHYWFAR_API
00596 int GWEN_CryptToken_FillKeyInfoList(GWEN_CRYPTTOKEN *ct,
00597                                     GWEN_CRYPTTOKEN_KEYINFO_LIST *l);
00598 
00599 GWENHYWFAR_API
00600 int GWEN_CryptToken_FillUserList(GWEN_CRYPTTOKEN *ct,
00601                                  GWEN_CRYPTTOKEN_USER_LIST *ul);
00602 
00603 GWENHYWFAR_API
00604 int GWEN_CryptToken_ModifyUser(GWEN_CRYPTTOKEN *ct,
00605                                const GWEN_CRYPTTOKEN_USER *u);
00606 
00607 GWENHYWFAR_API
00608 int GWEN_CryptToken_GetTokenIdData(GWEN_CRYPTTOKEN *ct, GWEN_BUFFER *buf);
00609 
00610 
00611 GWENHYWFAR_API
00612 const GWEN_CRYPTTOKEN_SIGNINFO*
00613   GWEN_CryptToken_GetSignInfoByAlgos(GWEN_CRYPTTOKEN *ct,
00614                                      GWEN_CRYPTTOKEN_HASHALGO hashAlgo,
00615                                      GWEN_CRYPTTOKEN_PADDALGO paddAlgo);
00616 
00617 GWENHYWFAR_API
00618 const GWEN_CRYPTTOKEN_SIGNINFO*
00619   GWEN_CryptToken_GetSignInfoById(GWEN_CRYPTTOKEN *ct,
00620                                   GWEN_TYPE_UINT32 id);
00621 
00622 GWENHYWFAR_API
00623 const GWEN_CRYPTTOKEN_CRYPTINFO*
00624   GWEN_CryptToken_GetCryptInfoByAlgos(GWEN_CRYPTTOKEN *ct,
00625                                       GWEN_CRYPTTOKEN_CRYPTALGO cryptAlgo,
00626                                       GWEN_CRYPTTOKEN_PADDALGO paddAlgo);
00627 
00628 GWENHYWFAR_API
00629 const GWEN_CRYPTTOKEN_CRYPTINFO*
00630   GWEN_CryptToken_GetCryptInfoById(GWEN_CRYPTTOKEN *ct,
00631                                    GWEN_TYPE_UINT32 id);
00632 
00633 
00634 GWENHYWFAR_API
00635 const GWEN_CRYPTTOKEN_KEYINFO*
00636   GWEN_CryptToken_GetKeyInfoById(GWEN_CRYPTTOKEN *ct,
00637                                  GWEN_TYPE_UINT32 kid);
00638 
00639 GWENHYWFAR_API
00640 const GWEN_CRYPTTOKEN_CONTEXT*
00641   GWEN_CryptToken_GetContextById(GWEN_CRYPTTOKEN *ct,
00642                                  GWEN_TYPE_UINT32 id);
00643 
00650 GWENHYWFAR_API
00651 int
00652 GWEN_CryptToken_GetMatchingContexts(GWEN_CRYPTTOKEN *ct,
00653                                     const GWEN_CRYPTTOKEN_CONTEXT *pattern,
00654                                     GWEN_CRYPTTOKEN_CONTEXT_LIST *cl);
00655 
00656 GWENHYWFAR_API
00657   GWEN_CRYPTTOKEN_CONTEXT*
00658   GWEN_CryptToken_FindContextInList(const GWEN_CRYPTTOKEN_CONTEXT_LIST *cl,
00659                                     GWEN_TYPE_UINT32 id);
00660 
00661 GWENHYWFAR_API
00662 int GWEN_CryptToken_Hash(GWEN_CRYPTTOKEN_HASHALGO algo,
00663                          const char *src,
00664                          unsigned int slen,
00665                          GWEN_BUFFER *dstBuf);
00666 
00667 GWENHYWFAR_API
00668 int GWEN_CryptToken_Padd(GWEN_CRYPTTOKEN_PADDALGO algo,
00669                          unsigned int chunkSize,
00670                          GWEN_BUFFER *buf);
00671 
00672 GWENHYWFAR_API
00673 int GWEN_CryptToken_Unpadd(GWEN_CRYPTTOKEN_PADDALGO algo,
00674                            GWEN_BUFFER *buf);
00675 
00676 GWENHYWFAR_API
00677 int GWEN_CryptToken_AddContext(GWEN_CRYPTTOKEN *ct,
00678                                const GWEN_CRYPTTOKEN_CONTEXT *ctx);
00679 
00687 
00688 GWENHYWFAR_API
00689 int GWEN_CryptToken_TransformPin(GWEN_CRYPTTOKEN_PINENCODING peSrc,
00690                                  GWEN_CRYPTTOKEN_PINENCODING peDst,
00691                                  unsigned char *buffer,
00692                                  unsigned int bufLength,
00693                                  unsigned int *pinLength);
00694 
00697 #ifdef __cplusplus
00698 }
00699 #endif
00700 
00701 
00702 
00703 
00704 
00705 
00706 #endif /* GWEN_CRYPTTOKEN_H */
00707 
00708 

Generated on Wed Jun 21 00:59:52 2006 for gwenhywfar by  doxygen 1.4.6