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
on_inputdialog1_destroy(GtkObject * object,struct userdata * user_data)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
on_dialog1_close(GtkDialog * dialog,struct userdata * user_data)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
on_cancelbutton1_clicked(GtkButton * button,struct userdata * user_data)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
on_okbutton1_clicked(GtkButton * button,struct userdata * user_data)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
enter_event(GtkWidget * widget,struct userdata * user_data)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
on_entryPassword_activate(GtkEntry * entry,struct userdata * user_data)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
on_entryConfirm_activate(GtkEntry * entry,struct userdata * user_data)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
on_cancelbutton2_clicked(GtkButton * button,struct userdata * user_data)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
on_okbutton2_clicked(GtkButton * button,struct userdata * user_data)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