exarch_core/
lib.rs

1//! Memory-safe archive extraction library with security validation.
2//!
3//! `exarch-core` provides a safe API for extracting archive files (tar, zip)
4//! with built-in protection against common security vulnerabilities like
5//! path traversal, zip bombs, symlink attacks, and hardlink attacks.
6//!
7//! # Examples
8//!
9//! ```no_run
10//! use exarch_core::SecurityConfig;
11//! use exarch_core::extract_archive;
12//!
13//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
14//! let config = SecurityConfig::default();
15//! let report = extract_archive("archive.tar.gz", "/output/dir", &config)?;
16//! println!("Extracted {} files", report.files_extracted);
17//! # Ok(())
18//! # }
19//! ```
20
21#![deny(unsafe_code)]
22#![warn(missing_docs)]
23
24pub mod api;
25pub mod archive;
26pub mod config;
27pub mod copy;
28pub mod creation;
29pub mod error;
30pub mod extraction;
31pub mod formats;
32pub mod inspection;
33pub mod io;
34pub mod report;
35pub mod security;
36pub mod test_utils;
37pub mod types;
38
39// Re-export main API types
40pub use api::create_archive;
41pub use api::create_archive_with_progress;
42pub use api::extract_archive;
43pub use api::extract_archive_with_progress;
44pub use api::list_archive;
45pub use api::verify_archive;
46pub use archive::Archive;
47pub use archive::ArchiveBuilder;
48pub use config::SecurityConfig;
49pub use error::ExtractionError;
50pub use error::FfiErrorMessage;
51pub use error::QuotaResource;
52pub use error::Result;
53pub use report::ExtractionReport;
54pub use report::NoopProgress;
55pub use report::ProgressCallback;
56
57// Re-export creation types
58pub use creation::ArchiveCreator;
59pub use creation::CreationConfig;
60pub use creation::CreationReport;
61
62// Re-export inspection types
63pub use inspection::ArchiveEntry;
64pub use inspection::ArchiveManifest;
65pub use inspection::CheckStatus;
66pub use inspection::IssueCategory;
67pub use inspection::IssueSeverity;
68pub use inspection::ManifestEntryType;
69pub use inspection::VerificationIssue;
70pub use inspection::VerificationReport;
71pub use inspection::VerificationStatus;
72
73// Re-export types module for easier access
74pub use types::DestDir;
75pub use types::EntryType;
76pub use types::SafePath;
77pub use types::SafeSymlink;