j.smali

.class public Lcom/subgraph/orchid/circuits/hs/j;
.super Ljava/lang/Object;
.source "HiddenServiceManager.java"


# static fields
.field private static final logger:Ljava/util/logging/Logger;


# instance fields
.field private final bBL:Lcom/subgraph/orchid/circuits/g;

.field private final bBr:Lcom/subgraph/orchid/TorConfig;

.field private final bBs:Lcom/subgraph/orchid/j;

.field private final bEA:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map",
            "<",
            "Ljava/lang/String;",
            "Lcom/subgraph/orchid/circuits/hs/i;",
            ">;"
        }
    .end annotation
.end field

.field private final bEB:Lcom/subgraph/orchid/circuits/hs/h;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 22
    const-class v0, Lcom/subgraph/orchid/circuits/hs/j;

    invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;

    move-result-object v0

    sput-object v0, Lcom/subgraph/orchid/circuits/hs/j;->logger:Ljava/util/logging/Logger;

    return-void
.end method

.method public constructor <init>(Lcom/subgraph/orchid/TorConfig;Lcom/subgraph/orchid/j;Lcom/subgraph/orchid/circuits/g;)V
    .registers 5

    .prologue
    .line 30
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 31
    iput-object p1, p0, Lcom/subgraph/orchid/circuits/hs/j;->bBr:Lcom/subgraph/orchid/TorConfig;

    .line 32
    iput-object p2, p0, Lcom/subgraph/orchid/circuits/hs/j;->bBs:Lcom/subgraph/orchid/j;

    .line 33
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lcom/subgraph/orchid/circuits/hs/j;->bEA:Ljava/util/Map;

    .line 34
    new-instance v0, Lcom/subgraph/orchid/circuits/hs/h;

    invoke-direct {v0, p2}, Lcom/subgraph/orchid/circuits/hs/h;-><init>(Lcom/subgraph/orchid/j;)V

    iput-object v0, p0, Lcom/subgraph/orchid/circuits/hs/j;->bEB:Lcom/subgraph/orchid/circuits/hs/h;

    .line 35
    iput-object p3, p0, Lcom/subgraph/orchid/circuits/hs/j;->bBL:Lcom/subgraph/orchid/circuits/g;

    .line 36
    return-void
.end method

.method private a(Lcom/subgraph/orchid/circuits/hs/i;Lcom/subgraph/orchid/circuits/hs/c;)Lcom/subgraph/orchid/q;
    .registers 6

    .prologue
    .line 114
    new-instance v0, Lcom/subgraph/orchid/circuits/hs/n;

    iget-object v1, p0, Lcom/subgraph/orchid/circuits/hs/j;->bBs:Lcom/subgraph/orchid/j;

    iget-object v2, p0, Lcom/subgraph/orchid/circuits/hs/j;->bBL:Lcom/subgraph/orchid/circuits/g;

    invoke-direct {v0, v1, v2, p1, p2}, Lcom/subgraph/orchid/circuits/hs/n;-><init>(Lcom/subgraph/orchid/j;Lcom/subgraph/orchid/circuits/g;Lcom/subgraph/orchid/circuits/hs/i;Lcom/subgraph/orchid/circuits/hs/c;)V

    .line 116
    :try_start_9
    invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/hs/n;->Ly()Lcom/subgraph/orchid/q;
    :try_end_c
    .catch Ljava/lang/Exception; {:try_start_9 .. :try_end_c} :catch_e

    move-result-object v0

    .line 118
    :goto_d
    return-object v0

    :catch_e
    move-exception v0

    const/4 v0, 0x0

    goto :goto_d
.end method

