A collection of web-based tools for working with PSSH boxes (as used for the initialization of DRM systems) and with Widevine Content Decryption Modules (CDMs). There are tools that allow you to:
The tools use code from the Rust crate pssh-box compiled to WebAssembly (WASM), and run fully in your web browser (there is no server backend; the tools will work fully offline once loaded).
[!TIP] You can try out the tools in your browser.
PSSH boxes are used:
in an MP4 box of type pssh in an MP4 fragment (CMAF/MP4/ISOBMFF containers)
in a <cenc:pssh> element in a DASH MPD manifest
in DRM initialization data passed to the Encrypted Media Extension of a web browser
in an EXT-X-SESSION-KEY field of an m3u8 playlist
A PSSH box includes information for a single DRM system. This library supports the PSSH data formats for the following DRM systems:
PSSH boxes contain (depending on the DRM system) information on the key_ID for which to obtain a content key, the encryption scheme used (e.g. cenc, cbc1, cens or cbcs), the URL of the licence server, and checksum data.
Useful references:
Information from the W3C on the cenc initialization data format
The Shaka packager utility includes a Python script pssh-box.py which is able to decode and create Widevine initialization data.
This project is licensed under the MIT license. For more information, see the LICENSE file.