1723e4046Schristos
2723e4046Schristos /*
3723e4046Schristos * Licensed Materials - Property of IBM
4723e4046Schristos *
5723e4046Schristos * trousers - An open source TCG Software Stack
6723e4046Schristos *
7723e4046Schristos * (C) Copyright International Business Machines Corp. 2004
8723e4046Schristos *
9723e4046Schristos */
10723e4046Schristos
11723e4046Schristos /*
12723e4046Schristos * Initial main.c file generated by Glade. Edit as required.
13723e4046Schristos * Glade will not overwrite this file.
14723e4046Schristos */
15723e4046Schristos
16723e4046Schristos #ifdef HAVE_CONFIG_H
17723e4046Schristos # include <config.h>
18723e4046Schristos #endif
19723e4046Schristos
20723e4046Schristos #include <sys/types.h>
21723e4046Schristos #include <string.h>
22723e4046Schristos
23723e4046Schristos #include <gtk/gtk.h>
24723e4046Schristos
25723e4046Schristos #undef TRUE
26723e4046Schristos #undef FALSE
27723e4046Schristos
28723e4046Schristos #include "trousers/tss.h"
29723e4046Schristos #include "tsplog.h"
30723e4046Schristos
31723e4046Schristos #include "interface.h"
32723e4046Schristos #include "support.h"
33723e4046Schristos
34723e4046Schristos /*
35723e4046Schristos * DisplayPINWindow()
36723e4046Schristos *
37723e4046Schristos * Popup the dialog to collect an existing password.
38723e4046Schristos *
39723e4046Schristos * string - buffer that the password will be passed back to caller in
40723e4046Schristos * popup - UTF-8 string to be displayed in the title bar of the dialog box
41723e4046Schristos *
42723e4046Schristos */
43723e4046Schristos TSS_RESULT
DisplayPINWindow(BYTE * string,UINT32 * string_len,BYTE * popup)44723e4046Schristos DisplayPINWindow(BYTE *string, UINT32 *string_len, BYTE *popup)
45723e4046Schristos {
46723e4046Schristos GtkWidget *dialog1;
47723e4046Schristos struct userdata ud;
48723e4046Schristos
49723e4046Schristos ud.string_len = 0;
50723e4046Schristos
51723e4046Schristos #ifdef ENABLE_NLS
52723e4046Schristos bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
53723e4046Schristos bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
54723e4046Schristos textdomain (GETTEXT_PACKAGE);
55723e4046Schristos #endif
56723e4046Schristos
57723e4046Schristos gtk_set_locale();
58723e4046Schristos gtk_init_check((int *)NULL, (char ***)NULL);
59723e4046Schristos
60723e4046Schristos LogDebug("address of string_len: %p", &ud.string_len);
61723e4046Schristos dialog1 = create_password_dialog(&ud, (char *)popup);
62723e4046Schristos gtk_widget_show(dialog1);
63723e4046Schristos
64723e4046Schristos gtk_main();
65723e4046Schristos
66723e4046Schristos if (ud.string_len) {
67723e4046Schristos memcpy(string, ud.string, ud.string_len);
68*0861b331Schristos __tspi_memset(ud.string, 0, ud.string_len);
69723e4046Schristos free(ud.string);
70723e4046Schristos }
71723e4046Schristos *string_len = ud.string_len;
72723e4046Schristos
73723e4046Schristos return TSS_SUCCESS;
74723e4046Schristos }
75723e4046Schristos
76723e4046Schristos /*
77723e4046Schristos * DisplayNewPINWindow()
78723e4046Schristos *
79723e4046Schristos * Popup the dialog to collect a new password.
80723e4046Schristos *
81723e4046Schristos * string - buffer that the password will be passed back to caller in
82723e4046Schristos * popup - UTF-8 string to be displayed in the title bar of the dialog box
83723e4046Schristos *
84723e4046Schristos */
85723e4046Schristos TSS_RESULT
DisplayNewPINWindow(BYTE * string,UINT32 * string_len,BYTE * popup)86723e4046Schristos DisplayNewPINWindow(BYTE *string, UINT32 *string_len, BYTE *popup)
87723e4046Schristos {
88723e4046Schristos GtkWidget *dialog1;
89723e4046Schristos struct userdata ud;
90723e4046Schristos
91723e4046Schristos ud.string_len = 0;
92723e4046Schristos
93723e4046Schristos #ifdef ENABLE_NLS
94723e4046Schristos bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
95723e4046Schristos bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
96723e4046Schristos textdomain (GETTEXT_PACKAGE);
97723e4046Schristos #endif
98723e4046Schristos
99723e4046Schristos gtk_set_locale();
100723e4046Schristos gtk_init_check((int *)NULL, (char ***)NULL);
101723e4046Schristos
102723e4046Schristos LogDebug("address of string_len: %p", &ud.string_len);
103723e4046Schristos dialog1 = create_new_password_dialog(&ud, (char *)popup);
104723e4046Schristos gtk_widget_show(dialog1);
105723e4046Schristos
106723e4046Schristos gtk_main();
107723e4046Schristos
108723e4046Schristos if (ud.string_len) {
109723e4046Schristos memcpy(string, ud.string, ud.string_len);
110*0861b331Schristos __tspi_memset(ud.string, 0, ud.string_len);
111723e4046Schristos free(ud.string);
112723e4046Schristos }
113723e4046Schristos *string_len = ud.string_len;
114723e4046Schristos
115723e4046Schristos return TSS_SUCCESS;
116723e4046Schristos }
117723e4046Schristos
118