DTLSProtocol.smali
.class public abstract Lorg/spongycastle/crypto/tls/DTLSProtocol;
.super Ljava/lang/Object;
.source "DTLSProtocol.java"
# instance fields
.field protected final secureRandom:Ljava/security/SecureRandom;
# direct methods
.method protected constructor <init>(Ljava/security/SecureRandom;)V
.registers 4
.prologue
.line 17
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 18
if-nez p1, :cond_d
.line 20
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "\'secureRandom\' cannot be null"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 23
:cond_d
iput-object p1, p0, Lorg/spongycastle/crypto/tls/DTLSProtocol;->secureRandom:Ljava/security/SecureRandom;
.line 24
return-void
.end method
.method protected static applyMaxFragmentLengthExtension(Lorg/spongycastle/crypto/tls/DTLSRecordLayer;S)V
.registers 4
.prologue
.line 44
if-ltz p1, :cond_17
.line 46
invoke-static {p1}, Lorg/spongycastle/crypto/tls/MaxFragmentLength;->isValid(S)Z
move-result v0
if-nez v0, :cond_10
.line 48
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
const/16 v1, 0x50
invoke-direct {v0, v1}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 51
:cond_10
const/4 v0, 0x1
add-int/lit8 v1, p1, 0x8
shl-int/2addr v0, v1
.line 52
invoke-virtual {p0, v0}, Lorg/spongycastle/crypto/tls/DTLSRecordLayer;->setPlaintextLimit(I)V
.line 54
:cond_17
return-void
.end method
.method protected static evaluateMaxFragmentLengthExtension(ZLjava/util/Hashtable;Ljava/util/Hashtable;S)S
.registers 6
.prologue
.line 59
invoke-static {p2}, Lorg/spongycastle/crypto/tls/TlsExtensionsUtils;->getMaxFragmentLengthExtension(Ljava/util/Hashtable;)S
move-result v0
.line 60
if-ltz v0, :cond_1a
.line 62
invoke-static {v0}, Lorg/spongycastle/crypto/tls/MaxFragmentLength;->isValid(S)Z
move-result v1
if-eqz v1, :cond_14
if-nez p0, :cond_1a
.line 64
invoke-static {p1}, Lorg/spongycastle/crypto/tls/TlsExtensionsUtils;->getMaxFragmentLengthExtension(Ljava/util/Hashtable;)S
move-result v1
if-eq v0, v1, :cond_1a
.line 66
:cond_14
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
invoke-direct {v0, p3}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 69
:cond_1a
return v0
.end method
.method protected static generateCertificate(Lorg/spongycastle/crypto/tls/Certificate;)[B
.registers 2
.prologue
.line 75
new-instance v0, Ljava/io/ByteArrayOutputStream;
invoke-direct {v0}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 76
invoke-virtual {p0, v0}, Lorg/spongycastle/crypto/tls/Certificate;->encode(Ljava/io/OutputStream;)V
.line 77
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
return-object v0
.end method
.method protected static generateSupplementalData(Ljava/util/Vector;)[B
.registers 2
.prologue
.line 83
new-instance v0, Ljava/io/ByteArrayOutputStream;
invoke-direct {v0}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 84
invoke-static {v0, p0}, Lorg/spongycastle/crypto/tls/TlsProtocol;->writeSupplementalData(Ljava/io/OutputStream;Ljava/util/Vector;)V
.line 85
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
return-object v0
.end method
.method protected static validateSelectedCipherSuite(IS)V
.registers 3
.prologue
.line 91
invoke-static {p0}, Lorg/spongycastle/crypto/tls/TlsUtils;->getEncryptionAlgorithm(I)I
move-result v0
packed-switch v0, :pswitch_data_e
.line 97
return-void
.line 95
:pswitch_8
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
invoke-direct {v0, p1}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 91
:pswitch_data_e
.packed-switch 0x1
:pswitch_8
:pswitch_8
.end packed-switch
.end method
# virtual methods
.method protected processFinished([B[B)V
.registers 5
.prologue
.line 29
new-instance v0, Ljava/io/ByteArrayInputStream;
invoke-direct {v0, p1}, Ljava/io/ByteArrayInputStream;-><init>([B)V
.line 31
array-length v1, p2
invoke-static {v1, v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->readFully(ILjava/io/InputStream;)[B
move-result-object v1
.line 33
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsProtocol;->assertEmpty(Ljava/io/ByteArrayInputStream;)V
.line 35
invoke-static {p2, v1}, Lorg/spongycastle/util/Arrays;->constantTimeAreEqual([B[B)Z
move-result v0
if-nez v0, :cond_1b
.line 37
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
const/16 v1, 0x28
invoke-direct {v0, v1}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 39
:cond_1b
return-void
.end method