| Crates.io | rswidevine |
| lib.rs | rswidevine |
| version | 0.1.1 |
| created_at | 2026-01-01 00:19:16.757991+00 |
| updated_at | 2026-01-01 00:40:22.901686+00 |
| description | Widevine CDM (Content Decryption Module) implementation in Rust. |
| homepage | https://github.com/waki285/rswidevine |
| repository | https://github.com/waki285/rswidevine |
| max_upload_size | |
| id | 2015535 |
| size | 360,938 |
A Rust implementation of the Widevine CDM (Content Decryption Module) APIs and data formats. This project is a Rust port of pywidevine and is intended for authorized device/content validation and interoperability work.
.wvd).cargo add rswidevine
Or build the repo directly:
cargo build
use rswidevine::device::Device;
use rswidevine::pssh::Pssh;
let device = Device::from_path("./device.wvd")?;
let pssh = Pssh::from_base64("<pssh_base64>")?;
let key_ids = pssh.key_ids()?;
# anyhow::Ok(())
Build with the default cli feature:
cargo run --features cli -- --help
Examples:
# Inspect a device file
cargo run --features cli --example device_info ./device.wvd
# Inspect a PSSH (base64)
cargo run --features cli --example pssh_inspect <pssh_base64>
The CLI also provides helper subcommands for license requests, device creation/export,
and basic CDM checks. See --help for full usage.
| Feature | Description |
|---|---|
cli |
CLI binary support (default). |
tracing |
Tracing subscriber for CLI logs (default). |
chrono |
Use chrono for date handling in CLI. |
playready |
PlayReady XML parsing/conversion. |
remote |
Remote CDM client support. |
serve |
HTTP serve API. |
full |
Enables cli, chrono, playready, remote, serve, tracing. |
GPL-3.0-only. See LICENSE.
This repository is intended for authorized testing and interoperability. Do not use it to bypass DRM or access content without permission.