예제 #1
0
/**
 * 主程序全局初始化函数
 */
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();
}
예제 #2
0
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;
}
예제 #3
0
//-----------------------------------------------------------------------------------
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);
}