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
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
00495
00496
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
00710
00711