final class com.sun.security.sasl.digest.DigestMD5Client extends com.sun.security.sasl.digest.DigestMD5Base implements javax.security.sasl.SaslClient
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.sun.security.sasl.digest.DigestMD5Client
super_class: com.sun.security.sasl.digest.DigestMD5Base
{
private static final java.lang.String MY_CLASS_NAME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.String CIPHER_PROPERTY;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "com.sun.security.sasl.digest.cipher"
private static final java.lang.String[] DIRECTIVE_KEY;
descriptor: [Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int REALM;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int QOP;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int ALGORITHM;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final int NONCE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3
private static final int MAXBUF;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4
private static final int CHARSET;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 5
private static final int CIPHER;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 6
private static final int RESPONSE_AUTH;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 7
private static final int STALE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 8
private int nonceCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private java.lang.String specifiedCipher;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private byte[] cnonce;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private java.lang.String username;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private char[] passwd;
descriptor: [C
flags: (0x0002) ACC_PRIVATE
private byte[] authzidBytes;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: ldc Lcom/sun/security/sasl/digest/DigestMD5Client;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
putstatic com.sun.security.sasl.digest.DigestMD5Client.MY_CLASS_NAME:Ljava/lang/String;
1: bipush 9
anewarray java.lang.String
dup
iconst_0
2: ldc "realm"
aastore
dup
iconst_1
3: ldc "qop"
aastore
dup
iconst_2
4: ldc "algorithm"
aastore
dup
iconst_3
5: ldc "nonce"
aastore
dup
iconst_4
6: ldc "maxbuf"
aastore
dup
iconst_5
7: ldc "charset"
aastore
dup
bipush 6
8: ldc "cipher"
aastore
dup
bipush 7
9: ldc "rspauth"
aastore
dup
bipush 8
10: ldc "stale"
aastore
11: putstatic com.sun.security.sasl.digest.DigestMD5Client.DIRECTIVE_KEY:[Ljava/lang/String;
12: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.lang.String, java.lang.String, java.lang.String, java.util.Map<java.lang.String, ?>, javax.security.auth.callback.CallbackHandler);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljavax/security/auth/callback/CallbackHandler;)V
flags: (0x0000)
Code:
stack=7, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
aload 4
getstatic com.sun.security.sasl.digest.DigestMD5Client.MY_CLASS_NAME:Ljava/lang/String;
iconst_2
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "/"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 5
invokespecial com.sun.security.sasl.digest.DigestMD5Base.<init>:(Ljava/util/Map;Ljava/lang/String;ILjava/lang/String;Ljavax/security/auth/callback/CallbackHandler;)V
1: aload 1
ifnull 9
2: aload 0
aload 1
putfield com.sun.security.sasl.digest.DigestMD5Client.authzid:Ljava/lang/String;
3: aload 0
aload 1
ldc "UTF8"
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
putfield com.sun.security.sasl.digest.DigestMD5Client.authzidBytes:[B
4: goto 9
StackMap locals: com.sun.security.sasl.digest.DigestMD5Client java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler
StackMap stack: java.io.UnsupportedEncodingException
5: astore 6
start local 6 6: new javax.security.sasl.SaslException
dup
7: ldc "DIGEST-MD5: Error encoding authzid value into UTF-8"
aload 6
8: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 6 9: StackMap locals:
StackMap stack:
aload 4
ifnull 14
10: aload 0
aload 4
ldc "com.sun.security.sasl.digest.cipher"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
putfield com.sun.security.sasl.digest.DigestMD5Client.specifiedCipher:Ljava/lang/String;
11: getstatic com.sun.security.sasl.digest.DigestMD5Client.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST60:Explicitly specified cipher: {0}"
12: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.specifiedCipher:Ljava/lang/String;
13: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
14: 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 15 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
0 15 1 authzid Ljava/lang/String;
0 15 2 protocol Ljava/lang/String;
0 15 3 serverName Ljava/lang/String;
0 15 4 props Ljava/util/Map<Ljava/lang/String;*>;
0 15 5 cbh Ljavax/security/auth/callback/CallbackHandler;
6 9 6 e Ljava/io/UnsupportedEncodingException;
Exception table:
from to target type
3 4 5 Class java.io.UnsupportedEncodingException
Exceptions:
throws javax.security.sasl.SaslException
Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;*>;Ljavax/security/auth/callback/CallbackHandler;)V
MethodParameters:
Name Flags
authzid
protocol
serverName
props
cbh
public boolean hasInitialResponse();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
public byte[] evaluateChallenge(byte[]);
descriptor: ([B)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aload 1
arraylength
sipush 2048
if_icmple 6
1: new javax.security.sasl.SaslException
dup
2: new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: Invalid digest-challenge length. Got: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
3: aload 1
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " Expected < "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
sipush 2048
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
4: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.step:I
tableswitch { // 2 - 3
2: 7
3: 26
default: 44
}
7: StackMap locals:
StackMap stack:
new java.util.ArrayList
dup
iconst_3
invokespecial java.util.ArrayList.<init>:(I)V
astore 3
start local 3 8: aload 1
getstatic com.sun.security.sasl.digest.DigestMD5Client.DIRECTIVE_KEY:[Ljava/lang/String;
9: aload 3
iconst_0
10: invokestatic com.sun.security.sasl.digest.DigestMD5Client.parseDirectives:([B[Ljava/lang/String;Ljava/util/List;I)[[B
astore 2
start local 2 11: aload 0
aload 2
aload 3
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.processChallenge:([[BLjava/util/List;)V
12: aload 0
aload 2
iconst_1
aaload
aload 2
bipush 6
aaload
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.checkQopSupport:([B[B)V
13: aload 0
dup
getfield com.sun.security.sasl.digest.DigestMD5Client.step:I
iconst_1
iadd
putfield com.sun.security.sasl.digest.DigestMD5Client.step:I
14: aload 0
aload 2
iconst_5
aaload
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.generateClientResponse:([B)[B
15: areturn
16: StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[] byte[][] java.util.List
StackMap stack: javax.security.sasl.SaslException
astore 4
start local 4 17: aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Client.step:I
18: aload 0
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.clearPassword:()V
19: aload 4
athrow
end local 4 20: StackMap locals:
StackMap stack: java.io.IOException
astore 4
start local 4 21: aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Client.step:I
22: aload 0
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.clearPassword:()V
23: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Error generating digest response-value"
24: aload 4
25: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 end local 3 end local 2 26: StackMap locals:
StackMap stack:
aload 1
getstatic com.sun.security.sasl.digest.DigestMD5Client.DIRECTIVE_KEY:[Ljava/lang/String;
27: aconst_null
iconst_0
28: invokestatic com.sun.security.sasl.digest.DigestMD5Client.parseDirectives:([B[Ljava/lang/String;Ljava/util/List;I)[[B
astore 2
start local 2 29: aload 0
aload 2
bipush 7
aaload
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.validateResponseValue:([B)V
30: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.integrity:Z
ifeq 33
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.privacy:Z
ifeq 33
31: aload 0
new com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy
dup
aload 0
iconst_1
invokespecial com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.<init>:(Lcom/sun/security/sasl/digest/DigestMD5Base;Z)V
putfield com.sun.security.sasl.digest.DigestMD5Client.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
32: goto 35
StackMap locals: byte[][]
StackMap stack:
33: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.integrity:Z
ifeq 35
34: aload 0
new com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity
dup
aload 0
iconst_1
invokespecial com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity.<init>:(Lcom/sun/security/sasl/digest/DigestMD5Base;Z)V
putfield com.sun.security.sasl.digest.DigestMD5Client.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
35: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.clearPassword:()V
36: aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Client.step:I
37: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Client.completed:Z
38: aconst_null
areturn
end local 2 39: StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[]
StackMap stack: java.lang.Throwable
astore 4
40: aload 0
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.clearPassword:()V
41: aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Client.step:I
42: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Client.completed:Z
43: aload 4
athrow
44: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Client at illegal state"
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 45 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
0 45 1 challengeData [B
11 26 2 challengeVal [[B
29 39 2 challengeVal [[B
8 26 3 realmChoices Ljava/util/List<[B>;
17 20 4 e Ljavax/security/sasl/SaslException;
21 26 4 e Ljava/io/IOException;
Exception table:
from to target type
11 15 16 Class javax.security.sasl.SaslException
11 15 20 Class java.io.IOException
26 35 39 any
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
challengeData
private void processChallenge(byte[][], java.util.List<byte[]>);
descriptor: ([[BLjava/util/List;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
iconst_5
aaload
ifnull 7
1: ldc "utf-8"
new java.lang.String
dup
aload 1
iconst_5
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 5
2: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: digest-challenge format violation. Unrecognised charset value: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
3: new java.lang.String
dup
aload 1
iconst_5
aaload
invokespecial java.lang.String.<init>:([B)V
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
4: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
ldc "UTF8"
putfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
6: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Client.useUTF8:Z
7: StackMap locals:
StackMap stack:
aload 1
iconst_2
aaload
ifnonnull 9
8: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Digest-challenge format violation: algorithm directive missing"
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
ldc "md5-sess"
new java.lang.String
dup
aload 1
iconst_2
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 13
10: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: Digest-challenge format violation. Invalid value for 'algorithm' directive: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
11: aload 1
iconst_2
aaload
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
12: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals:
StackMap stack:
aload 1
iconst_3
aaload
ifnonnull 15
14: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Digest-challenge format violation: nonce directive missing"
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
15: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_3
aaload
putfield com.sun.security.sasl.digest.DigestMD5Client.nonce:[B
16: aconst_null
astore 3
start local 3 17: aload 1
iconst_0
aaload
ifnull 29
18: aload 2
ifnull 19
aload 2
invokeinterface java.util.List.size:()I
iconst_1
if_icmpgt 21
19: StackMap locals: java.lang.String[]
StackMap stack:
aload 0
new java.lang.String
dup
aload 1
iconst_0
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
20: goto 29
21: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.List.size:()I
anewarray java.lang.String
astore 3
22: iconst_0
istore 4
start local 4 23: goto 28
24: StackMap locals: int
StackMap stack:
aload 3
iload 4
25: new java.lang.String
dup
aload 2
iload 4
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast byte[]
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
26: aastore
27: iinc 4 1
StackMap locals:
StackMap stack:
28: iload 4
aload 3
arraylength
if_icmplt 24
end local 4 29: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.authzid:Ljava/lang/String;
ifnonnull 31
30: new javax.security.auth.callback.NameCallback
dup
ldc "DIGEST-MD5 authentication ID: "
invokespecial javax.security.auth.callback.NameCallback.<init>:(Ljava/lang/String;)V
goto 32
31: StackMap locals:
StackMap stack:
new javax.security.auth.callback.NameCallback
dup
ldc "DIGEST-MD5 authentication ID: "
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.authzid:Ljava/lang/String;
invokespecial javax.security.auth.callback.NameCallback.<init>:(Ljava/lang/String;Ljava/lang/String;)V
32: StackMap locals:
StackMap stack: javax.security.auth.callback.NameCallback
astore 4
start local 4 33: new javax.security.auth.callback.PasswordCallback
dup
ldc "DIGEST-MD5 password: "
iconst_0
invokespecial javax.security.auth.callback.PasswordCallback.<init>:(Ljava/lang/String;Z)V
34: astore 5
start local 5 35: aload 3
ifnonnull 44
36: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
ifnonnull 37
new javax.security.sasl.RealmCallback
dup
ldc "DIGEST-MD5 realm: "
invokespecial javax.security.sasl.RealmCallback.<init>:(Ljava/lang/String;)V
goto 38
37: StackMap locals: javax.security.auth.callback.NameCallback javax.security.auth.callback.PasswordCallback
StackMap stack:
new javax.security.sasl.RealmCallback
dup
ldc "DIGEST-MD5 realm: "
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
invokespecial javax.security.sasl.RealmCallback.<init>:(Ljava/lang/String;Ljava/lang/String;)V
38: StackMap locals:
StackMap stack: javax.security.sasl.RealmCallback
astore 6
start local 6 39: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.cbh:Ljavax/security/auth/callback/CallbackHandler;
iconst_3
anewarray javax.security.auth.callback.Callback
dup
iconst_0
aload 6
aastore
dup
iconst_1
aload 4
aastore
dup
iconst_2
aload 5
aastore
invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
40: aload 0
aload 6
invokevirtual javax.security.sasl.RealmCallback.getText:()Ljava/lang/String;
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
41: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
ifnonnull 51
42: aload 0
ldc ""
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
end local 6 43: goto 51
44: StackMap locals:
StackMap stack:
new javax.security.sasl.RealmChoiceCallback
dup
45: ldc "DIGEST-MD5 realm: "
46: aload 3
47: iconst_0
iconst_0
48: invokespecial javax.security.sasl.RealmChoiceCallback.<init>:(Ljava/lang/String;[Ljava/lang/String;IZ)V
astore 6
start local 6 49: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.cbh:Ljavax/security/auth/callback/CallbackHandler;
iconst_3
anewarray javax.security.auth.callback.Callback
dup
iconst_0
aload 6
aastore
dup
iconst_1
aload 4
aastore
dup
iconst_2
aload 5
aastore
invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
50: aload 0
aload 3
aload 6
invokevirtual javax.security.sasl.RealmChoiceCallback.getSelectedIndexes:()[I
iconst_0
iaload
aaload
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
end local 6 51: StackMap locals:
StackMap stack:
aload 0
aload 5
invokevirtual javax.security.auth.callback.PasswordCallback.getPassword:()[C
putfield com.sun.security.sasl.digest.DigestMD5Client.passwd:[C
52: aload 5
invokevirtual javax.security.auth.callback.PasswordCallback.clearPassword:()V
53: aload 0
aload 4
invokevirtual javax.security.auth.callback.NameCallback.getName:()Ljava/lang/String;
putfield com.sun.security.sasl.digest.DigestMD5Client.username:Ljava/lang/String;
end local 5 end local 4 end local 3 54: goto 63
StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[][] java.util.List
StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
55: astore 3
start local 3 56: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Cannot perform callback to acquire realm, authentication ID or password"
57: aload 3
58: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 3 59: StackMap locals:
StackMap stack: java.io.IOException
astore 3
start local 3 60: new javax.security.sasl.SaslException
dup
61: ldc "DIGEST-MD5: Error acquiring realm, authentication ID or password"
aload 3
62: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 3 63: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.username:Ljava/lang/String;
ifnull 64
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.passwd:[C
ifnonnull 67
64: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
65: ldc "DIGEST-MD5: authentication ID and password must be specified"
66: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
67: StackMap locals:
StackMap stack:
aload 1
iconst_4
aaload
ifnonnull 68
ldc 65536
goto 69
68: StackMap locals:
StackMap stack:
new java.lang.String
dup
aload 1
iconst_4
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
69: StackMap locals:
StackMap stack: int
istore 3
start local 3 70: aload 0
71: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.sendMaxBufSize:I
ifne 72
iload 3
goto 73
72: StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[][] java.util.List int
StackMap stack: com.sun.security.sasl.digest.DigestMD5Client
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.sendMaxBufSize:I
iload 3
invokestatic java.lang.Math.min:(II)I
73: StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[][] java.util.List int
StackMap stack: com.sun.security.sasl.digest.DigestMD5Client int
putfield com.sun.security.sasl.digest.DigestMD5Client.sendMaxBufSize:I
74: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 75 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
0 75 1 challengeVal [[B
0 75 2 realmChoices Ljava/util/List<[B>;
17 54 3 realmTokens [Ljava/lang/String;
23 29 4 i I
33 54 4 ncb Ljavax/security/auth/callback/NameCallback;
35 54 5 pcb Ljavax/security/auth/callback/PasswordCallback;
39 43 6 tcb Ljavax/security/sasl/RealmCallback;
49 51 6 ccb Ljavax/security/sasl/RealmChoiceCallback;
56 59 3 e Ljavax/security/auth/callback/UnsupportedCallbackException;
60 63 3 e Ljava/io/IOException;
70 75 3 srvMaxBufSize I
Exception table:
from to target type
16 54 55 Class javax.security.auth.callback.UnsupportedCallbackException
16 54 59 Class java.io.IOException
Exceptions:
throws javax.security.sasl.SaslException, java.io.UnsupportedEncodingException
Signature: ([[BLjava/util/List<[B>;)V
MethodParameters:
Name Flags
challengeVal
realmChoices
private void checkQopSupport(byte[], byte[]);
descriptor: ([B[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 3
1: ldc "auth"
astore 3
start local 3 2: goto 4
end local 3 3: StackMap locals:
StackMap stack:
new java.lang.String
dup
aload 1
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
astore 3
start local 3 4: StackMap locals: java.lang.String
StackMap stack:
iconst_3
anewarray java.lang.String
astore 4
start local 4 5: aload 3
aload 4
6: iconst_1
7: invokestatic com.sun.security.sasl.digest.DigestMD5Client.parseQop:(Ljava/lang/String;[Ljava/lang/String;Z)[B
astore 5
start local 5 8: aload 5
invokestatic com.sun.security.sasl.digest.DigestMD5Client.combineMasks:([B)B
istore 6
start local 6 9: iload 6
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.qop:[B
invokestatic com.sun.security.sasl.digest.DigestMD5Client.findPreferredMask:(B[B)B
tableswitch { // 0 - 4
0: 10
1: 11
2: 13
3: 21
4: 17
default: 21
}
10: StackMap locals: java.lang.String[] byte[] int
StackMap stack:
new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: No common protection layer between client and server"
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
aload 0
ldc "auth"
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedQop:Ljava/lang/String;
12: goto 21
13: StackMap locals:
StackMap stack:
aload 0
ldc "auth-int"
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedQop:Ljava/lang/String;
14: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Client.integrity:Z
15: aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.sendMaxBufSize:I
bipush 16
isub
putfield com.sun.security.sasl.digest.DigestMD5Client.rawSendSize:I
16: goto 21
17: StackMap locals:
StackMap stack:
aload 0
ldc "auth-conf"
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedQop:Ljava/lang/String;
18: aload 0
aload 0
iconst_1
dup_x1
putfield com.sun.security.sasl.digest.DigestMD5Client.integrity:Z
putfield com.sun.security.sasl.digest.DigestMD5Client.privacy:Z
19: aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.sendMaxBufSize:I
bipush 26
isub
putfield com.sun.security.sasl.digest.DigestMD5Client.rawSendSize:I
20: aload 0
aload 2
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.checkStrengthSupport:([B)V
21: StackMap locals:
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Client.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 25
22: getstatic com.sun.security.sasl.digest.DigestMD5Client.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST61:Raw send size: {0}"
23: new java.lang.Integer
dup
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.rawSendSize:I
invokespecial java.lang.Integer.<init>:(I)V
24: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
25: StackMap locals:
StackMap stack:
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 26 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
0 26 1 qopInChallenge [B
0 26 2 ciphersInChallenge [B
2 3 3 qopOptions Ljava/lang/String;
4 26 3 qopOptions Ljava/lang/String;
5 26 4 serverQopTokens [Ljava/lang/String;
8 26 5 serverQop [B
9 26 6 serverAllQop B
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
qopInChallenge
ciphersInChallenge
private void checkStrengthSupport(byte[]);
descriptor: ([B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=11, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: server did not specify cipher to use for 'auth-conf'"
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
new java.lang.String
dup
aload 1
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
astore 2
start local 2 3: new java.util.StringTokenizer
dup
aload 2
ldc ", \t\n"
invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
astore 3
start local 3 4: aload 3
invokevirtual java.util.StringTokenizer.countTokens:()I
istore 4
start local 4 5: aconst_null
astore 5
start local 5 6: iconst_5
newarray 8
astore 6
start local 6 7: aload 6
arraylength
anewarray java.lang.String
astore 7
start local 7 8: iconst_0
istore 8
start local 8 9: goto 20
10: StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[] java.lang.String java.util.StringTokenizer int java.lang.String byte[] java.lang.String[] int
StackMap stack:
aload 3
invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
astore 5
11: iconst_0
istore 9
start local 9 12: goto 18
13: StackMap locals: int
StackMap stack:
aload 5
getstatic com.sun.security.sasl.digest.DigestMD5Client.CIPHER_TOKENS:[Ljava/lang/String;
iload 9
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 17
14: aload 6
iload 9
dup2
baload
getstatic com.sun.security.sasl.digest.DigestMD5Client.CIPHER_MASKS:[B
iload 9
baload
ior
i2b
bastore
15: aload 7
iload 9
aload 5
aastore
16: getstatic com.sun.security.sasl.digest.DigestMD5Client.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST62:Server supports {0}"
aload 5
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
17: StackMap locals:
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
18: iload 9
getstatic com.sun.security.sasl.digest.DigestMD5Client.CIPHER_TOKENS:[Ljava/lang/String;
arraylength
if_icmplt 13
end local 9 19: iinc 8 1
StackMap locals:
StackMap stack:
20: iload 8
iload 4
if_icmplt 10
end local 8 21: invokestatic com.sun.security.sasl.digest.DigestMD5Client.getPlatformCiphers:()[B
astore 8
start local 8 22: iconst_0
istore 9
start local 9 23: iconst_0
istore 10
start local 10 24: goto 28
25: StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[] java.lang.String java.util.StringTokenizer int java.lang.String byte[] java.lang.String[] byte[] int int
StackMap stack:
aload 6
iload 10
dup2
baload
aload 8
iload 10
baload
iand
i2b
bastore
26: iload 9
aload 6
iload 10
baload
ior
i2b
istore 9
27: iinc 10 1
StackMap locals:
StackMap stack:
28: iload 10
aload 6
arraylength
if_icmplt 25
end local 10 29: iload 9
ifne 35
30: new javax.security.sasl.SaslException
dup
31: new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: Client supports none of these cipher suites: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
32: aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
33: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
34: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
35: StackMap locals:
StackMap stack:
aload 0
aload 0
aload 6
aload 7
invokevirtual com.sun.security.sasl.digest.DigestMD5Client.findCipherAndStrength:([B[Ljava/lang/String;)Ljava/lang/String;
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedCipher:Ljava/lang/String;
36: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedCipher:Ljava/lang/String;
ifnonnull 38
37: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Unable to negotiate a strength level for 'auth-conf'"
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
38: StackMap locals:
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Client.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST63:Cipher suite: {0}"
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedCipher:Ljava/lang/String;
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
39: return
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 40 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
0 40 1 ciphersInChallenge [B
3 40 2 cipherOptions Ljava/lang/String;
4 40 3 parser Ljava/util/StringTokenizer;
5 40 4 tokenCount I
6 40 5 token Ljava/lang/String;
7 40 6 serverCiphers [B
8 40 7 serverCipherStrs [Ljava/lang/String;
9 21 8 i I
12 19 9 j I
22 40 8 clntCiphers [B
23 40 9 inter B
24 29 10 i I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
ciphersInChallenge
private java.lang.String findCipherAndStrength(byte[], java.lang.String[]);
descriptor: ([B[Ljava/lang/String;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
istore 4
start local 4 1: goto 19
2: StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[] java.lang.String[] top int
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.strength:[B
iload 4
baload
dup
istore 3
start local 3 3: ifeq 18
4: iconst_0
istore 5
start local 5 5: goto 17
6: StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[] java.lang.String[] int int int
StackMap stack:
iload 3
aload 1
iload 5
baload
if_icmpne 16
7: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.specifiedCipher:Ljava/lang/String;
ifnull 9
8: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.specifiedCipher:Ljava/lang/String;
aload 2
iload 5
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 16
9: StackMap locals:
StackMap stack:
iload 3
tableswitch { // 1 - 4
1: 14
2: 12
3: 15
4: 10
default: 15
}
10: StackMap locals:
StackMap stack:
aload 0
ldc "high"
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedStrength:Ljava/lang/String;
11: goto 15
12: StackMap locals:
StackMap stack:
aload 0
ldc "medium"
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedStrength:Ljava/lang/String;
13: goto 15
14: StackMap locals:
StackMap stack:
aload 0
ldc "low"
putfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedStrength:Ljava/lang/String;
15: StackMap locals:
StackMap stack:
aload 2
iload 5
aaload
areturn
16: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
17: iload 5
aload 1
arraylength
if_icmplt 6
end local 5 18: StackMap locals:
StackMap stack:
iinc 4 1
end local 3 StackMap locals: com.sun.security.sasl.digest.DigestMD5Client byte[] java.lang.String[] top int
StackMap stack:
19: iload 4
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.strength:[B
arraylength
if_icmplt 2
end local 4 20: aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
0 21 1 supportedCiphers [B
0 21 2 tokens [Ljava/lang/String;
3 19 3 s B
1 20 4 i I
5 18 5 j I
MethodParameters:
Name Flags
supportedCiphers
tokens
private byte[] generateClientResponse(byte[]);
descriptor: ([B)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=12, locals=4, args_size=2
start local 0 start local 1 0: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 2
start local 2 1: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.useUTF8:Z
ifeq 5
2: aload 2
ldc "charset="
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
3: aload 2
aload 1
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
4: aload 2
bipush 44
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
5: StackMap locals: java.io.ByteArrayOutputStream
StackMap stack:
aload 2
new java.lang.StringBuilder
dup
ldc "username=\""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
6: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.username:Ljava/lang/String;
invokestatic com.sun.security.sasl.digest.DigestMD5Client.quotedStringValue:(Ljava/lang/String;)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;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
7: invokevirtual java.io.ByteArrayOutputStream.write:([B)V
8: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
invokevirtual java.lang.String.length:()I
ifle 12
9: aload 2
new java.lang.StringBuilder
dup
ldc "realm=\""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
10: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
invokestatic com.sun.security.sasl.digest.DigestMD5Client.quotedStringValue:(Ljava/lang/String;)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;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
11: invokevirtual java.io.ByteArrayOutputStream.write:([B)V
12: StackMap locals:
StackMap stack:
aload 2
ldc "nonce=\""
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
13: aload 2
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.nonce:[B
invokestatic com.sun.security.sasl.digest.DigestMD5Client.writeQuotedStringValue:(Ljava/io/ByteArrayOutputStream;[B)V
14: aload 2
bipush 34
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
15: aload 2
bipush 44
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
16: aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.nonce:[B
invokestatic com.sun.security.sasl.digest.DigestMD5Client.getNonceCount:([B)I
putfield com.sun.security.sasl.digest.DigestMD5Client.nonceCount:I
17: aload 2
new java.lang.StringBuilder
dup
ldc "nc="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
18: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.nonceCount:I
invokestatic com.sun.security.sasl.digest.DigestMD5Client.nonceCountToHex:(I)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;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
19: invokevirtual java.io.ByteArrayOutputStream.write:([B)V
20: aload 0
invokestatic com.sun.security.sasl.digest.DigestMD5Client.generateNonce:()[B
putfield com.sun.security.sasl.digest.DigestMD5Client.cnonce:[B
21: aload 2
ldc "cnonce=\""
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
22: aload 2
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.cnonce:[B
invokestatic com.sun.security.sasl.digest.DigestMD5Client.writeQuotedStringValue:(Ljava/io/ByteArrayOutputStream;[B)V
23: aload 2
ldc "\","
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
24: aload 2
new java.lang.StringBuilder
dup
ldc "digest-uri=\""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.digestUri: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;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
25: aload 2
ldc "maxbuf="
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
26: aload 2
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.recvMaxBufSize:I
invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
27: aload 2
bipush 44
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
28: aload 2
ldc "response="
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
29: aload 2
aload 0
ldc "AUTHENTICATE"
30: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.digestUri:Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedQop:Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.username:Ljava/lang/String;
31: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.passwd:[C
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.nonce:[B
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.cnonce:[B
32: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.nonceCount:I
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.authzidBytes:[B
33: invokevirtual com.sun.security.sasl.digest.DigestMD5Client.generateResponseValue:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[B[BI[B)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
34: aload 2
bipush 44
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
35: goto 40
StackMap locals:
StackMap stack: java.lang.Exception
36: astore 3
start local 3 37: new javax.security.sasl.SaslException
dup
38: ldc "DIGEST-MD5: Error generating response value"
aload 3
39: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 3 40: StackMap locals:
StackMap stack:
aload 2
new java.lang.StringBuilder
dup
ldc "qop="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedQop:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
41: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedCipher:Ljava/lang/String;
ifnull 43
42: aload 2
new java.lang.StringBuilder
dup
ldc ",cipher=\""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedCipher: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;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
43: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.authzidBytes:[B
ifnull 47
44: aload 2
ldc ",authzid=\""
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
45: aload 2
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.authzidBytes:[B
invokestatic com.sun.security.sasl.digest.DigestMD5Client.writeQuotedStringValue:(Ljava/io/ByteArrayOutputStream;[B)V
46: aload 2
ldc "\""
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
47: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.io.ByteArrayOutputStream.size:()I
sipush 4096
if_icmple 51
48: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: digest-response size too large. Length: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
49: aload 2
invokevirtual java.io.ByteArrayOutputStream.size:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
50: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
51: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 52 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
0 52 1 charset [B
1 52 2 digestResp Ljava/io/ByteArrayOutputStream;
37 40 3 e Ljava/lang/Exception;
Exception table:
from to target type
28 35 36 Class java.lang.Exception
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
charset
private void validateResponseValue(byte[]);
descriptor: ([B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=11, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Authenication failed. Expecting 'rspauth' authentication success message"
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
ldc ""
3: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.digestUri:Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedQop:Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.username:Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.negotiatedRealm:Ljava/lang/String;
4: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.passwd:[C
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.nonce:[B
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.cnonce:[B
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.nonceCount:I
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.authzidBytes:[B
5: invokevirtual com.sun.security.sasl.digest.DigestMD5Client.generateResponseValue:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[B[BI[B)[B
astore 2
start local 2 6: aload 2
aload 1
invokestatic java.util.Arrays.equals:([B[B)Z
ifne 18
7: new javax.security.sasl.SaslException
dup
8: ldc "Server's rspauth value does not match what client expects"
9: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
end local 2 10: StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
astore 2
start local 2 11: new javax.security.sasl.SaslException
dup
12: ldc "Problem generating response value for verification"
aload 2
13: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 14: StackMap locals:
StackMap stack: java.io.IOException
astore 2
start local 2 15: new javax.security.sasl.SaslException
dup
16: ldc "Problem generating response value for verification"
aload 2
17: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 18: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
0 19 1 fromServer [B
6 10 2 expected [B
11 14 2 e Ljava/security/NoSuchAlgorithmException;
15 18 2 e Ljava/io/IOException;
Exception table:
from to target type
2 10 10 Class java.security.NoSuchAlgorithmException
2 10 14 Class java.io.IOException
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
fromServer
private static int getNonceCount(byte[]);
descriptor: ([B)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 nonceValue [B
MethodParameters:
Name Flags
nonceValue
private void clearPassword();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.passwd:[C
ifnull 7
1: iconst_0
istore 1
start local 1 2: goto 5
3: StackMap locals: int
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.passwd:[C
iload 1
iconst_0
castore
4: iinc 1 1
StackMap locals:
StackMap stack:
5: iload 1
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Client.passwd:[C
arraylength
if_icmplt 3
end local 1 6: aload 0
aconst_null
putfield com.sun.security.sasl.digest.DigestMD5Client.passwd:[C
7: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/sun/security/sasl/digest/DigestMD5Client;
2 6 1 i I
}
SourceFile: "DigestMD5Client.java"
InnerClasses:
DigestIntegrity = com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity of com.sun.security.sasl.digest.DigestMD5Base
final DigestPrivacy = com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy of com.sun.security.sasl.digest.DigestMD5Base