Files
JMR-devandClaude Opus 4.8 259bb4d6fa Update dependencies to latest versions
Bump dependency requirements to their current latest and migrate the code for
the breaking API changes; refresh Cargo.lock for the rest.

Notable version bumps:
* zip 2 -> 8, quick-xml 0.37 -> 0.40, toml 0.8 -> 1
* windows 0.58 -> 0.62, winreg 0.52 -> 0.56
* RustCrypto: aes 0.8 -> 0.9, cbc 0.1 -> 0.2, sha1/sha2 0.10 -> 0.11,
  md-5 0.10 -> 0.11, ctr 0.9 -> 0.10, hmac 0.12 -> 0.13, pbkdf2 0.12 -> 0.13

Code migrations:
* quick-xml 0.40: BytesText::unescape() -> xml10_content();
  Attribute::unescape_value() -> normalized_value(XmlVersion::Implicit1_0)
* windows 0.62: LocalFree now takes Option<HLOCAL>
* cipher 0.5 (aes 0.9 / cbc 0.2): BlockEncryptMut/BlockDecryptMut ->
  BlockModeEncrypt/BlockModeDecrypt; encrypt_padded_mut/decrypt_padded_mut ->
  encrypt_padded/decrypt_padded

Held back deliberately: rand stays 0.8 because the latest rsa (0.9) still needs
an rand_core 0.6 RNG for keygen, which rand 0.9+ no longer provides. rsa pinning
the older RustCrypto generation also leaves a couple of duplicate transitive
versions (digest 0.10/0.11, crypto-common 0.1/0.2) — harmless.

Verified: 46 tests pass, clippy + rustfmt clean, and a real ADEPT EPUB still
decrypts end-to-end (DPAPI key extraction + RSA/AES) to a valid DRM-free file.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 20:27:43 -05:00

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.9"
cbc = "0.2"
ctr = "0.10"
sha1 = "0.11"
sha2 = "0.11"
md-5 = "0.11"
hmac = "0.13"
pbkdf2 = { version = "0.13", default-features = false }
# Config / serialization
serde = { version = "1", features = ["derive"] }
toml = "1"
# Containers / encoding
zip = { version = "8", default-features = false, features = ["deflate"] }
flate2 = "1"
quick-xml = "0.40"
base64 = "0.22"
hex = "0.4"
# CLI
clap = { version = "4", features = ["derive"] }
[profile.release]
lto = true
strip = true
codegen-units = 1