widevine - v0.1.0
    Preparing search index...

    widevine - v0.1.0

    widevine logo

    @li0ard/widevine
    Simple Widevine CDM implementation
    docs



    # from NPM
    npm i @li0ard/widevine

    # from JSR
    bunx jsr add @li0ard/widevine
    import { CDM, PSSH, Device, DeviceType, KeyType } from "@li0ard/widevine";

    const device = Device.decode(
    DeviceType.ANDROID,
    Buffer.from("....", "base64"),
    Buffer.from("....", "base64")
    );

    const cdm = new CDM(device);
    const sessionId = cdm.open();

    const pssh = PSSH.decode(Buffer.from("....", "base64"));

    const challenge = cdm.get_license_challenge(sessionId, pssh);
    const license = await (await fetch(`https://cwip-shaka-proxy.appspot.com/no_auth`, {
    method: "POST",
    body: challenge
    })).arrayBuffer();

    for(const key of cdm.parse_license(sessionId, new Uint8Array(license)))
    console.log(`- [${KeyType[key.type]}] ${bytesToHex(key.kid)}:${bytesToHex(key.key)}`);

    cdm.close(sessionId);
    • Widevine - Widevine (and Widevine icon) by Google
    • pywidevine - An Open Source Python Implementation of Widevine CDM (greatly inspired)