1 2 /* 3 * Licensed Materials - Property of IBM 4 * 5 * trousers - An open source TCG Software Stack 6 * 7 * (C) Copyright International Business Machines Corp. 2004 8 * 9 */ 10 11 #ifdef HAVE_CONFIG_H 12 # include <config.h> 13 #endif 14 15 #include <gtk/gtk.h> 16 #include <string.h> 17 18 #undef TRUE 19 #undef FALSE 20 21 #include "callbacks.h" 22 #include "interface.h" 23 #include "support.h" 24 #include "trousers/tss.h" 25 #include "trousers/trousers.h" 26 #include "tsplog.h" 27 28 29 /* Callbacks for the simple password dialog */ 30 31 void 32 on_inputdialog1_destroy(GtkObject *object, struct userdata *user_data) 33 { 34 gtk_widget_destroy(user_data->window); 35 gtk_main_quit(); 36 } 37 38 39 void 40 on_dialog1_close(GtkDialog *dialog, struct userdata *user_data) 41 { 42 gtk_widget_destroy(user_data->window); 43 gtk_main_quit(); 44 } 45 46 47 void 48 on_cancelbutton1_clicked(GtkButton *button, struct userdata *user_data) 49 { 50 LogDebugFn(); 51 gtk_widget_destroy(user_data->window); 52 user_data->string_len = 0; 53 gtk_main_quit(); 54 } 55 56 57 void 58 on_okbutton1_clicked(GtkButton *button, struct userdata *user_data) 59 { 60 const gchar *entry_text = gtk_entry_get_text (GTK_ENTRY(user_data->entry)); 61 62 LogDebugFn(); 63 user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entry_text, 64 &user_data->string_len); 65 gtk_widget_destroy(user_data->window); 66 67 gtk_main_quit(); 68 } 69 70 71 gboolean 72 enter_event(GtkWidget *widget, struct userdata *user_data) 73 { 74 const gchar *entry_text = gtk_entry_get_text (GTK_ENTRY(user_data->entry)); 75 76 LogDebugFn(); 77 user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entry_text, 78 &user_data->string_len); 79 gtk_widget_destroy(user_data->window); 80 81 gtk_main_quit(); 82 return TRUE; 83 } 84 85 86 /* Callbacks for the new password dialog */ 87 void 88 on_entryPassword_activate(GtkEntry *entry, struct userdata *user_data) 89 { 90 const gchar *entryPass_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryPass)); 91 const gchar *entryConf_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryConf)); 92 int len = strlen(entryConf_text); 93 94 if (strlen(entryConf_text) == strlen(entryPass_text)) { 95 if (!memcmp(entryPass_text, entryConf_text, len)) { 96 user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entryConf_text, 97 &user_data->string_len); 98 gtk_widget_destroy(user_data->window); 99 gtk_main_quit(); 100 101 LogDebugFn("string len ptr: %p, value = %u", &user_data->string_len, 102 user_data->string_len); 103 return; 104 } 105 } 106 107 gtk_widget_grab_focus(user_data->entryConf); 108 } 109 110 void 111 on_entryConfirm_activate(GtkEntry *entry, struct userdata *user_data) 112 { 113 const gchar *entryPass_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryPass)); 114 const gchar *entryConf_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryConf)); 115 unsigned len = strlen(entryConf_text); 116 117 if (strlen(entryConf_text) == strlen(entryPass_text)) { 118 if (!memcmp(entryPass_text, entryConf_text, len)) { 119 user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entryConf_text, 120 &user_data->string_len); 121 gtk_widget_destroy(user_data->window); 122 gtk_main_quit(); 123 124 LogDebugFn("string len ptr: %p, value = %u", &user_data->string_len, 125 user_data->string_len); 126 return; 127 } 128 } 129 130 gtk_widget_grab_focus(user_data->entryPass); 131 } 132 133 void 134 on_cancelbutton2_clicked(GtkButton *button, struct userdata *user_data) 135 { 136 LogDebugFn(); 137 gtk_widget_destroy(user_data->window); 138 user_data->string_len = 0; 139 gtk_main_quit(); 140 } 141 142 void 143 on_okbutton2_clicked(GtkButton *button, struct userdata *user_data) 144 { 145 const gchar *entryPass_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryPass)); 146 const gchar *entryConf_text = gtk_entry_get_text (GTK_ENTRY(user_data->entryConf)); 147 unsigned len = strlen(entryConf_text); 148 149 if (strlen(entryConf_text) == strlen(entryPass_text)) { 150 if (!memcmp(entryPass_text, entryConf_text, len)) { 151 user_data->string = (char *)Trspi_Native_To_UNICODE((BYTE *)entryConf_text, 152 &user_data->string_len); 153 gtk_widget_destroy(user_data->window); 154 gtk_main_quit(); 155 156 LogDebugFn("string len ptr: %p, value = %u", &user_data->string_len, 157 user_data->string_len); 158 return; 159 } 160 } 161 162 gtk_widget_grab_focus(user_data->entryPass); 163 } 164