public final class sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl implements sun.security.ssl.KrbClientKeyExchangeHelper
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl
super_class: java.lang.Object
{
private byte[] preMaster;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] preMasterEnc;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] encodedTicket;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private javax.security.auth.kerberos.KerberosPrincipal peerPrincipal;
descriptor: Ljavax/security/auth/kerberos/KerberosPrincipal;
flags: (0x0002) ACC_PRIVATE
private javax.security.auth.kerberos.KerberosPrincipal localPrincipal;
descriptor: Ljavax/security/auth/kerberos/KerberosPrincipal;
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
public void init(byte[], java.lang.String, java.security.AccessControlContext);
descriptor: ([BLjava/lang/String;Ljava/security/AccessControlContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.preMaster:[B
1: aload 2
aload 3
invokestatic sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.getServiceTicket:(Ljava/lang/String;Ljava/security/AccessControlContext;)Ljavax/security/auth/kerberos/KerberosTicket;
astore 4
start local 4 2: aload 0
aload 4
invokevirtual javax.security.auth.kerberos.KerberosTicket.getEncoded:()[B
putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.encodedTicket:[B
3: aload 0
aload 4
invokevirtual javax.security.auth.kerberos.KerberosTicket.getServer:()Ljavax/security/auth/kerberos/KerberosPrincipal;
putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.peerPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
4: aload 0
aload 4
invokevirtual javax.security.auth.kerberos.KerberosTicket.getClient:()Ljavax/security/auth/kerberos/KerberosPrincipal;
putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.localPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
5: new sun.security.krb5.EncryptionKey
dup
6: aload 4
invokevirtual javax.security.auth.kerberos.KerberosTicket.getSessionKeyType:()I
7: aload 4
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 5
start local 5 9: aload 0
aload 5
invokevirtual sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.encryptPremasterSecret:(Lsun/security/krb5/EncryptionKey;)V
10: 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 11 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
0 11 1 preMaster [B
0 11 2 serverName Ljava/lang/String;
0 11 3 acc Ljava/security/AccessControlContext;
2 11 4 ticket Ljavax/security/auth/kerberos/KerberosTicket;
9 11 5 sessionKey Lsun/security/krb5/EncryptionKey;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
preMaster
serverName
acc
public void init(byte[], byte[], java.lang.Object, java.security.AccessControlContext);
descriptor: ([B[BLjava/lang/Object;Ljava/security/AccessControlContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=19, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.encodedTicket:[B
1: aload 0
aload 2
putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.preMasterEnc:[B
2: aconst_null
astore 5
start local 5 3: new sun.security.krb5.internal.Ticket
dup
aload 1
invokespecial sun.security.krb5.internal.Ticket.<init>:([B)V
astore 6
start local 6 4: aload 6
getfield sun.security.krb5.internal.Ticket.encPart:Lsun/security/krb5/EncryptedData;
astore 7
start local 7 5: aload 6
getfield sun.security.krb5.internal.Ticket.sname:Lsun/security/krb5/PrincipalName;
astore 8
start local 8 6: aload 3
checkcast sun.security.jgss.krb5.ServiceCreds
astore 9
start local 9 7: new javax.security.auth.kerberos.KerberosPrincipal
dup
aload 8
invokevirtual sun.security.krb5.PrincipalName.toString:()Ljava/lang/String;
invokespecial javax.security.auth.kerberos.KerberosPrincipal.<init>:(Ljava/lang/String;)V
8: astore 10
start local 10 9: aload 9
invokevirtual sun.security.jgss.krb5.ServiceCreds.getName:()Ljava/lang/String;
ifnonnull 22
10: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 11
start local 11 11: aload 11
ifnull 22
12: aload 11
13: aload 8
invokevirtual sun.security.krb5.PrincipalName.toString:()Ljava/lang/String;
ldc "accept"
14: invokestatic sun.security.ssl.Krb5Helper.getServicePermission:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Permission;
15: aload 4
16: invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;Ljava/lang/Object;)V
17: goto 22
StackMap locals: sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl byte[] byte[] java.lang.Object java.security.AccessControlContext sun.security.krb5.EncryptionKey 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
18: pop
19: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 21
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 21
20: ldc "Permission to access Kerberos secret key denied"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
21: StackMap locals:
StackMap stack:
new java.io.IOException
dup
ldc "Kerberos service not allowed"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
end local 11 22: StackMap locals:
StackMap stack:
new sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$1
dup
aload 0
aload 9
aload 10
invokespecial sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$1.<init>:(Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;Lsun/security/jgss/krb5/ServiceCreds;Ljavax/security/auth/kerberos/KerberosPrincipal;)V
23: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast javax.security.auth.kerberos.KerberosKey[]
astore 11
start local 11 24: aload 11
arraylength
ifne 30
25: 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 10
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
26: aload 9
invokevirtual sun.security.jgss.krb5.ServiceCreds.getName:()Ljava/lang/String;
ifnonnull 27
ldc ""
goto 28
27: StackMap locals: sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl byte[] byte[] java.lang.Object java.security.AccessControlContext sun.security.krb5.EncryptionKey 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 25 new 25 java.lang.StringBuilder
new java.lang.StringBuilder
dup
ldc ", this keytab is for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 9
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;
28: StackMap locals: sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl byte[] byte[] java.lang.Object java.security.AccessControlContext sun.security.krb5.EncryptionKey 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 25 new 25 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;
29: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
30: StackMap locals:
StackMap stack:
aload 7
invokevirtual sun.security.krb5.EncryptedData.getEType:()I
istore 12
start local 12 31: aload 7
invokevirtual sun.security.krb5.EncryptedData.getKeyVersionNumber:()Ljava/lang/Integer;
astore 13
start local 13 32: aconst_null
astore 14
start local 14 33: iload 12
aload 13
aload 11
invokestatic sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.findKey:(ILjava/lang/Integer;[Ljavax/security/auth/kerberos/KerberosKey;)Ljavax/security/auth/kerberos/KerberosKey;
astore 14
34: goto 39
StackMap locals: sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl byte[] byte[] java.lang.Object java.security.AccessControlContext sun.security.krb5.EncryptionKey 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
35: astore 15
start local 15 36: new java.io.IOException
dup
37: ldc "Cannot find key matching version number"
aload 15
38: invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 15 39: StackMap locals:
StackMap stack:
aload 14
ifnonnull 43
40: 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
41: iload 12
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
42: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
43: StackMap locals:
StackMap stack:
new sun.security.krb5.EncryptionKey
dup
44: iload 12
45: aload 14
invokevirtual javax.security.auth.kerberos.KerberosKey.getEncoded:()[B
46: invokespecial sun.security.krb5.EncryptionKey.<init>:(I[B)V
astore 15
start local 15 47: aload 7
aload 15
iconst_2
invokevirtual sun.security.krb5.EncryptedData.decrypt:(Lsun/security/krb5/EncryptionKey;I)[B
astore 16
start local 16 48: aload 7
aload 16
invokevirtual sun.security.krb5.EncryptedData.reset:([B)[B
astore 17
start local 17 49: new sun.security.krb5.internal.EncTicketPart
dup
aload 17
invokespecial sun.security.krb5.internal.EncTicketPart.<init>:([B)V
astore 18
start local 18 50: aload 0
51: new javax.security.auth.kerberos.KerberosPrincipal
dup
aload 18
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
52: putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.peerPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
53: aload 0
new javax.security.auth.kerberos.KerberosPrincipal
dup
aload 8
invokevirtual sun.security.krb5.PrincipalName.getName:()Ljava/lang/String;
invokespecial javax.security.auth.kerberos.KerberosPrincipal.<init>:(Ljava/lang/String;)V
putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.localPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
54: aload 18
getfield sun.security.krb5.internal.EncTicketPart.key:Lsun/security/krb5/EncryptionKey;
astore 5
55: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 63
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 63
56: new java.lang.StringBuilder
dup
ldc "server principal: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
57: new java.lang.StringBuilder
dup
ldc "cname: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 18
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;
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 58: goto 63
StackMap locals: sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl byte[] byte[] java.lang.Object java.security.AccessControlContext sun.security.krb5.EncryptionKey
StackMap stack: java.lang.Exception
59: pop
60: aconst_null
astore 5
61: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 63
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 63
62: ldc "Error getting the Kerberos session key to decrypt the pre-master secret"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
63: StackMap locals:
StackMap stack:
aload 5
ifnull 65
64: aload 0
aload 5
invokevirtual sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.decryptPremasterSecret:(Lsun/security/krb5/EncryptionKey;)V
65: 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 66 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
0 66 1 encodedTicket [B
0 66 2 preMasterEnc [B
0 66 3 serviceCreds Ljava/lang/Object;
0 66 4 acc Ljava/security/AccessControlContext;
3 66 5 sessionKey Lsun/security/krb5/EncryptionKey;
4 58 6 t Lsun/security/krb5/internal/Ticket;
5 58 7 encPart Lsun/security/krb5/EncryptedData;
6 58 8 ticketSname Lsun/security/krb5/PrincipalName;
7 58 9 creds Lsun/security/jgss/krb5/ServiceCreds;
9 58 10 princ Ljavax/security/auth/kerberos/KerberosPrincipal;
11 22 11 sm Ljava/lang/SecurityManager;
24 58 11 serverKeys [Ljavax/security/auth/kerberos/KerberosKey;
31 58 12 encPartKeyType I
32 58 13 encPartKeyVersion Ljava/lang/Integer;
33 58 14 dkey Ljavax/security/auth/kerberos/KerberosKey;
36 39 15 ke Lsun/security/krb5/KrbException;
47 58 15 secretKey Lsun/security/krb5/EncryptionKey;
48 58 16 bytes [B
49 58 17 temp [B
50 58 18 encTicketPart Lsun/security/krb5/internal/EncTicketPart;
Exception table:
from to target type
11 17 18 Class java.lang.SecurityException
33 34 35 Class sun.security.krb5.KrbException
3 58 59 Class java.lang.Exception
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
encodedTicket
preMasterEnc
serviceCreds
acc
public byte[] getEncodedTicket();
descriptor: ()[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.encodedTicket:[B
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
public byte[] getEncryptedPreMasterSecret();
descriptor: ()[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.preMasterEnc:[B
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
public byte[] getPlainPreMasterSecret();
descriptor: ()[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.preMaster:[B
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
public javax.security.auth.kerberos.KerberosPrincipal getPeerPrincipal();
descriptor: ()Ljavax/security/auth/kerberos/KerberosPrincipal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.peerPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
public javax.security.auth.kerberos.KerberosPrincipal getLocalPrincipal();
descriptor: ()Ljavax/security/auth/kerberos/KerberosPrincipal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.localPrincipal:Ljavax/security/auth/kerberos/KerberosPrincipal;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
private void encryptPremasterSecret(sun.security.krb5.EncryptionKey);
descriptor: (Lsun/security/krb5/EncryptionKey;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual sun.security.krb5.EncryptionKey.getEType:()I
1: bipush 16
2: if_icmpne 6
3: new java.io.IOException
dup
4: ldc "session keys with des3-cbc-hmac-sha1-kd encryption type are not supported for TLS Kerberos cipher suites"
5: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
new sun.security.krb5.EncryptedData
dup
aload 1
aload 0
getfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.preMaster:[B
7: iconst_0
8: invokespecial sun.security.krb5.EncryptedData.<init>:(Lsun/security/krb5/EncryptionKey;[BI)V
astore 2
start local 2 9: aload 0
aload 2
invokevirtual sun.security.krb5.EncryptedData.getBytes:()[B
putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.preMasterEnc:[B
end local 2 10: goto 15
StackMap locals:
StackMap stack: sun.security.krb5.KrbException
11: astore 2
start local 2 12: new javax.net.ssl.SSLKeyException
dup
ldc "Kerberos pre-master secret error"
invokespecial javax.net.ssl.SSLKeyException.<init>:(Ljava/lang/String;)V
13: aload 2
invokevirtual javax.net.ssl.SSLKeyException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
14: checkcast java.io.IOException
athrow
end local 2 15: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
0 16 1 sessionKey Lsun/security/krb5/EncryptionKey;
9 10 2 eData Lsun/security/krb5/EncryptedData;
12 15 2 e Lsun/security/krb5/KrbException;
Exception table:
from to target type
6 10 11 Class sun.security.krb5.KrbException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
sessionKey
private void decryptPremasterSecret(sun.security.krb5.EncryptionKey);
descriptor: (Lsun/security/krb5/EncryptionKey;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual sun.security.krb5.EncryptionKey.getEType:()I
1: bipush 16
2: if_icmpne 6
3: new java.io.IOException
dup
4: ldc "session keys with des3-cbc-hmac-sha1-kd encryption type are not supported for TLS Kerberos cipher suites"
5: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
new sun.security.krb5.EncryptedData
dup
aload 1
invokevirtual sun.security.krb5.EncryptionKey.getEType:()I
7: aconst_null
aload 0
getfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.preMasterEnc:[B
8: invokespecial sun.security.krb5.EncryptedData.<init>:(ILjava/lang/Integer;[B)V
astore 2
start local 2 9: aload 2
aload 1
iconst_0
invokevirtual sun.security.krb5.EncryptedData.decrypt:(Lsun/security/krb5/EncryptionKey;I)[B
astore 3
start local 3 10: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 13
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 13
11: aload 0
getfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.preMasterEnc:[B
ifnull 13
12: ldc "decrypted premaster secret"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 3
aastore
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
13: StackMap locals: sun.security.krb5.EncryptedData byte[]
StackMap stack:
aload 3
arraylength
bipush 52
if_icmpne 19
14: aload 2
invokevirtual sun.security.krb5.EncryptedData.getEType:()I
iconst_1
if_icmpne 19
15: aload 3
bipush 52
iconst_4
invokestatic sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.paddingByteIs:([BIB)Z
ifne 17
16: aload 3
bipush 52
iconst_0
invokestatic sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.paddingByteIs:([BIB)Z
ifeq 23
17: StackMap locals:
StackMap stack:
aload 3
bipush 48
invokestatic java.util.Arrays.copyOf:([BI)[B
astore 3
18: goto 23
StackMap locals:
StackMap stack:
19: aload 3
arraylength
bipush 56
if_icmpne 23
20: aload 2
invokevirtual sun.security.krb5.EncryptedData.getEType:()I
iconst_3
if_icmpne 23
21: aload 3
bipush 56
bipush 8
invokestatic sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.paddingByteIs:([BIB)Z
ifeq 23
22: aload 3
bipush 48
invokestatic java.util.Arrays.copyOf:([BI)[B
astore 3
23: StackMap locals:
StackMap stack:
aload 0
aload 3
putfield sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.preMaster:[B
end local 3 end local 2 24: goto 28
StackMap locals: sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl sun.security.krb5.EncryptionKey
StackMap stack: java.lang.Exception
25: pop
26: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 28
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 28
27: ldc "Error decrypting the pre-master secret"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
28: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Lsun/security/ssl/krb5/KrbClientKeyExchangeHelperImpl;
0 29 1 sessionKey Lsun/security/krb5/EncryptionKey;
9 24 2 data Lsun/security/krb5/EncryptedData;
10 24 3 temp [B
Exception table:
from to target type
6 24 25 Class java.lang.Exception
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
sessionKey
private static boolean paddingByteIs(byte[], int, byte);
descriptor: ([BIB)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: bipush 48
istore 3
start local 3 1: goto 4
2: StackMap locals: int
StackMap stack:
aload 0
iload 3
baload
iload 2
if_icmpeq 3
iconst_0
ireturn
3: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
4: iload 3
iload 1
if_icmplt 2
end local 3 5: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 data [B
0 6 1 len I
0 6 2 b B
1 5 3 i I
MethodParameters:
Name Flags
data
len
b
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.ssl.SSLLogger.isOn:Z
ifeq 4
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 4
3: ldc "Get the local hostname"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
4: StackMap locals:
StackMap stack:
new sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$2
dup
invokespecial sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$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.ssl.krb5.KrbClientKeyExchangeHelperImpl$3
dup
aload 7
aload 5
aload 6
aload 1
invokespecial sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$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
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.ssl.krb5.KrbClientKeyExchangeHelperImpl.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.ssl.krb5.KrbClientKeyExchangeHelperImpl.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
public java.security.Principal getPeerPrincipal();
descriptor: ()Ljava/security/Principal;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.getPeerPrincipal:()Ljavax/security/auth/kerberos/KerberosPrincipal;
areturn
LocalVariableTable:
Start End Slot Name Signature
public java.security.Principal getLocalPrincipal();
descriptor: ()Ljava/security/Principal;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
invokevirtual sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl.getLocalPrincipal:()Ljavax/security/auth/kerberos/KerberosPrincipal;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "KrbClientKeyExchangeHelperImpl.java"
NestMembers:
sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$1 sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$2 sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$3
InnerClasses:
sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$1
sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$2
sun.security.ssl.krb5.KrbClientKeyExchangeHelperImpl$3