openpack 0.1.0

Safe archive-reader for ZIP-derived formats (ZIP, CRX, JAR, APK, IPA) with BOM-safe checks.
Documentation

openpack

openpack reads ZIP-derived archives safely, with built-in anti-abuse checks.

  • ZIP
  • CRX
  • JAR
  • APK (AndroidManifest.xml parsing under apk feature)
  • IPA (Info.plist parsing under ipa feature)

Install

[dependencies]
openpack = "0.1"

Features

  • zip (default): base ZIP archive support
  • crx: enable CRX handling and ZIP payload offset parsing
  • apk: parse AndroidManifest.xml from APK archives
  • ipa: parse Info.plist from IPA packages

Quick start

use openpack::{OpenPack, Limits};

let limits = Limits::default();
let pack = OpenPack::open("/tmp/archive.zip", limits)?;
for entry in pack.entries()? {
    println!("{}", entry.name);
}
let body = pack.read_entry("robots.txt")?;
println!("{}", body.len());
# Ok(())

Safety checks

  • Zip-slip path normalization and parent traversal rejection
  • max archive size
  • max per-entry uncompressed size
  • max total uncompressed size
  • max entries
  • compression ratio limits

TOML limits

Use config/limits.toml as a template for deployment defaults.

max_archive_size = 268435456
max_entry_uncompressed_size = 52428800
max_total_uncompressed_size = 134217728
max_entries = 2048
max_compression_ratio = 100.0