xref: /netbsd-src/crypto/external/cpl/trousers/dist/src/tspi/gtk/callbacks.c (revision 2d5f7628c5531eb583b9313ac2fd1cf8582b4479)
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