pull/753/merge
Ruslan Usifov 2025-06-20 20:59:05 +05:30 committed by GitHub
commit f0fa388d6b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 231 additions and 64 deletions

View File

@ -880,6 +880,7 @@ GenericPassDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
SetWindowPos(hwndDlg, NULL, 0, 0, rect.right, rect.bottom, SWP_NOMOVE);
PrintDebug(L"Window resized to = %d %d", rect.right, rect.bottom);
}
ShowWindow(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), SW_HIDE);
}
else if (param->flags & FLAG_PASS_TOKEN)
{
@ -887,11 +888,71 @@ GenericPassDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
SetDlgItemText(hwndDlg,
ID_TXT_DESCRIPTION,
LoadLocalizedString(IDS_NFO_TOKEN_PASSWORD_REQUEST, param->id));
if (param->c->flags & FLAG_DISABLE_SAVE_PASS)
{
ShowWindow(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), SW_HIDE);
}
else
{
if (RecallSmartCardPin(param->c->config_name, password))
{
if (password[0] != L'\0' && param->c->failed_auth_attempts == 0)
{
SetDlgItemTextW(hwndDlg, ID_EDT_RESPONSE, password);
Button_SetCheck(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), BST_CHECKED);
const char * template = "password \"%s\" \"%%s\"";
char* fmt = malloc(strlen(template) + strlen(param->id));
if (fmt)
{
sprintf(fmt, template, param->id);
PrintDebug(L"Send passwd to mgmt with format: '%hs'", fmt);
ManagementCommandFromInput(param->c, fmt, hwndDlg, ID_EDT_RESPONSE);
free(fmt);
EndDialog(hwndDlg, IDOK);
return TRUE;
}
else /* no memory? send stop signal */
{
WriteStatusLog(param->c,
L"GUI> ",
L"Out of memory in password dialog: sending stop signal",
false);
StopOpenVPN(param->c);
}
}
else if (param->c->failed_auth_attempts > 0)
{
SendMessage(
GetDlgItem(hwndDlg, ID_EDT_RESPONSE), EM_SETSEL, 0, MAKELONG(0, -1));
SetDlgItemTextW(
hwndDlg, ID_TXT_WARNING, LoadLocalizedString(IDS_NFO_KEY_PASS_RETRY));
// Extend window size for Warning
RECT rect = { 0 };
GetWindowRect(hwndDlg, &rect);
rect.right -= rect.left;
rect.bottom -= rect.top;
HWND warningText = GetDlgItem(hwndDlg, ID_TXT_WARNING);
RECT warningRect = { 0 };
GetWindowRect(warningText, &warningRect);
SetWindowPos(hwndDlg, NULL, 0, 0, rect.right, rect.bottom + warningRect.bottom - warningRect.top + DPI_SCALE(4), SWP_NOMOVE);
}
SecureZeroMemory(password, sizeof(password));
}
}
}
else
{
WriteStatusLog(param->c, L"GUI> ", L"Unknown password request", false);
SetDlgItemText(hwndDlg, ID_TXT_DESCRIPTION, wstr);
ShowWindow(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), SW_HIDE);
}
free(wstr);
@ -931,7 +992,7 @@ GenericPassDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
switch (LOWORD(wParam))
{
case ID_EDT_RESPONSE:
if (!(param->flags & FLAG_CR_ECHO))
if (!(param->flags & FLAG_CR_ECHO) && HIWORD(wParam) != EN_KILLFOCUS)
{
ResetPasswordReveal(GetDlgItem(hwndDlg, ID_EDT_RESPONSE),
GetDlgItem(hwndDlg, ID_PASSWORD_REVEAL),
@ -945,6 +1006,19 @@ GenericPassDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
}
break;
case ID_CHK_SAVE_PASS:
param->c->flags ^= FLAG_SAVE_KEY_PASS;
if (param->c->flags & FLAG_SAVE_KEY_PASS)
{
Button_SetCheck(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), BST_CHECKED);
}
else
{
DeleteSavedSmartCardPin(param->c->config_name);
Button_SetCheck(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), BST_UNCHECKED);
}
break;
case IDOK:
if (GetDlgItemTextW(hwndDlg, ID_EDT_RESPONSE, password, _countof(password))
&& !validate_input(password, L"\n"))
@ -1001,6 +1075,11 @@ GenericPassDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
PrintDebug(L"Send passwd to mgmt with format: '%hs'", fmt);
ManagementCommandFromInput(param->c, fmt, hwndDlg, ID_EDT_RESPONSE);
free(fmt);
if (param->flags & FLAG_PASS_TOKEN && param->c->flags & FLAG_SAVE_KEY_PASS)
{
SaveSmartCardPin(param->c->config_name, password);
}
}
else /* no memory? send stop signal */
{

View File

@ -129,6 +129,13 @@ SaveAuthPass(UNUSED const WCHAR *config_name, UNUSED const WCHAR *password)
{
return 1;
}
int
SaveSmartCardPin(UNUSED const WCHAR *config_name, UNUSED const WCHAR *username)
{
return 1;
}
int
SaveUsername(UNUSED const WCHAR *config_name, UNUSED const WCHAR *username)
{
@ -151,12 +158,24 @@ RecallUsername(UNUSED const WCHAR *config_name, UNUSED WCHAR *username)
return 0;
}
int
RecallSmartCardPin(UNUSED const WCHAR *config_name, UNUSED WCHAR *pin)
{
return 0;
}
void
DeleteSavedAuthPass(UNUSED const WCHAR *config_name)
{
return;
}
void
DeleteSavedSmartCardPin(const WCHAR *config_name)
{
return;
}
void
DeleteSavedKeyPass(UNUSED const WCHAR *config_name)
{

View File

@ -78,7 +78,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Odpověď na výzvu"
@ -89,8 +89,10 @@ BEGIN
LTEXT "Odpověď:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Zrušit", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Uložit heslo", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Zrušit", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -78,7 +78,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN Challenge Response"
@ -89,8 +89,10 @@ BEGIN
LTEXT "&Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "&OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "&Abbrechen", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Passwort &speichern", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "&OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "&Abbrechen", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -79,7 +79,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Challenge Response"
@ -90,8 +90,10 @@ BEGIN
LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Annuller", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Husk kodeord", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Annuller", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -78,7 +78,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN Challenge Response"
@ -89,8 +89,10 @@ BEGIN
LTEXT "&Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "&OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "&Cancel", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Save", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "&OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "&Cancel", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -77,7 +77,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Challenge Response"
@ -88,8 +88,10 @@ BEGIN
LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Save", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -80,7 +80,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST | WS_EX_RTLREADING | WS_EX_LAYOUTRTL
CAPTION "OpenVPN پاسخ چالش"
@ -91,8 +91,10 @@ BEGIN
LTEXT "پاسخ :", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "بسیار خوب", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "لغو", IDCANCEL, 90, 51, 52, 14
CHECKBOX "نگه داشتن رمز عبور", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "بسیار خوب", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "لغو", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -78,7 +78,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Haastemenetelmä"
@ -89,8 +89,10 @@ BEGIN
LTEXT "Vastaus:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Peruuta", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Tallenna salasana", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Peruuta", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -77,7 +77,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Réponse de défi"
@ -88,8 +88,10 @@ BEGIN
LTEXT "Réponse:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Annuler", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Enregistrer mot de passe", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Annuler", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -77,7 +77,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Challenge Response"
@ -88,8 +88,10 @@ BEGIN
LTEXT "&Risposta:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "&OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "&Annulla", IDCANCEL, 90, 51, 52, 14
CHECKBOX "&Ricorda password", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "&OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "&Annulla", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -79,7 +79,7 @@ BEGIN
LTEXT "", ID_TXT_WARNING, 6, 108, 150, 10
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - チャレンジ/レスポンス"
@ -90,8 +90,10 @@ BEGIN
LTEXT "レスポンス(&R):", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK(&O)", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "キャンセル(&C)", IDCANCEL, 90, 51, 52, 14
CHECKBOX "パスワードを保存(&S)", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK(&O)", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "キャンセル(&C)", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -79,7 +79,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - 자격증명"
@ -90,8 +90,10 @@ BEGIN
LTEXT "요청값:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "확인", IDOK, 25, 58, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
PUSHBUTTON "취소", IDCANCEL, 85, 58, 52, 14
CHECKBOX "암호 저장", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "확인", IDOK, 25, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED
PUSHBUTTON "취소", IDCANCEL, 85, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -77,7 +77,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Challenge Response"
@ -88,8 +88,10 @@ BEGIN
LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Annuleren", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Wachtwoord opslaan", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Annuleren", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -78,7 +78,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Challenge Response"
@ -89,8 +89,10 @@ BEGIN
LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Husk passord", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -79,7 +79,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Odpowiedź"
@ -90,8 +90,10 @@ BEGIN
LTEXT "Odpowiedź:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Anuluj", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Zapisz hasło", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Anuluj", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -77,7 +77,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Resposta do Desafio"
@ -88,8 +88,10 @@ BEGIN
LTEXT "Resposta:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Salvar senha", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Cancelar", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -79,7 +79,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN Challenge Response"
@ -90,8 +90,10 @@ BEGIN
LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Отмена", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Запомнить", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Отмена", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -77,7 +77,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Challenge Response"
@ -88,8 +88,10 @@ BEGIN
LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Save", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -79,7 +79,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Challenge Response"
@ -90,8 +90,10 @@ BEGIN
LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "Tamam", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Çıkış", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Save", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "Tamam", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Çıkış", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -77,7 +77,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - Challenge Response"
@ -88,8 +88,10 @@ BEGIN
LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Скасувати", IDCANCEL, 90, 51, 52, 14
CHECKBOX "Запам'ятати", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "OK", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "Скасувати", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -80,7 +80,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - 质询响应"
@ -91,8 +91,10 @@ BEGIN
LTEXT "响应:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "确定", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 90, 51, 52, 14
CHECKBOX "保存密码", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "确定", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -80,7 +80,7 @@ BEGIN
END
/* Challenge Response Dialog */
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 72
ID_DLG_CHALLENGE_RESPONSE DIALOGEX 6, 18, 212, 90
STYLE WS_SIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_CENTER | DS_SETFOREGROUND
EXSTYLE WS_EX_TOPMOST
CAPTION "OpenVPN - 挑戰回應"
@ -91,8 +91,10 @@ BEGIN
LTEXT "回應:", ID_LTEXT_RESPONSE, 6, 30, 50, 10
EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL
ICON ID_ICO_EYE, ID_PASSWORD_REVEAL, 156, 28, 14, 14, SS_ICON|SS_NOTIFY|SS_REALSIZEIMAGE
PUSHBUTTON "確認", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 90, 51, 52, 14
CHECKBOX "儲存密碼", ID_CHK_SAVE_PASS, 60, 45, 100, 10
PUSHBUTTON "確認", IDOK, 20, 65, 50, 14, BS_PUSHBUTTON | WS_TABSTOP
PUSHBUTTON "取消", IDCANCEL, 90, 65, 52, 14
LTEXT "", ID_TXT_WARNING, 6, 86, 400, 10
END
/* Status Dialog */

View File

@ -35,6 +35,7 @@
#define AUTH_PASS_DATA L"auth-data"
#define ENTROPY_DATA L"entropy"
#define AUTH_USER_DATA L"username"
#define AUTH_SMARTCARD_DATA L"auth-smartcard-pin"
#define ENTROPY_LEN 16
static DWORD
@ -162,6 +163,12 @@ SaveAuthPass(const WCHAR *config_name, const WCHAR *password)
return save_encrypted(config_name, password, AUTH_PASS_DATA);
}
int
SaveSmartCardPin(const WCHAR *config_name, const WCHAR *pin)
{
return save_encrypted(config_name, pin, AUTH_SMARTCARD_DATA);
}
/*
* Returns 1 on success, 0 on failure. password should have space
* for up to capacity wide chars incluing nul termination
@ -230,6 +237,12 @@ RecallAuthPass(const WCHAR *config_name, WCHAR *password)
return recall_encrypted(config_name, password, USER_PASS_LEN, AUTH_PASS_DATA);
}
int
RecallSmartCardPin(const WCHAR *config_name, WCHAR *pin)
{
return recall_encrypted(config_name, pin, USER_PASS_LEN, AUTH_SMARTCARD_DATA);
}
int
SaveUsername(const WCHAR *config_name, const WCHAR *username)
{
@ -237,6 +250,7 @@ SaveUsername(const WCHAR *config_name, const WCHAR *username)
SetConfigRegistryValueBinary(config_name, AUTH_USER_DATA, (BYTE *)username, len);
return 1;
}
/*
* The buffer username should be have space for up to USER_PASS_LEN
* WCHARs including nul.
@ -268,6 +282,12 @@ DeleteSavedAuthPass(const WCHAR *config_name)
DeleteConfigRegistryValue(config_name, AUTH_PASS_DATA);
}
void
DeleteSavedSmartCardPin(const WCHAR *config_name)
{
DeleteConfigRegistryValue(config_name, AUTH_SMARTCARD_DATA);
}
/* delete saved config-specific auth password and private key passphrase */
void
DeleteSavedPasswords(const WCHAR *config_name)
@ -275,6 +295,7 @@ DeleteSavedPasswords(const WCHAR *config_name)
DeleteConfigRegistryValue(config_name, KEY_PASS_DATA);
DeleteConfigRegistryValue(config_name, AUTH_PASS_DATA);
DeleteConfigRegistryValue(config_name, ENTROPY_DATA);
DeleteConfigRegistryValue(config_name, AUTH_SMARTCARD_DATA);
}
/* check if auth password is saved */

View File

@ -31,16 +31,22 @@ int SaveKeyPass(const WCHAR *config_name, const WCHAR *password);
int SaveAuthPass(const WCHAR *config_name, const WCHAR *password);
int SaveSmartCardPin(const WCHAR *config_name, const WCHAR *pin);
int SaveUsername(const WCHAR *config_name, const WCHAR *username);
int RecallKeyPass(const WCHAR *config_name, WCHAR *password);
int RecallAuthPass(const WCHAR *config_name, WCHAR *password);
int RecallSmartCardPin(const WCHAR *config_name, WCHAR *pin);
int RecallUsername(const WCHAR *config_name, WCHAR *username);
void DeleteSavedAuthPass(const WCHAR *config_name);
void DeleteSavedSmartCardPin(const WCHAR *config_name);
void DeleteSavedKeyPass(const WCHAR *config_name);
void DeleteSavedPasswords(const WCHAR *config_name);