.method private declared-synchronized b(Lcom/subgraph/orchid/circuits/hs/i;)Lcom/subgraph/orchid/q;
    .registers 8

    .prologue
    const/4 v0, 0x1

    const/4 v1, 0x0

    .line 50
    monitor-enter p0

    .line 1062
    :try_start_3
    iget-object v2, p1, Lcom/subgraph/orchid/circuits/hs/i;->bEz:Lcom/subgraph/orchid/q;

    .line 50
    if-nez v2, :cond_be

    .line 3050
    iget-object v2, p1, Lcom/subgraph/orchid/circuits/hs/i;->bEp:Lcom/subgraph/orchid/circuits/hs/c;

    if-eqz v2, :cond_52

    iget-object v2, p1, Lcom/subgraph/orchid/circuits/hs/i;->bEp:Lcom/subgraph/orchid/circuits/hs/c;

    .line 3079
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    .line 3080
    iget-object v2, v2, Lcom/subgraph/orchid/circuits/hs/c;->bEf:Lcom/subgraph/orchid/d/f;

    .line 4030
    iget-object v2, v2, Lcom/subgraph/orchid/d/f;->date:Ljava/util/Date;

    invoke-virtual {v2}, Ljava/util/Date;->getTime()J

    move-result-wide v2

    .line 3081
    sub-long v2, v4, v2

    const-wide/32 v4, 0x5265c00

    cmp-long v2, v2, v4

    if-lez v2, :cond_50

    move v2, v0

    .line 3050
    :goto_23
    if-nez v2, :cond_52

    .line 2073
    :goto_25
    if-eqz v0, :cond_54

    .line 4054
    iget-object v0, p1, Lcom/subgraph/orchid/circuits/hs/i;->bEp:Lcom/subgraph/orchid/circuits/hs/c;

    .line 2063
    :goto_29
    const/4 v2, 0x5

    if-ge v1, v2, :cond_a3

    .line 2064
    invoke-direct {p0, p1, v0}, Lcom/subgraph/orchid/circuits/hs/j;->a(Lcom/subgraph/orchid/circuits/hs/i;Lcom/subgraph/orchid/circuits/hs/c;)Lcom/subgraph/orchid/q;

    move-result-object v2

    .line 2065
    if-eqz v2, :cond_a0

    .line 52
    if-nez v2, :cond_bc

    .line 53
    new-instance v0, Lcom/subgraph/orchid/OpenFailedException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Failed to open circuit to "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {p1}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Lcom/subgraph/orchid/OpenFailedException;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_4d
    .catchall {:try_start_3 .. :try_end_4d} :catchall_4d

    .line 50
    :catchall_4d
    move-exception v0

    monitor-exit p0

    throw v0

    :cond_50
    move v2, v1

    .line 3081
    goto :goto_23

    :cond_52
    move v0, v1

    .line 3050
    goto :goto_25

    .line 4087
    :cond_54
    :try_start_54
    sget-object v0, Lcom/subgraph/orchid/circuits/hs/j;->logger:Ljava/util/logging/Logger;

    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "Downloading HS descriptor for "

    invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {p1}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v0, v2}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    .line 4088
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/hs/j;->bEB:Lcom/subgraph/orchid/circuits/hs/h;

    invoke-virtual {v0, p1}, Lcom/subgraph/orchid/circuits/hs/h;->a(Lcom/subgraph/orchid/circuits/hs/i;)Ljava/util/List;

    move-result-object v0

    .line 4089
    new-instance v2, Lcom/subgraph/orchid/circuits/hs/e;

    iget-object v3, p0, Lcom/subgraph/orchid/circuits/hs/j;->bBL:Lcom/subgraph/orchid/circuits/g;

    invoke-direct {v2, p1, v3, v0}, Lcom/subgraph/orchid/circuits/hs/e;-><init>(Lcom/subgraph/orchid/circuits/hs/i;Lcom/subgraph/orchid/circuits/g;Ljava/util/List;)V

    .line 4090
    invoke-virtual {v2}, Lcom/subgraph/orchid/circuits/hs/e;->Lq()Lcom/subgraph/orchid/circuits/hs/c;

    move-result-object v0

    .line 2077
    if-nez v0, :cond_9d

    .line 2078
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "Failed to download HS descriptor for "

    invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {p1}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    .line 2079
    sget-object v1, Lcom/subgraph/orchid/circuits/hs/j;->logger:Ljava/util/logging/Logger;

    invoke-virtual {v1, v0}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V

    .line 2080
    new-instance v1, Lcom/subgraph/orchid/OpenFailedException;

    invoke-direct {v1, v0}, Lcom/subgraph/orchid/OpenFailedException;-><init>(Ljava/lang/String;)V

    throw v1

    .line 5058
    :cond_9d
    iput-object v0, p1, Lcom/subgraph/orchid/circuits/hs/i;->bEp:Lcom/subgraph/orchid/circuits/hs/c;

    goto :goto_29

    .line 2063
    :cond_a0
    add-int/lit8 v1, v1, 0x1

    goto :goto_29

    .line 2069
    :cond_a3
    new-instance v0, Lcom/subgraph/orchid/OpenFailedException;

    new-instance v1, Ljava/lang/StringBuilder;

    const-string v2, "Failed to open circuit to "

    invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {p1}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Lcom/subgraph/orchid/OpenFailedException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 5066
    :cond_bc
    iput-object v2, p1, Lcom/subgraph/orchid/circuits/hs/i;->bEz:Lcom/subgraph/orchid/q;

    .line 6062
    :cond_be
    iget-object v0, p1, Lcom/subgraph/orchid/circuits/hs/i;->bEz:Lcom/subgraph/orchid/q;
    :try_end_c0
    .catchall {:try_start_54 .. :try_end_c0} :catchall_4d

    .line 57
    monitor-exit p0

    return-object v0
.end method

