Closed (fixed)
Project:
Personal Data Vault
Version:
1.x-dev
Component:
Code
Priority:
Normal
Category:
Task
Assigned:
Unassigned
Reporter:
Created:
7 Jun 2026 at 19:34 UTC
Updated:
21 Jun 2026 at 19:55 UTC
Jump to comment: Most recent
A full pre-release audit of the module (core plus submodules) surfaced a set of correctness and scalability issues. This issue collects the fixes. All are verified with phpcs, phpstan, and the kernel test suite.
Security / correctness
SubjectKeyManager::rewrapUnder() treated any two keys sharing a wrap plugin (same Key type) as an in-place native rewrap, so two distinct OpenBao/Vault Transit keys would feed the source-key ciphertext to the target key. A Master KEK id change now unwraps with the source key and re-wraps with the target; only a same-id version advance uses the native rewrap. Regression test added.pdv_vault submodule was missing from the root composer.json replace block.Scalability (100k subjects, 500k items)
pdv_grant.expires_at, pdv_consumer_authorization.expires_at, and pdv_grant_request.created, which the garbage-collector reapers and status-report counts all filter on.rewrapBatch() re-loaded each subject row one by one; it now loads the whole chunk in a single query.No update hooks are added: the project is alpha, so the new indexes ship in hook_install (fresh install only).
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
mably commentedComment #5
mably commented