9d8aaca7f9873165a3d0c9ce321e8194c6ba4ae6
[aaf/sshsm.git] / SoftHSMv2 / src / bin / win32 / getpassphase.cpp
1 /* WIN32 getpassphrase */
2
3 #include <config.h>
4 #include <stdio.h>
5
6 char *
7 getpassphrase(const char *prompt) {
8         static char buf[128];
9         HANDLE h;
10         DWORD cc, mode;
11         int cnt;
12
13         h = GetStdHandle(STD_INPUT_HANDLE);
14         fputs(prompt, stderr);
15         fflush(stderr);
16         fflush(stdout);
17         FlushConsoleInputBuffer(h);
18         GetConsoleMode(h, &mode);
19         SetConsoleMode(h, ENABLE_PROCESSED_INPUT);
20
21         for (cnt = 0; cnt < sizeof(buf) - 1; cnt++)
22         {
23                 ReadFile(h, buf + cnt, 1, &cc, NULL);
24                 if (buf[cnt] == '\r')
25                         break;
26                 fputc('*', stdout);
27                 fflush(stderr);
28                 fflush(stdout);
29         }
30
31         SetConsoleMode(h, mode);
32         buf[cnt] = '\0';
33         fputs("\n", stderr);
34         return (buf);
35 }