forked from tpd94/CDRM-Extension
use global DRM_SIGNATURES
for readability
This commit is contained in:
parent
3bd2e0f465
commit
30e797bc09
106
src/inject.js
106
src/inject.js
@ -17,6 +17,13 @@ let foundChallengeInBody = false;
|
|||||||
let licenseResponseCounter = 0;
|
let licenseResponseCounter = 0;
|
||||||
let keysRetrieved = false;
|
let keysRetrieved = false;
|
||||||
|
|
||||||
|
const DRM_SIGNATURES = {
|
||||||
|
WIDEVINE: "CAES",
|
||||||
|
PLAYREADY: "PD94",
|
||||||
|
SERVICE_CERT: "CAUS",
|
||||||
|
WIDEVINE_INIT: "CAQ=",
|
||||||
|
};
|
||||||
|
|
||||||
// Post message to content.js to get DRM override
|
// Post message to content.js to get DRM override
|
||||||
window.postMessage({ type: "__GET_DRM_OVERRIDE__" }, "*");
|
window.postMessage({ type: "__GET_DRM_OVERRIDE__" }, "*");
|
||||||
|
|
||||||
@ -398,7 +405,7 @@ function b64ToHexStr(b64) {
|
|||||||
return [...atob(b64)].map((c) => c.charCodeAt(0).toString(16).padStart(2, "0")).join``;
|
return [...atob(b64)].map((c) => c.charCodeAt(0).toString(16).padStart(2, "0")).join``;
|
||||||
}
|
}
|
||||||
|
|
||||||
function jsonContainsValue(obj, prefix = "CAES") {
|
function jsonContainsValue(obj, prefix = DRM_SIGNATURES.WIDEVINE) {
|
||||||
if (typeof obj === "string") return obj.startsWith(prefix);
|
if (typeof obj === "string") return obj.startsWith(prefix);
|
||||||
if (Array.isArray(obj)) return obj.some((val) => jsonContainsValue(val, prefix));
|
if (Array.isArray(obj)) return obj.some((val) => jsonContainsValue(val, prefix));
|
||||||
if (typeof obj === "object" && obj !== null) {
|
if (typeof obj === "object" && obj !== null) {
|
||||||
@ -409,7 +416,9 @@ function jsonContainsValue(obj, prefix = "CAES") {
|
|||||||
|
|
||||||
function jsonReplaceValue(obj, newValue) {
|
function jsonReplaceValue(obj, newValue) {
|
||||||
if (typeof obj === "string") {
|
if (typeof obj === "string") {
|
||||||
return obj.startsWith("CAES") || obj.startsWith("PD94") ? newValue : obj;
|
return obj.startsWith(DRM_SIGNATURES.WIDEVINE) || obj.startsWith(DRM_SIGNATURES.PLAYREADY)
|
||||||
|
? newValue
|
||||||
|
: obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Array.isArray(obj)) {
|
if (Array.isArray(obj)) {
|
||||||
@ -516,7 +525,11 @@ MediaKeySession.prototype.generateRequest = function (initDataType, initData) {
|
|||||||
event.stopImmediatePropagation();
|
event.stopImmediatePropagation();
|
||||||
const uint8Array = new Uint8Array(event.message);
|
const uint8Array = new Uint8Array(event.message);
|
||||||
const base64challenge = arrayBufferToBase64(uint8Array);
|
const base64challenge = arrayBufferToBase64(uint8Array);
|
||||||
if (base64challenge === "CAQ=" && interceptType !== "DISABLED" && !serviceCertFound) {
|
if (
|
||||||
|
base64challenge === DRM_SIGNATURES.WIDEVINE_INIT &&
|
||||||
|
interceptType !== "DISABLED" &&
|
||||||
|
!serviceCertFound
|
||||||
|
) {
|
||||||
const { device_type, system_id, security_level, host, secret, device_name } =
|
const { device_type, system_id, security_level, host, secret, device_name } =
|
||||||
widevineDeviceInfo;
|
widevineDeviceInfo;
|
||||||
remoteCDM = new remoteWidevineCDM(
|
remoteCDM = new remoteWidevineCDM(
|
||||||
@ -529,14 +542,18 @@ MediaKeySession.prototype.generateRequest = function (initDataType, initData) {
|
|||||||
);
|
);
|
||||||
remoteCDM.openSession();
|
remoteCDM.openSession();
|
||||||
}
|
}
|
||||||
if (!injectionSuccess && base64challenge !== "CAQ=" && interceptType !== "DISABLED") {
|
if (
|
||||||
|
!injectionSuccess &&
|
||||||
|
base64challenge !== DRM_SIGNATURES.WIDEVINE_INIT &&
|
||||||
|
interceptType !== "DISABLED"
|
||||||
|
) {
|
||||||
if (interceptType === "EME") {
|
if (interceptType === "EME") {
|
||||||
injectionSuccess = true;
|
injectionSuccess = true;
|
||||||
}
|
}
|
||||||
if (!originalChallenge) {
|
if (!originalChallenge) {
|
||||||
originalChallenge = base64challenge;
|
originalChallenge = base64challenge;
|
||||||
}
|
}
|
||||||
if (originalChallenge.startsWith("CAES")) {
|
if (originalChallenge.startsWith(DRM_SIGNATURES.WIDEVINE)) {
|
||||||
window.postMessage({ type: "__DRM_TYPE__", data: "Widevine" }, "*");
|
window.postMessage({ type: "__DRM_TYPE__", data: "Widevine" }, "*");
|
||||||
window.postMessage({ type: "__PSSH_DATA__", data: foundWidevinePssh }, "*");
|
window.postMessage({ type: "__PSSH_DATA__", data: foundWidevinePssh }, "*");
|
||||||
if (interceptType === "EME" && !remoteCDM) {
|
if (interceptType === "EME" && !remoteCDM) {
|
||||||
@ -560,7 +577,7 @@ MediaKeySession.prototype.generateRequest = function (initDataType, initData) {
|
|||||||
remoteCDM.getChallenge(foundWidevinePssh);
|
remoteCDM.getChallenge(foundWidevinePssh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!originalChallenge.startsWith("CAES")) {
|
if (!originalChallenge.startsWith(DRM_SIGNATURES.WIDEVINE)) {
|
||||||
const buffer = event.message;
|
const buffer = event.message;
|
||||||
const decoder = new TextDecoder("utf-16");
|
const decoder = new TextDecoder("utf-16");
|
||||||
const decodedText = decoder.decode(buffer);
|
const decodedText = decoder.decode(buffer);
|
||||||
@ -616,7 +633,12 @@ const originalUpdate = MediaKeySession.prototype.update;
|
|||||||
MediaKeySession.prototype.update = function (response) {
|
MediaKeySession.prototype.update = function (response) {
|
||||||
const uint8 = response instanceof Uint8Array ? response : new Uint8Array(response);
|
const uint8 = response instanceof Uint8Array ? response : new Uint8Array(response);
|
||||||
const base64Response = window.btoa(String.fromCharCode(...uint8));
|
const base64Response = window.btoa(String.fromCharCode(...uint8));
|
||||||
if (base64Response.startsWith("CAUS") && foundWidevinePssh && remoteCDM && !serviceCertFound) {
|
if (
|
||||||
|
base64Response.startsWith(DRM_SIGNATURES.SERVICE_CERT) &&
|
||||||
|
foundWidevinePssh &&
|
||||||
|
remoteCDM &&
|
||||||
|
!serviceCertFound
|
||||||
|
) {
|
||||||
remoteCDM.setServiceCertificate(base64Response);
|
remoteCDM.setServiceCertificate(base64Response);
|
||||||
if (interceptType === "EME" && !remoteCDM.challenge) {
|
if (interceptType === "EME" && !remoteCDM.challenge) {
|
||||||
remoteCDM.getChallenge(foundWidevinePssh);
|
remoteCDM.getChallenge(foundWidevinePssh);
|
||||||
@ -626,7 +648,7 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
serviceCertFound = true;
|
serviceCertFound = true;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
!base64Response.startsWith("CAUS") &&
|
!base64Response.startsWith(DRM_SIGNATURES.SERVICE_CERT) &&
|
||||||
(foundWidevinePssh || foundPlayreadyPssh) &&
|
(foundWidevinePssh || foundPlayreadyPssh) &&
|
||||||
!keysRetrieved
|
!keysRetrieved
|
||||||
) {
|
) {
|
||||||
@ -680,7 +702,8 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
const buffer = body instanceof Uint8Array ? body : new Uint8Array(body);
|
const buffer = body instanceof Uint8Array ? body : new Uint8Array(body);
|
||||||
const base64Body = window.btoa(String.fromCharCode(...buffer));
|
const base64Body = window.btoa(String.fromCharCode(...buffer));
|
||||||
if (
|
if (
|
||||||
(base64Body.startsWith("CAES") || base64Body.startsWith("PD94")) &&
|
(base64Body.startsWith(DRM_SIGNATURES.WIDEVINE) ||
|
||||||
|
base64Body.startsWith(DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
(!remoteCDM ||
|
(!remoteCDM ||
|
||||||
remoteCDM.challenge === null ||
|
remoteCDM.challenge === null ||
|
||||||
base64Body !== remoteCDM.challenge) &&
|
base64Body !== remoteCDM.challenge) &&
|
||||||
@ -692,14 +715,15 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
(base64Body.startsWith("CAES") || base64Body.startsWith("PD94")) &&
|
(base64Body.startsWith(DRM_SIGNATURES.WIDEVINE) ||
|
||||||
|
base64Body.startsWith(DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
interceptType == "LICENSE" &&
|
interceptType == "LICENSE" &&
|
||||||
!foundChallengeInBody
|
!foundChallengeInBody
|
||||||
) {
|
) {
|
||||||
foundChallengeInBody = true;
|
foundChallengeInBody = true;
|
||||||
window.postMessage({ type: "__LICENSE_URL__", data: resource }, "*");
|
window.postMessage({ type: "__LICENSE_URL__", data: resource }, "*");
|
||||||
if (!remoteCDM) {
|
if (!remoteCDM) {
|
||||||
if (base64Body.startsWith("CAES")) {
|
if (base64Body.startsWith(DRM_SIGNATURES.WIDEVINE)) {
|
||||||
const {
|
const {
|
||||||
device_type,
|
device_type,
|
||||||
system_id,
|
system_id,
|
||||||
@ -719,7 +743,7 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
remoteCDM.openSession();
|
remoteCDM.openSession();
|
||||||
remoteCDM.getChallenge(foundWidevinePssh);
|
remoteCDM.getChallenge(foundWidevinePssh);
|
||||||
}
|
}
|
||||||
if (base64Body.startsWith("PD94")) {
|
if (base64Body.startsWith(DRM_SIGNATURES.PLAYREADY)) {
|
||||||
const { security_level, host, secret, device_name } =
|
const { security_level, host, secret, device_name } =
|
||||||
playreadyDeviceInfo;
|
playreadyDeviceInfo;
|
||||||
remoteCDM = new remotePlayReadyCDM(
|
remoteCDM = new remotePlayReadyCDM(
|
||||||
@ -743,8 +767,8 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
if (typeof body === "string" && !isJson(body)) {
|
if (typeof body === "string" && !isJson(body)) {
|
||||||
const base64EncodedBody = btoa(body);
|
const base64EncodedBody = btoa(body);
|
||||||
if (
|
if (
|
||||||
(base64EncodedBody.startsWith("CAES") ||
|
(base64EncodedBody.startsWith(DRM_SIGNATURES.WIDEVINE) ||
|
||||||
base64EncodedBody.startsWith("PD94")) &&
|
base64EncodedBody.startsWith(DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
(!remoteCDM ||
|
(!remoteCDM ||
|
||||||
remoteCDM.challenge === null ||
|
remoteCDM.challenge === null ||
|
||||||
base64EncodedBody !== remoteCDM.challenge) &&
|
base64EncodedBody !== remoteCDM.challenge) &&
|
||||||
@ -756,15 +780,15 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
(base64EncodedBody.startsWith("CAES") ||
|
(base64EncodedBody.startsWith(DRM_SIGNATURES.WIDEVINE) ||
|
||||||
base64EncodedBody.startsWith("PD94")) &&
|
base64EncodedBody.startsWith(DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
interceptType == "LICENSE" &&
|
interceptType == "LICENSE" &&
|
||||||
!foundChallengeInBody
|
!foundChallengeInBody
|
||||||
) {
|
) {
|
||||||
foundChallengeInBody = true;
|
foundChallengeInBody = true;
|
||||||
window.postMessage({ type: "__LICENSE_URL__", data: resource }, "*");
|
window.postMessage({ type: "__LICENSE_URL__", data: resource }, "*");
|
||||||
if (!remoteCDM) {
|
if (!remoteCDM) {
|
||||||
if (base64EncodedBody.startsWith("CAES")) {
|
if (base64EncodedBody.startsWith(DRM_SIGNATURES.WIDEVINE)) {
|
||||||
const {
|
const {
|
||||||
device_type,
|
device_type,
|
||||||
system_id,
|
system_id,
|
||||||
@ -784,7 +808,7 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
remoteCDM.openSession();
|
remoteCDM.openSession();
|
||||||
remoteCDM.getChallenge(foundWidevinePssh);
|
remoteCDM.getChallenge(foundWidevinePssh);
|
||||||
}
|
}
|
||||||
if (base64EncodedBody.startsWith("PD94")) {
|
if (base64EncodedBody.startsWith(DRM_SIGNATURES.PLAYREADY)) {
|
||||||
const { security_level, host, secret, device_name } =
|
const { security_level, host, secret, device_name } =
|
||||||
playreadyDeviceInfo;
|
playreadyDeviceInfo;
|
||||||
remoteCDM = new remotePlayReadyCDM(
|
remoteCDM = new remotePlayReadyCDM(
|
||||||
@ -809,8 +833,8 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
const jsonBody = JSON.parse(body);
|
const jsonBody = JSON.parse(body);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(jsonContainsValue(jsonBody, "CAES") ||
|
(jsonContainsValue(jsonBody, DRM_SIGNATURES.WIDEVINE) ||
|
||||||
jsonContainsValue(jsonBody, "PD94")) &&
|
jsonContainsValue(jsonBody, DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
(!remoteCDM || remoteCDM.challenge === null) &&
|
(!remoteCDM || remoteCDM.challenge === null) &&
|
||||||
interceptType === "EME"
|
interceptType === "EME"
|
||||||
) {
|
) {
|
||||||
@ -821,15 +845,15 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(jsonContainsValue(jsonBody, "CAES") ||
|
(jsonContainsValue(jsonBody, DRM_SIGNATURES.WIDEVINE) ||
|
||||||
jsonContainsValue(jsonBody, "PD94")) &&
|
jsonContainsValue(jsonBody, DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
interceptType === "LICENSE" &&
|
interceptType === "LICENSE" &&
|
||||||
!foundChallengeInBody
|
!foundChallengeInBody
|
||||||
) {
|
) {
|
||||||
foundChallengeInBody = true;
|
foundChallengeInBody = true;
|
||||||
window.postMessage({ type: "__LICENSE_URL__", data: resource }, "*");
|
window.postMessage({ type: "__LICENSE_URL__", data: resource }, "*");
|
||||||
if (!remoteCDM) {
|
if (!remoteCDM) {
|
||||||
if (jsonContainsValue(jsonBody, "CAES")) {
|
if (jsonContainsValue(jsonBody, DRM_SIGNATURES.WIDEVINE)) {
|
||||||
const {
|
const {
|
||||||
device_type,
|
device_type,
|
||||||
system_id,
|
system_id,
|
||||||
@ -849,7 +873,7 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
remoteCDM.openSession();
|
remoteCDM.openSession();
|
||||||
remoteCDM.getChallenge(foundWidevinePssh);
|
remoteCDM.getChallenge(foundWidevinePssh);
|
||||||
}
|
}
|
||||||
if (jsonContainsValue(jsonBody, "PD94")) {
|
if (jsonContainsValue(jsonBody, DRM_SIGNATURES.PLAYREADY)) {
|
||||||
const { security_level, host, secret, device_name } =
|
const { security_level, host, secret, device_name } =
|
||||||
playreadyDeviceInfo;
|
playreadyDeviceInfo;
|
||||||
remoteCDM = new remotePlayReadyCDM(
|
remoteCDM = new remotePlayReadyCDM(
|
||||||
@ -894,7 +918,8 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
const buffer = body instanceof Uint8Array ? body : new Uint8Array(body);
|
const buffer = body instanceof Uint8Array ? body : new Uint8Array(body);
|
||||||
const base64Body = window.btoa(String.fromCharCode(...buffer));
|
const base64Body = window.btoa(String.fromCharCode(...buffer));
|
||||||
if (
|
if (
|
||||||
(base64Body.startsWith("CAES") || base64Body.startsWith("PD94")) &&
|
(base64Body.startsWith(DRM_SIGNATURES.WIDEVINE) ||
|
||||||
|
base64Body.startsWith(DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
(!remoteCDM ||
|
(!remoteCDM ||
|
||||||
remoteCDM.challenge === null ||
|
remoteCDM.challenge === null ||
|
||||||
base64Body !== remoteCDM.challenge) &&
|
base64Body !== remoteCDM.challenge) &&
|
||||||
@ -906,14 +931,15 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
(base64Body.startsWith("CAES") || base64Body.startsWith("PD94")) &&
|
(base64Body.startsWith(DRM_SIGNATURES.WIDEVINE) ||
|
||||||
|
base64Body.startsWith(DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
interceptType == "LICENSE" &&
|
interceptType == "LICENSE" &&
|
||||||
!foundChallengeInBody
|
!foundChallengeInBody
|
||||||
) {
|
) {
|
||||||
foundChallengeInBody = true;
|
foundChallengeInBody = true;
|
||||||
window.postMessage({ type: "__LICENSE_URL__", data: this._url }, "*");
|
window.postMessage({ type: "__LICENSE_URL__", data: this._url }, "*");
|
||||||
if (!remoteCDM) {
|
if (!remoteCDM) {
|
||||||
if (base64Body.startsWith("CAES")) {
|
if (base64Body.startsWith(DRM_SIGNATURES.WIDEVINE)) {
|
||||||
const {
|
const {
|
||||||
device_type,
|
device_type,
|
||||||
system_id,
|
system_id,
|
||||||
@ -933,7 +959,7 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
remoteCDM.openSession();
|
remoteCDM.openSession();
|
||||||
remoteCDM.getChallenge(foundWidevinePssh);
|
remoteCDM.getChallenge(foundWidevinePssh);
|
||||||
}
|
}
|
||||||
if (base64Body.startsWith("PD94")) {
|
if (base64Body.startsWith(DRM_SIGNATURES.PLAYREADY)) {
|
||||||
const { security_level, host, secret, device_name } =
|
const { security_level, host, secret, device_name } =
|
||||||
playreadyDeviceInfo;
|
playreadyDeviceInfo;
|
||||||
remoteCDM = new remotePlayReadyCDM(
|
remoteCDM = new remotePlayReadyCDM(
|
||||||
@ -957,8 +983,8 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
if (typeof body === "string" && !isJson(body)) {
|
if (typeof body === "string" && !isJson(body)) {
|
||||||
const base64EncodedBody = btoa(body);
|
const base64EncodedBody = btoa(body);
|
||||||
if (
|
if (
|
||||||
(base64EncodedBody.startsWith("CAES") ||
|
(base64EncodedBody.startsWith(DRM_SIGNATURES.WIDEVINE) ||
|
||||||
base64EncodedBody.startsWith("PD94")) &&
|
base64EncodedBody.startsWith(DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
(!remoteCDM ||
|
(!remoteCDM ||
|
||||||
remoteCDM.challenge === null ||
|
remoteCDM.challenge === null ||
|
||||||
base64EncodedBody !== remoteCDM.challenge) &&
|
base64EncodedBody !== remoteCDM.challenge) &&
|
||||||
@ -970,15 +996,15 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
(base64EncodedBody.startsWith("CAES") ||
|
(base64EncodedBody.startsWith(DRM_SIGNATURES.WIDEVINE) ||
|
||||||
base64EncodedBody.startsWith("PD94")) &&
|
base64EncodedBody.startsWith(DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
interceptType == "LICENSE" &&
|
interceptType == "LICENSE" &&
|
||||||
!foundChallengeInBody
|
!foundChallengeInBody
|
||||||
) {
|
) {
|
||||||
foundChallengeInBody = true;
|
foundChallengeInBody = true;
|
||||||
window.postMessage({ type: "__LICENSE_URL__", data: this._url }, "*");
|
window.postMessage({ type: "__LICENSE_URL__", data: this._url }, "*");
|
||||||
if (!remoteCDM) {
|
if (!remoteCDM) {
|
||||||
if (base64EncodedBody.startsWith("CAES")) {
|
if (base64EncodedBody.startsWith(DRM_SIGNATURES.WIDEVINE)) {
|
||||||
const {
|
const {
|
||||||
device_type,
|
device_type,
|
||||||
system_id,
|
system_id,
|
||||||
@ -998,7 +1024,7 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
remoteCDM.openSession();
|
remoteCDM.openSession();
|
||||||
remoteCDM.getChallenge(foundWidevinePssh);
|
remoteCDM.getChallenge(foundWidevinePssh);
|
||||||
}
|
}
|
||||||
if (base64EncodedBody.startsWith("PD94")) {
|
if (base64EncodedBody.startsWith(DRM_SIGNATURES.PLAYREADY)) {
|
||||||
const { security_level, host, secret, device_name } =
|
const { security_level, host, secret, device_name } =
|
||||||
playreadyDeviceInfo;
|
playreadyDeviceInfo;
|
||||||
remoteCDM = new remotePlayReadyCDM(
|
remoteCDM = new remotePlayReadyCDM(
|
||||||
@ -1023,8 +1049,8 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
const jsonBody = JSON.parse(body);
|
const jsonBody = JSON.parse(body);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(jsonContainsValue(jsonBody, "CAES") ||
|
(jsonContainsValue(jsonBody, DRM_SIGNATURES.WIDEVINE) ||
|
||||||
jsonContainsValue(jsonBody, "PD94")) &&
|
jsonContainsValue(jsonBody, DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
(!remoteCDM || remoteCDM.challenge === null) &&
|
(!remoteCDM || remoteCDM.challenge === null) &&
|
||||||
interceptType === "EME"
|
interceptType === "EME"
|
||||||
) {
|
) {
|
||||||
@ -1035,15 +1061,15 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(jsonContainsValue(jsonBody, "CAES") ||
|
(jsonContainsValue(jsonBody, DRM_SIGNATURES.WIDEVINE) ||
|
||||||
jsonContainsValue(jsonBody, "PD94")) &&
|
jsonContainsValue(jsonBody, DRM_SIGNATURES.PLAYREADY)) &&
|
||||||
interceptType === "LICENSE" &&
|
interceptType === "LICENSE" &&
|
||||||
!foundChallengeInBody
|
!foundChallengeInBody
|
||||||
) {
|
) {
|
||||||
foundChallengeInBody = true;
|
foundChallengeInBody = true;
|
||||||
window.postMessage({ type: "__LICENSE_URL__", data: this._url }, "*");
|
window.postMessage({ type: "__LICENSE_URL__", data: this._url }, "*");
|
||||||
if (!remoteCDM) {
|
if (!remoteCDM) {
|
||||||
if (jsonContainsValue(jsonBody, "CAES")) {
|
if (jsonContainsValue(jsonBody, DRM_SIGNATURES.WIDEVINE)) {
|
||||||
const {
|
const {
|
||||||
device_type,
|
device_type,
|
||||||
system_id,
|
system_id,
|
||||||
@ -1063,7 +1089,7 @@ MediaKeySession.prototype.update = function (response) {
|
|||||||
remoteCDM.openSession();
|
remoteCDM.openSession();
|
||||||
remoteCDM.getChallenge(foundWidevinePssh);
|
remoteCDM.getChallenge(foundWidevinePssh);
|
||||||
}
|
}
|
||||||
if (jsonContainsValue(jsonBody, "PD94")) {
|
if (jsonContainsValue(jsonBody, DRM_SIGNATURES.PLAYREADY)) {
|
||||||
const { security_level, host, secret, device_name } =
|
const { security_level, host, secret, device_name } =
|
||||||
playreadyDeviceInfo;
|
playreadyDeviceInfo;
|
||||||
remoteCDM = new remotePlayReadyCDM(
|
remoteCDM = new remotePlayReadyCDM(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user