VoIPService$7.smali
.class Lim/tpelyyftgw/messenger/voip/VoIPService$7;
.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;->acceptIncomingCall()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 494
iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
iput-object p2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->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 13
.param p1, "response" # Lim/tpelyyftgw/tgnet/TLObject;
.param p2, "error" # Lim/tpelyyftgw/tgnet/TLRPC$TL_error;
.line 497
if-nez p2, :cond_11b
.line 498
move-object v0, p1
check-cast v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;
.line 499
.local v0, "res":Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;
instance-of v1, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_dhConfig;
if-eqz v1, :cond_55
.line 500
iget-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->p:[B
iget v2, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->g:I
invoke-static {v1, v2}, Lim/tpelyyftgw/messenger/Utilities;->isGoodPrime([BI)Z
move-result v1
if-nez v1, :cond_23
.line 503
sget-boolean v1, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z
if-eqz v1, :cond_1d
.line 504
const-string/jumbo v1, "stopping VoIP service, bad prime"
invoke-static {v1}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/String;)V
.line 506
:cond_1d
iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-virtual {v1}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V
.line 507
return-void
.line 510
:cond_23
iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
iget-object v2, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->p:[B
invoke-virtual {v1, v2}, Lim/tpelyyftgw/messenger/MessagesStorage;->setSecretPBytes([B)V
.line 511
iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
iget v2, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->g:I
invoke-virtual {v1, v2}, Lim/tpelyyftgw/messenger/MessagesStorage;->setSecretG(I)V
.line 512
iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
iget v2, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->version:I
invoke-virtual {v1, v2}, Lim/tpelyyftgw/messenger/MessagesStorage;->setLastSecretVersion(I)V
.line 513
iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
iget v1, v1, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I
invoke-static {v1}, Lim/tpelyyftgw/messenger/MessagesStorage;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesStorage;
move-result-object v1
iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/MessagesStorage;->getLastSecretVersion()I
move-result v2
iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v3}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretG()I
move-result v3
iget-object v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v4}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretPBytes()[B
move-result-object v4
invoke-virtual {v1, v2, v3, v4}, Lim/tpelyyftgw/messenger/MessagesStorage;->saveSecretParams(II[B)V
.line 515
:cond_55
const/16 v1, 0x100
new-array v2, v1, [B
.line 516
.local v2, "salt":[B
const/4 v3, 0x0
.local v3, "a":I
:goto_5a
if-ge v3, v1, :cond_73
.line 517
sget-object v4, Lim/tpelyyftgw/messenger/Utilities;->random:Ljava/security/SecureRandom;
invoke-virtual {v4}, Ljava/security/SecureRandom;->nextDouble()D
move-result-wide v4
const-wide/high16 v6, 0x4070000000000000L # 256.0
mul-double v4, v4, v6
double-to-int v4, v4
int-to-byte v4, v4
iget-object v5, v0, Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;->random:[B
aget-byte v5, v5, v3
xor-int/2addr v4, v5
int-to-byte v4, v4
aput-byte v4, v2, v3
.line 516
add-int/lit8 v3, v3, 0x1
goto :goto_5a
.line 519
.end local v3 # "a":I
:cond_73
iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-static {v3}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$600(Lim/tpelyyftgw/messenger/voip/VoIPService;)Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;
move-result-object v3
if-nez v3, :cond_8a
.line 520
sget-boolean v1, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z
if-eqz v1, :cond_84
.line 521
const-string v1, "call is null"
invoke-static {v1}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/String;)V
.line 523
:cond_84
iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-virtual {v1}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V
.line 524
return-void
.line 526
:cond_8a
iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-static {v3, v2}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$702(Lim/tpelyyftgw/messenger/voip/VoIPService;[B)[B
.line 527
iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v3}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretG()I
move-result v3
int-to-long v3, v3
invoke-static {v3, v4}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v3
.line 528
.local v3, "g_b":Ljava/math/BigInteger;
new-instance v4, Ljava/math/BigInteger;
iget-object v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->val$messagesStorage:Lim/tpelyyftgw/messenger/MessagesStorage;
invoke-virtual {v5}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretPBytes()[B
move-result-object v5
const/4 v6, 0x1
invoke-direct {v4, v6, v5}, Ljava/math/BigInteger;-><init>(I[B)V
.line 529
.local v4, "p":Ljava/math/BigInteger;
new-instance v5, Ljava/math/BigInteger;
invoke-direct {v5, v6, v2}, Ljava/math/BigInteger;-><init>(I[B)V
invoke-virtual {v3, v5, v4}, Ljava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v3
.line 530
iget-object v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-static {v5}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$600(Lim/tpelyyftgw/messenger/voip/VoIPService;)Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;
move-result-object v7
iget-object v7, v7, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->g_a_hash:[B
invoke-static {v5, v7}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$902(Lim/tpelyyftgw/messenger/voip/VoIPService;[B)[B
.line 532
invoke-virtual {v3}, Ljava/math/BigInteger;->toByteArray()[B
move-result-object v5
.line 533
.local v5, "g_b_bytes":[B
array-length v7, v5
if-le v7, v1, :cond_c8
.line 534
new-array v7, v1, [B
.line 535
.local v7, "correctedAuth":[B
const/4 v8, 0x0
invoke-static {v5, v6, v7, v8, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 536
move-object v5, v7
.line 539
.end local v7 # "correctedAuth":[B
:cond_c8
new-instance v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;
invoke-direct {v1}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;-><init>()V
.line 540
.local v1, "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;
iput-object v5, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;->g_b:[B
.line 542
new-instance v7, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;
invoke-direct {v7}, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;-><init>()V
iput-object v7, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;
.line 543
iget-object v7, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;
iget-object v8, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-static {v8}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$600(Lim/tpelyyftgw/messenger/voip/VoIPService;)Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;
move-result-object v8
iget-wide v8, v8, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J
iput-wide v8, v7, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->id:J
.line 544
iget-object v7, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;
iget-object v8, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-static {v8}, Lim/tpelyyftgw/messenger/voip/VoIPService;->access$600(Lim/tpelyyftgw/messenger/voip/VoIPService;)Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;
move-result-object v8
iget-wide v8, v8, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J
iput-wide v8, v7, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->access_hash:J
.line 545
new-instance v7, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
invoke-direct {v7}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;-><init>()V
iput-object v7, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
.line 546
iget-object v7, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
iget-object v8, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
iput-boolean v6, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->udp_reflector:Z
iput-boolean v6, v7, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->udp_p2p:Z
.line 547
iget-object v6, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;
const/16 v7, 0x41
iput v7, v6, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->min_layer:I
.line 548
iget-object v6, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;->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 549
iget-object v6, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
iget v6, v6, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I
invoke-static {v6}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;
move-result-object v6
new-instance v7, Lim/tpelyyftgw/messenger/voip/VoIPService$7$1;
invoke-direct {v7, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$7$1;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService$7;)V
const/4 v8, 0x2
invoke-virtual {v6, v1, v7, v8}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;I)I
.line 575
.end local v0 # "res":Lim/tpelyyftgw/tgnet/TLRPC$messages_DhConfig;
.end local v1 # "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_acceptCall;
.end local v2 # "salt":[B
.end local v3 # "g_b":Ljava/math/BigInteger;
.end local v4 # "p":Ljava/math/BigInteger;
.end local v5 # "g_b_bytes":[B
goto :goto_120
.line 577
:cond_11b
iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService$7;->this$0:Lim/tpelyyftgw/messenger/voip/VoIPService;
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V
.line 579
:goto_120
return-void
.end method