DRMLibre is a standalone, single-binary Rust CLI that removes DRM from Amazon Kindle and Adobe Digital Editions ebooks. The decryption logic is ported from DeDRM_tools (GPLv3); this project is GPL-3.0-or-later. This commit covers the first three milestones of the plan: * Phase 0 - workspace scaffold (drmlibre-core engine + drmlibre-cli), native TOML config, magic-byte/zip-content format detection, and the remove/passhash/config CLI surface with atomic output handling. * Phase 1 - Adobe ADEPT EPUB: RSA (PKCS#1 v1.5) and PassHash book-key unwrap, RMSDK>=10 hardening, AES-128-CBC content decryption, and IETF/ Adobe font de-obfuscation. Verified end-to-end with a real RSA key. * Phase 2 - Kindle MOBI/AZW/AZW3: PC1 cipher, type-1 and type-2 DRM, serial->PID derivation, EXTH header patches, and trailing-data handling. Verified end-to-end and against the upstream golden vectors. All crypto is pure Rust (RustCrypto), so the release binary has no third-party runtime dependencies. 42 tests pass; clippy and rustfmt clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
54 lines
1.2 KiB
TOML
54 lines
1.2 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = ["crates/drmlibre-core", "crates/drmlibre-cli"]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
rust-version = "1.96"
|
|
license = "GPL-3.0-or-later"
|
|
repository = "https://github.com/JMR-dev/DRMLibre"
|
|
authors = ["Jason Ross"]
|
|
|
|
# Derivative-work note: the DRM-removal algorithms are ported from DeDRM_tools
|
|
# (GPLv3). This project is therefore GPL-3.0-or-later. Upstream credit is kept
|
|
# in the relevant module headers.
|
|
|
|
[workspace.dependencies]
|
|
drmlibre-core = { path = "crates/drmlibre-core" }
|
|
|
|
# Errors / logging
|
|
thiserror = "2"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# Crypto (RustCrypto — pure Rust, statically linked)
|
|
rsa = "0.9"
|
|
aes = "0.8"
|
|
cbc = "0.1"
|
|
ctr = "0.9"
|
|
sha1 = "0.10"
|
|
sha2 = "0.10"
|
|
md-5 = "0.10"
|
|
hmac = "0.12"
|
|
pbkdf2 = { version = "0.12", default-features = false }
|
|
|
|
# Config / serialization
|
|
serde = { version = "1", features = ["derive"] }
|
|
toml = "0.8"
|
|
|
|
# Containers / encoding
|
|
zip = { version = "2", default-features = false, features = ["deflate"] }
|
|
flate2 = "1"
|
|
quick-xml = "0.37"
|
|
base64 = "0.22"
|
|
hex = "0.4"
|
|
|
|
# CLI
|
|
clap = { version = "4", features = ["derive"] }
|
|
|
|
[profile.release]
|
|
lto = true
|
|
strip = true
|
|
codegen-units = 1
|