00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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
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
00492
00493
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
00707
00708