| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| vanillapdf-v2.3.0-sbom.spdx.json | 2026-07-23 | 21.9 kB | |
| vanillapdf-v2.3.0.intoto.jsonl | 2026-07-23 | 11.8 kB | |
| vanillapdf_2.3.0_osx-arm64.dmg | 2026-07-23 | 1.1 MB | |
| libvanillapdf-devel-2.3.0-1.x86_64.rpm | 2026-07-23 | 74.6 kB | |
| libvanillapdf-2.3.0-1.x86_64.rpm | 2026-07-23 | 1.5 MB | |
| libvanillapdf_2.3.0_amd64.deb | 2026-07-23 | 2.2 MB | |
| libvanillapdf-dev_2.3.0_amd64.deb | 2026-07-23 | 69.6 kB | |
| README.md | 2026-07-22 | 2.9 kB | |
| vanillapdf v2.3.0 source code.tar.gz | 2026-07-22 | 177.2 MB | |
| vanillapdf v2.3.0 source code.zip | 2026-07-22 | 177.6 MB | |
| Totals: 10 Items | 359.9 MB | 3 | |
Vanilla.PDF 2.3.0
This release adds AES-256 encryption and resolves several encryption correctness issues that could cause documents to be written with weaker protection than requested or rejected by third-party readers. It also hardens thread safety and the release/packaging pipeline.
✨ Features
- AES-256 (V=5, R=6) encryption creation — documents can now be encrypted with AES-256 (#431)
- Accept a null pointer for zero-length buffer data across the C API (#429)
🔒 Encryption correctness
- Emit
/V 4with/AESV2for AES-128 instead of silently producing RC4 (#453) - Encrypt array-filter streams instead of writing them in the clear (#460, [#462])
- Correct the round-counter off-by-one in the R6 hash termination (#457)
- Truncate the RC4 key to n bytes for the revision-3 standard security handler (#439)
- Emit a conformant
/Pso third-party readers accept RC4/AES-128 encrypted documents (#421)
🐛 Bug fixes
- Correct PNG Average/Paeth predictor reconstruction in FlateDecode (#440)
- Make
XrefEntry_InUsereport entry usage instead of the lazy-load flag (#447) - Overwrite the stale
Limitskey onTreeBase::Rebuild(#419) - Reject an invalid 1-based page index in
PageTree::Insert/Remove(#418) - Standardize content object/operation cast API consistency (#413)
- Add a missing
<cstring>include forstd::strlen/std::memcpy(#414)
🧵 Thread safety
- Synchronize
File::GetByteRangeseek+read against the shared input cursor (#408) - Make the document registry create-guard liveness-aware (#428)
- Fix a data race in
Documentcatalog lazy initialization (#391)
🧪 Testing
- Add encryption interoperability checks against qpdf + pyhanko (#424)
📦 Build, CI & release pipeline
- Move tag creation into the release pipeline and create the tag by publishing the draft (#379, [#402])
- Harden the release publish path — GITHUB_TOKEN, publish by id, NuGet trusted publishing via OIDC (#449, [#399])
- Migrate SBOM attestation to
actions/attestand attach a signed provenance bundle as a release asset (#438, [#403]) - Conventional deb/rpm package names; exclude the internal CLI tool from packages (#398)
- Switch VS 2026 Windows runners to the msvc-18 presets; add Ubuntu 26.04 to CI (#401, [#380])
- Lint PR titles against Conventional Commits; flag failed auto-backports; add job timeouts (#435, [#445], [#446])
- Tighten code-coverage thresholds and general release-readiness cleanup (#436, [#417])
📚 Documentation
- Rewrite the README, NuGet readme, and Read the Docs documentation; restore badges; mark Conan/Homebrew as incoming (#260, [#397], [#394])
⬆️ Dependencies
- Update vcpkg to 2026.06.24 (from 2026.05.25) and routine GitHub Actions group bumps
Full Changelog: https://github.com/vanillapdf/vanillapdf/compare/v2.2.1...v2.3.0