/** * 主程序全局初始化函数 */ void WD_init() { // 记录起始运行时间 if(-1 == time(&WD_start_time)) { err_exit("get start time error"); } // 初始化配置文件模块 WD_config_init(); user_config_init(); analyse_init(); decrypt_init(); analyse_flow_init(); }
static void *gui_process(void *d) { gtk_widgets_t *data = d; char *source = _filename_utf8(gtk_file_chooser_get_filename((GtkFileChooser *)data->open_dialog)); char *output = _filename_utf8(gtk_file_chooser_get_filename((GtkFileChooser *)data->save_dialog)); if (!source || !output) *_status = STATUS_FAILED_IO; uint8_t *key = NULL; size_t length = 0; switch (_key_source) { case KEY_SOURCE_FILE: { char *k = _filename_utf8(gtk_file_chooser_get_filename((GtkFileChooser *)data->key_dialog)); length = 0; key = (uint8_t *)strdup(k); g_free(k); } break; case KEY_SOURCE_PASSWORD: { const char *k = gtk_entry_get_text((GtkEntry *)data->password_entry); length = strlen(k); key = (uint8_t *)strndup(k, length); } break; } int c = gtk_combo_box_get_active((GtkComboBox *)data->crypto_combo); int h = gtk_combo_box_get_active((GtkComboBox *)data->hash_combo); int m = gtk_combo_box_get_active((GtkComboBox *)data->mode_combo); const char **ciphers = list_of_ciphers(); const char **hashes = list_of_hashes(); const char **modes = list_of_modes(); crypto_t *x; if (_encrypted) x = decrypt_init(source, output, ciphers[c - 1], hashes[h - 1], modes[m - 1], key, length, _raw); else x = encrypt_init(source, output, ciphers[c - 1], hashes[h - 1], modes[m - 1], key, length, _raw, _compress, _follow, _version); _status = &x->status; g_free(source); g_free(output); free(key); if (x->status == STATUS_INIT) execute(x); gui_display(x, data); if (x->status == STATUS_SUCCESS) { set_progress_bar((GtkProgressBar *)data->progress_bar_total, PERCENT); set_progress_bar((GtkProgressBar *)data->progress_bar_current, PERCENT); } set_status_bar((GtkStatusbar *)data->status_bar, status(x)); set_progress_button((GtkButton *)data->progress_cancel_button, false); set_progress_button((GtkButton *)data->progress_close_button, true); deinit(&x); return NULL; }
//----------------------------------------------------------------------------------- unsigned int AES_decrypt(char *in_buffer, unsigned int in_buffer_size, char *out_buffer, unsigned int out_buffer_size, char *key, unsigned int key_size, char ignore_size = 0, bool cbc = false) { if (!Dec_inited) decrypt_init(key, key_size); return decrypt(in_buffer, in_buffer_size, out_buffer, out_buffer_size, ignore_size, cbc); }