00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef GWEN_CRYPT_CRYPTTOKEN_BE_H
00015 #define GWEN_CRYPT_CRYPTTOKEN_BE_H
00016
00017
00018 #include <gwenhywfar/ct.h>
00019 #include <gwenhywfar/inherit.h>
00020 #include <gwenhywfar/buffer.h>
00021 #include <gwenhywfar/hashalgo.h>
00022
00023
00024
00025 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_CRYPT_TOKEN, GWENHYWFAR_API)
00026
00027
00028
00029
00030
00034 typedef int GWENHYWFAR_CB
00035 (*GWEN_CRYPT_TOKEN_OPEN_FN)(GWEN_CRYPT_TOKEN *ct, int admin, uint32_t gid);
00036 typedef int GWENHYWFAR_CB
00037 (*GWEN_CRYPT_TOKEN_CREATE_FN)(GWEN_CRYPT_TOKEN *ct, uint32_t gid);
00038 typedef int GWENHYWFAR_CB
00039 (*GWEN_CRYPT_TOKEN_CLOSE_FN)(GWEN_CRYPT_TOKEN *ct, int abandon, uint32_t gid);
00040
00041 typedef int GWENHYWFAR_CB
00042 (*GWEN_CRYPT_TOKEN_GETKEYIDLIST_FN)(GWEN_CRYPT_TOKEN *ct,
00043 uint32_t *pIdList,
00044 uint32_t *pCount,
00045 uint32_t gid);
00046 typedef const GWEN_CRYPT_TOKEN_KEYINFO* GWENHYWFAR_CB
00047 (*GWEN_CRYPT_TOKEN_GETKEYINFO_FN)(GWEN_CRYPT_TOKEN *ct,
00048 uint32_t id,
00049 uint32_t flags,
00050 uint32_t gid);
00051
00052 typedef int GWENHYWFAR_CB
00053 (*GWEN_CRYPT_TOKEN_SETKEYINFO_FN)(GWEN_CRYPT_TOKEN *ct,
00054 uint32_t id,
00055 const GWEN_CRYPT_TOKEN_KEYINFO *ki,
00056 uint32_t gid);
00057
00058 typedef int GWENHYWFAR_CB
00059 (*GWEN_CRYPT_TOKEN_GETCONTEXTIDLIST_FN)(GWEN_CRYPT_TOKEN *ct,
00060 uint32_t *pIdList,
00061 uint32_t *pCount,
00062 uint32_t gid);
00063 typedef const GWEN_CRYPT_TOKEN_CONTEXT* GWENHYWFAR_CB
00064 (*GWEN_CRYPT_TOKEN_GETCONTEXT_FN)(GWEN_CRYPT_TOKEN *ct,
00065 uint32_t id,
00066 uint32_t gid);
00067
00068 typedef int GWENHYWFAR_CB
00069 (*GWEN_CRYPT_TOKEN_SETCONTEXT_FN)(GWEN_CRYPT_TOKEN *ct,
00070 uint32_t id,
00071 const GWEN_CRYPT_TOKEN_CONTEXT *ctx,
00072 uint32_t gid);
00073
00074
00075 typedef int GWENHYWFAR_CB
00076 (*GWEN_CRYPT_TOKEN_SIGN_FN)(GWEN_CRYPT_TOKEN *ct,
00077 uint32_t keyId,
00078 GWEN_CRYPT_PADDALGO *a,
00079 const uint8_t *pInData,
00080 uint32_t inLen,
00081 uint8_t *pSignatureData,
00082 uint32_t *pSignatureLen,
00083 uint32_t *pSeqCounter,
00084 uint32_t gid);
00085
00086 typedef int GWENHYWFAR_CB
00087 (*GWEN_CRYPT_TOKEN_VERIFY_FN)(GWEN_CRYPT_TOKEN *ct,
00088 uint32_t keyId,
00089 GWEN_CRYPT_PADDALGO *a,
00090 const uint8_t *pInData,
00091 uint32_t inLen,
00092 const uint8_t *pSignatureData,
00093 uint32_t signatureLen,
00094 uint32_t seqCounter,
00095 uint32_t gid);
00096
00097 typedef int GWENHYWFAR_CB
00098 (*GWEN_CRYPT_TOKEN_ENCIPHER_FN)(GWEN_CRYPT_TOKEN *ct,
00099 uint32_t keyId,
00100 GWEN_CRYPT_PADDALGO *a,
00101 const uint8_t *pInData,
00102 uint32_t inLen,
00103 uint8_t *pOutData,
00104 uint32_t *pOutLen,
00105 uint32_t gid);
00106
00107 typedef int GWENHYWFAR_CB
00108 (*GWEN_CRYPT_TOKEN_DECIPHER_FN)(GWEN_CRYPT_TOKEN *ct,
00109 uint32_t keyId,
00110 GWEN_CRYPT_PADDALGO *a,
00111 const uint8_t *pInData,
00112 uint32_t inLen,
00113 uint8_t *pOutData,
00114 uint32_t *pOutLen,
00115 uint32_t gid);
00116
00117
00118 typedef int GWENHYWFAR_CB
00119 (*GWEN_CRYPT_TOKEN_GENERATEKEY_FN)(GWEN_CRYPT_TOKEN *ct,
00120 uint32_t keyId,
00121 const GWEN_CRYPT_CRYPTALGO *a,
00122 uint32_t gid);
00123
00124 typedef int GWENHYWFAR_CB
00125 (*GWEN_CRYPT_TOKEN_CHANGEPIN_FN)(GWEN_CRYPT_TOKEN *ct, int admin, uint32_t gid);
00126
00127 typedef int GWENHYWFAR_CB
00128 (*GWEN_CRYPT_TOKEN_ACTIVATEKEY_FN)(GWEN_CRYPT_TOKEN *ct, uint32_t id, uint32_t gid);
00129
00139 GWENHYWFAR_API GWEN_CRYPT_TOKEN *GWEN_Crypt_Token_new(GWEN_CRYPT_TOKEN_DEVICE dev,
00140 const char *typeName,
00141 const char *tokenName);
00150 GWENHYWFAR_API void GWEN_Crypt_Token_SetTokenName(GWEN_CRYPT_TOKEN *ct, const char *s);
00151
00152 GWENHYWFAR_API void GWEN_Crypt_Token_SetFlags(GWEN_CRYPT_TOKEN *ct, uint32_t f);
00153 GWENHYWFAR_API void GWEN_Crypt_Token_AddFlags(GWEN_CRYPT_TOKEN *ct, uint32_t f);
00154 GWENHYWFAR_API void GWEN_Crypt_Token_SubFlags(GWEN_CRYPT_TOKEN *ct, uint32_t f);
00163 GWENHYWFAR_API int GWEN_Crypt_Token_GetPin(GWEN_CRYPT_TOKEN *ct,
00164 GWEN_CRYPT_PINTYPE pt,
00165 GWEN_CRYPT_PINENCODING pe,
00166 uint32_t flags,
00167 unsigned char *pwbuffer,
00168 unsigned int minLength,
00169 unsigned int maxLength,
00170 unsigned int *pinLength,
00171 uint32_t gid);
00172
00173
00174 GWENHYWFAR_API int GWEN_Crypt_Token_SetPinStatus(GWEN_CRYPT_TOKEN *ct,
00175 GWEN_CRYPT_PINTYPE pt,
00176 GWEN_CRYPT_PINENCODING pe,
00177 uint32_t flags,
00178 const unsigned char *buffer,
00179 unsigned int pinLength,
00180 int isOk,
00181 uint32_t gid);
00182
00183 GWENHYWFAR_API uint32_t GWEN_Crypt_Token_BeginEnterPin(GWEN_CRYPT_TOKEN *ct,
00184 GWEN_CRYPT_PINTYPE pt,
00185 uint32_t gid);
00186
00187 GWENHYWFAR_API int GWEN_Crypt_Token_EndEnterPin(GWEN_CRYPT_TOKEN *ct,
00188 GWEN_CRYPT_PINTYPE pt,
00189 int ok,
00190 uint32_t id);
00191
00192 GWENHYWFAR_API int GWEN_Crypt_Token_InsertToken(GWEN_CRYPT_TOKEN *ct, uint32_t gid);
00193
00194 GWENHYWFAR_API int GWEN_Crypt_Token_InsertCorrectToken(GWEN_CRYPT_TOKEN *ct, uint32_t gid);
00204 GWENHYWFAR_API GWEN_CRYPT_TOKEN_OPEN_FN GWEN_Crypt_Token_SetOpenFn(GWEN_CRYPT_TOKEN *ct,
00205 GWEN_CRYPT_TOKEN_OPEN_FN f);
00206
00207 GWENHYWFAR_API GWEN_CRYPT_TOKEN_CREATE_FN GWEN_Crypt_Token_SetCreateFn(GWEN_CRYPT_TOKEN *ct,
00208 GWEN_CRYPT_TOKEN_CREATE_FN f);
00209
00210 GWENHYWFAR_API GWEN_CRYPT_TOKEN_CLOSE_FN GWEN_Crypt_Token_SetCloseFn(GWEN_CRYPT_TOKEN *ct,
00211 GWEN_CRYPT_TOKEN_CLOSE_FN f);
00212
00213 GWENHYWFAR_API
00214 GWEN_CRYPT_TOKEN_GETKEYIDLIST_FN GWEN_Crypt_Token_SetGetKeyIdListFn(GWEN_CRYPT_TOKEN *ct,
00215 GWEN_CRYPT_TOKEN_GETKEYIDLIST_FN f);
00216
00217 GWENHYWFAR_API GWEN_CRYPT_TOKEN_GETKEYINFO_FN GWEN_Crypt_Token_SetGetKeyInfoFn(GWEN_CRYPT_TOKEN *ct,
00218 GWEN_CRYPT_TOKEN_GETKEYINFO_FN f);
00219
00220 GWENHYWFAR_API GWEN_CRYPT_TOKEN_SETKEYINFO_FN GWEN_Crypt_Token_SetSetKeyInfoFn(GWEN_CRYPT_TOKEN *ct,
00221 GWEN_CRYPT_TOKEN_SETKEYINFO_FN f);
00222
00223 GWENHYWFAR_API
00224 GWEN_CRYPT_TOKEN_GETCONTEXTIDLIST_FN GWEN_Crypt_Token_SetGetContextIdListFn(GWEN_CRYPT_TOKEN *ct,
00225 GWEN_CRYPT_TOKEN_GETCONTEXTIDLIST_FN f);
00226
00227 GWENHYWFAR_API GWEN_CRYPT_TOKEN_GETCONTEXT_FN GWEN_Crypt_Token_SetGetContextFn(GWEN_CRYPT_TOKEN *ct,
00228 GWEN_CRYPT_TOKEN_GETCONTEXT_FN f);
00229
00230 GWENHYWFAR_API GWEN_CRYPT_TOKEN_SETCONTEXT_FN GWEN_Crypt_Token_SetSetContextFn(GWEN_CRYPT_TOKEN *ct,
00231 GWEN_CRYPT_TOKEN_SETCONTEXT_FN f);
00232
00233 GWENHYWFAR_API GWEN_CRYPT_TOKEN_SIGN_FN GWEN_Crypt_Token_SetSignFn(GWEN_CRYPT_TOKEN *ct,
00234 GWEN_CRYPT_TOKEN_SIGN_FN f);
00235
00236 GWENHYWFAR_API GWEN_CRYPT_TOKEN_VERIFY_FN GWEN_Crypt_Token_SetVerifyFn(GWEN_CRYPT_TOKEN *ct,
00237 GWEN_CRYPT_TOKEN_VERIFY_FN f);
00238
00239 GWENHYWFAR_API GWEN_CRYPT_TOKEN_ENCIPHER_FN GWEN_Crypt_Token_SetEncipherFn(GWEN_CRYPT_TOKEN *ct,
00240 GWEN_CRYPT_TOKEN_ENCIPHER_FN f);
00241
00242 GWENHYWFAR_API GWEN_CRYPT_TOKEN_DECIPHER_FN GWEN_Crypt_Token_SetDecipherFn(GWEN_CRYPT_TOKEN *ct,
00243 GWEN_CRYPT_TOKEN_DECIPHER_FN f);
00244
00245 GWENHYWFAR_API GWEN_CRYPT_TOKEN_GENERATEKEY_FN GWEN_Crypt_Token_SetGenerateKeyFn(GWEN_CRYPT_TOKEN *ct,
00246 GWEN_CRYPT_TOKEN_GENERATEKEY_FN f);
00247
00248 GWENHYWFAR_API GWEN_CRYPT_TOKEN_CHANGEPIN_FN GWEN_Crypt_Token_SetChangePinFn(GWEN_CRYPT_TOKEN *ct,
00249 GWEN_CRYPT_TOKEN_CHANGEPIN_FN f);
00250
00251 GWEN_CRYPT_TOKEN_ACTIVATEKEY_FN GWEN_Crypt_Token_SetActivateKeyFn(GWEN_CRYPT_TOKEN *ct,
00252 GWEN_CRYPT_TOKEN_ACTIVATEKEY_FN f);
00253
00259 #endif
00260
00261