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
00051 #define GWEN_CRYPTTOKEN_KEYSTATUS_FREE 0
00052 #define GWEN_CRYPTTOKEN_KEYSTATUS_NEW 1
00053 #define GWEN_CRYPTTOKEN_KEYSTATUS_ACTIVE 2
00054 #define GWEN_CRYPTTOKEN_KEYSTATUS_UNKNOWN 99
00055
00058 typedef struct GWEN_CRYPTTOKEN GWEN_CRYPTTOKEN;
00059
00060
00061 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_CRYPTTOKEN,
00062 GWEN_CryptToken,
00063 GWENHYWFAR_API)
00064 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_CRYPTTOKEN,
00065 GWENHYWFAR_API)
00066
00067
00068 GWEN_TYPE_UINT32 GWEN_CryptToken_Flag_fromString(const char *s);
00069 GWEN_TYPE_UINT32 GWEN_CryptToken_Flags_fromDb(GWEN_DB_NODE *db,
00070 const char *n);
00071 void GWEN_CryptToken_Flags_toDb(GWEN_DB_NODE *db,
00072 const char *n,
00073 GWEN_TYPE_UINT32 flags);
00074
00075
00076 typedef enum {
00077 GWEN_CryptToken_HashAlgo_Unknown=-1,
00078 GWEN_CryptToken_HashAlgo_None=0,
00079 GWEN_CryptToken_HashAlgo_Any,
00081 GWEN_CryptToken_HashAlgo_SHA1,
00083 GWEN_CryptToken_HashAlgo_RMD160,
00085 GWEN_CryptToken_HashAlgo_MD5,
00086 } GWEN_CRYPTTOKEN_HASHALGO;
00087
00088 GWEN_CRYPTTOKEN_HASHALGO GWEN_CryptToken_HashAlgo_fromString(const char *s);
00089 const char *GWEN_CryptToken_HashAlgo_toString(GWEN_CRYPTTOKEN_HASHALGO a);
00090
00091
00092 typedef enum {
00093 GWEN_CryptToken_PaddAlgo_Unknown=-1,
00094 GWEN_CryptToken_PaddAlgo_None=0,
00095 GWEN_CryptToken_PaddAlgo_Any,
00097 GWEN_CryptToken_PaddAlgo_ISO9796_1,
00099 GWEN_CryptToken_PaddAlgo_ISO9796_1A4,
00101 GWEN_CryptToken_PaddAlgo_ISO9796_2,
00103 GWEN_CryptToken_PaddAlgo_PKCS1_1,
00105 GWEN_CryptToken_PaddAlgo_PKCS1_2,
00107 GWEN_CryptToken_PaddAlgo_LeftZero,
00109 GWEN_CryptToken_PaddAlgo_RightZero,
00111 GWEN_CryptToken_PaddAlgo_ANSIX9_23,
00112 } GWEN_CRYPTTOKEN_PADDALGO;
00113
00114 GWEN_CRYPTTOKEN_PADDALGO GWEN_CryptToken_PaddAlgo_fromString(const char *s);
00115 const char *GWEN_CryptToken_PaddAlgo_toString(GWEN_CRYPTTOKEN_PADDALGO a);
00116
00117
00118 typedef enum {
00119 GWEN_CryptToken_CryptAlgo_Unknown=-1,
00120 GWEN_CryptToken_CryptAlgo_None=0,
00121 GWEN_CryptToken_CryptAlgo_Any,
00123 GWEN_CryptToken_CryptAlgo_RSA,
00125 GWEN_CryptToken_CryptAlgo_DSA,
00126
00127 GWEN_CryptToken_CryptAlgo_DES,
00129 GWEN_CryptToken_CryptAlgo_DES_3K
00130 } GWEN_CRYPTTOKEN_CRYPTALGO;
00131
00132 GWEN_CRYPTTOKEN_CRYPTALGO GWEN_CryptToken_CryptAlgo_fromString(const char *s);
00133 const char *GWEN_CryptToken_CryptAlgo_toString(GWEN_CRYPTTOKEN_CRYPTALGO a);
00134
00135
00136
00137 typedef enum {
00138 GWEN_CryptToken_Device_Unknown=-1,
00139 GWEN_CryptToken_Device_None=0,
00140 GWEN_CryptToken_Device_File,
00141 GWEN_CryptToken_Device_Card,
00142 GWEN_CryptToken_Device_Any=999
00143 } GWEN_CRYPTTOKEN_DEVICE;
00144
00145 GWEN_CRYPTTOKEN_DEVICE GWEN_CryptToken_Device_fromString(const char *s);
00146 const char *GWEN_CryptToken_Device_toString(GWEN_CRYPTTOKEN_DEVICE d);
00147
00148
00149
00150 typedef enum {
00151 GWEN_CryptToken_PinType_Unknown=-1,
00152 GWEN_CryptToken_PinType_None=0,
00153 GWEN_CryptToken_PinType_Access,
00154 GWEN_CryptToken_PinType_Manage
00155 } GWEN_CRYPTTOKEN_PINTYPE;
00156
00157 GWEN_CRYPTTOKEN_PINTYPE GWEN_CryptToken_PinType_fromString(const char *s);
00158 const char *GWEN_CryptToken_PinType_toString(GWEN_CRYPTTOKEN_PINTYPE pt);
00159
00160
00161
00162 typedef enum {
00163 GWEN_CryptToken_PinEncoding_Unknown=-1,
00164 GWEN_CryptToken_PinEncoding_None=0,
00165 GWEN_CryptToken_PinEncoding_Bin,
00166 GWEN_CryptToken_PinEncoding_BCD,
00167 GWEN_CryptToken_PinEncoding_ASCII,
00168 GWEN_CryptToken_PinEncoding_FPIN2
00169 } GWEN_CRYPTTOKEN_PINENCODING;
00170
00171 GWEN_CRYPTTOKEN_PINENCODING
00172 GWEN_CryptToken_PinEncoding_fromString(const char *s);
00173 const char*
00174 GWEN_CryptToken_PinEncoding_toString(GWEN_CRYPTTOKEN_PINENCODING pe);
00175
00176
00177 #ifdef __cplusplus
00178 }
00179 #endif
00180
00181 #include <gwenhywfar/crypttoken_signinfo.h>
00182 #include <gwenhywfar/crypttoken_cryptinfo.h>
00183 #include <gwenhywfar/crypttoken_keyinfo.h>
00184 #include <gwenhywfar/crypttoken_context.h>
00185 #include <gwenhywfar/crypttoken_plugin.h>
00186
00187
00188 #ifdef __cplusplus
00189 extern "C" {
00190 #endif
00191
00192
00193
00198
00199
00200
00201 typedef int (*GWEN_CRYPTTOKEN_OPEN_FN)(GWEN_CRYPTTOKEN *ct,
00202 int manage);
00203 typedef int (*GWEN_CRYPTTOKEN_CREATE_FN)(GWEN_CRYPTTOKEN *ct);
00204 typedef int (*GWEN_CRYPTTOKEN_CLOSE_FN)(GWEN_CRYPTTOKEN *ct);
00205
00206 typedef int (*GWEN_CRYPTTOKEN_CHANGEPIN_FN)(GWEN_CRYPTTOKEN *ct,
00207 GWEN_CRYPTTOKEN_PINTYPE pt);
00208
00209 typedef int (*GWEN_CRYPTTOKEN_SIGN_FN)(GWEN_CRYPTTOKEN *ct,
00210 const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00211 const char *ptr,
00212 unsigned int len,
00213 GWEN_BUFFER *dst);
00214 typedef int (*GWEN_CRYPTTOKEN_VERIFY_FN)(GWEN_CRYPTTOKEN *ct,
00215 const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00216 const char *ptr,
00217 unsigned int len,
00218 const char *sigptr,
00219 unsigned int siglen);
00220 typedef int (*GWEN_CRYPTTOKEN_ENCRYPT_FN)(GWEN_CRYPTTOKEN *ct,
00221 const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00222 const char *ptr,
00223 unsigned int len,
00224 GWEN_BUFFER *dst);
00225 typedef int (*GWEN_CRYPTTOKEN_DECRYPT_FN)(GWEN_CRYPTTOKEN *ct,
00226 const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00227 const char *ptr,
00228 unsigned int len,
00229 GWEN_BUFFER *dst);
00230 typedef int (*GWEN_CRYPTTOKEN_READKEY_FN)(GWEN_CRYPTTOKEN *ct,
00231 GWEN_TYPE_UINT32 kid,
00232 GWEN_CRYPTKEY **key);
00233 typedef int (*GWEN_CRYPTTOKEN_WRITEKEY_FN)(GWEN_CRYPTTOKEN *ct,
00234 GWEN_TYPE_UINT32 kid,
00235 const GWEN_CRYPTKEY *key);
00236 typedef int (*GWEN_CRYPTTOKEN_READKEYSPEC_FN)(GWEN_CRYPTTOKEN *ct,
00237 GWEN_TYPE_UINT32 kid,
00238 GWEN_KEYSPEC **ks);
00239 typedef int (*GWEN_CRYPTTOKEN_WRITEKEYSPEC_FN)(GWEN_CRYPTTOKEN *ct,
00240 GWEN_TYPE_UINT32 kid,
00241 const GWEN_KEYSPEC *ks);
00242
00243 typedef int (*GWEN_CRYPTTOKEN_GENERATEKEY_FN)(GWEN_CRYPTTOKEN *ct,
00244 const GWEN_CRYPTTOKEN_KEYINFO *ki,
00245 GWEN_CRYPTKEY **key);
00246
00247 typedef int (*GWEN_CRYPTTOKEN_GETSIGNSEQ_FN)(GWEN_CRYPTTOKEN *ct,
00248 GWEN_TYPE_UINT32 kid,
00249 GWEN_TYPE_UINT32 *signSeq);
00250
00251 typedef int
00252 (*GWEN_CRYPTTOKEN_FILLCONTEXTLIST_FN)(GWEN_CRYPTTOKEN *ct,
00253 GWEN_CRYPTTOKEN_CONTEXT_LIST *l);
00254 typedef int
00255 (*GWEN_CRYPTTOKEN_FILLSIGNINFOLIST_FN)(GWEN_CRYPTTOKEN *ct,
00256 GWEN_CRYPTTOKEN_SIGNINFO_LIST *l);
00257
00258 typedef int
00259 (*GWEN_CRYPTTOKEN_FILLCRYPTINFOLIST_FN)(GWEN_CRYPTTOKEN *ct,
00260 GWEN_CRYPTTOKEN_CRYPTINFO_LIST *l);
00261
00262 typedef int
00263 (*GWEN_CRYPTTOKEN_FILLKEYINFOLIST_FN)(GWEN_CRYPTTOKEN *ct,
00264 GWEN_CRYPTTOKEN_KEYINFO_LIST *l);
00265
00266 typedef int
00267 (*GWEN_CRYPTTOKEN_FILLUSERLIST_FN)(GWEN_CRYPTTOKEN *ct,
00268 GWEN_CRYPTTOKEN_USER_LIST *l);
00269
00270 typedef int
00271 (*GWEN_CRYPTTOKEN_MODIFYUSER_FN)(GWEN_CRYPTTOKEN *ct,
00272 const GWEN_CRYPTTOKEN_USER *u);
00273
00274 typedef int (*GWEN_CRYPTTOKEN_GETTOKENIDDATA_FN)(GWEN_CRYPTTOKEN *ct,
00275 GWEN_BUFFER *buf);
00276
00277
00278 GWEN_CRYPTTOKEN *GWEN_CryptToken_new(GWEN_PLUGIN_MANAGER *pm,
00279 GWEN_CRYPTTOKEN_DEVICE devType,
00280 const char *typeName,
00281 const char *subTypeName,
00282 const char *name);
00283 void GWEN_CryptToken_free(GWEN_CRYPTTOKEN *ct);
00284
00285 GWEN_CRYPTTOKEN *GWEN_CryptToken_fromXml(GWEN_PLUGIN_MANAGER *pm,
00286 GWEN_CRYPTTOKEN_DEVICE devType,
00287 GWEN_XMLNODE *n);
00288
00289 int GWEN_CryptToken_ReadXml(GWEN_CRYPTTOKEN *ct, GWEN_XMLNODE *n);
00290
00291 GWEN_PLUGIN_MANAGER*
00292 GWEN_CryptToken_GetCryptManager(const GWEN_CRYPTTOKEN *ct);
00293 const char *GWEN_CryptToken_GetTokenName(const GWEN_CRYPTTOKEN *ct);
00294 void GWEN_CryptToken_SetTokenName(GWEN_CRYPTTOKEN *ct, const char *s);
00295
00296 const char *GWEN_CryptToken_GetTokenType(const GWEN_CRYPTTOKEN *ct);
00297 const char *GWEN_CryptToken_GetTokenSubType(const GWEN_CRYPTTOKEN *ct);
00298
00299 GWEN_CRYPTTOKEN_DEVICE
00300 GWEN_CryptToken_GetDeviceType(const GWEN_CRYPTTOKEN *ct);
00301
00302 GWEN_TYPE_UINT32 GWEN_CryptToken_GetFlags(const GWEN_CRYPTTOKEN *ct);
00303 void GWEN_CryptToken_SetFlags(GWEN_CRYPTTOKEN *ct, GWEN_TYPE_UINT32 fl);
00304 void GWEN_CryptToken_AddFlags(GWEN_CRYPTTOKEN *ct, GWEN_TYPE_UINT32 fl);
00305 void GWEN_CryptToken_SubFlags(GWEN_CRYPTTOKEN *ct, GWEN_TYPE_UINT32 fl);
00306
00307 const char *GWEN_CryptToken_GetDescriptiveName(const GWEN_CRYPTTOKEN *ct);
00308 void GWEN_CryptToken_SetDescriptiveName(GWEN_CRYPTTOKEN *ct, const char *s);
00309
00310 void GWEN_CryptToken_SetOpenFn(GWEN_CRYPTTOKEN *ct,
00311 GWEN_CRYPTTOKEN_OPEN_FN fn);
00312 GWEN_CRYPTTOKEN_OPEN_FN GWEN_CryptToken_GetOpenFn(const GWEN_CRYPTTOKEN *ct);
00313
00314 void GWEN_CryptToken_SetCreateFn(GWEN_CRYPTTOKEN *ct,
00315 GWEN_CRYPTTOKEN_CREATE_FN fn);
00316 GWEN_CRYPTTOKEN_CREATE_FN GWEN_CryptToken_GetCreateFn(const GWEN_CRYPTTOKEN *ct);
00317
00318 void GWEN_CryptToken_SetCloseFn(GWEN_CRYPTTOKEN *ct,
00319 GWEN_CRYPTTOKEN_CLOSE_FN fn);
00320 GWEN_CRYPTTOKEN_CLOSE_FN
00321 GWEN_CryptToken_GetCloseFn(const GWEN_CRYPTTOKEN *ct);
00322
00323 void GWEN_CryptToken_SetChangePinFn(GWEN_CRYPTTOKEN *ct,
00324 GWEN_CRYPTTOKEN_CHANGEPIN_FN fn);
00325
00326 void GWEN_CryptToken_SetSignFn(GWEN_CRYPTTOKEN *ct,
00327 GWEN_CRYPTTOKEN_SIGN_FN fn);
00328 void GWEN_CryptToken_SetVerifyFn(GWEN_CRYPTTOKEN *ct,
00329 GWEN_CRYPTTOKEN_VERIFY_FN fn);
00330 void GWEN_CryptToken_SetEncryptFn(GWEN_CRYPTTOKEN *ct,
00331 GWEN_CRYPTTOKEN_ENCRYPT_FN fn);
00332 void GWEN_CryptToken_SetDecryptFn(GWEN_CRYPTTOKEN *ct,
00333 GWEN_CRYPTTOKEN_DECRYPT_FN fn);
00334 void GWEN_CryptToken_SetReadKeyFn(GWEN_CRYPTTOKEN *ct,
00335 GWEN_CRYPTTOKEN_READKEY_FN fn);
00336 void GWEN_CryptToken_SetWriteKeyFn(GWEN_CRYPTTOKEN *ct,
00337 GWEN_CRYPTTOKEN_WRITEKEY_FN fn);
00338 void GWEN_CryptToken_SetReadKeySpecFn(GWEN_CRYPTTOKEN *ct,
00339 GWEN_CRYPTTOKEN_READKEYSPEC_FN fn);
00340 void GWEN_CryptToken_SetWriteKeySpecFn(GWEN_CRYPTTOKEN *ct,
00341 GWEN_CRYPTTOKEN_WRITEKEYSPEC_FN fn);
00342 void GWEN_CryptToken_SetGenerateKeyFn(GWEN_CRYPTTOKEN *ct,
00343 GWEN_CRYPTTOKEN_GENERATEKEY_FN fn);
00344 void GWEN_CryptToken_SetFillContextListFn(GWEN_CRYPTTOKEN *ct,
00345 GWEN_CRYPTTOKEN_FILLCONTEXTLIST_FN fn);
00346 void GWEN_CryptToken_SetFillSignInfoListFn(GWEN_CRYPTTOKEN *ct,
00347 GWEN_CRYPTTOKEN_FILLSIGNINFOLIST_FN fn);
00348 void GWEN_CryptToken_SetFillCryptInfoListFn(GWEN_CRYPTTOKEN *ct,
00349 GWEN_CRYPTTOKEN_FILLCRYPTINFOLIST_FN fn);
00350 void GWEN_CryptToken_SetFillKeyInfoListFn(GWEN_CRYPTTOKEN *ct,
00351 GWEN_CRYPTTOKEN_FILLKEYINFOLIST_FN fn);
00352 void GWEN_CryptToken_SetFillUserListFn(GWEN_CRYPTTOKEN *ct,
00353 GWEN_CRYPTTOKEN_FILLUSERLIST_FN fn);
00354 void GWEN_CryptToken_SetGetSignSeqFn(GWEN_CRYPTTOKEN *ct,
00355 GWEN_CRYPTTOKEN_GETSIGNSEQ_FN fn);
00356 void GWEN_CryptToken_SetModifyUserFn(GWEN_CRYPTTOKEN *ct,
00357 GWEN_CRYPTTOKEN_MODIFYUSER_FN fn);
00358 void
00359 GWEN_CryptToken_SetGetTokenIdDataFn(GWEN_CRYPTTOKEN *ct,
00360 GWEN_CRYPTTOKEN_GETTOKENIDDATA_FN fn);
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370 int GWEN_CryptToken_Open(GWEN_CRYPTTOKEN *ct, int manage);
00371
00372 int GWEN_CryptToken_Create(GWEN_CRYPTTOKEN *ct);
00373
00374 int GWEN_CryptToken_Close(GWEN_CRYPTTOKEN *ct);
00375
00376 int GWEN_CryptToken_ChangePin(GWEN_CRYPTTOKEN *ct,
00377 GWEN_CRYPTTOKEN_PINTYPE pt);
00378
00379 int GWEN_CryptToken_Sign(GWEN_CRYPTTOKEN *ct,
00380 const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00381 const char *ptr,
00382 unsigned int len,
00383 GWEN_BUFFER *dst);
00384 int GWEN_CryptToken_Verify(GWEN_CRYPTTOKEN *ct,
00385 const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00386 const char *ptr,
00387 unsigned int len,
00388 const char *sigptr,
00389 unsigned int siglen);
00390 int GWEN_CryptToken_Encrypt(GWEN_CRYPTTOKEN *ct,
00391 const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00392 const char *ptr,
00393 unsigned int len,
00394 GWEN_BUFFER *dst);
00395 int GWEN_CryptToken_Decrypt(GWEN_CRYPTTOKEN *ct,
00396 const GWEN_CRYPTTOKEN_CONTEXT *ctx,
00397 const char *ptr,
00398 unsigned int len,
00399 GWEN_BUFFER *dst);
00400 int GWEN_CryptToken_ReadKey(GWEN_CRYPTTOKEN *ct,
00401 GWEN_TYPE_UINT32 kid,
00402 GWEN_CRYPTKEY **key);
00403 int GWEN_CryptToken_WriteKey(GWEN_CRYPTTOKEN *ct,
00404 GWEN_TYPE_UINT32 kid,
00405 const GWEN_CRYPTKEY *key);
00406 int GWEN_CryptToken_ReadKeySpec(GWEN_CRYPTTOKEN *ct,
00407 GWEN_TYPE_UINT32 kid,
00408 GWEN_KEYSPEC **ks);
00409 int GWEN_CryptToken_WriteKeySpec(GWEN_CRYPTTOKEN *ct,
00410 GWEN_TYPE_UINT32 kid,
00411 const GWEN_KEYSPEC *ks);
00412 int GWEN_CryptToken_GenerateKey(GWEN_CRYPTTOKEN *ct,
00413 const GWEN_CRYPTTOKEN_KEYINFO *ki,
00414 GWEN_CRYPTKEY **key);
00415
00416 int GWEN_CryptToken_GetSignSeq(GWEN_CRYPTTOKEN *ct,
00417 GWEN_TYPE_UINT32 kid,
00418 GWEN_TYPE_UINT32 *signSeq);
00419
00420 int GWEN_CryptToken_FillContextList(GWEN_CRYPTTOKEN *ct,
00421 GWEN_CRYPTTOKEN_CONTEXT_LIST *l);
00422 int GWEN_CryptToken_FillSignInfoList(GWEN_CRYPTTOKEN *ct,
00423 GWEN_CRYPTTOKEN_SIGNINFO_LIST *l);
00424
00425 int GWEN_CryptToken_FillCryptInfoList(GWEN_CRYPTTOKEN *ct,
00426 GWEN_CRYPTTOKEN_CRYPTINFO_LIST *l);
00427
00428 int GWEN_CryptToken_FillKeyInfoList(GWEN_CRYPTTOKEN *ct,
00429 GWEN_CRYPTTOKEN_KEYINFO_LIST *l);
00430
00431 int GWEN_CryptToken_FillUserList(GWEN_CRYPTTOKEN *ct,
00432 GWEN_CRYPTTOKEN_USER_LIST *ul);
00433
00434 int GWEN_CryptToken_ModifyUser(GWEN_CRYPTTOKEN *ct,
00435 const GWEN_CRYPTTOKEN_USER *u);
00436
00437 int GWEN_CryptToken_GetTokenIdData(GWEN_CRYPTTOKEN *ct, GWEN_BUFFER *buf);
00438
00439
00440 const GWEN_CRYPTTOKEN_SIGNINFO*
00441 GWEN_CryptToken_GetSignInfoByAlgos(GWEN_CRYPTTOKEN *ct,
00442 GWEN_CRYPTTOKEN_HASHALGO hashAlgo,
00443 GWEN_CRYPTTOKEN_PADDALGO paddAlgo);
00444
00445 const GWEN_CRYPTTOKEN_SIGNINFO*
00446 GWEN_CryptToken_GetSignInfoById(GWEN_CRYPTTOKEN *ct,
00447 GWEN_TYPE_UINT32 id);
00448
00449 const GWEN_CRYPTTOKEN_CRYPTINFO*
00450 GWEN_CryptToken_GetCryptInfoByAlgos(GWEN_CRYPTTOKEN *ct,
00451 GWEN_CRYPTTOKEN_CRYPTALGO cryptAlgo,
00452 GWEN_CRYPTTOKEN_PADDALGO paddAlgo);
00453
00454 const GWEN_CRYPTTOKEN_CRYPTINFO*
00455 GWEN_CryptToken_GetCryptInfoById(GWEN_CRYPTTOKEN *ct,
00456 GWEN_TYPE_UINT32 id);
00457
00458
00459 const GWEN_CRYPTTOKEN_KEYINFO*
00460 GWEN_CryptToken_GetKeyInfoById(GWEN_CRYPTTOKEN *ct,
00461 GWEN_TYPE_UINT32 kid);
00462
00463 const GWEN_CRYPTTOKEN_CONTEXT*
00464 GWEN_CryptToken_GetContextById(GWEN_CRYPTTOKEN *ct,
00465 GWEN_TYPE_UINT32 id);
00466
00467
00468 int GWEN_CryptToken_Hash(GWEN_CRYPTTOKEN_HASHALGO algo,
00469 const char *src,
00470 unsigned int slen,
00471 GWEN_BUFFER *dstBuf);
00472
00473 int GWEN_CryptToken_Padd(GWEN_CRYPTTOKEN_PADDALGO algo,
00474 unsigned int chunkSize,
00475 GWEN_BUFFER *buf);
00476
00477 int GWEN_CryptToken_Unpadd(GWEN_CRYPTTOKEN_PADDALGO algo,
00478 GWEN_BUFFER *buf);
00479
00480 int GWEN_CryptToken_AddContext(GWEN_CRYPTTOKEN *ct,
00481 const GWEN_CRYPTTOKEN_CONTEXT *ctx);
00482
00490
00491 int GWEN_CryptToken_TransformPin(GWEN_CRYPTTOKEN_PINENCODING peSrc,
00492 GWEN_CRYPTTOKEN_PINENCODING peDst,
00493 unsigned char *buffer,
00494 unsigned int bufLength,
00495 unsigned int *pinLength);
00496
00499 #ifdef __cplusplus
00500 }
00501 #endif
00502
00503
00504
00505
00506
00507
00508 #endif
00509
00510