mturk 2005/06/07 05:41:44
Modified: jni/native/os/win32 system.c
jni/native/src sslutils.c
Added: jni/native/os/win32 apache.ico libtcnative.rc
Log:
Add simple GUI password prompt for WIN32.
In most cases the password will be provided by Java, so
this is just for testing.
Revision Changes Path
1.6 +58 -2 jakarta-tomcat-connectors/jni/native/os/win32/system.c
Index: system.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/os/win32/system.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- system.c 28 May 2005 11:40:52 -0000 1.5
+++ system.c 7 Jun 2005 12:41:44 -0000 1.6
@@ -20,7 +20,8 @@
*/
#define _WIN32_WINNT 0x0500
-
+#include <windows.h>
+#include <winsock.h>
#include "apr.h"
#include "apr_pools.h"
#include "apr_network_io.h"
@@ -28,6 +29,7 @@
#include "apr_arch_atime.h" /* for FileTimeToAprTime */
#include "tcn.h"
+#include "ssl_private.h"
#pragma warning(push)
#pragma warning(disable : 4201)
@@ -214,3 +216,57 @@
(*e)->ReleaseLongArrayElements(e, inf, pvals, 0);
return rv;
}
+
+static DWORD WINAPI password_thread(void *data)
+{
+ tcn_pass_cb_t *cb = (tcn_pass_cb_t *)data;
+ MSG msg;
+ HWND hwnd = CreateDialog(dll_instance, MAKEINTRESOURCE(1001), NULL,
NULL);
+ if (hwnd != NULL)
+ ShowWindow(hwnd, SW_SHOW);
+ else {
+ ExitThread(1);
+ return 1;
+ }
+ while (1) {
+ if (PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE)) {
+ if (msg.message == WM_KEYUP) {
+ int nVirtKey = (int)msg.wParam;
+ if (nVirtKey == VK_ESCAPE) {
+ DestroyWindow(hwnd);
+ break;
+ }
+ else if (nVirtKey == VK_RETURN) {
+ HWND he = GetDlgItem(hwnd, 1002);
+ if (he) {
+ int n = GetWindowText(he, cb->password,
SSL_MAX_PASSWORD_LEN - 1);
+ cb->password[n] = '\0';
+ }
+ DestroyWindow(hwnd);
+ break;
+ }
+ }
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ else
+ Sleep(100);
+ }
+ ExitThread(0);
+ return 0;
+}
+
+int WIN32_SSL_password_prompt(tcn_pass_cb_t *data)
+{
+ DWORD id;
+ HANDLE thread;
+ /* TODO: See how to display this from service mode */
+ thread = CreateThread(NULL, 0,
+ password_thread, data,
+ 0, &id);
+ WaitForSingleObject(thread, INFINITE);
+ CloseHandle(thread);
+ return strlen(data->password);
+}
+
+
1.1 jakarta-tomcat-connectors/jni/native/os/win32/apache.ico
<<Binary file>>
1.1
jakarta-tomcat-connectors/jni/native/os/win32/libtcnative.rc
Index: libtcnative.rc
===================================================================
#include <windows.h>
1000 ICON "apache.ico"
1001 DIALOGEX 0, 0, 252, 51
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_CAPTION
CAPTION "Password prompt"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
ICON 1000,-1,8,6,21,20
LTEXT "Some of your private key files are encrypted for
security reasons.\nIn order to read them you have to provide the pass phrases.",
-1,29,5,220,19
LTEXT "Enter password:",-1,7,28,75,8
EDITTEXT 1002,67,27,174,12,ES_PASSWORD | ES_AUTOHSCROLL
END
1 VERSIONINFO
FILEVERSION 1,1,0,0
PRODUCTVERSION 1,1,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", "Licensed under the Apache License, Version 2.0
(the ""License""); you may not use this file except in compliance with the
License. You may obtain a copy of the License
at\r\n\r\nhttp://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by
applicable law or agreed to in writing, software distributed under the License
is distributed on an ""AS IS"" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the specific language
governing permissions and limitations under the License."
VALUE "CompanyName", "Apache Software Foundation"
VALUE "FileDescription", "Tomcat Native Java Library"
VALUE "FileVersion", "1.1.0-dev"
VALUE "InternalName", "libtcnative-1"
VALUE "LegalCopyright", "Copyright 2000-2005 The Apache Software
Foundation"
VALUE "OriginalFilename", "libtcnative-1.dll"
VALUE "ProductName", "Apache Portable Runtime"
VALUE "ProductVersion", "1.1.0-dev"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
1.21 +8 -7 jakarta-tomcat-connectors/jni/native/src/sslutils.c
Index: sslutils.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/sslutils.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- sslutils.c 7 Jun 2005 11:05:07 -0000 1.20
+++ sslutils.c 7 Jun 2005 12:41:44 -0000 1.21
@@ -31,6 +31,10 @@
#ifdef HAVE_OPENSSL
#include "ssl_private.h"
+#ifdef WIN32
+extern int WIN32_SSL_password_prompt(tcn_pass_cb_t *data);
+#endif
+
/* _________________________________________________________________
**
** Additional High-Level Functions for OpenSSL
@@ -84,14 +88,11 @@
}
else {
#ifdef WIN32
- STARTUPINFO si;
- GetStartupInfo(&si);
- /* Display a new Console window */
- if (si.wShowWindow == 0)
- return 0;
-#endif
+ rv = WIN32_SSL_password_prompt(data);
+#else
EVP_read_pw_string(data->password, SSL_MAX_PASSWORD_LEN,
data->prompt, 0);
+#endif
rv = strlen(data->password);
}
if (rv > 0) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]