IPAddress.smali
.class public Lorg/spongycastle/util/IPAddress;
.super Ljava/lang/Object;
.source "IPAddress.java"
# direct methods
.method public constructor <init>()V
.registers 1
.prologue
.line 6
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static isMaskValue(Ljava/lang/String;I)Z
.registers 4
.prologue
const/4 v0, 0x0
.line 106
:try_start_1
invoke-static {p0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
:try_end_4
.catch Ljava/lang/NumberFormatException; {:try_start_1 .. :try_end_4} :catch_b
move-result v1
.line 108
if-ltz v1, :cond_a
if-gt v1, p1, :cond_a
const/4 v0, 0x1
.line 112
:cond_a
:goto_a
return v0
:catch_b
move-exception v1
goto :goto_a
.end method
.method public static isValid(Ljava/lang/String;)Z
.registers 2
.prologue
.line 18
invoke-static {p0}, Lorg/spongycastle/util/IPAddress;->isValidIPv4(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_c
invoke-static {p0}, Lorg/spongycastle/util/IPAddress;->isValidIPv6(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_e
:cond_c
const/4 v0, 0x1
:goto_d
return v0
:cond_e
const/4 v0, 0x0
goto :goto_d
.end method
.method public static isValidIPv4(Ljava/lang/String;)Z
.registers 8
.prologue
const/4 v6, 0x4
const/4 v1, 0x0
.line 44
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
if-nez v0, :cond_9
.line 79
:cond_8
:goto_8
return v1
.line 52
:cond_9
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, "."
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 v3
move v0, v1
move v2, v1
.line 56
:goto_1e
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v4
if-ge v2, v4, :cond_41
const/16 v4, 0x2e
.line 57
invoke-virtual {v3, v4, v2}, Ljava/lang/String;->indexOf(II)I
move-result v4
if-le v4, v2, :cond_41
.line 59
if-eq v0, v6, :cond_8
.line 65
:try_start_2e
invoke-virtual {v3, v2, v4}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v2
invoke-static {v2}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
:try_end_35
.catch Ljava/lang/NumberFormatException; {:try_start_2e .. :try_end_35} :catch_45
move-result v2
.line 71
if-ltz v2, :cond_8
const/16 v5, 0xff
if-gt v2, v5, :cond_8
.line 75
add-int/lit8 v2, v4, 0x1
.line 76
add-int/lit8 v0, v0, 0x1
goto :goto_1e
.line 79
:cond_41
if-ne v0, v6, :cond_8
const/4 v1, 0x1
goto :goto_8
.line 69
:catch_45
move-exception v0
goto :goto_8
.end method
.method public static isValidIPv4WithNetmask(Ljava/lang/String;)Z
.registers 4
.prologue
const/4 v0, 0x0
.line 85
const-string v1, "/"
invoke-virtual {p0, v1}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I
move-result v1
.line 86
add-int/lit8 v2, v1, 0x1
invoke-virtual {p0, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v2
.line 88
if-lez v1, :cond_28
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/util/IPAddress;->isValidIPv4(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_28
.line 89
invoke-static {v2}, Lorg/spongycastle/util/IPAddress;->isValidIPv4(Ljava/lang/String;)Z
move-result v1
if-nez v1, :cond_27
const/16 v1, 0x20
invoke-static {v2, v1}, Lorg/spongycastle/util/IPAddress;->isMaskValue(Ljava/lang/String;I)Z
move-result v1
if-eqz v1, :cond_28
:cond_27
const/4 v0, 0x1
:cond_28
return v0
.end method
.method public static isValidIPv6(Ljava/lang/String;)Z
.registers 11
.prologue
const/16 v9, 0x8
const/4 v4, 0x1
const/4 v1, 0x0
.line 126
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
if-nez v0, :cond_b
.line 187
:cond_a
:goto_a
return v1
.line 134
:cond_b
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, ":"
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 v5
move v0, v1
move v2, v1
move v3, v1
.line 138
:goto_21
invoke-virtual {v5}, Ljava/lang/String;->length()I
move-result v6
if-ge v3, v6, :cond_74
const/16 v6, 0x3a
.line 139
invoke-virtual {v5, v6, v3}, Ljava/lang/String;->indexOf(II)I
move-result v6
if-lt v6, v3, :cond_74
.line 141
if-eq v2, v9, :cond_a
.line 146
if-eq v3, v6, :cond_66
.line 148
invoke-virtual {v5, v3, v6}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v7
.line 150
invoke-virtual {v5}, Ljava/lang/String;->length()I
move-result v8
add-int/lit8 v8, v8, -0x1
if-ne v6, v8, :cond_54
const/16 v8, 0x2e
invoke-virtual {v7, v8}, Ljava/lang/String;->indexOf(I)I
move-result v8
if-lez v8, :cond_54
.line 152
invoke-static {v7}, Lorg/spongycastle/util/IPAddress;->isValidIPv4(Ljava/lang/String;)Z
move-result v3
if-eqz v3, :cond_a
.line 157
add-int/lit8 v2, v2, 0x1
.line 183
:cond_4f
:goto_4f
add-int/lit8 v3, v6, 0x1
.line 184
add-int/lit8 v2, v2, 0x1
goto :goto_21
.line 163
:cond_54
:try_start_54
invoke-virtual {v5, v3, v6}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v3
const/16 v7, 0x10
invoke-static {v3, v7}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I
:try_end_5d
.catch Ljava/lang/NumberFormatException; {:try_start_54 .. :try_end_5d} :catch_7a
move-result v3
.line 169
if-ltz v3, :cond_a
const v7, 0xffff
if-le v3, v7, :cond_4f
goto :goto_a
.line 177
:cond_66
if-eq v6, v4, :cond_72
invoke-virtual {v5}, Ljava/lang/String;->length()I
move-result v3
add-int/lit8 v3, v3, -0x1
if-eq v6, v3, :cond_72
if-nez v0, :cond_a
:cond_72
move v0, v4
.line 181
goto :goto_4f
.line 187
:cond_74
if-eq v2, v9, :cond_78
if-eqz v0, :cond_a
:cond_78
move v1, v4
goto :goto_a
.line 167
:catch_7a
move-exception v0
goto :goto_a
.end method
.method public static isValidIPv6WithNetmask(Ljava/lang/String;)Z
.registers 4
.prologue
const/4 v0, 0x0
.line 95
const-string v1, "/"
invoke-virtual {p0, v1}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I
move-result v1
.line 96
add-int/lit8 v2, v1, 0x1
invoke-virtual {p0, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v2
.line 98
if-lez v1, :cond_28
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/util/IPAddress;->isValidIPv6(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_28
.line 99
invoke-static {v2}, Lorg/spongycastle/util/IPAddress;->isValidIPv6(Ljava/lang/String;)Z
move-result v1
if-nez v1, :cond_27
const/16 v1, 0x80
invoke-static {v2, v1}, Lorg/spongycastle/util/IPAddress;->isMaskValue(Ljava/lang/String;I)Z
move-result v1
if-eqz v1, :cond_28
:cond_27
const/4 v0, 0x1
:cond_28
return v0
.end method
.method public static isValidWithNetMask(Ljava/lang/String;)Z
.registers 2
.prologue
.line 31
invoke-static {p0}, Lorg/spongycastle/util/IPAddress;->isValidIPv4WithNetmask(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_c
invoke-static {p0}, Lorg/spongycastle/util/IPAddress;->isValidIPv6WithNetmask(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_e
:cond_c
const/4 v0, 0x1
:goto_d
return v0
:cond_e
const/4 v0, 0x0
goto :goto_d
.end method