public class sun.security.krb5.internal.ssl.Krb5KeyExchangeService implements sun.security.ssl.ClientKeyExchangeService
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: sun.security.krb5.internal.ssl.Krb5KeyExchangeService
super_class: java.lang.Object
{
public static final sun.security.ssl.Debug debug;
descriptor: Lsun/security/ssl/Debug;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc "ssl"
invokestatic sun.security.ssl.Debug.getInstance:(Ljava/lang/String;)Lsun/security/ssl/Debug;
putstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService.debug:Lsun/security/ssl/Debug;
return
LocalVariableTable:
Start End Slot Name Signature
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/krb5/internal/ssl/Krb5KeyExchangeService;
public java.lang.String[] supported();
descriptor: ()[Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: iconst_2
anewarray java.lang.String
dup
iconst_0
ldc "KRB5"
aastore
dup
iconst_1
ldc "KRB5_EXPORT"
aastore
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService;
public java.lang.Object getServiceCreds(java.security.AccessControlContext);
descriptor: (Ljava/security/AccessControlContext;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokedynamic run(Ljava/security/AccessControlContext;)Ljava/security/PrivilegedExceptionAction;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
sun/security/krb5/internal/ssl/Krb5KeyExchangeService.lambda$0(Ljava/security/AccessControlContext;)Lsun/security/jgss/krb5/ServiceCreds; (6)
()Lsun/security/jgss/krb5/ServiceCreds;
1: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
checkcast sun.security.jgss.krb5.ServiceCreds
astore 2
start local 2 2: aload 2
ifnonnull 6
3: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService.debug:Lsun/security/ssl/Debug;
ifnull 5
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 5
4: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "Kerberos serviceCreds not available"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
5: StackMap locals: sun.security.jgss.krb5.ServiceCreds
StackMap stack:
aconst_null
areturn
6: StackMap locals:
StackMap stack:
getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService.debug:Lsun/security/ssl/Debug;
ifnull 8
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 8
7: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "Using Kerberos creds"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
8: StackMap locals:
StackMap stack:
aload 2
invokevirtual sun.security.jgss.krb5.ServiceCreds.getName:()Ljava/lang/String;
astore 3
start local 3 9: aload 3
ifnull 20
10: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 4
start local 4 11: aload 4
ifnull 20
12: aload 4
new javax.security.auth.kerberos.ServicePermission
dup
13: aload 3
ldc "accept"
invokespecial javax.security.auth.kerberos.ServicePermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
aload 1
14: invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;Ljava/lang/Object;)V
15: goto 20
StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService java.security.AccessControlContext sun.security.jgss.krb5.ServiceCreds java.lang.String java.lang.SecurityManager
StackMap stack: java.lang.SecurityException
16: pop
17: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService.debug:Lsun/security/ssl/Debug;
ifnull 19
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 19
18: 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
19: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 4 20: StackMap locals:
StackMap stack:
aload 2
21: areturn
end local 3 end local 2 22: StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService java.security.AccessControlContext
StackMap stack: java.security.PrivilegedActionException
astore 2
start local 2 23: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService.debug:Lsun/security/ssl/Debug;
ifnull 27
ldc "handshake"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 27
24: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Attempt to obtain Kerberos key failed: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
25: aload 2
invokevirtual java.security.PrivilegedActionException.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
26: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
27: StackMap locals: java.security.PrivilegedActionException
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService;
0 28 1 acc Ljava/security/AccessControlContext;
2 22 2 serviceCreds Lsun/security/jgss/krb5/ServiceCreds;
9 22 3 serverPrincipal Ljava/lang/String;
11 20 4 sm Ljava/lang/SecurityManager;
23 28 2 e Ljava/security/PrivilegedActionException;
Exception table:
from to target type
11 15 16 Class java.lang.SecurityException
0 5 22 Class java.security.PrivilegedActionException
6 19 22 Class java.security.PrivilegedActionException
20 21 22 Class java.security.PrivilegedActionException
MethodParameters:
Name Flags
acc
public java.lang.String getServiceHostName(java.security.Principal);
descriptor: (Ljava/security/Principal;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aconst_null
astore 2
start local 2 3: new sun.security.krb5.PrincipalName
dup
aload 1
invokeinterface java.security.Principal.getName:()Ljava/lang/String;
4: iconst_3
5: invokespecial sun.security.krb5.PrincipalName.<init>:(Ljava/lang/String;I)V
6: astore 3
start local 3 7: aload 3
invokevirtual sun.security.krb5.PrincipalName.getNameStrings:()[Ljava/lang/String;
astore 4
start local 4 8: aload 4
arraylength
iconst_2
if_icmplt 12
9: aload 4
iconst_1
aaload
astore 2
end local 4 end local 3 10: goto 12
StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService java.security.Principal java.lang.String
StackMap stack: java.lang.Exception
11: pop
12: StackMap locals:
StackMap stack:
aload 2
areturn
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;
0 13 1 principal Ljava/security/Principal;
3 13 2 hostName Ljava/lang/String;
7 10 3 princName Lsun/security/krb5/PrincipalName;
8 10 4 nameParts [Ljava/lang/String;
Exception table:
from to target type
3 10 11 Class java.lang.Exception
MethodParameters:
Name Flags
principal
public boolean isRelated(boolean, java.security.AccessControlContext, java.security.Principal);
descriptor: (ZLjava/security/AccessControlContext;Ljava/security/Principal;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
ifnonnull 1
iconst_0
ireturn
1: StackMap locals:
StackMap stack:
iload 1
aload 2
invokedynamic run(ZLjava/security/AccessControlContext;)Ljava/security/PrivilegedExceptionAction;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
sun/security/krb5/internal/ssl/Krb5KeyExchangeService.lambda$1(ZLjava/security/AccessControlContext;)Ljavax/security/auth/Subject; (6)
()Ljavax/security/auth/Subject;
2: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
checkcast javax.security.auth.Subject
astore 4
start local 4 3: aload 4
ifnonnull 7
4: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService.debug:Lsun/security/ssl/Debug;
ifnull 6
ldc "session"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 6
5: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "Kerberos credentials are not present in the current Subject; check if javax.security.auth.useSubjectAsCreds system property has been set to false"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
6: StackMap locals: javax.security.auth.Subject
StackMap stack:
iconst_0
ireturn
7: StackMap locals:
StackMap stack:
aload 4
ldc Ljava/security/Principal;
invokevirtual javax.security.auth.Subject.getPrincipals:(Ljava/lang/Class;)Ljava/util/Set;
8: astore 5
start local 5 9: aload 5
aload 3
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 11
10: iconst_1
ireturn
11: StackMap locals: java.util.Set
StackMap stack:
iload 1
ifeq 13
12: iconst_0
ireturn
13: StackMap locals:
StackMap stack:
aload 4
ldc Ljavax/security/auth/kerberos/KeyTab;
invokevirtual javax.security.auth.Subject.getPrivateCredentials:(Ljava/lang/Class;)Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 7
goto 17
StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService int java.security.AccessControlContext java.security.Principal javax.security.auth.Subject java.util.Set top java.util.Iterator
StackMap stack:
14: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast javax.security.auth.kerberos.KeyTab
astore 6
start local 6 15: aload 6
invokevirtual javax.security.auth.kerberos.KeyTab.isBound:()Z
ifne 17
16: iconst_1
ireturn
end local 6 17: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
18: iconst_0
ireturn
end local 5 end local 4 19: StackMap locals: sun.security.krb5.internal.ssl.Krb5KeyExchangeService int java.security.AccessControlContext java.security.Principal
StackMap stack: java.security.PrivilegedActionException
astore 4
start local 4 20: getstatic sun.security.krb5.internal.ssl.Krb5KeyExchangeService.debug:Lsun/security/ssl/Debug;
ifnull 24
ldc "session"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 24
21: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Attempt to obtain subject failed! "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
22: aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
23: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
24: StackMap locals: java.security.PrivilegedActionException
StackMap stack:
iconst_0
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService;
0 25 1 isClient Z
0 25 2 acc Ljava/security/AccessControlContext;
0 25 3 p Ljava/security/Principal;
3 19 4 subject Ljavax/security/auth/Subject;
9 19 5 principals Ljava/util/Set<Ljava/security/Principal;>;
15 17 6 pc Ljavax/security/auth/kerberos/KeyTab;
20 25 4 pae Ljava/security/PrivilegedActionException;
Exception table:
from to target type
1 6 19 Class java.security.PrivilegedActionException
7 10 19 Class java.security.PrivilegedActionException
11 12 19 Class java.security.PrivilegedActionException
13 16 19 Class java.security.PrivilegedActionException
17 18 19 Class java.security.PrivilegedActionException
MethodParameters:
Name Flags
isClient
acc
p
public sun.security.ssl.ClientKeyExchange createClientExchange(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;)Lsun/security/ssl/ClientKeyExchange;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: new sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl
dup
aload 1
aload 2
aload 3
aload 4
invokespecial sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.<init>:(Ljava/lang/String;Ljava/security/AccessControlContext;Lsun/security/ssl/ProtocolVersion;Ljava/security/SecureRandom;)V
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService;
0 1 1 serverName Ljava/lang/String;
0 1 2 acc Ljava/security/AccessControlContext;
0 1 3 protocolVerson Lsun/security/ssl/ProtocolVersion;
0 1 4 rand Ljava/security/SecureRandom;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
serverName
acc
protocolVerson
rand
public sun.security.ssl.ClientKeyExchange createServerExchange(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;)Lsun/security/ssl/ClientKeyExchange;
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=8, 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: new sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl
dup
aload 1
aload 2
aload 3
1: aload 4
aload 5
aload 6
aload 7
2: invokespecial sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl.<init>:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/ProtocolVersion;Ljava/security/SecureRandom;[B[BLjava/security/AccessControlContext;Ljava/lang/Object;)V
areturn
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 3 0 this Lsun/security/krb5/internal/ssl/Krb5KeyExchangeService;
0 3 1 protocolVersion Lsun/security/ssl/ProtocolVersion;
0 3 2 clientVersion Lsun/security/ssl/ProtocolVersion;
0 3 3 rand Ljava/security/SecureRandom;
0 3 4 encodedTicket [B
0 3 5 encrypted [B
0 3 6 acc Ljava/security/AccessControlContext;
0 3 7 serviceCreds Ljava/lang/Object;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
protocolVersion
clientVersion
rand
encodedTicket
encrypted
acc
serviceCreds
private static sun.security.jgss.krb5.ServiceCreds lambda$0(java.security.AccessControlContext);
descriptor: (Ljava/security/AccessControlContext;)Lsun/security/jgss/krb5/ServiceCreds;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=1
0: getstatic sun.security.jgss.GSSCaller.CALLER_SSL_SERVER:Lsun/security/jgss/GSSCaller;
aconst_null
aload 0
1: invokestatic sun.security.jgss.krb5.Krb5Util.getServiceCreds:(Lsun/security/jgss/GSSCaller;Ljava/lang/String;Ljava/security/AccessControlContext;)Lsun/security/jgss/krb5/ServiceCreds;
2: areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.Exception
private static javax.security.auth.Subject lambda$1(boolean, java.security.AccessControlContext);
descriptor: (ZLjava/security/AccessControlContext;)Ljavax/security/auth/Subject;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: iload 0
ifeq 1
getstatic sun.security.jgss.GSSCaller.CALLER_SSL_CLIENT:Lsun/security/jgss/GSSCaller;
goto 2
1: StackMap locals:
StackMap stack:
getstatic sun.security.jgss.GSSCaller.CALLER_SSL_SERVER:Lsun/security/jgss/GSSCaller;
2: StackMap locals:
StackMap stack: sun.security.jgss.GSSCaller
aload 1
3: invokestatic sun.security.jgss.krb5.Krb5Util.getSubject:(Lsun/security/jgss/GSSCaller;Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;
4: areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.Exception
}
SourceFile: "Krb5KeyExchangeService.java"
NestMembers:
sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$1 sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$2 sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl$3
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
ExchangerImpl = sun.security.krb5.internal.ssl.Krb5KeyExchangeService$ExchangerImpl of sun.security.krb5.internal.ssl.Krb5KeyExchangeService