final class sun.security.ssl.DTLSInputRecord extends sun.security.ssl.InputRecord implements sun.security.ssl.DTLSRecord
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.DTLSInputRecord
super_class: sun.security.ssl.InputRecord
{
private sun.security.ssl.DTLSInputRecord$DTLSReassembler reassembler;
descriptor: Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
flags: (0x0002) ACC_PRIVATE
int readEpoch;
descriptor: I
flags: (0x0000)
int prevReadEpoch;
descriptor: I
flags: (0x0000)
sun.security.ssl.Authenticator prevReadAuthenticator;
descriptor: Lsun/security/ssl/Authenticator;
flags: (0x0000)
sun.security.ssl.CipherBox prevReadCipher;
descriptor: Lsun/security/ssl/CipherBox;
flags: (0x0000)
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial sun.security.ssl.InputRecord.<init>:()V
1: aload 0
aconst_null
putfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
2: aload 0
iconst_0
putfield sun.security.ssl.DTLSInputRecord.readEpoch:I
3: aload 0
new sun.security.ssl.MAC
dup
iconst_1
invokespecial sun.security.ssl.MAC.<init>:(Z)V
putfield sun.security.ssl.DTLSInputRecord.readAuthenticator:Lsun/security/ssl/Authenticator;
4: aload 0
iconst_0
putfield sun.security.ssl.DTLSInputRecord.prevReadEpoch:I
5: aload 0
getstatic sun.security.ssl.CipherBox.NULL:Lsun/security/ssl/CipherBox;
putfield sun.security.ssl.DTLSInputRecord.prevReadCipher:Lsun/security/ssl/CipherBox;
6: aload 0
new sun.security.ssl.MAC
dup
iconst_1
invokespecial sun.security.ssl.MAC.<init>:(Z)V
putfield sun.security.ssl.DTLSInputRecord.prevReadAuthenticator:Lsun/security/ssl/Authenticator;
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/ssl/DTLSInputRecord;
void changeReadCiphers(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
getfield sun.security.ssl.DTLSInputRecord.prevReadCipher:Lsun/security/ssl/CipherBox;
invokevirtual sun.security.ssl.CipherBox.dispose:()V
1: aload 0
aload 0
getfield sun.security.ssl.DTLSInputRecord.readAuthenticator:Lsun/security/ssl/Authenticator;
putfield sun.security.ssl.DTLSInputRecord.prevReadAuthenticator:Lsun/security/ssl/Authenticator;
2: aload 0
aload 0
getfield sun.security.ssl.DTLSInputRecord.readCipher:Lsun/security/ssl/CipherBox;
putfield sun.security.ssl.DTLSInputRecord.prevReadCipher:Lsun/security/ssl/CipherBox;
3: aload 0
aload 0
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
putfield sun.security.ssl.DTLSInputRecord.prevReadEpoch:I
4: aload 0
aload 1
putfield sun.security.ssl.DTLSInputRecord.readAuthenticator:Lsun/security/ssl/Authenticator;
5: aload 0
aload 2
putfield sun.security.ssl.DTLSInputRecord.readCipher:Lsun/security/ssl/CipherBox;
6: aload 0
dup
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iconst_1
iadd
putfield sun.security.ssl.DTLSInputRecord.readEpoch:I
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/ssl/DTLSInputRecord;
0 8 1 readAuthenticator Lsun/security/ssl/Authenticator;
0 8 2 readCipher Lsun/security/ssl/CipherBox;
MethodParameters:
Name Flags
readAuthenticator
readCipher
public synchronized void close();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSInputRecord.isClosed:Z
ifne 3
1: aload 0
getfield sun.security.ssl.DTLSInputRecord.prevReadCipher:Lsun/security/ssl/CipherBox;
invokevirtual sun.security.ssl.CipherBox.dispose:()V
2: aload 0
invokespecial sun.security.ssl.InputRecord.close:()V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/DTLSInputRecord;
Exceptions:
throws java.io.IOException
boolean isEmpty();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnull 1
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.isEmpty:()Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/DTLSInputRecord;
int estimateFragmentSize(int);
descriptor: (I)I
flags: (0x0000)
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: aload 0
getfield sun.security.ssl.DTLSInputRecord.readAuthenticator:Lsun/security/ssl/Authenticator;
instanceof sun.security.ssl.MAC
ifeq 3
2: aload 0
getfield sun.security.ssl.DTLSInputRecord.readAuthenticator:Lsun/security/ssl/Authenticator;
checkcast sun.security.ssl.MAC
invokevirtual sun.security.ssl.MAC.MAClen:()I
istore 2
3: StackMap locals: int
StackMap stack:
iload 1
ifle 7
4: aload 0
getfield sun.security.ssl.DTLSInputRecord.readCipher:Lsun/security/ssl/CipherBox;
5: iload 1
iload 2
bipush 13
6: invokevirtual sun.security.ssl.CipherBox.estimateFragmentSize:(III)I
ireturn
7: StackMap locals:
StackMap stack:
sipush 16384
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/ssl/DTLSInputRecord;
0 8 1 packetSize I
1 8 2 macLen I
MethodParameters:
Name Flags
packetSize
void expectingFinishFlight();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnull 2
1: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.expectingFinishFlight:()V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/DTLSInputRecord;
sun.security.ssl.Plaintext acquirePlaintext();
descriptor: ()Lsun/security/ssl/Plaintext;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnull 2
1: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.acquirePlaintext:()Lsun/security/ssl/Plaintext;
areturn
2: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/DTLSInputRecord;
sun.security.ssl.Plaintext decode(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Lsun/security/ssl/Plaintext;
flags: (0x0000)
Code:
stack=12, locals=18, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.DTLSInputRecord.isClosed:Z
ifeq 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 5
ldc "packet"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 5
3: new java.lang.StringBuilder
dup
ldc "[Raw read]: length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
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;
aload 1
4: invokestatic sun.security.ssl.Debug.printHex:(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
5: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 2
start local 2 6: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 3
start local 3 7: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
istore 4
start local 4 8: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
istore 5
start local 5 9: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
istore 6
start local 6 10: bipush 8
newarray 8
astore 7
start local 7 11: aload 1
aload 7
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
12: aload 7
iconst_0
baload
sipush 255
iand
bipush 8
ishl
13: aload 7
iconst_1
baload
sipush 255
iand
14: ior
istore 8
start local 8 15: aload 7
iconst_2
baload
i2l
ldc 255
land
bipush 40
lshl
16: aload 7
iconst_3
baload
i2l
ldc 255
land
bipush 32
lshl
17: lor
18: aload 7
iconst_4
baload
i2l
ldc 255
land
bipush 24
lshl
19: lor
20: aload 7
iconst_5
baload
i2l
ldc 255
land
bipush 16
lshl
21: lor
22: aload 7
bipush 6
baload
i2l
ldc 255
land
bipush 8
lshl
23: lor
24: aload 7
bipush 7
baload
i2l
ldc 255
land
25: lor
lstore 9
start local 9 26: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 8
ishl
27: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
28: ior
istore 11
start local 11 29: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 35
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 35
30: new java.lang.StringBuilder
dup
ldc "READ: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
31: iload 5
iload 6
invokestatic sun.security.ssl.ProtocolVersion.valueOf:(II)Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32: ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 4
invokestatic sun.security.ssl.Record.contentName:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
33: iload 11
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
34: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
35: StackMap locals: sun.security.ssl.DTLSInputRecord java.nio.ByteBuffer int int int int int byte[] int long int
StackMap stack:
iload 2
bipush 13
iadd
iload 11
iadd
istore 12
start local 12 36: aload 0
getfield sun.security.ssl.DTLSInputRecord.prevReadEpoch:I
iload 8
if_icmple 41
37: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
38: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 40
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 40
39: ldc "READ: discard this old record"
aload 7
invokestatic sun.security.ssl.Debug.printHex:(Ljava/lang/String;[B)V
40: StackMap locals: int
StackMap stack:
aconst_null
areturn
41: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iload 8
if_icmpge 58
42: iload 4
bipush 22
if_icmpeq 44
43: iload 4
bipush 20
if_icmpne 45
44: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iload 8
iconst_1
isub
if_icmpge 49
45: StackMap locals:
StackMap stack:
aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
46: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 48
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 48
47: ldc "Premature record (epoch), discard it."
invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
48: StackMap locals:
StackMap stack:
aconst_null
areturn
49: StackMap locals:
StackMap stack:
iload 11
newarray 8
astore 13
start local 13 50: aload 1
aload 13
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
51: new sun.security.ssl.DTLSInputRecord$RecordFragment
dup
aload 13
iload 4
52: iload 5
iload 6
53: aload 7
iload 8
lload 9
iconst_1
54: invokespecial sun.security.ssl.DTLSInputRecord$RecordFragment.<init>:([BBBB[BIJZ)V
astore 14
start local 14 55: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
aload 14
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.queueUpFragment:(Lsun/security/ssl/DTLSInputRecord$RecordFragment;)V
56: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
57: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.acquirePlaintext:()Lsun/security/ssl/Plaintext;
areturn
end local 14 end local 13 58: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iload 8
if_icmpne 62
59: aload 0
getfield sun.security.ssl.DTLSInputRecord.readAuthenticator:Lsun/security/ssl/Authenticator;
astore 13
start local 13 60: aload 0
getfield sun.security.ssl.DTLSInputRecord.readCipher:Lsun/security/ssl/CipherBox;
astore 14
start local 14 61: goto 64
end local 14 end local 13 62: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.prevReadAuthenticator:Lsun/security/ssl/Authenticator;
astore 13
start local 13 63: aload 0
getfield sun.security.ssl.DTLSInputRecord.prevReadCipher:Lsun/security/ssl/CipherBox;
astore 14
start local 14 64: StackMap locals: sun.security.ssl.Authenticator sun.security.ssl.CipherBox
StackMap stack:
aload 1
iload 12
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
65: aload 1
iload 2
bipush 13
iadd
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
66: aload 13
67: aload 14
iload 4
aload 1
aload 7
68: invokestatic sun.security.ssl.DTLSInputRecord.decrypt:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/CipherBox;BLjava/nio/ByteBuffer;[B)Ljava/nio/ByteBuffer;
astore 15
start local 15 69: goto 80
end local 15 StackMap locals:
StackMap stack: javax.crypto.BadPaddingException
70: astore 16
start local 16 71: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 73
ldc "ssl"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 73
72: new java.lang.StringBuilder
dup
ldc "Discard invalid record: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 16
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
73: StackMap locals: sun.security.ssl.DTLSInputRecord java.nio.ByteBuffer int int int int int byte[] int long int int sun.security.ssl.Authenticator sun.security.ssl.CipherBox top javax.crypto.BadPaddingException
StackMap stack:
aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
74: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
75: aconst_null
areturn
end local 16 76: StackMap locals: sun.security.ssl.DTLSInputRecord java.nio.ByteBuffer int int int int int byte[] int long int int sun.security.ssl.Authenticator sun.security.ssl.CipherBox
StackMap stack: java.lang.Throwable
astore 17
77: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
78: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
79: aload 17
athrow
start local 15 80: StackMap locals: java.nio.ByteBuffer
StackMap stack:
aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
81: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
82: iload 4
bipush 20
if_icmpeq 93
83: iload 4
bipush 22
if_icmpeq 93
84: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnull 89
85: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
getfield sun.security.ssl.DTLSInputRecord$DTLSReassembler.handshakeEpoch:I
iload 8
if_icmpge 89
86: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 88
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 88
87: ldc "Cleanup the handshake reassembler"
invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
88: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
89: StackMap locals:
StackMap stack:
new sun.security.ssl.Plaintext
dup
iload 4
iload 5
iload 6
90: iload 8
aload 7
invokestatic sun.security.ssl.Authenticator.toLong:([B)J
91: aload 15
92: invokespecial sun.security.ssl.Plaintext.<init>:(BBBIJLjava/nio/ByteBuffer;)V
areturn
93: StackMap locals:
StackMap stack:
iload 4
bipush 20
if_icmpne 123
94: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnonnull 101
95: aload 0
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iload 8
if_icmpeq 100
96: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 99
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 99
97: ldc "Lagging behind ChangeCipherSpec, discard it."
98: invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
99: StackMap locals:
StackMap stack:
aconst_null
areturn
100: StackMap locals:
StackMap stack:
aload 0
new sun.security.ssl.DTLSInputRecord$DTLSReassembler
dup
aload 0
iload 8
invokespecial sun.security.ssl.DTLSInputRecord$DTLSReassembler.<init>:(Lsun/security/ssl/DTLSInputRecord;I)V
putfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
101: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
102: new sun.security.ssl.DTLSInputRecord$RecordFragment
dup
aload 15
iload 4
103: iload 5
iload 6
104: aload 7
iload 8
lload 9
iconst_0
105: invokespecial sun.security.ssl.DTLSInputRecord$RecordFragment.<init>:(Ljava/nio/ByteBuffer;BBB[BIJZ)V
106: invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.queueUpChangeCipherSpec:(Lsun/security/ssl/DTLSInputRecord$RecordFragment;)V
107: goto 124
108: StackMap locals:
StackMap stack:
iload 4
iload 5
iload 6
109: aload 7
iload 8
lload 9
aload 15
110: invokestatic sun.security.ssl.DTLSInputRecord.parseHandshakeMessage:(BBB[BIJLjava/nio/ByteBuffer;)Lsun/security/ssl/DTLSInputRecord$HandshakeFragment;
astore 16
start local 16 111: aload 16
ifnonnull 115
112: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 114
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 114
113: ldc "Invalid handshake message, discard it."
invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
114: StackMap locals: sun.security.ssl.DTLSInputRecord$HandshakeFragment
StackMap stack:
aconst_null
areturn
115: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnonnull 122
116: aload 0
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iload 8
if_icmpeq 121
117: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 120
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 120
118: ldc "Lagging behind handshake record, discard it."
119: invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
120: StackMap locals:
StackMap stack:
aconst_null
areturn
121: StackMap locals:
StackMap stack:
aload 0
new sun.security.ssl.DTLSInputRecord$DTLSReassembler
dup
aload 0
iload 8
invokespecial sun.security.ssl.DTLSInputRecord$DTLSReassembler.<init>:(Lsun/security/ssl/DTLSInputRecord;I)V
putfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
122: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
aload 16
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.queueUpHandshake:(Lsun/security/ssl/DTLSInputRecord$HandshakeFragment;)V
end local 16 123: StackMap locals:
StackMap stack:
aload 15
invokevirtual java.nio.ByteBuffer.remaining:()I
ifgt 108
124: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnull 126
125: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.acquirePlaintext:()Lsun/security/ssl/Plaintext;
areturn
126: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 128
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 128
127: ldc "The reassembler is not initialized yet."
invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
128: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 15 end local 14 end local 13 end local 12 end local 11 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 129 0 this Lsun/security/ssl/DTLSInputRecord;
0 129 1 packet Ljava/nio/ByteBuffer;
6 129 2 srcPos I
7 129 3 srcLim I
8 129 4 contentType B
9 129 5 majorVersion B
10 129 6 minorVersion B
11 129 7 recordEnS [B
15 129 8 recordEpoch I
26 129 9 recordSeq J
29 129 11 contentLen I
36 129 12 recLim I
50 58 13 fragment [B
55 58 14 buffered Lsun/security/ssl/DTLSInputRecord$RecordFragment;
60 62 13 decodeAuthenticator Lsun/security/ssl/Authenticator;
63 129 13 decodeAuthenticator Lsun/security/ssl/Authenticator;
61 62 14 decodeCipher Lsun/security/ssl/CipherBox;
64 129 14 decodeCipher Lsun/security/ssl/CipherBox;
69 70 15 plaintextFragment Ljava/nio/ByteBuffer;
80 129 15 plaintextFragment Ljava/nio/ByteBuffer;
71 76 16 bpe Ljavax/crypto/BadPaddingException;
111 123 16 hsFrag Lsun/security/ssl/DTLSInputRecord$HandshakeFragment;
Exception table:
from to target type
66 69 70 Class javax.crypto.BadPaddingException
66 73 76 any
MethodParameters:
Name Flags
packet
int bytesInCompletePacket(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x0000)
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
bipush 13
if_icmpge 2
1: iconst_m1
ireturn
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 2
start local 2 3: aload 1
iload 2
invokevirtual java.nio.ByteBuffer.get:(I)B
istore 3
start local 3 4: iload 3
invokestatic sun.security.ssl.Record.isValidContentType:(B)Z
ifne 8
5: new javax.net.ssl.SSLException
dup
6: ldc "Unrecognized SSL message, plaintext connection?"
7: invokespecial javax.net.ssl.SSLException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals: int int
StackMap stack:
aload 1
iload 2
iconst_1
iadd
invokevirtual java.nio.ByteBuffer.get:(I)B
aload 1
iload 2
iconst_2
iadd
invokevirtual java.nio.ByteBuffer.get:(I)B
invokestatic sun.security.ssl.ProtocolVersion.valueOf:(II)Lsun/security/ssl/ProtocolVersion;
9: astore 4
start local 4 10: aload 0
aload 4
iconst_0
invokevirtual sun.security.ssl.DTLSInputRecord.checkRecordVersion:(Lsun/security/ssl/ProtocolVersion;Z)V
11: aload 1
iload 2
bipush 11
iadd
invokevirtual java.nio.ByteBuffer.get:(I)B
sipush 255
iand
bipush 8
ishl
12: aload 1
iload 2
bipush 12
iadd
invokevirtual java.nio.ByteBuffer.get:(I)B
sipush 255
iand
13: iadd
14: bipush 13
15: iadd
istore 5
start local 5 16: iload 5
sipush 18432
if_icmple 22
17: new javax.net.ssl.SSLException
dup
18: new java.lang.StringBuilder
dup
ldc "Record overflow, fragment length ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
19: ldc ") MUST not exceed "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
sipush 18432
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
20: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
21: invokespecial javax.net.ssl.SSLException.<init>:(Ljava/lang/String;)V
athrow
22: StackMap locals: sun.security.ssl.ProtocolVersion int
StackMap stack:
iload 5
ireturn
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 23 0 this Lsun/security/ssl/DTLSInputRecord;
0 23 1 packet Ljava/nio/ByteBuffer;
3 23 2 pos I
4 23 3 contentType B
10 23 4 recordVersion Lsun/security/ssl/ProtocolVersion;
16 23 5 fragLen I
Exceptions:
throws javax.net.ssl.SSLException
MethodParameters:
Name Flags
packet
void checkRecordVersion(sun.security.ssl.ProtocolVersion, boolean);
descriptor: (Lsun/security/ssl/ProtocolVersion;Z)V
flags: (0x0000)
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual sun.security.ssl.ProtocolVersion.maybeDTLSProtocol:()Z
ifne 6
1: new javax.net.ssl.SSLException
dup
2: new java.lang.StringBuilder
dup
ldc "Unrecognized record version "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
3: ldc " , plaintext connection?"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
4: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: invokespecial javax.net.ssl.SSLException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/security/ssl/DTLSInputRecord;
0 7 1 recordVersion Lsun/security/ssl/ProtocolVersion;
0 7 2 allowSSL20Hello Z
Exceptions:
throws javax.net.ssl.SSLException
MethodParameters:
Name Flags
recordVersion
allowSSL20Hello
private static sun.security.ssl.DTLSInputRecord$HandshakeFragment parseHandshakeMessage(byte, byte, byte, byte[], int, long, java.nio.ByteBuffer);
descriptor: (BBB[BIJLjava/nio/ByteBuffer;)Lsun/security/ssl/DTLSInputRecord$HandshakeFragment;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=15, locals=15, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 7 0: aload 7
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 8
start local 8 1: iload 8
bipush 12
if_icmpge 5
2: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 4
ldc "ssl"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 4
3: ldc "Discard invalid record: too small record to hold a handshake fragment"
invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
4: StackMap locals: int
StackMap stack:
aconst_null
areturn
5: StackMap locals:
StackMap stack:
aload 7
invokevirtual java.nio.ByteBuffer.get:()B
istore 9
start local 9 6: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 16
ishl
7: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 8
ishl
8: ior
9: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
10: ior
11: istore 10
start local 10 12: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 8
ishl
13: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
14: ior
15: istore 11
start local 11 16: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 16
ishl
17: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 8
ishl
18: ior
19: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
20: ior
21: istore 12
start local 12 22: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 16
ishl
23: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 8
ishl
24: ior
25: aload 7
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
26: ior
27: istore 13
start local 13 28: iload 8
bipush 12
isub
iload 13
if_icmpge 32
29: getstatic sun.security.ssl.DTLSInputRecord.debug:Lsun/security/ssl/Debug;
ifnull 31
ldc "ssl"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 31
30: ldc "Discard invalid record: not a complete handshake fragment in the record"
invokestatic sun.security.ssl.Debug.log:(Ljava/lang/String;)V
31: StackMap locals: int int int byte[] int long java.nio.ByteBuffer int int int int int int
StackMap stack:
aconst_null
areturn
32: StackMap locals:
StackMap stack:
iload 13
newarray 8
astore 14
start local 14 33: aload 7
aload 14
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
34: new sun.security.ssl.DTLSInputRecord$HandshakeFragment
dup
aload 14
iload 0
35: iload 1
iload 2
36: aload 3
iload 4
lload 5
37: iload 9
iload 10
38: iload 11
iload 12
iload 13
39: invokespecial sun.security.ssl.DTLSInputRecord$HandshakeFragment.<init>:([BBBB[BIJBIIII)V
areturn
end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 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 40 0 contentType B
0 40 1 majorVersion B
0 40 2 minorVersion B
0 40 3 recordEnS [B
0 40 4 recordEpoch I
0 40 5 recordSeq J
0 40 7 plaintextFragment Ljava/nio/ByteBuffer;
1 40 8 remaining I
6 40 9 handshakeType B
12 40 10 messageLength I
16 40 11 messageSeq I
22 40 12 fragmentOffset I
28 40 13 fragmentLength I
33 40 14 fragment [B
MethodParameters:
Name Flags
contentType
majorVersion
minorVersion
recordEnS
recordEpoch
recordSeq
plaintextFragment
}
SourceFile: "DTLSInputRecord.java"
NestMembers:
sun.security.ssl.DTLSInputRecord$DTLSReassembler sun.security.ssl.DTLSInputRecord$HandshakeFlight sun.security.ssl.DTLSInputRecord$HandshakeFragment sun.security.ssl.DTLSInputRecord$HoleDescriptor sun.security.ssl.DTLSInputRecord$RecordFragment
InnerClasses:
final DTLSReassembler = sun.security.ssl.DTLSInputRecord$DTLSReassembler of sun.security.ssl.DTLSInputRecord
private final HandshakeFlight = sun.security.ssl.DTLSInputRecord$HandshakeFlight of sun.security.ssl.DTLSInputRecord
private final HandshakeFragment = sun.security.ssl.DTLSInputRecord$HandshakeFragment of sun.security.ssl.DTLSInputRecord
private final HoleDescriptor = sun.security.ssl.DTLSInputRecord$HoleDescriptor of sun.security.ssl.DTLSInputRecord
private RecordFragment = sun.security.ssl.DTLSInputRecord$RecordFragment of sun.security.ssl.DTLSInputRecord