final class sun.security.ssl.EngineOutputRecord extends sun.security.ssl.OutputRecord
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.EngineOutputRecord
super_class: sun.security.ssl.OutputRecord
{
private sun.security.ssl.SSLEngineImpl engine;
descriptor: Lsun/security/ssl/SSLEngineImpl;
flags: (0x0002) ACC_PRIVATE
private sun.security.ssl.EngineWriter writer;
descriptor: Lsun/security/ssl/EngineWriter;
flags: (0x0002) ACC_PRIVATE
private boolean finishedMsg;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lsun/security/ssl/EngineOutputRecord;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic sun.security.ssl.EngineOutputRecord.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(byte, sun.security.ssl.SSLEngineImpl);
descriptor: (BLsun/security/ssl/SSLEngineImpl;)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
iload 1
invokestatic sun.security.ssl.EngineOutputRecord.recordSize:(B)I
invokespecial sun.security.ssl.OutputRecord.<init>:(BI)V
1: aload 0
iconst_0
putfield sun.security.ssl.EngineOutputRecord.finishedMsg:Z
2: aload 0
aload 2
putfield sun.security.ssl.EngineOutputRecord.engine:Lsun/security/ssl/SSLEngineImpl;
3: aload 0
aload 2
getfield sun.security.ssl.SSLEngineImpl.writer:Lsun/security/ssl/EngineWriter;
putfield sun.security.ssl.EngineOutputRecord.writer:Lsun/security/ssl/EngineWriter;
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/EngineOutputRecord;
0 5 1 type B
0 5 2 engine Lsun/security/ssl/SSLEngineImpl;
MethodParameters:
Name Flags
type
engine
private static int recordSize(byte);
descriptor: (B)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: iload 0
tableswitch { // 20 - 23
20: 1
21: 1
22: 2
23: 3
default: 4
}
1: StackMap locals:
StackMap stack:
sipush 539
ireturn
2: StackMap locals:
StackMap stack:
sipush 16921
ireturn
3: StackMap locals:
StackMap stack:
iconst_0
ireturn
4: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Unknown record type: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 0
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 type B
MethodParameters:
Name Flags
type
void setFinishedMsg();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
putfield sun.security.ssl.EngineOutputRecord.finishedMsg:Z
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/EngineOutputRecord;
public void flush();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
putfield sun.security.ssl.EngineOutputRecord.finishedMsg:Z
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/EngineOutputRecord;
Exceptions:
throws java.io.IOException
boolean isFinishedMsg();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.EngineOutputRecord.finishedMsg:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/EngineOutputRecord;
private void addMAC(sun.security.ssl.MAC, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/MAC;Ljava/nio/ByteBuffer;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual sun.security.ssl.MAC.MAClen:()I
ifeq 4
1: aload 1
aload 0
invokevirtual sun.security.ssl.EngineOutputRecord.contentType:()B
aload 2
iconst_0
invokevirtual sun.security.ssl.MAC.compute:(BLjava/nio/ByteBuffer;Z)[B
astore 3
start local 3 2: aload 2
aload 2
invokevirtual java.nio.ByteBuffer.limit:()I
aload 3
arraylength
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
3: aload 2
aload 3
invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
pop
end local 3 4: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/EngineOutputRecord;
0 5 1 signer Lsun/security/ssl/MAC;
0 5 2 bb Ljava/nio/ByteBuffer;
2 4 3 hash [B
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
signer
bb
void encrypt(sun.security.ssl.CipherBox, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/CipherBox;Ljava/nio/ByteBuffer;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokevirtual sun.security.ssl.CipherBox.encrypt:(Ljava/nio/ByteBuffer;)I
pop
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/EngineOutputRecord;
0 2 1 box Lsun/security/ssl/CipherBox;
0 2 2 bb Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
box
bb
void writeBuffer(java.io.OutputStream, byte[], int, int, int);
descriptor: (Ljava/io/OutputStream;[BIII)V
flags: (0x0000)
Code:
stack=4, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: iload 4
invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
aload 2
iconst_0
iload 4
invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
1: checkcast java.nio.ByteBuffer
astore 6
start local 6 2: aload 0
getfield sun.security.ssl.EngineOutputRecord.writer:Lsun/security/ssl/EngineWriter;
aload 6
invokevirtual sun.security.ssl.EngineWriter.putOutboundData:(Ljava/nio/ByteBuffer;)V
3: return
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 4 0 this Lsun/security/ssl/EngineOutputRecord;
0 4 1 s Ljava/io/OutputStream;
0 4 2 buf [B
0 4 3 off I
0 4 4 len I
0 4 5 debugOffset I
2 4 6 netBB Ljava/nio/ByteBuffer;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
buf
off
len
debugOffset
void write(sun.security.ssl.MAC, sun.security.ssl.CipherBox);
descriptor: (Lsun/security/ssl/MAC;Lsun/security/ssl/CipherBox;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual sun.security.ssl.EngineOutputRecord.contentType:()B
tableswitch { // 20 - 22
20: 1
21: 1
22: 1
default: 2
}
1: StackMap locals:
StackMap stack:
goto 3
2: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
ldc "unexpected byte buffers"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.security.ssl.EngineOutputRecord.isEmpty:()Z
ifne 9
4: aload 0
aload 1
invokevirtual sun.security.ssl.EngineOutputRecord.addMAC:(Lsun/security/ssl/MAC;)V
5: aload 0
aload 2
invokevirtual sun.security.ssl.EngineOutputRecord.encrypt:(Lsun/security/ssl/CipherBox;)V
6: aload 0
aconst_null
iconst_0
7: aconst_null
8: invokevirtual sun.security.ssl.EngineOutputRecord.write:(Ljava/io/OutputStream;ZLjava/io/ByteArrayOutputStream;)V
9: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/security/ssl/EngineOutputRecord;
0 10 1 writeMAC Lsun/security/ssl/MAC;
0 10 2 writeCipher Lsun/security/ssl/CipherBox;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
writeMAC
writeCipher
void write(sun.security.ssl.EngineArgs, sun.security.ssl.MAC, sun.security.ssl.CipherBox);
descriptor: (Lsun/security/ssl/EngineArgs;Lsun/security/ssl/MAC;Lsun/security/ssl/CipherBox;)V
flags: (0x0000)
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic sun.security.ssl.EngineOutputRecord.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual sun.security.ssl.EngineOutputRecord.contentType:()B
bipush 23
if_icmpeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 2
getstatic sun.security.ssl.MAC.NULL:Lsun/security/ssl/MAC;
if_acmpne 3
2: return
3: StackMap locals:
StackMap stack:
aload 1
invokevirtual sun.security.ssl.EngineArgs.getAppRemaining:()I
ifne 5
4: return
5: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.EngineOutputRecord.engine:Lsun/security/ssl/SSLEngineImpl;
aload 3
aload 0
getfield sun.security.ssl.EngineOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.SSLEngineImpl.needToSplitPayload:(Lsun/security/ssl/CipherBox;Lsun/security/ssl/ProtocolVersion;)Z
ifeq 12
6: aload 0
aload 1
aload 2
aload 3
iconst_1
invokevirtual sun.security.ssl.EngineOutputRecord.write:(Lsun/security/ssl/EngineArgs;Lsun/security/ssl/MAC;Lsun/security/ssl/CipherBox;I)V
7: aload 1
invokevirtual sun.security.ssl.EngineArgs.resetLim:()V
8: aload 1
invokevirtual sun.security.ssl.EngineArgs.getAppRemaining:()I
9: sipush 15846
10: invokestatic java.lang.Math.min:(II)I
istore 4
start local 4 11: goto 13
end local 4 12: StackMap locals:
StackMap stack:
aload 1
invokevirtual sun.security.ssl.EngineArgs.getAppRemaining:()I
sipush 16384
invokestatic java.lang.Math.min:(II)I
istore 4
start local 4 13: StackMap locals: int
StackMap stack:
iload 4
ifle 15
14: aload 0
aload 1
aload 2
aload 3
iload 4
invokevirtual sun.security.ssl.EngineOutputRecord.write:(Lsun/security/ssl/EngineArgs;Lsun/security/ssl/MAC;Lsun/security/ssl/CipherBox;I)V
15: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/security/ssl/EngineOutputRecord;
0 16 1 ea Lsun/security/ssl/EngineArgs;
0 16 2 writeMAC Lsun/security/ssl/MAC;
0 16 3 writeCipher Lsun/security/ssl/CipherBox;
11 12 4 length I
13 16 4 length I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
ea
writeMAC
writeCipher
void write(sun.security.ssl.EngineArgs, sun.security.ssl.MAC, sun.security.ssl.CipherBox, int);
descriptor: (Lsun/security/ssl/EngineArgs;Lsun/security/ssl/MAC;Lsun/security/ssl/CipherBox;I)V
flags: (0x0000)
Code:
stack=4, locals=10, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
getfield sun.security.ssl.EngineArgs.netData:Ljava/nio/ByteBuffer;
astore 5
start local 5 1: aload 5
invokevirtual java.nio.ByteBuffer.position:()I
istore 6
start local 6 2: aload 5
invokevirtual java.nio.ByteBuffer.limit:()I
istore 7
start local 7 3: iload 6
iconst_5
iadd
istore 8
start local 8 4: aload 5
iload 8
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
5: aload 1
iload 4
invokevirtual sun.security.ssl.EngineArgs.gather:(I)V
6: aload 5
aload 5
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
7: aload 5
iload 8
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
8: aload 0
aload 2
aload 5
invokevirtual sun.security.ssl.EngineOutputRecord.addMAC:(Lsun/security/ssl/MAC;Ljava/nio/ByteBuffer;)V
9: aload 5
aload 5
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
10: aload 5
iload 8
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
11: aload 0
aload 3
aload 5
invokevirtual sun.security.ssl.EngineOutputRecord.encrypt:(Lsun/security/ssl/CipherBox;Ljava/nio/ByteBuffer;)V
12: getstatic sun.security.ssl.EngineOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 21
13: ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifne 14
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 21
14: StackMap locals: sun.security.ssl.EngineOutputRecord sun.security.ssl.EngineArgs sun.security.ssl.MAC sun.security.ssl.CipherBox int java.nio.ByteBuffer int int int
StackMap stack:
getstatic sun.security.ssl.EngineOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 15
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifne 16
15: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.security.ssl.EngineOutputRecord.contentType:()B
bipush 20
if_icmpne 21
16: StackMap locals:
StackMap stack:
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
17: ldc ", WRITE: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.EngineOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
18: ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual sun.security.ssl.EngineOutputRecord.contentType:()B
invokestatic sun.security.ssl.InputRecord.contentName:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
20: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
21: StackMap locals:
StackMap stack:
aload 5
invokevirtual java.nio.ByteBuffer.limit:()I
iload 8
isub
istore 9
start local 9 22: aload 5
iload 6
aload 0
invokevirtual sun.security.ssl.EngineOutputRecord.contentType:()B
invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
pop
23: aload 5
iload 6
iconst_1
iadd
aload 0
getfield sun.security.ssl.EngineOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.major:B
invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
pop
24: aload 5
iload 6
iconst_2
iadd
aload 0
getfield sun.security.ssl.EngineOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.minor:B
invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
pop
25: aload 5
iload 6
iconst_3
iadd
iload 9
bipush 8
ishr
i2b
invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
pop
26: aload 5
iload 6
iconst_4
iadd
iload 9
i2b
invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
pop
27: aload 5
iload 7
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
28: return
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 29 0 this Lsun/security/ssl/EngineOutputRecord;
0 29 1 ea Lsun/security/ssl/EngineArgs;
0 29 2 writeMAC Lsun/security/ssl/MAC;
0 29 3 writeCipher Lsun/security/ssl/CipherBox;
0 29 4 length I
1 29 5 dstBB Ljava/nio/ByteBuffer;
2 29 6 dstPos I
3 29 7 dstLim I
4 29 8 dstData I
22 29 9 packetLength I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
ea
writeMAC
writeCipher
length
}
SourceFile: "EngineOutputRecord.java"