示例#1
0
DWORD WINAPI _SEraseThdFunc(LPVOID _lParam)
{
	//input CDialog pointer
	CTabToolsDlg *_TabToolsDlg;
	_TabToolsDlg = (CTabToolsDlg *)_lParam;
	_TabToolsDlg->_EnableCtrls(0);

	for(UINT32 _i = 0; _i < _TabToolsDlg->_inFilePathAllCount; _i++)
	{
		_TabToolsDlg->_curErasingItem = _i;
		if(File_Secure_Erase(_TabToolsDlg->_inFilePath_All[_i], _TabToolsDlg->_iEraseTimes, &_UpdateOpProcessSe, _lParam)){
			_TabToolsDlg->_SetItemStatusInList(_i, _T("Erased"));
		}else{
			_TabToolsDlg->_SetItemStatusInList(_i, _T("Failed"));
		}
	}

	_TabToolsDlg->_EnableCtrls(1);
	return 0;
}
示例#2
0
DWORD WINAPI _CryptoThdFunc(LPVOID _lParam)
{
	TCHAR *_outFilePath = new TCHAR[512];

	//input CDialog pointer
	CTabAES256Dlg *_TabAES256Dlg;
	_TabAES256Dlg = (CTabAES256Dlg *)_lParam;

	//UI
	_TabAES256Dlg->_EnableCtrls(0);

	for(UINT32 _i = 0; _i < _TabAES256Dlg->_inFilePathAllCount; _i++)
	{
		//Set Index Flag
		_TabAES256Dlg->_curEncItem = _i;
		_tcscpy_s(_outFilePath, 512, _TabAES256Dlg->_inFilePath_All[_i]);
		
		//
		if(_TabAES256Dlg->_bCamellia)
		{
			// ********* Encrypt/Decrypt(Camellia) *********
			//Set Flag
			_TabAES256Dlg->_bErasing = 0;
			if(_TabAES256Dlg->_bDecrypt)
			{
				//Decrypt Mode
				if(_tcslen(_outFilePath) >= 8){
					if(!_tcscmp(&_outFilePath[_tcslen(_outFilePath) - 7], _T(".cam256")))
					{	//cut extension ".cam256"
						_outFilePath[_tcslen(_outFilePath) - 7] = 0;
					}else{
						_tcscat_s(_outFilePath, 512, _T(".decrypted"));
					}
				}
				if(_File_Camellia_Decrypt_CBC(_TabAES256Dlg->_inFilePath_All[_i], _outFilePath, _TabAES256Dlg->_CryptoCipherKey, &_UpdateOpProcess, _lParam)){
					_TabAES256Dlg->_SetItemStatusInList(_i, _T("Decrypted"));
				}else{
					_TabAES256Dlg->_SetItemStatusInList(_i, _T("Decryption Failed"));
					//No need to erase
					_TabAES256Dlg->_bErase = 0;
				}

			}else{
				//Encrypt Mode
				_tcscat_s(_outFilePath, 512, _T(".cam256"));
				if(_File_Camellia_Encrypt_CBC(_TabAES256Dlg->_inFilePath_All[_i], _outFilePath, _TabAES256Dlg->_CryptoCipherKey, &_UpdateOpProcess, _lParam)){
					_TabAES256Dlg->_SetItemStatusInList(_i, _T("Encrypted"));
				}else{
					_TabAES256Dlg->_SetItemStatusInList(_i, _T("Encryption Failed"));
					//No need to erase
					_TabAES256Dlg->_bErase = 0;
				}
			}//if
		}else{
			// ********* Encrypt/Decrypt(AES) *********
			//Set Flag
			_TabAES256Dlg->_bErasing = 0;
			if(_TabAES256Dlg->_bDecrypt)
			{
				//Decrypt Mode
				if(_tcslen(_outFilePath) >= 8){
					if(!_tcscmp(&_outFilePath[_tcslen(_outFilePath) - 7], _T(".aes256")))
					{	//cut extension ".aes256"
						_outFilePath[_tcslen(_outFilePath) - 7] = 0;
					}else{
						_tcscat_s(_outFilePath, 512, _T(".decrypted"));
					}
				}
				if(_File_AES_Decrypt_CBC(_TabAES256Dlg->_inFilePath_All[_i], _outFilePath, _TabAES256Dlg->_CryptoCipherKey, &_UpdateOpProcess, _lParam)){
					_TabAES256Dlg->_SetItemStatusInList(_i, _T("Decrypted"));
				}else{
					_TabAES256Dlg->_SetItemStatusInList(_i, _T("Decryption Failed"));
					//No need to erase
					_TabAES256Dlg->_bErase = 0;
				}

			}else{
				//Encrypt Mode
				_tcscat_s(_outFilePath, 512, _T(".aes256"));
				if(_File_AES_Encrypt_CBC(_TabAES256Dlg->_inFilePath_All[_i], _outFilePath, _TabAES256Dlg->_CryptoCipherKey, &_UpdateOpProcess, _lParam)){
					_TabAES256Dlg->_SetItemStatusInList(_i, _T("Encrypted"));
				}else{
					_TabAES256Dlg->_SetItemStatusInList(_i, _T("Encryption Failed"));
					//No need to erase
					_TabAES256Dlg->_bErase = 0;
				}
			}//if
		}//if(Camellia)

		//Erase Original File
		if(_TabAES256Dlg->_bErase)
		{
			//Set Flag
			_TabAES256Dlg->_bErasing = 1;
			if(File_Secure_Erase(_TabAES256Dlg->_inFilePath_All[_i], 1, &_UpdateOpProcess, _lParam)){
				_TabAES256Dlg->_SetItemStatusInList(_i, _T("Done and erased"));
			}else{
				_TabAES256Dlg->_SetItemStatusInList(_i, _T("Erasing failed"));
			}
		}
	}//for

	_TabAES256Dlg->_EnableCtrls(1);

	free(_outFilePath);

	return 0;
}