00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef GWEN_CRYPTTOKEN_PLUGIN_H
00015 #define GWEN_CRYPTTOKEN_PLUGIN_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
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00029
00034
00035 typedef GWEN_CRYPTTOKEN*
00036 (*GWEN_CRYPTTOKEN_PLUGIN_CREATETOKEN_FN)(GWEN_PLUGIN *pl,
00037 const char *subTypeName,
00038 const char *name);
00039
00040 typedef int
00041 (*GWEN_CRYPTTOKEN_PLUGIN_CHECKTOKEN_FN)(GWEN_PLUGIN *pl,
00042 GWEN_BUFFER *subTypeName,
00043 GWEN_BUFFER *name);
00044
00045
00046
00047 GWENHYWFAR_API
00048 GWEN_PLUGIN *GWEN_CryptToken_Plugin_new(GWEN_PLUGIN_MANAGER *mgr,
00049 GWEN_CRYPTTOKEN_DEVICE devType,
00050 const char *typeName,
00051 const char *fileName);
00052
00053
00054 GWENHYWFAR_API
00055 GWEN_CRYPTTOKEN*
00056 GWEN_CryptToken_Plugin_CreateToken(GWEN_PLUGIN *pl,
00057 const char *subTypeName,
00058 const char *name);
00059
00080 GWENHYWFAR_API
00081 int GWEN_CryptToken_Plugin_CheckToken(GWEN_PLUGIN *pl,
00082 GWEN_BUFFER *subTypeName,
00083 GWEN_BUFFER *name);
00084
00085
00086 GWENHYWFAR_API
00087 GWEN_CRYPTTOKEN_DEVICE
00088 GWEN_CryptToken_Plugin_GetDeviceType(const GWEN_PLUGIN *pl);
00089
00090
00091 GWENHYWFAR_API
00092 void GWEN_CryptToken_Plugin_SetCreateTokenFn(GWEN_PLUGIN *pl,
00093 GWEN_CRYPTTOKEN_PLUGIN_CREATETOKEN_FN fn);
00094
00095 GWENHYWFAR_API
00096 void GWEN_CryptToken_Plugin_SetCheckTokenFn(GWEN_PLUGIN *pl,
00097 GWEN_CRYPTTOKEN_PLUGIN_CHECKTOKEN_FN fn);
00098
00099
00108 typedef int (*GWEN_CRYPTMANAGER_GETPIN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00109 GWEN_CRYPTTOKEN *token,
00110 GWEN_CRYPTTOKEN_PINTYPE pt,
00111 GWEN_CRYPTTOKEN_PINENCODING pe,
00112 GWEN_TYPE_UINT32 flags,
00113 unsigned char *buffer,
00114 unsigned int minLength,
00115 unsigned int maxLength,
00116 unsigned int *pinLength);
00117
00118 typedef
00119 int (*GWEN_CRYPTMANAGER_SETPINSTATUS_FN)(GWEN_PLUGIN_MANAGER *mgr,
00120 GWEN_CRYPTTOKEN *token,
00121 GWEN_CRYPTTOKEN_PINTYPE pt,
00122 GWEN_CRYPTTOKEN_PINENCODING pe,
00123 GWEN_TYPE_UINT32 flags,
00124 unsigned char *buffer,
00125 unsigned int pinLength,
00126 int isOk);
00127
00128 typedef int (*GWEN_CRYPTMANAGER_BEGIN_ENTER_PIN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00129 GWEN_CRYPTTOKEN *token,
00130 GWEN_CRYPTTOKEN_PINTYPE pt);
00131 typedef int (*GWEN_CRYPTMANAGER_END_ENTER_PIN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00132 GWEN_CRYPTTOKEN *token,
00133 GWEN_CRYPTTOKEN_PINTYPE pt,
00134 int ok);
00135 typedef int (*GWEN_CRYPTMANAGER_INSERT_TOKEN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00136 GWEN_CRYPTTOKEN *token);
00137 typedef int (*GWEN_CRYPTMANAGER_INSERT_CORRECT_TOKEN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00138 GWEN_CRYPTTOKEN *token);
00139 typedef int (*GWEN_CRYPTMANAGER_SHOW_MESSAGE_FN)(GWEN_PLUGIN_MANAGER *mgr,
00140 GWEN_CRYPTTOKEN *token,
00141 const char *title,
00142 const char *msg);
00143
00144
00145
00146
00147 GWENHYWFAR_API
00148 GWEN_PLUGIN_MANAGER *GWEN_CryptManager_new();
00149
00154 GWENHYWFAR_API
00155 int GWEN_CryptManager_CheckToken(GWEN_PLUGIN_MANAGER *cm,
00156 GWEN_CRYPTTOKEN_DEVICE devt,
00157 GWEN_BUFFER *typeName,
00158 GWEN_BUFFER *subTypeName,
00159 GWEN_BUFFER *tokenName);
00160
00161
00162 GWENHYWFAR_API
00163 void GWEN_CryptManager_SetGetPinFn(GWEN_PLUGIN_MANAGER *cm,
00164 GWEN_CRYPTMANAGER_GETPIN_FN fn);
00165
00166 GWENHYWFAR_API void
00167 GWEN_CryptManager_SetSetPinStatusFn(GWEN_PLUGIN_MANAGER *cm,
00168 GWEN_CRYPTMANAGER_SETPINSTATUS_FN fn);
00169
00170 GWENHYWFAR_API
00171 void GWEN_CryptManager_SetBeginEnterPinFn(GWEN_PLUGIN_MANAGER *cm,
00172 GWEN_CRYPTMANAGER_BEGIN_ENTER_PIN_FN fn);
00173
00174 GWENHYWFAR_API
00175 void GWEN_CryptManager_SetEndEnterPinFn(GWEN_PLUGIN_MANAGER *cm,
00176 GWEN_CRYPTMANAGER_END_ENTER_PIN_FN fn);
00177
00178 GWENHYWFAR_API
00179 void GWEN_CryptManager_SetInsertTokenFn(GWEN_PLUGIN_MANAGER *cm,
00180 GWEN_CRYPTMANAGER_INSERT_TOKEN_FN fn);
00181
00182 GWENHYWFAR_API
00183 void GWEN_CryptManager_SetInsertCorrectTokenFn(GWEN_PLUGIN_MANAGER *cm,
00184 GWEN_CRYPTMANAGER_INSERT_CORRECT_TOKEN_FN fn);
00185
00186 GWENHYWFAR_API
00187 void GWEN_CryptManager_SetShowMessageFn(GWEN_PLUGIN_MANAGER *cm,
00188 GWEN_CRYPTMANAGER_SHOW_MESSAGE_FN fn);
00189
00190
00191
00192 GWENHYWFAR_API
00193 int GWEN_CryptManager_GetPin(GWEN_PLUGIN_MANAGER *cm,
00194 GWEN_CRYPTTOKEN *token,
00195 GWEN_CRYPTTOKEN_PINTYPE pt,
00196 GWEN_CRYPTTOKEN_PINENCODING pe,
00197 GWEN_TYPE_UINT32 flags,
00198 unsigned char *buffer,
00199 unsigned int minLength,
00200 unsigned int maxLength,
00201 unsigned int *pinLength);
00202
00203 GWENHYWFAR_API
00204 int GWEN_CryptManager_SetPinStatus(GWEN_PLUGIN_MANAGER *mgr,
00205 GWEN_CRYPTTOKEN *token,
00206 GWEN_CRYPTTOKEN_PINTYPE pt,
00207 GWEN_CRYPTTOKEN_PINENCODING pe,
00208 GWEN_TYPE_UINT32 flags,
00209 unsigned char *buffer,
00210 unsigned int pinLength,
00211 int isOk);
00212
00213
00214 GWENHYWFAR_API
00215 int GWEN_CryptManager_BeginEnterPin(GWEN_PLUGIN_MANAGER *cm,
00216 GWEN_CRYPTTOKEN *token,
00217 GWEN_CRYPTTOKEN_PINTYPE pt);
00218
00219 GWENHYWFAR_API
00220 int GWEN_CryptManager_EndEnterPin(GWEN_PLUGIN_MANAGER *cm,
00221 GWEN_CRYPTTOKEN *token,
00222 GWEN_CRYPTTOKEN_PINTYPE pt,
00223 int ok);
00224
00225 GWENHYWFAR_API
00226 int GWEN_CryptManager_InsertToken(GWEN_PLUGIN_MANAGER *cm,
00227 GWEN_CRYPTTOKEN *token);
00228
00229 GWENHYWFAR_API
00230 int GWEN_CryptManager_InsertCorrectToken(GWEN_PLUGIN_MANAGER *cm,
00231 GWEN_CRYPTTOKEN *token);
00232
00233 GWENHYWFAR_API
00234 int GWEN_CryptManager_ShowMessage(GWEN_PLUGIN_MANAGER *cm,
00235 GWEN_CRYPTTOKEN *token,
00236 const char *title,
00237 const char *msg);
00238
00239 GWENHYWFAR_API
00240 int GWEN_CryptManager_CheckToken(GWEN_PLUGIN_MANAGER *cm,
00241 GWEN_CRYPTTOKEN_DEVICE devt,
00242 GWEN_BUFFER *typeName,
00243 GWEN_BUFFER *subTypeName,
00244 GWEN_BUFFER *tokenName);
00245
00246 GWENHYWFAR_API
00247 GWEN_PLUGIN_DESCRIPTION_LIST2*
00248 GWEN_CryptManager_GetPluginDescrs(GWEN_PLUGIN_MANAGER *pm,
00249 GWEN_CRYPTTOKEN_DEVICE devt);
00250
00254 #ifdef __cplusplus
00255 }
00256 #endif
00257
00258
00259
00260 #endif
00261
00262