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 GWEN_PLUGIN *GWEN_CryptToken_Plugin_new(GWEN_PLUGIN_MANAGER *mgr,
00048 GWEN_CRYPTTOKEN_DEVICE devType,
00049 const char *typeName,
00050 const char *fileName);
00051
00052
00053 GWEN_CRYPTTOKEN*
00054 GWEN_CryptToken_Plugin_CreateToken(GWEN_PLUGIN *pl,
00055 const char *subTypeName,
00056 const char *name);
00057
00078 int GWEN_CryptToken_Plugin_CheckToken(GWEN_PLUGIN *pl,
00079 GWEN_BUFFER *subTypeName,
00080 GWEN_BUFFER *name);
00081
00082
00083 GWEN_CRYPTTOKEN_DEVICE
00084 GWEN_CryptToken_Plugin_GetDeviceType(const GWEN_PLUGIN *pl);
00085
00086
00087 void GWEN_CryptToken_Plugin_SetCreateTokenFn(GWEN_PLUGIN *pl,
00088 GWEN_CRYPTTOKEN_PLUGIN_CREATETOKEN_FN fn);
00089 void GWEN_CryptToken_Plugin_SetCheckTokenFn(GWEN_PLUGIN *pl,
00090 GWEN_CRYPTTOKEN_PLUGIN_CHECKTOKEN_FN fn);
00091
00092
00101 typedef int (*GWEN_CRYPTMANAGER_GETPIN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00102 GWEN_CRYPTTOKEN *token,
00103 GWEN_CRYPTTOKEN_PINTYPE pt,
00104 GWEN_CRYPTTOKEN_PINENCODING pe,
00105 GWEN_TYPE_UINT32 flags,
00106 unsigned char *buffer,
00107 unsigned int minLength,
00108 unsigned int maxLength,
00109 unsigned int *pinLength);
00110
00111 typedef int (*GWEN_CRYPTMANAGER_BEGIN_ENTER_PIN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00112 GWEN_CRYPTTOKEN *token,
00113 GWEN_CRYPTTOKEN_PINTYPE pt);
00114 typedef int (*GWEN_CRYPTMANAGER_END_ENTER_PIN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00115 GWEN_CRYPTTOKEN *token,
00116 GWEN_CRYPTTOKEN_PINTYPE pt,
00117 int ok);
00118 typedef int (*GWEN_CRYPTMANAGER_INSERT_TOKEN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00119 GWEN_CRYPTTOKEN *token);
00120 typedef int (*GWEN_CRYPTMANAGER_INSERT_CORRECT_TOKEN_FN)(GWEN_PLUGIN_MANAGER *mgr,
00121 GWEN_CRYPTTOKEN *token);
00122 typedef int (*GWEN_CRYPTMANAGER_SHOW_MESSAGE_FN)(GWEN_PLUGIN_MANAGER *mgr,
00123 GWEN_CRYPTTOKEN *token,
00124 const char *title,
00125 const char *msg);
00126
00127
00128
00129
00130 GWEN_PLUGIN_MANAGER *GWEN_CryptManager_new();
00131
00136 int GWEN_CryptManager_CheckToken(GWEN_PLUGIN_MANAGER *cm,
00137 GWEN_CRYPTTOKEN_DEVICE devt,
00138 GWEN_BUFFER *typeName,
00139 GWEN_BUFFER *subTypeName,
00140 GWEN_BUFFER *tokenName);
00141
00142
00143 void GWEN_CryptManager_SetGetPinFn(GWEN_PLUGIN_MANAGER *cm,
00144 GWEN_CRYPTMANAGER_GETPIN_FN fn);
00145
00146 void GWEN_CryptManager_SetBeginEnterPinFn(GWEN_PLUGIN_MANAGER *cm,
00147 GWEN_CRYPTMANAGER_BEGIN_ENTER_PIN_FN fn);
00148 void GWEN_CryptManager_SetEndEnterPinFn(GWEN_PLUGIN_MANAGER *cm,
00149 GWEN_CRYPTMANAGER_END_ENTER_PIN_FN fn);
00150
00151 void GWEN_CryptManager_SetInsertTokenFn(GWEN_PLUGIN_MANAGER *cm,
00152 GWEN_CRYPTMANAGER_INSERT_TOKEN_FN fn);
00153 void GWEN_CryptManager_SetInsertCorrectTokenFn(GWEN_PLUGIN_MANAGER *cm,
00154 GWEN_CRYPTMANAGER_INSERT_CORRECT_TOKEN_FN fn);
00155 void GWEN_CryptManager_SetShowMessageFn(GWEN_PLUGIN_MANAGER *cm,
00156 GWEN_CRYPTMANAGER_SHOW_MESSAGE_FN fn);
00157
00158
00159
00160 int GWEN_CryptManager_GetPin(GWEN_PLUGIN_MANAGER *cm,
00161 GWEN_CRYPTTOKEN *token,
00162 GWEN_CRYPTTOKEN_PINTYPE pt,
00163 GWEN_CRYPTTOKEN_PINENCODING pe,
00164 GWEN_TYPE_UINT32 flags,
00165 unsigned char *buffer,
00166 unsigned int minLength,
00167 unsigned int maxLength,
00168 unsigned int *pinLength);
00169
00170 int GWEN_CryptManager_BeginEnterPin(GWEN_PLUGIN_MANAGER *cm,
00171 GWEN_CRYPTTOKEN *token,
00172 GWEN_CRYPTTOKEN_PINTYPE pt);
00173 int GWEN_CryptManager_EndEnterPin(GWEN_PLUGIN_MANAGER *cm,
00174 GWEN_CRYPTTOKEN *token,
00175 GWEN_CRYPTTOKEN_PINTYPE pt,
00176 int ok);
00177 int GWEN_CryptManager_InsertToken(GWEN_PLUGIN_MANAGER *cm,
00178 GWEN_CRYPTTOKEN *token);
00179 int GWEN_CryptManager_InsertCorrectToken(GWEN_PLUGIN_MANAGER *cm,
00180 GWEN_CRYPTTOKEN *token);
00181
00182 int GWEN_CryptManager_ShowMessage(GWEN_PLUGIN_MANAGER *cm,
00183 GWEN_CRYPTTOKEN *token,
00184 const char *title,
00185 const char *msg);
00186
00187 int GWEN_CryptManager_CheckToken(GWEN_PLUGIN_MANAGER *cm,
00188 GWEN_CRYPTTOKEN_DEVICE devt,
00189 GWEN_BUFFER *typeName,
00190 GWEN_BUFFER *subTypeName,
00191 GWEN_BUFFER *tokenName);
00192
00193 GWEN_PLUGIN_DESCRIPTION_LIST2*
00194 GWEN_CryptManager_GetPluginDescrs(GWEN_PLUGIN_MANAGER *pm,
00195 GWEN_CRYPTTOKEN_DEVICE devt);
00196
00200 #ifdef __cplusplus
00201 }
00202 #endif
00203
00204
00205
00206 #endif
00207
00208