Files
ports/security/pdfrip/Makefile.crates
T
Santhosh Raju 00f9ff2815 security/pdfrip: Update to 3.0.0
Changes since 2.0.1:

PDFRip v3.0.0 is a trust/performance/compatibility release focused on
making
pdfrip more correct, measurable, and useful on real password-cracking
workloads.

Highlights

Prepared verifier hot path

  * Password attempts no longer rebuild general PDF parsing/storage
    state on
    every try
  * The release extracts the security envelope once, prepares a direct
    verifier
    once, and reuses it across attempts
  * Verified against deterministic qpdf fixtures for Standard Security
    Handler
    revisions R2 through R6

Better compatibility coverage

The fixture and verifier matrix now covers:
  * R2 / R3 / R4 RC4
  * R4 AES-128
  * R5 / R6 AES-256
  * Unicode R5 / R6 passwords
  * Blank user passwords
  * Object streams and xref streams
  * Linearized PDFs
  * EncryptMetadata=false

Exact progress and resume

  * Progress is now based on verified attempts, not merely queued work
  * Historical "100%, ETA 0s, but still running" behavior is fixed
  * Checkpoint/resume is now a first-class workflow with exact
    verified-prefix
    recovery

New and improved search workflows

  * New mask mode for bounded structured passwords
  * New contains-word mode for "known substring + brute-force the rest"
    workflows
  * Date --format now supports custom shapes
  * Custom-query now supports literal-only queries and fixes bugs
  * Numeric ranges are inclusive and sized exactly
  * Default-query now enumerates printable ASCII correctly and can test
    blank
    passwords

Better UX and reporting

  * Success output distinguishes user vs owner passwords when revision
    allows
    it
  * Blank passwords render explicitly as ""
  * Structured JSON output available with --json
  * Malformed inputs return normal user-facing errors instead of panics
  * Documentation matches measured reality and current workflows

New opt-in fast mode

  * --user-password-only skips owner-password checks for
    document-opening
    password workflows
  * Can reduce end-to-end time on R5/R6 workloads

Measured improvements

  Representative local measurements on Apple M3 Pro showed:
  * Synthetic R5 prepared verifier: 15.5x lower latency than legacy path
  * Large bundled R3 example: 4.5x lower latency
  * 10,000-candidate mask exhaustion: 3.4x faster at 4 workers vs 1
    worker
  * User-password-only speedups: 1.31x-2.77x faster depending on
    revision

Build and release hardening

  * Exact dependency pinning for sensitive direct crates
  * Tracked Cargo.lock with --locked CI/release flows
  * CI coverage on Linux/macOS/Windows for stable + nightly
  * Cargo install smoke testing
  * Benchmark-harness build coverage
  * PDF fixtures marked binary-safe across platforms
2026-03-21 15:44:13 +01:00

162 lines
3.4 KiB
Makefile

