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
31void
32on_inputdialog1_destroy(GtkObject *object, struct userdata *user_data)
33{
34	gtk_widget_destroy(user_data->window);
35	gtk_main_quit();
36}
37
38
39void
40on_dialog1_close(GtkDialog *dialog, struct userdata *user_data)
41{
42	gtk_widget_destroy(user_data->window);
43	gtk_main_quit();
44}
45
46
47void
48on_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
57void
58on_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
71gboolean
72enter_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 */
87void
88on_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
110void
111on_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
133void
134on_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
142void
143on_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