final class sun.security.ssl.SSLEngineOutputRecord extends sun.security.ssl.OutputRecord implements sun.security.ssl.SSLRecord
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.SSLEngineOutputRecord
super_class: sun.security.ssl.OutputRecord
{
private sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment fragmenter;
descriptor: Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
flags: (0x0002) ACC_PRIVATE
private java.util.LinkedList<sun.security.ssl.SSLEngineOutputRecord$RecordMemo> alertMemos;
descriptor: Ljava/util/LinkedList;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/LinkedList<Lsun/security/ssl/SSLEngineOutputRecord$RecordMemo;>;
private boolean isTalkingToV2;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.nio.ByteBuffer v2ClientHello;
descriptor: Ljava/nio/ByteBuffer;
flags: (0x0002) ACC_PRIVATE
private boolean isCloseWaiting;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, 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.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
2: aload 0
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putfield sun.security.ssl.SSLEngineOutputRecord.alertMemos:Ljava/util/LinkedList;
3: aload 0
iconst_0
putfield sun.security.ssl.SSLEngineOutputRecord.isTalkingToV2:Z
4: aload 0
aconst_null
putfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
5: aload 0
iconst_0
putfield sun.security.ssl.SSLEngineOutputRecord.isCloseWaiting:Z
6: aload 0
getstatic sun.security.ssl.MAC.TLS_NULL:Lsun/security/ssl/MAC;
putfield sun.security.ssl.SSLEngineOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
7: aload 0
sipush 16709
putfield sun.security.ssl.SSLEngineOutputRecord.packetSize:I
8: aload 0
getstatic sun.security.ssl.ProtocolVersion.DEFAULT_TLS:Lsun/security/ssl/ProtocolVersion;
putfield sun.security.ssl.SSLEngineOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
9: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/security/ssl/SSLEngineOutputRecord;
public synchronized void close();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.isClosed:Z
ifne 5
1: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.alertMemos:Ljava/util/LinkedList;
ifnull 4
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.alertMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.isEmpty:()Z
ifne 4
2: aload 0
iconst_1
putfield sun.security.ssl.SSLEngineOutputRecord.isCloseWaiting:Z
3: goto 5
4: StackMap locals:
StackMap stack:
aload 0
invokespecial sun.security.ssl.OutputRecord.close:()V
5: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/ssl/SSLEngineOutputRecord;
Exceptions:
throws java.io.IOException
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.SSLEngineOutputRecord$RecordMemo
dup
invokespecial sun.security.ssl.SSLEngineOutputRecord$RecordMemo.<init>:()V
astore 3
start local 3 1: aload 3
bipush 21
putfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.contentType:B
2: aload 3
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.major:B
putfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.majorVersion:B
3: aload 3
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.minor:B
putfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.minorVersion:B
4: aload 3
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
putfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/CipherBox;
5: aload 3
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
putfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
6: aload 3
iconst_2
newarray 8
putfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.fragment:[B
7: aload 3
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.fragment:[B
iconst_0
iload 1
bastore
8: aload 3
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.fragment:[B
iconst_1
iload 2
bastore
9: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.alertMemos:Ljava/util/LinkedList;
aload 3
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
10: return
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/SSLEngineOutputRecord;
0 11 1 level B
0 11 2 description B
1 11 3 memo Lsun/security/ssl/SSLEngineOutputRecord$RecordMemo;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
level
description
void encodeHandshake(byte[], int, int);
descriptor: ([BII)V
flags: (0x0000)
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
ifnonnull 2
1: aload 0
new sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment
dup
aload 0
invokespecial sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment.<init>:(Lsun/security/ssl/SSLEngineOutputRecord;)V
putfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.firstMessage:Z
ifeq 14
3: aload 0
iconst_0
putfield sun.security.ssl.SSLEngineOutputRecord.firstMessage:Z
4: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.helloVersion:Lsun/security/ssl/ProtocolVersion;
getstatic sun.security.ssl.ProtocolVersion.SSL20Hello:Lsun/security/ssl/ProtocolVersion;
if_acmpne 14
5: aload 1
iload 2
baload
iconst_1
if_icmpne 14
6: aload 1
iload 2
iconst_4
iadd
iconst_2
iadd
bipush 32
iadd
baload
ifne 14
7: aload 0
8: aload 1
iload 2
iconst_4
iadd
iload 3
iconst_4
isub
9: invokestatic sun.security.ssl.SSLEngineOutputRecord.encodeV2ClientHello:([BII)Ljava/nio/ByteBuffer;
putfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
10: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
iconst_2
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
11: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
invokevirtual sun.security.ssl.HandshakeHash.update:(Ljava/nio/ByteBuffer;)V
12: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
iconst_0
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
13: return
14: StackMap locals:
StackMap stack:
aload 1
iload 2
baload
istore 4
start local 4 15: iload 4
ifeq 17
16: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 1
iload 2
iload 3
invokevirtual sun.security.ssl.HandshakeHash.update:([BII)V
17: StackMap locals: int
StackMap stack:
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
aload 1
iload 2
iload 3
invokevirtual sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment.queueUpFragment:([BII)V
18: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lsun/security/ssl/SSLEngineOutputRecord;
0 19 1 source [B
0 19 2 offset I
0 19 3 length I
15 19 4 handshakeType B
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
source
offset
length
void encodeChangeCipherSpec();
descriptor: ()V
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
ifnonnull 2
1: aload 0
new sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment
dup
aload 0
invokespecial sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment.<init>:(Lsun/security/ssl/SSLEngineOutputRecord;)V
putfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
invokevirtual sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment.queueUpChangeCipherSpec:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/SSLEngineOutputRecord;
Exceptions:
throws java.io.IOException
void encodeV2NoCipher();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
putfield sun.security.ssl.SSLEngineOutputRecord.isTalkingToV2:Z
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/SSLEngineOutputRecord;
Exceptions:
throws java.io.IOException
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=20, 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.SSLEngineOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
invokevirtual sun.security.ssl.Authenticator.seqNumOverflow:()Z
ifeq 7
1: getstatic sun.security.ssl.SSLEngineOutputRecord.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.SSLEngineOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
instanceof sun.security.ssl.MAC
ifeq 10
9: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.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 4
invokevirtual java.nio.ByteBuffer.limit:()I
istore 6
start local 6 11: iconst_1
istore 7
start local 7 12: sipush 16709
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.packetSize:I
invokestatic java.lang.Math.min:(II)I
istore 8
start local 8 13: iconst_1
istore 9
start local 9 14: lconst_0
lstore 10
start local 10 15: goto 77
16: StackMap locals: sun.security.ssl.SSLEngineOutputRecord java.nio.ByteBuffer[] int int java.nio.ByteBuffer int int int int int long
StackMap stack:
iload 7
ifeq 21
aload 0
invokevirtual sun.security.ssl.SSLEngineOutputRecord.needToSplitPayload:()Z
ifeq 21
17: iconst_1
istore 9
18: iconst_1
istore 12
start local 12 19: iconst_0
istore 7
20: goto 31
end local 12 21: StackMap locals:
StackMap stack:
iconst_0
istore 9
22: iload 8
ifle 28
23: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
24: iload 8
iload 5
iconst_5
25: invokevirtual sun.security.ssl.CipherBox.calculateFragmentSize:(III)I
istore 12
start local 12 26: iload 12
sipush 16384
invokestatic java.lang.Math.min:(II)I
istore 12
27: goto 29
end local 12 28: StackMap locals:
StackMap stack:
sipush 16384
istore 12
start local 12 29: StackMap locals: int
StackMap stack:
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmentSize:I
ifle 31
30: iload 12
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmentSize:I
invokestatic java.lang.Math.min:(II)I
istore 12
31: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.nio.ByteBuffer.position:()I
istore 13
start local 13 32: iload 13
iconst_5
iadd
33: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
invokevirtual sun.security.ssl.CipherBox.getExplicitNonceSize:()I
34: iadd
istore 14
start local 14 35: aload 4
iload 14
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
36: iload 12
aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
invokestatic java.lang.Math.min:(II)I
istore 15
start local 15 37: iconst_0
istore 12
38: iload 2
iload 3
iadd
istore 16
start local 16 39: iload 2
istore 17
start local 17 40: goto 52
41: StackMap locals: sun.security.ssl.SSLEngineOutputRecord java.nio.ByteBuffer[] int int java.nio.ByteBuffer int int int int int long int int int int int int
StackMap stack:
aload 1
iload 17
aaload
invokevirtual java.nio.ByteBuffer.remaining:()I
iload 15
invokestatic java.lang.Math.min:(II)I
istore 18
start local 18 42: aload 1
iload 17
aaload
invokevirtual java.nio.ByteBuffer.limit:()I
istore 19
start local 19 43: aload 1
iload 17
aaload
aload 1
iload 17
aaload
invokevirtual java.nio.ByteBuffer.position:()I
iload 18
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
44: aload 4
aload 1
iload 17
aaload
invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
pop
45: aload 1
iload 17
aaload
iload 19
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
46: iload 15
iload 18
isub
istore 15
47: iload 12
iload 18
iadd
istore 12
48: iload 15
ifle 51
49: iinc 2 1
50: iinc 3 -1
end local 19 end local 18 51: StackMap locals:
StackMap stack:
iinc 17 1
StackMap locals:
StackMap stack:
52: iload 17
iload 16
if_icmpge 53
iload 15
ifgt 41
end local 17 53: StackMap locals:
StackMap stack:
aload 4
aload 4
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
54: aload 4
iload 14
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
55: getstatic sun.security.ssl.SSLEngineOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 61
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 61
56: 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
57: ldc ", WRITE: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.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;
58: bipush 23
invokestatic sun.security.ssl.Record.contentName:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
59: 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;
60: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
61: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
62: bipush 23
aload 4
63: iload 13
iload 6
iconst_5
64: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
iconst_0
65: invokestatic sun.security.ssl.SSLEngineOutputRecord.encrypt:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/CipherBox;BLjava/nio/ByteBuffer;IIILsun/security/ssl/ProtocolVersion;Z)J
lstore 10
66: getstatic sun.security.ssl.SSLEngineOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 73
ldc "packet"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 73
67: aload 4
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 17
start local 17 68: aload 17
aload 17
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
69: aload 17
iload 13
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
70: new java.lang.StringBuilder
dup
ldc "[Raw write]: length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 17
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
71: aload 17
72: invokestatic sun.security.ssl.Debug.printHex:(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
end local 17 73: StackMap locals:
StackMap stack:
iload 8
aload 4
invokevirtual java.nio.ByteBuffer.position:()I
iload 13
isub
isub
istore 8
74: aload 4
iload 6
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
75: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.isFirstAppOutputRecord:Z
ifeq 77
76: aload 0
iconst_0
putfield sun.security.ssl.SSLEngineOutputRecord.isFirstAppOutputRecord:Z
end local 16 end local 15 end local 14 end local 13 end local 12 77: StackMap locals: sun.security.ssl.SSLEngineOutputRecord java.nio.ByteBuffer[] int int java.nio.ByteBuffer int int int int int long
StackMap stack:
iload 9
ifne 16
78: new sun.security.ssl.Ciphertext
dup
getstatic sun.security.ssl.Ciphertext$RecordType.RECORD_APPLICATION_DATA:Lsun/security/ssl/Ciphertext$RecordType;
lload 10
invokespecial sun.security.ssl.Ciphertext.<init>:(Lsun/security/ssl/Ciphertext$RecordType;J)V
areturn
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 79 0 this Lsun/security/ssl/SSLEngineOutputRecord;
0 79 1 sources [Ljava/nio/ByteBuffer;
0 79 2 offset I
0 79 3 length I
0 79 4 destination Ljava/nio/ByteBuffer;
8 79 5 macLen I
11 79 6 dstLim I
12 79 7 isFirstRecordOfThePayload Z
13 79 8 packetLeftSize I
14 79 9 needMorePayload Z
15 79 10 recordSN J
19 21 12 fragLen I
26 28 12 fragLen I
29 77 12 fragLen I
32 77 13 dstPos I
35 77 14 dstContent I
37 77 15 remains I
39 77 16 srcsLen I
40 53 17 i I
42 51 18 amount I
43 51 19 srcLimit I
68 73 17 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.SSLEngineOutputRecord.isTalkingToV2:Z
ifeq 8
1: aload 1
getstatic sun.security.ssl.SSLRecord.v2NoCipher:[B
invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
pop
2: getstatic sun.security.ssl.SSLEngineOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 6
ldc "packet"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 6
3: new java.lang.StringBuilder
dup
ldc "[Raw write]: length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
getstatic sun.security.ssl.SSLRecord.v2NoCipher:[B
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
4: getstatic sun.security.ssl.SSLRecord.v2NoCipher:[B
5: invokestatic sun.security.ssl.Debug.printHex:(Ljava/lang/String;[B)V
6: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.SSLEngineOutputRecord.isTalkingToV2:Z
7: new sun.security.ssl.Ciphertext
dup
getstatic sun.security.ssl.Ciphertext$RecordType.RECORD_ALERT:Lsun/security/ssl/Ciphertext$RecordType;
ldc -1
invokespecial sun.security.ssl.Ciphertext.<init>:(Lsun/security/ssl/Ciphertext$RecordType;J)V
areturn
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
ifnull 22
9: getstatic sun.security.ssl.SSLEngineOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 19
10: ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 15
11: 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
12: ldc ", WRITE: SSLv2 ClientHello message"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
13: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
14: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
15: StackMap locals:
StackMap stack:
ldc "packet"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 19
16: new java.lang.StringBuilder
dup
ldc "[Raw write]: length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
17: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
18: invokestatic sun.security.ssl.Debug.printHex:(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
19: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
pop
20: aload 0
aconst_null
putfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
21: new sun.security.ssl.Ciphertext
dup
getstatic sun.security.ssl.Ciphertext$RecordType.RECORD_CLIENT_HELLO:Lsun/security/ssl/Ciphertext$RecordType;
ldc -1
invokespecial sun.security.ssl.Ciphertext.<init>:(Lsun/security/ssl/Ciphertext$RecordType;J)V
areturn
22: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.alertMemos:Ljava/util/LinkedList;
ifnull 60
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.alertMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.isEmpty:()Z
ifne 60
23: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.alertMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.pop:()Ljava/lang/Object;
checkcast sun.security.ssl.SSLEngineOutputRecord$RecordMemo
astore 2
start local 2 24: aload 2
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
instanceof sun.security.ssl.MAC
ifeq 26
25: aload 2
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
checkcast sun.security.ssl.MAC
invokevirtual sun.security.ssl.MAC.MAClen:()I
pop
26: StackMap locals: sun.security.ssl.SSLEngineOutputRecord$RecordMemo
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 3
start local 3 27: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 4
start local 4 28: iload 3
iconst_5
iadd
29: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
invokevirtual sun.security.ssl.CipherBox.getExplicitNonceSize:()I
30: iadd
istore 5
start local 5 31: aload 1
iload 5
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
32: aload 1
aload 2
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.fragment:[B
invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
pop
33: aload 1
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
34: aload 1
iload 5
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
35: getstatic sun.security.ssl.SSLEngineOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 41
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 41
36: 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
37: ldc ", WRITE: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.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;
38: bipush 21
invokestatic sun.security.ssl.Record.contentName:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
39: 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;
40: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
41: StackMap locals: int int int
StackMap stack:
aload 2
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
aload 2
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/CipherBox;
42: bipush 21
aload 1
iload 3
iload 4
iconst_5
43: aload 2
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.majorVersion:B
44: aload 2
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.minorVersion:B
45: invokestatic sun.security.ssl.ProtocolVersion.valueOf:(II)Lsun/security/ssl/ProtocolVersion;
46: iconst_0
47: invokestatic sun.security.ssl.SSLEngineOutputRecord.encrypt:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/CipherBox;BLjava/nio/ByteBuffer;IIILsun/security/ssl/ProtocolVersion;Z)J
lstore 6
start local 6 48: getstatic sun.security.ssl.SSLEngineOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 55
ldc "packet"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 55
49: aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 8
start local 8 50: aload 8
aload 8
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
51: aload 8
iload 3
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
52: 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;
53: aload 8
54: invokestatic sun.security.ssl.Debug.printHex:(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
end local 8 55: StackMap locals: long
StackMap stack:
aload 1
iload 4
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
56: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.isCloseWaiting:Z
ifeq 59
aload 2
getfield sun.security.ssl.SSLEngineOutputRecord$RecordMemo.contentType:B
bipush 21
if_icmpne 59
57: aload 0
iconst_1
putfield sun.security.ssl.SSLEngineOutputRecord.isCloseWaiting:Z
58: aload 0
invokevirtual sun.security.ssl.SSLEngineOutputRecord.close:()V
59: StackMap locals:
StackMap stack:
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 60: StackMap locals: sun.security.ssl.SSLEngineOutputRecord java.nio.ByteBuffer
StackMap stack:
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
ifnull 62
61: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
aload 1
invokevirtual sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment.acquireCiphertext:(Ljava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
areturn
62: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 63 0 this Lsun/security/ssl/SSLEngineOutputRecord;
0 63 1 destination Ljava/nio/ByteBuffer;
24 60 2 memo Lsun/security/ssl/SSLEngineOutputRecord$RecordMemo;
27 60 3 dstPos I
28 60 4 dstLim I
31 60 5 dstContent I
48 60 6 recordSN J
50 55 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.SSLEngineOutputRecord.isTalkingToV2:Z
ifne 4
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.v2ClientHello:Ljava/nio/ByteBuffer;
ifnonnull 4
1: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
ifnull 2
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.fragmenter:Lsun/security/ssl/SSLEngineOutputRecord$HandshakeFragment;
invokevirtual sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment.isEmpty:()Z
ifeq 4
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.alertMemos:Ljava/util/LinkedList;
ifnull 3
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.alertMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.isEmpty:()Z
ifeq 4
3: StackMap locals:
StackMap stack:
iconst_1
ireturn
StackMap locals:
StackMap stack:
4: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/SSLEngineOutputRecord;
boolean needToSplitPayload();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifne 4
1: aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.writeCipher:Lsun/security/ssl/CipherBox;
invokevirtual sun.security.ssl.CipherBox.isCBCMode:()Z
ifeq 4
aload 0
getfield sun.security.ssl.SSLEngineOutputRecord.isFirstAppOutputRecord:Z
ifne 4
2: getstatic sun.security.ssl.Record.enableCBCProtection:Z
ifeq 4
3: iconst_1
ireturn
StackMap locals:
StackMap stack:
4: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/SSLEngineOutputRecord;
}
SourceFile: "SSLEngineOutputRecord.java"
NestMembers:
sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment sun.security.ssl.SSLEngineOutputRecord$HandshakeMemo sun.security.ssl.SSLEngineOutputRecord$RecordMemo
InnerClasses:
final RecordType = sun.security.ssl.Ciphertext$RecordType of sun.security.ssl.Ciphertext
final HandshakeFragment = sun.security.ssl.SSLEngineOutputRecord$HandshakeFragment of sun.security.ssl.SSLEngineOutputRecord
private HandshakeMemo = sun.security.ssl.SSLEngineOutputRecord$HandshakeMemo of sun.security.ssl.SSLEngineOutputRecord
private RecordMemo = sun.security.ssl.SSLEngineOutputRecord$RecordMemo of sun.security.ssl.SSLEngineOutputRecord