CARGO_CRATES= adler32-1.2.0 \
aes-0.8.4 \
aho-corasick-1.1.4 \
allocator-api2-0.2.21 \
anes-0.1.6 \
anstream-1.0.0 \
anstyle-1.0.14 \
anstyle-parse-1.0.0 \
anstyle-query-1.1.5 \
anstyle-wincon-3.0.11 \
anyhow-1.0.102 \
async-trait-0.1.89 \
autocfg-1.5.0 \
bitflags-1.3.2 \
bitflags-2.11.0 \
block-buffer-0.10.4 \
block-padding-0.3.3 \
block2-0.6.2 \
bumpalo-3.20.2 \
bytecount-0.6.9 \
cast-0.3.0 \
cbc-0.1.2 \
cfg-if-1.0.4 \
cfg_aliases-0.2.1 \
ciborium-0.2.2 \
ciborium-io-0.2.2 \
ciborium-ll-0.2.2 \
cipher-0.4.4 \
clap-4.6.0 \
clap_builder-4.6.0 \
clap_derive-4.6.0 \
clap_lex-1.1.0 \
colorchoice-1.0.5 \
colored-2.2.0 \
console-0.15.11 \
core2-0.4.0 \
cpufeatures-0.2.17 \
crc32fast-1.5.0 \
criterion-0.5.1 \
criterion-plot-0.5.0 \
crossbeam-0.8.4 \
crossbeam-channel-0.5.15 \
crossbeam-deque-0.8.6 \
crossbeam-epoch-0.9.18 \
crossbeam-queue-0.3.12 \
crossbeam-utils-0.8.21 \
crunchy-0.2.4 \
crypto-common-0.1.7 \
ctrlc-3.5.2 \
dary_heap-0.3.8 \
datasize-0.2.15 \
datasize_derive-0.2.15 \
deflate-1.0.0 \
digest-0.10.7 \
dispatch2-0.3.1 \
doc-comment-0.3.4 \
either-1.15.0 \
encode_unicode-1.0.0 \
env_logger-0.10.2 \
equivalent-1.0.2 \
fax-0.2.6 \
fax_derive-0.2.0 \
foldhash-0.2.0 \
generic-array-0.14.7 \
globalcache-0.2.4 \
half-2.7.1 \
hashbrown-0.16.1 \
heck-0.4.1 \
heck-0.5.0 \
hermit-abi-0.5.2 \
humantime-2.3.0 \
indexmap-2.13.0 \
indicatif-0.17.11 \
inout-0.1.4 \
is-terminal-0.4.17 \
is_terminal_polyfill-1.70.2 \
istring-0.3.4 \
itertools-0.10.5 \
itoa-1.0.17 \
jpeg-decoder-0.3.2 \
js-sys-0.3.91 \
lazy_static-1.5.0 \
libc-0.2.183 \
libflate-2.2.1 \
libflate_lz77-2.2.0 \
log-0.4.19 \
md5-0.7.0 \
memchr-2.8.0 \
nix-0.31.2 \
num-traits-0.2.19 \
number_prefix-0.4.0 \
objc2-0.6.4 \
objc2-encode-4.1.0 \
once_cell-1.21.4 \
once_cell_polyfill-1.70.2 \
oorandom-11.1.5 \
pdf-0.9.0 \
pdf_derive-0.2.0 \
plotters-0.3.7 \
plotters-backend-0.3.7 \
plotters-svg-0.3.7 \
portable-atomic-1.13.1 \
pretty_env_logger-0.5.0 \
proc-macro2-1.0.106 \
quote-1.0.45 \
rayon-1.11.0 \
rayon-core-1.13.0 \
regex-1.12.3 \
regex-automata-0.4.14 \
regex-syntax-0.8.10 \
rle-decode-fast-1.0.3 \
rustversion-1.0.22 \
same-file-1.0.6 \
serde-1.0.228 \
serde_core-1.0.228 \
serde_derive-1.0.228 \
serde_json-1.0.149 \
sha2-0.10.9 \
snafu-0.7.5 \
snafu-derive-0.7.5 \
stringprep-0.1.5 \
strsim-0.11.1 \
syn-1.0.109 \
syn-2.0.117 \
termcolor-1.4.1 \
tinytemplate-1.2.1 \
tinyvec-1.11.0 \
tinyvec_macros-0.1.1 \
tuple-0.5.2 \
typenum-1.19.0 \
unicode-bidi-0.3.18 \
unicode-ident-1.0.24 \
unicode-normalization-0.1.25 \
unicode-properties-0.1.4 \
unicode-width-0.2.2 \
utf8parse-0.2.2 \
version_check-0.9.5 \
walkdir-2.5.0 \
wasm-bindgen-0.2.114 \
wasm-bindgen-macro-0.2.114 \
wasm-bindgen-macro-support-0.2.114 \
wasm-bindgen-shared-0.2.114 \
web-sys-0.3.91 \
web-time-1.1.0 \
weezl-0.1.12 \
winapi-util-0.1.11 \
windows-link-0.2.1 \
windows-sys-0.59.0 \
windows-sys-0.61.2 \
windows-targets-0.52.6 \
windows_aarch64_gnullvm-0.52.6 \
windows_aarch64_msvc-0.52.6 \
windows_i686_gnu-0.52.6 \
windows_i686_gnullvm-0.52.6 \
windows_i686_msvc-0.52.6 \
windows_x86_64_gnu-0.52.6 \
windows_x86_64_gnullvm-0.52.6 \
windows_x86_64_msvc-0.52.6 \
zerocopy-0.8.42 \
zerocopy-derive-0.8.42 \
zmij-1.0.21