class sun.security.ssl.OutputRecord extends java.io.ByteArrayOutputStream implements sun.security.ssl.Record
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.security.ssl.OutputRecord
super_class: java.io.ByteArrayOutputStream
{
private sun.security.ssl.HandshakeHash handshakeHash;
descriptor: Lsun/security/ssl/HandshakeHash;
flags: (0x0002) ACC_PRIVATE
private int lastHashed;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean firstMessage;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private final byte contentType;
descriptor: B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
sun.security.ssl.ProtocolVersion protocolVersion;
descriptor: Lsun/security/ssl/ProtocolVersion;
flags: (0x0000)
private sun.security.ssl.ProtocolVersion helloVersion;
descriptor: Lsun/security/ssl/ProtocolVersion;
flags: (0x0002) ACC_PRIVATE
static final sun.security.ssl.Debug debug;
descriptor: Lsun/security/ssl/Debug;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static int[] V3toV2CipherMap1;
descriptor: [I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static int[] V3toV2CipherMap3;
descriptor: [I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
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=4, locals=0, args_size=0
0: ldc Lsun/security/ssl/OutputRecord;
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.OutputRecord.$assertionsDisabled:Z
3: ldc "ssl"
invokestatic sun.security.ssl.Debug.getInstance:(Ljava/lang/String;)Lsun/security/ssl/Debug;
putstatic sun.security.ssl.OutputRecord.debug:Lsun/security/ssl/Debug;
4: bipush 11
newarray 10
dup
iconst_0
iconst_m1
iastore
dup
iconst_1
iconst_m1
iastore
dup
iconst_2
iconst_m1
iastore
dup
iconst_3
iconst_2
iastore
dup
iconst_4
iconst_1
iastore
dup
iconst_5
iconst_m1
iastore
dup
bipush 6
iconst_4
iastore
dup
bipush 7
iconst_5
iastore
dup
bipush 8
iconst_m1
iastore
dup
bipush 9
bipush 6
iastore
dup
bipush 10
bipush 7
iastore
5: putstatic sun.security.ssl.OutputRecord.V3toV2CipherMap1:[I
6: bipush 11
newarray 10
dup
iconst_0
iconst_m1
iastore
dup
iconst_1
iconst_m1
iastore
dup
iconst_2
iconst_m1
iastore
dup
iconst_3
sipush 128
iastore
dup
iconst_4
sipush 128
iastore
dup
iconst_5
iconst_m1
iastore
dup
bipush 6
sipush 128
iastore
dup
bipush 7
sipush 128
iastore
dup
bipush 8
iconst_m1
iastore
dup
bipush 9
bipush 64
iastore
dup
bipush 10
sipush 192
iastore
7: putstatic sun.security.ssl.OutputRecord.V3toV2CipherMap3:[I
8: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(byte, int);
descriptor: (BI)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 2
invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
1: aload 0
getstatic sun.security.ssl.ProtocolVersion.DEFAULT:Lsun/security/ssl/ProtocolVersion;
putfield sun.security.ssl.OutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
2: aload 0
getstatic sun.security.ssl.ProtocolVersion.DEFAULT_HELLO:Lsun/security/ssl/ProtocolVersion;
putfield sun.security.ssl.OutputRecord.helloVersion:Lsun/security/ssl/ProtocolVersion;
3: aload 0
iconst_1
putfield sun.security.ssl.OutputRecord.firstMessage:Z
4: aload 0
iconst_5
putfield sun.security.ssl.OutputRecord.count:I
5: aload 0
iload 1
putfield sun.security.ssl.OutputRecord.contentType:B
6: aload 0
aload 0
getfield sun.security.ssl.OutputRecord.count:I
putfield sun.security.ssl.OutputRecord.lastHashed: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/OutputRecord;
0 8 1 type B
0 8 2 size I
MethodParameters:
Name Flags
type
size
void <init>(byte);
descriptor: (B)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
iload 1
invokestatic sun.security.ssl.OutputRecord.recordSize:(B)I
invokespecial sun.security.ssl.OutputRecord.<init>:(BI)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/OutputRecord;
0 2 1 type B
MethodParameters:
Name Flags
type
private static int recordSize(byte);
descriptor: (B)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: iload 0
bipush 20
if_icmpeq 1
iload 0
bipush 21
if_icmpne 2
1: StackMap locals:
StackMap stack:
sipush 539
ireturn
2: StackMap locals:
StackMap stack:
sipush 16921
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 type B
MethodParameters:
Name Flags
type
synchronized void setVersion(sun.security.ssl.ProtocolVersion);
descriptor: (Lsun/security/ssl/ProtocolVersion;)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield sun.security.ssl.OutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/OutputRecord;
0 2 1 protocolVersion Lsun/security/ssl/ProtocolVersion;
MethodParameters:
Name Flags
protocolVersion
synchronized void setHelloVersion(sun.security.ssl.ProtocolVersion);
descriptor: (Lsun/security/ssl/ProtocolVersion;)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield sun.security.ssl.OutputRecord.helloVersion:Lsun/security/ssl/ProtocolVersion;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/OutputRecord;
0 2 1 helloVersion Lsun/security/ssl/ProtocolVersion;
MethodParameters:
Name Flags
helloVersion
public synchronized void reset();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.io.ByteArrayOutputStream.reset:()V
1: aload 0
iconst_5
putfield sun.security.ssl.OutputRecord.count:I
2: aload 0
aload 0
getfield sun.security.ssl.OutputRecord.count:I
putfield sun.security.ssl.OutputRecord.lastHashed:I
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/OutputRecord;
void setHandshakeHash(sun.security.ssl.HandshakeHash);
descriptor: (Lsun/security/ssl/HandshakeHash;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: getstatic sun.security.ssl.OutputRecord.$assertionsDisabled:Z
ifne 1
aload 0
getfield sun.security.ssl.OutputRecord.contentType:B
bipush 22
if_icmpeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield sun.security.ssl.OutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/OutputRecord;
0 3 1 handshakeHash Lsun/security/ssl/HandshakeHash;
MethodParameters:
Name Flags
handshakeHash
void doHashes();
descriptor: ()V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.OutputRecord.count:I
aload 0
getfield sun.security.ssl.OutputRecord.lastHashed:I
isub
istore 1
start local 1 1: iload 1
ifle 4
2: aload 0
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
aload 0
getfield sun.security.ssl.OutputRecord.lastHashed:I
iload 1
invokevirtual sun.security.ssl.OutputRecord.hashInternal:([BII)V
3: aload 0
aload 0
getfield sun.security.ssl.OutputRecord.count:I
putfield sun.security.ssl.OutputRecord.lastHashed:I
4: StackMap locals: int
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/OutputRecord;
1 5 1 len I
private void hashInternal(byte[], int, int);
descriptor: ([BII)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic sun.security.ssl.OutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 10
ldc "data"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 10
1: new sun.misc.HexDumpEncoder
dup
invokespecial sun.misc.HexDumpEncoder.<init>:()V
astore 4
start local 4 2: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "[write] MD5 and SHA1 hashes: len = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
3: iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
4: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
5: aload 4
new java.io.ByteArrayInputStream
dup
aload 1
6: aload 0
getfield sun.security.ssl.OutputRecord.lastHashed:I
iload 3
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
getstatic java.lang.System.out:Ljava/io/PrintStream;
7: invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
end local 4 8: goto 10
StackMap locals:
StackMap stack: java.io.IOException
9: pop
10: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.OutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 1
aload 0
getfield sun.security.ssl.OutputRecord.lastHashed:I
iload 3
invokevirtual sun.security.ssl.HandshakeHash.update:([BII)V
11: aload 0
aload 0
getfield sun.security.ssl.OutputRecord.count:I
putfield sun.security.ssl.OutputRecord.lastHashed:I
12: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lsun/security/ssl/OutputRecord;
0 13 1 buf [B
0 13 2 offset I
0 13 3 len I
2 8 4 hd Lsun/misc/HexDumpEncoder;
Exception table:
from to target type
1 8 9 Class java.io.IOException
MethodParameters:
Name Flags
buf
offset
len
boolean isEmpty();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.OutputRecord.count:I
iconst_5
if_icmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/OutputRecord;
boolean isAlert(byte);
descriptor: (B)Z
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.OutputRecord.count:I
bipush 6
if_icmple 3
aload 0
getfield sun.security.ssl.OutputRecord.contentType:B
bipush 21
if_icmpne 3
1: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
bipush 6
baload
iload 1
if_icmpne 2
iconst_1
ireturn
StackMap locals:
StackMap stack:
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/OutputRecord;
0 4 1 description B
MethodParameters:
Name Flags
description
void addMAC(sun.security.ssl.MAC);
descriptor: (Lsun/security/ssl/MAC;)V
flags: (0x0000)
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.OutputRecord.contentType:B
bipush 22
if_icmpne 2
1: aload 0
invokevirtual sun.security.ssl.OutputRecord.doHashes:()V
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual sun.security.ssl.MAC.MAClen:()I
ifeq 7
3: aload 1
aload 0
getfield sun.security.ssl.OutputRecord.contentType:B
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
4: iconst_5
aload 0
getfield sun.security.ssl.OutputRecord.count:I
iconst_5
isub
iconst_0
5: invokevirtual sun.security.ssl.MAC.compute:(B[BIIZ)[B
astore 2
start local 2 6: aload 0
aload 2
invokevirtual sun.security.ssl.OutputRecord.write:([B)V
end local 2 7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/ssl/OutputRecord;
0 8 1 signer Lsun/security/ssl/MAC;
6 7 2 hash [B
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
signer
void encrypt(sun.security.ssl.CipherBox);
descriptor: (Lsun/security/ssl/CipherBox;)V
flags: (0x0000)
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.OutputRecord.count:I
iconst_5
isub
istore 2
start local 2 1: aload 0
iconst_5
aload 1
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_5
iload 2
invokevirtual sun.security.ssl.CipherBox.encrypt:([BII)I
iadd
putfield sun.security.ssl.OutputRecord.count:I
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/OutputRecord;
0 3 1 box Lsun/security/ssl/CipherBox;
1 3 2 len I
MethodParameters:
Name Flags
box
final int availableDataBytes();
descriptor: ()I
flags: (0x0010) ACC_FINAL
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.OutputRecord.count:I
iconst_5
isub
istore 1
start local 1 1: sipush 16384
iload 1
isub
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/OutputRecord;
1 2 1 dataSize I
private void ensureCapacity(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: iload 1
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
arraylength
if_icmple 2
1: aload 0
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iload 1
invokestatic java.util.Arrays.copyOf:([BI)[B
putfield sun.security.ssl.OutputRecord.buf:[B
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/OutputRecord;
0 3 1 minCapacity I
MethodParameters:
Name Flags
minCapacity
final byte contentType();
descriptor: ()B
flags: (0x0010) ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.OutputRecord.contentType:B
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/OutputRecord;
void write(java.io.OutputStream, boolean, java.io.ByteArrayOutputStream);
descriptor: (Ljava/io/OutputStream;ZLjava/io/ByteArrayOutputStream;)V
flags: (0x0000)
Code:
stack=6, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield sun.security.ssl.OutputRecord.count:I
iconst_5
if_icmpne 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.OutputRecord.count:I
iconst_5
isub
istore 4
start local 4 3: iload 4
ifge 7
4: new javax.net.ssl.SSLException
dup
new java.lang.StringBuilder
dup
ldc "output record size too small: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
5: iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: invokespecial javax.net.ssl.SSLException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: int
StackMap stack:
getstatic sun.security.ssl.OutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 16
8: ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifne 9
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 16
9: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.OutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 10
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifne 11
10: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.security.ssl.OutputRecord.contentType:()B
bipush 20
if_icmpne 16
11: 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
12: ldc ", WRITE: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.OutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
13: ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual sun.security.ssl.OutputRecord.contentType:()B
invokestatic sun.security.ssl.InputRecord.contentName:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
14: 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;
15: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
16: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.OutputRecord.firstMessage:Z
ifeq 31
aload 0
invokevirtual sun.security.ssl.OutputRecord.useV2Hello:()Z
ifeq 31
17: iload 4
iconst_4
isub
newarray 8
astore 5
start local 5 18: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
bipush 9
aload 5
iconst_0
aload 5
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
19: aload 0
aload 5
invokevirtual sun.security.ssl.OutputRecord.V3toV2ClientHello:([B)V
20: aload 0
getfield sun.security.ssl.OutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
invokevirtual sun.security.ssl.HandshakeHash.reset:()V
21: aload 0
iconst_2
putfield sun.security.ssl.OutputRecord.lastHashed:I
22: aload 0
invokevirtual sun.security.ssl.OutputRecord.doHashes:()V
23: getstatic sun.security.ssl.OutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 36
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 36
24: getstatic java.lang.System.out:Ljava/io/PrintStream;
25: 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
26: ldc ", WRITE: SSLv2 client hello message"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
27: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.OutputRecord.count:I
iconst_2
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
28: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
29: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 5 30: goto 36
31: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.OutputRecord.contentType:B
bastore
32: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_1
aload 0
getfield sun.security.ssl.OutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.major:B
bastore
33: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_2
aload 0
getfield sun.security.ssl.OutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.minor:B
bastore
34: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_3
iload 4
bipush 8
ishr
i2b
bastore
35: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_4
iload 4
i2b
bastore
36: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.OutputRecord.firstMessage:Z
37: iconst_0
istore 5
start local 5 38: iload 2
ifeq 41
39: aload 0
aload 3
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.OutputRecord.count:I
iload 5
invokevirtual sun.security.ssl.OutputRecord.writeBuffer:(Ljava/io/OutputStream;[BIII)V
40: goto 51
41: StackMap locals: int
StackMap stack:
aload 3
ifnull 50
aload 3
invokevirtual java.io.ByteArrayOutputStream.size:()I
ifle 50
42: aload 3
invokevirtual java.io.ByteArrayOutputStream.size:()I
istore 6
start local 6 43: aload 0
aload 0
getfield sun.security.ssl.OutputRecord.count:I
iload 6
iadd
invokevirtual sun.security.ssl.OutputRecord.ensureCapacity:(I)V
44: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iload 6
aload 0
getfield sun.security.ssl.OutputRecord.count:I
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
45: aload 3
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
iconst_0
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_0
iload 6
46: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
47: aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
iload 6
iadd
putfield sun.security.ssl.OutputRecord.count:I
48: aload 3
invokevirtual java.io.ByteArrayOutputStream.reset:()V
49: iload 6
istore 5
end local 6 50: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.OutputRecord.count:I
iload 5
invokevirtual sun.security.ssl.OutputRecord.writeBuffer:(Ljava/io/OutputStream;[BIII)V
51: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.security.ssl.OutputRecord.reset:()V
52: return
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 53 0 this Lsun/security/ssl/OutputRecord;
0 53 1 s Ljava/io/OutputStream;
0 53 2 holdRecord Z
0 53 3 heldRecordBuffer Ljava/io/ByteArrayOutputStream;
3 53 4 length I
18 30 5 v3Msg [B
38 53 5 debugOffset I
43 50 6 heldLen I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
holdRecord
heldRecordBuffer
void writeBuffer(java.io.OutputStream, byte[], int, int, int);
descriptor: (Ljava/io/OutputStream;[BIII)V
flags: (0x0000)
Code:
stack=4, locals=8, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 1
aload 2
iload 3
iload 4
invokevirtual java.io.OutputStream.write:([BII)V
1: aload 1
invokevirtual java.io.OutputStream.flush:()V
2: getstatic sun.security.ssl.OutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 12
ldc "packet"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 12
3: new sun.misc.HexDumpEncoder
dup
invokespecial sun.misc.HexDumpEncoder.<init>:()V
astore 6
start local 6 4: aload 2
iload 3
iload 5
iadd
iload 4
iload 5
isub
5: invokestatic java.nio.ByteBuffer.wrap:([BII)Ljava/nio/ByteBuffer;
astore 7
start local 7 6: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "[Raw write]: length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
7: aload 7
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
8: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
9: aload 6
aload 7
getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/nio/ByteBuffer;Ljava/io/OutputStream;)V
end local 7 end local 6 10: goto 12
StackMap locals:
StackMap stack: java.io.IOException
11: pop
12: StackMap locals:
StackMap stack:
return
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 13 0 this Lsun/security/ssl/OutputRecord;
0 13 1 s Ljava/io/OutputStream;
0 13 2 buf [B
0 13 3 off I
0 13 4 len I
0 13 5 debugOffset I
4 10 6 hd Lsun/misc/HexDumpEncoder;
6 10 7 bb Ljava/nio/ByteBuffer;
Exception table:
from to target type
3 10 11 Class java.io.IOException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
buf
off
len
debugOffset
private boolean useV2Hello();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.OutputRecord.firstMessage:Z
ifeq 6
1: aload 0
getfield sun.security.ssl.OutputRecord.helloVersion:Lsun/security/ssl/ProtocolVersion;
getstatic sun.security.ssl.ProtocolVersion.SSL20Hello:Lsun/security/ssl/ProtocolVersion;
if_acmpne 6
2: aload 0
getfield sun.security.ssl.OutputRecord.contentType:B
bipush 22
if_icmpne 6
3: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_5
baload
iconst_1
if_icmpne 6
4: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
bipush 43
baload
ifne 6
5: iconst_1
ireturn
StackMap locals:
StackMap stack:
6: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/security/ssl/OutputRecord;
private void V3toV2ClientHello(byte[]);
descriptor: ([B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=13, args_size=2
start local 0 start local 1 0: bipush 34
istore 2
start local 2 1: aload 1
iload 2
baload
istore 3
start local 3 2: iload 2
iconst_1
iadd
iload 3
iadd
istore 4
start local 4 3: aload 1
iload 4
baload
sipush 255
iand
bipush 8
ishl
4: aload 1
iload 4
iconst_1
iadd
baload
sipush 255
iand
5: iadd
istore 5
start local 5 6: iload 5
iconst_2
idiv
istore 6
start local 6 7: iload 4
iconst_2
iadd
istore 7
start local 7 8: iconst_0
istore 8
start local 8 9: aload 0
bipush 11
putfield sun.security.ssl.OutputRecord.count:I
10: iconst_0
istore 9
start local 9 11: iconst_0
istore 10
start local 10 12: goto 20
13: StackMap locals: sun.security.ssl.OutputRecord byte[] int int int int int int int int int
StackMap stack:
aload 1
iload 7
iinc 7 1
baload
istore 11
start local 11 14: aload 1
iload 7
iinc 7 1
baload
istore 12
start local 12 15: iload 8
aload 0
iload 11
iload 12
invokevirtual sun.security.ssl.OutputRecord.V3toV2CipherSuite:(BB)I
iadd
istore 8
16: iload 9
ifne 19
17: iload 11
ifne 19
iload 12
iconst_m1
if_icmpne 19
18: iconst_1
istore 9
end local 12 end local 11 19: StackMap locals:
StackMap stack:
iinc 10 1
StackMap locals:
StackMap stack:
20: iload 10
iload 6
if_icmplt 13
end local 10 21: iload 9
ifne 23
22: iload 8
aload 0
iconst_0
iconst_m1
invokevirtual sun.security.ssl.OutputRecord.V3toV2CipherSuite:(BB)I
iadd
istore 8
23: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_2
iconst_1
bastore
24: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_3
aload 1
iconst_0
baload
bastore
25: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_4
aload 1
iconst_1
baload
bastore
26: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_5
iload 8
bipush 8
iushr
i2b
bastore
27: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
bipush 6
iload 8
i2b
bastore
28: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
bipush 7
iconst_0
bastore
29: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
bipush 8
iconst_0
bastore
30: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
bipush 9
iconst_0
bastore
31: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
bipush 10
bipush 32
bastore
32: aload 1
iconst_2
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
aload 0
getfield sun.security.ssl.OutputRecord.count:I
bipush 32
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
33: aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
bipush 32
iadd
putfield sun.security.ssl.OutputRecord.count:I
34: aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
iconst_2
isub
putfield sun.security.ssl.OutputRecord.count:I
35: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.OutputRecord.count:I
bipush 8
iushr
i2b
bastore
36: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_0
dup2
baload
sipush 128
ior
i2b
bastore
37: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
iconst_1
aload 0
getfield sun.security.ssl.OutputRecord.count:I
i2b
bastore
38: aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
iconst_2
iadd
putfield sun.security.ssl.OutputRecord.count:I
39: 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 40 0 this Lsun/security/ssl/OutputRecord;
0 40 1 v3Msg [B
1 40 2 v3SessionIdLenOffset I
2 40 3 v3SessionIdLen I
3 40 4 v3CipherSpecLenOffset I
6 40 5 v3CipherSpecLen I
7 40 6 cipherSpecs I
8 40 7 v3CipherSpecOffset I
9 40 8 v2CipherSpecLen I
11 40 9 containsRenegoInfoSCSV Z
12 21 10 i I
14 19 11 byte1 B
15 19 12 byte2 B
Exceptions:
throws javax.net.ssl.SSLException
MethodParameters:
Name Flags
v3Msg
private int V3toV2CipherSuite(byte, byte);
descriptor: (BB)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
dup_x1
iconst_1
iadd
putfield sun.security.ssl.OutputRecord.count:I
iconst_0
bastore
1: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
dup_x1
iconst_1
iadd
putfield sun.security.ssl.OutputRecord.count:I
iload 1
bastore
2: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
dup_x1
iconst_1
iadd
putfield sun.security.ssl.OutputRecord.count:I
iload 2
bastore
3: iload 2
sipush 255
iand
bipush 10
if_icmpgt 5
4: getstatic sun.security.ssl.OutputRecord.V3toV2CipherMap1:[I
iload 2
iaload
iconst_m1
if_icmpne 6
5: StackMap locals:
StackMap stack:
iconst_3
ireturn
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
dup_x1
iconst_1
iadd
putfield sun.security.ssl.OutputRecord.count:I
getstatic sun.security.ssl.OutputRecord.V3toV2CipherMap1:[I
iload 2
iaload
i2b
bastore
7: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
dup_x1
iconst_1
iadd
putfield sun.security.ssl.OutputRecord.count:I
iconst_0
bastore
8: aload 0
getfield sun.security.ssl.OutputRecord.buf:[B
aload 0
dup
getfield sun.security.ssl.OutputRecord.count:I
dup_x1
iconst_1
iadd
putfield sun.security.ssl.OutputRecord.count:I
getstatic sun.security.ssl.OutputRecord.V3toV2CipherMap3:[I
iload 2
iaload
i2b
bastore
9: bipush 6
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/security/ssl/OutputRecord;
0 10 1 byte1 B
0 10 2 byte2 B
MethodParameters:
Name Flags
byte1
byte2
}
SourceFile: "OutputRecord.java"