class sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl extends sun.security.ssl.ClientKeyExchange
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl
super_class: sun.security.ssl.ClientKeyExchange
{
private final sun.security.krb5.internal.ssl.KerberosPreMasterSecret preMaster;
descriptor: Lsun/security/krb5/internal/ssl/KerberosPreMasterSecret;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final byte[] encodedTicket;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final javax.security.auth.kerberos.KerberosPrincipal peerPrincipal;
descriptor: Ljavax/security/auth/kerberos/KerberosPrincipal;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final javax.security.auth.kerberos.KerberosPrincipal localPrincipal;
descriptor: Ljavax/security/auth/kerberos/KerberosPrincipal;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public int messageLength();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.encodedTicket:[B
arraylength
aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.preMaster:Lsun/security/krb5/internal/ssl/KerberosPreMasterSecret;
invokevirtual sun.security.krb5.internal.ssl.KerberosPreMasterSecret.getEncrypted:()[B
arraylength
iadd
bipush 6
iadd
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService$ExchangerImpl;
public void send(sun.security.ssl.HandshakeOutStream);
descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.encodedTicket:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
1: aload 1
aconst_null
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
2: aload 1
aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.preMaster:Lsun/security/krb5/internal/ssl/KerberosPreMasterSecret;
invokevirtual sun.security.krb5.internal.ssl.KerberosPreMasterSecret.getEncrypted:()[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService$ExchangerImpl;
0 4 1 s Lsun/security/ssl/HandshakeOutStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
public void print(java.io.PrintStream);
descriptor: (Ljava/io/PrintStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "*** ClientKeyExchange, Kerberos"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
1: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.debug:Lsun/security/ssl/Debug;
ifnull 5
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 5
2: aload 1
ldc "Kerberos service ticket"
aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.encodedTicket:[B
invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
3: aload 1
ldc "Random Secret"
aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.preMaster:Lsun/security/krb5/internal/ssl/KerberosPreMasterSecret;
invokevirtual sun.security.krb5.internal.ssl.KerberosPreMasterSecret.getUnencrypted:()[B
invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
4: aload 1
ldc "Encrypted random Secret"
aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.preMaster:Lsun/security/krb5/internal/ssl/KerberosPreMasterSecret;
invokevirtual sun.security.krb5.internal.ssl.KerberosPreMasterSecret.getEncrypted:()[B
invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService$ExchangerImpl;
0 6 1 s Ljava/io/PrintStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
void <init>(java.lang.String, java.security.AccessControlContext, sun.security.ssl.ProtocolVersion, java.security.SecureRandom);
descriptor: (Ljava/lang/String;Ljava/security/AccessControlContext;Lsun/security/ssl/ProtocolVersion;Ljava/security/SecureRandom;)V
flags: (0x0000)
Code:
stack=6, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial sun.security.ssl.ClientKeyExchange.<init>:()V
1: aload 1
aload 2
invokestatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.getServiceTicket:(Ljava/lang/String;Ljava/security/AccessControlContext;)Ljavax/security/auth/kerberos/KerberosTicket;
astore 5
start local 5 2: aload 0
aload 5
invokevirtual javax.security.auth.kerberos.KerberosTicket.getEncoded:()[B
putfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.encodedTicket:[B
3: aload 0
aload 5
invokevirtual javax.security.auth.kerberos.KerberosTicket.getServer:()Ljavax/security/auth/kerberos/KerberosPrincipal;
putfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.peerPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
4: aload 0
aload 5
invokevirtual javax.security.auth.kerberos.KerberosTicket.getClient:()Ljavax/security/auth/kerberos/KerberosPrincipal;
putfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.localPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
5: new sun.security.krb5.EncryptionKey
dup
6: aload 5
invokevirtual javax.security.auth.kerberos.KerberosTicket.getSessionKeyType:()I
7: aload 5
invokevirtual javax.security.auth.kerberos.KerberosTicket.getSessionKey:()Ljavax/crypto/SecretKey;
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
8: invokespecial sun.security.krb5.EncryptionKey.<init>:(I[B)V
astore 6
start local 6 9: aload 0
new sun.security.krb5.internal.ssl.KerberosPreMasterSecret
dup
aload 3
10: aload 4
aload 6
invokespecial sun.security.krb5.internal.ssl.KerberosPreMasterSecret.<init>:(Lsun/security/ssl/ProtocolVersion;Ljava/security/SecureRandom;Lsun/security/krb5/EncryptionKey;)V
11: putfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.preMaster:Lsun/security/krb5/internal/ssl/KerberosPreMasterSecret;
12: 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 13 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService$ExchangerImpl;
0 13 1 serverName Ljava/lang/String;
0 13 2 acc Ljava/security/AccessControlContext;
0 13 3 protocolVersion Lsun/security/ssl/ProtocolVersion;
0 13 4 rand Ljava/security/SecureRandom;
2 13 5 ticket Ljavax/security/auth/kerberos/KerberosTicket;
9 13 6 sessionKey Lsun/security/krb5/EncryptionKey;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
serverName
acc
protocolVersion
rand
void <init>(sun.security.ssl.ProtocolVersion, sun.security.ssl.ProtocolVersion, java.security.SecureRandom, byte[], byte[], java.security.AccessControlContext, java.lang.Object);
descriptor: (Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/ProtocolVersion;Ljava/security/SecureRandom;[B[BLjava/security/AccessControlContext;Ljava/lang/Object;)V
flags: (0x0000)
Code:
stack=8, locals=24, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 0
invokespecial sun.security.ssl.ClientKeyExchange.<init>:()V
1: aload 0
aload 4
putfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.encodedTicket:[B
2: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.debug:Lsun/security/ssl/Debug;
ifnull 6
ldc "verbose"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 6
3: getstatic java.lang.System.out:Ljava/io/PrintStream;
4: ldc "encoded Kerberos service ticket"
aload 4
5: invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
6: StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl sun.security.ssl.ProtocolVersion sun.security.ssl.ProtocolVersion java.security.SecureRandom byte[] byte[] java.security.AccessControlContext java.lang.Object
StackMap stack:
aconst_null
astore 8
start local 8 7: aconst_null
astore 9
start local 9 8: aconst_null
astore 10
start local 10 9: new sun.security.krb5.internal.Ticket
dup
aload 4
invokespecial sun.security.krb5.internal.Ticket.<init>:([B)V
astore 11
start local 11 10: aload 11
getfield sun.security.krb5.internal.Ticket.encPart:Lsun/security/krb5/EncryptedData;
astore 12
start local 12 11: aload 11
getfield sun.security.krb5.internal.Ticket.sname:Lsun/security/krb5/PrincipalName;
astore 13
start local 13 12: aload 7
checkcast sun.security.jgss.krb5.ServiceCreds
astore 14
start local 14 13: new javax.security.auth.kerberos.KerberosPrincipal
dup
aload 13
invokevirtual sun.security.krb5.PrincipalName.toString:()Ljava/lang/String;
invokespecial javax.security.auth.kerberos.KerberosPrincipal.<init>:(Ljava/lang/String;)V
14: astore 15
start local 15 15: aload 14
invokevirtual sun.security.jgss.krb5.ServiceCreds.getName:()Ljava/lang/String;
ifnonnull 28
16: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 16
start local 16 17: aload 16
ifnull 28
18: aload 16
new javax.security.auth.kerberos.ServicePermission
dup
19: aload 13
invokevirtual sun.security.krb5.PrincipalName.toString:()Ljava/lang/String;
ldc "accept"
invokespecial javax.security.auth.kerberos.ServicePermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
aload 6
20: invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;Ljava/lang/Object;)V
21: goto 28
StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl sun.security.ssl.ProtocolVersion sun.security.ssl.ProtocolVersion java.security.SecureRandom byte[] byte[] java.security.AccessControlContext java.lang.Object sun.security.krb5.EncryptionKey javax.security.auth.kerberos.KerberosPrincipal javax.security.auth.kerberos.KerberosPrincipal sun.security.krb5.internal.Ticket sun.security.krb5.EncryptedData sun.security.krb5.PrincipalName sun.security.jgss.krb5.ServiceCreds javax.security.auth.kerberos.KerberosPrincipal java.lang.SecurityManager
StackMap stack: java.lang.SecurityException
22: astore 17
start local 17 23: aconst_null
astore 7
24: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.debug:Lsun/security/ssl/Debug;
ifnull 27
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 27
25: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "Permission to access Kerberos secret key denied"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
26: aload 17
getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.lang.SecurityException.printStackTrace:(Ljava/io/PrintStream;)V
27: StackMap locals: java.lang.SecurityException
StackMap stack:
new java.io.IOException
dup
ldc "Kerberos service not allowedy"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
end local 17 end local 16 28: StackMap locals:
StackMap stack:
new sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$1
dup
aload 0
aload 14
aload 15
invokespecial sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$1.<init>:(Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService$ExchangerImpl;Lsun/security/jgss/krb5/ServiceCreds;Ljavax/security/auth/kerberos/KerberosPrincipal;)V
29: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast javax.security.auth.kerberos.KerberosKey[]
astore 16
start local 16 30: aload 16
arraylength
ifne 36
31: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Found no key for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 15
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32: aload 14
invokevirtual sun.security.jgss.krb5.ServiceCreds.getName:()Ljava/lang/String;
ifnonnull 33
ldc ""
goto 34
33: StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl sun.security.ssl.ProtocolVersion sun.security.ssl.ProtocolVersion java.security.SecureRandom byte[] byte[] java.security.AccessControlContext java.lang.Object sun.security.krb5.EncryptionKey javax.security.auth.kerberos.KerberosPrincipal javax.security.auth.kerberos.KerberosPrincipal sun.security.krb5.internal.Ticket sun.security.krb5.EncryptedData sun.security.krb5.PrincipalName sun.security.jgss.krb5.ServiceCreds javax.security.auth.kerberos.KerberosPrincipal javax.security.auth.kerberos.KerberosKey[]
StackMap stack: new 31 new 31 java.lang.StringBuilder
new java.lang.StringBuilder
dup
ldc ", this keytab is for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 14
invokevirtual sun.security.jgss.krb5.ServiceCreds.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " only"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
34: StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl sun.security.ssl.ProtocolVersion sun.security.ssl.ProtocolVersion java.security.SecureRandom byte[] byte[] java.security.AccessControlContext java.lang.Object sun.security.krb5.EncryptionKey javax.security.auth.kerberos.KerberosPrincipal javax.security.auth.kerberos.KerberosPrincipal sun.security.krb5.internal.Ticket sun.security.krb5.EncryptedData sun.security.krb5.PrincipalName sun.security.jgss.krb5.ServiceCreds javax.security.auth.kerberos.KerberosPrincipal javax.security.auth.kerberos.KerberosKey[]
StackMap stack: new 31 new 31 java.lang.StringBuilder java.lang.String
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
35: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
36: StackMap locals:
StackMap stack:
aload 12
invokevirtual sun.security.krb5.EncryptedData.getEType:()I
istore 17
start local 17 37: aload 12
invokevirtual sun.security.krb5.EncryptedData.getKeyVersionNumber:()Ljava/lang/Integer;
astore 18
start local 18 38: aconst_null
astore 19
start local 19 39: iload 17
aload 18
aload 16
invokestatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.findKey:(ILjava/lang/Integer;[Ljavax/security/auth/kerberos/KerberosKey;)Ljavax/security/auth/kerberos/KerberosKey;
astore 19
40: goto 45
StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl sun.security.ssl.ProtocolVersion sun.security.ssl.ProtocolVersion java.security.SecureRandom byte[] byte[] java.security.AccessControlContext java.lang.Object sun.security.krb5.EncryptionKey javax.security.auth.kerberos.KerberosPrincipal javax.security.auth.kerberos.KerberosPrincipal sun.security.krb5.internal.Ticket sun.security.krb5.EncryptedData sun.security.krb5.PrincipalName sun.security.jgss.krb5.ServiceCreds javax.security.auth.kerberos.KerberosPrincipal javax.security.auth.kerberos.KerberosKey[] int java.lang.Integer javax.security.auth.kerberos.KerberosKey
StackMap stack: sun.security.krb5.KrbException
41: astore 20
start local 20 42: new java.io.IOException
dup
43: ldc "Cannot find key matching version number"
aload 20
44: invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 20 45: StackMap locals:
StackMap stack:
aload 19
ifnonnull 49
46: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Cannot find key of appropriate type to decrypt ticket - need etype "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
47: iload 17
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
48: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
49: StackMap locals:
StackMap stack:
new sun.security.krb5.EncryptionKey
dup
50: iload 17
51: aload 19
invokevirtual javax.security.auth.kerberos.KerberosKey.getEncoded:()[B
52: invokespecial sun.security.krb5.EncryptionKey.<init>:(I[B)V
astore 20
start local 20 53: aload 12
aload 20
iconst_2
invokevirtual sun.security.krb5.EncryptedData.decrypt:(Lsun/security/krb5/EncryptionKey;I)[B
astore 21
start local 21 54: aload 12
aload 21
invokevirtual sun.security.krb5.EncryptedData.reset:([B)[B
astore 22
start local 22 55: new sun.security.krb5.internal.EncTicketPart
dup
aload 22
invokespecial sun.security.krb5.internal.EncTicketPart.<init>:([B)V
astore 23
start local 23 56: new javax.security.auth.kerberos.KerberosPrincipal
dup
aload 23
getfield sun.security.krb5.internal.EncTicketPart.cname:Lsun/security/krb5/PrincipalName;
invokevirtual sun.security.krb5.PrincipalName.getName:()Ljava/lang/String;
invokespecial javax.security.auth.kerberos.KerberosPrincipal.<init>:(Ljava/lang/String;)V
astore 9
57: new javax.security.auth.kerberos.KerberosPrincipal
dup
aload 13
invokevirtual sun.security.krb5.PrincipalName.getName:()Ljava/lang/String;
invokespecial javax.security.auth.kerberos.KerberosPrincipal.<init>:(Ljava/lang/String;)V
astore 10
58: aload 23
getfield sun.security.krb5.internal.EncTicketPart.key:Lsun/security/krb5/EncryptionKey;
astore 8
59: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.debug:Lsun/security/ssl/Debug;
ifnull 71
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 71
60: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "server principal: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 13
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
61: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "cname: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 23
getfield sun.security.krb5.internal.EncTicketPart.cname:Lsun/security/krb5/PrincipalName;
invokevirtual sun.security.krb5.PrincipalName.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 23 end local 22 end local 21 end local 20 end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 62: goto 71
StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl sun.security.ssl.ProtocolVersion sun.security.ssl.ProtocolVersion java.security.SecureRandom byte[] byte[] java.security.AccessControlContext java.lang.Object sun.security.krb5.EncryptionKey javax.security.auth.kerberos.KerberosPrincipal javax.security.auth.kerberos.KerberosPrincipal
StackMap stack: java.io.IOException
63: astore 11
start local 11 64: aload 11
athrow
end local 11 65: StackMap locals:
StackMap stack: java.lang.Exception
astore 11
start local 11 66: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.debug:Lsun/security/ssl/Debug;
ifnull 70
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 70
67: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "KerberosWrapper error getting session key, generating random secret ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
68: aload 11
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
69: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
70: StackMap locals: java.lang.Exception
StackMap stack:
aconst_null
astore 8
end local 11 71: StackMap locals:
StackMap stack:
aload 8
ifnull 76
72: aload 0
new sun.security.krb5.internal.ssl.KerberosPreMasterSecret
dup
aload 1
73: aload 2
aload 3
aload 5
aload 8
invokespecial sun.security.krb5.internal.ssl.KerberosPreMasterSecret.<init>:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/ProtocolVersion;Ljava/security/SecureRandom;[BLsun/security/krb5/EncryptionKey;)V
74: putfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.preMaster:Lsun/security/krb5/internal/ssl/KerberosPreMasterSecret;
75: goto 77
76: StackMap locals:
StackMap stack:
aload 0
new sun.security.krb5.internal.ssl.KerberosPreMasterSecret
dup
aload 2
aload 3
invokespecial sun.security.krb5.internal.ssl.KerberosPreMasterSecret.<init>:(Lsun/security/ssl/ProtocolVersion;Ljava/security/SecureRandom;)V
putfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.preMaster:Lsun/security/krb5/internal/ssl/KerberosPreMasterSecret;
77: StackMap locals:
StackMap stack:
aload 0
aload 9
putfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.peerPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
78: aload 0
aload 10
putfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.localPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
79: return
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 80 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService$ExchangerImpl;
0 80 1 protocolVersion Lsun/security/ssl/ProtocolVersion;
0 80 2 clientVersion Lsun/security/ssl/ProtocolVersion;
0 80 3 rand Ljava/security/SecureRandom;
0 80 4 encodedTicket [B
0 80 5 encrypted [B
0 80 6 acc Ljava/security/AccessControlContext;
0 80 7 serviceCreds Ljava/lang/Object;
7 80 8 sessionKey Lsun/security/krb5/EncryptionKey;
8 80 9 tmpPeer Ljavax/security/auth/kerberos/KerberosPrincipal;
9 80 10 tmpLocal Ljavax/security/auth/kerberos/KerberosPrincipal;
10 62 11 t Lsun/security/krb5/internal/Ticket;
11 62 12 encPart Lsun/security/krb5/EncryptedData;
12 62 13 ticketSname Lsun/security/krb5/PrincipalName;
13 62 14 creds Lsun/security/jgss/krb5/ServiceCreds;
15 62 15 princ Ljavax/security/auth/kerberos/KerberosPrincipal;
17 28 16 sm Ljava/lang/SecurityManager;
23 28 17 se Ljava/lang/SecurityException;
30 62 16 serverKeys [Ljavax/security/auth/kerberos/KerberosKey;
37 62 17 encPartKeyType I
38 62 18 encPartKeyVersion Ljava/lang/Integer;
39 62 19 dkey Ljavax/security/auth/kerberos/KerberosKey;
42 45 20 ke Lsun/security/krb5/KrbException;
53 62 20 secretKey Lsun/security/krb5/EncryptionKey;
54 62 21 bytes [B
55 62 22 temp [B
56 62 23 encTicketPart Lsun/security/krb5/internal/EncTicketPart;
64 65 11 e Ljava/io/IOException;
66 71 11 e Ljava/lang/Exception;
Exception table:
from to target type
17 21 22 Class java.lang.SecurityException
39 40 41 Class sun.security.krb5.KrbException
9 62 63 Class java.io.IOException
9 62 65 Class java.lang.Exception
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
protocolVersion
clientVersion
rand
encodedTicket
encrypted
acc
serviceCreds
private static javax.security.auth.kerberos.KerberosTicket getServiceTicket(java.lang.String, java.security.AccessControlContext);
descriptor: (Ljava/lang/String;Ljava/security/AccessControlContext;)Ljavax/security/auth/kerberos/KerberosTicket;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=11, args_size=2
start local 0 start local 1 0: ldc "localhost"
aload 0
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 2
1: ldc "localhost.localdomain"
aload 0
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 8
2: StackMap locals:
StackMap stack:
getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.debug:Lsun/security/ssl/Debug;
ifnull 4
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 4
3: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "Get the local hostname"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
4: StackMap locals:
StackMap stack:
new sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$2
dup
invokespecial sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$2.<init>:()V
5: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
astore 2
start local 2 6: aload 2
ifnull 8
7: aload 2
astore 0
end local 2 8: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "host/"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 2
start local 2 9: new sun.security.krb5.PrincipalName
dup
aload 2
10: iconst_3
11: invokespecial sun.security.krb5.PrincipalName.<init>:(Ljava/lang/String;I)V
astore 3
start local 3 12: goto 21
end local 3 StackMap locals: java.lang.String java.security.AccessControlContext java.lang.String
StackMap stack: java.lang.SecurityException
13: astore 4
start local 4 14: aload 4
athrow
end local 4 15: StackMap locals:
StackMap stack: java.lang.Exception
astore 4
start local 4 16: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Invalid service principal name: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
17: aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
18: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
astore 5
start local 5 19: aload 5
aload 4
invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
20: aload 5
athrow
end local 5 end local 4 start local 3 21: StackMap locals: sun.security.krb5.PrincipalName
StackMap stack:
aload 3
invokevirtual sun.security.krb5.PrincipalName.getRealmAsString:()Ljava/lang/String;
astore 4
start local 4 22: aload 3
invokevirtual sun.security.krb5.PrincipalName.toString:()Ljava/lang/String;
astore 5
start local 5 23: new java.lang.StringBuilder
dup
ldc "krbtgt/"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "@"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
start local 6 24: aconst_null
astore 7
start local 7 25: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 8
start local 8 26: aload 8
ifnull 30
27: aload 8
new javax.security.auth.kerberos.ServicePermission
dup
aload 5
28: ldc "initiate"
invokespecial javax.security.auth.kerberos.ServicePermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
aload 1
29: invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;Ljava/lang/Object;)V
30: StackMap locals: java.lang.String java.security.AccessControlContext java.lang.String sun.security.krb5.PrincipalName java.lang.String java.lang.String java.lang.String java.lang.String java.lang.SecurityManager
StackMap stack:
new sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$3
dup
aload 7
aload 5
aload 6
aload 1
invokespecial sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$3.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/security/AccessControlContext;)V
31: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
checkcast javax.security.auth.kerberos.KerberosTicket
astore 9
start local 9 32: aload 9
ifnonnull 36
33: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Failed to find any kerberos service ticket for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
34: aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
35: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
36: StackMap locals: javax.security.auth.kerberos.KerberosTicket
StackMap stack:
aload 9
37: areturn
end local 9 38: StackMap locals: java.lang.String java.security.AccessControlContext java.lang.String sun.security.krb5.PrincipalName java.lang.String java.lang.String java.lang.String java.lang.String java.lang.SecurityManager
StackMap stack: java.security.PrivilegedActionException
astore 9
start local 9 39: new java.io.IOException
dup
40: new java.lang.StringBuilder
dup
ldc "Attempt to obtain kerberos service ticket for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
41: aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " failed!"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
42: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
43: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
astore 10
start local 10 44: aload 10
aload 9
invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
45: aload 10
athrow
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 46 0 serverName Ljava/lang/String;
0 46 1 acc Ljava/security/AccessControlContext;
6 8 2 localHost Ljava/lang/String;
9 46 2 serviceName Ljava/lang/String;
12 13 3 principal Lsun/security/krb5/PrincipalName;
21 46 3 principal Lsun/security/krb5/PrincipalName;
14 15 4 se Ljava/lang/SecurityException;
16 21 4 e Ljava/lang/Exception;
19 21 5 ioe Ljava/io/IOException;
22 46 4 realm Ljava/lang/String;
23 46 5 serverPrincipal Ljava/lang/String;
24 46 6 tgsPrincipal Ljava/lang/String;
25 46 7 clientPrincipal Ljava/lang/String;
26 46 8 sm Ljava/lang/SecurityManager;
32 38 9 ticket Ljavax/security/auth/kerberos/KerberosTicket;
39 46 9 e Ljava/security/PrivilegedActionException;
44 46 10 ioe Ljava/io/IOException;
Exception table:
from to target type
9 12 13 Class java.lang.SecurityException
9 12 15 Class java.lang.Exception
30 37 38 Class java.security.PrivilegedActionException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
serverName
acc final
public javax.crypto.SecretKey clientKeyExchange();
descriptor: ()Ljavax/crypto/SecretKey;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.preMaster:Lsun/security/krb5/internal/ssl/KerberosPreMasterSecret;
invokevirtual sun.security.krb5.internal.ssl.KerberosPreMasterSecret.getUnencrypted:()[B
astore 1
start local 1 1: new javax.crypto.spec.SecretKeySpec
dup
aload 1
ldc "TlsPremasterSecret"
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService$ExchangerImpl;
1 2 1 secretBytes [B
public java.security.Principal getPeerPrincipal();
descriptor: ()Ljava/security/Principal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.peerPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService$ExchangerImpl;
public java.security.Principal getLocalPrincipal();
descriptor: ()Ljava/security/Principal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.localPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService$ExchangerImpl;
private static boolean versionMatches(java.lang.Integer, int);
descriptor: (Ljava/lang/Integer;I)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
ifnull 1
aload 0
invokevirtual java.lang.Integer.intValue:()I
ifeq 1
iload 1
ifne 2
1: StackMap locals:
StackMap stack:
iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java.lang.Integer.equals:(Ljava/lang/Object;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 v1 Ljava/lang/Integer;
0 3 1 v2 I
MethodParameters:
Name Flags
v1
v2
private static javax.security.auth.kerberos.KerberosKey findKey(int, java.lang.Integer, javax.security.auth.kerberos.KerberosKey[]);
descriptor: (ILjava/lang/Integer;[Ljavax/security/auth/kerberos/KerberosKey;)Ljavax/security/auth/kerberos/KerberosKey;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=9, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
istore 4
start local 4 1: iconst_0
istore 5
start local 5 2: aconst_null
astore 6
start local 6 3: iconst_0
istore 7
start local 7 4: goto 15
5: StackMap locals: int java.lang.Integer javax.security.auth.kerberos.KerberosKey[] top int int javax.security.auth.kerberos.KerberosKey int
StackMap stack:
aload 2
iload 7
aaload
invokevirtual javax.security.auth.kerberos.KerberosKey.getKeyType:()I
istore 3
start local 3 6: iload 0
iload 3
if_icmpne 14
7: aload 2
iload 7
aaload
invokevirtual javax.security.auth.kerberos.KerberosKey.getVersionNumber:()I
istore 8
start local 8 8: iconst_1
istore 4
9: aload 1
iload 8
invokestatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.versionMatches:(Ljava/lang/Integer;I)Z
ifeq 11
10: aload 2
iload 7
aaload
areturn
11: StackMap locals: int java.lang.Integer javax.security.auth.kerberos.KerberosKey[] int int int javax.security.auth.kerberos.KerberosKey int int
StackMap stack:
iload 8
iload 5
if_icmple 14
12: aload 2
iload 7
aaload
astore 6
13: iload 8
istore 5
end local 8 14: StackMap locals:
StackMap stack:
iinc 7 1
end local 3 StackMap locals: int java.lang.Integer javax.security.auth.kerberos.KerberosKey[] top int int javax.security.auth.kerberos.KerberosKey int
StackMap stack:
15: iload 7
aload 2
arraylength
if_icmplt 5
end local 7 16: iload 0
iconst_1
if_icmpeq 18
17: iload 0
iconst_3
if_icmpne 40
18: StackMap locals:
StackMap stack:
iconst_0
istore 7
start local 7 19: goto 39
20: StackMap locals: int
StackMap stack:
aload 2
iload 7
aaload
invokevirtual javax.security.auth.kerberos.KerberosKey.getKeyType:()I
istore 3
start local 3 21: iload 3
iconst_1
if_icmpeq 23
22: iload 3
iconst_3
if_icmpne 38
23: StackMap locals: int java.lang.Integer javax.security.auth.kerberos.KerberosKey[] int int int javax.security.auth.kerberos.KerberosKey int
StackMap stack:
aload 2
iload 7
aaload
invokevirtual javax.security.auth.kerberos.KerberosKey.getVersionNumber:()I
istore 8
start local 8 24: iconst_1
istore 4
25: aload 1
iload 8
invokestatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.versionMatches:(Ljava/lang/Integer;I)Z
ifeq 31
26: new javax.security.auth.kerberos.KerberosKey
dup
aload 2
iload 7
aaload
invokevirtual javax.security.auth.kerberos.KerberosKey.getPrincipal:()Ljavax/security/auth/kerberos/KerberosPrincipal;
27: aload 2
iload 7
aaload
invokevirtual javax.security.auth.kerberos.KerberosKey.getEncoded:()[B
28: iload 0
29: iload 8
30: invokespecial javax.security.auth.kerberos.KerberosKey.<init>:(Ljavax/security/auth/kerberos/KerberosPrincipal;[BII)V
areturn
31: StackMap locals: int
StackMap stack:
iload 8
iload 5
if_icmple 38
32: new javax.security.auth.kerberos.KerberosKey
dup
aload 2
iload 7
aaload
invokevirtual javax.security.auth.kerberos.KerberosKey.getPrincipal:()Ljavax/security/auth/kerberos/KerberosPrincipal;
33: aload 2
iload 7
aaload
invokevirtual javax.security.auth.kerberos.KerberosKey.getEncoded:()[B
34: iload 0
35: iload 8
36: invokespecial javax.security.auth.kerberos.KerberosKey.<init>:(Ljavax/security/auth/kerberos/KerberosPrincipal;[BII)V
astore 6
37: iload 8
istore 5
end local 8 38: StackMap locals:
StackMap stack:
iinc 7 1
end local 3 StackMap locals: int java.lang.Integer javax.security.auth.kerberos.KerberosKey[] top int int javax.security.auth.kerberos.KerberosKey int
StackMap stack:
39: iload 7
aload 2
arraylength
if_icmplt 20
end local 7 40: StackMap locals:
StackMap stack:
iload 4
ifeq 42
41: aload 6
areturn
42: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 43 0 etype I
0 43 1 version Ljava/lang/Integer;
0 43 2 keys [Ljavax/security/auth/kerberos/KerberosKey;
6 15 3 ktype I
21 39 3 ktype I
1 43 4 etypeFound Z
2 43 5 kvno_found I
3 43 6 key_found Ljavax/security/auth/kerberos/KerberosKey;
4 16 7 i I
8 14 8 kv I
19 40 7 i I
24 38 8 kv I
Exceptions:
throws sun.security.krb5.KrbException
MethodParameters:
Name Flags
etype
version
keys
}
SourceFile: "Krb5KeyExchangeService.java"
NestHost: sun.security.krb5.internal.ssl.Krb5KeyExchangeService
InnerClasses:
ExchangerImpl = sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl of sun.security.krb5.internal.ssl.Krb5KeyExchangeService
sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$1
sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$2
sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$3