final class sun.security.ssl.DTLSOutputRecord extends sun.security.ssl.OutputRecord implements sun.security.ssl.DTLSRecord
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.DTLSOutputRecord
super_class: sun.security.ssl.OutputRecord
{
private sun.security.ssl.DTLSOutputRecord$DTLSFragmenter fragmenter;
descriptor: Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
flags: (0x0002) ACC_PRIVATE
int writeEpoch;
descriptor: I
flags: (0x0000)
int prevWriteEpoch;
descriptor: I
flags: (0x0000)
sun.security.ssl.Authenticator prevWriteAuthenticator;
descriptor: Lsun/security/ssl/Authenticator;
flags: (0x0000)
sun.security.ssl.CipherBox prevWriteCipher;
descriptor: Lsun/security/ssl/CipherBox;
flags: (0x0000)
private java.util.LinkedList<sun.security.ssl.DTLSOutputRecord$RecordMemo> alertMemos;
descriptor: Ljava/util/LinkedList;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/LinkedList<Lsun/security/ssl/DTLSOutputRecord$RecordMemo;>;
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial sun.security.ssl.OutputRecord.<init>:()V
1: aload 0
aconst_null
putfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
2: aload 0
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putfield sun.security.ssl.DTLSOutputRecord.alertMemos:Ljava/util/LinkedList;
3: aload 0
new sun.security.ssl.MAC
dup
iconst_1
invokespecial sun.security.ssl.MAC.<init>:(Z)V
putfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
4: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
5: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord.prevWriteEpoch:I
6: aload 0
getstatic sun.security.ssl.CipherBox.NULL:Lsun/security/ssl/CipherBox;
putfield sun.security.ssl.DTLSOutputRecord.prevWriteCipher:Lsun/security/ssl/CipherBox;
7: aload 0
new sun.security.ssl.MAC
dup
iconst_1
invokespecial sun.security.ssl.MAC.<init>:(Z)V
putfield sun.security.ssl.DTLSOutputRecord.prevWriteAuthenticator:Lsun/security/ssl/Authenticator;
8: aload 0
sipush 16717
putfield sun.security.ssl.DTLSOutputRecord.packetSize:I
9: aload 0
getstatic sun.security.ssl.ProtocolVersion.DEFAULT_DTLS:Lsun/security/ssl/ProtocolVersion;
putfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
10: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/ssl/DTLSOutputRecord;
void changeWriteCiphers(sun.security.ssl.Authenticator, sun.security.ssl.CipherBox);
descriptor: (Lsun/security/ssl/Authenticator;Lsun/security/ssl/CipherBox;)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord.encodeChangeCipherSpec:()V
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord.prevWriteCipher:Lsun/security/ssl/CipherBox;
invokevirtual sun.security.ssl.CipherBox.dispose:()V
2: aload 0
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
putfield sun.security.ssl.DTLSOutputRecord.prevWriteAuthenticator:Lsun/security/ssl/Authenticator;
3: aload 0
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
putfield sun.security.ssl.DTLSOutputRecord.prevWriteCipher:Lsun/security/ssl/CipherBox;
4: aload 0
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
putfield sun.security.ssl.DTLSOutputRecord.prevWriteEpoch:I
5: aload 0
aload 1
putfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
6: aload 0
aload 2
putfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
7: aload 0
dup
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
iconst_1
iadd
putfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
8: aload 0
iconst_1
putfield sun.security.ssl.DTLSOutputRecord.isFirstAppOutputRecord:Z
9: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
invokevirtual sun.security.ssl.Authenticator.setEpochNumber:(I)V
10: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/ssl/DTLSOutputRecord;
0 11 1 writeAuthenticator Lsun/security/ssl/Authenticator;
0 11 2 writeCipher Lsun/security/ssl/CipherBox;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
writeAuthenticator
writeCipher
void encodeAlert(byte, byte);
descriptor: (BB)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: new sun.security.ssl.DTLSOutputRecord$RecordMemo
dup
invokespecial sun.security.ssl.DTLSOutputRecord$RecordMemo.<init>:()V
astore 3
start local 3 1: aload 3
bipush 21
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
2: aload 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.major:B
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.majorVersion:B
3: aload 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.minor:B
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.minorVersion:B
4: aload 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeEpoch:I
5: aload 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/CipherBox;
6: aload 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
7: aload 3
iconst_2
newarray 8
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
8: aload 3
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
iconst_0
iload 1
bastore
9: aload 3
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
iconst_1
iload 2
bastore
10: aload 0
getfield sun.security.ssl.DTLSOutputRecord.alertMemos:Ljava/util/LinkedList;
aload 3
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
11: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/security/ssl/DTLSOutputRecord;
0 12 1 level B
0 12 2 description B
1 12 3 memo Lsun/security/ssl/DTLSOutputRecord$RecordMemo;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
level
description
void encodeChangeCipherSpec();
descriptor: ()V
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnonnull 2
1: aload 0
new sun.security.ssl.DTLSOutputRecord$DTLSFragmenter
dup
aload 0
invokespecial sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.<init>:(Lsun/security/ssl/DTLSOutputRecord;)V
putfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.queueUpChangeCipherSpec:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/DTLSOutputRecord;
Exceptions:
throws java.io.IOException
void encodeHandshake(byte[], int, int);
descriptor: ([BII)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.firstMessage:Z
ifeq 2
1: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord.firstMessage:Z
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnonnull 4
3: aload 0
new sun.security.ssl.DTLSOutputRecord$DTLSFragmenter
dup
aload 0
invokespecial sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.<init>:(Lsun/security/ssl/DTLSOutputRecord;)V
putfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
aload 1
iload 2
iload 3
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.queueUpHandshake:([BII)V
5: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/ssl/DTLSOutputRecord;
0 6 1 source [B
0 6 2 offset I
0 6 3 length I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
source
offset
length
sun.security.ssl.Ciphertext encode(java.nio.ByteBuffer[], int, int, java.nio.ByteBuffer);
descriptor: ([Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
flags: (0x0000)
Code:
stack=9, locals=15, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
invokevirtual sun.security.ssl.Authenticator.seqNumOverflow:()Z
ifeq 7
1: getstatic sun.security.ssl.DTLSOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 6
ldc "ssl"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 6
2: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
3: ldc ", sequence number extremely close to overflow "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
4: ldc "(2^64-1 packets). Closing connection."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
6: StackMap locals:
StackMap stack:
new javax.net.ssl.SSLHandshakeException
dup
ldc "sequence number overflow"
invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 8: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
instanceof sun.security.ssl.MAC
ifeq 10
9: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
checkcast sun.security.ssl.MAC
invokevirtual sun.security.ssl.MAC.MAClen:()I
istore 5
10: StackMap locals: int
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
ifle 17
11: sipush 16717
aload 0
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
invokestatic java.lang.Math.min:(II)I
istore 6
start local 6 12: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
13: iload 6
iload 5
bipush 13
14: invokevirtual sun.security.ssl.CipherBox.calculateFragmentSize:(III)I
istore 6
15: iload 6
sipush 16384
invokestatic java.lang.Math.min:(II)I
istore 6
16: goto 18
end local 6 17: StackMap locals:
StackMap stack:
sipush 16384
istore 6
start local 6 18: StackMap locals: int
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmentSize:I
ifle 20
19: iload 6
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmentSize:I
invokestatic java.lang.Math.min:(II)I
istore 6
20: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.nio.ByteBuffer.position:()I
istore 7
start local 7 21: aload 4
invokevirtual java.nio.ByteBuffer.limit:()I
istore 8
start local 8 22: iload 7
bipush 13
iadd
23: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
invokevirtual sun.security.ssl.CipherBox.getExplicitNonceSize:()I
24: iadd
istore 9
start local 9 25: aload 4
iload 9
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
26: iload 6
aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
invokestatic java.lang.Math.min:(II)I
istore 10
start local 10 27: iconst_0
istore 6
28: iload 2
iload 3
iadd
istore 11
start local 11 29: iload 2
istore 12
start local 12 30: goto 39
31: StackMap locals: sun.security.ssl.DTLSOutputRecord java.nio.ByteBuffer[] int int java.nio.ByteBuffer int int int int int int int int
StackMap stack:
aload 1
iload 12
aaload
invokevirtual java.nio.ByteBuffer.remaining:()I
iload 10
invokestatic java.lang.Math.min:(II)I
istore 13
start local 13 32: aload 1
iload 12
aaload
invokevirtual java.nio.ByteBuffer.limit:()I
istore 14
start local 14 33: aload 1
iload 12
aaload
aload 1
iload 12
aaload
invokevirtual java.nio.ByteBuffer.position:()I
iload 13
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
34: aload 4
aload 1
iload 12
aaload
invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
pop
35: aload 1
iload 12
aaload
iload 14
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
36: iload 10
iload 13
isub
istore 10
37: iload 6
iload 13
iadd
istore 6
end local 14 end local 13 38: iinc 12 1
StackMap locals:
StackMap stack:
39: iload 12
iload 11
if_icmpge 40
iload 10
ifgt 31
end local 12 40: StackMap locals:
StackMap stack:
aload 4
aload 4
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
41: aload 4
iload 9
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
42: getstatic sun.security.ssl.DTLSOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 48
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 48
43: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
44: ldc ", WRITE: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
45: bipush 23
invokestatic sun.security.ssl.Record.contentName:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
46: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
47: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
48: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
49: bipush 23
aload 4
50: iload 7
iload 8
bipush 13
51: aload 0
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
iconst_1
52: invokestatic sun.security.ssl.DTLSOutputRecord.encrypt:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/CipherBox;BLjava/nio/ByteBuffer;IIILsun/security/ssl/ProtocolVersion;Z)J
lstore 12
start local 12 53: getstatic sun.security.ssl.DTLSOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 60
ldc "packet"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 60
54: aload 4
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 14
start local 14 55: aload 14
aload 14
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
56: aload 14
iload 7
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
57: new java.lang.StringBuilder
dup
ldc "[Raw write]: length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 14
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
58: aload 14
59: invokestatic sun.security.ssl.Debug.printHex:(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
end local 14 60: StackMap locals: long
StackMap stack:
aload 4
iload 8
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
61: new sun.security.ssl.Ciphertext
dup
getstatic sun.security.ssl.Ciphertext$RecordType.RECORD_APPLICATION_DATA:Lsun/security/ssl/Ciphertext$RecordType;
lload 12
invokespecial sun.security.ssl.Ciphertext.<init>:(Lsun/security/ssl/Ciphertext$RecordType;J)V
areturn
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 62 0 this Lsun/security/ssl/DTLSOutputRecord;
0 62 1 sources [Ljava/nio/ByteBuffer;
0 62 2 offset I
0 62 3 length I
0 62 4 destination Ljava/nio/ByteBuffer;
8 62 5 macLen I
12 17 6 fragLen I
18 62 6 fragLen I
21 62 7 dstPos I
22 62 8 dstLim I
25 62 9 dstContent I
27 62 10 remains I
29 62 11 srcsLen I
30 40 12 i I
32 38 13 amount I
33 38 14 srcLimit I
53 62 12 recordSN J
55 60 14 temporary Ljava/nio/ByteBuffer;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
sources
offset
length
destination
sun.security.ssl.Ciphertext acquireCiphertext(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
flags: (0x0000)
Code:
stack=9, locals=9, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.alertMemos:Ljava/util/LinkedList;
ifnull 35
aload 0
getfield sun.security.ssl.DTLSOutputRecord.alertMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.isEmpty:()Z
ifne 35
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord.alertMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.pop:()Ljava/lang/Object;
checkcast sun.security.ssl.DTLSOutputRecord$RecordMemo
astore 2
start local 2 2: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
instanceof sun.security.ssl.MAC
ifeq 4
3: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
checkcast sun.security.ssl.MAC
invokevirtual sun.security.ssl.MAC.MAClen:()I
pop
4: StackMap locals: sun.security.ssl.DTLSOutputRecord$RecordMemo
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 3
start local 3 5: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 4
start local 4 6: iload 3
bipush 13
iadd
7: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
invokevirtual sun.security.ssl.CipherBox.getExplicitNonceSize:()I
8: iadd
istore 5
start local 5 9: aload 1
iload 5
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
10: aload 1
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
pop
11: aload 1
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
12: aload 1
iload 5
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
13: getstatic sun.security.ssl.DTLSOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 19
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 19
14: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
15: ldc ", WRITE: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
16: bipush 21
invokestatic sun.security.ssl.Record.contentName:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
18: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
19: StackMap locals: int int int
StackMap stack:
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/CipherBox;
20: bipush 21
aload 1
iload 3
iload 4
bipush 13
21: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.majorVersion:B
22: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.minorVersion:B
23: invokestatic sun.security.ssl.ProtocolVersion.valueOf:(II)Lsun/security/ssl/ProtocolVersion;
24: iconst_1
25: invokestatic sun.security.ssl.DTLSOutputRecord.encrypt:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/CipherBox;BLjava/nio/ByteBuffer;IIILsun/security/ssl/ProtocolVersion;Z)J
lstore 6
start local 6 26: getstatic sun.security.ssl.DTLSOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 33
ldc "packet"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 33
27: aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 8
start local 8 28: aload 8
aload 8
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
29: aload 8
iload 3
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
30: new java.lang.StringBuilder
dup
ldc "[Raw write]: length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
31: aload 8
32: invokestatic sun.security.ssl.Debug.printHex:(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
end local 8 33: StackMap locals: long
StackMap stack:
aload 1
iload 4
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
34: new sun.security.ssl.Ciphertext
dup
getstatic sun.security.ssl.Ciphertext$RecordType.RECORD_ALERT:Lsun/security/ssl/Ciphertext$RecordType;
lload 6
invokespecial sun.security.ssl.Ciphertext.<init>:(Lsun/security/ssl/Ciphertext$RecordType;J)V
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 35: StackMap locals: sun.security.ssl.DTLSOutputRecord java.nio.ByteBuffer
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnull 37
36: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
aload 1
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireCiphertext:(Ljava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
areturn
37: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 this Lsun/security/ssl/DTLSOutputRecord;
0 38 1 destination Ljava/nio/ByteBuffer;
2 35 2 memo Lsun/security/ssl/DTLSOutputRecord$RecordMemo;
5 35 3 dstPos I
6 35 4 dstLim I
9 35 5 dstContent I
26 35 6 recordSN J
28 33 8 temporary Ljava/nio/ByteBuffer;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
destination
boolean isEmpty();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnull 1
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.isEmpty:()Z
ifeq 3
1: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.alertMemos:Ljava/util/LinkedList;
ifnull 2
aload 0
getfield sun.security.ssl.DTLSOutputRecord.alertMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.isEmpty:()Z
ifeq 3
2: StackMap locals:
StackMap stack:
iconst_1
ireturn
StackMap locals:
StackMap stack:
3: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/DTLSOutputRecord;
void initHandshaker();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
putfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/DTLSOutputRecord;
void launchRetransmission();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.alertMemos:Ljava/util/LinkedList;
ifnull 1
aload 0
getfield sun.security.ssl.DTLSOutputRecord.alertMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.isEmpty:()Z
ifeq 3
1: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnull 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.isRetransmittable:()Z
ifeq 3
2: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.setRetransmission:()V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/DTLSOutputRecord;
}
SourceFile: "DTLSOutputRecord.java"
NestMembers:
sun.security.ssl.DTLSOutputRecord$DTLSFragmenter sun.security.ssl.DTLSOutputRecord$HandshakeMemo sun.security.ssl.DTLSOutputRecord$RecordMemo
InnerClasses:
final RecordType = sun.security.ssl.Ciphertext$RecordType of sun.security.ssl.Ciphertext
private final DTLSFragmenter = sun.security.ssl.DTLSOutputRecord$DTLSFragmenter of sun.security.ssl.DTLSOutputRecord
private HandshakeMemo = sun.security.ssl.DTLSOutputRecord$HandshakeMemo of sun.security.ssl.DTLSOutputRecord
private RecordMemo = sun.security.ssl.DTLSOutputRecord$RecordMemo of sun.security.ssl.DTLSOutputRecord