[OpenVPN home] [Date Prev] [Date Index] [Date Next]
[OpenVPN mailing lists] [Thread Prev] [Thread Index] [Thread Next]
Google
 
Web openvpn.net

Re: [Openvpn-users] RSA Key with password protection problem


  • Subject: Re: [Openvpn-users] RSA Key with password protection problem
  • From: Stefano Bracalenti <stefano.bracalenti@xxxxxxxxxxxx>
  • Date: 03 Oct 2003 01:25:54 +0200

On Thu, 2003-10-02 at 22:07, Arkadiusz Patyk wrote:
> Hi,
> 
> Thu Oct 02 22:00:10 2003 0: OpenVPN 1.5-beta9 Win32-MinGW [SSL] [LZO]
> [MTU-DYNAMIC] built on Oct  1 2003
> Thu Oct 02 22:00:10 2003 1: Sorry but I can't read a password from the
> console because this operating system or C library doesn't support the
> getpass() function
> Thu Oct 02 22:00:10 2003 2: Exiting
> 
> ;-(
> 
> How can I  protect using password ?

You need the getpass() function. I use one from a libc windows porting.
You can add something like this to win32.c:

---

char *
getpass (const char * prompt)
{
        static char input[256];
        HANDLE in;
        HANDLE err;
        DWORD  count;

        in = GetStdHandle (STD_INPUT_HANDLE);
        err = GetStdHandle (STD_ERROR_HANDLE);

        if (in == INVALID_HANDLE_VALUE || err == INVALID_HANDLE_VALUE)
                return NULL;

        if (WriteFile (err, prompt, strlen (prompt), &count, NULL))
        {
                int istty = (GetFileType (in) == FILE_TYPE_CHAR);
                DWORD old_flags;
                int rc;

                if (istty)
                {
                        if (GetConsoleMode (in, &old_flags))
                                SetConsoleMode (in, ENABLE_LINE_INPUT |
ENABLE_PROCESSED_INPUT);
                        else
                                istty = 0;
                }
                rc = ReadFile (in, input, sizeof (input), &count, NULL);
                if (count >= 2 && input[count - 2] == '\r')
                        input[count - 2] = '\0';
                else
                {
                        char buf[256];
                        while (ReadFile (in, buf, sizeof (buf), &count,
NULL) > 0)
                                if (count >= 2 && buf[count - 2] ==
'\r')
                                        break;
                }
                WriteFile (err, "\r\n", 2, &count, NULL);
                if (istty)
                        SetConsoleMode (in, old_flags);
                if (rc)
                        return input;
        }

        return NULL;
}

---

Also remember to uncomment or insert if missing "#define HAVE_GETPASS 1"
in config-win32.h. Recompile and enjoy ;)

Hope this help!

Stefano.




____________________________________________
Openvpn-users mailing list
Openvpn-users@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/openvpn-users