crypttoken.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile: crypttoken.h,v $
00003                              -------------------
00004     cvs         : $Id: crypttoken.h,v 1.9 2005/08/24 13:56:50 aquamaniac Exp $
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 
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   /* DES */
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  * AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
00366  *                               Virtual Functions
00367  * YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
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 /* GWEN_CRYPTTOKEN_H */
00509 
00510 

Generated on Wed Jan 11 16:49:07 2006 for gwenhywfar by  doxygen 1.4.6