public final class com.sun.jndi.ldap.sasl.LdapSasl
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.sun.jndi.ldap.sasl.LdapSasl
super_class: java.lang.Object
{
private static final java.lang.String SASL_CALLBACK;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "java.naming.security.sasl.callback"
private static final java.lang.String SASL_AUTHZ_ID;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "java.naming.security.sasl.authorizationId"
private static final java.lang.String SASL_REALM;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "java.naming.security.sasl.realm"
private static final int LDAP_SUCCESS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int LDAP_SASL_BIND_IN_PROGRESS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 14
private static final byte[] NO_BYTES;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: iconst_0
newarray 8
putstatic com.sun.jndi.ldap.sasl.LdapSasl.NO_BYTES:[B
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/jndi/ldap/sasl/LdapSasl;
public static com.sun.jndi.ldap.LdapResult saslBind(com.sun.jndi.ldap.LdapClient, com.sun.jndi.ldap.Connection, java.lang.String, java.lang.String, , java.lang.String, java.util.Hashtable<?, ?>, javax.naming.ldap.Control[]);
descriptor: (Lcom/sun/jndi/ldap/LdapClient;Lcom/sun/jndi/ldap/Connection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Ljava/util/Hashtable;[Ljavax/naming/ldap/Control;)Lcom/sun/jndi/ldap/LdapResult;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=22, 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: aconst_null
astore 8
start local 8 1: iconst_0
istore 9
start local 9 2: aload 6
ifnull 3
aload 6
ldc "java.naming.security.sasl.callback"
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast javax.security.auth.callback.CallbackHandler
goto 4
StackMap locals: javax.security.sasl.SaslClient int
StackMap stack:
3: aconst_null
4: StackMap locals:
StackMap stack: javax.security.auth.callback.CallbackHandler
astore 10
start local 10 5: aload 10
ifnonnull 8
6: new com.sun.jndi.ldap.sasl.DefaultCallbackHandler
dup
aload 3
aload 4
aload 6
ldc "java.naming.security.sasl.realm"
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
invokespecial com.sun.jndi.ldap.sasl.DefaultCallbackHandler.<init>:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;)V
astore 10
7: iconst_1
istore 9
8: StackMap locals: javax.security.auth.callback.CallbackHandler
StackMap stack:
aload 6
ifnull 9
aload 6
ldc "java.naming.security.sasl.authorizationId"
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
goto 10
StackMap locals:
StackMap stack:
9: aconst_null
StackMap locals:
StackMap stack: java.lang.String
10: astore 11
start local 11 11: aload 5
invokestatic com.sun.jndi.ldap.sasl.LdapSasl.getSaslMechanismNames:(Ljava/lang/String;)[Ljava/lang/String;
astore 12
start local 12 12: aload 6
ldc "jdk.internal.sasl.tlschannelbinding"
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
ifnull 14
13: new javax.naming.NamingException
dup
ldc "jdk.internal.sasl.tlschannelbinding property cannot be set explicitly"
invokespecial javax.naming.NamingException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals: java.lang.String java.lang.String[]
StackMap stack:
aload 6
astore 13
start local 13 15: aload 1
invokevirtual com.sun.jndi.ldap.Connection.isTlsConnection:()Z
ifeq 28
16: aload 6
ldc "com.sun.jndi.ldap.tls.cbtype"
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
17: invokestatic com.sun.jndi.ldap.sasl.TlsChannelBinding.parseType:(Ljava/lang/String;)Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
18: astore 14
start local 14 19: aload 14
getstatic com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType.TLS_SERVER_END_POINT:Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
if_acmpne 28
20: aload 1
invokevirtual com.sun.jndi.ldap.Connection.getTlsServerCertificate:()Ljava/security/cert/X509Certificate;
astore 15
start local 15 21: aload 15
ifnull 27
22: aload 15
invokestatic com.sun.jndi.ldap.sasl.TlsChannelBinding.create:(Ljava/security/cert/X509Certificate;)Lcom/sun/jndi/ldap/sasl/TlsChannelBinding;
23: astore 16
start local 16 24: aload 6
invokevirtual java.util.Hashtable.clone:()Ljava/lang/Object;
checkcast java.util.Hashtable
astore 13
25: aload 13
ldc "jdk.internal.sasl.tlschannelbinding"
aload 16
invokevirtual com.sun.jndi.ldap.sasl.TlsChannelBinding.getData:()[B
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 16 26: goto 28
27: StackMap locals: java.util.Hashtable com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType java.security.cert.X509Certificate
StackMap stack:
new javax.security.sasl.SaslException
dup
ldc "No suitable certificate to generate TLS Channel Binding data"
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
end local 15 end local 14 28: StackMap locals:
StackMap stack:
aload 12
aload 11
ldc "ldap"
aload 2
aload 13
aload 10
29: invokestatic javax.security.sasl.Sasl.createSaslClient:([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljavax/security/auth/callback/CallbackHandler;)Ljavax/security/sasl/SaslClient;
astore 8
30: aload 8
ifnonnull 32
31: new javax.naming.AuthenticationNotSupportedException
dup
aload 5
invokespecial javax.naming.AuthenticationNotSupportedException.<init>:(Ljava/lang/String;)V
athrow
32: StackMap locals:
StackMap stack:
aload 8
invokeinterface javax.security.sasl.SaslClient.getMechanismName:()Ljava/lang/String;
astore 15
start local 15 33: aload 8
invokeinterface javax.security.sasl.SaslClient.hasInitialResponse:()Z
ifeq 35
34: aload 8
getstatic com.sun.jndi.ldap.sasl.LdapSasl.NO_BYTES:[B
invokeinterface javax.security.sasl.SaslClient.evaluateChallenge:([B)[B
goto 36
StackMap locals: com.sun.jndi.ldap.LdapClient com.sun.jndi.ldap.Connection java.lang.String java.lang.String java.lang.Object java.lang.String java.util.Hashtable javax.naming.ldap.Control[] javax.security.sasl.SaslClient int javax.security.auth.callback.CallbackHandler java.lang.String java.lang.String[] java.util.Hashtable top java.lang.String
StackMap stack:
35: aconst_null
36: StackMap locals:
StackMap stack: byte[]
astore 16
start local 16 37: aload 0
aconst_null
aload 16
aload 7
aload 15
iconst_1
invokevirtual com.sun.jndi.ldap.LdapClient.ldapBind:(Ljava/lang/String;[B[Ljavax/naming/ldap/Control;Ljava/lang/String;Z)Lcom/sun/jndi/ldap/LdapResult;
astore 14
start local 14 38: goto 49
39: StackMap locals: com.sun.jndi.ldap.LdapClient com.sun.jndi.ldap.Connection java.lang.String java.lang.String java.lang.Object java.lang.String java.util.Hashtable javax.naming.ldap.Control[] javax.security.sasl.SaslClient int javax.security.auth.callback.CallbackHandler java.lang.String java.lang.String[] java.util.Hashtable com.sun.jndi.ldap.LdapResult java.lang.String byte[]
StackMap stack:
aload 8
40: aload 14
getfield com.sun.jndi.ldap.LdapResult.serverCreds:[B
ifnull 41
aload 14
getfield com.sun.jndi.ldap.LdapResult.serverCreds:[B
goto 42
StackMap locals:
StackMap stack: javax.security.sasl.SaslClient
41: getstatic com.sun.jndi.ldap.sasl.LdapSasl.NO_BYTES:[B
42: StackMap locals: com.sun.jndi.ldap.LdapClient com.sun.jndi.ldap.Connection java.lang.String java.lang.String java.lang.Object java.lang.String java.util.Hashtable javax.naming.ldap.Control[] javax.security.sasl.SaslClient int javax.security.auth.callback.CallbackHandler java.lang.String java.lang.String[] java.util.Hashtable com.sun.jndi.ldap.LdapResult java.lang.String byte[]
StackMap stack: javax.security.sasl.SaslClient byte[]
invokeinterface javax.security.sasl.SaslClient.evaluateChallenge:([B)[B
astore 16
43: aload 14
getfield com.sun.jndi.ldap.LdapResult.status:I
ifne 48
44: aload 16
ifnull 52
45: new javax.naming.AuthenticationException
dup
46: ldc "SASL client generated response after success"
47: invokespecial javax.naming.AuthenticationException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals:
StackMap stack:
aload 0
aconst_null
aload 16
aload 7
aload 15
iconst_1
invokevirtual com.sun.jndi.ldap.LdapClient.ldapBind:(Ljava/lang/String;[B[Ljavax/naming/ldap/Control;Ljava/lang/String;Z)Lcom/sun/jndi/ldap/LdapResult;
astore 14
49: StackMap locals:
StackMap stack:
aload 8
invokeinterface javax.security.sasl.SaslClient.isComplete:()Z
ifne 52
50: aload 14
getfield com.sun.jndi.ldap.LdapResult.status:I
bipush 14
if_icmpeq 39
51: aload 14
getfield com.sun.jndi.ldap.LdapResult.status:I
ifeq 39
52: StackMap locals:
StackMap stack:
aload 14
getfield com.sun.jndi.ldap.LdapResult.status:I
ifne 69
53: aload 8
invokeinterface javax.security.sasl.SaslClient.isComplete:()Z
ifne 57
54: new javax.naming.AuthenticationException
dup
55: ldc "SASL authentication not complete despite server claims"
56: invokespecial javax.naming.AuthenticationException.<init>:(Ljava/lang/String;)V
athrow
57: StackMap locals:
StackMap stack:
aload 8
ldc "javax.security.sasl.qop"
invokeinterface javax.security.sasl.SaslClient.getNegotiatedProperty:(Ljava/lang/String;)Ljava/lang/Object;
checkcast java.lang.String
astore 17
start local 17 58: aload 17
ifnull 68
aload 17
ldc "auth-int"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 60
59: aload 17
ldc "auth-conf"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 68
60: StackMap locals: java.lang.String
StackMap stack:
new com.sun.jndi.ldap.sasl.SaslInputStream
dup
aload 8
61: aload 1
getfield com.sun.jndi.ldap.Connection.inStream:Ljava/io/InputStream;
62: invokespecial com.sun.jndi.ldap.sasl.SaslInputStream.<init>:(Ljavax/security/sasl/SaslClient;Ljava/io/InputStream;)V
astore 18
start local 18 63: new com.sun.jndi.ldap.sasl.SaslOutputStream
dup
aload 8
64: aload 1
getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
65: invokespecial com.sun.jndi.ldap.sasl.SaslOutputStream.<init>:(Ljavax/security/sasl/SaslClient;Ljava/io/OutputStream;)V
astore 19
start local 19 66: aload 1
aload 18
aload 19
invokevirtual com.sun.jndi.ldap.Connection.replaceStreams:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
end local 19 end local 18 67: goto 69
68: StackMap locals:
StackMap stack:
aload 8
invokeinterface javax.security.sasl.SaslClient.dispose:()V
end local 17 69: StackMap locals:
StackMap stack:
aload 14
astore 21
70: iload 9
ifeq 72
71: aload 10
checkcast com.sun.jndi.ldap.sasl.DefaultCallbackHandler
invokevirtual com.sun.jndi.ldap.sasl.DefaultCallbackHandler.clearPassword:()V
72: StackMap locals: com.sun.jndi.ldap.LdapClient com.sun.jndi.ldap.Connection java.lang.String java.lang.String java.lang.Object java.lang.String java.util.Hashtable javax.naming.ldap.Control[] javax.security.sasl.SaslClient int javax.security.auth.callback.CallbackHandler java.lang.String java.lang.String[] java.util.Hashtable com.sun.jndi.ldap.LdapResult java.lang.String byte[] top top top top com.sun.jndi.ldap.LdapResult
StackMap stack:
aload 21
areturn
end local 16 end local 15 end local 14 73: StackMap locals: com.sun.jndi.ldap.LdapClient com.sun.jndi.ldap.Connection java.lang.String java.lang.String java.lang.Object java.lang.String java.util.Hashtable javax.naming.ldap.Control[] javax.security.sasl.SaslClient int javax.security.auth.callback.CallbackHandler java.lang.String java.lang.String[] java.util.Hashtable
StackMap stack: javax.security.sasl.SaslException
astore 14
start local 14 74: new javax.naming.AuthenticationException
dup
75: aload 5
76: invokespecial javax.naming.AuthenticationException.<init>:(Ljava/lang/String;)V
astore 15
start local 15 77: aload 15
aload 14
invokevirtual javax.naming.NamingException.setRootCause:(Ljava/lang/Throwable;)V
78: aload 15
athrow
end local 15 end local 14 79: StackMap locals:
StackMap stack: java.lang.Throwable
astore 20
80: iload 9
ifeq 82
81: aload 10
checkcast com.sun.jndi.ldap.sasl.DefaultCallbackHandler
invokevirtual com.sun.jndi.ldap.sasl.DefaultCallbackHandler.clearPassword:()V
82: StackMap locals: com.sun.jndi.ldap.LdapClient com.sun.jndi.ldap.Connection java.lang.String java.lang.String java.lang.Object java.lang.String java.util.Hashtable javax.naming.ldap.Control[] javax.security.sasl.SaslClient int javax.security.auth.callback.CallbackHandler java.lang.String java.lang.String[] java.util.Hashtable top top top top top top java.lang.Throwable
StackMap stack:
aload 20
athrow
end local 13 end local 12 end local 11 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 83 0 clnt Lcom/sun/jndi/ldap/LdapClient;
0 83 1 conn Lcom/sun/jndi/ldap/Connection;
0 83 2 server Ljava/lang/String;
0 83 3 dn Ljava/lang/String;
0 83 4 pw Ljava/lang/Object;
0 83 5 authMech Ljava/lang/String;
0 83 6 env Ljava/util/Hashtable<**>;
0 83 7 bindCtls [Ljavax/naming/ldap/Control;
1 83 8 saslClnt Ljavax/security/sasl/SaslClient;
2 83 9 cleanupHandler Z
5 83 10 cbh Ljavax/security/auth/callback/CallbackHandler;
11 83 11 authzId Ljava/lang/String;
12 83 12 mechs [Ljava/lang/String;
15 83 13 envProps Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>;
19 28 14 cbType Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
21 28 15 cert Ljava/security/cert/X509Certificate;
24 26 16 tlsCB Lcom/sun/jndi/ldap/sasl/TlsChannelBinding;
38 73 14 res Lcom/sun/jndi/ldap/LdapResult;
33 73 15 mechName Ljava/lang/String;
37 73 16 response [B
58 69 17 qop Ljava/lang/String;
63 67 18 newIn Ljava/io/InputStream;
66 67 19 newOut Ljava/io/OutputStream;
74 79 14 e Ljavax/security/sasl/SaslException;
77 79 15 ne Ljavax/naming/NamingException;
Exception table:
from to target type
15 70 73 Class javax.security.sasl.SaslException
15 70 79 any
73 79 79 any
Exceptions:
throws java.io.IOException, javax.naming.NamingException
Signature: (Lcom/sun/jndi/ldap/LdapClient;Lcom/sun/jndi/ldap/Connection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Ljava/util/Hashtable<**>;[Ljavax/naming/ldap/Control;)Lcom/sun/jndi/ldap/LdapResult;
MethodParameters:
Name Flags
clnt
conn
server
dn
pw
authMech
env
bindCtls
private static java.lang.String[] getSaslMechanismNames(java.lang.String);
descriptor: (Ljava/lang/String;)[Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: new java.util.StringTokenizer
dup
aload 0
invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;)V
astore 1
start local 1 1: new java.util.Vector
dup
bipush 10
invokespecial java.util.Vector.<init>:(I)V
astore 2
start local 2 2: goto 4
3: StackMap locals: java.util.StringTokenizer java.util.Vector
StackMap stack:
aload 2
aload 1
invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
invokevirtual java.util.Vector.addElement:(Ljava/lang/Object;)V
4: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
ifne 3
5: aload 2
invokevirtual java.util.Vector.size:()I
anewarray java.lang.String
astore 3
start local 3 6: iconst_0
istore 4
start local 4 7: goto 10
8: StackMap locals: java.lang.String[] int
StackMap stack:
aload 3
iload 4
aload 2
iload 4
invokevirtual java.util.Vector.elementAt:(I)Ljava/lang/Object;
checkcast java.lang.String
aastore
9: iinc 4 1
StackMap locals:
StackMap stack:
10: iload 4
aload 2
invokevirtual java.util.Vector.size:()I
if_icmplt 8
end local 4 11: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 str Ljava/lang/String;
1 12 1 parser Ljava/util/StringTokenizer;
2 12 2 mechs Ljava/util/Vector<Ljava/lang/String;>;
6 12 3 mechNames [Ljava/lang/String;
7 11 4 i I
MethodParameters:
Name Flags
str
}
SourceFile: "LdapSasl.java"
InnerClasses:
public final TlsChannelBindingType = com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType of com.sun.jndi.ldap.sasl.TlsChannelBinding