public bool VerifyCRC(CryptoSystem fq) { if (Header.HasFlag(PacketHeaderFlags.EncryptedChecksum)) { var key = ((Header.Checksum - headerChecksum) ^ payloadChecksum); if (fq.Search(key)) { fq.ConsumeKey(key); return(true); } } else { if (headerChecksum + payloadChecksum == Header.Checksum) { packetLog.DebugFormat("{0}", this); return(true); } packetLog.DebugFormat("{0}, Checksum Failed", this); } NetworkStatistics.C2S_CRCErrors_Aggregate_Increment(); return(false); }
private bool VerifyEncryptedCRC(CryptoSystem fq, out string keyOffsetForLogging) { var verifiedKey = new Tuple <int, uint>(0, 0); uint receivedKey = (Header.Checksum - headerChecksum) ^ payloadChecksum; Func <Tuple <int, uint>, bool> cbSearch = new Func <Tuple <int, uint>, bool>((pair) => { if (receivedKey == pair.Item2) { verifiedKey = pair; return(true); } return(false); }); if (fq.Search(cbSearch)) { keyOffsetForLogging = verifiedKey.Item1.ToString(); return(true); } keyOffsetForLogging = "???"; return(false); }
private bool VerifyEncryptedCRC(CryptoSystem fq, out string keyOffsetForLogging, bool rangeAdvance) { var verifiedKey = new Tuple <int, uint>(0, 0); Func <Tuple <int, uint>, bool> cbSearch = new Func <Tuple <int, uint>, bool>((pair) => { if (VerifyChecksum(pair.Item2)) { verifiedKey = pair; return(true); } else { return(false); } }); if (fq.Search(cbSearch, rangeAdvance)) { keyOffsetForLogging = verifiedKey.Item1.ToString(); return(true); } keyOffsetForLogging = "???"; return(false); }