ClearKeyUtil.smali
.class final Lcom/google/android/exoplayer2/drm/ClearKeyUtil;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field private static final REQUEST_KIDS_PATTERN:Ljava/util/regex/Pattern;
.field private static final TAG:Ljava/lang/String; = "ClearKeyUtil"
# direct methods
.method static constructor <clinit>()V
.registers 1
const-string v0, "\"kids\":\\[\"(.*?)\"]"
.line 32
invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v0
sput-object v0, Lcom/google/android/exoplayer2/drm/ClearKeyUtil;->REQUEST_KIDS_PATTERN:Ljava/util/regex/Pattern;
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 34
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static adjustRequestData([B)[B
.registers 4
.line 43
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x1b
if-lt v0, v1, :cond_7
return-object p0
.line 50
:cond_7
invoke-static {p0}, Lcom/google/android/exoplayer2/util/Util;->fromUtf8Bytes([B)Ljava/lang/String;
move-result-object v0
.line 51
sget-object v1, Lcom/google/android/exoplayer2/drm/ClearKeyUtil;->REQUEST_KIDS_PATTERN:Ljava/util/regex/Pattern;
invoke-virtual {v1, v0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object v1
.line 52
invoke-virtual {v1}, Ljava/util/regex/Matcher;->find()Z
move-result v2
if-nez v2, :cond_27
.line 53
invoke-static {v0}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
const-string v1, "Failed to adjust request data: "
invoke-virtual {v1, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
const-string v1, "ClearKeyUtil"
invoke-static {v1, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
return-object p0
:cond_27
const/4 p0, 0x1
.line 56
invoke-virtual {v1, p0}, Ljava/util/regex/Matcher;->start(I)I
move-result v2
.line 57
invoke-virtual {v1, p0}, Ljava/util/regex/Matcher;->end(I)I
move-result p0
.line 58
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
.line 59
invoke-static {v1, v2, p0}, Lcom/google/android/exoplayer2/drm/ClearKeyUtil;->base64ToBase64Url(Ljava/lang/StringBuilder;II)V
.line 60
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-static {p0}, Lcom/google/android/exoplayer2/util/Util;->getUtf8Bytes(Ljava/lang/String;)[B
move-result-object p0
return-object p0
.end method
.method public static adjustResponseData([B)[B
.registers 8
const-string v0, "kid"
const-string v1, "k"
.line 70
sget v2, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v3, 0x1b
if-lt v2, v3, :cond_b
return-object p0
.line 76
:cond_b
:try_start_b
new-instance v2, Lorg/json/JSONObject;
invoke-static {p0}, Lcom/google/android/exoplayer2/util/Util;->fromUtf8Bytes([B)Ljava/lang/String;
move-result-object v3
invoke-direct {v2, v3}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V
const-string v3, "keys"
.line 77
invoke-virtual {v2, v3}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
move-result-object v3
const/4 v4, 0x0
.line 78
:goto_1b
invoke-virtual {v3}, Lorg/json/JSONArray;->length()I
move-result v5
if-ge v4, v5, :cond_3e
.line 79
invoke-virtual {v3, v4}, Lorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject;
move-result-object v5
.line 80
invoke-virtual {v5, v1}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v6
invoke-static {v6}, Lcom/google/android/exoplayer2/drm/ClearKeyUtil;->base64UrlToBase64(Ljava/lang/String;)Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v1, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
.line 81
invoke-virtual {v5, v0}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v6
invoke-static {v6}, Lcom/google/android/exoplayer2/drm/ClearKeyUtil;->base64UrlToBase64(Ljava/lang/String;)Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v0, v6}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
add-int/lit8 v4, v4, 0x1
goto :goto_1b
.line 83
:cond_3e
invoke-virtual {v2}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Util;->getUtf8Bytes(Ljava/lang/String;)[B
move-result-object p0
:try_end_46
.catch Lorg/json/JSONException; {:try_start_b .. :try_end_46} :catch_47
return-object p0
:catch_47
move-exception v0
.line 85
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Failed to adjust response data: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-static {p0}, Lcom/google/android/exoplayer2/util/Util;->fromUtf8Bytes([B)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const-string v2, "ClearKeyUtil"
invoke-static {v2, v1, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
return-object p0
.end method
.method private static base64ToBase64Url(Ljava/lang/StringBuilder;II)V
.registers 5
:goto_0
if-ge p1, p2, :cond_1d
.line 92
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->charAt(I)C
move-result v0
const/16 v1, 0x2b
if-eq v0, v1, :cond_15
const/16 v1, 0x2f
if-eq v0, v1, :cond_f
goto :goto_1a
:cond_f
const/16 v0, 0x5f
.line 97
invoke-virtual {p0, p1, v0}, Ljava/lang/StringBuilder;->setCharAt(IC)V
goto :goto_1a
:cond_15
const/16 v0, 0x2d
.line 94
invoke-virtual {p0, p1, v0}, Ljava/lang/StringBuilder;->setCharAt(IC)V
:goto_1a
add-int/lit8 p1, p1, 0x1
goto :goto_0
:cond_1d
return-void
.end method
.method private static base64UrlToBase64(Ljava/lang/String;)Ljava/lang/String;
.registers 3
const/16 v0, 0x2d
const/16 v1, 0x2b
.line 106
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(CC)Ljava/lang/String;
move-result-object p0
const/16 v0, 0x5f
const/16 v1, 0x2f
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(CC)Ljava/lang/String;
move-result-object p0
return-object p0
.end method