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 // com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy this
        start local 2 // boolean clientMode
         0: .line 1107
            aload 0 /* this */
            aload 1
            putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
         1: .line 1109
            aload 0 /* this */
            aload 1
            iload 2 /* clientMode */
            invokespecial com.sun.security.sasl.digest.DigestMD5Base$DigestIntegrity.<init>:(Lcom/sun/security/sasl/digest/DigestMD5Base;Z)V
         2: .line 1112
            aload 0 /* this */
            iload 2 /* clientMode */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.generatePrivacyKeyPair:(Z)V
         3: .line 1114
            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 /* e */
        start local 3 // javax.security.sasl.SaslException e
         5: .line 1115
            aload 3 /* e */
            athrow
        end local 3 // javax.security.sasl.SaslException e
         6: .line 1116
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
         7: .line 1117
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Error accessing buffers required to generate cipher keys"
         8: .line 1118
            aload 3 /* e */
         9: .line 1117
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.IOException e
        10: .line 1119
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 3 /* e */
        start local 3 // java.security.NoSuchAlgorithmException e
        11: .line 1120
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Error creating instance of required cipher or digest"
        12: .line 1121
            aload 3 /* e */
        13: .line 1120
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.NoSuchAlgorithmException e
        14: .line 1123
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean clientMode
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy this
      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 // com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy this
        start local 1 // boolean clientMode
         0: .line 1139
            ldc "Digest H(A1) to client-to-server sealing key magic constant"
            aload 0 /* this */
            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 /* ccmagic */
        start local 2 // byte[] ccmagic
         1: .line 1140
            ldc "Digest H(A1) to server-to-client sealing key magic constant"
            aload 0 /* this */
            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 /* scmagic */
        start local 3 // byte[] scmagic
         2: .line 1143
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 4 /* md5 */
        start local 4 // java.security.MessageDigest md5
         3: .line 1146
            aload 0 /* this */
            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: .line 1147
            iconst_5
            istore 5 /* n */
        start local 5 // int n
         5: .line 1148
            goto 10
        end local 5 // int n
      StackMap locals: byte[] byte[] java.security.MessageDigest
      StackMap stack:
         6: aload 0 /* this */
            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: .line 1149
            bipush 7
            istore 5 /* n */
        start local 5 // int n
         8: .line 1150
            goto 10
        end local 5 // int n
         9: .line 1151
      StackMap locals:
      StackMap stack:
            bipush 16
            istore 5 /* n */
        start local 5 // int n
        10: .line 1156
      StackMap locals: int
      StackMap stack:
            iload 5 /* n */
            aload 2 /* ccmagic */
            arraylength
            iadd
            newarray 8
            astore 6 /* keyBuffer */
        start local 6 // byte[] keyBuffer
        11: .line 1157
            aload 0 /* this */
            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 /* keyBuffer */
            iconst_0
            iload 5 /* n */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        12: .line 1160
            aload 2 /* ccmagic */
            iconst_0
            aload 6 /* keyBuffer */
            iload 5 /* n */
            aload 2 /* ccmagic */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        13: .line 1161
            aload 4 /* md5 */
            aload 6 /* keyBuffer */
            invokevirtual java.security.MessageDigest.update:([B)V
        14: .line 1162
            aload 4 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 7 /* Kcc */
        start local 7 // byte[] Kcc
        15: .line 1166
            aload 3 /* scmagic */
            iconst_0
            aload 6 /* keyBuffer */
            iload 5 /* n */
            aload 3 /* scmagic */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        16: .line 1167
            aload 4 /* md5 */
            aload 6 /* keyBuffer */
            invokevirtual java.security.MessageDigest.update:([B)V
        17: .line 1168
            aload 4 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 8 /* Kcs */
        start local 8 // byte[] Kcs
        18: .line 1170
            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: .line 1171
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        20: .line 1172
            ldc "DIGEST24:Kcc: "
            aload 7 /* Kcc */
        21: .line 1171
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        22: .line 1173
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        23: .line 1174
            ldc "DIGEST25:Kcs: "
            aload 8 /* Kcs */
        24: .line 1173
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        25: .line 1180
      StackMap locals: byte[] byte[] byte[]
      StackMap stack:
            iload 1 /* clientMode */
            ifeq 29
        26: .line 1181
            aload 7 /* Kcc */
            astore 9 /* myKc */
        start local 9 // byte[] myKc
        27: .line 1182
            aload 8 /* Kcs */
            astore 10 /* peerKc */
        start local 10 // byte[] peerKc
        28: .line 1183
            goto 31
        end local 10 // byte[] peerKc
        end local 9 // byte[] myKc
        29: .line 1184
      StackMap locals:
      StackMap stack:
            aload 8 /* Kcs */
            astore 9 /* myKc */
        start local 9 // byte[] myKc
        30: .line 1185
            aload 7 /* Kcc */
            astore 10 /* peerKc */
        start local 10 // byte[] peerKc
        31: .line 1193
      StackMap locals: byte[] byte[]
      StackMap stack:
            aload 0 /* this */
            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: .line 1194
            aload 0 /* this */
            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: .line 1195
            aload 0 /* this */
            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: .line 1197
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 9 /* myKc */
            ldc "RC4"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 11 /* encKey */
        start local 11 // javax.crypto.SecretKey encKey
        35: .line 1198
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 10 /* peerKc */
            ldc "RC4"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 12 /* decKey */
        start local 12 // javax.crypto.SecretKey decKey
        36: .line 1200
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
            iconst_1
            aload 11 /* encKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        37: .line 1201
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
            iconst_2
            aload 12 /* decKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
        38: .line 1203
            goto 89
        end local 12 // javax.crypto.SecretKey decKey
        end local 11 // javax.crypto.SecretKey encKey
      StackMap locals:
      StackMap stack:
        39: aload 0 /* this */
            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: .line 1204
            aload 0 /* this */
            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: .line 1212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            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: .line 1213
            ldc "DES/CBC/NoPadding"
            astore 13 /* cipherFullname */
        start local 13 // java.lang.String cipherFullname
        43: .line 1214
            ldc "des"
            astore 14 /* cipherShortname */
        start local 14 // java.lang.String cipherShortname
        44: .line 1215
            goto 47
        end local 14 // java.lang.String cipherShortname
        end local 13 // java.lang.String cipherFullname
        45: .line 1217
      StackMap locals:
      StackMap stack:
            ldc "DESede/CBC/NoPadding"
            astore 13 /* cipherFullname */
        start local 13 // java.lang.String cipherFullname
        46: .line 1218
            ldc "desede"
            astore 14 /* cipherShortname */
        start local 14 // java.lang.String cipherShortname
        47: .line 1221
      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 /* this */
            aload 13 /* cipherFullname */
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
        48: .line 1222
            aload 0 /* this */
            aload 13 /* cipherFullname */
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
        49: .line 1224
            aload 9 /* myKc */
            aload 14 /* cipherShortname */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.makeDesKeys:([BLjava/lang/String;)Ljavax/crypto/SecretKey;
            astore 11 /* encKey */
        start local 11 // javax.crypto.SecretKey encKey
        50: .line 1225
            aload 10 /* peerKc */
            aload 14 /* cipherShortname */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.makeDesKeys:([BLjava/lang/String;)Ljavax/crypto/SecretKey;
            astore 12 /* decKey */
        start local 12 // javax.crypto.SecretKey decKey
        51: .line 1228
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 9 /* myKc */
            bipush 8
            bipush 8
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
            astore 15 /* encIv */
        start local 15 // javax.crypto.spec.IvParameterSpec encIv
        52: .line 1229
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 10 /* peerKc */
            bipush 8
            bipush 8
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([BII)V
            astore 16 /* decIv */
        start local 16 // javax.crypto.spec.IvParameterSpec decIv
        53: .line 1232
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
            iconst_1
            aload 11 /* encKey */
            aload 15 /* encIv */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
        54: .line 1233
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
            iconst_2
            aload 12 /* decKey */
            aload 16 /* decIv */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
        55: .line 1235
            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: .line 1236
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        57: .line 1237
            new java.lang.StringBuilder
            dup
            ldc "DIGEST26:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            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: .line 1238
            aload 15 /* encIv */
            invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
        59: .line 1236
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        60: .line 1239
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        61: .line 1240
            new java.lang.StringBuilder
            dup
            ldc "DIGEST27:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            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: .line 1241
            aload 16 /* decIv */
            invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
        63: .line 1239
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        64: .line 1242
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        65: .line 1243
            new java.lang.StringBuilder
            dup
            ldc "DIGEST28:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            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: .line 1244
            aload 11 /* encKey */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
        67: .line 1242
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        68: .line 1245
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        69: .line 1246
            new java.lang.StringBuilder
            dup
            ldc "DIGEST29:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            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: .line 1247
            aload 12 /* decKey */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
        71: .line 1245
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        end local 16 // javax.crypto.spec.IvParameterSpec decIv
        end local 15 // javax.crypto.spec.IvParameterSpec encIv
        end local 14 // java.lang.String cipherShortname
        end local 13 // java.lang.String cipherFullname
        end local 12 // javax.crypto.SecretKey decKey
        end local 11 // javax.crypto.SecretKey encKey
        72: .line 1250
            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 /* e */
        start local 11 // java.security.spec.InvalidKeySpecException e
        74: .line 1251
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Unsupported key specification used."
        75: .line 1252
            aload 11 /* e */
        76: .line 1251
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.security.spec.InvalidKeySpecException e
        77: .line 1253
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
            astore 11 /* e */
        start local 11 // java.security.InvalidAlgorithmParameterException e
        78: .line 1254
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Invalid cipher algorithem parameter used to create cipher instance"
        79: .line 1255
            aload 11 /* e */
        80: .line 1254
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.security.InvalidAlgorithmParameterException e
        81: .line 1256
      StackMap locals:
      StackMap stack: javax.crypto.NoSuchPaddingException
            astore 11 /* e */
        start local 11 // javax.crypto.NoSuchPaddingException e
        82: .line 1257
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Unsupported padding used for chosen cipher"
        83: .line 1258
            aload 11 /* e */
        84: .line 1257
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // javax.crypto.NoSuchPaddingException e
        85: .line 1259
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            astore 11 /* e */
        start local 11 // java.security.InvalidKeyException e
        86: .line 1260
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Invalid data used to initialize keys"
        87: .line 1261
            aload 11 /* e */
        88: .line 1260
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.security.InvalidKeyException e
        89: .line 1263
      StackMap locals:
      StackMap stack:
            return
        end local 10 // byte[] peerKc
        end local 9 // byte[] myKc
        end local 8 // byte[] Kcs
        end local 7 // byte[] Kcc
        end local 6 // byte[] keyBuffer
        end local 5 // int n
        end local 4 // java.security.MessageDigest md5
        end local 3 // byte[] scmagic
        end local 2 // byte[] ccmagic
        end local 1 // boolean clientMode
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy this
      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 // com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy this
        start local 1 // byte[] outgoing
        start local 2 // int start
        start local 3 // int len
         0: .line 1283
            iload 3 /* len */
            ifne 2
         1: .line 1284
            getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
            areturn
         2: .line 1288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.incrementSeqNum:()V
         3: .line 1289
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.myKi:[B
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.sequenceNum:[B
            aload 1 /* outgoing */
            iload 2 /* start */
            iload 3 /* len */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.getHMAC:([B[B[BII)[B
            astore 4 /* mac */
        start local 4 // byte[] mac
         4: .line 1291
            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: .line 1292
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "wrap"
            ldc "DIGEST30:Outgoing: "
         6: .line 1293
            aload 1 /* outgoing */
            iload 2 /* start */
            iload 3 /* len */
         7: .line 1292
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$3:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BII)V
         8: .line 1294
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "wrap"
            ldc "seqNum: "
         9: .line 1295
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.sequenceNum:[B
        10: .line 1294
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        11: .line 1296
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "wrap"
            ldc "MAC: "
            aload 4 /* mac */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        12: .line 1300
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
            invokevirtual javax.crypto.Cipher.getBlockSize:()I
            istore 5 /* bs */
        start local 5 // int bs
        13: .line 1302
            iload 5 /* bs */
            iconst_1
            if_icmple 22
        14: .line 1303
            iload 5 /* bs */
            iload 3 /* len */
            bipush 10
            iadd
            iload 5 /* bs */
            irem
            isub
            istore 7 /* pad */
        start local 7 // int pad
        15: .line 1304
            iload 7 /* pad */
            newarray 8
            astore 6 /* padding */
        start local 6 // byte[] padding
        16: .line 1305
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        17: goto 20
        18: .line 1306
      StackMap locals: com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy byte[] int int byte[] int byte[] int int
      StackMap stack:
            aload 6 /* padding */
            iload 8 /* i */
            iload 7 /* pad */
            i2b
            bastore
        19: .line 1305
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 8 /* i */
            iload 7 /* pad */
            if_icmplt 18
        end local 8 // int i
        end local 7 // int pad
        21: .line 1308
            goto 23
        end local 6 // byte[] padding
        22: .line 1309
      StackMap locals:
      StackMap stack:
            getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
            astore 6 /* padding */
        start local 6 // byte[] padding
        23: .line 1312
      StackMap locals: byte[]
      StackMap stack:
            iload 3 /* len */
            aload 6 /* padding */
            arraylength
            iadd
            bipush 10
            iadd
            newarray 8
            astore 7 /* toBeEncrypted */
        start local 7 // byte[] toBeEncrypted
        24: .line 1315
            aload 1 /* outgoing */
            iload 2 /* start */
            aload 7 /* toBeEncrypted */
            iconst_0
            iload 3 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        25: .line 1316
            aload 6 /* padding */
            iconst_0
            aload 7 /* toBeEncrypted */
            iload 3 /* len */
            aload 6 /* padding */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        26: .line 1317
            aload 4 /* mac */
            iconst_0
            aload 7 /* toBeEncrypted */
            iload 3 /* len */
            aload 6 /* padding */
            arraylength
            iadd
            bipush 10
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        27: .line 1319
            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: .line 1320
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "wrap"
        29: .line 1321
            ldc "DIGEST31:{msg, pad, KicMAC}: "
            aload 7 /* toBeEncrypted */
        30: .line 1320
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        31: .line 1328
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.encCipher:Ljavax/crypto/Cipher;
            aload 7 /* toBeEncrypted */
            invokevirtual javax.crypto.Cipher.update:([B)[B
            astore 8 /* cipherBlock */
        start local 8 // byte[] cipherBlock
        32: .line 1330
            aload 8 /* cipherBlock */
            ifnonnull 38
        33: .line 1332
            new javax.crypto.IllegalBlockSizeException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 7 /* toBeEncrypted */
            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 // byte[] cipherBlock
        34: .line 1334
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            astore 9 /* e */
        start local 9 // javax.crypto.IllegalBlockSizeException e
        35: .line 1335
            new javax.security.sasl.SaslException
            dup
        36: .line 1336
            ldc "DIGEST-MD5: Invalid block size for cipher"
            aload 9 /* e */
        37: .line 1335
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 9 // javax.crypto.IllegalBlockSizeException e
        start local 8 // byte[] cipherBlock
        38: .line 1339
      StackMap locals: byte[]
      StackMap stack:
            aload 8 /* cipherBlock */
            arraylength
            iconst_2
            iadd
            iconst_4
            iadd
            newarray 8
            astore 9 /* wrapped */
        start local 9 // byte[] wrapped
        39: .line 1340
            aload 8 /* cipherBlock */
            iconst_0
            aload 9 /* wrapped */
            iconst_0
            aload 8 /* cipherBlock */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        40: .line 1341
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.messageType:[B
            iconst_0
            aload 9 /* wrapped */
            aload 8 /* cipherBlock */
            arraylength
            iconst_2
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        41: .line 1342
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.sequenceNum:[B
            iconst_0
            aload 9 /* wrapped */
            aload 8 /* cipherBlock */
            arraylength
            iconst_2
            iadd
            iconst_4
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        42: .line 1344
            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: .line 1345
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "wrap"
            ldc "DIGEST32:Wrapped: "
            aload 9 /* wrapped */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        44: .line 1348
      StackMap locals: byte[]
      StackMap stack:
            aload 9 /* wrapped */
            areturn
        end local 9 // byte[] wrapped
        end local 8 // byte[] cipherBlock
        end local 7 // byte[] toBeEncrypted
        end local 6 // byte[] padding
        end local 5 // int bs
        end local 4 // byte[] mac
        end local 3 // int len
        end local 2 // int start
        end local 1 // byte[] outgoing
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy this
      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 // com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy this
        start local 1 // byte[] incoming
        start local 2 // int start
        start local 3 // int len
         0: .line 1368
            iload 3 /* len */
            ifne 2
         1: .line 1369
            getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
            areturn
         2: .line 1372
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            bipush 6
            isub
            newarray 8
            astore 4 /* encryptedMsg */
        start local 4 // byte[] encryptedMsg
         3: .line 1373
            iconst_2
            newarray 8
            astore 5 /* msgType */
        start local 5 // byte[] msgType
         4: .line 1374
            iconst_4
            newarray 8
            astore 6 /* seqNum */
        start local 6 // byte[] seqNum
         5: .line 1377
            aload 1 /* incoming */
            iload 2 /* start */
         6: .line 1378
            aload 4 /* encryptedMsg */
            iconst_0
            aload 4 /* encryptedMsg */
            arraylength
         7: .line 1377
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 1379
            aload 1 /* incoming */
            iload 2 /* start */
            aload 4 /* encryptedMsg */
            arraylength
            iadd
         9: .line 1380
            aload 5 /* msgType */
            iconst_0
            iconst_2
        10: .line 1379
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 1381
            aload 1 /* incoming */
            iload 2 /* start */
            aload 4 /* encryptedMsg */
            arraylength
            iadd
            iconst_2
            iadd
        12: .line 1382
            aload 6 /* seqNum */
            iconst_0
            iconst_4
        13: .line 1381
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        14: .line 1384
            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: .line 1385
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINEST:Ljava/util/logging/Level;
        16: .line 1386
            ldc "DIGEST33:Expecting sequence num: {0}"
        17: .line 1387
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerSeqNum:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        18: .line 1385
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        19: .line 1388
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
            ldc "DIGEST34:incoming: "
        20: .line 1389
            aload 4 /* encryptedMsg */
        21: .line 1388
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        22: .line 1398
      StackMap locals: byte[] byte[] byte[]
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
            aload 4 /* encryptedMsg */
            invokevirtual javax.crypto.Cipher.update:([B)[B
            astore 7 /* decryptedMsg */
        start local 7 // byte[] decryptedMsg
        23: .line 1400
            aload 7 /* decryptedMsg */
            ifnonnull 29
        24: .line 1402
            new javax.crypto.IllegalBlockSizeException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 4 /* encryptedMsg */
            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 // byte[] decryptedMsg
        25: .line 1404
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            astore 8 /* e */
        start local 8 // javax.crypto.IllegalBlockSizeException e
        26: .line 1405
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Illegal block sizes used with chosen cipher"
        27: .line 1406
            aload 8 /* e */
        28: .line 1405
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 8 // javax.crypto.IllegalBlockSizeException e
        start local 7 // byte[] decryptedMsg
        29: .line 1409
      StackMap locals: byte[]
      StackMap stack:
            aload 7 /* decryptedMsg */
            arraylength
            bipush 10
            isub
            newarray 8
            astore 8 /* msgWithPadding */
        start local 8 // byte[] msgWithPadding
        30: .line 1410
            bipush 10
            newarray 8
            astore 9 /* mac */
        start local 9 // byte[] mac
        31: .line 1412
            aload 7 /* decryptedMsg */
            iconst_0
        32: .line 1413
            aload 8 /* msgWithPadding */
            iconst_0
            aload 8 /* msgWithPadding */
            arraylength
        33: .line 1412
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        34: .line 1414
            aload 7 /* decryptedMsg */
            aload 8 /* msgWithPadding */
            arraylength
        35: .line 1415
            aload 9 /* mac */
            iconst_0
            bipush 10
        36: .line 1414
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        37: .line 1417
            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: .line 1418
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
        39: .line 1419
            ldc "DIGEST35:Unwrapped (w/padding): "
            aload 8 /* msgWithPadding */
        40: .line 1418
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        41: .line 1420
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
            ldc "DIGEST36:MAC: "
            aload 9 /* mac */
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        42: .line 1421
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
            ldc "DIGEST37:messageType: "
        43: .line 1422
            aload 5 /* msgType */
        44: .line 1421
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        45: .line 1423
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
            ldc "DIGEST38:sequenceNum: "
        46: .line 1424
            aload 6 /* seqNum */
        47: .line 1423
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        48: .line 1427
      StackMap locals: byte[] byte[]
      StackMap stack:
            aload 8 /* msgWithPadding */
            arraylength
            istore 10 /* msgLength */
        start local 10 // int msgLength
        49: .line 1428
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.decCipher:Ljavax/crypto/Cipher;
            invokevirtual javax.crypto.Cipher.getBlockSize:()I
            istore 11 /* blockSize */
        start local 11 // int blockSize
        50: .line 1429
            iload 11 /* blockSize */
            iconst_1
            if_icmple 59
        51: .line 1431
            iload 10 /* msgLength */
            aload 8 /* msgWithPadding */
            aload 8 /* msgWithPadding */
            arraylength
            iconst_1
            isub
            baload
            isub
            istore 10 /* msgLength */
        52: .line 1432
            iload 10 /* msgLength */
            ifge 59
        53: .line 1434
            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: .line 1435
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$1:()Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.INFO:Ljava/util/logging/Level;
        55: .line 1436
            ldc "DIGEST39:Incorrect padding: {0}"
        56: .line 1437
            aload 8 /* msgWithPadding */
            aload 8 /* msgWithPadding */
            arraylength
            iconst_1
            isub
            baload
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
        57: .line 1435
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        58: .line 1439
      StackMap locals: int int
      StackMap stack:
            getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
            areturn
        59: .line 1444
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerKi:[B
            aload 6 /* seqNum */
            aload 8 /* msgWithPadding */
        60: .line 1445
            iconst_0
            iload 10 /* msgLength */
        61: .line 1444
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.getHMAC:([B[B[BII)[B
            astore 12 /* expectedMac */
        start local 12 // byte[] expectedMac
        62: .line 1447
            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: .line 1448
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
            ldc "DIGEST40:KisMAC: "
        64: .line 1449
            aload 12 /* expectedMac */
        65: .line 1448
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        66: .line 1453
      StackMap locals: byte[]
      StackMap stack:
            aload 9 /* mac */
            aload 12 /* expectedMac */
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifne 69
        67: .line 1455
            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: .line 1456
            getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
            areturn
        69: .line 1460
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerSeqNum:I
            aload 6 /* seqNum */
            iconst_0
            iconst_4
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$4:([BII)I
            if_icmpeq 74
        70: .line 1461
            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: .line 1463
            aload 6 /* seqNum */
            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: .line 1464
            aload 0 /* this */
            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: .line 1461
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        74: .line 1468
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.messageType:[B
            aload 5 /* msgType */
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifne 78
        75: .line 1469
            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: .line 1470
            aload 5 /* msgType */
            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: .line 1469
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        78: .line 1474
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            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: .line 1476
            iload 10 /* msgLength */
            aload 8 /* msgWithPadding */
            arraylength
            if_icmpne 81
        80: .line 1477
            aload 8 /* msgWithPadding */
            areturn
        81: .line 1480
      StackMap locals:
      StackMap stack:
            iload 10 /* msgLength */
            newarray 8
            astore 13 /* clearMsg */
        start local 13 // byte[] clearMsg
        82: .line 1481
            aload 8 /* msgWithPadding */
            iconst_0
            aload 13 /* clearMsg */
            iconst_0
            iload 10 /* msgLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        83: .line 1482
            aload 13 /* clearMsg */
            areturn
        end local 13 // byte[] clearMsg
        end local 12 // byte[] expectedMac
        end local 11 // int blockSize
        end local 10 // int msgLength
        end local 9 // byte[] mac
        end local 8 // byte[] msgWithPadding
        end local 7 // byte[] decryptedMsg
        end local 6 // byte[] seqNum
        end local 5 // byte[] msgType
        end local 4 // byte[] encryptedMsg
        end local 3 // int len
        end local 2 // int start
        end local 1 // byte[] incoming
        end local 0 // com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy this
      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