final class com.sun.security.sasl.digest.DigestMD5Server extends com.sun.security.sasl.digest.DigestMD5Base implements javax.security.sasl.SaslServer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.sun.security.sasl.digest.DigestMD5Server
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 UTF8_DIRECTIVE;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "charset=utf-8,"
private static final java.lang.String ALGORITHM_DIRECTIVE;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "algorithm=md5-sess"
private static final int NONCE_COUNT_VALUE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final java.lang.String UTF8_PROPERTY;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "com.sun.security.sasl.digest.utf8"
private static final java.lang.String REALM_PROPERTY;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "com.sun.security.sasl.digest.realm"
private static final java.lang.String[] DIRECTIVE_KEY;
descriptor: [Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int USERNAME;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int REALM;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int NONCE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final int CNONCE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3
private static final int NONCE_COUNT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4
private static final int QOP;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 5
private static final int DIGEST_URI;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 6
private static final int RESPONSE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 7
private static final int MAXBUF;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 8
private static final int CHARSET;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 9
private static final int CIPHER;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 10
private static final int AUTHZID;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 11
private static final int AUTH_PARAM;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 12
private java.lang.String specifiedQops;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private byte[] myCiphers;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private java.util.List<java.lang.String> serverRealms;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/List<Ljava/lang/String;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: ldc Lcom/sun/security/sasl/digest/DigestMD5Server;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
putstatic com.sun.security.sasl.digest.DigestMD5Server.MY_CLASS_NAME:Ljava/lang/String;
1: bipush 13
anewarray java.lang.String
dup
iconst_0
2: ldc "username"
aastore
dup
iconst_1
3: ldc "realm"
aastore
dup
iconst_2
4: ldc "nonce"
aastore
dup
iconst_3
5: ldc "cnonce"
aastore
dup
iconst_4
6: ldc "nonce-count"
aastore
dup
iconst_5
7: ldc "qop"
aastore
dup
bipush 6
8: ldc "digest-uri"
aastore
dup
bipush 7
9: ldc "response"
aastore
dup
bipush 8
10: ldc "maxbuf"
aastore
dup
bipush 9
11: ldc "charset"
aastore
dup
bipush 10
12: ldc "cipher"
aastore
dup
bipush 11
13: ldc "authzid"
aastore
dup
bipush 12
14: ldc "auth-param"
aastore
15: putstatic com.sun.security.sasl.digest.DigestMD5Server.DIRECTIVE_KEY:[Ljava/lang/String;
16: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(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/util/Map;Ljavax/security/auth/callback/CallbackHandler;)V
flags: (0x0000)
Code:
stack=7, locals=10, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 3
getstatic com.sun.security.sasl.digest.DigestMD5Server.MY_CLASS_NAME:Ljava/lang/String;
iconst_1
new java.lang.StringBuilder
dup
aload 1
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 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 4
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 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield com.sun.security.sasl.digest.DigestMD5Server.serverRealms:Ljava/util/List;
2: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Server.useUTF8:Z
3: aload 3
ifnull 22
4: aload 0
aload 3
ldc "javax.security.sasl.qop"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
putfield com.sun.security.sasl.digest.DigestMD5Server.specifiedQops:Ljava/lang/String;
5: ldc "false"
aload 3
ldc "com.sun.security.sasl.digest.utf8"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 8
6: aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Server.useUTF8:Z
7: getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST80:Server supports ISO-Latin-1"
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
8: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler
StackMap stack:
aload 3
ldc "com.sun.security.sasl.digest.realm"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
astore 5
start local 5 9: aload 5
ifnull 22
10: new java.util.StringTokenizer
dup
aload 5
ldc ", \t\n"
invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
astore 6
start local 6 11: aload 6
invokevirtual java.util.StringTokenizer.countTokens:()I
istore 7
start local 7 12: aconst_null
astore 8
start local 8 13: iconst_0
istore 9
start local 9 14: goto 21
15: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler java.lang.String java.util.StringTokenizer int java.lang.String int
StackMap stack:
aload 6
invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
astore 8
16: getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST81:Server supports realm {0}"
17: aload 8
18: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
19: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.serverRealms:Ljava/util/List;
aload 8
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
20: iinc 9 1
StackMap locals:
StackMap stack:
21: iload 9
iload 7
if_icmplt 15
end local 9 end local 8 end local 7 end local 6 end local 5 22: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler
StackMap stack:
aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.useUTF8:Z
ifeq 23
ldc "UTF8"
goto 24
StackMap locals:
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server
23: ldc "8859_1"
StackMap locals: com.sun.security.sasl.digest.DigestMD5Server java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server java.lang.String
24: putfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
25: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.serverRealms:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 27
26: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.serverRealms:Ljava/util/List;
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
27: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lcom/sun/security/sasl/digest/DigestMD5Server;
0 28 1 protocol Ljava/lang/String;
0 28 2 serverName Ljava/lang/String;
0 28 3 props Ljava/util/Map<Ljava/lang/String;*>;
0 28 4 cbh Ljavax/security/auth/callback/CallbackHandler;
9 22 5 realms Ljava/lang/String;
11 22 6 parser Ljava/util/StringTokenizer;
12 22 7 tokenCount I
13 22 8 token Ljava/lang/String;
14 22 9 i I
Exceptions:
throws javax.security.sasl.SaslException
Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;*>;Ljavax/security/auth/callback/CallbackHandler;)V
MethodParameters:
Name Flags
protocol
serverName
props
cbh
public byte[] evaluateResponse(byte[]);
descriptor: ([B)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aload 1
arraylength
sipush 4096
if_icmple 6
1: new javax.security.sasl.SaslException
dup
2: new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: Invalid digest response 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 4096
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.DigestMD5Server.step:I
tableswitch { // 1 - 3
1: 7
2: 60
3: 38
default: 60
}
7: StackMap locals:
StackMap stack:
aload 1
arraylength
ifeq 11
8: new javax.security.sasl.SaslException
dup
9: ldc "DIGEST-MD5 must not have an initial response"
10: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 12: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.allQop:B
iconst_4
iand
ifeq 24
13: aload 0
invokestatic com.sun.security.sasl.digest.DigestMD5Server.getPlatformCiphers:()[B
putfield com.sun.security.sasl.digest.DigestMD5Server.myCiphers:[B
14: new java.lang.StringBuffer
dup
invokespecial java.lang.StringBuffer.<init>:()V
astore 4
start local 4 15: iconst_0
istore 5
start local 5 16: goto 22
17: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[] top java.lang.String java.lang.StringBuffer int
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.myCiphers:[B
iload 5
baload
ifeq 21
18: aload 4
invokevirtual java.lang.StringBuffer.length:()I
ifle 20
19: aload 4
bipush 44
invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
pop
20: StackMap locals:
StackMap stack:
aload 4
getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_TOKENS:[Ljava/lang/String;
iload 5
aaload
invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
pop
21: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
22: iload 5
getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_TOKENS:[Ljava/lang/String;
arraylength
if_icmplt 17
end local 5 23: aload 4
invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
astore 3
end local 4 24: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.serverRealms:Ljava/util/List;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.specifiedQops:Ljava/lang/String;
25: aload 3
26: invokevirtual com.sun.security.sasl.digest.DigestMD5Server.generateChallenge:(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)[B
astore 2
start local 2 27: aload 0
iconst_3
putfield com.sun.security.sasl.digest.DigestMD5Server.step:I
28: aload 2
29: areturn
end local 2 30: StackMap locals:
StackMap stack: java.io.UnsupportedEncodingException
astore 4
start local 4 31: new javax.security.sasl.SaslException
dup
32: ldc "DIGEST-MD5: Error encoding challenge"
aload 4
33: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 34: StackMap locals:
StackMap stack: java.io.IOException
astore 4
start local 4 35: new javax.security.sasl.SaslException
dup
36: ldc "DIGEST-MD5: Error generating challenge"
aload 4
37: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 end local 3 38: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[]
StackMap stack:
aload 1
getstatic com.sun.security.sasl.digest.DigestMD5Server.DIRECTIVE_KEY:[Ljava/lang/String;
39: aconst_null
iconst_1
40: invokestatic com.sun.security.sasl.digest.DigestMD5Server.parseDirectives:([B[Ljava/lang/String;Ljava/util/List;I)[[B
astore 4
start local 4 41: aload 0
aload 4
invokevirtual com.sun.security.sasl.digest.DigestMD5Server.validateClientResponse:([[B)[B
astore 2
end local 4 start local 2 42: goto 52
end local 2 StackMap locals:
StackMap stack: javax.security.sasl.SaslException
43: astore 4
start local 4 44: aload 4
athrow
end local 4 45: StackMap locals:
StackMap stack: java.io.UnsupportedEncodingException
astore 4
start local 4 46: new javax.security.sasl.SaslException
dup
47: ldc "DIGEST-MD5: Error validating client response"
aload 4
48: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 49: StackMap locals:
StackMap stack: java.lang.Throwable
astore 5
50: aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Server.step:I
51: aload 5
athrow
start local 2 52: StackMap locals: byte[]
StackMap stack:
aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Server.step:I
53: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Server.completed:Z
54: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.integrity:Z
ifeq 57
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.privacy:Z
ifeq 57
55: aload 0
new com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy
dup
aload 0
iconst_0
invokespecial com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.<init>:(Lcom/sun/security/sasl/digest/DigestMD5Base;Z)V
putfield com.sun.security.sasl.digest.DigestMD5Server.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
56: goto 59
StackMap locals:
StackMap stack:
57: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.integrity:Z
ifeq 59
58: aload 0
new com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity
dup
aload 0
iconst_0
invokespecial com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity.<init>:(Lcom/sun/security/sasl/digest/DigestMD5Base;Z)V
putfield com.sun.security.sasl.digest.DigestMD5Server.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
59: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 60: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Server 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 61 0 this Lcom/sun/security/sasl/digest/DigestMD5Server;
0 61 1 response [B
27 30 2 challenge [B
42 43 2 challenge [B
52 60 2 challenge [B
12 38 3 supportedCiphers Ljava/lang/String;
15 24 4 buf Ljava/lang/StringBuffer;
16 23 5 i I
31 34 4 e Ljava/io/UnsupportedEncodingException;
35 38 4 e Ljava/io/IOException;
41 42 4 responseVal [[B
44 45 4 e Ljavax/security/sasl/SaslException;
46 49 4 e Ljava/io/UnsupportedEncodingException;
Exception table:
from to target type
24 29 30 Class java.io.UnsupportedEncodingException
24 29 34 Class java.io.IOException
38 42 43 Class javax.security.sasl.SaslException
38 42 45 Class java.io.UnsupportedEncodingException
38 49 49 any
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
response
private byte[] generateChallenge(java.util.List<java.lang.String>, java.lang.String, java.lang.String);
descriptor: (Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 4
start local 4 1: iconst_0
istore 5
start local 5 2: goto 8
3: StackMap locals: java.io.ByteArrayOutputStream int
StackMap stack:
aload 4
ldc "realm=\""
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
4: aload 4
aload 1
iload 5
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokestatic com.sun.security.sasl.digest.DigestMD5Server.writeQuotedStringValue:(Ljava/io/ByteArrayOutputStream;[B)V
5: aload 4
bipush 34
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
6: aload 4
bipush 44
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
7: iinc 5 1
StackMap locals:
StackMap stack:
8: aload 1
ifnull 9
iload 5
aload 1
invokeinterface java.util.List.size:()I
if_icmplt 3
end local 5 9: StackMap locals:
StackMap stack:
aload 4
ldc "nonce=\""
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
10: aload 0
invokestatic com.sun.security.sasl.digest.DigestMD5Server.generateNonce:()[B
putfield com.sun.security.sasl.digest.DigestMD5Server.nonce:[B
11: aload 4
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.nonce:[B
invokestatic com.sun.security.sasl.digest.DigestMD5Server.writeQuotedStringValue:(Ljava/io/ByteArrayOutputStream;[B)V
12: aload 4
bipush 34
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
13: aload 4
bipush 44
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
14: aload 2
ifnull 19
15: aload 4
ldc "qop=\""
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
16: aload 4
aload 2
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokestatic com.sun.security.sasl.digest.DigestMD5Server.writeQuotedStringValue:(Ljava/io/ByteArrayOutputStream;[B)V
17: aload 4
bipush 34
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
18: aload 4
bipush 44
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
19: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.recvMaxBufSize:I
ldc 65536
if_icmpeq 21
20: aload 4
new java.lang.StringBuilder
dup
ldc "maxbuf=\""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.recvMaxBufSize:I
invokevirtual java.lang.StringBuilder.append:(I)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.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
21: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.useUTF8:Z
ifeq 23
22: aload 4
ldc "charset=utf-8,"
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
23: StackMap locals:
StackMap stack:
aload 3
ifnull 28
24: aload 4
ldc "cipher=\""
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
25: aload 4
aload 3
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokestatic com.sun.security.sasl.digest.DigestMD5Server.writeQuotedStringValue:(Ljava/io/ByteArrayOutputStream;[B)V
26: aload 4
bipush 34
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
27: aload 4
bipush 44
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
28: StackMap locals:
StackMap stack:
aload 4
ldc "algorithm=md5-sess"
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
29: aload 4
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 30 0 this Lcom/sun/security/sasl/digest/DigestMD5Server;
0 30 1 realms Ljava/util/List<Ljava/lang/String;>;
0 30 2 qopStr Ljava/lang/String;
0 30 3 cipherStr Ljava/lang/String;
1 30 4 out Ljava/io/ByteArrayOutputStream;
2 9 5 i I
Exceptions:
throws java.io.UnsupportedEncodingException, java.io.IOException
Signature: (Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;Ljava/lang/String;)[B
MethodParameters:
Name Flags
realms
qopStr
cipherStr
private byte[] validateClientResponse(byte[][]);
descriptor: ([[B)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=11, locals=17, args_size=2
start local 0 start local 1 0: aload 1
bipush 9
aaload
ifnull 6
1: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.useUTF8:Z
ifeq 3
2: ldc "utf-8"
new java.lang.String
dup
aload 1
bipush 9
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 6
3: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: digest response format violation. Incompatible charset value: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
4: new java.lang.String
dup
aload 1
bipush 9
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;
5: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 1
bipush 8
aaload
ifnonnull 7
ldc 65536
goto 8
7: StackMap locals:
StackMap stack:
new java.lang.String
dup
aload 1
bipush 8
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
8: StackMap locals:
StackMap stack: int
istore 2
start local 2 9: aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.sendMaxBufSize:I
ifne 10
iload 2
goto 11
10: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.sendMaxBufSize:I
iload 2
invokestatic java.lang.Math.min:(II)I
11: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server int
putfield com.sun.security.sasl.digest.DigestMD5Server.sendMaxBufSize:I
12: aload 1
iconst_0
aaload
ifnull 16
13: new java.lang.String
dup
aload 1
iconst_0
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
astore 3
start local 3 14: getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST82:Username: {0}"
aload 3
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
15: goto 17
end local 3 16: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: digest response format violation. Missing username."
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
start local 3 17: StackMap locals: java.lang.String
StackMap stack:
aload 0
aload 1
iconst_1
aaload
ifnull 19
18: new java.lang.String
dup
aload 1
iconst_1
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
goto 20
StackMap locals:
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server
19: ldc ""
20: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server java.lang.String
putfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedRealm:Ljava/lang/String;
21: getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST83:Client negotiated realm: {0}"
22: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedRealm:Ljava/lang/String;
23: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
24: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.serverRealms:Ljava/util/List;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedRealm:Ljava/lang/String;
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifne 28
25: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: digest response format violation. Nonexistent realm: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
26: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedRealm:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
27: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
28: StackMap locals:
StackMap stack:
aload 1
iconst_2
aaload
ifnonnull 30
29: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: digest response format violation. Missing nonce."
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
30: StackMap locals:
StackMap stack:
aload 1
iconst_2
aaload
astore 4
start local 4 31: aload 4
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.nonce:[B
invokestatic java.util.Arrays.equals:([B[B)Z
ifne 33
32: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: digest response format violation. Mismatched nonce."
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
33: StackMap locals: byte[]
StackMap stack:
aload 1
iconst_3
aaload
ifnonnull 35
34: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: digest response format violation. Missing cnonce."
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
35: StackMap locals:
StackMap stack:
aload 1
iconst_3
aaload
astore 5
start local 5 36: aload 1
iconst_4
aaload
ifnull 43
37: iconst_1
38: new java.lang.String
dup
aload 1
iconst_4
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
bipush 16
39: invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
if_icmpeq 43
40: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: digest response format violation. Nonce count does not match: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
41: new java.lang.String
dup
aload 1
iconst_4
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;
42: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
43: StackMap locals: byte[]
StackMap stack:
aload 0
aload 1
iconst_5
aaload
ifnull 45
44: new java.lang.String
dup
aload 1
iconst_5
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
goto 46
StackMap locals:
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server
45: ldc "auth"
46: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[]
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server java.lang.String
putfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
47: getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST84:Client negotiated qop: {0}"
48: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
49: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
50: ldc "auth"
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 53
51: iconst_1
istore 6
start local 6 52: goto 66
end local 6 StackMap locals:
StackMap stack:
53: ldc "auth-int"
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 58
54: iconst_2
istore 6
start local 6 55: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Server.integrity:Z
56: aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.sendMaxBufSize:I
bipush 16
isub
putfield com.sun.security.sasl.digest.DigestMD5Server.rawSendSize:I
57: goto 66
end local 6 StackMap locals:
StackMap stack:
58: ldc "auth-conf"
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 63
59: iconst_4
istore 6
start local 6 60: aload 0
aload 0
iconst_1
dup_x1
putfield com.sun.security.sasl.digest.DigestMD5Server.privacy:Z
putfield com.sun.security.sasl.digest.DigestMD5Server.integrity:Z
61: aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.sendMaxBufSize:I
bipush 26
isub
putfield com.sun.security.sasl.digest.DigestMD5Server.rawSendSize:I
62: goto 66
end local 6 63: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: digest response format violation. Invalid QOP: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
64: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
65: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
start local 6 66: StackMap locals: int
StackMap stack:
iload 6
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.allQop:B
iand
ifne 70
67: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: server does not support qop: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
68: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
69: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
70: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.privacy:Z
ifeq 103
71: aload 0
aload 1
bipush 10
aaload
ifnull 73
72: new java.lang.String
dup
aload 1
bipush 10
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
goto 74
StackMap locals:
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server
73: aconst_null
74: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server java.lang.String
putfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedCipher:Ljava/lang/String;
75: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedCipher:Ljava/lang/String;
ifnonnull 77
76: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: digest response format violation. No cipher specified."
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
77: StackMap locals:
StackMap stack:
iconst_m1
istore 7
start local 7 78: getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST85:Client negotiated cipher: {0}"
79: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedCipher:Ljava/lang/String;
80: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
81: iconst_0
istore 8
start local 8 82: goto 88
83: StackMap locals: int int
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedCipher:Ljava/lang/String;
getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_TOKENS:[Ljava/lang/String;
iload 8
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 87
84: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.myCiphers:[B
iload 8
baload
ifeq 87
85: iload 8
istore 7
86: goto 89
87: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
88: iload 8
getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_TOKENS:[Ljava/lang/String;
arraylength
if_icmplt 83
end local 8 89: StackMap locals:
StackMap stack:
iload 7
iconst_m1
if_icmpne 93
90: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: server does not support cipher: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
91: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedCipher:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
92: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
93: StackMap locals:
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_MASKS:[B
iload 7
baload
iconst_4
iand
ifeq 96
94: aload 0
ldc "high"
putfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedStrength:Ljava/lang/String;
95: goto 100
StackMap locals:
StackMap stack:
96: getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_MASKS:[B
iload 7
baload
iconst_2
iand
ifeq 99
97: aload 0
ldc "medium"
putfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedStrength:Ljava/lang/String;
98: goto 100
99: StackMap locals:
StackMap stack:
aload 0
ldc "low"
putfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedStrength:Ljava/lang/String;
100: StackMap locals:
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST86:Negotiated strength: {0}"
101: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedStrength:Ljava/lang/String;
102: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
end local 7 103: StackMap locals:
StackMap stack:
aload 1
bipush 6
aaload
ifnull 105
104: new java.lang.String
dup
aload 1
bipush 6
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
goto 106
StackMap locals:
StackMap stack:
105: aconst_null
106: StackMap locals:
StackMap stack: java.lang.String
astore 7
start local 7 107: aload 7
ifnull 111
108: getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST87:digest URI: {0}"
109: aload 7
110: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
111: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.digestUri:Ljava/lang/String;
aload 7
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 114
112: aload 0
aload 7
putfield com.sun.security.sasl.digest.DigestMD5Server.digestUri:Ljava/lang/String;
113: goto 118
114: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: digest response format violation. Mismatched URI: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
115: aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
116: ldc "; expecting: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.digestUri:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
117: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
118: StackMap locals:
StackMap stack:
aload 1
bipush 7
aaload
astore 8
start local 8 119: aload 8
ifnonnull 121
120: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: digest response format violation. Missing response."
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
121: StackMap locals: byte[]
StackMap stack:
aload 1
bipush 11
aaload
dup
astore 9
start local 9 122: ifnull 124
123: new java.lang.String
dup
aload 9
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
goto 125
StackMap locals: byte[]
StackMap stack:
124: aload 3
125: StackMap locals:
StackMap stack: java.lang.String
astore 10
start local 10 126: aload 9
ifnull 130
127: getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST88:Authzid: {0}"
128: new java.lang.String
dup
aload 9
invokespecial java.lang.String.<init>:([B)V
129: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
130: StackMap locals: java.lang.String
StackMap stack:
new javax.security.sasl.RealmCallback
dup
ldc "DIGEST-MD5 realm: "
131: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedRealm:Ljava/lang/String;
132: invokespecial javax.security.sasl.RealmCallback.<init>:(Ljava/lang/String;Ljava/lang/String;)V
astore 12
start local 12 133: new javax.security.auth.callback.NameCallback
dup
ldc "DIGEST-MD5 authentication ID: "
134: aload 3
135: invokespecial javax.security.auth.callback.NameCallback.<init>:(Ljava/lang/String;Ljava/lang/String;)V
astore 13
start local 13 136: 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
137: astore 14
start local 14 138: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.cbh:Ljavax/security/auth/callback/CallbackHandler;
iconst_3
anewarray javax.security.auth.callback.Callback
dup
iconst_0
aload 12
aastore
dup
iconst_1
aload 13
aastore
dup
iconst_2
aload 14
aastore
invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
139: aload 14
invokevirtual javax.security.auth.callback.PasswordCallback.getPassword:()[C
astore 11
start local 11 140: aload 14
invokevirtual javax.security.auth.callback.PasswordCallback.clearPassword:()V
end local 14 end local 13 end local 12 141: goto 150
end local 11 StackMap locals:
StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
142: astore 12
start local 12 143: new javax.security.sasl.SaslException
dup
144: ldc "DIGEST-MD5: Cannot perform callback to acquire password"
aload 12
145: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 12 146: StackMap locals:
StackMap stack: java.io.IOException
astore 12
start local 12 147: new javax.security.sasl.SaslException
dup
148: ldc "DIGEST-MD5: IO error acquiring password"
aload 12
149: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 12 start local 11 150: StackMap locals: char[]
StackMap stack:
aload 11
ifnonnull 156
151: new javax.security.sasl.SaslException
dup
152: new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: cannot acquire password for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
153: ldc " in realm : "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedRealm:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
154: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
155: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
156: StackMap locals:
StackMap stack:
aload 0
ldc "AUTHENTICATE"
157: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.digestUri:Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
aload 3
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedRealm:Ljava/lang/String;
158: aload 11
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.nonce:[B
159: aload 5
iconst_1
aload 9
160: invokevirtual com.sun.security.sasl.digest.DigestMD5Server.generateResponseValue:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[B[BI[B)[B
astore 12
start local 12 161: goto 170
end local 12 StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
162: astore 13
start local 13 163: new javax.security.sasl.SaslException
dup
164: ldc "DIGEST-MD5: problem duplicating client response"
aload 13
165: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 13 166: StackMap locals:
StackMap stack: java.io.IOException
astore 13
start local 13 167: new javax.security.sasl.SaslException
dup
168: ldc "DIGEST-MD5: problem duplicating client response"
aload 13
169: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 13 start local 12 170: StackMap locals: byte[]
StackMap stack:
aload 8
aload 12
invokestatic java.util.Arrays.equals:([B[B)Z
ifne 172
171: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: digest response format violation. Mismatched response."
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
172: StackMap locals:
StackMap stack:
new javax.security.sasl.AuthorizeCallback
dup
aload 3
aload 10
invokespecial javax.security.sasl.AuthorizeCallback.<init>:(Ljava/lang/String;Ljava/lang/String;)V
173: astore 13
start local 13 174: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.cbh:Ljavax/security/auth/callback/CallbackHandler;
iconst_1
anewarray javax.security.auth.callback.Callback
dup
iconst_0
aload 13
aastore
invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
175: aload 13
invokevirtual javax.security.sasl.AuthorizeCallback.isAuthorized:()Z
ifeq 178
176: aload 0
aload 13
invokevirtual javax.security.sasl.AuthorizeCallback.getAuthorizedID:()Ljava/lang/String;
putfield com.sun.security.sasl.digest.DigestMD5Server.authzid:Ljava/lang/String;
177: goto 191
178: StackMap locals: javax.security.sasl.AuthorizeCallback
StackMap stack:
new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
179: ldc " is not authorized to act as "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 10
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
180: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
end local 13 181: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int java.lang.String byte[] byte[] java.lang.String char[] byte[]
StackMap stack: javax.security.sasl.SaslException
astore 13
start local 13 182: aload 13
athrow
end local 13 183: StackMap locals:
StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
astore 13
start local 13 184: new javax.security.sasl.SaslException
dup
185: ldc "DIGEST-MD5: Cannot perform callback to check authzid"
aload 13
186: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 13 187: StackMap locals:
StackMap stack: java.io.IOException
astore 13
start local 13 188: new javax.security.sasl.SaslException
dup
189: ldc "DIGEST-MD5: IO error checking authzid"
aload 13
190: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 13 191: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 11
aload 5
192: iconst_1
aload 9
193: invokevirtual com.sun.security.sasl.digest.DigestMD5Server.generateResponseAuth:(Ljava/lang/String;[C[BI[B)[B
astore 15
194: iconst_0
istore 16
start local 16 195: goto 198
196: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int java.lang.String byte[] byte[] java.lang.String char[] byte[] top top byte[] int
StackMap stack:
aload 11
iload 16
iconst_0
castore
197: iinc 16 1
StackMap locals:
StackMap stack:
198: iload 16
aload 11
arraylength
if_icmplt 196
end local 16 199: aload 15
areturn
end local 12 200: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int java.lang.String byte[] byte[] java.lang.String char[]
StackMap stack: java.lang.Throwable
astore 14
201: iconst_0
istore 16
start local 16 202: goto 205
203: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int java.lang.String byte[] byte[] java.lang.String char[] top top java.lang.Throwable top int
StackMap stack:
aload 11
iload 16
iconst_0
castore
204: iinc 16 1
StackMap locals:
StackMap stack:
205: iload 16
aload 11
arraylength
if_icmplt 203
end local 16 206: aload 14
athrow
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 207 0 this Lcom/sun/security/sasl/digest/DigestMD5Server;
0 207 1 responseVal [[B
9 207 2 clntMaxBufSize I
14 16 3 username Ljava/lang/String;
17 207 3 username Ljava/lang/String;
31 207 4 nonceFromClient [B
36 207 5 cnonce [B
52 53 6 cQop B
55 58 6 cQop B
60 63 6 cQop B
66 207 6 cQop B
78 103 7 foundCipher I
82 89 8 j I
107 207 7 digestUriFromResponse Ljava/lang/String;
119 207 8 responseFromClient [B
122 207 9 authzidBytes [B
126 207 10 authzidFromClient Ljava/lang/String;
140 142 11 passwd [C
150 207 11 passwd [C
133 141 12 rcb Ljavax/security/sasl/RealmCallback;
136 141 13 ncb Ljavax/security/auth/callback/NameCallback;
138 141 14 pcb Ljavax/security/auth/callback/PasswordCallback;
143 146 12 e Ljavax/security/auth/callback/UnsupportedCallbackException;
147 150 12 e Ljava/io/IOException;
161 162 12 expectedResponse [B
170 200 12 expectedResponse [B
163 166 13 e Ljava/security/NoSuchAlgorithmException;
167 170 13 e Ljava/io/IOException;
174 181 13 acb Ljavax/security/sasl/AuthorizeCallback;
182 183 13 e Ljavax/security/sasl/SaslException;
184 187 13 e Ljavax/security/auth/callback/UnsupportedCallbackException;
188 191 13 e Ljava/io/IOException;
195 199 16 i I
202 206 16 i I
Exception table:
from to target type
130 141 142 Class javax.security.auth.callback.UnsupportedCallbackException
130 141 146 Class java.io.IOException
156 161 162 Class java.security.NoSuchAlgorithmException
156 161 166 Class java.io.IOException
172 181 181 Class javax.security.sasl.SaslException
172 181 183 Class javax.security.auth.callback.UnsupportedCallbackException
172 181 187 Class java.io.IOException
156 194 200 any
Exceptions:
throws javax.security.sasl.SaslException, java.io.UnsupportedEncodingException
MethodParameters:
Name Flags
responseVal
private byte[] generateResponseAuth(java.lang.String, char[], byte[], int, byte[]);
descriptor: (Ljava/lang/String;[C[BI[B)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=11, locals=8, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
ldc ""
1: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.digestUri:Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
aload 1
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedRealm:Ljava/lang/String;
2: aload 2
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.nonce:[B
aload 3
iload 4
aload 5
3: invokevirtual com.sun.security.sasl.digest.DigestMD5Server.generateResponseValue:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[B[BI[B)[B
astore 6
start local 6 4: aload 6
arraylength
bipush 8
iadd
newarray 8
astore 7
start local 7 5: ldc "rspauth="
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/lang/String;
invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
iconst_0
aload 7
iconst_0
bipush 8
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
6: aload 6
iconst_0
aload 7
bipush 8
7: aload 6
arraylength
8: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
9: aload 7
10: areturn
end local 7 end local 6 11: StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
astore 6
start local 6 12: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: problem generating response"
aload 6
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 6 13: StackMap locals:
StackMap stack: java.io.IOException
astore 6
start local 6 14: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: problem generating response"
aload 6
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
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 15 0 this Lcom/sun/security/sasl/digest/DigestMD5Server;
0 15 1 username Ljava/lang/String;
0 15 2 passwd [C
0 15 3 cnonce [B
0 15 4 nonceCount I
0 15 5 authzidBytes [B
4 11 6 responseValue [B
5 11 7 challenge [B
12 13 6 e Ljava/security/NoSuchAlgorithmException;
14 15 6 e Ljava/io/IOException;
Exception table:
from to target type
0 10 11 Class java.security.NoSuchAlgorithmException
0 10 13 Class java.io.IOException
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
username
passwd
cnonce
nonceCount
authzidBytes
public java.lang.String getAuthorizationID();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.completed:Z
ifeq 2
1: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.authzid:Ljava/lang/String;
areturn
2: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
3: ldc "DIGEST-MD5 server negotiation not complete"
4: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/sun/security/sasl/digest/DigestMD5Server;
}
SourceFile: "DigestMD5Server.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