int _tmain(int argc, _TCHAR* argv[]) { bool bState; bState = CheckSign(3); StatePtrinte(bState); bState = CheckSign(-3); StatePtrinte(bState); return 0; }
void OpOR::Execute() { auto reg = Environment::get().GetReg(); auto cu = Environment::get().GetCU(); const uint16_t ddata = cu->GetOperandData(0); const uint16_t sdata = cu->GetOperandData(1); const uint16_t result = ddata | sdata; reg->SetFlag(Flag::Overflow, 0); reg->SetFlag(Flag::Carry, 0); reg->CheckZero(result); reg->CheckSign(result); reg->CheckParity(result); cu->SetOperandData(0, result); }
void OpADC::Execute() { auto reg = Environment::get().GetReg(); auto cu = Environment::get().GetCU(); const uint16_t ddata = cu->GetOperandData(0); const uint16_t sdata = cu->GetOperandData(1); const uint16_t result = ddata + sdata + reg->GetFlag(Flag::Carry); reg->SetFlag(Flag::Overflow, static_cast<uint32_t> (ddata + sdata) != result); reg->CheckCarry(ddata); reg->CheckZero(result); reg->CheckSign(result); reg->CheckAuxiliaryCarry(ddata, result); reg->CheckParity(result); cu->SetOperandData(0, result); }
bool CPFCManager::Open(const CStdString& strFile, sRPFHeader& RPFHeader) { CLog::Log(LOGDEBUG, "CPFCManager::%s: Opening: %s", __FUNCTION__, strFile.c_str()); if (!m_actualFile.Open(strFile)) { CLog::Log(LOGERROR, "PFCManager: Can't open file: %s", strFile.c_str()); return false; } if (m_actualFile.Read(&RPFHeader, sizeof(sRPFHeader)) != sizeof(sRPFHeader)) { CLog::Log(LOGERROR, "PFCManager: Reading Header: %s", strFile.c_str()); return false; } if (!CheckSign(RPFHeader)) { CLog::Log(LOGERROR, "PFCManager: Not a PFC: %s", strFile.c_str()); return false; } CLog::Log(LOGDEBUG, "CPFCManager::%s: Openned: %s", __FUNCTION__, strFile.c_str()); return true; }
void EncodingEDSRSA(char *M_fname, char *nA_fname, char *eA_fname, char *dA_fname, char *nB_fname, char *eB_fname, char *dB_fname) { std::ifstream in(M_fname); int *M_hash = (int*)md5(&in), i; BigInt M(intToChar(M_hash[3])), NA(nA_fname, false), EA(eA_fname, false), DA(dA_fname, false); M *= BigInt("10000000000"); M += BigInt(intToChar(M_hash[2])); M *= BigInt("10000000000"); M += BigInt(intToChar(M_hash[1])); M *= BigInt("10000000000"); M += BigInt(intToChar(M_hash[0])); BigInt NB(nB_fname, false), EB(eB_fname, false), DB(dB_fname, false); BigInt Signature("1"), Code("1"), Encode("1"), CheckSign("1"); BigInt DegreeNet[RNet]; DegreeNet[0] = M; DegreeNet[0] %= NA; for(i = 1; i < RNet; i++) { DegreeNet[i] = DegreeNet[i-1] * DegreeNet[i-1]; DegreeNet[i] %= NA; } BigInt degreeNum[RNet]; degreeNum[0] = BigInt("1"); for(int i = 1; i < RNet; i++) degreeNum[i] = degreeNum[i-1] * BigInt("2"); BigInt I("0"); for(int j = RNet-1; j >= 0;) { if(DA >= I + degreeNum[j]) { Signature *= DegreeNet[j]; Signature %= NA; I += degreeNum[j]; } else j--; } ////////////////////////////// DegreeNet[0] = Signature; DegreeNet[0] %= NB; for(i = 1; i < RNet; i++) { DegreeNet[i] = DegreeNet[i-1] * DegreeNet[i-1]; DegreeNet[i] %= NB; } I = BigInt("0"); for(int j = RNet-1; j >= 0;) { if(EB >= I + degreeNum[j]) { Code *= DegreeNet[j]; Code %= NB; I += degreeNum[j]; } else j--; } ////////////////////////////// DegreeNet[0] = Code; DegreeNet[0] %= NB; for(i = 1; i < RNet; i++) { DegreeNet[i] = DegreeNet[i-1] * DegreeNet[i-1]; DegreeNet[i] %= NB; } I = BigInt("0"); for(int j = RNet-1; j >= 0;) { if(DB >= I + degreeNum[j]) { Encode *= DegreeNet[j]; Encode %= NB; I += degreeNum[j]; } else j--; } ////////////////////////////// DegreeNet[0] = Encode; DegreeNet[0] %= NA; for(i = 1; i < RNet; i++) { DegreeNet[i] = DegreeNet[i-1] * DegreeNet[i-1]; DegreeNet[i] %= NA; } I = BigInt("0"); for(int j = RNet - 1; j >= 0;) { if(EA >= I + degreeNum[j]) { CheckSign *= DegreeNet[j]; CheckSign %= NA; I += degreeNum[j]; } else j--; } ////////////////////////////// M.TextWrite("hash.txt"); Code.TextWrite("code.txt"); Encode.TextWrite("encode.txt"); CheckSign.TextWrite("checksign.txt"); if( M % NA == CheckSign) std::cout<<"OK\n"; else std::cout<<"NOT OK\n"; }