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);
00135 GWENHYWFAR_API GWEN_CRYPT_TOKEN *GWEN_Crypt_Token_new(GWEN_CRYPT_TOKEN_DEVICE dev,
00136 const char *typeName,
00137 const char *tokenName);
00146 GWENHYWFAR_API void GWEN_Crypt_Token_SetTokenName(GWEN_CRYPT_TOKEN *ct, const char *s);
00147
00148 GWENHYWFAR_API void GWEN_Crypt_Token_SetFlags(GWEN_CRYPT_TOKEN *ct, uint32_t f);
00149 GWENHYWFAR_API void GWEN_Crypt_Token_AddFlags(GWEN_CRYPT_TOKEN *ct, uint32_t f);
00150 GWENHYWFAR_API void GWEN_Crypt_Token_SubFlags(GWEN_CRYPT_TOKEN *ct, uint32_t f);
00159 GWENHYWFAR_API int GWEN_Crypt_Token_GetPin(GWEN_CRYPT_TOKEN *ct,
00160 GWEN_CRYPT_PINTYPE pt,
00161 GWEN_CRYPT_PINENCODING pe,
00162 uint32_t flags,
00163 unsigned char *pwbuffer,
00164 unsigned int minLength,
00165 unsigned int maxLength,
00166 unsigned int *pinLength,
00167 uint32_t gid);
00168
00169
00170 GWENHYWFAR_API int GWEN_Crypt_Token_SetPinStatus(GWEN_CRYPT_TOKEN *ct,
00171 GWEN_CRYPT_PINTYPE pt,
00172 GWEN_CRYPT_PINENCODING pe,
00173 uint32_t flags,
00174 const unsigned char *buffer,
00175 unsigned int pinLength,
00176 int isOk,
00177 uint32_t gid);
00178
00179 GWENHYWFAR_API uint32_t GWEN_Crypt_Token_BeginEnterPin(GWEN_CRYPT_TOKEN *ct,
00180 GWEN_CRYPT_PINTYPE pt,
00181 uint32_t gid);
00182
00183 GWENHYWFAR_API int GWEN_Crypt_Token_EndEnterPin(GWEN_CRYPT_TOKEN *ct,
00184 GWEN_CRYPT_PINTYPE pt,
00185 int ok,
00186 uint32_t id);
00187
00188 GWENHYWFAR_API int GWEN_Crypt_Token_InsertToken(GWEN_CRYPT_TOKEN *ct, uint32_t gid);
00189
00190 GWENHYWFAR_API int GWEN_Crypt_Token_InsertCorrectToken(GWEN_CRYPT_TOKEN *ct, uint32_t gid);
00200 GWENHYWFAR_API GWEN_CRYPT_TOKEN_OPEN_FN GWEN_Crypt_Token_SetOpenFn(GWEN_CRYPT_TOKEN *ct,
00201 GWEN_CRYPT_TOKEN_OPEN_FN f);
00202
00203 GWENHYWFAR_API GWEN_CRYPT_TOKEN_CREATE_FN GWEN_Crypt_Token_SetCreateFn(GWEN_CRYPT_TOKEN *ct,
00204 GWEN_CRYPT_TOKEN_CREATE_FN f);
00205
00206 GWENHYWFAR_API GWEN_CRYPT_TOKEN_CLOSE_FN GWEN_Crypt_Token_SetCloseFn(GWEN_CRYPT_TOKEN *ct,
00207 GWEN_CRYPT_TOKEN_CLOSE_FN f);
00208
00209 GWENHYWFAR_API
00210 GWEN_CRYPT_TOKEN_GETKEYIDLIST_FN GWEN_Crypt_Token_SetGetKeyIdListFn(GWEN_CRYPT_TOKEN *ct,
00211 GWEN_CRYPT_TOKEN_GETKEYIDLIST_FN f);
00212
00213 GWENHYWFAR_API GWEN_CRYPT_TOKEN_GETKEYINFO_FN GWEN_Crypt_Token_SetGetKeyInfoFn(GWEN_CRYPT_TOKEN *ct,
00214 GWEN_CRYPT_TOKEN_GETKEYINFO_FN f);
00215
00216 GWENHYWFAR_API GWEN_CRYPT_TOKEN_SETKEYINFO_FN GWEN_Crypt_Token_SetSetKeyInfoFn(GWEN_CRYPT_TOKEN *ct,
00217 GWEN_CRYPT_TOKEN_SETKEYINFO_FN f);
00218
00219 GWENHYWFAR_API
00220 GWEN_CRYPT_TOKEN_GETCONTEXTIDLIST_FN GWEN_Crypt_Token_SetGetContextIdListFn(GWEN_CRYPT_TOKEN *ct,
00221 GWEN_CRYPT_TOKEN_GETCONTEXTIDLIST_FN f);
00222
00223 GWENHYWFAR_API GWEN_CRYPT_TOKEN_GETCONTEXT_FN GWEN_Crypt_Token_SetGetContextFn(GWEN_CRYPT_TOKEN *ct,
00224 GWEN_CRYPT_TOKEN_GETCONTEXT_FN f);
00225
00226 GWENHYWFAR_API GWEN_CRYPT_TOKEN_SETCONTEXT_FN GWEN_Crypt_Token_SetSetContextFn(GWEN_CRYPT_TOKEN *ct,
00227 GWEN_CRYPT_TOKEN_SETCONTEXT_FN f);
00228
00229 GWENHYWFAR_API GWEN_CRYPT_TOKEN_SIGN_FN GWEN_Crypt_Token_SetSignFn(GWEN_CRYPT_TOKEN *ct,
00230 GWEN_CRYPT_TOKEN_SIGN_FN f);
00231
00232 GWENHYWFAR_API GWEN_CRYPT_TOKEN_VERIFY_FN GWEN_Crypt_Token_SetVerifyFn(GWEN_CRYPT_TOKEN *ct,
00233 GWEN_CRYPT_TOKEN_VERIFY_FN f);
00234
00235 GWENHYWFAR_API GWEN_CRYPT_TOKEN_ENCIPHER_FN GWEN_Crypt_Token_SetEncipherFn(GWEN_CRYPT_TOKEN *ct,
00236 GWEN_CRYPT_TOKEN_ENCIPHER_FN f);
00237
00238 GWENHYWFAR_API GWEN_CRYPT_TOKEN_DECIPHER_FN GWEN_Crypt_Token_SetDecipherFn(GWEN_CRYPT_TOKEN *ct,
00239 GWEN_CRYPT_TOKEN_DECIPHER_FN f);
00240
00241 GWENHYWFAR_API GWEN_CRYPT_TOKEN_GENERATEKEY_FN GWEN_Crypt_Token_SetGenerateKeyFn(GWEN_CRYPT_TOKEN *ct,
00242 GWEN_CRYPT_TOKEN_GENERATEKEY_FN f);
00243
00244 GWENHYWFAR_API GWEN_CRYPT_TOKEN_CHANGEPIN_FN GWEN_Crypt_Token_SetChangePinFn(GWEN_CRYPT_TOKEN *ct,
00245 GWEN_CRYPT_TOKEN_CHANGEPIN_FN f);
00251 #endif
00252
00253