.method private gx(Ljava/lang/String;)Lcom/subgraph/orchid/circuits/hs/i;
    .registers 5

    .prologue
    .line 94
    const-string v0, ".onion"

    invoke-virtual {p1, v0}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_13

    const/4 v0, 0x0

    invoke-virtual {p1}, Ljava/lang/String;->length()I

    move-result v1

    add-int/lit8 v1, v1, -0x6

    invoke-virtual {p1, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object p1

    .line 95
    :cond_13
    iget-object v1, p0, Lcom/subgraph/orchid/circuits/hs/j;->bEA:Ljava/util/Map;

    monitor-enter v1

    .line 96
    :try_start_16
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/hs/j;->bEA:Ljava/util/Map;

    invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_27

    .line 97
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/hs/j;->bEA:Ljava/util/Map;

    invoke-direct {p0, p1}, Lcom/subgraph/orchid/circuits/hs/j;->gy(Ljava/lang/String;)Lcom/subgraph/orchid/circuits/hs/i;

    move-result-object v2

    invoke-interface {v0, p1, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 99
    :cond_27
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/hs/j;->bEA:Ljava/util/Map;

    invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/subgraph/orchid/circuits/hs/i;

    monitor-exit v1

    return-object v0

    .line 100
    :catchall_31
    move-exception v0

    monitor-exit v1
    :try_end_33
    .catchall {:try_start_16 .. :try_end_33} :catchall_31

    throw v0
.end method

.method private gy(Ljava/lang/String;)Lcom/subgraph/orchid/circuits/hs/i;
    .registers 7

    .prologue
    .line 105
    .line 7023
    :try_start_0
    const-string v0, ".onion"

    invoke-virtual {p1, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I

    move-result v0

    .line 7024
    const/4 v1, -0x1

    if-ne v0, v1, :cond_15

    .line 7025
    invoke-static {p1}, Lcom/subgraph/orchid/d/b;->gL(Ljava/lang/String;)[B

    move-result-object v0

    .line 106
    :goto_d
    new-instance v1, Lcom/subgraph/orchid/circuits/hs/i;

    iget-object v2, p0, Lcom/subgraph/orchid/circuits/hs/j;->bBr:Lcom/subgraph/orchid/TorConfig;

    invoke-direct {v1, v2, v0}, Lcom/subgraph/orchid/circuits/hs/i;-><init>(Lcom/subgraph/orchid/TorConfig;[B)V

    return-object v1

    .line 7027
    :cond_15
    const/4 v1, 0x0

    invoke-virtual {p1, v1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Lcom/subgraph/orchid/d/b;->gL(Ljava/lang/String;)[B
    :try_end_1d
    .catch Lcom/subgraph/orchid/TorException; {:try_start_0 .. :try_end_1d} :catch_1f

    move-result-object v0

    goto :goto_d

    .line 107
    :catch_1f
    move-exception v0

    move-object v1, v0

    .line 108
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/hs/j;->bBr:Lcom/subgraph/orchid/TorConfig;

    invoke-interface {v0}, Lcom/subgraph/orchid/TorConfig;->Km()Z

    move-result v0

    if-eqz v0, :cond_4e

    const-string v0, "[scrubbed]"

    .line 109
    :goto_2b
    new-instance v2, Lcom/subgraph/orchid/OpenFailedException;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "Failed to decode onion address "

    invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v3, " : "

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v1}, Lcom/subgraph/orchid/TorException;->getMessage()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {v2, v0}, Lcom/subgraph/orchid/OpenFailedException;-><init>(Ljava/lang/String;)V

    throw v2

    .line 108
    :cond_4e
    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v2, ".onion"

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    goto :goto_2b
.end method


# virtual methods
.method public final q(Ljava/lang/String;I)Lcom/subgraph/orchid/aa;
    .registers 8

    .prologue
    .line 39
    invoke-direct {p0, p1}, Lcom/subgraph/orchid/circuits/hs/j;->gx(Ljava/lang/String;)Lcom/subgraph/orchid/circuits/hs/i;

    move-result-object v0

    .line 40
    invoke-direct {p0, v0}, Lcom/subgraph/orchid/circuits/hs/j;->b(Lcom/subgraph/orchid/circuits/hs/i;)Lcom/subgraph/orchid/q;

    move-result-object v1

    .line 43
    :try_start_8
    invoke-interface {v1, p2}, Lcom/subgraph/orchid/q;->eE(I)Lcom/subgraph/orchid/aa;
    :try_end_b
    .catch Lcom/subgraph/orchid/StreamConnectFailedException; {:try_start_8 .. :try_end_b} :catch_d

    move-result-object v0

    return-object v0

    .line 44
    :catch_d
    move-exception v1

    .line 45
    new-instance v2, Lcom/subgraph/orchid/OpenFailedException;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "Failed to open stream to hidden service "

    invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v0}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v3, " reason "

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v1}, Lcom/subgraph/orchid/StreamConnectFailedException;->getReason()I

    move-result v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-direct {v2, v0}, Lcom/subgraph/orchid/OpenFailedException;-><init>(Ljava/lang/String;)V

    throw v2
.end method