diff -u -r openvpn-2.0_beta7/options.c openvpn-2.0_beta7-psw2/options.c
--- openvpn-2.0_beta7/options.c	Tue Jun 29 05:31:02 2004
+++ openvpn-2.0_beta7-psw2/options.c	Fri Jul 16 22:03:34 2004
@@ -330,6 +330,7 @@
   "                  The optional d parameter controls key directionality,\n"
   "                  see --secret option for more info.\n"
   "--askpass       : Get PEM password from controlling tty before we daemonize.\n"
+  "--passphrase psw: Use PEM password \"psw\".\n"
   "--crl-verify crl: Check peer certificate against a CRL.\n"
   "--tls-verify cmd: Execute shell command cmd to verify the X509 name of a\n"
   "                  pending TLS connection that has otherwise passed all other\n"
@@ -3029,6 +3030,13 @@
     {
       VERIFY_PERMISSION (OPT_P_GENERAL);
       options->askpass = true;
+    }
+  else if (streq (p[0], "passphrase") && p[1])
+    {
+      extern char passbuf[256];
+      ++i;
+      VERIFY_PERMISSION (OPT_P_GENERAL);
+      strncpynt(passbuf, p[1], sizeof(passbuf) - 1);
     }
   else if (streq (p[0], "single-session"))
     {
Only in openvpn-2.0_beta7-psw2: options.c.orig
diff -u -r openvpn-2.0_beta7/ssl.c openvpn-2.0_beta7-psw2/ssl.c
--- openvpn-2.0_beta7/ssl.c	Tue Jun 29 08:42:58 2004
+++ openvpn-2.0_beta7-psw2/ssl.c	Fri Jul 16 22:03:34 2004
@@ -54,6 +54,8 @@
 
 #include "memdbg.h"
 
+char passbuf[256];
+
 #ifdef MEASURE_TLS_HANDSHAKE_STATS
 
 static int tls_handshake_success; /* GLOBAL */
@@ -61,6 +63,7 @@
 static int tls_packets_generated; /* GLOBAL */
 static int tls_packets_sent;      /* GLOBAL */
 
+
 #define INCR_SENT       ++tls_packets_sent
 #define INCR_GENERATED  ++tls_packets_generated
 #define INCR_SUCCESS    ++tls_handshake_success
@@ -239,7 +242,6 @@
 pem_password_callback (char *buf, int size, int rwflag, void *u)
 {
 #ifdef HAVE_GETPASS
-  static char passbuf[256];
 
   if (!strlen (passbuf))
     {

