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
private int readEpoch;
descriptor: I
flags: (0x0002) ACC_PRIVATE
void <init>(sun.security.ssl.HandshakeHash);
descriptor: (Lsun/security/ssl/HandshakeHash;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokestatic sun.security.ssl.SSLCipher$SSLReadCipher.nullDTlsReadCipher:()Lsun/security/ssl/SSLCipher$SSLReadCipher;
invokespecial sun.security.ssl.InputRecord.<init>:(Lsun/security/ssl/HandshakeHash;Lsun/security/ssl/SSLCipher$SSLReadCipher;)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: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/DTLSInputRecord;
0 4 1 handshakeHash Lsun/security/ssl/HandshakeHash;
MethodParameters:
Name Flags
handshakeHash
void changeReadCiphers(sun.security.ssl.SSLCipher$SSLReadCipher);
descriptor: (Lsun/security/ssl/SSLCipher$SSLReadCipher;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield sun.security.ssl.DTLSInputRecord.readCipher:Lsun/security/ssl/SSLCipher$SSLReadCipher;
1: aload 0
dup
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iconst_1
iadd
putfield sun.security.ssl.DTLSInputRecord.readEpoch:I
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/DTLSInputRecord;
0 3 1 readCipher Lsun/security/ssl/SSLCipher$SSLReadCipher;
MethodParameters:
Name Flags
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 2
1: aload 0
invokespecial sun.security.ssl.InputRecord.close:()V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 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=3, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ifle 2
1: aload 0
getfield sun.security.ssl.DTLSInputRecord.readCipher:Lsun/security/ssl/SSLCipher$SSLReadCipher;
iload 1
bipush 13
invokevirtual sun.security.ssl.SSLCipher$SSLReadCipher.estimateFragmentSize:(II)I
ireturn
2: StackMap locals:
StackMap stack:
sipush 16384
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/DTLSInputRecord;
0 3 1 packetSize 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;
void finishHandshake();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
putfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 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[], int, int);
descriptor: ([Ljava/nio/ByteBuffer;II)[Lsun/security/ssl/Plaintext;
flags: (0x0000)
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
ifnull 1
aload 1
arraylength
ifeq 1
iload 3
ifne 5
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.security.ssl.DTLSInputRecord.acquirePlaintext:()Lsun/security/ssl/Plaintext;
astore 4
start local 4 2: aload 4
ifnonnull 3
iconst_0
anewarray sun.security.ssl.Plaintext
goto 4
StackMap locals: sun.security.ssl.Plaintext
StackMap stack:
3: iconst_1
anewarray sun.security.ssl.Plaintext
dup
iconst_0
aload 4
aastore
StackMap locals:
StackMap stack: sun.security.ssl.Plaintext[]
4: areturn
end local 4 5: StackMap locals:
StackMap stack:
iload 3
iconst_1
if_icmpne 7
6: aload 0
aload 1
iload 2
aaload
invokevirtual sun.security.ssl.DTLSInputRecord.decode:(Ljava/nio/ByteBuffer;)[Lsun/security/ssl/Plaintext;
areturn
7: StackMap locals:
StackMap stack:
aload 1
8: iload 2
iload 3
bipush 13
9: invokestatic sun.security.ssl.DTLSInputRecord.extract:([Ljava/nio/ByteBuffer;III)Ljava/nio/ByteBuffer;
astore 4
start local 4 10: aload 0
aload 4
invokevirtual sun.security.ssl.DTLSInputRecord.decode:(Ljava/nio/ByteBuffer;)[Lsun/security/ssl/Plaintext;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/ssl/DTLSInputRecord;
0 11 1 srcs [Ljava/nio/ByteBuffer;
0 11 2 srcsOffset I
0 11 3 srcsLength I
2 5 4 pt Lsun/security/ssl/Plaintext;
10 11 4 packet Ljava/nio/ByteBuffer;
Exceptions:
throws java.io.IOException, javax.crypto.BadPaddingException
MethodParameters:
Name Flags
srcs
srcsOffset
srcsLength
sun.security.ssl.Plaintext[] decode(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)[Lsun/security/ssl/Plaintext;
flags: (0x0000)
Code:
stack=12, locals=16, 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.SSLLogger.isOn:Z
ifeq 4
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 4
3: ldc "Raw read"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
4: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 2
start local 2 5: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 3
start local 3 6: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
istore 4
start local 4 7: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
istore 5
start local 5 8: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
istore 6
start local 6 9: bipush 8
newarray 8
astore 7
start local 7 10: aload 1
aload 7
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
11: aload 7
iconst_0
baload
sipush 255
iand
bipush 8
ishl
12: aload 7
iconst_1
baload
sipush 255
iand
13: ior
istore 8
start local 8 14: aload 7
iconst_2
baload
i2l
ldc 255
land
bipush 40
lshl
15: aload 7
iconst_3
baload
i2l
ldc 255
land
bipush 32
lshl
16: lor
17: aload 7
iconst_4
baload
i2l
ldc 255
land
bipush 24
lshl
18: lor
19: aload 7
iconst_5
baload
i2l
ldc 255
land
bipush 16
lshl
20: lor
21: aload 7
bipush 6
baload
i2l
ldc 255
land
bipush 8
lshl
22: lor
23: aload 7
bipush 7
baload
i2l
ldc 255
land
24: lor
lstore 9
start local 9 25: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
bipush 8
ishl
26: aload 1
invokevirtual java.nio.ByteBuffer.get:()B
sipush 255
iand
27: ior
istore 11
start local 11 28: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 34
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 34
29: new java.lang.StringBuilder
dup
ldc "READ: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
30: iload 5
iload 6
invokestatic sun.security.ssl.ProtocolVersion.nameOf:(BB)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
31: ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 4
invokestatic sun.security.ssl.ContentType.nameOf:(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;
32: iload 11
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
33: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
34: StackMap locals: sun.security.ssl.DTLSInputRecord java.nio.ByteBuffer int int int int int byte[] int long int
StackMap stack:
iload 2
bipush 13
iload 11
iadd
invokestatic java.lang.Math.addExact:(II)I
istore 12
start local 12 35: aload 0
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iload 8
if_icmple 40
36: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
37: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 39
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 39
38: ldc "READ: discard this old record"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 7
aastore
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
39: StackMap locals: int
StackMap stack:
aconst_null
areturn
40: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iload 8
if_icmpge 64
41: iload 4
getstatic sun.security.ssl.ContentType.HANDSHAKE:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
if_icmpeq 43
42: iload 4
getstatic sun.security.ssl.ContentType.CHANGE_CIPHER_SPEC:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
if_icmpne 46
43: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnonnull 45
44: iload 4
getstatic sun.security.ssl.ContentType.HANDSHAKE:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
if_icmpne 46
45: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.readEpoch:I
iload 8
iconst_1
isub
if_icmpge 50
46: StackMap locals:
StackMap stack:
aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
47: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 49
ldc "verbose"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 49
48: ldc "Premature record (epoch), discard it."
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
49: StackMap locals:
StackMap stack:
aconst_null
areturn
50: StackMap locals:
StackMap stack:
iload 11
newarray 8
astore 13
start local 13 51: aload 1
aload 13
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
52: new sun.security.ssl.DTLSInputRecord$RecordFragment
dup
aload 13
iload 4
53: iload 5
iload 6
54: aload 7
iload 8
lload 9
iconst_1
55: invokespecial sun.security.ssl.DTLSInputRecord$RecordFragment.<init>:([BBBB[BIJZ)V
astore 14
start local 14 56: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnonnull 58
57: 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;
58: StackMap locals: byte[] sun.security.ssl.DTLSInputRecord$RecordFragment
StackMap stack:
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
59: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
60: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.acquirePlaintext:()Lsun/security/ssl/Plaintext;
astore 15
start local 15 61: aload 15
ifnonnull 62
aconst_null
goto 63
StackMap locals: sun.security.ssl.Plaintext
StackMap stack:
62: iconst_1
anewarray sun.security.ssl.Plaintext
dup
iconst_0
aload 15
aastore
StackMap locals:
StackMap stack: sun.security.ssl.Plaintext[]
63: areturn
end local 15 end local 14 end local 13 64: StackMap locals:
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 0
getfield sun.security.ssl.DTLSInputRecord.readCipher:Lsun/security/ssl/SSLCipher$SSLReadCipher;
iload 4
aload 1
aload 7
invokevirtual sun.security.ssl.SSLCipher$SSLReadCipher.decrypt:(BLjava/nio/ByteBuffer;[B)Lsun/security/ssl/Plaintext;
67: astore 14
start local 14 68: aload 14
getfield sun.security.ssl.Plaintext.fragment:Ljava/nio/ByteBuffer;
astore 13
start local 13 69: aload 14
getfield sun.security.ssl.Plaintext.contentType:B
istore 4
end local 14 70: goto 81
end local 13 StackMap locals:
StackMap stack: java.security.GeneralSecurityException
71: astore 14
start local 14 72: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 74
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 74
73: new java.lang.StringBuilder
dup
ldc "Discard invalid record: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 14
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
74: StackMap locals: sun.security.ssl.DTLSInputRecord java.nio.ByteBuffer int int int int int byte[] int long int int top java.security.GeneralSecurityException
StackMap stack:
aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
75: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
76: aconst_null
areturn
end local 14 77: StackMap locals: sun.security.ssl.DTLSInputRecord java.nio.ByteBuffer int int int int int byte[] int long int int
StackMap stack: java.lang.Throwable
astore 15
78: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
79: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
80: aload 15
athrow
start local 13 81: StackMap locals: java.nio.ByteBuffer
StackMap stack:
aload 1
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
82: aload 1
iload 12
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
83: iload 4
getstatic sun.security.ssl.ContentType.CHANGE_CIPHER_SPEC:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
if_icmpeq 96
84: iload 4
getstatic sun.security.ssl.ContentType.HANDSHAKE:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
if_icmpeq 96
85: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnull 90
86: 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 90
87: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 89
ldc "verbose"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 89
88: ldc "Cleanup the handshake reassembler"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
89: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
90: StackMap locals:
StackMap stack:
iconst_1
anewarray sun.security.ssl.Plaintext
dup
iconst_0
91: new sun.security.ssl.Plaintext
dup
iload 4
iload 5
iload 6
92: iload 8
aload 7
invokestatic sun.security.ssl.Authenticator.toLong:([B)J
93: aload 13
94: invokespecial sun.security.ssl.Plaintext.<init>:(BBBIJLjava/nio/ByteBuffer;)V
aastore
95: areturn
96: StackMap locals:
StackMap stack:
iload 4
getstatic sun.security.ssl.ContentType.CHANGE_CIPHER_SPEC:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
if_icmpne 117
97: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnonnull 99
98: 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;
99: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
100: new sun.security.ssl.DTLSInputRecord$RecordFragment
dup
aload 13
iload 4
101: iload 5
iload 6
102: aload 7
iload 8
lload 9
iconst_0
103: invokespecial sun.security.ssl.DTLSInputRecord$RecordFragment.<init>:(Ljava/nio/ByteBuffer;BBB[BIJZ)V
104: invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.queueUpChangeCipherSpec:(Lsun/security/ssl/DTLSInputRecord$RecordFragment;)V
105: goto 118
106: StackMap locals:
StackMap stack:
iload 4
iload 5
iload 6
107: aload 7
iload 8
lload 9
aload 13
108: invokestatic sun.security.ssl.DTLSInputRecord.parseHandshakeMessage:(BBB[BIJLjava/nio/ByteBuffer;)Lsun/security/ssl/DTLSInputRecord$HandshakeFragment;
astore 14
start local 14 109: aload 14
ifnonnull 114
110: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 113
ldc "verbose"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 113
111: ldc "Invalid handshake message, discard it."
iconst_0
anewarray java.lang.Object
112: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
113: StackMap locals: sun.security.ssl.DTLSInputRecord$HandshakeFragment
StackMap stack:
aconst_null
areturn
114: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnonnull 116
115: 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;
116: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
aload 14
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.queueUpHandshake:(Lsun/security/ssl/DTLSInputRecord$HandshakeFragment;)V
end local 14 117: StackMap locals:
StackMap stack:
aload 13
invokevirtual java.nio.ByteBuffer.remaining:()I
ifgt 106
118: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
ifnull 123
119: aload 0
getfield sun.security.ssl.DTLSInputRecord.reassembler:Lsun/security/ssl/DTLSInputRecord$DTLSReassembler;
invokevirtual sun.security.ssl.DTLSInputRecord$DTLSReassembler.acquirePlaintext:()Lsun/security/ssl/Plaintext;
astore 14
start local 14 120: aload 14
ifnonnull 121
aconst_null
goto 122
StackMap locals: sun.security.ssl.Plaintext
StackMap stack:
121: iconst_1
anewarray sun.security.ssl.Plaintext
dup
iconst_0
aload 14
aastore
StackMap locals:
StackMap stack: sun.security.ssl.Plaintext[]
122: areturn
end local 14 123: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 125
ldc "verbose"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 125
124: ldc "The reassembler is not initialized yet."
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
125: StackMap locals:
StackMap stack:
aconst_null
areturn
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 126 0 this Lsun/security/ssl/DTLSInputRecord;
0 126 1 packet Ljava/nio/ByteBuffer;
5 126 2 srcPos I
6 126 3 srcLim I
7 126 4 contentType B
8 126 5 majorVersion B
9 126 6 minorVersion B
10 126 7 recordEnS [B
14 126 8 recordEpoch I
25 126 9 recordSeq J
28 126 11 contentLen I
35 126 12 recLim I
51 64 13 fragment [B
56 64 14 buffered Lsun/security/ssl/DTLSInputRecord$RecordFragment;
61 64 15 pt Lsun/security/ssl/Plaintext;
69 71 13 plaintextFragment Ljava/nio/ByteBuffer;
81 126 13 plaintextFragment Ljava/nio/ByteBuffer;
68 70 14 plaintext Lsun/security/ssl/Plaintext;
72 77 14 gse Ljava/security/GeneralSecurityException;
109 117 14 hsFrag Lsun/security/ssl/DTLSInputRecord$HandshakeFragment;
120 123 14 pt Lsun/security/ssl/Plaintext;
Exception table:
from to target type
66 70 71 Class java.security.GeneralSecurityException
66 74 77 any
MethodParameters:
Name Flags
packet
int bytesInCompletePacket(java.nio.ByteBuffer[], int, int);
descriptor: ([Ljava/nio/ByteBuffer;II)I
flags: (0x0000)
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
iload 2
aaload
invokevirtual sun.security.ssl.DTLSInputRecord.bytesInCompletePacket:(Ljava/nio/ByteBuffer;)I
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/DTLSInputRecord;
0 1 1 srcs [Ljava/nio/ByteBuffer;
0 1 2 srcsOffset I
0 1 3 srcsLength I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
srcs
srcsOffset
srcsLength
private int bytesInCompletePacket(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=7, 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.ContentType.valueOf:(B)Lsun/security/ssl/ContentType;
ifnonnull 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
istore 4
start local 4 9: aload 1
iload 2
iconst_2
iadd
invokevirtual java.nio.ByteBuffer.get:(I)B
istore 5
start local 5 10: iload 4
iload 5
iconst_1
iconst_0
11: invokestatic sun.security.ssl.ProtocolVersion.isNegotiable:(BBZZ)Z
12: ifne 17
13: new javax.net.ssl.SSLException
dup
new java.lang.StringBuilder
dup
ldc "Unrecognized record version "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
14: iload 4
iload 5
invokestatic sun.security.ssl.ProtocolVersion.nameOf:(BB)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: ldc " , plaintext connection?"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
16: invokespecial javax.net.ssl.SSLException.<init>:(Ljava/lang/String;)V
athrow
17: StackMap locals: int int
StackMap stack:
aload 1
iload 2
bipush 11
iadd
invokevirtual java.nio.ByteBuffer.get:(I)B
sipush 255
iand
bipush 8
ishl
18: aload 1
iload 2
bipush 12
iadd
invokevirtual java.nio.ByteBuffer.get:(I)B
sipush 255
iand
19: iadd
20: bipush 13
21: iadd
istore 6
start local 6 22: iload 6
sipush 18432
if_icmple 28
23: new javax.net.ssl.SSLException
dup
24: new java.lang.StringBuilder
dup
ldc "Record overflow, fragment length ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
25: 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;
26: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
27: invokespecial javax.net.ssl.SSLException.<init>:(Ljava/lang/String;)V
athrow
28: StackMap locals: int
StackMap stack:
iload 6
ireturn
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 29 0 this Lsun/security/ssl/DTLSInputRecord;
0 29 1 packet Ljava/nio/ByteBuffer;
3 29 2 pos I
4 29 3 contentType B
9 29 4 majorVersion B
10 29 5 minorVersion B
22 29 6 fragLen I
Exceptions:
throws javax.net.ssl.SSLException
MethodParameters:
Name Flags
packet
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.SSLLogger.isOn:Z
ifeq 4
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 4
3: ldc "Discard invalid record: too small record to hold a handshake fragment"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)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.SSLLogger.isOn:Z
ifeq 31
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 31
30: ldc "Discard invalid record: not a complete handshake fragment in the record"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)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
abstract SSLReadCipher = sun.security.ssl.SSLCipher$SSLReadCipher of sun.security.ssl.SSLCipher