⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keys_ui.c

📁 一个windows上的加解密程式 提供方便的介面让使用者操作
💻 C
字号:
/*  Key acceptance UI bits                                                *//*             Copyright (C) 2001-2003 William Tompkins                   *//* This plugin is free software, distributed under the GNU General Public *//* License.                                                               *//* Please see the file "COPYING" distributed with the Gaim source code    *//* for more details                                                       *//*                                                                        *//*                                                                        *//*    This software is distributed in the hope that it will be useful,    *//*   but WITHOUT ANY WARRANTY; without even the implied warranty of       *//*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    *//*   General Public License for more details.                             *//*   To compile and use:                                                  *//*     See INSTALL file.                                                  */#include <gdk/gdk.h>#include <gtk/gtk.h>#include <gtk/gtkplug.h>#include <debug.h>#include <gaim.h>#include <prefs.h>#include <gtkdialogs.h>#include <sound.h>#include "encrypt.h"#include "keys.h"#include "prefs.h"#include "keys_ui.h"#include "nls.h"#ifdef _WIN32#include "win32dep.h"#endiftypedef struct accept_key_ui {   GtkWidget *window;   key_ring_data *ring_data;   GaimConversation *conv;   gchar* resend_msg_id;} accept_key_ui;static void destroy_callback(GtkWidget* widget, gpointer ginstance) {   accept_key_ui *instance = (accept_key_ui*)ginstance;      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "enter destroy_callback\n");   g_free(instance->resend_msg_id);   gtk_widget_destroy(instance->window);   g_free(instance);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "leaving destroy_callback\n");}static void reject_key_callback(GtkWidget* widget, gpointer ginstance) {   accept_key_ui *instance = (accept_key_ui*)ginstance;      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "enter reject_callback\n");   gtk_widget_destroy(instance->window);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "leaving reject_callback\n");}static void accept_key_callback(GtkWidget* widget, gpointer ginstance) {   accept_key_ui *instance = (accept_key_ui*)ginstance;   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "enter accept_callback\n");   GE_buddy_ring = GE_add_key_to_ring(GE_buddy_ring, instance->ring_data);   GE_send_stored_msgs(instance->ring_data->account, instance->ring_data->name);   GE_show_stored_msgs(instance->ring_data->account, instance->ring_data->name, 0);   if (instance->resend_msg_id) {      GE_resend_msg(instance->ring_data->account, instance->ring_data->name, instance->resend_msg_id);   }   instance->ring_data = 0;   gtk_widget_destroy(instance->window);   /* reject_key_callback will now be called since we called destroy on the window */   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "exit accept_callback\n");}static void save_key_callback(GtkWidget* widget, gpointer ginstance) {   accept_key_ui *instance = (accept_key_ui*)ginstance;   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "enter save_callback\n");   GE_add_key_to_file(Buddy_key_file, instance->ring_data);   accept_key_callback(widget, ginstance);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "exit save_callback\n");}void GE_choose_accept_unknown_key(key_ring_data* newkey, gchar* resend_msg_id, GaimConversation *conv) {   GtkWidget *win;   GtkWidget *vbox, *hbox;   GtkWidget *button;   GtkWidget *label;   char strbuf[4096];   accept_key_ui *this_instance;      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "enter choose_accept_unknown\n");   /* First look at the prefs...  */      if (gaim_prefs_get_bool("/plugins/gtk/encrypt/accept_unknown_key")) {      GE_add_key_to_file(Buddy_key_file, newkey);      GE_buddy_ring = GE_add_key_to_ring(GE_buddy_ring, newkey);      GE_send_stored_msgs(newkey->account, newkey->name);      GE_show_stored_msgs(newkey->account, newkey->name, 0);      if (resend_msg_id) {         GE_resend_msg(newkey->account, newkey->name, resend_msg_id);      }      return;   }      /* Need to ask the user... */   gaim_sound_play_event(GAIM_SOUND_RECEIVE);   this_instance = g_malloc(sizeof(accept_key_ui));   GAIM_DIALOG(win);   this_instance->window = win;   this_instance->ring_data = newkey;   this_instance->conv = conv;   this_instance->resend_msg_id = g_strdup(resend_msg_id);   gtk_window_set_title(GTK_WINDOW(win), _("Gaim-Encryption Key Received"));   g_signal_connect(GTK_OBJECT(win), "destroy",                     GTK_SIGNAL_FUNC(destroy_callback),                    (gpointer)this_instance);   vbox = gtk_vbox_new(0, 2);   gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);   gtk_container_add(GTK_CONTAINER(win), vbox);   gtk_widget_show (vbox);   g_snprintf(strbuf, sizeof(strbuf), _("%s key received for '%s'"),              newkey->key->proto->name, newkey->name);   label = gtk_label_new(strbuf);   gtk_box_pack_start(GTK_BOX(vbox), label, 0, 0, 0);   gtk_widget_set_size_request(label, -1, 30);   gtk_widget_show(label);   g_snprintf(strbuf, sizeof(strbuf), _("Key Fingerprint:%*s"),              KEY_FINGERPRINT_LENGTH, newkey->key->fingerprint);   label = gtk_label_new(strbuf);   gtk_box_pack_start(GTK_BOX(vbox), label, 0, 0, 0);   gtk_widget_set_size_request(label, -1, 30);   gtk_widget_show(label);   g_snprintf(strbuf, sizeof(strbuf), _("Do you want to accept this key?"));   label = gtk_label_new(strbuf);   gtk_box_pack_start(GTK_BOX(vbox), label, 0, 0, 0);   gtk_widget_set_size_request(label, -1, 30);   gtk_widget_show(label);      hbox = gtk_hbox_new(FALSE, 2);   gtk_box_pack_end(GTK_BOX(vbox), hbox, 0, 0, 0);   gtk_widget_show(hbox);   button = gtk_button_new_with_label(_("No"));   g_signal_connect(GTK_OBJECT(button), "clicked",                    GTK_SIGNAL_FUNC(reject_key_callback),                    (gpointer)this_instance);   gtk_box_pack_start(GTK_BOX(hbox), button, 0, 0, 0);   gtk_widget_set_size_request(button, 100, -1);   gtk_widget_show(button);      button = gtk_button_new_with_label(_("Accept and Save"));   g_signal_connect(GTK_OBJECT(button), "clicked",                    GTK_SIGNAL_FUNC(save_key_callback),                    (gpointer)this_instance);   gtk_box_pack_end(GTK_BOX(hbox), button, 0, 0, 0);   gtk_widget_set_size_request(button, 120, -1);   gtk_widget_show(button);   button = gtk_button_new_with_label(_("This session only"));   g_signal_connect(GTK_OBJECT(button), "clicked",                    GTK_SIGNAL_FUNC(accept_key_callback),                    (gpointer)this_instance);   gtk_box_pack_end(GTK_BOX(hbox), button, 0, 0, 0);   gtk_widget_set_size_request(button, 130, -1);   gtk_widget_show(button);   gtk_widget_show(win);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "exit choose_accept_unknown\n");}void GE_choose_accept_conflict_key(key_ring_data* newkey, gchar* resend_msg_id, GaimConversation *conv) {   GtkWidget *win;   GtkWidget *vbox, *hbox;   GtkWidget *button;   GtkWidget *label;   char strbuf[4096];   accept_key_ui *this_instance;      gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "enter choose_accept_conflict\n");   /* First look at the prefs...  */      if (gaim_prefs_get_bool("/plugins/gtk/encrypt/accept_conflicting_key")) {      GE_add_key_to_file(Buddy_key_file, newkey);      GE_buddy_ring = GE_add_key_to_ring(GE_buddy_ring, newkey);      GE_send_stored_msgs(newkey->account, newkey->name);      GE_show_stored_msgs(newkey->account, newkey->name, 0);      if (resend_msg_id) {         GE_resend_msg(newkey->account, newkey->name, resend_msg_id);      }      return;   }      /* Need to ask the user... */   gaim_sound_play_event(GAIM_SOUND_RECEIVE);   this_instance = g_malloc(sizeof(accept_key_ui));   GAIM_DIALOG(win);   this_instance->window = win;   this_instance->ring_data = newkey;   this_instance->conv = conv;   this_instance->resend_msg_id = g_strdup(resend_msg_id);      gtk_window_set_title(GTK_WINDOW(win), _("CONFLICTING Gaim-Encryption Key Received"));   g_signal_connect(GTK_OBJECT(win), "destroy",                     GTK_SIGNAL_FUNC(destroy_callback),                    (gpointer)this_instance);   vbox = gtk_vbox_new(0, 2);   gtk_container_set_border_width(GTK_CONTAINER(vbox), 4);   gtk_container_add(GTK_CONTAINER(win), vbox);   gtk_widget_show (vbox);   label = gtk_label_new(_(" ******* WARNING ******* "));   gtk_box_pack_start(GTK_BOX(vbox), label, 0, 0, 0);   gtk_widget_set_size_request(label, -1, 30);   gtk_widget_show(label);   g_snprintf(strbuf, sizeof(strbuf), _("CONFLICTING %s key received for '%s'!"),              newkey->key->proto->name, newkey->name);   label = gtk_label_new(strbuf);   gtk_box_pack_start(GTK_BOX(vbox), label, 0, 0, 0);   gtk_widget_set_size_request(label, -1, 30);   gtk_widget_show(label);   g_snprintf(strbuf, sizeof(strbuf), _("Key Fingerprint:%*s"),              KEY_FINGERPRINT_LENGTH, newkey->key->fingerprint);   label = gtk_label_new(strbuf);   gtk_box_pack_start(GTK_BOX(vbox), label, 0, 0, 0);   gtk_widget_set_size_request(label, -1, 30);   gtk_widget_show(label);   label = gtk_label_new(_(" ******* WARNING ******* "));   gtk_box_pack_start(GTK_BOX(vbox), label, 0, 0, 0);   gtk_widget_set_size_request(label, -1, 30);   gtk_widget_show(label);   label = gtk_label_new(_("This could be a man-in-the-middle attack, or\n"                           "could be someone impersonating your buddy.\n"                           "You should check with your buddy to see if they have\n"                           "generated this new key before trusting it."));   gtk_box_pack_start(GTK_BOX(vbox), label, 0, 0, 0);   //   gtk_widget_set_size_request(label, -1, 30);   gtk_widget_show(label);   g_snprintf(strbuf, sizeof(strbuf), _("Do you want to accept this key?"));   label = gtk_label_new(strbuf);   gtk_box_pack_start(GTK_BOX(vbox), label, 0, 0, 0);   gtk_widget_set_size_request(label, -1, 30);   gtk_widget_show(label);   hbox = gtk_hbox_new(FALSE, 2);   gtk_box_pack_end(GTK_BOX(vbox), hbox, 0, 0, 0);   gtk_widget_show(hbox);   button = gtk_button_new_with_label(_("No"));   g_signal_connect(GTK_OBJECT(button), "clicked",                      GTK_SIGNAL_FUNC(reject_key_callback),                      (gpointer)this_instance);   gtk_box_pack_start(GTK_BOX(hbox), button, 0, 0, 0);   gtk_widget_set_size_request(button, 100, -1);   gtk_widget_show(button);      button = gtk_button_new_with_label(_("Accept and Save"));   g_signal_connect(GTK_OBJECT(button), "clicked",                      GTK_SIGNAL_FUNC(save_key_callback),                      (gpointer)this_instance);   gtk_box_pack_end(GTK_BOX(hbox), button, 0, 0, 0);   gtk_widget_set_size_request(button, 120, -1);   gtk_widget_show(button);   button = gtk_button_new_with_label(_("This session only"));   g_signal_connect(GTK_OBJECT(button), "clicked",                    GTK_SIGNAL_FUNC(accept_key_callback),                    (gpointer)this_instance);   gtk_box_pack_end(GTK_BOX(hbox), button, 0, 0, 0);   gtk_widget_set_size_request(button, 130, -1);   gtk_widget_show(button);   gtk_widget_show(win);   gaim_debug(GAIM_DEBUG_INFO, "gaim-encryption", "enter choose_accept_conflict\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -