Skip to content

Parsing and printing PSSH boxes for DRM systems, in WebAssembly.

License

Notifications You must be signed in to change notification settings

zhaarey/pssh-box-wasm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pssh-box-wasm

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:

  • serialize and deserialize (create and decode) PSSH boxes
  • request decryption keys (obtain a license) from a Widevine DRM licensing server
  • convert Widevine CDMs between blob format and “WVD” format

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).

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:

  • Widevine, owned by Google, widely used for DASH streaming
  • PlayReady, owned by Microsoft, widely used for DASH streaming
  • WisePlay, owned by Huawei
  • Irdeto
  • Marlin
  • Nagra
  • The unofficial variant of Apple FairPlay that is used for DASH-like streaming by Netflix
  • Common Encryption

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:

License

This project is licensed under the MIT license. For more information, see the LICENSE file.

About

Parsing and printing PSSH boxes for DRM systems, in WebAssembly.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 53.9%
  • Rust 22.9%
  • HTML 13.2%
  • Just 6.2%
  • CSS 3.8%