Exemplo n.º 1
0
void CEUSignTestVCDlg::OnBnClickedButtonEncrypt()
{
	UpdateData(TRUE);

	if(!m_bInitialized)
	{
		::MessageBoxA(this->m_hWnd,
			"Криптографічну бібліотеку не ініціалізовано",
			"Повідомлення оператору",
			MB_ICONERROR);

		return;
	}

	if(!m_pInterface->IsPrivateKeyReaded())
	{
		::MessageBoxA(this->m_hWnd,
			"Ключ не зчитано",
			"Повідомлення оператору",
			MB_ICONERROR);

		return;
	}

	PWCHAR pszSex[] = {L"Male", L"Female"};
	DWORD dwError;
	PSTR psEnvelopedData = NULL;
	CString All;

	All = CString(pszSex[m_ComboSex]) +
			m_FirstNameEdit + m_LastNameEdit +
			m_MiddleNameEdit + m_PassSeriesEdit +
			m_PassNumberEdit + m_DRFOEdit +
			m_RoleEdit;

	BOOL bUseSign = m_UseRawSignCheckBox.GetCheck() == BST_CHECKED;
	
	PEU_CERTIFICATES pReceiversCerts;
	dwError = m_pInterface->GetReceiversCertificates(&pReceiversCerts);

	if(dwError != EU_ERROR_NONE)
		return;
	
	dwError = m_pInterface->EnvelopData(pReceiversCerts->ppCertificates[0]->pszIssuer,
		pReceiversCerts->ppCertificates[0]->pszSerial, bUseSign,
		(PBYTE) All.SetSysString(&m_bstrAll), All.GetLength() * 2,
		&psEnvelopedData, NULL, NULL);
	
	m_pInterface->FreeReceiversCertificates(pReceiversCerts);

	if(dwError != EU_ERROR_NONE)
		return;
	
	m_SignEdit = psEnvelopedData;

	m_pInterface->FreeMemory((PBYTE) psEnvelopedData);

	UpdateData(FALSE);
}
Exemplo n.º 2
0
void CEUSignTestVCDlg::OnBnClickedButtonVerify()
{
	UpdateData(TRUE);

	if(!m_bInitialized)
	{
		::MessageBoxA(this->m_hWnd,
			"Криптографічну бібліотеку не ініціалізовано",
			"Повідомлення оператору",
			MB_ICONERROR);

		return;
	}

	PWCHAR pszSex[] = {L"Male", L"Female"};
	DWORD dwError;
	PBYTE pbData;
	DWORD dwDataLength;
	PSTR pszHash;
	EU_SIGN_INFO SignInfo;
	CString All;

	if(m_UseRawSignCheckBox.GetCheck() == BST_CHECKED)
	{
		All = CString(pszSex[m_ComboSex]) +
			m_FirstNameEdit + m_LastNameEdit +
			m_MiddleNameEdit + m_PassSeriesEdit +
			m_PassNumberEdit + m_DRFOEdit +
			m_RoleEdit;

		dwError = m_pInterface->RawVerifyData(
			(PBYTE) All.SetSysString(&m_bstrAll),
			All.GetLength() * 2, (PSTR) m_SignEdit.GetString(),
			NULL, NULL, &SignInfo);
		if(dwError != EU_ERROR_NONE)
			return;
	}
	else if(m_UseInternalSignCheckBox.GetCheck() == BST_CHECKED)
	{
		dwError = m_pInterface->VerifyDataInternal(
			(PSTR) m_SignEdit.GetString(), NULL, 0,
			&pbData, &dwDataLength, &SignInfo);
		if(dwError != EU_ERROR_NONE)
			return;

		m_pInterface->FreeMemory(pbData);
	}
	else if(m_SignHashCheckBox.IsWindowEnabled() &&
		m_SignHashCheckBox.GetCheck() == BST_CHECKED)
	{
		if(((dwError = m_pInterface->HashDataContinue(
				(PBYTE) pszSex[m_ComboSex],
				(DWORD) wcslen(pszSex[m_ComboSex]) * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->HashDataContinue(
				(PBYTE) m_FirstNameEdit.SetSysString(&m_bstrFirstName),
				m_FirstNameEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->HashDataContinue(
				(PBYTE) m_LastNameEdit.SetSysString(&m_bstrLastName),
				m_LastNameEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->HashDataContinue(
				(PBYTE) m_MiddleNameEdit.SetSysString(&m_bstrMiddleName),
				m_MiddleNameEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->HashDataContinue(
				(PBYTE) m_PassSeriesEdit.SetSysString(&m_bstrPassSeries),
				m_PassSeriesEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->HashDataContinue(
				(PBYTE) m_PassNumberEdit.SetSysString(&m_bstrPassNumber),
				m_PassNumberEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->HashDataContinue(
				(PBYTE) m_DRFOEdit.SetSysString(&m_bstrDRFO),
				m_DRFOEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->HashDataContinue(
				(PBYTE) m_RoleEdit.SetSysString(&m_bstrRole),
				m_RoleEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->HashDataEnd(
				&pszHash, NULL, NULL))
			!= EU_ERROR_NONE))
		{
			m_pInterface->ResetOperation();

			return;
		}

		dwError = m_pInterface->VerifyHash(pszHash, NULL, 0,
			(PSTR) m_SignEdit.GetString(), NULL, NULL, &SignInfo);
		if(dwError != EU_ERROR_NONE)
		{
			m_pInterface->FreeMemory((PBYTE) pszHash);

			return;
		}

		m_pInterface->FreeMemory((PBYTE) pszHash);
	}
	else
	{
		dwError = m_pInterface->VerifyDataBegin(
			(PSTR) m_SignEdit.GetString(), NULL, NULL);
		if(dwError != EU_ERROR_NONE)
		{
			m_pInterface->ResetOperation();

			return;
		}

		if(((dwError = m_pInterface->VerifyDataContinue(
				(PBYTE) pszSex[m_ComboSex],
				(DWORD) wcslen(pszSex[m_ComboSex]) * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->VerifyDataContinue(
				(PBYTE) m_FirstNameEdit.SetSysString(&m_bstrFirstName),
				m_FirstNameEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->VerifyDataContinue(
				(PBYTE) m_LastNameEdit.SetSysString(&m_bstrLastName),
				m_LastNameEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->VerifyDataContinue(
				(PBYTE) m_MiddleNameEdit.SetSysString(&m_bstrMiddleName),
				m_MiddleNameEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->VerifyDataContinue(
				(PBYTE) m_PassSeriesEdit.SetSysString(&m_bstrPassSeries),
				m_PassSeriesEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->VerifyDataContinue(
				(PBYTE) m_PassNumberEdit.SetSysString(&m_bstrPassNumber),
				m_PassNumberEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->VerifyDataContinue(
				(PBYTE) m_DRFOEdit.SetSysString(&m_bstrDRFO),
				m_DRFOEdit.GetLength() * 2))
			!= EU_ERROR_NONE) ||
			((dwError = m_pInterface->VerifyDataContinue(
				(PBYTE) m_RoleEdit.SetSysString(&m_bstrRole),
				m_RoleEdit.GetLength() * 2))
			!= EU_ERROR_NONE))
		{
			m_pInterface->ResetOperation();

			return;
		}

		dwError = m_pInterface->VerifyDataEnd(&SignInfo);
		if(dwError != EU_ERROR_NONE)
		{
			m_pInterface->ResetOperation();

			return;
		}
	}

	m_pInterface->ShowSignInfo(&SignInfo);

	m_pInterface->FreeSignInfo(&SignInfo);
}