Table of Contents

Namespace Archiver.Core.Interfaces

Interfaces

IAntivirusScanService

T-F146. Scans an archive's expanded contents for threats via AMSI — deliberately not an extension of IArchiveService/ITarService (see docs/DECISIONS.md's T-F146 entry): this never writes anything to a real destination, has no conflict/MOTW dimension, and adding a method to those interfaces would ripple through every hand-rolled test fake in the repo for a capability that isn't a variant of extraction. Never throws — every failure becomes an Inconclusive ThreatFinding.

IArchiveCreationRouter

Routes archive creation to IArchiveService (ZIP) or ITarService (tar-family) based on ArchiveOptions.Format. Unlike IExtractionRouter, this needs no per-path format detection — creation format is a single explicit choice for the whole operation.

IArchiveListingRouter

Routes a single archive's ListEntriesAsync call to IArchiveService (ZIP) or ITarService (tar-family), based on ArchiveFormatDetector — same dispatch IExtractionRouter uses for extraction. A separate interface from IExtractionRouter because listing and extracting return different result shapes; one archive path in, one ArchiveListResult out (not a batch, unlike ExtractAsync — the archive browser always lists exactly one archive at a time). T-F250: Group Policy applies exactly as for extraction (ArchiveFormatPolicy) — a blocked format, or a tar-family format under DisableTarExtraction, is a failed result and no engine is called.

IArchiveService

ZIP archive/extract/test/list operations via System.IO.Compression. See ZipArchiveService for the real implementation.

IExtractionRouter

Routes ExtractAsync calls to IArchiveService (ZIP) or ITarService (tar-family) per archive, based on ArchiveFormatDetector, and merges the results. Never throws — all errors are captured in ArchiveResult.Errors.

IRecoveryService

PAR2 recovery data next to an archive: what is there, and repair from it (T-F275 step 4). The checks themselves are TestAsync(IReadOnlyList<string>, IProgress<ProgressReport>?, Func<PasswordPromptInfo, Task<PasswordDecision>>?, bool, CancellationToken).

IRegistryReader

Minimal seam over the Windows registry for GroupPolicyService (T-F51) — kept deliberately small so tests use a hand-rolled fake instead of a mocking library (none is used in this repo). Both members return null for an absent key/value or a value of the wrong registry type; implementations never throw.

ITarService

tar.exe-backed archive/extract/list/compress operations for the tar family (tar, gz, bz2, xz, zst, lzma) plus read-only 7z/rar support. See TarSandboxedService for the real implementation and its AppContainer sandboxing on the extraction path.