Step Record v1.1.5版本的 MD5 值为:5797275f89198878d2f00ee92d534382
以下内容为反编译后的 HSzK.java 源代码,内容仅作参考
package com.chartboost.heliumsdk.impl;
import android.annotation.SuppressLint;
import android.media.DeniedByServerException;
import android.media.MediaCrypto;
import android.media.MediaCryptoException;
import android.media.MediaDrm;
import android.media.MediaDrmException;
import android.media.NotProvisionedException;
import android.media.UnsupportedSchemeException;
import android.media.metrics.LogSessionId;
import android.text.TextUtils;
import androidx.annotation.DoNotInline;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import com.chartboost.heliumsdk.impl.HK1H;
import com.chartboost.heliumsdk.impl.HK1Sz;
import com.chartboost.heliumsdk.impl.HSSzKH1;
import com.chartboost.heliumsdk.impl.SHS1K;
import com.chartboost.heliumsdk.impl.ztzHHSttS;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@RequiresApi(18)
public final class HSzK implements HK1H {
public static final K1zS1t1 t1S1zKHK = new K1zS1t1();
public int HtSH;
public final UUID SKHKzK;
public final MediaDrm t1H1KH1K;
@RequiresApi(31)
public static class SKHKzK {
@DoNotInline
public static boolean SKHKzK(MediaDrm mediaDrm, String str) {
boolean requiresSecureDecoder;
requiresSecureDecoder = mediaDrm.requiresSecureDecoder(str);
return requiresSecureDecoder;
}
@DoNotInline
public static void t1H1KH1K(MediaDrm mediaDrm, byte[] bArr, ztzHHSttS ztzhhstts) {
LogSessionId logSessionId;
boolean equals;
MediaDrm.PlaybackComponent playbackComponent;
ztzHHSttS.SKHKzK sKHKzK = ztzhhstts.SKHKzK;
sKHKzK.getClass();
logSessionId = LogSessionId.LOG_SESSION_ID_NONE;
LogSessionId logSessionId2 = sKHKzK.SKHKzK;
equals = logSessionId2.equals(logSessionId);
if (!equals) {
playbackComponent = mediaDrm.getPlaybackComponent(bArr);
playbackComponent.getClass();
playbackComponent.setLogSessionId(logSessionId2);
}
}
}
public HSzK(UUID uuid) throws UnsupportedSchemeException {
uuid.getClass();
UUID uuid2 = tS.t1H1KH1K;
KK1z.tz(!uuid2.equals(uuid), "Use C.CLEARKEY_UUID instead");
this.SKHKzK = uuid;
MediaDrm mediaDrm = new MediaDrm((zKStH.SKHKzK >= 27 || !tS.HtSH.equals(uuid)) ? uuid : uuid2);
this.t1H1KH1K = mediaDrm;
this.HtSH = 1;
if (tS.t1S1zKHK.equals(uuid) && "ASUS_Z00AD".equals(zKStH.t1S1zKHK)) {
mediaDrm.setPropertyString("securityLevel", "L3");
}
}
@Override
public final S1KKSHS HtSH(byte[] bArr) throws MediaCryptoException {
boolean z;
int i = zKStH.SKHKzK;
UUID uuid = this.SKHKzK;
if (i < 21 && tS.t1S1zKHK.equals(uuid) && "L3".equals(this.t1H1KH1K.getPropertyString("securityLevel"))) {
z = true;
} else {
z = false;
}
if (i < 27 && tS.HtSH.equals(uuid)) {
uuid = tS.t1H1KH1K;
}
return new SzKSHzKt(uuid, bArr, z);
}
@Override
public final void SKHKzK(@Nullable final SHS1K.SKHKzK sKHKzK) {
this.t1H1KH1K.setOnEventListener(new MediaDrm.OnEventListener() {
@Override
public final void onEvent(MediaDrm mediaDrm, byte[] bArr, int i, int i2, byte[] bArr2) {
HSzK hSzK = HSzK.this;
HK1H.t1H1KH1K t1h1kh1k = sKHKzK;
hSzK.getClass();
SHS1K.t1H1KH1K t1h1kh1k2 = SHS1K.this.tHKtz;
t1h1kh1k2.getClass();
t1h1kh1k2.obtainMessage(i, bArr).sendToTarget();
}
});
}
@Override
public final void closeSession(byte[] bArr) {
this.t1H1KH1K.closeSession(bArr);
}
@Override
public final HK1H.t1S1zKHK getProvisionRequest() {
MediaDrm.ProvisionRequest provisionRequest = this.t1H1KH1K.getProvisionRequest();
return new HK1H.t1S1zKHK(provisionRequest.getData(), provisionRequest.getDefaultUrl());
}
@Override
public final byte[] openSession() throws MediaDrmException {
return this.t1H1KH1K.openSession();
}
@Override
@Nullable
public final byte[] provideKeyResponse(byte[] bArr, byte[] bArr2) throws NotProvisionedException, DeniedByServerException {
if (tS.HtSH.equals(this.SKHKzK) && zKStH.SKHKzK < 27) {
try {
JSONObject jSONObject = new JSONObject(new String(bArr2, KSSHH.HtSH));
StringBuilder sb = new StringBuilder("{\"keys\":[");
JSONArray jSONArray = jSONObject.getJSONArray("keys");
for (int i = 0; i < jSONArray.length(); i++) {
if (i != 0) {
sb.append(",");
}
JSONObject jSONObject2 = jSONArray.getJSONObject(i);
sb.append("{\"k\":\"");
sb.append(jSONObject2.getString("k").replace('-', '+').replace('_', '/'));
sb.append("\",\"kid\":\"");
sb.append(jSONObject2.getString("kid").replace('-', '+').replace('_', '/'));
sb.append("\",\"kty\":\"");
sb.append(jSONObject2.getString("kty"));
sb.append("\"}");
}
sb.append("]}");
bArr2 = zKStH.Hz1HtH(sb.toString());
} catch (JSONException e) {
SzHSHH.t1S1zKHK("ClearKeyUtil", "Failed to adjust response data: ".concat(new String(bArr2, KSSHH.HtSH)), e);
}
}
return this.t1H1KH1K.provideKeyResponse(bArr, bArr2);
}
@Override
public final void provideProvisionResponse(byte[] bArr) throws DeniedByServerException {
this.t1H1KH1K.provideProvisionResponse(bArr);
}
@Override
public final Map<String, String> queryKeyStatus(byte[] bArr) {
return this.t1H1KH1K.queryKeyStatus(bArr);
}
@Override
public final synchronized void release() {
int i = this.HtSH - 1;
this.HtSH = i;
if (i == 0) {
this.t1H1KH1K.release();
}
}
@Override
public final void restoreKeys(byte[] bArr, byte[] bArr2) {
this.t1H1KH1K.restoreKeys(bArr, bArr2);
}
@Override
public final int t1H1KH1K() {
return 2;
}
@Override
@SuppressLint({"WrongConstant"})
public final HK1H.SKHKzK t1S1zKHK(byte[] bArr, @Nullable List<HSSzKH1.t1H1KH1K> list, int i, @Nullable HashMap<String, String> hashMap) throws NotProvisionedException {
HSSzKH1.t1H1KH1K t1h1kh1k;
byte[] bArr2;
String str;
int i2;
boolean z;
boolean z2;
int i3;
UUID uuid = this.SKHKzK;
if (list != null) {
if (!tS.t1S1zKHK.equals(uuid)) {
t1h1kh1k = list.get(0);
} else {
if (zKStH.SKHKzK >= 28 && list.size() > 1) {
HSSzKH1.t1H1KH1K t1h1kh1k2 = list.get(0);
int i4 = 0;
for (int i5 = 0; i5 < list.size(); i5++) {
HSSzKH1.t1H1KH1K t1h1kh1k3 = list.get(i5);
byte[] bArr3 = t1h1kh1k3.HKS;
bArr3.getClass();
if (zKStH.SKHKzK(t1h1kh1k3.zS, t1h1kh1k2.zS) && zKStH.SKHKzK(t1h1kh1k3.HKzHtzz, t1h1kh1k2.HKzHtzz)) {
if (HK1Sz.SKHKzK(bArr3) != null) {
z2 = true;
} else {
z2 = false;
}
if (z2) {
i4 += bArr3.length;
}
}
z = false;
}
z = true;
if (z) {
byte[] bArr4 = new byte[i4];
int i6 = 0;
for (int i7 = 0; i7 < list.size(); i7++) {
byte[] bArr5 = list.get(i7).HKS;
bArr5.getClass();
int length = bArr5.length;
System.arraycopy(bArr5, 0, bArr4, i6, length);
i6 += length;
}
t1h1kh1k = new HSSzKH1.t1H1KH1K(t1h1kh1k2.KtH1t1, t1h1kh1k2.HKzHtzz, t1h1kh1k2.zS, bArr4);
}
}
for (int i8 = 0; i8 < list.size(); i8++) {
HSSzKH1.t1H1KH1K t1h1kh1k4 = list.get(i8);
byte[] bArr6 = t1h1kh1k4.HKS;
bArr6.getClass();
HK1Sz.SKHKzK SKHKzK2 = HK1Sz.SKHKzK(bArr6);
if (SKHKzK2 == null) {
i2 = -1;
} else {
i2 = SKHKzK2.t1H1KH1K;
}
int i9 = zKStH.SKHKzK;
if ((i9 < 23 && i2 == 0) || (i9 >= 23 && i2 == 1)) {
t1h1kh1k = t1h1kh1k4;
break;
}
}
t1h1kh1k = list.get(0);
}
byte[] bArr7 = t1h1kh1k.HKS;
bArr7.getClass();
UUID uuid2 = tS.tz;
if (uuid2.equals(uuid)) {
byte[] t1H1KH1K = HK1Sz.t1H1KH1K(bArr7, uuid);
if (t1H1KH1K != null) {
bArr7 = t1H1KH1K;
}
S11H1Htz1 s11H1Htz1 = new S11H1Htz1(bArr7);
int HKzHtzz = s11H1Htz1.HKzHtzz();
short HKS = s11H1Htz1.HKS();
short HKS2 = s11H1Htz1.HKS();
if (HKS == 1 && HKS2 == 1) {
short HKS3 = s11H1Htz1.HKS();
Charset charset = KSSHH.tz;
String tHH1Kt = s11H1Htz1.tHH1Kt(HKS3, charset);
if (!tHH1Kt.contains("<LA_URL>")) {
int indexOf = tHH1Kt.indexOf("</DATA>");
if (indexOf == -1) {
SzHSHH.tzttS1SS1("FrameworkMediaDrm", "Could not find the </DATA> tag. Skipping LA_URL workaround.");
}
String str2 = tHH1Kt.substring(0, indexOf) + "<LA_URL>https://x</LA_URL>" + tHH1Kt.substring(indexOf);
int i10 = HKzHtzz + 52;
ByteBuffer allocate = ByteBuffer.allocate(i10);
allocate.order(ByteOrder.LITTLE_ENDIAN);
allocate.putInt(i10);
allocate.putShort(HKS);
allocate.putShort(HKS2);
allocate.putShort((short) (str2.length() * 2));
allocate.put(str2.getBytes(charset));
bArr7 = allocate.array();
}
} else {
SzHSHH.tz("FrameworkMediaDrm", "Unexpected record count or type. Skipping LA_URL workaround.");
}
if (bArr7 != null) {
i3 = bArr7.length;
} else {
i3 = 0;
}
int i11 = i3 + 32;
ByteBuffer allocate2 = ByteBuffer.allocate(i11);
allocate2.putInt(i11);
allocate2.putInt(1886614376);
allocate2.putInt(0);
allocate2.putLong(uuid2.getMostSignificantBits());
allocate2.putLong(uuid2.getLeastSignificantBits());
if (bArr7 != null && bArr7.length != 0) {
allocate2.putInt(bArr7.length);
allocate2.put(bArr7);
}
bArr7 = allocate2.array();
}
int i12 = zKStH.SKHKzK;
if (i12 >= 23 || !tS.t1S1zKHK.equals(uuid)) {
if (uuid2.equals(uuid) && "Amazon".equals(zKStH.HtSH)) {
String str3 = zKStH.t1S1zKHK;
if (!"AFTB".equals(str3)) {
if (!"AFTS".equals(str3)) {
if (!"AFTM".equals(str3)) {
}
}
}
}
str = t1h1kh1k.zS;
if (i12 < 26 && tS.HtSH.equals(uuid) && ("video/mp4".equals(str) || "audio/mp4".equals(str))) {
str = "cenc";
}
bArr2 = bArr7;
}
byte[] t1H1KH1K2 = HK1Sz.t1H1KH1K(bArr7, uuid);
if (t1H1KH1K2 != null) {
bArr7 = t1H1KH1K2;
}
str = t1h1kh1k.zS;
if (i12 < 26) {
str = "cenc";
}
bArr2 = bArr7;
} else {
t1h1kh1k = null;
bArr2 = null;
str = null;
}
MediaDrm.KeyRequest keyRequest = this.t1H1KH1K.getKeyRequest(bArr, bArr2, str, i, hashMap);
byte[] data = keyRequest.getData();
if (tS.HtSH.equals(uuid) && zKStH.SKHKzK < 27) {
data = zKStH.Hz1HtH(new String(data, KSSHH.HtSH).replace('+', '-').replace('/', '_'));
}
String defaultUrl = keyRequest.getDefaultUrl();
if ("<LA_URL>https://x</LA_URL>".equals(defaultUrl) || (zKStH.SKHKzK == 33 && "https://default.url".equals(defaultUrl))) {
defaultUrl = "";
}
if (TextUtils.isEmpty(defaultUrl) && t1h1kh1k != null) {
String str4 = t1h1kh1k.HKzHtzz;
if (!TextUtils.isEmpty(str4)) {
defaultUrl = str4;
}
}
if (zKStH.SKHKzK >= 23) {
keyRequest.getRequestType();
}
return new HK1H.SKHKzK(data, defaultUrl);
}
@Override
public final void tz(byte[] bArr, ztzHHSttS ztzhhstts) {
if (zKStH.SKHKzK >= 31) {
try {
SKHKzK.t1H1KH1K(this.t1H1KH1K, bArr, ztzhhstts);
} catch (UnsupportedOperationException unused) {
SzHSHH.tzttS1SS1("FrameworkMediaDrm", "setLogSessionId failed.");
}
}
}
@Override
public final boolean tzttS1SS1(String str, byte[] bArr) {
if (zKStH.SKHKzK >= 31) {
return SKHKzK.SKHKzK(this.t1H1KH1K, str);
}
try {
MediaCrypto mediaCrypto = new MediaCrypto(this.SKHKzK, bArr);
try {
return mediaCrypto.requiresSecureDecoderComponent(str);
} finally {
mediaCrypto.release();
}
} catch (MediaCryptoException unused) {
return true;
}
}
}