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
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
ifnonnull 2
ldc "*"
goto 3
StackMap locals: uninitialized-this java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler
StackMap stack: uninitialized-this java.util.Map java.lang.String int java.lang.StringBuilder
2: aload 2
StackMap locals: uninitialized-this java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler
StackMap stack: uninitialized-this java.util.Map java.lang.String int java.lang.StringBuilder java.lang.String
3: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
4: 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
5: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield com.sun.security.sasl.digest.DigestMD5Server.serverRealms:Ljava/util/List;
6: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Server.useUTF8:Z
7: aload 3
ifnull 26
8: 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;
9: 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 12
10: aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Server.useUTF8:Z
11: 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
12: 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 13: aload 5
ifnull 26
14: 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 15: aload 6
invokevirtual java.util.StringTokenizer.countTokens:()I
istore 7
start local 7 16: aconst_null
astore 8
start local 8 17: iconst_0
istore 9
start local 9 18: goto 25
19: 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
20: 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}"
21: aload 8
22: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
23: 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
24: iinc 9 1
StackMap locals:
StackMap stack:
25: iload 9
iload 7
if_icmplt 19
end local 9 end local 8 end local 7 end local 6 end local 5 26: 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 27
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
goto 28
StackMap locals:
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server
27: getstatic java.nio.charset.StandardCharsets.ISO_8859_1:Ljava/nio/charset/Charset;
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.nio.charset.Charset
28: putfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/nio/charset/Charset;
29: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.serverRealms:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 35
30: aload 2
ifnonnull 34
31: new javax.security.sasl.SaslException
dup
32: ldc "A realm must be provided in props or serverName"
33: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
34: StackMap locals:
StackMap stack:
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
35: 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 36 0 this Lcom/sun/security/sasl/digest/DigestMD5Server;
0 36 1 protocol Ljava/lang/String;
0 36 2 serverName Ljava/lang/String;
0 36 3 props Ljava/util/Map<Ljava/lang/String;*>;
0 36 4 cbh Ljavax/security/auth/callback/CallbackHandler;
13 26 5 realms Ljava/lang/String;
15 26 6 parser Ljava/util/StringTokenizer;
16 26 7 tokenCount I
17 26 8 token Ljava/lang/String;
18 26 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: 48
3: 32
default: 48
}
7: StackMap locals:
StackMap stack:
aload 1
arraylength
ifeq 9
8: getstatic com.sun.security.sasl.digest.DigestMD5Server.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "Ignoring initial response"
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
9: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 10: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.allQop:B
iconst_4
iand
ifeq 22
11: aload 0
invokestatic com.sun.security.sasl.digest.DigestMD5Server.getPlatformCiphers:()[B
putfield com.sun.security.sasl.digest.DigestMD5Server.myCiphers:[B
12: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 4
start local 4 13: iconst_0
istore 5
start local 5 14: goto 20
15: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[] top java.lang.String java.lang.StringBuilder int
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.myCiphers:[B
iload 5
baload
ifeq 19
16: aload 4
invokevirtual java.lang.StringBuilder.length:()I
ifle 18
17: aload 4
bipush 44
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
18: StackMap locals:
StackMap stack:
aload 4
getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_TOKENS:[Ljava/lang/String;
iload 5
aaload
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
19: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
20: iload 5
getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_TOKENS:[Ljava/lang/String;
arraylength
if_icmplt 15
end local 5 21: aload 4
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
end local 4 22: 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;
23: aload 3
24: invokevirtual com.sun.security.sasl.digest.DigestMD5Server.generateChallenge:(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)[B
astore 2
start local 2 25: aload 0
iconst_3
putfield com.sun.security.sasl.digest.DigestMD5Server.step:I
26: aload 2
27: areturn
end local 2 28: StackMap locals:
StackMap stack: java.io.IOException
astore 4
start local 4 29: new javax.security.sasl.SaslException
dup
30: ldc "DIGEST-MD5: Error generating challenge"
aload 4
31: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 end local 3 32: 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;
33: aconst_null
iconst_1
34: invokestatic com.sun.security.sasl.digest.DigestMD5Server.parseDirectives:([B[Ljava/lang/String;Ljava/util/List;I)[[B
astore 4
start local 4 35: aload 0
aload 4
invokevirtual com.sun.security.sasl.digest.DigestMD5Server.validateClientResponse:([[B)[B
astore 2
end local 4 start local 2 36: goto 40
end local 2 StackMap locals:
StackMap stack: java.lang.Throwable
37: astore 5
38: aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Server.step:I
39: aload 5
athrow
start local 2 40: StackMap locals: byte[]
StackMap stack:
aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Server.step:I
41: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Server.completed:Z
42: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.integrity:Z
ifeq 45
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.privacy:Z
ifeq 45
43: 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;
44: goto 47
StackMap locals:
StackMap stack:
45: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.integrity:Z
ifeq 47
46: 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;
47: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 48: 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 49 0 this Lcom/sun/security/sasl/digest/DigestMD5Server;
0 49 1 response [B
25 28 2 challenge [B
36 37 2 challenge [B
40 48 2 challenge [B
10 32 3 supportedCiphers Ljava/lang/String;
13 22 4 sb Ljava/lang/StringBuilder;
14 21 5 i I
29 32 4 e Ljava/io/IOException;
35 36 4 responseVal [[B
Exception table:
from to target type
22 27 28 Class java.io.IOException
32 37 37 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/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
16: aload 4
aload 2
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
25: aload 4
aload 3
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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.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=18, 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/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)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/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)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/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)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/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)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/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)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/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)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: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedQop:Ljava/lang/String;
dup
astore 7
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 3
3005864: 51
1414216745: 52
1431098954: 53
default: 64
}
StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] top java.lang.String
StackMap stack:
51: aload 7
ldc "auth"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 54
goto 64
StackMap locals:
StackMap stack:
52: aload 7
ldc "auth-conf"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 60
goto 64
StackMap locals:
StackMap stack:
53: aload 7
ldc "auth-int"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 56
goto 64
54: StackMap locals:
StackMap stack:
iconst_1
istore 6
start local 6 55: goto 67
end local 6 56: StackMap locals:
StackMap stack:
iconst_2
istore 6
start local 6 57: aload 0
iconst_1
putfield com.sun.security.sasl.digest.DigestMD5Server.integrity:Z
58: 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
59: goto 67
end local 6 60: StackMap locals:
StackMap stack:
iconst_4
istore 6
start local 6 61: 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
62: 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
63: goto 67
end local 6 64: 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
65: 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;
66: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
start local 6 67: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int
StackMap stack:
iload 6
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.allQop:B
iand
ifne 71
68: 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
69: 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;
70: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
71: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.privacy:Z
ifeq 104
72: aload 0
aload 1
bipush 10
aaload
ifnull 74
73: new java.lang.String
dup
aload 1
bipush 10
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
goto 75
StackMap locals:
StackMap stack: com.sun.security.sasl.digest.DigestMD5Server
74: aconst_null
75: 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;
76: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedCipher:Ljava/lang/String;
ifnonnull 78
77: 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
78: StackMap locals:
StackMap stack:
iconst_m1
istore 8
start local 8 79: 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}"
80: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedCipher:Ljava/lang/String;
81: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
82: iconst_0
istore 9
start local 9 83: goto 89
84: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int top 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 9
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 88
85: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.myCiphers:[B
iload 9
baload
ifeq 88
86: iload 9
istore 8
87: goto 90
88: StackMap locals:
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
89: iload 9
getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_TOKENS:[Ljava/lang/String;
arraylength
if_icmplt 84
end local 9 90: StackMap locals:
StackMap stack:
iload 8
iconst_m1
if_icmpne 94
91: 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
92: 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;
93: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
94: StackMap locals:
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_MASKS:[B
iload 8
baload
iconst_4
iand
ifeq 97
95: aload 0
ldc "high"
putfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedStrength:Ljava/lang/String;
96: goto 101
StackMap locals:
StackMap stack:
97: getstatic com.sun.security.sasl.digest.DigestMD5Server.CIPHER_MASKS:[B
iload 8
baload
iconst_2
iand
ifeq 100
98: aload 0
ldc "medium"
putfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedStrength:Ljava/lang/String;
99: goto 101
100: StackMap locals:
StackMap stack:
aload 0
ldc "low"
putfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedStrength:Ljava/lang/String;
101: 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}"
102: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedStrength:Ljava/lang/String;
103: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
end local 8 104: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int
StackMap stack:
aload 1
bipush 6
aaload
ifnull 106
105: new java.lang.String
dup
aload 1
bipush 6
aaload
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
goto 107
StackMap locals:
StackMap stack:
106: aconst_null
107: StackMap locals:
StackMap stack: java.lang.String
astore 8
start local 8 108: aload 8
ifnull 112
109: 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}"
110: aload 8
111: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
112: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int top java.lang.String
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.digestUri:Ljava/lang/String;
aload 8
invokestatic com.sun.security.sasl.digest.DigestMD5Server.uriMatches:(Ljava/lang/String;Ljava/lang/String;)Z
ifeq 115
113: aload 0
aload 8
putfield com.sun.security.sasl.digest.DigestMD5Server.digestUri:Ljava/lang/String;
114: goto 119
115: 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
116: aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
117: 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;
118: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
119: StackMap locals:
StackMap stack:
aload 1
bipush 7
aaload
astore 9
start local 9 120: aload 9
ifnonnull 122
121: 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
122: StackMap locals: byte[]
StackMap stack:
aload 1
bipush 11
aaload
dup
astore 10
start local 10 123: ifnull 125
124: new java.lang.String
dup
aload 10
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.encoding:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
goto 126
StackMap locals: byte[]
StackMap stack:
125: aload 3
126: StackMap locals:
StackMap stack: java.lang.String
astore 11
start local 11 127: aload 10
ifnull 131
128: 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}"
129: new java.lang.String
dup
aload 10
invokespecial java.lang.String.<init>:([B)V
130: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
131: StackMap locals: java.lang.String
StackMap stack:
new javax.security.sasl.RealmCallback
dup
ldc "DIGEST-MD5 realm: "
132: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.negotiatedRealm:Ljava/lang/String;
133: invokespecial javax.security.sasl.RealmCallback.<init>:(Ljava/lang/String;Ljava/lang/String;)V
astore 13
start local 13 134: new javax.security.auth.callback.NameCallback
dup
ldc "DIGEST-MD5 authentication ID: "
135: aload 3
136: invokespecial javax.security.auth.callback.NameCallback.<init>:(Ljava/lang/String;Ljava/lang/String;)V
astore 14
start local 14 137: 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
138: astore 15
start local 15 139: 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 13
aastore
dup
iconst_1
aload 14
aastore
dup
iconst_2
aload 15
aastore
invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
140: aload 15
invokevirtual javax.security.auth.callback.PasswordCallback.getPassword:()[C
astore 12
start local 12 141: aload 15
invokevirtual javax.security.auth.callback.PasswordCallback.clearPassword:()V
end local 15 end local 14 end local 13 142: goto 151
end local 12 StackMap locals:
StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
143: astore 13
start local 13 144: new javax.security.sasl.SaslException
dup
145: ldc "DIGEST-MD5: Cannot perform callback to acquire password"
aload 13
146: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 13 147: StackMap locals:
StackMap stack: java.io.IOException
astore 13
start local 13 148: new javax.security.sasl.SaslException
dup
149: ldc "DIGEST-MD5: IO error acquiring password"
aload 13
150: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 13 start local 12 151: StackMap locals: char[]
StackMap stack:
aload 12
ifnonnull 157
152: new javax.security.sasl.SaslException
dup
153: 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;
154: 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;
155: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
156: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
157: StackMap locals:
StackMap stack:
aload 0
ldc "AUTHENTICATE"
158: 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;
159: aload 12
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Server.nonce:[B
160: aload 5
iconst_1
aload 10
161: 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 13
start local 13 162: goto 171
end local 13 StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
163: astore 14
start local 14 164: new javax.security.sasl.SaslException
dup
165: ldc "DIGEST-MD5: problem duplicating client response"
aload 14
166: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 14 167: StackMap locals:
StackMap stack: java.io.IOException
astore 14
start local 14 168: new javax.security.sasl.SaslException
dup
169: ldc "DIGEST-MD5: problem duplicating client response"
aload 14
170: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 14 start local 13 171: StackMap locals: byte[]
StackMap stack:
aload 9
aload 13
invokestatic java.util.Arrays.equals:([B[B)Z
ifne 173
172: 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
173: StackMap locals:
StackMap stack:
new javax.security.sasl.AuthorizeCallback
dup
aload 3
aload 11
invokespecial javax.security.sasl.AuthorizeCallback.<init>:(Ljava/lang/String;Ljava/lang/String;)V
174: astore 14
start local 14 175: 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 14
aastore
invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
176: aload 14
invokevirtual javax.security.sasl.AuthorizeCallback.isAuthorized:()Z
ifeq 179
177: aload 0
aload 14
invokevirtual javax.security.sasl.AuthorizeCallback.getAuthorizedID:()Ljava/lang/String;
putfield com.sun.security.sasl.digest.DigestMD5Server.authzid:Ljava/lang/String;
178: goto 192
179: 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;
180: ldc " is not authorized to act as "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 11
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
181: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
end local 14 182: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int top java.lang.String byte[] byte[] java.lang.String char[] byte[]
StackMap stack: javax.security.sasl.SaslException
astore 14
start local 14 183: aload 14
athrow
end local 14 184: StackMap locals:
StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
astore 14
start local 14 185: new javax.security.sasl.SaslException
dup
186: ldc "DIGEST-MD5: Cannot perform callback to check authzid"
aload 14
187: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 14 188: StackMap locals:
StackMap stack: java.io.IOException
astore 14
start local 14 189: new javax.security.sasl.SaslException
dup
190: ldc "DIGEST-MD5: IO error checking authzid"
aload 14
191: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 14 192: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 12
aload 5
193: iconst_1
aload 10
194: invokevirtual com.sun.security.sasl.digest.DigestMD5Server.generateResponseAuth:(Ljava/lang/String;[C[BI[B)[B
astore 16
195: iconst_0
istore 17
start local 17 196: goto 199
197: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int top java.lang.String byte[] byte[] java.lang.String char[] byte[] top top byte[] int
StackMap stack:
aload 12
iload 17
iconst_0
castore
198: iinc 17 1
StackMap locals:
StackMap stack:
199: iload 17
aload 12
arraylength
if_icmplt 197
end local 17 200: aload 16
areturn
end local 13 201: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int top java.lang.String byte[] byte[] java.lang.String char[]
StackMap stack: java.lang.Throwable
astore 15
202: iconst_0
istore 17
start local 17 203: goto 206
204: StackMap locals: com.sun.security.sasl.digest.DigestMD5Server byte[][] int java.lang.String byte[] byte[] int top java.lang.String byte[] byte[] java.lang.String char[] top top java.lang.Throwable top int
StackMap stack:
aload 12
iload 17
iconst_0
castore
205: iinc 17 1
StackMap locals:
StackMap stack:
206: iload 17
aload 12
arraylength
if_icmplt 204
end local 17 207: aload 15
athrow
end local 12 end local 11 end local 10 end local 9 end local 8 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 208 0 this Lcom/sun/security/sasl/digest/DigestMD5Server;
0 208 1 responseVal [[B
9 208 2 clntMaxBufSize I
14 16 3 username Ljava/lang/String;
17 208 3 username Ljava/lang/String;
31 208 4 nonceFromClient [B
36 208 5 cnonce [B
55 56 6 cQop B
57 60 6 cQop B
61 64 6 cQop B
67 208 6 cQop B
79 104 8 foundCipher I
83 90 9 j I
108 208 8 digestUriFromResponse Ljava/lang/String;
120 208 9 responseFromClient [B
123 208 10 authzidBytes [B
127 208 11 authzidFromClient Ljava/lang/String;
141 143 12 passwd [C
151 208 12 passwd [C
134 142 13 rcb Ljavax/security/sasl/RealmCallback;
137 142 14 ncb Ljavax/security/auth/callback/NameCallback;
139 142 15 pcb Ljavax/security/auth/callback/PasswordCallback;
144 147 13 e Ljavax/security/auth/callback/UnsupportedCallbackException;
148 151 13 e Ljava/io/IOException;
162 163 13 expectedResponse [B
171 201 13 expectedResponse [B
164 167 14 e Ljava/security/NoSuchAlgorithmException;
168 171 14 e Ljava/io/IOException;
175 182 14 acb Ljavax/security/sasl/AuthorizeCallback;
183 184 14 e Ljavax/security/sasl/SaslException;
185 188 14 e Ljavax/security/auth/callback/UnsupportedCallbackException;
189 192 14 e Ljava/io/IOException;
196 200 17 i I
203 207 17 i I
Exception table:
from to target type
131 142 143 Class javax.security.auth.callback.UnsupportedCallbackException
131 142 147 Class java.io.IOException
157 162 163 Class java.security.NoSuchAlgorithmException
157 162 167 Class java.io.IOException
173 182 182 Class javax.security.sasl.SaslException
173 182 184 Class javax.security.auth.callback.UnsupportedCallbackException
173 182 188 Class java.io.IOException
157 195 201 any
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
responseVal
private static boolean uriMatches(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
ldc "/*"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 7
3: aload 0
invokevirtual java.lang.String.length:()I
iconst_1
isub
istore 2
start local 2 4: aload 0
iconst_0
iload 2
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 3
start local 3 5: aload 1
iconst_0
iload 2
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 4
start local 4 6: aload 3
aload 4
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ireturn
end local 4 end local 3 end local 2 7: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 thisUri Ljava/lang/String;
0 8 1 incomingUri Ljava/lang/String;
4 7 2 protoAndSlash I
5 7 3 thisProtoAndSlash Ljava/lang/String;
6 7 4 incomingProtoAndSlash Ljava/lang/String;
MethodParameters:
Name Flags
thisUri
incomingUri
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/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[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