17 #include <gwenhywfar/debug.h>
18 #include <gwenhywfar/pathmanager.h>
19 #include <gwenhywfar/cgui.h>
36 # include <gwenhywfar/gui_be.h>
38 # include <openssl/err.h>
39 # include <openssl/ssl.h>
40 # include <openssl/des.h>
49 unsigned char *buffer,
52 DES_cblock left, right;
59 DES_string_to_2keys(password, &left, &right);
89 I18N(
"The plugin could not be found.\n"
90 "Please make sure that you have the following "
91 "packages installed (at least on Debian/Ubuntu):\n"
92 "- libchipcard-plugins-libgwenhywfar (for chipcards)\n"
93 "- libaqbanking-plugins-libgwenhywfar\n"));
100 DBG_ERROR(0,
"Could not create crypt token");
109 int main(
int argc,
char **argv)
125 "Specify the configuration file",
126 "Specify the configuration file"
137 "force pin entry even if the error counter is not zero"
147 "Show this help screen",
148 "Show this help screen"
154 fprintf(stderr,
"Could not initialize Gwenhywfar.\n");
163 SSL_load_error_strings();
175 #ifdef GCT_IS_EXPERIMENTAL
176 fprintf(stderr,
"\n");
177 fprintf(stderr,
"\n");
178 fprintf(stderr,
"=================== WARNING ===================\n");
179 fprintf(stderr,
"This tool is still EXPERIMENTAL !!!\n");
180 fprintf(stderr,
"Please DON'T USE it with your daily key files !\n");
181 fprintf(stderr,
"===============================================\n");
182 fprintf(stderr,
"\n");
183 fprintf(stderr,
"\n");
193 fprintf(stderr,
"ERROR: Could not parse arguments main\n");
204 I18N(
" [GLOBAL OPTIONS] COMMAND "
205 "[LOCAL OPTIONS]\n"));
207 I18N(
"\nGlobal Options:\n"));
209 fprintf(stderr,
"ERROR: Could not create help string\n");
213 I18N(
"\nCommands:\n\n"));
216 " This command creates a crypt token"
220 " Display user data stored on the "
224 " Display key info stored on the "
228 " Update Crypt Token to newer version (e.g. OpenHBCI key"
231 I18N(
" showpasswords:\n"
232 " Display passwords store in a GWEN_PASSWD_STORE file\n\n"));
245 fprintf(stderr,
"ERROR: Command needed.\n");
249 if (strcasecmp(cmd,
"create")==0) {
252 else if (strcasecmp(cmd,
"showuser")==0) {
255 else if (strcasecmp(cmd,
"showkey")==0) {
258 else if (strcasecmp(cmd,
"genkey")==0) {
259 rv=
genKey(db, argc, argv);
261 else if (strcasecmp(cmd,
"activatekey")==0) {
264 else if (strcasecmp(cmd,
"update")==0) {
267 else if (strcasecmp(cmd,
"setsignseq")==0) {
270 else if (strcasecmp(cmd,
"changepin")==0) {
273 else if (strcasecmp(cmd,
"setkey")==0) {
274 rv=
setKey(db, argc, argv);
276 else if (strcasecmp(cmd,
"hashTree")==0) {
279 else if (strcasecmp(cmd,
"checkTree")==0) {
282 else if (strcasecmp(cmd,
"showpasswords")==0) {
286 fprintf(stderr,
"ERROR: Unknown command \"%s\".\n", cmd);
293 "WARNING: Could not deinitialize Gwenhywfar.\n");
int activateKey(GWEN_DB_NODE *dbArgs, int argc, char **argv)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
GWEN_GUI * GWEN_Gui_CGui_new(void)
int changePin(GWEN_DB_NODE *dbArgs, int argc, char **argv)
int checkTree(GWEN_DB_NODE *dbArgs, int argc, char **argv)
struct GWEN_CRYPT_TOKEN GWEN_CRYPT_TOKEN
GWEN_CRYPT_TOKEN * GWEN_Crypt_Token_Plugin_CreateToken(GWEN_PLUGIN *pl, const char *name)
GWEN_DB_NODE * GWEN_DB_Group_new(const char *name)
const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
struct GWEN_DB_NODE GWEN_DB_NODE
#define DBG_INFO(dbg_logger, format, args...)
#define DBG_ERROR(dbg_logger, format, args...)
int main(int argc, char **argv)
GWEN_CRYPT_TOKEN * getCryptToken(const char *ttype, const char *tname)
int genKey(GWEN_DB_NODE *dbArgs, int argc, char **argv)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
void GWEN_Gui_SetGui(GWEN_GUI *gui)
GWENHYWFAR_API GWEN_GUI_KEYDATAFROMTEXT_OPENSSL_FN GWEN_Gui_SetKeyDataFromTextOpenSslFn(GWEN_GUI *gui, GWEN_GUI_KEYDATAFROMTEXT_OPENSSL_FN f)
int GWEN_Logger_Open(const char *logDomain, const char *ident, const char *file, GWEN_LOGGER_LOGTYPE logtype, GWEN_LOGGER_FACILITY facility)
void GWEN_Logger_SetLevel(const char *logDomain, GWEN_LOGGER_LEVEL l)
@ GWEN_LoggerType_Console
@ GWEN_LoggerFacility_User
@ GWEN_LoggerLevel_Warning
GWEN_PLUGIN * GWEN_PluginManager_GetPlugin(GWEN_PLUGIN_MANAGER *pm, const char *s)
GWEN_PLUGIN_MANAGER * GWEN_PluginManager_FindPluginManager(const char *s)
struct GWEN_PLUGIN_MANAGER GWEN_PLUGIN_MANAGER
struct GWEN_PLUGIN GWEN_PLUGIN
int GWEN_Args_Check(int argc, char **argv, int startAt, uint32_t mode, const GWEN_ARGS *args, GWEN_DB_NODE *db)
int GWEN_Args_Usage(const GWEN_ARGS *args, GWEN_BUFFER *ubuf, GWEN_ARGS_OUTTYPE ot)
#define GWEN_ARGS_FLAGS_HAS_ARGUMENT
#define GWEN_ARGS_RESULT_ERROR
#define GWEN_ARGS_MODE_STOP_AT_FREEPARAM
#define GWEN_ARGS_MODE_ALLOW_FREEPARAM
#define GWEN_ARGS_FLAGS_HELP
#define GWEN_ARGS_FLAGS_LAST
#define GWEN_ARGS_RESULT_HELP