📄 pkgenwiz.c
字号:
switch (uMsg) {
case WM_GETTEXT :
wParam = lPhrase1Len;
lParam = (LPARAM)szPhrase1;
break;
case WM_CHAR :
switch (wParam) {
case VK_TAB :
if (GetKeyState (VK_SHIFT) & 0x8000)
SetFocus (GetDlgItem (GetParent (hWnd), IDC_DUMMYSTOP));
else
SetFocus (GetDlgItem (GetParent (hWnd),
IDC_EDIT_PASSPHRASE2));
break;
case VK_RETURN :
{
HWND hGrandParent = GetParent (GetParent (hWnd));
PropSheet_PressButton (hGrandParent, PSBTN_NEXT);
break;
}
default :
lResult = CallWindowProc (wpOrigPhrase1Proc,
hWnd, uMsg, wParam, lParam);
CallWindowProc (wpOrigPhrase1Proc,
hWnd, WM_GETTEXT, sizeof(szBuf), (LPARAM)szBuf);
uQuality = PGPEstimatePassphraseQuality (szBuf);
memset (szBuf, 0, sizeof(szBuf));
SendDlgItemMessage (GetParent (hWnd), IDC_PHRASEQUALITY,
PBM_SETPOS, uQuality, 0);
return lResult;
}
break;
}
return CallWindowProc(wpOrigPhrase1Proc, hWnd, uMsg, wParam, lParam);
}
// ______________________________________________
//
// New passphrase 2 edit box subclass procedure
static LRESULT APIENTRY
sWizPhrase2SubclassProc (
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
if (sWizCommonNewKeyPhraseMsgProc (hWnd, uMsg, wParam, lParam))
return 0;
switch (uMsg) {
case WM_GETTEXT :
wParam = lPhrase2Len;
lParam = (LPARAM)szPhrase2;
break;
case WM_CHAR :
switch (wParam) {
case VK_TAB :
if (GetKeyState (VK_SHIFT) & 0x8000)
SetFocus (GetDlgItem (GetParent (hWnd), IDC_EDIT_PASSPHRASE));
else
SetFocus (GetDlgItem (GetParent (hWnd),
IDC_CHECK_HIDE_TYPING));
break;
case VK_RETURN :
{
HWND hGrandParent = GetParent (GetParent (hWnd));
PropSheet_PressButton (hGrandParent, PSBTN_NEXT);
break;
}
}
break;
}
return CallWindowProc(wpOrigPhrase2Proc, hWnd, uMsg, wParam, lParam);
}
// ______________________________________________
//
// Signing passphrase edit box subclass procedure
static LRESULT APIENTRY
sWizPhrase3SubclassProc (
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
if (sWizCommonNewKeyPhraseMsgProc (hWnd, uMsg, wParam, lParam))
return 0;
switch (uMsg) {
case WM_GETTEXT :
wParam = lPhrase1Len;
lParam = (LPARAM)szPhrase1;
break;
case WM_CHAR :
switch (wParam) {
case VK_TAB :
if (GetKeyState (VK_SHIFT) & 0x8000)
SetFocus (GetDlgItem (GetParent (hWnd), IDC_CHECK_SIGN_KEY));
else
SetFocus (GetDlgItem (GetParent (hWnd),
IDC_CHECK_HIDE_TYPING));
break;
case VK_RETURN :
{
HWND hGrandParent = GetParent (GetParent (hWnd));
PropSheet_PressButton (hGrandParent, PSBTN_NEXT);
break;
}
}
break;
}
return CallWindowProc(wpOrigPhrase1Proc, hWnd, uMsg, wParam, lParam);
}
//----------------------------------------------------|
// Dialog procedure for "Finish" dialog
static LRESULT WINAPI
sKeyWizardDoneDlgProc (
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
PKEYGENINFO pkgi;
BOOL bReturnCode = FALSE;
switch (uMsg) {
case WM_INITDIALOG:
{
PROPSHEETPAGE *ppspMsgRec = (PROPSHEETPAGE *) lParam;
pkgi = (PKEYGENINFO) ppspMsgRec->lParam;
SetWindowLong (hDlg, GWL_USERDATA, (LPARAM)pkgi);
break;
}
case WM_PAINT :
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
if (pkgi->hPalette)
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint (hDlg, &ps);
SelectPalette (hDC, pkgi->hPalette, FALSE);
RealizePalette (hDC);
EndPaint (hDlg, &ps);
}
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR) lParam;
switch (pnmh->code) {
case PSN_SETACTIVE:
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
if (pkgi->bDoSend || pkgi->bDoCertRequest)
PostMessage (GetParent (hDlg),
PSM_SETWIZBUTTONS, 0, PSWIZB_FINISH);
else
PostMessage (GetParent (hDlg),
PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_FINISH);
SendDlgItemMessage (hDlg, IDC_WIZBITMAP, STM_SETIMAGE,
IMAGE_BITMAP, (LPARAM) pkgi->hBitmap);
if ((!pkgi->bDoSend) || (!pkgi->bSendComplete))
{
CHAR szText[256];
LoadString (g_hInst, IDS_KW_SENDLATER,
szText, sizeof(szText));
SetDlgItemText(hDlg, IDC_STATIC_KS_TEXT, szText);
}
else
{
EnableWindow (GetDlgItem (GetParent (hDlg), IDCANCEL),
FALSE);
}
SetWindowLong (hDlg, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
break;
case PSN_WIZFINISH:
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
pkgi->bFinishSelected = TRUE;
SetWindowLong(hDlg, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
break;
case PSN_HELP:
WinHelp (hDlg, g_szHelpFile, HELP_CONTEXT,
IDH_PGPPK_WIZ_DONE);
break;
case PSN_QUERYCANCEL:
break;
}
break;
}
}
return bReturnCode;
}
// ______________________________________________
//
// Dialog procedure for displaying cert request progress
static LRESULT WINAPI
sKeyWizardCertRequestDlgProc (
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
static PGPKeySetRef keysetSend = kInvalidPGPKeySetRef;
BOOL bReturnCode = FALSE;
PKEYGENINFO pkgi;
switch (uMsg) {
case WM_INITDIALOG:
{
PROPSHEETPAGE *ppspMsgRec = (PROPSHEETPAGE *) lParam;
pkgi = (PKEYGENINFO) ppspMsgRec->lParam;
SetWindowLong (hDlg, GWL_USERDATA, (LPARAM)pkgi);
break;
}
case WM_PAINT :
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
if (pkgi->hPalette)
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint (hDlg, &ps);
SelectPalette (hDC, pkgi->hPalette, FALSE);
RealizePalette (hDC);
EndPaint (hDlg, &ps);
}
sDrawSendStatus (GetDlgItem (hDlg, IDC_PROGRESS), pkgi);
break;
case WM_TIMER :
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
pkgi->iStatusValue += pkgi->iStatusDirection;
if (pkgi->iStatusValue <= 0)
{
pkgi->iStatusValue = 0;
pkgi->iStatusDirection = 1;
}
else if (pkgi->iStatusValue >= NUMLEDS-1)
{
pkgi->iStatusValue = NUMLEDS-1;
pkgi->iStatusDirection = -1;
}
sInvalidateLEDs (hDlg, IDC_PROGRESS);
break;
case WM_NOTIFY:
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
{
LPNMHDR pnmh = (LPNMHDR) lParam;
PGPError err;
switch (pnmh->code) {
case PSN_SETACTIVE:
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
if (!pkgi->bDoCertRequest)
{
SetWindowLong(hDlg, DWL_MSGRESULT, -1L); // skip
bReturnCode = TRUE;
}
else
{
pkgi->bSendInProgress = FALSE;
pkgi->iStatusValue = -1;
pkgi->iStatusDirection = 1;
PostMessage (GetParent(hDlg),
PSM_SETWIZBUTTONS, 0, 0);
SendDlgItemMessage (hDlg, IDC_WIZBITMAP, STM_SETIMAGE,
IMAGE_BITMAP, (LPARAM) pkgi->hBitmap);
PGPNewSingletonKeySet (pkgi->Key, &keysetSend);
err = PGPclSendCertificateRequestToServerNotify (
pkgi->Context, pkgi->tlsContext, hDlg,
KeySetMain, kInvalidPGPUserIDRef,
keysetSend, pkgi->pszPassPhrase);
PGPclErrorBox (hDlg, err);
if (IsPGPError (err))
SetWindowLong(hDlg, DWL_MSGRESULT, -1L);
else
SetWindowLong(hDlg, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
}
break;
case PSN_KILLACTIVE :
KillTimer (hDlg, PROGRESS_TIMER);
break;
case PGPCL_SERVERPROGRESS :
{
PPGPclSERVEREVENT pEvent = (PPGPclSERVEREVENT)lParam;
if (!(pkgi->bSendInProgress)) {
pkgi->bSendInProgress = TRUE;
pkgi->iStatusValue = 0;
if (pEvent->step == PGPCL_SERVERINFINITE)
{
pkgi->iStatusDirection = 1;
SetTimer (hDlg, PROGRESS_TIMER, LEDTIMERPERIOD, NULL);
}
else {
pkgi->iStatusDirection = 0;
pkgi->iStatusValue = 0;
}
}
else {
if (pEvent->step != PGPCL_SERVERINFINITE)
{
pkgi->iStatusDirection = 0;
pkgi->iStatusValue = (pEvent->step * 9) /
pEvent->total;
sInvalidateLEDs (hDlg, IDC_PROGRESS);
}
}
SetDlgItemText (hDlg, IDC_PROGRESSTEXT,
pEvent->szmessage);
pEvent->cancel = pkgi->bCancelPending;
return FALSE;
}
case PGPCL_SERVERDONE :
pkgi->bSendComplete = TRUE;
case PGPCL_SERVERABORT :
case PGPCL_SERVERERROR :
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
{
PPGPclSERVEREVENT pEvent = (PPGPclSERVEREVENT)lParam;
KillTimer (hDlg, PROGRESS_TIMER);
pkgi->iStatusValue = -1;
pkgi->iStatusDirection = 1;
InvalidateRect (hDlg, NULL, FALSE);
SetDlgItemText (hDlg, IDC_PROGRESSTEXT,
pEvent->szmessage);
PostMessage (GetParent(hDlg),
PSM_SETWIZBUTTONS, 0, PSWIZB_NEXT);
EnableWindow (GetDlgItem (GetParent (hDlg), IDCANCEL),
FALSE);
ShowWindow (GetDlgItem (hDlg, IDC_PROGRESS), SW_HIDE);
pEvent->cancel = pkgi->bCancelPending;
return FALSE;
}
case PSN_HELP:
WinHelp (hDlg, g_szHelpFile, HELP_CONTEXT,
IDH_PGPPK_WIZ_SEND);
break;
case PSN_QUERYCANCEL:
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
if (pkgi->bSendComplete)
{
SetWindowLong (hDlg, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
}
else
{
CHAR sz[128];
pkgi->bCancelPending = TRUE;
LoadString (g_hInst, IDS_KW_CANCELING, sz, sizeof(sz));
SetDlgItemText (hDlg, IDC_PROGRESSTEXT, sz);
SetWindowLong (hDlg, DWL_MSGRESULT, -1L);
bReturnCode = TRUE;
}
break;
}
break;
}
}
return bReturnCode;
}
// ______________________________________________
//
// Dialog procedure for displaying keyserver communication status
static LRESULT WINAPI
sKeyWizardSendToServerDlgProc (
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
static PGPKeySetRef keysetSend = kInvalidPGPKeySetRef;
BOOL bReturnCode = FALSE;
PKEYGENINFO pkgi;
switch (uMsg) {
case WM_INITDIALOG:
{
PROPSHEETPAGE *ppspMsgRec = (PROPSHEETPAGE *) lParam;
pkgi = (PKEYGENINFO) ppspMsgRec->lParam;
SetWindowLong (hDlg, GWL_USERDATA, (LPARAM)pkgi);
break;
}
case WM_PAINT :
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
if (pkgi->hPalette)
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint (hDlg, &ps);
SelectPalette (hDC, pkgi->hPalette, FALSE);
RealizePalette (hDC);
EndPaint (hDlg, &ps);
}
sDrawSendStatus (GetDlgItem (hDlg, IDC_PROGRESS), pkgi);
break;
case WM_TIMER :
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
pkgi->iStatusValue += pkgi->iStatusDirection;
if (pkgi->iStatusValue <= 0)
{
pkgi->iStatusValue = 0;
pkgi->iStatusDirection = 1;
}
else if (pkgi->iStatusValue >= NUMLEDS-1)
{
pkgi->iStatusValue = NUMLEDS-1;
pkgi->iStatusDirection = -1;
}
sInvalidateLEDs (hDlg, IDC_PROGRESS);
break;
case WM_NOTIFY:
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
{
LPNMHDR pnmh = (LPNMHDR) lParam;
switch (pnmh->code) {
case PSN_SETACTIVE:
pkgi = (PKEYGENINFO)GetWindowLong (hDlg, GWL_USERDATA);
if (!pkgi->bDoSend)
{
SetWindowLong(hDlg, DWL_MSGRESULT, -1L); // skip
bReturnCode = TRUE;
}
else
{
pkgi->bSendInProgress = FALSE;
pkgi->iStatusValue = -1;
pkgi->iStatusDirection = 1;
PostMessage (GetParent(hDlg),
PSM_SETWIZBUTTONS, 0, 0);
SendDlgItemMessage (hDlg, IDC_WIZBITMAP, STM_SETIMAGE,
IMAGE_BITMAP, (LPARAM) pkgi->hBitmap);
PGPNewSingletonKeySet (pkgi->Key, &keysetSend);
PGPclSendKeysToRootServerNotify (pkgi->Context,
pkgi->tlsContext, hDlg,
KeySetMain, keysetSend);
SetWindowLong(hDlg, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
}
break;
case PSN_KILLACTIVE :
KillTimer (hDlg, PROGRESS_TIMER);
break;
case PGPCL_SERVERPROGRESS :
{
PPGPclSERVEREVENT pEvent = (PPGPclSERVEREVENT)lParam;
if (!(pkgi->bSendInProgress))
{
pkgi->bSendInProgress = TRUE;
pkgi->iStatusValue = 0;
if (pEvent->step == PGPCL_SERVERINFINITE)
{
pkgi->iStatusDirection = 1;
SetTimer (hDlg, PROGRESS_TIMER, LEDTIMERPERIOD, NULL);
}
else
{
pkgi->iStatusDirection = 0;
pkgi->iStatusValue = 0;
}
}
else
{
if (pEvent->step != PGPCL_SERVERINFINITE)
{
pkgi->iStatusDirection = 0;
pkgi->iStatusValue = (pEvent->step * 9) /
pEvent->total;
sInvalidateLEDs (hDlg, IDC_PROGRESS);
}
}
SetDlgItemText (hDlg, IDC_PROGRESSTEXT,
pEvent->szmessage);
pEvent->cancel = pkgi->bCancelPending;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -