VoIPService$4.smali
.class Lim/tpelyyftgw/messenger/voip/VoIPService$4;
.super Ljava/lang/Object;
.source "VoIPService.java"
# interfaces
.implements Lim/tpelyyftgw/tgnet/RequestDelegate;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lim/tpelyyftgw/messenger/voip/VoIPService;->startOutgoingCall()V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
.field final synthetic val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method constructor <init>(Lim/tpelyyftgw/messenger/voip/VoIPService;Lim/tpelyyftgw/messenger/MessagesStorage;)V
.registers 3
.param p1, "this$0" # Lim/tpelyyftgw/messenger/voip/VoIPService;
.line 259
iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
iput-object p2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/TLRPC$TL_error;)V
.registers 12
.param p1, "response" # Lim/tpelyyftgw/tgnet/TLObject;
.param p2, "error" # Lim/tpelyyftgw/tgnet/TLRPC$TL_error;
.line 262
iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
const/4 v1, 0x0
invoke-static {v0, v1}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$202(Lim/tpelyyftgw/messenger/voip/VoIPService;I)I
.line 263
iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-static {v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$300(Lim/tpelyyftgw/messenger/voip/VoIPService;)Z
move-result v0
if-eqz v0, :cond_14
.line 264
iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callEnded()V
.line 265
return-void
.line 267
:cond_14
if-nez p2, :cond_fc
.line 268
move-object v0, p1
check-cast v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;
.line 269
.local v0, "res":Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;
instance-of v2, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_dhConfig;
if-eqz v2, :cond_57
.line 270
iget-object v2, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->p:[B
iget v3, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->g:I
invoke-static {v2, v3}, Lim/tpelyyftgw/messenger/Utilities;->isGoodPrime([BI)Z
move-result v2
if-nez v2, :cond_2d
.line 271
iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-virtual {v1}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V
.line 272
return-void
.line 274
:cond_2d
iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
iget-object v3, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->p:[B
invoke-virtual {v2, v3}, Lim/tpelyyftgw/messenger/MessagesStorage;->setSecretPBytes([B)V
.line 275
iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
iget v3, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->g:I
invoke-virtual {v2, v3}, Lim/tpelyyftgw/messenger/MessagesStorage;->setSecretG(I)V
.line 276
iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
iget v3, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->version:I
invoke-virtual {v2, v3}, Lim/tpelyyftgw/messenger/MessagesStorage;->setLastSecretVersion(I)V
.line 277
iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/MessagesStorage;->getLastSecretVersion()I
move-result v3
iget-object v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v4}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretG()I
move-result v4
iget-object v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v5}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretPBytes()[B
move-result-object v5
invoke-virtual {v2, v3, v4, v5}, Lim/tpelyyftgw/messenger/MessagesStorage;->saveSecretParams(II[B)V
.line 279
:cond_57
const/16 v2, 0x100
new-array v3, v2, [B
.line 280
.local v3, "salt":[B
const/4 v4, 0x0
.local v4, "a":I
:goto_5c
if-ge v4, v2, :cond_75
.line 281
sget-object v5, Lim/tpelyyftgw/messenger/Utilities;->random:Ljava/security/SecureRandom;
invoke-virtual {v5}, Ljava/security/SecureRandom;->nextDouble()D
move-result-wide v5
const-wide/high16 v7, 0x4070000000000000L # 256.0
mul-double v5, v5, v7
double-to-int v5, v5
int-to-byte v5, v5
iget-object v6, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->random:[B
aget-byte v6, v6, v4
xor-int/2addr v5, v6
int-to-byte v5, v5
aput-byte v5, v3, v4
.line 280
add-int/lit8 v4, v4, 0x1
goto :goto_5c
.line 284
.end local v4 # "a":I
:cond_75
iget-object v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v4}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretG()I
move-result v4
int-to-long v4, v4
invoke-static {v4, v5}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v4
.line 285
.local v4, "i_g_a":Ljava/math/BigInteger;
new-instance v5, Ljava/math/BigInteger;
const/4 v6, 0x1
invoke-direct {v5, v6, v3}, Ljava/math/BigInteger;-><init>(I[B)V
new-instance v7, Ljava/math/BigInteger;
iget-object v8, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v8}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretPBytes()[B
move-result-object v8
invoke-direct {v7, v6, v8}, Ljava/math/BigInteger;-><init>(I[B)V
invoke-virtual {v4, v5, v7}, Ljava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v4
.line 286
invoke-virtual {v4}, Ljava/math/BigInteger;->toByteArray()[B
move-result-object v5
.line 287
.local v5, "g_a":[B
array-length v7, v5
if-le v7, v2, :cond_a2
.line 288
new-array v7, v2, [B
.line 289
.local v7, "correctedAuth":[B
invoke-static {v5, v6, v7, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 290
move-object v5, v7
.line 293
.end local v7 # "correctedAuth":[B
:cond_a2
new-instance v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;
invoke-direct {v2}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;-><init>()V
.line 294
.local v2, "reqCall":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;
iget-object v7, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
iget v7, v7, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I
invoke-static {v7}, Lim/tpelyyftgw/messenger/MessagesController;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesController;
move-result-object v7
iget-object v8, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-static {v8}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$400(Lim/tpelyyftgw/messenger/voip/VoIPService;)Lim/tpelyyftgw/tgnet/TLRPC$User;
move-result-object v8
invoke-virtual {v7, v8}, Lim/tpelyyftgw/messenger/MessagesController;->getInputUser(Lim/tpelyyftgw/tgnet/TLRPC$User;)Lim/tpelyyftgw/tgnet/TLRPC$InputUser;
move-result-object v7
iput-object v7, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;->user_id:Lim/tpelyyftgw/tgnet/TLRPC$InputUser;
.line 295
new-instance v7, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
invoke-direct {v7}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;-><init>()V
iput-object v7, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
.line 296
iget-object v7, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
iput-boolean v6, v7, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->udp_p2p:Z
.line 297
iget-object v7, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
iput-boolean v6, v7, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->udp_reflector:Z
.line 298
iget-object v6, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
const/16 v7, 0x41
iput v7, v6, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->min_layer:I
.line 299
iget-object v6, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
sget v7, Lim/tpelyyftgw/messenger/voip/VoIPService;->CALL_MAX_LAYER:I
iput v7, v6, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->max_layer:I
.line 300
iget-object v6, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-static {v6, v5}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$502(Lim/tpelyyftgw/messenger/voip/VoIPService;[B)[B
.line 301
array-length v6, v5
invoke-static {v5, v1, v6}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([BII)[B
move-result-object v1
iput-object v1, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;->g_a_hash:[B
.line 302
sget-object v1, Lim/tpelyyftgw/messenger/Utilities;->random:Ljava/security/SecureRandom;
invoke-virtual {v1}, Ljava/security/SecureRandom;->nextInt()I
move-result v1
iput v1, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;->random_id:I
.line 304
iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
iget v1, v1, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I
invoke-static {v1}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;
move-result-object v1
new-instance v6, Lim/tpelyyftgw/messenger/voip/VoIPService$4$1;
invoke-direct {v6, p0, v3}, Lim/tpelyyftgw/messenger/voip/VoIPService$4$1;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService$4;[B)V
const/4 v7, 0x2
invoke-virtual {v1, v2, v6, v7}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;I)I
.line 372
.end local v0 # "res":Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;
.end local v2 # "reqCall":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_requestCall;
.end local v3 # "salt":[B
.end local v4 # "i_g_a":Ljava/math/BigInteger;
.end local v5 # "g_a":[B
goto :goto_119
.line 373
:cond_fc
sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z
if-eqz v0, :cond_114
.line 374
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Error on getDhConfig "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/String;)V
.line 376
:cond_114
iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$4;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V
.line 378
:goto_119
return-void
.end method