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