⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pkgenwiz.c

📁 vc环境下的pgp源码
💻 C
📖 第 1 页 / 共 5 页
字号:

	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 + -