New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

pssh-tools

Package Overview
Dependencies
Maintainers
1
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pssh-tools - npm Package Compare versions

Comparing version

to
1.0.7

3

dist/src/lib/pssh/playready.d.ts
import * as T from '../types';
interface KeyItem {
kid: string;
key: string;
checksum: string;

@@ -9,3 +10,3 @@ }

export declare const decodeKey: (keyData: string) => string;
export declare const encodeKey: (keyPair: T.KeyPair) => KeyItem;
export declare const encodeKey: (keyPair: T.KeyPair, keySeed?: string) => KeyItem;
export {};

@@ -21,3 +21,3 @@ "use strict";

// Microsoft GUID endianness
const keyIdBuffer = swapEndian(keyId);
const kidBuffer = swapEndian(keyId);
// Truncate if key seed > 30 bytes

@@ -30,3 +30,3 @@ const truncatedKeySeed = Buffer.alloc(30);

//
const shaA = Buffer.concat([truncatedKeySeed, keyIdBuffer], truncatedKeySeed.length + keyIdBuffer.length);
const shaA = Buffer.concat([truncatedKeySeed, kidBuffer], truncatedKeySeed.length + kidBuffer.length);
const digestA = crypto.createHash('sha256').update(shaA).digest();

@@ -37,3 +37,3 @@ //

//
const shaB = Buffer.concat([truncatedKeySeed, keyIdBuffer, truncatedKeySeed], (2 * truncatedKeySeed.length) + keyIdBuffer.length);
const shaB = Buffer.concat([truncatedKeySeed, kidBuffer, truncatedKeySeed], (2 * truncatedKeySeed.length) + kidBuffer.length);
const digestB = crypto.createHash('sha256').update(shaB).digest();

@@ -44,16 +44,16 @@ //

//
const shaC = Buffer.concat([truncatedKeySeed, keyIdBuffer, truncatedKeySeed, keyIdBuffer], (2 * truncatedKeySeed.length) + (2 * keyIdBuffer.length));
const shaC = Buffer.concat([truncatedKeySeed, kidBuffer, truncatedKeySeed, kidBuffer], (2 * truncatedKeySeed.length) + (2 * kidBuffer.length));
const digestC = crypto.createHash('sha256').update(shaC).digest();
// Calculate Content Key
const contentBuffer = Buffer.alloc(DRM_AES_KEYSIZE_128);
const keyBuffer = Buffer.alloc(DRM_AES_KEYSIZE_128);
for (let i = 0; i < DRM_AES_KEYSIZE_128; i++) {
let value = digestA[i] ^ digestA[i + DRM_AES_KEYSIZE_128] ^ digestB[i] ^ digestB[i + DRM_AES_KEYSIZE_128] ^ digestC[i] ^ digestC[i + DRM_AES_KEYSIZE_128];
contentBuffer[i] = value;
keyBuffer[i] = value;
}
const kid = contentBuffer.toString('base64');
// Calculate checksum
const cipher = crypto.createCipheriv('aes-128-ecb', contentBuffer, '').setAutoPadding(false);
const checksum = cipher.update(keyIdBuffer).slice(0, 8).toString('base64');
const cipher = crypto.createCipheriv('aes-128-ecb', keyBuffer, '').setAutoPadding(false);
const checksum = cipher.update(kidBuffer).slice(0, 8).toString('base64');
return {
kid,
kid: kidBuffer.toString('base64'),
key: keyBuffer.toString('base64'),
checksum

@@ -63,3 +63,3 @@ };

const constructProXML4 = (keyPair, licenseUrl, keySeed) => {
let key = keySeed && keySeed.length ? generateContentKey(keyPair.key, keySeed) : exports.encodeKey(keyPair);
let key = keySeed && keySeed.length ? generateContentKey(keyPair.key, keySeed) : exports.encodeKey(keyPair, keySeed);
let xmlArray = ['<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0">'];

@@ -81,3 +81,3 @@ xmlArray.push('<DATA>');

let keyIds = keyPairs.map((k) => {
return keySeed && keySeed.length ? generateContentKey(k.kid, keySeed) : exports.encodeKey(k);
return keySeed && keySeed.length ? generateContentKey(k.kid, keySeed) : exports.encodeKey(k, keySeed);
});

@@ -159,5 +159,6 @@ let xmlArray = ['<?xml version="1.0" encoding="UTF-8"?>'];

};
exports.encodeKey = (keyPair) => {
const keyBuffer = Buffer.from(keyPair.key, 'hex');
exports.encodeKey = (keyPair, keySeed = '') => {
const kidBuffer = swapEndian(keyPair.kid);
const key = keySeed && keySeed.length ? Buffer.from(generateContentKey(keyPair.kid, keySeed).key, 'base64').toString('hex') : keyPair.key;
const keyBuffer = Buffer.from(key, 'hex');
const cipher = crypto.createCipheriv('aes-128-ecb', keyBuffer, '').setAutoPadding(false);

@@ -167,2 +168,3 @@ const checksum = cipher.update(kidBuffer).slice(0, 8).toString('base64');

kid: kidBuffer.toString('base64'),
key: swapEndian(key).toString('base64'),
checksum

@@ -169,0 +171,0 @@ };

{
"name": "pssh-tools",
"version": "1.0.6",
"version": "1.0.7",
"description": "Tools to generate PSSH Data and PSSH Box",

@@ -5,0 +5,0 @@ "main": "dist/src/index.js",

Sorry, the diff of this file is not supported yet