fix(tracks): flag every encrypted sample entry type after decrypt

This commit is contained in:
imSp4rky
2026-10-23 17:14:12 -06:00
parent 9f054269db
commit d8663b0dad
3 changed files with 27 additions and 20 deletions
+9 -1
View File
@@ -1,5 +1,5 @@
"""Self-check for ``has_encrypted_sample_entry``: a finalized MP4 whose moov still carries
an encv/enca sample entry means the decrypt tool skipped/failed the track (frma was never
an encrypted (enc*/drm*) sample entry means the decrypt tool skipped/failed the track (frma was never
applied), so the detector must flag it before the file reaches the muxer. Detection is
scoped to moov, so stray 4CC byte runs in mdat must never trip (or mask) it.
@@ -11,6 +11,8 @@ from __future__ import annotations
import struct
from pathlib import Path
import pytest
from unshackle.core.tracks.track import has_encrypted_sample_entry
@@ -80,6 +82,12 @@ def test_text_containing_enca_in_moov_not_detected(tmp_path: Path) -> None:
assert has_encrypted_sample_entry(f) is False
@pytest.mark.parametrize("kind", [b"encs", b"enct", b"drmi"])
def test_other_encrypted_entry_kinds_detected(tmp_path: Path, kind: bytes) -> None:
f = write(tmp_path, "enc.mp4", FTYP, moov(stsd([sample_entry(kind, box(b"sinf", box(b"frma", b"stpp")))])))
assert has_encrypted_sample_entry(f) is True
def test_missing_or_bogus_file(tmp_path: Path) -> None:
assert has_encrypted_sample_entry(tmp_path / "nope.mp4") is False
bogus = write(tmp_path, "bogus.bin", b"\x00\x01\x02\x03not-an-mp4")