xref: /netbsd-src/crypto/external/cpl/trousers/dist/src/tspi/gtk/main.c (revision 1023804e3833a0bd94414f2545512128f6502c74)
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 /*
12  * Initial main.c file generated by Glade. Edit as required.
13  * Glade will not overwrite this file.
14  */
15 
16 #ifdef HAVE_CONFIG_H
17 #  include <config.h>
18 #endif
19 
20 #include <sys/types.h>
21 #include <string.h>
22 
23 #include <gtk/gtk.h>
24 
25 #undef TRUE
26 #undef FALSE
27 
28 #include "trousers/tss.h"
29 #include "tsplog.h"
30 
31 #include "interface.h"
32 #include "support.h"
33 
34 /*
35  * DisplayPINWindow()
36  *
37  * Popup the dialog to collect an existing password.
38  *
39  * string - buffer that the password will be passed back to caller in
40  * popup - UTF-8 string to be displayed in the title bar of the dialog box
41  *
42  */
43 TSS_RESULT
DisplayPINWindow(BYTE * string,UINT32 * string_len,BYTE * popup)44 DisplayPINWindow(BYTE *string, UINT32 *string_len, BYTE *popup)
45 {
46   GtkWidget *dialog1;
47   struct userdata ud;
48 
49   ud.string_len = 0;
50 
51 #ifdef ENABLE_NLS
52   bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
53   bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
54   textdomain (GETTEXT_PACKAGE);
55 #endif
56 
57   gtk_set_locale();
58   gtk_init_check((int *)NULL, (char ***)NULL);
59 
60   LogDebug("address of string_len: %p", &ud.string_len);
61   dialog1 = create_password_dialog(&ud, (char *)popup);
62   gtk_widget_show(dialog1);
63 
64   gtk_main();
65 
66   if (ud.string_len) {
67 	  memcpy(string, ud.string, ud.string_len);
68 	  __tspi_memset(ud.string, 0, ud.string_len);
69 	  free(ud.string);
70   }
71   *string_len = ud.string_len;
72 
73   return TSS_SUCCESS;
74 }
75 
76 /*
77  * DisplayNewPINWindow()
78  *
79  * Popup the dialog to collect a new password.
80  *
81  * string - buffer that the password will be passed back to caller in
82  * popup - UTF-8 string to be displayed in the title bar of the dialog box
83  *
84  */
85 TSS_RESULT
DisplayNewPINWindow(BYTE * string,UINT32 * string_len,BYTE * popup)86 DisplayNewPINWindow(BYTE *string, UINT32 *string_len, BYTE *popup)
87 {
88   GtkWidget *dialog1;
89   struct userdata ud;
90 
91   ud.string_len = 0;
92 
93 #ifdef ENABLE_NLS
94   bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
95   bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
96   textdomain (GETTEXT_PACKAGE);
97 #endif
98 
99   gtk_set_locale();
100   gtk_init_check((int *)NULL, (char ***)NULL);
101 
102   LogDebug("address of string_len: %p", &ud.string_len);
103   dialog1 = create_new_password_dialog(&ud, (char *)popup);
104   gtk_widget_show(dialog1);
105 
106   gtk_main();
107 
108   if (ud.string_len) {
109 	  memcpy(string, ud.string, ud.string_len);
110 	  __tspi_memset(ud.string, 0, ud.string_len);
111 	  free(ud.string);
112   }
113   *string_len = ud.string_len;
114 
115   return TSS_SUCCESS;
116 }
117 
118