aff4 0.2.2

Pure-Rust read-only AFF4 (Advanced Forensic Format 4) disk image reader
Documentation
[package]
name         = "aff4"
version      = "0.2.2"
edition.workspace = true
repository.workspace = true
homepage.workspace = true
rust-version.workspace = true
description  = "Pure-Rust read-only AFF4 (Advanced Forensic Format 4) disk image reader"
license.workspace = true
exclude     = ["tests/data/", "corpus/", "fuzz/", ".github/", "deny.toml", "renovate.json", ".pre-commit-config.yaml"]
authors.workspace = true
keywords     = ["forensics", "aff4", "disk-image", "container"]
categories   = ["parser-implementations", "filesystem"]

[features]
# Exposes the `testutil` fixture builder to downstream test suites. It writes
# synthetic AFF4 containers with the third-party `zip` writer (zip-forensic-core
# is read-only), so it — and only it — pulls `zip`.
test-helpers = ["dep:zip"]

[dependencies]
thiserror = { workspace = true }
# The reader reads through zip-forensic-core (our pure-Rust forensic ZIP reader).
zip-forensic-core = { workspace = true }
# Third-party `zip` is a WRITER, needed only to build test fixtures — optional so
# a normal `aff4` consumer never pulls it (dev-dependency covers our own tests).
zip       = { workspace = true, optional = true }
flate2    = { workspace = true }
snap      = { workspace = true }
lz4_flex  = { workspace = true }
# Encrypted AFF4 decrypt (RustCrypto): PBKDF2 → RFC 3394 unwrap → AES-XTS.
pbkdf2   = { workspace = true }
sha2     = { workspace = true }
aes      = { workspace = true }
aes-kw   = { workspace = true }
xts-mode = { workspace = true }

[dev-dependencies]
tempfile  = { workspace = true }
proptest  = { workspace = true }
lz4_flex  = { workspace = true }
md-5.workspace = true
# For this crate's own tests (fixture writing); consumers get it only via test-helpers.
zip       = { workspace = true }

[lints.rust]
unsafe_code = "deny"

[lints.clippy]
all       = { level = "warn", priority = -1 }
pedantic  = { level = "warn", priority = -1 }
unwrap_used = "deny"
# Pragmatic allows (priority 1): silence pedantic noise that is not a real defect.
module_name_repetitions  = { level = "allow", priority = 1 }
doc_markdown             = { level = "allow", priority = 1 }
must_use_candidate       = { level = "allow", priority = 1 }
missing_errors_doc       = { level = "allow", priority = 1 }
missing_panics_doc       = { level = "allow", priority = 1 }
missing_fields_in_debug  = { level = "allow", priority = 1 }
items_after_statements   = { level = "allow", priority = 1 }
cast_possible_truncation = { level = "allow", priority = 1 }
cast_possible_wrap       = { level = "allow", priority = 1 }
cast_sign_loss           = { level = "allow", priority = 1 }
cast_precision_loss      = { level = "allow", priority = 1 }