using System.Collections.Concurrent; using System.IO; namespace BurnOutSharp.Interfaces { /// /// Mark a file type as extractable /// internal interface IScannable { /// /// Determine if a file signature matches one of the expected values /// /// Byte array representing the file header /// True if the signature is valid, false otherwise bool ShouldScan(byte[] magic); /// /// Scan a file for all internal protections /// /// Scanner object for state tracking /// Path to the input file /// Dictionary mapping paths to protection lists /// Ideally, this should just point to the other scan implementation ConcurrentDictionary> Scan(Scanner scanner, string file); /// /// Scan a stream for all internal protections /// /// Scanner object for state tracking /// Stream representing the input file /// Path to the input file /// Dictionary mapping paths to protection lists ConcurrentDictionary> Scan(Scanner scanner, Stream stream, string filename); } }