protected LibIndexReader(ArcView file, IMalieDecryptor decryptor, byte[] header) { m_view = file.View; m_max_offset = file.MaxOffset; m_dec = decryptor; m_header = header; }
private static int ReadEncrypted(ArcView.Frame view, IMalieDecryptor dec, long offset, byte[] buffer, int index, int length) { int offset_pad = (int)offset & 0xF; int aligned_len = (offset_pad + length + 0xF) & ~0xF; byte[] aligned_buf; int block = 0; if (aligned_len == length) { aligned_buf = buffer; block = index; } else { aligned_buf = new byte[aligned_len]; } int read = view.Read(offset - offset_pad, aligned_buf, block, (uint)aligned_len); if (read < offset_pad) { return(0); } for (int block_count = aligned_len / 0x10; block_count > 0; --block_count) { dec.DecryptBlock(offset, aligned_buf, block); block += 0x10; offset += 0x10; } if (aligned_buf != buffer) { Buffer.BlockCopy(aligned_buf, offset_pad, buffer, index, length); } return(Math.Min(length, read - offset_pad)); }
public LibPReader(ArcView file, IMalieDecryptor decryptor, byte[] header, LibScheme scheme) : base(file, decryptor, header) { m_base_offset = 0; m_scheme = scheme; }
public MalieArchive(ArcView file, ArchiveFormat format, ICollection <Entry> dir, IMalieDecryptor decr) : base(file, format, dir) { Decryptor = decr; }
public static LibUReader Create(ArcView file, IMalieDecryptor decryptor) { var input = new EncryptedStream(file, decryptor); return(new LibUReader(input)); }
public EncryptedStream(ArcView mmap, IMalieDecryptor decryptor) { m_view = mmap.CreateFrame(); m_dec = decryptor; m_max_offset = mmap.MaxOffset; }