Beispiel #1
0
        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 const int ENCRYPTED_MAGIC = 0x636D66; // todo: use the thingy again?

        public ContentManifestFile(ClientHandler client, Stream stream, string name)
        {
            using (BinaryReader reader = new BinaryReader(stream)) {
                Header = reader.Read <CMFHeader>();

                if (Header.BuildVersion >= 12923648 || Header.BuildVersion < 52320)
                {
                    throw new NotSupportedException("Overwatch 1.29 or earlier is not supported");
                }

                if (Header.IsEncrypted())
                {
                    using (BinaryReader decryptedReader = DecryptCMF(client, stream, name)) {
                        ParseEntries(decryptedReader);
                    }
                }
                else
                {
                    ParseEntries(reader);
                }
            }
        }