public byte[] IV(TRGHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[header.m_skinCount & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; switch (SignedMod(kidx, 3)) { case 0: kidx += 341; break; case 1: kidx = (uint)SignedMod(kidx * 7, header.m_buildVersion); break; case 2: kidx -= 13; break; } buffer[i] ^= digest[SignedMod(kidx + header.m_buildVersion, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] Key(TRGHeader 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)]; switch (SignedMod(kidx, 3)) { case 0: kidx += 1273; break; case 1: kidx = (uint)SignedMod(kidx * 4, header.m_buildVersion); break; case 2: kidx -= 17; break; } } return(buffer); }
public byte[] Key(TRGHeader header, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = (uint) (length * header.m_buildVersion); for (uint i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += okidx % 61; } return buffer; }
public byte[] Key(TRGHeader 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[] Key(TRGHeader header, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[length + 256]; for (uint i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += (header.m_buildVersion * (uint)header.m_skinCount) % 7; } return(buffer); }
public byte[] IV(TRGHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx = Keytable[header.m_skinCount & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx -= 43; buffer[i] ^= digest[SignedMod(kidx + header.m_skinCount, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] Key(TRGHeader header, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[header.m_skinCount & 511]; for (uint i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += okidx % 61; } return(buffer); }
public byte[] Key(TRGHeader 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 = header.m_buildVersion - kidx; } return(buffer); }
public byte[] IV(TRGHeader 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_packageCount + digest[SignedMod(header.m_packageCount, SHA1_DIGESTSIZE)]; buffer[i] = digest[SignedMod(kidx, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] Key(TRGHeader 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_packageCount; } return(buffer); }
public byte[] IV(TRGHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = (uint)(length * header.m_buildVersion); for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += okidx % 13; buffer[i] ^= digest[SignedMod(kidx + header.GetNonEncryptedMagic(), SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] IV(TRGHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = (uint)(2 * digest[7]); for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += (uint)(header.m_buildVersion * header.m_skinCount) % 7; buffer[i] ^= digest[SignedMod(kidx - 73, SHA1_DIGESTSIZE)]; } return(buffer); }
public byte[] IV(TRGHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[(digest[3] * Keytable[111]) & 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[] IV(TRGHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = (uint)(digest[5] + header.m_skinCount) & 511; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += okidx % 29; buffer[i] ^= (byte)(digest[SignedMod(kidx + header.m_skinCount, SHA1_DIGESTSIZE)] + 1); } return(buffer); }
public byte[] IV(TRGHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; kidx = okidx = Keytable[((3 * digest[11]) - length) & 511]; for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; kidx += okidx % 29; buffer[i] ^= (byte)(digest[SignedMod(kidx + header.m_buildVersion, SHA1_DIGESTSIZE)] + 1); } return(buffer); }
public byte[] IV(TRGHeader header, byte[] digest, int length) { byte[] buffer = new byte[length]; uint kidx, okidx; return(buffer); // IV_INVALID for (int i = 0; i != length; ++i) { buffer[i] = Keytable[SignedMod(kidx, 512)]; // IV_INVALID // IV_INVALID } return(buffer); }
public ResourceGraph(ClientHandler client, Stream stream, string name) { using (BinaryReader reader = new BinaryReader(stream)) { m_header = reader.Read <TRGHeader>(); if (IsPre152(m_header)) { stream.Position = 0; m_header = reader.Read <TRGHeader6>().Upgrade(); } var version = m_header.GetVersion(); if (version != 5 && version != 6 && version != 7 && version != 8) { throw new InvalidDataException($"unable to parse TRG. invalid version {version}, expected 5, 6, 7 or 8"); } var isEnc = m_header.IsEncrypted(); if (!isEnc) { ParseBlocks(reader, name); } else { using (var decryptedReader = ManifestCryptoHandler.GetDecryptedReader(name, "TRG", m_header, m_header.m_buildVersion, client.Product, stream)) ParseBlocks(decryptedReader, name); } } if (m_packages == null) { throw new NullReferenceException(nameof(m_packages)); } if (m_skins == null) { throw new NullReferenceException(nameof(m_skins)); } if (m_graphBlock == null) { throw new NullReferenceException(nameof(m_graphBlock)); } }
public static bool IsPre152(TRGHeader header) { return(header.m_buildVersion < ProductHandler_Tank.VERSION_152_PTR || header.m_buildVersion == 72604); // 72604 = 1.51 on proc2 }