fix: is_encrypted_record misses blobs nested inside a list or tuple
both the bounded pass and the unbounded _has_encrypted_field fallback descended only through dict values, so a blob nested inside a list at any depth was invisible and the function returned False. reencrypt() already skips list-nested blobs (documented gotcha), so after rotation such a blob was stranded under the old key while this audit reported the record clean - a rotation-data-loss trap once the old wrapped-key record is deleted. both traversal passes now walk list/tuple items in addition to dict values; the blob-detection predicate is unchanged. bump 0.1.7 -> 0.1.8 Signed-off-by: disqualifier <dev@disqualifier.me>
This commit is contained in:
@@ -101,7 +101,8 @@ if is_encrypted_record(doc):
|
||||
`is_encrypted_record` falls back to an unbounded-depth scan once `traversal_level` is
|
||||
exhausted, so it reliably reports `True` for a blob left behind by a shallower
|
||||
`decrypt_record`/`reencrypt` call — safe to use as a leftover-detecting audit after
|
||||
rotation, regardless of how deep the blob is nested.
|
||||
rotation, regardless of how deep the blob is nested, including inside a list or
|
||||
tuple at any depth.
|
||||
|
||||
Naming aliases (same objects): `EnvelopeCrypto` = `DocumentCrypto` = `RecordCrypto`
|
||||
= `PCICrypto` (deprecated legacy alias). `decrypt_record` = `decrypt_document` =
|
||||
|
||||
Reference in New Issue
Block a user