final class sun.security.ssl.CertificateMessage$T12CertificateProducer implements sun.security.ssl.HandshakeProducer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.CertificateMessage$T12CertificateProducer
super_class: java.lang.Object
{
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/CertificateMessage$T12CertificateProducer;
public byte[] produce(sun.security.ssl.ConnectionContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
descriptor: (Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
checkcast sun.security.ssl.HandshakeContext
astore 3
start local 3 1: aload 3
getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
ifeq 5
2: aload 0
3: aload 1
checkcast sun.security.ssl.ClientHandshakeContext
aload 2
4: invokevirtual sun.security.ssl.CertificateMessage$T12CertificateProducer.onProduceCertificate:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
areturn
5: StackMap locals: sun.security.ssl.HandshakeContext
StackMap stack:
aload 0
6: aload 1
checkcast sun.security.ssl.ServerHandshakeContext
aload 2
7: invokevirtual sun.security.ssl.CertificateMessage$T12CertificateProducer.onProduceCertificate:(Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/ssl/CertificateMessage$T12CertificateProducer;
0 8 1 context Lsun/security/ssl/ConnectionContext;
0 8 2 message Lsun/security/ssl/SSLHandshake$HandshakeMessage;
1 8 3 hc Lsun/security/ssl/HandshakeContext;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
message
private byte[] onProduceCertificate(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakePossessions:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 5
goto 6
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateProducer sun.security.ssl.ServerHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.X509Authentication$X509Possession top java.util.Iterator
StackMap stack:
2: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.SSLPossession
astore 4
start local 4 3: aload 4
instanceof sun.security.ssl.X509Authentication$X509Possession
ifeq 6
4: aload 4
checkcast sun.security.ssl.X509Authentication$X509Possession
astore 3
5: goto 7
end local 4 6: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
7: StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateProducer sun.security.ssl.ServerHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.X509Authentication$X509Possession
StackMap stack:
aload 3
ifnonnull 11
8: aload 1
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
9: ldc "No expected X.509 certificate for server authentication"
10: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
11: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
12: aload 3
getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
13: invokevirtual sun.security.ssl.SSLSessionImpl.setLocalPrivateKey:(Ljava/security/PrivateKey;)V
14: aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
aload 3
getfield sun.security.ssl.X509Authentication$X509Possession.popCerts:[Ljava/security/cert/X509Certificate;
invokevirtual sun.security.ssl.SSLSessionImpl.setLocalCertificates:([Ljava/security/cert/X509Certificate;)V
15: new sun.security.ssl.CertificateMessage$T12CertificateMessage
dup
aload 1
aload 3
getfield sun.security.ssl.X509Authentication$X509Possession.popCerts:[Ljava/security/cert/X509Certificate;
invokespecial sun.security.ssl.CertificateMessage$T12CertificateMessage.<init>:(Lsun/security/ssl/HandshakeContext;[Ljava/security/cert/X509Certificate;)V
16: astore 4
start local 4 17: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 20
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 20
18: ldc "Produced server Certificate handshake message"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 4
aastore
19: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
20: StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage
StackMap stack:
aload 4
aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
invokevirtual sun.security.ssl.CertificateMessage$T12CertificateMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
21: aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
22: aconst_null
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lsun/security/ssl/CertificateMessage$T12CertificateProducer;
0 23 1 shc Lsun/security/ssl/ServerHandshakeContext;
0 23 2 message Lsun/security/ssl/SSLHandshake$HandshakeMessage;
1 23 3 x509Possession Lsun/security/ssl/X509Authentication$X509Possession;
3 6 4 possession Lsun/security/ssl/SSLPossession;
17 23 4 cm Lsun/security/ssl/CertificateMessage$T12CertificateMessage;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
shc
message
private byte[] onProduceCertificate(sun.security.ssl.ClientHandshakeContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
descriptor: (Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakePossessions:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 5
goto 6
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateProducer sun.security.ssl.ClientHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.X509Authentication$X509Possession top java.util.Iterator
StackMap stack:
2: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.SSLPossession
astore 4
start local 4 3: aload 4
instanceof sun.security.ssl.X509Authentication$X509Possession
ifeq 6
4: aload 4
checkcast sun.security.ssl.X509Authentication$X509Possession
astore 3
5: goto 7
end local 4 6: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
7: StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateProducer sun.security.ssl.ClientHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.X509Authentication$X509Possession
StackMap stack:
aload 3
ifnonnull 20
8: aload 1
getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS10PlusSpec:()Z
ifeq 15
9: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 12
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 12
10: ldc "No X.509 certificate for client authentication, use empty Certificate message instead"
iconst_0
anewarray java.lang.Object
11: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
12: StackMap locals:
StackMap stack:
new sun.security.ssl.X509Authentication$X509Possession
dup
aconst_null
iconst_0
anewarray java.security.cert.X509Certificate
invokespecial sun.security.ssl.X509Authentication$X509Possession.<init>:(Ljava/security/PrivateKey;[Ljava/security/cert/X509Certificate;)V
13: astore 3
14: goto 20
15: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 18
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 18
16: ldc "No X.509 certificate for client authentication, send a no_certificate alert"
iconst_0
anewarray java.lang.Object
17: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
18: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.NO_CERTIFICATE:Lsun/security/ssl/Alert;
invokevirtual sun.security.ssl.TransportContext.warning:(Lsun/security/ssl/Alert;)V
19: aconst_null
areturn
20: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
21: aload 3
getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
22: invokevirtual sun.security.ssl.SSLSessionImpl.setLocalPrivateKey:(Ljava/security/PrivateKey;)V
23: aload 3
getfield sun.security.ssl.X509Authentication$X509Possession.popCerts:[Ljava/security/cert/X509Certificate;
ifnull 29
24: aload 3
getfield sun.security.ssl.X509Authentication$X509Possession.popCerts:[Ljava/security/cert/X509Certificate;
arraylength
ifeq 29
25: aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
26: aload 3
getfield sun.security.ssl.X509Authentication$X509Possession.popCerts:[Ljava/security/cert/X509Certificate;
27: invokevirtual sun.security.ssl.SSLSessionImpl.setLocalCertificates:([Ljava/security/cert/X509Certificate;)V
28: goto 30
29: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
aconst_null
invokevirtual sun.security.ssl.SSLSessionImpl.setLocalCertificates:([Ljava/security/cert/X509Certificate;)V
30: StackMap locals:
StackMap stack:
new sun.security.ssl.CertificateMessage$T12CertificateMessage
dup
aload 1
aload 3
getfield sun.security.ssl.X509Authentication$X509Possession.popCerts:[Ljava/security/cert/X509Certificate;
invokespecial sun.security.ssl.CertificateMessage$T12CertificateMessage.<init>:(Lsun/security/ssl/HandshakeContext;[Ljava/security/cert/X509Certificate;)V
31: astore 4
start local 4 32: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 35
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 35
33: ldc "Produced client Certificate handshake message"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 4
aastore
34: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
35: StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage
StackMap stack:
aload 4
aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
invokevirtual sun.security.ssl.CertificateMessage$T12CertificateMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
36: aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
37: aconst_null
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 this Lsun/security/ssl/CertificateMessage$T12CertificateProducer;
0 38 1 chc Lsun/security/ssl/ClientHandshakeContext;
0 38 2 message Lsun/security/ssl/SSLHandshake$HandshakeMessage;
1 38 3 x509Possession Lsun/security/ssl/X509Authentication$X509Possession;
3 6 4 possession Lsun/security/ssl/SSLPossession;
32 38 4 cm Lsun/security/ssl/CertificateMessage$T12CertificateMessage;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
chc
message
}
SourceFile: "CertificateMessage.java"
NestHost: sun.security.ssl.CertificateMessage
InnerClasses:
final T12CertificateMessage = sun.security.ssl.CertificateMessage$T12CertificateMessage of sun.security.ssl.CertificateMessage
private final T12CertificateProducer = sun.security.ssl.CertificateMessage$T12CertificateProducer of sun.security.ssl.CertificateMessage
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake
final X509Possession = sun.security.ssl.X509Authentication$X509Possession of sun.security.ssl.X509Authentication