abstract class com.sun.security.sasl.digest.DigestMD5Base extends com.sun.security.sasl.util.AbstractSaslImpl
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: com.sun.security.sasl.digest.DigestMD5Base
super_class: com.sun.security.sasl.util.AbstractSaslImpl
{
private static final java.lang.String DI_CLASS_NAME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.String DP_CLASS_NAME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
protected static final int MAX_CHALLENGE_LENGTH;
descriptor: I
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 2048
protected static final int MAX_RESPONSE_LENGTH;
descriptor: I
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 4096
protected static final int DEFAULT_MAXBUF;
descriptor: I
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 65536
protected static final int DES3;
descriptor: I
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 0
protected static final int RC4;
descriptor: I
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 1
protected static final int DES;
descriptor: I
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 2
protected static final int RC4_56;
descriptor: I
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 3
protected static final int RC4_40;
descriptor: I
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 4
protected static final java.lang.String[] CIPHER_TOKENS;
descriptor: [Ljava/lang/String;
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
private static final java.lang.String[] JCE_CIPHER_NAME;
descriptor: [Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
protected static final byte DES_3_STRENGTH;
descriptor: B
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 4
protected static final byte RC4_STRENGTH;
descriptor: B
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 4
protected static final byte DES_STRENGTH;
descriptor: B
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 2
protected static final byte RC4_56_STRENGTH;
descriptor: B
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 2
protected static final byte RC4_40_STRENGTH;
descriptor: B
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 1
protected static final byte UNSET;
descriptor: B
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
ConstantValue: 0
protected static final byte[] CIPHER_MASKS;
descriptor: [B
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
private static final java.lang.String SECURITY_LAYER_MARKER;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: ":00000000000000000000000000000000"
protected static final byte[] EMPTY_BYTE_ARRAY;
descriptor: [B
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
protected int step;
descriptor: I
flags: (0x0004) ACC_PROTECTED
protected javax.security.auth.callback.CallbackHandler cbh;
descriptor: Ljavax/security/auth/callback/CallbackHandler;
flags: (0x0004) ACC_PROTECTED
protected com.sun.security.sasl.digest.SecurityCtx secCtx;
descriptor: Lcom/sun/security/sasl/digest/SecurityCtx;
flags: (0x0004) ACC_PROTECTED
protected byte[] H_A1;
descriptor: [B
flags: (0x0004) ACC_PROTECTED
protected byte[] nonce;
descriptor: [B
flags: (0x0004) ACC_PROTECTED
protected java.lang.String negotiatedStrength;
descriptor: Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
protected java.lang.String negotiatedCipher;
descriptor: Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
protected java.lang.String negotiatedQop;
descriptor: Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
protected java.lang.String negotiatedRealm;
descriptor: Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
protected boolean useUTF8;
descriptor: Z
flags: (0x0004) ACC_PROTECTED
protected java.nio.charset.Charset encoding;
descriptor: Ljava/nio/charset/Charset;
flags: (0x0004) ACC_PROTECTED
protected java.lang.String digestUri;
descriptor: Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
protected java.lang.String authzid;
descriptor: Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
private static final char[] pem_array;
descriptor: [C
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int RAW_NONCE_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 30
private static final int ENCODED_NONCE_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 40
private static final java.math.BigInteger MASK;
descriptor: Ljava/math/BigInteger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: ldc Lcom/sun/security/sasl/digest/DigestMD5Base$DigestIntegrity;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
putstatic com.sun.security.sasl.digest.DigestMD5Base.DI_CLASS_NAME:Ljava/lang/String;
1: ldc Lcom/sun/security/sasl/digest/DigestMD5Base$DigestPrivacy;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
putstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
2: iconst_5
anewarray java.lang.String
dup
iconst_0
ldc "3des"
aastore
dup
iconst_1
3: ldc "rc4"
aastore
dup
iconst_2
4: ldc "des"
aastore
dup
iconst_3
5: ldc "rc4-56"
aastore
dup
iconst_4
6: ldc "rc4-40"
aastore
7: putstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
8: iconst_3
anewarray java.lang.String
dup
iconst_0
9: ldc "DESede/CBC/NoPadding"
aastore
dup
iconst_1
10: ldc "RC4"
aastore
dup
iconst_2
11: ldc "DES/CBC/NoPadding"
aastore
12: putstatic com.sun.security.sasl.digest.DigestMD5Base.JCE_CIPHER_NAME:[Ljava/lang/String;
13: iconst_5
newarray 8
dup
iconst_0
iconst_4
bastore
dup
iconst_1
14: iconst_4
bastore
dup
iconst_2
15: iconst_2
bastore
dup
iconst_3
16: iconst_2
bastore
dup
iconst_4
17: iconst_1
bastore
18: putstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_MASKS:[B
19: iconst_0
newarray 8
putstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
20: bipush 64
newarray 5
dup
iconst_0
21: bipush 65
castore
dup
iconst_1
bipush 66
castore
dup
iconst_2
bipush 67
castore
dup
iconst_3
bipush 68
castore
dup
iconst_4
bipush 69
castore
dup
iconst_5
bipush 70
castore
dup
bipush 6
bipush 71
castore
dup
bipush 7
bipush 72
castore
dup
bipush 8
22: bipush 73
castore
dup
bipush 9
bipush 74
castore
dup
bipush 10
bipush 75
castore
dup
bipush 11
bipush 76
castore
dup
bipush 12
bipush 77
castore
dup
bipush 13
bipush 78
castore
dup
bipush 14
bipush 79
castore
dup
bipush 15
bipush 80
castore
dup
bipush 16
23: bipush 81
castore
dup
bipush 17
bipush 82
castore
dup
bipush 18
bipush 83
castore
dup
bipush 19
bipush 84
castore
dup
bipush 20
bipush 85
castore
dup
bipush 21
bipush 86
castore
dup
bipush 22
bipush 87
castore
dup
bipush 23
bipush 88
castore
dup
bipush 24
24: bipush 89
castore
dup
bipush 25
bipush 90
castore
dup
bipush 26
bipush 97
castore
dup
bipush 27
bipush 98
castore
dup
bipush 28
bipush 99
castore
dup
bipush 29
bipush 100
castore
dup
bipush 30
bipush 101
castore
dup
bipush 31
bipush 102
castore
dup
bipush 32
25: bipush 103
castore
dup
bipush 33
bipush 104
castore
dup
bipush 34
bipush 105
castore
dup
bipush 35
bipush 106
castore
dup
bipush 36
bipush 107
castore
dup
bipush 37
bipush 108
castore
dup
bipush 38
bipush 109
castore
dup
bipush 39
bipush 110
castore
dup
bipush 40
26: bipush 111
castore
dup
bipush 41
bipush 112
castore
dup
bipush 42
bipush 113
castore
dup
bipush 43
bipush 114
castore
dup
bipush 44
bipush 115
castore
dup
bipush 45
bipush 116
castore
dup
bipush 46
bipush 117
castore
dup
bipush 47
bipush 118
castore
dup
bipush 48
27: bipush 119
castore
dup
bipush 49
bipush 120
castore
dup
bipush 50
bipush 121
castore
dup
bipush 51
bipush 122
castore
dup
bipush 52
bipush 48
castore
dup
bipush 53
bipush 49
castore
dup
bipush 54
bipush 50
castore
dup
bipush 55
bipush 51
castore
dup
bipush 56
28: bipush 52
castore
dup
bipush 57
bipush 53
castore
dup
bipush 58
bipush 54
castore
dup
bipush 59
bipush 55
castore
dup
bipush 60
bipush 56
castore
dup
bipush 61
bipush 57
castore
dup
bipush 62
bipush 43
castore
dup
bipush 63
bipush 47
castore
29: putstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
30: new java.math.BigInteger
dup
ldc "7f"
bipush 16
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
putstatic com.sun.security.sasl.digest.DigestMD5Base.MASK:Ljava/math/BigInteger;
return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>(java.util.Map<java.lang.String, ?>, java.lang.String, int, java.lang.String, javax.security.auth.callback.CallbackHandler);
descriptor: (Ljava/util/Map;Ljava/lang/String;ILjava/lang/String;Ljavax/security/auth/callback/CallbackHandler;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
aload 1
aload 2
invokespecial com.sun.security.sasl.util.AbstractSaslImpl.<init>:(Ljava/util/Map;Ljava/lang/String;)V
1: aload 0
iconst_0
putfield com.sun.security.sasl.digest.DigestMD5Base.useUTF8:Z
2: aload 0
getstatic java.nio.charset.StandardCharsets.ISO_8859_1:Ljava/nio/charset/Charset;
putfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
3: aload 0
iload 3
putfield com.sun.security.sasl.digest.DigestMD5Base.step:I
4: aload 0
aload 4
putfield com.sun.security.sasl.digest.DigestMD5Base.digestUri:Ljava/lang/String;
5: aload 0
aload 5
putfield com.sun.security.sasl.digest.DigestMD5Base.cbh:Ljavax/security/auth/callback/CallbackHandler;
6: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/sun/security/sasl/digest/DigestMD5Base;
0 7 1 props Ljava/util/Map<Ljava/lang/String;*>;
0 7 2 className Ljava/lang/String;
0 7 3 firstStep I
0 7 4 digestUri Ljava/lang/String;
0 7 5 cbh Ljavax/security/auth/callback/CallbackHandler;
Exceptions:
throws javax.security.sasl.SaslException
Signature: (Ljava/util/Map<Ljava/lang/String;*>;Ljava/lang/String;ILjava/lang/String;Ljavax/security/auth/callback/CallbackHandler;)V
MethodParameters:
Name Flags
props
className
firstStep
digestUri
cbh
public java.lang.String getMechanismName();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "DIGEST-MD5"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/security/sasl/digest/DigestMD5Base;
public byte[] unwrap(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.completed:Z
ifne 4
1: new java.lang.IllegalStateException
dup
2: ldc "DIGEST-MD5 authentication not completed"
3: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
ifnonnull 8
5: new java.lang.IllegalStateException
dup
6: ldc "Neither integrity nor privacy was negotiated"
7: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
aload 1
iload 2
iload 3
invokeinterface com.sun.security.sasl.digest.SecurityCtx.unwrap:([BII)[B
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/sun/security/sasl/digest/DigestMD5Base;
0 9 1 incoming [B
0 9 2 start I
0 9 3 len I
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
incoming
start
len
public byte[] wrap(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.completed:Z
ifne 4
1: new java.lang.IllegalStateException
dup
2: ldc "DIGEST-MD5 authentication not completed"
3: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
ifnonnull 8
5: new java.lang.IllegalStateException
dup
6: ldc "Neither integrity nor privacy was negotiated"
7: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
aload 1
iload 2
iload 3
invokeinterface com.sun.security.sasl.digest.SecurityCtx.wrap:([BII)[B
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/sun/security/sasl/digest/DigestMD5Base;
0 9 1 outgoing [B
0 9 2 start I
0 9 3 len I
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
outgoing
start
len
public void dispose();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
ifnull 2
1: aload 0
aconst_null
putfield com.sun.security.sasl.digest.DigestMD5Base.secCtx:Lcom/sun/security/sasl/digest/SecurityCtx;
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/security/sasl/digest/DigestMD5Base;
Exceptions:
throws javax.security.sasl.SaslException
public java.lang.Object getNegotiatedProperty(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.completed:Z
ifeq 6
1: aload 1
ldc "javax.security.sasl.strength"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 3
2: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedStrength:Ljava/lang/String;
areturn
3: StackMap locals:
StackMap stack:
aload 1
ldc "javax.security.sasl.bound.server.name"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 5
4: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.digestUri:Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.digestUri:Ljava/lang/String;
bipush 47
invokevirtual java.lang.String.indexOf:(I)I
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
areturn
5: StackMap locals:
StackMap stack:
aload 0
aload 1
invokespecial com.sun.security.sasl.util.AbstractSaslImpl.getNegotiatedProperty:(Ljava/lang/String;)Ljava/lang/Object;
areturn
6: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
7: ldc "DIGEST-MD5 authentication not completed"
8: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/sun/security/sasl/digest/DigestMD5Base;
0 9 1 propName Ljava/lang/String;
MethodParameters:
Name Flags
propName
protected static final byte[] generateNonce();
descriptor: ()[B
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
Code:
stack=6, locals=8, args_size=0
0: new java.util.Random
dup
invokespecial java.util.Random.<init>:()V
astore 0
start local 0 1: bipush 30
newarray 8
astore 1
start local 1 2: aload 0
aload 1
invokevirtual java.util.Random.nextBytes:([B)V
3: bipush 40
newarray 8
astore 2
start local 2 4: iconst_0
istore 6
start local 6 5: iconst_0
istore 7
start local 7 6: goto 15
7: StackMap locals: java.util.Random byte[] byte[] top top top int int
StackMap stack:
aload 1
iload 7
baload
istore 3
start local 3 8: aload 1
iload 7
iconst_1
iadd
baload
istore 4
start local 4 9: aload 1
iload 7
iconst_2
iadd
baload
istore 5
start local 5 10: aload 2
iload 6
iinc 6 1
getstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
iload 3
iconst_2
iushr
bipush 63
iand
caload
i2b
bastore
11: aload 2
iload 6
iinc 6 1
getstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
iload 3
iconst_4
ishl
bipush 48
iand
iload 4
iconst_4
iushr
bipush 15
iand
iadd
caload
i2b
bastore
12: aload 2
iload 6
iinc 6 1
getstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
iload 4
iconst_2
ishl
bipush 60
iand
iload 5
bipush 6
iushr
iconst_3
iand
iadd
caload
i2b
bastore
13: aload 2
iload 6
iinc 6 1
getstatic com.sun.security.sasl.digest.DigestMD5Base.pem_array:[C
iload 5
bipush 63
iand
caload
i2b
bastore
14: iinc 7 3
end local 5 end local 4 end local 3 StackMap locals:
StackMap stack:
15: iload 7
aload 1
arraylength
if_icmplt 7
end local 7 16: aload 2
areturn
end local 6 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
1 17 0 random Ljava/util/Random;
2 17 1 randomData [B
4 17 2 nonce [B
8 15 3 a B
9 15 4 b B
10 15 5 c B
5 17 6 j I
6 16 7 i I
protected static void writeQuotedStringValue(java.io.ByteArrayOutputStream, byte[]);
descriptor: (Ljava/io/ByteArrayOutputStream;[B)V
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 1
arraylength
istore 2
start local 2 1: iconst_0
istore 4
start local 4 2: goto 8
3: StackMap locals: java.io.ByteArrayOutputStream byte[] int top int
StackMap stack:
aload 1
iload 4
baload
istore 3
start local 3 4: iload 3
i2c
invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(C)Z
ifeq 6
5: aload 0
bipush 92
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
6: StackMap locals: java.io.ByteArrayOutputStream byte[] int int int
StackMap stack:
aload 0
iload 3
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
7: iinc 4 1
end local 3 StackMap locals: java.io.ByteArrayOutputStream byte[] int top int
StackMap stack:
8: iload 4
iload 2
if_icmplt 3
end local 4 9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 out Ljava/io/ByteArrayOutputStream;
0 10 1 buf [B
1 10 2 len I
4 8 3 ch B
2 9 4 i I
MethodParameters:
Name Flags
out
buf
private static boolean needEscape(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.String.length:()I
istore 1
start local 1 1: iconst_0
istore 2
start local 2 2: goto 6
3: StackMap locals: int int
StackMap stack:
aload 0
iload 2
invokevirtual java.lang.String.charAt:(I)C
invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(C)Z
ifeq 5
4: iconst_1
ireturn
5: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
iload 1
if_icmplt 3
end local 2 7: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 str Ljava/lang/String;
1 8 1 len I
2 7 2 i I
MethodParameters:
Name Flags
str
private static boolean needEscape(char);
descriptor: (C)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: iload 0
bipush 34
if_icmpeq 5
1: iload 0
bipush 92
if_icmpeq 5
2: iload 0
bipush 127
if_icmpeq 5
3: iload 0
iflt 4
iload 0
bipush 31
if_icmpgt 4
iload 0
bipush 13
if_icmpeq 4
iload 0
bipush 9
if_icmpeq 4
iload 0
bipush 10
if_icmpne 5
4: StackMap locals:
StackMap stack:
iconst_0
ireturn
StackMap locals:
StackMap stack:
5: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 ch C
MethodParameters:
Name Flags
ch
protected static java.lang.String quotedStringValue(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=5, locals=6, args_size=1
start local 0 0: aload 0
invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(Ljava/lang/String;)Z
ifeq 13
1: aload 0
invokevirtual java.lang.String.length:()I
istore 1
start local 1 2: iload 1
iload 1
iadd
newarray 5
astore 2
start local 2 3: iconst_0
istore 3
start local 3 4: iconst_0
istore 5
start local 5 5: goto 11
6: StackMap locals: java.lang.String int char[] int top int
StackMap stack:
aload 0
iload 5
invokevirtual java.lang.String.charAt:(I)C
istore 4
start local 4 7: iload 4
invokestatic com.sun.security.sasl.digest.DigestMD5Base.needEscape:(C)Z
ifeq 9
8: aload 2
iload 3
iinc 3 1
bipush 92
castore
9: StackMap locals: java.lang.String int char[] int int int
StackMap stack:
aload 2
iload 3
iinc 3 1
iload 4
castore
10: iinc 5 1
end local 4 StackMap locals: java.lang.String int char[] int top int
StackMap stack:
11: iload 5
iload 1
if_icmplt 6
end local 5 12: new java.lang.String
dup
aload 2
iconst_0
iload 3
invokespecial java.lang.String.<init>:([CII)V
areturn
end local 3 end local 2 end local 1 13: StackMap locals: java.lang.String
StackMap stack:
aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 str Ljava/lang/String;
2 13 1 len I
3 13 2 buf [C
4 13 3 j I
7 11 4 ch C
5 12 5 i I
MethodParameters:
Name Flags
str
protected byte[] binaryToHex(byte[]);
descriptor: ([B)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 2
start local 2 1: iconst_0
istore 3
start local 3 2: goto 10
3: StackMap locals: java.lang.StringBuilder int
StackMap stack:
aload 1
iload 3
baload
sipush 255
iand
bipush 16
if_icmpge 6
4: aload 2
bipush 48
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 1
iload 3
baload
sipush 255
iand
invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
5: goto 9
6: StackMap locals:
StackMap stack:
aload 2
7: aload 1
iload 3
baload
sipush 255
iand
invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
8: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
9: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
10: iload 3
aload 1
arraylength
if_icmplt 3
end local 3 11: aload 2
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/sun/security/sasl/digest/DigestMD5Base;
0 12 1 digest [B
1 12 2 digestString Ljava/lang/StringBuilder;
2 11 3 i I
MethodParameters:
Name Flags
digest
protected byte[] stringToByte_8859_1(java.lang.String);
descriptor: (Ljava/lang/String;)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.lang.String.toCharArray:()[C
astore 2
start local 2 1: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.useUTF8:Z
ifeq 8
2: iconst_0
istore 3
start local 3 3: goto 7
4: StackMap locals: char[] int
StackMap stack:
aload 2
iload 3
caload
sipush 255
if_icmple 6
5: aload 1
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
areturn
6: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
7: iload 3
aload 2
arraylength
if_icmplt 4
end local 3 8: StackMap locals:
StackMap stack:
aload 1
getstatic java.nio.charset.StandardCharsets.ISO_8859_1:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/sun/security/sasl/digest/DigestMD5Base;
0 9 1 str Ljava/lang/String;
1 9 2 buffer [C
3 8 3 i I
MethodParameters:
Name Flags
str
protected static byte[] getPlatformCiphers();
descriptor: ()[B
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=5, locals=2, args_size=0
0: getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
arraylength
newarray 8
astore 0
start local 0 1: iconst_0
istore 1
start local 1 2: goto 10
3: StackMap locals: byte[] int
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Base.JCE_CIPHER_NAME:[Ljava/lang/String;
iload 1
aaload
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
pop
4: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST01:Platform supports {0}"
getstatic com.sun.security.sasl.digest.DigestMD5Base.JCE_CIPHER_NAME:[Ljava/lang/String;
iload 1
aaload
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
5: aload 0
iload 1
dup2
baload
getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_MASKS:[B
iload 1
baload
ior
i2b
bastore
6: goto 9
StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
7: pop
goto 9
8: StackMap locals:
StackMap stack: javax.crypto.NoSuchPaddingException
pop
9: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
10: iload 1
getstatic com.sun.security.sasl.digest.DigestMD5Base.JCE_CIPHER_NAME:[Ljava/lang/String;
arraylength
if_icmplt 3
end local 1 11: aload 0
iconst_1
baload
ifeq 14
12: aload 0
iconst_3
dup2
baload
getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_MASKS:[B
iconst_3
baload
ior
i2b
bastore
13: aload 0
iconst_4
dup2
baload
getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_MASKS:[B
iconst_4
baload
ior
i2b
bastore
14: StackMap locals:
StackMap stack:
aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
1 15 0 ciphers [B
2 11 1 i I
Exception table:
from to target type
3 6 7 Class java.security.NoSuchAlgorithmException
3 6 8 Class javax.crypto.NoSuchPaddingException
protected byte[] generateResponseValue(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, char[], byte[], byte[], int, byte[]);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[C[B[BI[B)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=10, locals=20, args_size=11
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 start local 9 start local 10 0: ldc "MD5"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 11
start local 11 1: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 14
start local 14 2: aload 14
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 0
getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
3: aload 3
ldc "auth-conf"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 5
4: aload 3
ldc "auth-int"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 7
5: StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest top top java.io.ByteArrayOutputStream
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST04:QOP: {0}"
aload 3
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
6: aload 14
ldc ":00000000000000000000000000000000"
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
7: StackMap locals:
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 9
8: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST05:A2: {0}"
aload 14
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
9: StackMap locals:
StackMap stack:
aload 11
aload 14
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokevirtual java.security.MessageDigest.update:([B)V
10: aload 11
invokevirtual java.security.MessageDigest.digest:()[B
astore 18
start local 18 11: aload 0
aload 18
invokevirtual com.sun.security.sasl.digest.DigestMD5Base.binaryToHex:([B)[B
astore 13
start local 13 12: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 14
13: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST06:HEX(H(A2)): {0}"
new java.lang.String
dup
aload 13
invokespecial java.lang.String.<init>:([B)V
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
14: StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest top byte[] java.io.ByteArrayOutputStream top top top byte[]
StackMap stack:
new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 15
start local 15 15: aload 15
aload 0
aload 4
invokevirtual com.sun.security.sasl.digest.DigestMD5Base.stringToByte_8859_1:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
16: aload 15
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
17: aload 15
aload 0
aload 5
invokevirtual com.sun.security.sasl.digest.DigestMD5Base.stringToByte_8859_1:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
18: aload 15
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
19: aload 15
aload 0
new java.lang.String
dup
aload 6
invokespecial java.lang.String.<init>:([C)V
invokevirtual com.sun.security.sasl.digest.DigestMD5Base.stringToByte_8859_1:(Ljava/lang/String;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
20: aload 11
aload 15
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokevirtual java.security.MessageDigest.update:([B)V
21: aload 11
invokevirtual java.security.MessageDigest.digest:()[B
astore 18
22: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 26
23: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST07:H({0}) = {1}"
24: iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 15
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
aastore
dup
iconst_1
new java.lang.String
dup
aload 0
aload 18
invokevirtual com.sun.security.sasl.digest.DigestMD5Base.binaryToHex:([B)[B
invokespecial java.lang.String.<init>:([B)V
aastore
25: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
26: StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest top byte[] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream top top byte[]
StackMap stack:
new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 16
start local 16 27: aload 16
aload 18
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
28: aload 16
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
29: aload 16
aload 7
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
30: aload 16
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
31: aload 16
aload 8
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
32: aload 10
ifnull 35
33: aload 16
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
34: aload 16
aload 10
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
35: StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest top byte[] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream top byte[]
StackMap stack:
aload 11
aload 16
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokevirtual java.security.MessageDigest.update:([B)V
36: aload 11
invokevirtual java.security.MessageDigest.digest:()[B
astore 18
37: aload 0
aload 18
putfield com.sun.security.sasl.digest.DigestMD5Base.H_A1:[B
38: aload 0
aload 18
invokevirtual com.sun.security.sasl.digest.DigestMD5Base.binaryToHex:([B)[B
astore 12
start local 12 39: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 41
40: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST08:H(A1) = {0}"
new java.lang.String
dup
aload 12
invokespecial java.lang.String.<init>:([B)V
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
41: StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest byte[] byte[] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream top byte[]
StackMap stack:
new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 17
start local 17 42: aload 17
aload 12
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
43: aload 17
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
44: aload 17
aload 7
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
45: aload 17
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
46: aload 17
iload 9
invokestatic com.sun.security.sasl.digest.DigestMD5Base.nonceCountToHex:(I)Ljava/lang/String;
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
47: aload 17
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
48: aload 17
aload 8
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
49: aload 17
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
50: aload 17
aload 3
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
51: aload 17
bipush 58
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
52: aload 17
aload 13
invokevirtual java.io.ByteArrayOutputStream.write:([B)V
53: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 55
54: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST09:KD: {0}"
aload 17
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
55: StackMap locals: com.sun.security.sasl.digest.DigestMD5Base java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String char[] byte[] byte[] int byte[] java.security.MessageDigest byte[] byte[] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream byte[]
StackMap stack:
aload 11
aload 17
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokevirtual java.security.MessageDigest.update:([B)V
56: aload 11
invokevirtual java.security.MessageDigest.digest:()[B
astore 18
57: aload 0
aload 18
invokevirtual com.sun.security.sasl.digest.DigestMD5Base.binaryToHex:([B)[B
astore 19
start local 19 58: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 62
59: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST10:response-value: {0}"
60: new java.lang.String
dup
aload 19
invokespecial java.lang.String.<init>:([B)V
61: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
62: StackMap locals: byte[]
StackMap stack:
aload 19
areturn
end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 63 0 this Lcom/sun/security/sasl/digest/DigestMD5Base;
0 63 1 authMethod Ljava/lang/String;
0 63 2 digestUriValue Ljava/lang/String;
0 63 3 qopValue Ljava/lang/String;
0 63 4 usernameValue Ljava/lang/String;
0 63 5 realmValue Ljava/lang/String;
0 63 6 passwdValue [C
0 63 7 nonceValue [B
0 63 8 cNonceValue [B
0 63 9 nonceCount I
0 63 10 authzidValue [B
1 63 11 md5 Ljava/security/MessageDigest;
39 63 12 hexA1 [B
12 63 13 hexA2 [B
2 63 14 A2 Ljava/io/ByteArrayOutputStream;
15 63 15 beginA1 Ljava/io/ByteArrayOutputStream;
27 63 16 A1 Ljava/io/ByteArrayOutputStream;
42 63 17 KD Ljava/io/ByteArrayOutputStream;
11 63 18 digest [B
58 63 19 answer [B
Exceptions:
throws java.security.NoSuchAlgorithmException, java.io.IOException
MethodParameters:
Name Flags
authMethod
digestUriValue
qopValue
usernameValue
realmValue
passwdValue
nonceValue
cNonceValue
nonceCount
authzidValue
protected static java.lang.String nonceCountToHex(int);
descriptor: (I)Ljava/lang/String;
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: iload 0
invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
astore 1
start local 1 1: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 2
start local 2 2: aload 1
invokevirtual java.lang.String.length:()I
bipush 8
if_icmpge 8
3: iconst_0
istore 3
start local 3 4: goto 7
5: StackMap locals: java.lang.String java.lang.StringBuilder int
StackMap stack:
aload 2
ldc "0"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
6: iinc 3 1
StackMap locals:
StackMap stack:
7: iload 3
bipush 8
aload 1
invokevirtual java.lang.String.length:()I
isub
if_icmplt 5
end local 3 8: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 2
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 count I
1 9 1 str Ljava/lang/String;
2 9 2 pad Ljava/lang/StringBuilder;
4 8 3 i I
MethodParameters:
Name Flags
count
protected static byte[][] parseDirectives(byte[], java.lang.String[], java.util.List<byte[]>, );
descriptor: ([B[Ljava/lang/String;Ljava/util/List;I)[[B
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=6, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
arraylength
anewarray byte[]
astore 4
start local 4 1: new java.io.ByteArrayOutputStream
dup
bipush 10
invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
astore 5
start local 5 2: new java.io.ByteArrayOutputStream
dup
bipush 10
invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
astore 6
start local 6 3: iconst_1
istore 7
start local 7 4: iconst_0
istore 8
start local 8 5: iconst_0
istore 9
start local 9 6: aload 0
iconst_0
invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
istore 11
start local 11 7: goto 81
8: StackMap locals: byte[] java.lang.String[] java.util.List int byte[][] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream int int int top int
StackMap stack:
aload 0
iload 11
baload
istore 10
start local 10 9: iload 7
ifeq 43
10: iload 10
bipush 44
if_icmpne 17
11: aload 5
invokevirtual java.io.ByteArrayOutputStream.size:()I
ifeq 15
12: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "Directive key contains a ',':"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
13: aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
14: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
15: StackMap locals: byte[] java.lang.String[] java.util.List int byte[][] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream int int int int int
StackMap stack:
aload 0
iload 11
iconst_1
iadd
invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
istore 11
16: goto 81
StackMap locals:
StackMap stack:
17: iload 10
bipush 61
if_icmpne 30
18: aload 5
invokevirtual java.io.ByteArrayOutputStream.size:()I
ifne 20
19: new javax.security.sasl.SaslException
dup
ldc "Empty directive key"
invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
20: StackMap locals:
StackMap stack:
iconst_0
istore 7
21: aload 0
iload 11
iconst_1
iadd
invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
istore 11
22: iload 11
aload 0
arraylength
if_icmpge 27
23: aload 0
iload 11
baload
bipush 34
if_icmpne 81
24: iconst_1
istore 8
25: iinc 11 1
26: goto 81
27: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
28: new java.lang.StringBuilder
dup
ldc "Valueless directive found: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
29: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
30: StackMap locals:
StackMap stack:
iload 10
invokestatic com.sun.security.sasl.digest.DigestMD5Base.isLws:(B)Z
ifeq 40
31: aload 0
iload 11
iconst_1
iadd
invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
istore 11
32: iload 11
aload 0
arraylength
if_icmpge 37
33: aload 0
iload 11
baload
bipush 61
if_icmpeq 81
34: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "'=' expected after key: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
35: aload 5
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
36: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
37: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
38: new java.lang.StringBuilder
dup
ldc "'=' expected after key: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
39: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
40: StackMap locals:
StackMap stack:
aload 5
iload 10
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
41: iinc 11 1
42: goto 81
StackMap locals:
StackMap stack:
43: iload 8
ifeq 63
44: iload 10
bipush 92
if_icmpne 55
45: iinc 11 1
46: iload 11
aload 0
arraylength
if_icmpge 50
47: aload 6
aload 0
iload 11
baload
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
48: iinc 11 1
49: goto 81
50: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
51: new java.lang.StringBuilder
dup
ldc "Unmatched quote found for directive: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
52: aload 5
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " with value: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
53: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
54: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
55: StackMap locals:
StackMap stack:
iload 10
bipush 34
if_icmpne 60
56: iinc 11 1
57: iconst_0
istore 8
58: iconst_1
istore 9
59: goto 81
60: StackMap locals:
StackMap stack:
aload 6
iload 10
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
61: iinc 11 1
62: goto 81
StackMap locals:
StackMap stack:
63: iload 10
invokestatic com.sun.security.sasl.digest.DigestMD5Base.isLws:(B)Z
ifne 64
iload 10
bipush 44
if_icmpne 73
64: StackMap locals:
StackMap stack:
aload 5
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
aload 6
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
65: aload 1
aload 4
aload 2
iload 3
66: invokestatic com.sun.security.sasl.digest.DigestMD5Base.extractDirective:(Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
67: aload 5
invokevirtual java.io.ByteArrayOutputStream.reset:()V
68: aload 6
invokevirtual java.io.ByteArrayOutputStream.reset:()V
69: iconst_1
istore 7
70: iconst_0
dup
istore 9
istore 8
71: aload 0
iload 11
iconst_1
iadd
invokestatic com.sun.security.sasl.digest.DigestMD5Base.skipLws:([BI)I
istore 11
72: goto 81
StackMap locals:
StackMap stack:
73: iload 9
ifeq 79
74: new javax.security.sasl.SaslException
dup
75: new java.lang.StringBuilder
dup
ldc "Expecting comma or linear whitespace after quoted string: \""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
76: aload 6
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\""
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
77: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
78: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
79: StackMap locals:
StackMap stack:
aload 6
iload 10
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
80: iinc 11 1
end local 10 81: StackMap locals: byte[] java.lang.String[] java.util.List int byte[][] java.io.ByteArrayOutputStream java.io.ByteArrayOutputStream int int int top int
StackMap stack:
iload 11
aload 0
arraylength
if_icmplt 8
82: iload 8
ifeq 88
83: new javax.security.sasl.SaslException
dup
84: new java.lang.StringBuilder
dup
ldc "Unmatched quote found for directive: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
85: ldc " with value: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
86: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
87: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
88: StackMap locals:
StackMap stack:
aload 5
invokevirtual java.io.ByteArrayOutputStream.size:()I
ifle 92
89: aload 5
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
aload 6
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
90: aload 1
aload 4
aload 2
iload 3
91: invokestatic com.sun.security.sasl.digest.DigestMD5Base.extractDirective:(Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
92: StackMap locals:
StackMap stack:
aload 4
areturn
end local 11 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 93 0 buf [B
0 93 1 keyTable [Ljava/lang/String;
0 93 2 realmChoices Ljava/util/List<[B>;
0 93 3 realmIndex I
1 93 4 valueTable [[B
2 93 5 key Ljava/io/ByteArrayOutputStream;
3 93 6 value Ljava/io/ByteArrayOutputStream;
4 93 7 gettingKey Z
5 93 8 gettingQuotedValue Z
6 93 9 expectSeparator Z
9 81 10 bch B
7 93 11 i I
Exceptions:
throws javax.security.sasl.SaslException
Signature: ([B[Ljava/lang/String;Ljava/util/List<[B>;I)[[B
MethodParameters:
Name Flags
buf
keyTable
realmChoices
realmIndex
private static boolean isLws(byte);
descriptor: (B)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iload 0
lookupswitch { // 4
9: 1
10: 1
13: 1
32: 1
default: 2
}
1: StackMap locals:
StackMap stack:
iconst_1
ireturn
2: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 b B
MethodParameters:
Name Flags
b
private static int skipLws(byte[], int);
descriptor: ([BI)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: iload 1
istore 2
start local 2 1: goto 5
2: StackMap locals: int
StackMap stack:
aload 0
iload 2
baload
invokestatic com.sun.security.sasl.digest.DigestMD5Base.isLws:(B)Z
ifne 4
3: iload 2
ireturn
4: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
5: iload 2
aload 0
arraylength
if_icmplt 2
6: iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 buf [B
0 7 1 start I
1 7 2 i I
MethodParameters:
Name Flags
buf
start
private static void extractDirective(java.lang.String, byte[], java.lang.String[], byte[][], java.util.List<byte[]>, );
descriptor: (Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List;I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=10, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: iconst_0
istore 6
start local 6 1: goto 23
2: StackMap locals: int
StackMap stack:
aload 0
aload 2
iload 6
aaload
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 22
3: aload 3
iload 6
aaload
ifnonnull 12
4: aload 3
iload 6
aload 1
aastore
5: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 24
6: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "DIGEST11:Directive {0} = {1}"
7: iconst_2
anewarray java.lang.Object
dup
iconst_0
8: aload 2
iload 6
aaload
aastore
dup
iconst_1
9: new java.lang.String
dup
aload 3
iload 6
aaload
invokespecial java.lang.String.<init>:([B)V
aastore
10: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
11: goto 24
StackMap locals:
StackMap stack:
12: aload 4
ifnull 17
iload 6
iload 5
if_icmpne 17
13: aload 4
invokeinterface java.util.List.isEmpty:()Z
ifeq 15
14: aload 4
aload 3
iload 6
aaload
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
15: StackMap locals:
StackMap stack:
aload 4
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
16: goto 24
17: StackMap locals:
StackMap stack:
new javax.security.sasl.SaslException
dup
18: new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: peer sent more than one "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
19: aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " directive: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
new java.lang.String
dup
aload 1
invokespecial java.lang.String.<init>:([B)V
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
20: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
21: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
22: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
23: iload 6
aload 2
arraylength
if_icmplt 2
end local 6 24: StackMap locals:
StackMap stack:
return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 key Ljava/lang/String;
0 25 1 value [B
0 25 2 keyTable [Ljava/lang/String;
0 25 3 valueTable [[B
0 25 4 realmChoices Ljava/util/List<[B>;
0 25 5 realmIndex I
1 24 6 i I
Exceptions:
throws javax.security.sasl.SaslException
Signature: (Ljava/lang/String;[B[Ljava/lang/String;[[BLjava/util/List<[B>;I)V
MethodParameters:
Name Flags
key
value
keyTable
valueTable
realmChoices
realmIndex
private static void setParityBit(byte[]);
descriptor: ([B)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: goto 6
2: StackMap locals: int
StackMap stack:
aload 0
iload 1
baload
sipush 254
iand
istore 2
start local 2 3: iload 2
iload 2
invokestatic java.lang.Integer.bitCount:(I)I
iconst_1
iand
iconst_1
ixor
ior
istore 2
4: aload 0
iload 1
iload 2
i2b
bastore
end local 2 5: iinc 1 1
StackMap locals:
StackMap stack:
6: iload 1
aload 0
arraylength
if_icmplt 2
end local 1 7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 key [B
1 7 1 i I
3 5 2 b I
MethodParameters:
Name Flags
key
private static byte[] addDesParity(byte[], int, int);
descriptor: ([BII)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=7, args_size=3
start local 0 start local 1 start local 2 0: iload 2
bipush 7
if_icmpeq 4
1: new java.lang.IllegalArgumentException
dup
2: new java.lang.StringBuilder
dup
ldc "Invalid length of DES Key Value:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
bipush 7
newarray 8
astore 3
start local 3 5: aload 0
iload 1
aload 3
iconst_0
iload 2
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
6: bipush 8
newarray 8
astore 4
start local 4 7: new java.math.BigInteger
dup
aload 3
invokespecial java.math.BigInteger.<init>:([B)V
astore 5
start local 5 8: aload 4
arraylength
iconst_1
isub
istore 6
start local 6 9: goto 14
10: StackMap locals: byte[] int int byte[] byte[] java.math.BigInteger int
StackMap stack:
aload 4
iload 6
aload 5
getstatic com.sun.security.sasl.digest.DigestMD5Base.MASK:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.and:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.toByteArray:()[B
iconst_0
baload
bastore
11: aload 4
iload 6
dup2
baload
iconst_1
ishl
i2b
bastore
12: aload 5
bipush 7
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 5
13: iinc 6 -1
StackMap locals:
StackMap stack:
14: iload 6
ifge 10
end local 6 15: aload 4
invokestatic com.sun.security.sasl.digest.DigestMD5Base.setParityBit:([B)V
16: aload 4
areturn
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 17 0 input [B
0 17 1 offset I
0 17 2 len I
5 17 3 raw [B
7 17 4 result [B
8 17 5 in Ljava/math/BigInteger;
9 15 6 i I
MethodParameters:
Name Flags
input
offset
len
private static javax.crypto.SecretKey makeDesKeys(byte[], java.lang.String);
descriptor: ([BLjava/lang/String;)Ljavax/crypto/SecretKey;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=8, args_size=2
start local 0 start local 1 0: aload 0
iconst_0
bipush 7
invokestatic com.sun.security.sasl.digest.DigestMD5Base.addDesParity:([BII)[B
astore 2
start local 2 1: aconst_null
astore 3
start local 3 2: aload 1
invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
3: astore 4
start local 4 4: aload 1
dup
astore 5
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 2
-1335250348: 5
99346: 6
default: 45
}
StackMap locals: byte[] java.lang.String byte[] java.security.spec.KeySpec javax.crypto.SecretKeyFactory java.lang.String
StackMap stack:
5: aload 5
ldc "desede"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 22
goto 45
StackMap locals:
StackMap stack:
6: aload 5
ldc "des"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 7
goto 45
7: StackMap locals:
StackMap stack:
new javax.crypto.spec.DESKeySpec
dup
aload 2
iconst_0
invokespecial javax.crypto.spec.DESKeySpec.<init>:([BI)V
astore 3
8: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 48
9: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "makeDesKeys"
10: ldc "DIGEST42:DES key input: "
aload 0
11: invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
12: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "makeDesKeys"
13: ldc "DIGEST43:DES key parity-adjusted: "
aload 2
14: invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
15: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "makeDesKeys"
16: ldc "DIGEST44:DES key material: "
aload 3
checkcast javax.crypto.spec.DESKeySpec
invokevirtual javax.crypto.spec.DESKeySpec.getKey:()[B
17: invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
18: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
ldc "DIGEST45: is parity-adjusted? {0}"
19: aload 2
iconst_0
invokestatic javax.crypto.spec.DESKeySpec.isParityAdjusted:([BI)Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
20: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
21: goto 48
22: StackMap locals:
StackMap stack:
aload 0
bipush 7
bipush 7
invokestatic com.sun.security.sasl.digest.DigestMD5Base.addDesParity:([BII)[B
astore 6
start local 6 23: aload 2
arraylength
iconst_2
imul
aload 6
arraylength
iadd
newarray 8
astore 7
start local 7 24: aload 2
iconst_0
aload 7
iconst_0
aload 2
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
25: aload 6
iconst_0
aload 7
aload 2
arraylength
aload 6
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
26: aload 2
iconst_0
aload 7
aload 2
arraylength
aload 6
arraylength
iadd
27: aload 2
arraylength
28: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
29: new javax.crypto.spec.DESedeKeySpec
dup
aload 7
iconst_0
invokespecial javax.crypto.spec.DESedeKeySpec.<init>:([BI)V
astore 3
30: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 48
31: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "makeDesKeys"
32: ldc "DIGEST46:3DES key input: "
aload 0
33: invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
34: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "makeDesKeys"
35: ldc "DIGEST47:3DES key ede: "
aload 7
36: invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
37: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "makeDesKeys"
38: ldc "DIGEST48:3DES key material: "
39: aload 3
checkcast javax.crypto.spec.DESedeKeySpec
invokevirtual javax.crypto.spec.DESedeKeySpec.getKey:()[B
40: invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
41: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
ldc "DIGEST49: is parity-adjusted? "
42: aload 7
iconst_0
invokestatic javax.crypto.spec.DESedeKeySpec.isParityAdjusted:([BI)Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
43: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
44: goto 48
end local 7 end local 6 45: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Invalid DES strength:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
46: aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
47: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals:
StackMap stack:
aload 4
aload 3
invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 49 0 input [B
0 49 1 desStrength Ljava/lang/String;
1 49 2 subkey1 [B
2 49 3 spec Ljava/security/spec/KeySpec;
4 49 4 desFactory Ljavax/crypto/SecretKeyFactory;
23 45 6 subkey2 [B
24 45 7 ede [B
Exceptions:
throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException, java.security.spec.InvalidKeySpecException
MethodParameters:
Name Flags
input
desStrength
static void access$0(int, byte[], int, int);
descriptor: (I[BII)V
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=4, locals=4, args_size=4
0: iload 0
aload 1
iload 2
iload 3
invokestatic com.sun.security.sasl.digest.DigestMD5Base.intToNetworkByteOrder:(I[BII)V
return
LocalVariableTable:
Start End Slot Name Signature
static java.util.logging.Logger access$1();
descriptor: ()Ljava/util/logging/Logger;
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=0, args_size=0
0: getstatic com.sun.security.sasl.digest.DigestMD5Base.logger:Ljava/util/logging/Logger;
areturn
LocalVariableTable:
Start End Slot Name Signature
static void access$2(java.lang.String, java.lang.String, java.lang.String, byte[]);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=4, locals=4, args_size=4
0: aload 0
aload 1
aload 2
aload 3
invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
return
LocalVariableTable:
Start End Slot Name Signature
static void access$3(java.lang.String, java.lang.String, java.lang.String, byte[], int, int);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BII)V
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=6, locals=6, args_size=6
0: aload 0
aload 1
aload 2
aload 3
iload 4
iload 5
invokestatic com.sun.security.sasl.digest.DigestMD5Base.traceOutput:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BII)V
return
LocalVariableTable:
Start End Slot Name Signature
static int access$4(byte[], int, int);
descriptor: ([BII)I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
iload 1
iload 2
invokestatic com.sun.security.sasl.digest.DigestMD5Base.networkByteOrderToInt:([BII)I
ireturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "DigestMD5Base.java"
NestMembers:
com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy
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