final class com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy extends com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity implements com.sun.security.sasl.digest.SecurityCtx
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy
super_class: com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity
{
private static final java.lang.String CLIENT_CONF_MAGIC;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "Digest H(A1) to client-to-server sealing key magic constant"
private static final java.lang.String SVR_CONF_MAGIC;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "Digest H(A1) to server-to-client sealing key magic constant"
private javax.crypto.Cipher encCipher;
descriptor: Ljavax/crypto/Cipher;
flags: (0x0002) ACC_PRIVATE
private javax.crypto.Cipher decCipher;
descriptor: Ljavax/crypto/Cipher;
flags: (0x0002) ACC_PRIVATE
final com.sun.security.sasl.digest.DigestMD5Base this$0;
descriptor: Lcom/sun/security/sasl/digest/DigestMD5Base;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(com.sun.security.sasl.digest.DigestMD5Base, boolean);
descriptor: (Lcom/sun/security/sasl/digest/DigestMD5Base;Z)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=3
start local 0 start local 2 0: aload 0
aload 1
putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
1: aload 0
aload 1
iload 2
invokespecial com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity.<init>:(Lcom/sun/security/sasl/digest/DigestMD5Base;Z)V
2: aload 0
iload 2
invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.generatePrivacyKeyPair:(Z)V
3: goto 14
StackMap locals: com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy com.sun.security.sasl.digest.DigestMD5Base int
StackMap stack: javax.security.sasl.SaslException
4: astore 3
start local 3 5: aload 3
athrow
end local 3 6: StackMap locals:
StackMap stack: java.io.IOException
astore 3
start local 3 7: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Error accessing buffers required to generate cipher keys"
8: aload 3
9: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 3 10: StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
astore 3
start local 3 11: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Error creating instance of required cipher or digest"
12: aload 3
13: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 3 14: StackMap locals:
StackMap stack:
return
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/sun/security/sasl/digest/DigestMD5Base$DigestPrivacy;
0 15 2 clientMode Z
5 6 3 e Ljavax/security/sasl/SaslException;
7 10 3 e Ljava/io/IOException;
11 14 3 e Ljava/security/NoSuchAlgorithmException;
Exception table:
from to target type
2 3 4 Class javax.security.sasl.SaslException
2 3 6 Class java.io.IOException
2 3 10 Class java.security.NoSuchAlgorithmException
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
this$0 final
clientMode
private void generatePrivacyKeyPair(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=17, args_size=2
start local 0 start local 1 0: ldc "Digest H(A1) to client-to-server sealing key magic constant"
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
astore 2
start local 2 1: ldc "Digest H(A1) to server-to-client sealing key magic constant"
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.encoding:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
astore 3
start local 3 2: ldc "MD5"
invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
astore 4
start local 4 3: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
iconst_4
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 6
4: iconst_5
istore 5
start local 5 5: goto 10
end local 5 StackMap locals: byte[] byte[] java.security.MessageDigest
StackMap stack:
6: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
iconst_3
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 9
7: bipush 7
istore 5
start local 5 8: goto 10
end local 5 9: StackMap locals:
StackMap stack:
bipush 16
istore 5
start local 5 10: StackMap locals: int
StackMap stack:
iload 5
aload 2
arraylength
iadd
newarray 8
astore 6
start local 6 11: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.H_A1:[B
iconst_0
aload 6
iconst_0
iload 5
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
12: aload 2
iconst_0
aload 6
iload 5
aload 2
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
13: aload 4
aload 6
invokevirtual java.security.MessageDigest.update:([B)V
14: aload 4
invokevirtual java.security.MessageDigest.digest:()[B
astore 7
start local 7 15: aload 3
iconst_0
aload 6
iload 5
aload 3
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
16: aload 4
aload 6
invokevirtual java.security.MessageDigest.update:([B)V
17: aload 4
invokevirtual java.security.MessageDigest.digest:()[B
astore 8
start local 8 18: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 25
19: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "generatePrivacyKeyPair"
20: ldc "DIGEST24:Kcc: "
aload 7
21: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
22: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "generatePrivacyKeyPair"
23: ldc "DIGEST25:Kcs: "
aload 8
24: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
25: StackMap locals: byte[] byte[] byte[]
StackMap stack:
iload 1
ifeq 29
26: aload 7
astore 9
start local 9 27: aload 8
astore 10
start local 10 28: goto 31
end local 10 end local 9 29: StackMap locals:
StackMap stack:
aload 8
astore 9
start local 9 30: aload 7
astore 10
start local 10 31: StackMap locals: byte[] byte[]
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
iconst_1
aaload
invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
iconst_m1
if_icmple 39
32: aload 0
ldc "RC4"
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
33: aload 0
ldc "RC4"
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
34: new javax.crypto.spec.SecretKeySpec
dup
aload 9
ldc "RC4"
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 11
start local 11 35: new javax.crypto.spec.SecretKeySpec
dup
aload 10
ldc "RC4"
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 12
start local 12 36: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
iconst_1
aload 11
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
37: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
iconst_2
aload 12
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
38: goto 89
end local 12 end local 11 StackMap locals:
StackMap stack:
39: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
iconst_2
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 41
40: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
iconst_0
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 89
41: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
getstatic com.sun.security.sasl.digest.DigestMD5Base.CIPHER_TOKENS:[Ljava/lang/String;
iconst_2
aaload
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 45
42: ldc "DES/CBC/NoPadding"
astore 13
start local 13 43: ldc "des"
astore 14
start local 14 44: goto 47
end local 14 end local 13 45: StackMap locals:
StackMap stack:
ldc "DESede/CBC/NoPadding"
astore 13
start local 13 46: ldc "desede"
astore 14
start local 14 47: StackMap locals: com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy int byte[] byte[] java.security.MessageDigest int byte[] byte[] byte[] byte[] byte[] top top java.lang.String java.lang.String
StackMap stack:
aload 0
aload 13
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
48: aload 0
aload 13
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
49: aload 9
aload 14
invokestatic com.sun.security.sasl.digest.DigestMD5Base.makeDesKeys:([BLjava/lang/String;)Ljavax/crypto/SecretKey;
astore 11
start local 11 50: aload 10
aload 14
invokestatic com.sun.security.sasl.digest.DigestMD5Base.makeDesKeys:([BLjava/lang/String;)Ljavax/crypto/SecretKey;
astore 12
start local 12 51: new javax.crypto.spec.IvParameterSpec
dup
aload 9
bipush 8
bipush 8
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
astore 15
start local 15 52: new javax.crypto.spec.IvParameterSpec
dup
aload 10
bipush 8
bipush 8
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
astore 16
start local 16 53: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
iconst_1
aload 11
aload 15
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
54: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
iconst_2
aload 12
aload 16
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
55: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 89
56: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "generatePrivacyKeyPair"
57: new java.lang.StringBuilder
dup
ldc "DIGEST26:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " IVcc: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
58: aload 15
invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
59: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
60: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "generatePrivacyKeyPair"
61: new java.lang.StringBuilder
dup
ldc "DIGEST27:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " IVcs: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
62: aload 16
invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
63: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
64: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "generatePrivacyKeyPair"
65: new java.lang.StringBuilder
dup
ldc "DIGEST28:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " encryption key: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
66: aload 11
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
67: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
68: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "generatePrivacyKeyPair"
69: new java.lang.StringBuilder
dup
ldc "DIGEST29:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
getfield com.sun.security.sasl.digest.DigestMD5Base.negotiatedCipher:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " decryption key: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
70: aload 12
invokeinterface javax.crypto.SecretKey.getEncoded:()[B
71: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 72: goto 89
StackMap locals: com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy int byte[] byte[] java.security.MessageDigest int byte[] byte[] byte[] byte[] byte[]
StackMap stack: java.security.spec.InvalidKeySpecException
73: astore 11
start local 11 74: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Unsupported key specification used."
75: aload 11
76: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 11 77: StackMap locals:
StackMap stack: java.security.InvalidAlgorithmParameterException
astore 11
start local 11 78: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Invalid cipher algorithem parameter used to create cipher instance"
79: aload 11
80: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 11 81: StackMap locals:
StackMap stack: javax.crypto.NoSuchPaddingException
astore 11
start local 11 82: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Unsupported padding used for chosen cipher"
83: aload 11
84: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 11 85: StackMap locals:
StackMap stack: java.security.InvalidKeyException
astore 11
start local 11 86: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Invalid data used to initialize keys"
87: aload 11
88: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 11 89: StackMap locals:
StackMap stack:
return
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 90 0 this Lcom/sun/security/sasl/digest/DigestMD5Base$DigestPrivacy;
0 90 1 clientMode Z
1 90 2 ccmagic [B
2 90 3 scmagic [B
3 90 4 md5 Ljava/security/MessageDigest;
5 6 5 n I
8 9 5 n I
10 90 5 n I
11 90 6 keyBuffer [B
15 90 7 Kcc [B
18 90 8 Kcs [B
27 29 9 myKc [B
30 90 9 myKc [B
28 29 10 peerKc [B
31 90 10 peerKc [B
35 39 11 encKey Ljavax/crypto/SecretKey;
50 72 11 encKey Ljavax/crypto/SecretKey;
36 39 12 decKey Ljavax/crypto/SecretKey;
51 72 12 decKey Ljavax/crypto/SecretKey;
43 45 13 cipherFullname Ljava/lang/String;
46 72 13 cipherFullname Ljava/lang/String;
44 45 14 cipherShortname Ljava/lang/String;
47 72 14 cipherShortname Ljava/lang/String;
52 72 15 encIv Ljavax/crypto/spec/IvParameterSpec;
53 72 16 decIv Ljavax/crypto/spec/IvParameterSpec;
74 77 11 e Ljava/security/spec/InvalidKeySpecException;
78 81 11 e Ljava/security/InvalidAlgorithmParameterException;
82 85 11 e Ljavax/crypto/NoSuchPaddingException;
86 89 11 e Ljava/security/InvalidKeyException;
Exception table:
from to target type
31 72 73 Class java.security.spec.InvalidKeySpecException
31 72 77 Class java.security.InvalidAlgorithmParameterException
31 72 81 Class javax.crypto.NoSuchPaddingException
31 72 85 Class java.security.InvalidKeyException
Exceptions:
throws java.io.IOException, java.security.NoSuchAlgorithmException, javax.security.sasl.SaslException
MethodParameters:
Name Flags
clientMode
public byte[] wrap(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
ifne 2
1: getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
areturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.incrementSeqNum:()V
3: aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.myKi:[B
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.sequenceNum:[B
aload 1
iload 2
iload 3
invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.getHMAC:([B[B[BII)[B
astore 4
start local 4 4: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()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 12
5: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "wrap"
ldc "DIGEST30:Outgoing: "
6: aload 1
iload 2
iload 3
7: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$3:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BII)V
8: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "wrap"
ldc "seqNum: "
9: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.sequenceNum:[B
10: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
11: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "wrap"
ldc "MAC: "
aload 4
invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
12: StackMap locals: byte[]
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 5
start local 5 13: iload 5
iconst_1
if_icmple 22
14: iload 5
iload 3
bipush 10
iadd
iload 5
irem
isub
istore 7
start local 7 15: iload 7
newarray 8
astore 6
start local 6 16: iconst_0
istore 8
start local 8 17: goto 20
18: StackMap locals: com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy byte[] int int byte[] int byte[] int int
StackMap stack:
aload 6
iload 8
iload 7
i2b
bastore
19: iinc 8 1
StackMap locals:
StackMap stack:
20: iload 8
iload 7
if_icmplt 18
end local 8 end local 7 21: goto 23
end local 6 22: StackMap locals:
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
astore 6
start local 6 23: StackMap locals: byte[]
StackMap stack:
iload 3
aload 6
arraylength
iadd
bipush 10
iadd
newarray 8
astore 7
start local 7 24: aload 1
iload 2
aload 7
iconst_0
iload 3
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
25: aload 6
iconst_0
aload 7
iload 3
aload 6
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
26: aload 4
iconst_0
aload 7
iload 3
aload 6
arraylength
iadd
bipush 10
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
27: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()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 31
28: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "wrap"
29: ldc "DIGEST31:{msg, pad, KicMAC}: "
aload 7
30: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
31: StackMap locals: byte[]
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
aload 7
invokevirtual javax.crypto.Cipher.update:([B)[B
astore 8
start local 8 32: aload 8
ifnonnull 38
33: new javax.crypto.IllegalBlockSizeException
dup
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
aload 7
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.crypto.IllegalBlockSizeException.<init>:(Ljava/lang/String;)V
athrow
end local 8 34: StackMap locals:
StackMap stack: javax.crypto.IllegalBlockSizeException
astore 9
start local 9 35: new javax.security.sasl.SaslException
dup
36: ldc "DIGEST-MD5: Invalid block size for cipher"
aload 9
37: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 9 start local 8 38: StackMap locals: byte[]
StackMap stack:
aload 8
arraylength
iconst_2
iadd
iconst_4
iadd
newarray 8
astore 9
start local 9 39: aload 8
iconst_0
aload 9
iconst_0
aload 8
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
40: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.messageType:[B
iconst_0
aload 9
aload 8
arraylength
iconst_2
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
41: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.sequenceNum:[B
iconst_0
aload 9
aload 8
arraylength
iconst_2
iadd
iconst_4
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
42: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()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 44
43: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "wrap"
ldc "DIGEST32:Wrapped: "
aload 9
invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
44: StackMap locals: byte[]
StackMap stack:
aload 9
areturn
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 45 0 this Lcom/sun/security/sasl/digest/DigestMD5Base$DigestPrivacy;
0 45 1 outgoing [B
0 45 2 start I
0 45 3 len I
4 45 4 mac [B
13 45 5 bs I
16 22 6 padding [B
23 45 6 padding [B
15 21 7 pad I
17 21 8 i I
24 45 7 toBeEncrypted [B
32 34 8 cipherBlock [B
38 45 8 cipherBlock [B
35 38 9 e Ljavax/crypto/IllegalBlockSizeException;
39 45 9 wrapped [B
Exception table:
from to target type
31 34 34 Class javax.crypto.IllegalBlockSizeException
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
outgoing
start
len
public byte[] unwrap(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=14, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
ifne 2
1: getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
areturn
2: StackMap locals:
StackMap stack:
iload 3
bipush 6
isub
newarray 8
astore 4
start local 4 3: iconst_2
newarray 8
astore 5
start local 5 4: iconst_4
newarray 8
astore 6
start local 6 5: aload 1
iload 2
6: aload 4
iconst_0
aload 4
arraylength
7: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
8: aload 1
iload 2
aload 4
arraylength
iadd
9: aload 5
iconst_0
iconst_2
10: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
11: aload 1
iload 2
aload 4
arraylength
iadd
iconst_2
iadd
12: aload 6
iconst_0
iconst_4
13: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
14: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()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 22
15: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
16: ldc "DIGEST33:Expecting sequence num: {0}"
17: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerSeqNum:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
18: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
19: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "unwrap"
ldc "DIGEST34:incoming: "
20: aload 4
21: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
22: StackMap locals: byte[] byte[] byte[]
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
aload 4
invokevirtual javax.crypto.Cipher.update:([B)[B
astore 7
start local 7 23: aload 7
ifnonnull 29
24: new javax.crypto.IllegalBlockSizeException
dup
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
aload 4
arraylength
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.crypto.IllegalBlockSizeException.<init>:(Ljava/lang/String;)V
athrow
end local 7 25: StackMap locals:
StackMap stack: javax.crypto.IllegalBlockSizeException
astore 8
start local 8 26: new javax.security.sasl.SaslException
dup
ldc "DIGEST-MD5: Illegal block sizes used with chosen cipher"
27: aload 8
28: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 8 start local 7 29: StackMap locals: byte[]
StackMap stack:
aload 7
arraylength
bipush 10
isub
newarray 8
astore 8
start local 8 30: bipush 10
newarray 8
astore 9
start local 9 31: aload 7
iconst_0
32: aload 8
iconst_0
aload 8
arraylength
33: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
34: aload 7
aload 8
arraylength
35: aload 9
iconst_0
bipush 10
36: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
37: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()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
38: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "unwrap"
39: ldc "DIGEST35:Unwrapped (w/padding): "
aload 8
40: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
41: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "unwrap"
ldc "DIGEST36:MAC: "
aload 9
invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
42: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "unwrap"
ldc "DIGEST37:messageType: "
43: aload 5
44: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
45: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "unwrap"
ldc "DIGEST38:sequenceNum: "
46: aload 6
47: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
48: StackMap locals: byte[] byte[]
StackMap stack:
aload 8
arraylength
istore 10
start local 10 49: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 11
start local 11 50: iload 11
iconst_1
if_icmple 59
51: iload 10
aload 8
aload 8
arraylength
iconst_1
isub
baload
isub
istore 10
52: iload 10
ifge 59
53: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()Ljava/util/logging/Logger;
getstatic java.util.logging.Level.INFO:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 58
54: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()Ljava/util/logging/Logger;
getstatic java.util.logging.Level.INFO:Ljava/util/logging/Level;
55: ldc "DIGEST39:Incorrect padding: {0}"
56: aload 8
aload 8
arraylength
iconst_1
isub
baload
invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
57: invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
58: StackMap locals: int int
StackMap stack:
getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
areturn
59: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerKi:[B
aload 6
aload 8
60: iconst_0
iload 10
61: invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.getHMAC:([B[B[BII)[B
astore 12
start local 12 62: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()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 66
63: getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
ldc "unwrap"
ldc "DIGEST40:KisMAC: "
64: aload 12
65: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
66: StackMap locals: byte[]
StackMap stack:
aload 9
aload 12
invokestatic java.util.Arrays.equals:([B[B)Z
ifne 69
67: invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()Ljava/util/logging/Logger;
getstatic java.util.logging.Level.INFO:Ljava/util/logging/Level;
ldc "DIGEST41:Unmatched MACs"
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
68: getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
areturn
69: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerSeqNum:I
aload 6
iconst_0
iconst_4
invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$4:([BII)I
if_icmpeq 74
70: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: Out of order sequencing of messages from server. Got: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
71: aload 6
iconst_0
iconst_4
invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$4:([BII)I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " Expected: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
72: aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerSeqNum:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
73: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
74: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.messageType:[B
aload 5
invokestatic java.util.Arrays.equals:([B[B)Z
ifne 78
75: new javax.security.sasl.SaslException
dup
new java.lang.StringBuilder
dup
ldc "DIGEST-MD5: invalid message type: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
76: aload 5
iconst_0
iconst_2
invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$4:([BII)I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
77: invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
athrow
78: StackMap locals:
StackMap stack:
aload 0
dup
getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerSeqNum:I
iconst_1
iadd
putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerSeqNum:I
79: iload 10
aload 8
arraylength
if_icmpne 81
80: aload 8
areturn
81: StackMap locals:
StackMap stack:
iload 10
newarray 8
astore 13
start local 13 82: aload 8
iconst_0
aload 13
iconst_0
iload 10
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
83: aload 13
areturn
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 84 0 this Lcom/sun/security/sasl/digest/DigestMD5Base$DigestPrivacy;
0 84 1 incoming [B
0 84 2 start I
0 84 3 len I
3 84 4 encryptedMsg [B
4 84 5 msgType [B
5 84 6 seqNum [B
23 25 7 decryptedMsg [B
29 84 7 decryptedMsg [B
26 29 8 e Ljavax/crypto/IllegalBlockSizeException;
30 84 8 msgWithPadding [B
31 84 9 mac [B
49 84 10 msgLength I
50 84 11 blockSize I
62 84 12 expectedMac [B
82 84 13 clearMsg [B
Exception table:
from to target type
22 25 25 Class javax.crypto.IllegalBlockSizeException
Exceptions:
throws javax.security.sasl.SaslException
MethodParameters:
Name Flags
incoming
start
len
}
SourceFile: "DigestMD5Base.java"
NestHost: com.sun.security.sasl.digest.DigestMD5Base
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