public override ArcFile TryOpen(ArcView file) { if (!file.Name.HasExtension(".ads")) { return(null); } var arc_name = Path.GetFileNameWithoutExtension(file.Name); foreach (var key in KnownKeys.Values) { using (var arc = new EncryptedViewStream(file, key)) { uint signature = FormatCatalog.ReadSignature(arc); if (2 == signature || 4 == signature || 5 == signature) { var dir = ReadIndex(arc, key, arc_name); if (dir != null) { return(new AdsArchive(file, this, dir, key)); } } } } return(null); }
public override Stream OpenEntry(ArcFile arc, Entry entry) { var ads_arc = arc as AdsArchive; if (null == ads_arc) { return(base.OpenEntry(arc, entry)); } var input = new EncryptedViewStream(ads_arc.File, ads_arc.Key); return(new StreamRegion(input, entry.Offset, entry.Size)); }
public override ArcFile TryOpen(ArcView file) { if (!file.Name.EndsWith(".ads", StringComparison.InvariantCultureIgnoreCase)) { return(null); } foreach (var key in KnownKeys.Values) { using (var arc = new EncryptedViewStream(file, key)) { uint signature = FormatCatalog.ReadSignature(arc); if (2 == signature || 4 == signature || 5 == signature) { var dir = ReadIndex(arc, key); if (dir != null) { return(new AdsArchive(file, this, dir, key)); } } } } return(null); }