public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[SignedMod(length * Keytable[0], 512)]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; switch (SignedMod(kidx, 3)) { case 0: kidx += 103; break; case 1: kidx = (uint)SignedMod(4 * kidx, header.BuildVersion); break; case 2: --kidx; break; } } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[header.m_dataCount & 511]; for (uint i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; switch (SignedMod(kidx, 3)) { case 0: kidx += 103; break; case 1: kidx = (uint)SignedMod(kidx * 4, header.m_buildVersion); break; case 2: --kidx; break; } } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = (uint)(digest[7] + header.m_dataCount) & 511; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; switch (SignedMod(kidx, 3)) { case 0: kidx += 103; break; case 1: kidx = (uint)SignedMod(kidx * 4, header.m_buildVersion); break; case 2: --kidx; break; } buffer[i] ^= digest[SignedMod(kidx + header.m_buildVersion, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[header.BuildVersion & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[kidx % 512]; switch (kidx % 3) { case 0: kidx += 103; break; case 1: kidx = 4 * kidx % header.BuildVersion; break; case 2: --kidx; break; } } return(buffer); }
public const int ENCRYPTED_MAGIC = 0x636D66; // todo: use the thingy again? public ContentManifestFile(ClientHandler client, Stream stream, string name) { using (BinaryReader reader = new BinaryReader(stream)) { m_header = reader.Read <CMFHeader>(); if (m_header.m_buildVersion < ProductHandler_Tank.VERSION_148_PTR) // before 1.48 { stream.Position = 0; m_header = reader.Read <CMFHeader25>().Upgrade(); } if (m_header.m_buildVersion >= 12923648 || m_header.m_buildVersion < 52320) { throw new NotSupportedException("Overwatch 1.29 or earlier is not supported"); } if (m_header.IsEncrypted()) { using (var decryptedReader = ManifestCryptoHandler.GetDecryptedReader(name, "CMF", m_header, m_header.m_buildVersion, client.Product, stream)) ParseEntries(decryptedReader); } else { ParseEntries(reader); } } }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx = (uint)(length * header.BuildVersion); for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; switch (SignedMod(kidx, 3)) { case 0: kidx += 103; break; case 1: kidx = (4 * kidx) % header.BuildVersion; break; case 2: --kidx; break; } buffer[i] ^= digest[SignedMod(kidx + header.BuildVersion, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[(digest[7] * Keytable[0]) & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[kidx % 512]; switch (kidx % 3) { case 0: kidx += 103; break; case 1: kidx = 4 * kidx % header.BuildVersion; break; case 2: --kidx; break; } buffer[i] ^= digest[(kidx + header.BuildVersion) % SHA1_DIGESTSIZE]; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; for (int i = 0; i != length; ++i) { buffer[i] = 0; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = (uint)length * header.m_buildVersion; for (uint i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx -= header.m_buildVersion & 511; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[header.m_dataCount & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx -= 43; buffer[i] ^= digest[SignedMod(kidx + header.m_dataCount, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[(uint)header.DataCount & 511]; for (uint i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += (uint)(header.BuildVersion * header.DataCount) % 7; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[(length * Keytable[0]) & 511]; for (uint i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += 3; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[header.m_buildVersion & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += ((uint)header.m_dataCount + digest[SignedMod(header.m_dataCount, SHA1_DIGESTSIZE)]) % 17; buffer[i] = digest[SignedMod(kidx, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[(uint)header.m_dataCount & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx -= header.m_buildVersion & 511; buffer[i] ^= digest[SignedMod(kidx + header.m_buildVersion, SHA1_DIGESTSIZE)]; } return buffer; }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[header.m_buildVersion & 511]; for (uint i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += (uint)header.m_dataCount; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[SignedMod(length * Keytable[0], 512)]; for (uint i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += (uint)header.EntryCount; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = (uint)(header.BuildVersion * length); for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx = header.BuildVersion - kidx; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[header.DataCount & 511]; for (int i = 0; i != length; ++i) { kidx += (uint)header.EntryCount + digest[header.EntryCount % SHA1_DIGESTSIZE]; buffer[i] = digest[kidx % SHA1_DIGESTSIZE]; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[(digest[7] * Keytable[0]) & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += (uint)(header.m_buildVersion * header.m_dataCount) % 7; buffer[i] ^= digest[SignedMod(kidx - 73, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[SignedMod((2 * digest[13]) - length, 512)]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += (uint)header.EntryCount + digest[SignedMod(header.EntryCount, SHA1_DIGESTSIZE)]; buffer[i] = digest[SignedMod(kidx, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[((2 * digest[13]) - length) & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx = header.m_buildVersion - kidx; buffer[i] ^= digest[SignedMod(kidx + i, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = Constrain(length * header.m_buildVersion); for (int i = 0; i != length; ++i) { buffer[i] = Keytable[kidx % 512]; kidx += (uint)header.m_entryCount; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[header.BuildVersion & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[kidx % 512]; kidx += (uint)header.EntryCount; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[(digest[7] * Keytable[0]) & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += ((digest[6] & 1) != 0) ? 37 : (okidx % 61); buffer[i] ^= digest[SignedMod(kidx - i, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[header.m_dataCount & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[kidx % 512]; kidx += 3; buffer[i] ^= digest[(kidx - i) % SHA1_DIGESTSIZE]; } return(buffer); }
public byte[] IV(CMFHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx = (uint)((digest[7] + header.DataCount) & 511); for (int i = 0; i != length; ++i) { kidx += (uint)header.EntryCount + digest[header.EntryCount % SHA1_DIGESTSIZE]; buffer[i] = digest[SignedMod(kidx, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[header.DataCount & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx -= 57; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = header.m_buildVersion * (uint)length; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += (uint)header.m_entryCount; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[length * Keytable[0] % 512]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[kidx % 512]; kidx += (uint)header.m_entryCount; } return(buffer); }
public byte[] Key(CMFHeader header, int length) { byte[] buffer = new byte[length]; uint kidx = header.m_buildVersion * (uint)length; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[kidx % 512]; kidx += 3; } return(buffer); }