TlsSRTPUtils.smali
.class public Lorg/spongycastle/crypto/tls/TlsSRTPUtils;
.super Ljava/lang/Object;
.source "TlsSRTPUtils.java"
# static fields
.field public static final EXT_use_srtp:Ljava/lang/Integer;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 15
const/16 v0, 0xe
invoke-static {v0}, Lorg/spongycastle/util/Integers;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
sput-object v0, Lorg/spongycastle/crypto/tls/TlsSRTPUtils;->EXT_use_srtp:Ljava/lang/Integer;
return-void
.end method
.method public constructor <init>()V
.registers 1
.prologue
.line 13
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static addUseSRTPExtension(Ljava/util/Hashtable;Lorg/spongycastle/crypto/tls/UseSRTPData;)V
.registers 4
.prologue
.line 20
sget-object v0, Lorg/spongycastle/crypto/tls/TlsSRTPUtils;->EXT_use_srtp:Ljava/lang/Integer;
invoke-static {p1}, Lorg/spongycastle/crypto/tls/TlsSRTPUtils;->createUseSRTPExtension(Lorg/spongycastle/crypto/tls/UseSRTPData;)[B
move-result-object v1
invoke-virtual {p0, v0, v1}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 21
return-void
.end method
.method public static createUseSRTPExtension(Lorg/spongycastle/crypto/tls/UseSRTPData;)[B
.registers 3
.prologue
.line 33
if-nez p0, :cond_a
.line 35
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "\'useSRTPData\' cannot be null"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 38
:cond_a
new-instance v0, Ljava/io/ByteArrayOutputStream;
invoke-direct {v0}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 41
invoke-virtual {p0}, Lorg/spongycastle/crypto/tls/UseSRTPData;->getProtectionProfiles()[I
move-result-object v1
invoke-static {v1, v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->writeUint16ArrayWithUint16Length([ILjava/io/OutputStream;)V
.line 44
invoke-virtual {p0}, Lorg/spongycastle/crypto/tls/UseSRTPData;->getMki()[B
move-result-object v1
invoke-static {v1, v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->writeOpaque8([BLjava/io/OutputStream;)V
.line 46
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
return-object v0
.end method
.method public static getUseSRTPExtension(Ljava/util/Hashtable;)Lorg/spongycastle/crypto/tls/UseSRTPData;
.registers 2
.prologue
.line 26
sget-object v0, Lorg/spongycastle/crypto/tls/TlsSRTPUtils;->EXT_use_srtp:Ljava/lang/Integer;
invoke-static {p0, v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->getExtensionData(Ljava/util/Hashtable;Ljava/lang/Integer;)[B
move-result-object v0
.line 27
if-nez v0, :cond_a
const/4 v0, 0x0
:goto_9
return-object v0
:cond_a
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsSRTPUtils;->readUseSRTPExtension([B)Lorg/spongycastle/crypto/tls/UseSRTPData;
move-result-object v0
goto :goto_9
.end method
.method public static readUseSRTPExtension([B)Lorg/spongycastle/crypto/tls/UseSRTPData;
.registers 4
.prologue
.line 52
if-nez p0, :cond_a
.line 54
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "\'extensionData\' cannot be null"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 57
:cond_a
new-instance v0, Ljava/io/ByteArrayInputStream;
invoke-direct {v0, p0}, Ljava/io/ByteArrayInputStream;-><init>([B)V
.line 60
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->readUint16(Ljava/io/InputStream;)I
move-result v1
.line 61
const/4 v2, 0x2
if-lt v1, v2, :cond_1a
and-int/lit8 v2, v1, 0x1
if-eqz v2, :cond_22
.line 63
:cond_1a
new-instance v0, Lorg/spongycastle/crypto/tls/TlsFatalAlert;
const/16 v1, 0x32
invoke-direct {v0, v1}, Lorg/spongycastle/crypto/tls/TlsFatalAlert;-><init>(S)V
throw v0
.line 65
:cond_22
div-int/lit8 v1, v1, 0x2
invoke-static {v1, v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->readUint16Array(ILjava/io/InputStream;)[I
move-result-object v1
.line 68
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsUtils;->readOpaque8(Ljava/io/InputStream;)[B
move-result-object v2
.line 70
invoke-static {v0}, Lorg/spongycastle/crypto/tls/TlsProtocol;->assertEmpty(Ljava/io/ByteArrayInputStream;)V
.line 72
new-instance v0, Lorg/spongycastle/crypto/tls/UseSRTPData;
invoke-direct {v0, v1, v2}, Lorg/spongycastle/crypto/tls/UseSRTPData;-><init>([I[B)V
return-object v0
.end method