URLAndHash.smali
.class public Lorg/spongycastle/crypto/tls/URLAndHash;
.super Ljava/lang/Object;
.source "URLAndHash.java"
# instance fields
.field protected sha1Hash:[B
.field protected url:Ljava/lang/String;
# direct methods
.method public constructor <init>(Ljava/lang/String;[B)V
.registers 5
.prologue
.line 18
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 19
if-eqz p1, :cond_13
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v0
if-lez v0, :cond_13
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v0
const/high16 v1, 0x10000
if-lt v0, v1, :cond_1b
.line 21
:cond_13
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "\'url\' must have length from 1 to (2^16 - 1)"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 23
:cond_1b
if-eqz p2, :cond_2a
array-length v0, p2
const/16 v1, 0x14
if-eq v0, v1, :cond_2a
.line 25
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "\'sha1Hash\' must have length == 20, if present"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 28
:cond_2a
iput-object p1, p0, Lorg/spongycastle/crypto/tls/URLAndHash;->url:Ljava/lang/String;
.line 29
iput-object p2, p0, Lorg/spongycastle/crypto/tls/URLAndHash;->sha1Hash:[B
.line 30
return-void
.end method
.method public static parse(Lorg/spongycastle/crypto/tls/TlsContext;Ljava/io/InputStream;)Lorg/spongycastle/crypto/tls/URLAndHash;
.registers 6
.prologue
const/16 v3, 0x2f
.line 78
invoke-static {p1}, Lorg/spongycastle/crypto/tls/TlsUtils;->readOpaque16(Ljava/io/InputStream;)[B
move-result-object v0
.line 79
array-length v1, v0
if-gtz v1, :cond_f
.line 81
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
invoke-direct {v0, v3}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 83
:cond_f
invoke-static {v0}, Lorg/spongycastle/util/Strings;->fromByteArray([B)Ljava/lang/String;
move-result-object v1
.line 85
const/4 v0, 0x0
.line 86
invoke-static {p1}, Lorg/spongycastle/crypto/tls/TlsUtils;->readUint8(Ljava/io/InputStream;)S
move-result v2
.line 87
packed-switch v2, :pswitch_data_3a
.line 99
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
invoke-direct {v0, v3}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 90
:pswitch_21
invoke-static {p0}, Lorg/spongycastle/crypto/tls/TlsUtils;->isTLSv12(Lorg/spongycastle/crypto/tls/TlsContext;)Z
move-result v2
if-eqz v2, :cond_33
.line 92
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
invoke-direct {v0, v3}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 96
:pswitch_2d
const/16 v0, 0x14
invoke-static {v0, p1}, Lorg/spongycastle/crypto/tls/TlsUtils;->readFully(ILjava/io/InputStream;)[B
move-result-object v0
.line 102
:cond_33
new-instance v2, Lorg/spongycastle/crypto/tls/URLAndHash;
invoke-direct {v2, v1, v0}, Lorg/spongycastle/crypto/tls/URLAndHash;-><init>(Ljava/lang/String;[B)V
return-object v2
.line 87
nop
:pswitch_data_3a
.packed-switch 0x0
:pswitch_21
:pswitch_2d
.end packed-switch
.end method
# virtual methods
.method public encode(Ljava/io/OutputStream;)V
.registers 3
.prologue
.line 51
iget-object v0, p0, Lorg/spongycastle/crypto/tls/URLAndHash;->url:Ljava/lang/String;
invoke-static {v0}, Lorg/spongycastle/util/Strings;->toByteArray(Ljava/lang/String;)[B
move-result-object v0
.line 52
invoke-static {v0, p1}, Lorg/spongycastle/crypto/tls/TlsUtils;->writeOpaque16([BLjava/io/OutputStream;)V
.line 54
iget-object v0, p0, Lorg/spongycastle/crypto/tls/URLAndHash;->sha1Hash:[B
if-nez v0, :cond_12
.line 56
const/4 v0, 0x0
invoke-static {v0, p1}, Lorg/spongycastle/crypto/tls/TlsUtils;->writeUint8(ILjava/io/OutputStream;)V
.line 63
:goto_11
return-void
.line 60
:cond_12
const/4 v0, 0x1
invoke-static {v0, p1}, Lorg/spongycastle/crypto/tls/TlsUtils;->writeUint8(ILjava/io/OutputStream;)V
.line 61
iget-object v0, p0, Lorg/spongycastle/crypto/tls/URLAndHash;->sha1Hash:[B
invoke-virtual {p1, v0}, Ljava/io/OutputStream;->write([B)V
goto :goto_11
.end method
.method public getSHA1Hash()[B
.registers 2
.prologue
.line 39
iget-object v0, p0, Lorg/spongycastle/crypto/tls/URLAndHash;->sha1Hash:[B
return-object v0
.end method
.method public getURL()Ljava/lang/String;
.registers 2
.prologue
.line 34
iget-object v0, p0, Lorg/spongycastle/crypto/tls/URLAndHash;->url:Ljava/lang/String;
return-object v0
.end method