//#region src/index.d.ts /** * Represents a PlayReady client capable of: * - provisioning a device certificate chain (CHAI) * - generating license acquisition challenges * - parsing PlayReady license responses (XMR) * * This is your main public API entry. */ declare class Playready { private chai; private provChai; private signingKey; private encryptKey; /** Device metadata extracted from bgroupcert.dat */ info: { manufacturer: string; model_name: string; model_number: string; security_level: 150 | 2000 | 3000; device_version?: 2 | 3; }; private constructor(); /** * Initializes a PlayReady client with bgroupcert.dat and zgpriv.dat by: * - generating a new provisioned leaf certificate * - validating a device private key (zgpriv) * * @param bgroup_buf The base manufacturer certificate chain (bgroupcert.dat) * @param zgpriv_buf The private key matching the base manufacturer certificate chain (zgpriv.dat) * @returns A fully initialized Playready instance * @throws If certificate chain parsing fails or if the zgpriv private key does not match the bgroupcert */ static init(bgroup_buf: Buffer, zgpriv_buf: Buffer): Playready; /** * Initializes a PlayReady client with a PlayReady PRD (V2/V3) file * * @param prd Buffer containing a PlayReady PRD file * @returns A fully initialized Playready instance * @throws If PRD parsing fails or if certificate chain parsing fails */ static initPRD(prd: Buffer): Playready; /** * Unpacks a PlayReady V3 PRD Device (pyplayready). * * A PRD file stores: * - a 96-byte group private key, * - the provisioned encryption/signing keys, * - and the base manufacturer certificate (bgroupcert). * * The returned structure contains: * - bgroupcert → the device's base certificate chain * - zgpriv → the raw private key matching bgroupcert * * @param prd Buffer containing a PlayReady V3 PRD file * @returns Object with { bgroupcert, zgpriv } */ static unpackV3PRD(prd: Buffer): { bgroupcert: Buffer; zgpriv: Buffer; }; /** * Generates a PlayReady challenge (LA_URL request). * * @param pssh Base64 string or buffer * @param customData Optional license customData field * @returns Challenge XML (utf-8) */ generateChallenge(pssh: string | Buffer, customData?: string): string; /** * Parses a PlayReady license response (XMR). * Verifies: * - encryption key matches this device * - integrity signature is correct * * @param res SOAP XML response from license server * @returns Array of decrypted keys (KID + KEY) */ parseLicense(res: Buffer): { kid: string; key: string; }[]; /** * Checks whether the given buffer contains a WRMHeader. * * @param data Base64 string or raw Buffer * @returns true when included - false when not included */ static containsWRMHeader(data: string | Buffer): boolean; } //#endregion export { Playready as default };