ClearKeyUtil.smali
.class final Lcom/google/android/exoplayer2/drm/ClearKeyUtil;
.super Ljava/lang/Object;
.source "ClearKeyUtil.java"
# static fields
.field private static final TAG:Ljava/lang/String; = "ClearKeyUtil"
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 31
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static adjustRequestData([B)[B
.registers 3
.param p0, "request" # [B
.line 40
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x1b
if-lt v0, v1, :cond_7
.line 41
return-object p0
.line 47
:cond_7
invoke-static {p0}, Lcom/google/android/exoplayer2/util/Util;->fromUtf8Bytes([B)Ljava/lang/String;
move-result-object v0
.line 48
.local v0, "requestString":Ljava/lang/String;
invoke-static {v0}, Lcom/google/android/exoplayer2/drm/ClearKeyUtil;->base64ToBase64Url(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/google/android/exoplayer2/util/Util;->getUtf8Bytes(Ljava/lang/String;)[B
move-result-object v1
return-object v1
.end method
.method public static adjustResponseData([B)[B
.registers 7
.param p0, "response" # [B
.line 58
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x1b
if-lt v0, v1, :cond_7
.line 59
return-object p0
.line 65
:cond_7
:try_start_7
new-instance v0, Lorg/json/JSONObject;
invoke-static {p0}, Lcom/google/android/exoplayer2/util/Util;->fromUtf8Bytes([B)Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V
.line 66
.local v0, "responseJson":Lorg/json/JSONObject;
new-instance v1, Ljava/lang/StringBuilder;
const-string/jumbo v2, "{\"keys\":["
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
.line 67
.local v1, "adjustedResponseBuilder":Ljava/lang/StringBuilder;
const-string v2, "keys"
invoke-virtual {v0, v2}, Lorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
move-result-object v2
.line 68
.local v2, "keysArray":Lorg/json/JSONArray;
const/4 v3, 0x0
.local v3, "i":I
:goto_1f
invoke-virtual {v2}, Lorg/json/JSONArray;->length()I
move-result v4
if-ge v3, v4, :cond_6c
.line 69
if-eqz v3, :cond_2c
.line 70
const-string v4, ","
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 72
:cond_2c
invoke-virtual {v2, v3}, Lorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject;
move-result-object v4
.line 73
.local v4, "key":Lorg/json/JSONObject;
const-string/jumbo v5, "{\"k\":\""
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 74
const-string v5, "k"
invoke-virtual {v4, v5}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v5
invoke-static {v5}, Lcom/google/android/exoplayer2/drm/ClearKeyUtil;->base64UrlToBase64(Ljava/lang/String;)Ljava/lang/String;
move-result-object v5
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 75
const-string v5, "\",\"kid\":\""
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 76
const-string v5, "kid"
invoke-virtual {v4, v5}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v5
invoke-static {v5}, Lcom/google/android/exoplayer2/drm/ClearKeyUtil;->base64UrlToBase64(Ljava/lang/String;)Ljava/lang/String;
move-result-object v5
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 77
const-string v5, "\",\"kty\":\""
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 78
const-string v5, "kty"
invoke-virtual {v4, v5}, Lorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v5
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 79
const-string v5, "\"}"
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 68
nop
.end local v4 # "key":Lorg/json/JSONObject;
add-int/lit8 v3, v3, 0x1
goto :goto_1f
.line 81
.end local v3 # "i":I
:cond_6c
const-string v3, "]}"
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 82
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-static {v3}, Lcom/google/android/exoplayer2/util/Util;->getUtf8Bytes(Ljava/lang/String;)[B
move-result-object v3
:try_end_79
.catch Lorg/json/JSONException; {:try_start_7 .. :try_end_79} :catch_7a
return-object v3
.line 83
.end local v0 # "responseJson":Lorg/json/JSONObject;
.end local v1 # "adjustedResponseBuilder":Ljava/lang/StringBuilder;
.end local v2 # "keysArray":Lorg/json/JSONArray;
:catch_7a
move-exception v0
.line 84
.local v0, "e":Lorg/json/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Failed to adjust response data: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
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}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 85
return-object p0
.end method
.method private static base64ToBase64Url(Ljava/lang/String;)Ljava/lang/String;
.registers 4
.param p0, "base64" # Ljava/lang/String;
.line 90
const/16 v0, 0x2b
const/16 v1, 0x2d
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(CC)Ljava/lang/String;
move-result-object v0
const/16 v1, 0x2f
const/16 v2, 0x5f
invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(CC)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method private static base64UrlToBase64(Ljava/lang/String;)Ljava/lang/String;
.registers 4
.param p0, "base64Url" # Ljava/lang/String;
.line 94
const/16 v0, 0x2d
const/16 v1, 0x2b
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(CC)Ljava/lang/String;
move-result-object v0
const/16 v1, 0x5f
const/16 v2, 0x2f
invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(CC)Ljava/lang/String;
move-result-object v0
return-object v0
.end method