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 1123
            aload 0 /* this */
            aload 1
            putfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.this$0:Lcom/sun/security/sasl/digest/DigestMD5Base;
         1: .line 1125
            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 1128
            aload 0 /* this */
            iload 2 /* clientMode */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.generatePrivacyKeyPair:(Z)V
         3: .line 1130
            goto 18
      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 1131
            aload 3 /* e */
            athrow
        end local 3 // javax.security.sasl.SaslException e
         6: .line 1133
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
            astore 3 /* e */
        start local 3 // java.io.UnsupportedEncodingException e
         7: .line 1134
            new javax.security.sasl.SaslException
            dup
         8: .line 1135
            ldc "DIGEST-MD5: Error encoding string value into UTF-8"
            aload 3 /* e */
         9: .line 1134
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.UnsupportedEncodingException e
        10: .line 1137
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
        11: .line 1138
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Error accessing buffers required to generate cipher keys"
        12: .line 1139
            aload 3 /* e */
        13: .line 1138
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.IOException e
        14: .line 1140
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 3 /* e */
        start local 3 // java.security.NoSuchAlgorithmException e
        15: .line 1141
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Error creating instance of required cipher or digest"
        16: .line 1142
            aload 3 /* e */
        17: .line 1141
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.NoSuchAlgorithmException e
        18: .line 1144
      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   19     0        this  Lcom/sun/security/sasl/digest/DigestMD5Base$DigestPrivacy;
            0   19     2  clientMode  Z
            5    6     3           e  Ljavax/security/sasl/SaslException;
            7   10     3           e  Ljava/io/UnsupportedEncodingException;
           11   14     3           e  Ljava/io/IOException;
           15   18     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.UnsupportedEncodingException
           2     3      10  Class java.io.IOException
           2     3      14  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 1163
            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/lang/String;
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            astore 2 /* ccmagic */
        start local 2 // byte[] ccmagic
         1: .line 1164
            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/lang/String;
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            astore 3 /* scmagic */
        start local 3 // byte[] scmagic
         2: .line 1167
            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 1170
            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 1171
            iconst_5
            istore 5 /* n */
        start local 5 // int n
         5: .line 1172
            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 1173
            bipush 7
            istore 5 /* n */
        start local 5 // int n
         8: .line 1174
            goto 10
        end local 5 // int n
         9: .line 1175
      StackMap locals:
      StackMap stack:
            bipush 16
            istore 5 /* n */
        start local 5 // int n
        10: .line 1180
      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 1181
            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 1184
            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 1185
            aload 4 /* md5 */
            aload 6 /* keyBuffer */
            invokevirtual java.security.MessageDigest.update:([B)V
        14: .line 1186
            aload 4 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 7 /* Kcc */
        start local 7 // byte[] Kcc
        15: .line 1190
            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 1191
            aload 4 /* md5 */
            aload 6 /* keyBuffer */
            invokevirtual java.security.MessageDigest.update:([B)V
        17: .line 1192
            aload 4 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 8 /* Kcs */
        start local 8 // byte[] Kcs
        18: .line 1194
            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 1195
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        20: .line 1196
            ldc "DIGEST24:Kcc: "
            aload 7 /* Kcc */
        21: .line 1195
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        22: .line 1197
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        23: .line 1198
            ldc "DIGEST25:Kcs: "
            aload 8 /* Kcs */
        24: .line 1197
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        25: .line 1204
      StackMap locals: byte[] byte[] byte[]
      StackMap stack:
            iload 1 /* clientMode */
            ifeq 29
        26: .line 1205
            aload 7 /* Kcc */
            astore 9 /* myKc */
        start local 9 // byte[] myKc
        27: .line 1206
            aload 8 /* Kcs */
            astore 10 /* peerKc */
        start local 10 // byte[] peerKc
        28: .line 1207
            goto 31
        end local 10 // byte[] peerKc
        end local 9 // byte[] myKc
        29: .line 1208
      StackMap locals:
      StackMap stack:
            aload 8 /* Kcs */
            astore 9 /* myKc */
        start local 9 // byte[] myKc
        30: .line 1209
            aload 7 /* Kcc */
            astore 10 /* peerKc */
        start local 10 // byte[] peerKc
        31: .line 1217
      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 1218
            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 1219
            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 1221
            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 1222
            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 1224
            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 1225
            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 1227
            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 1228
            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 1236
      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 1237
            ldc "DES/CBC/NoPadding"
            astore 13 /* cipherFullname */
        start local 13 // java.lang.String cipherFullname
        43: .line 1238
            ldc "des"
            astore 14 /* cipherShortname */
        start local 14 // java.lang.String cipherShortname
        44: .line 1239
            goto 47
        end local 14 // java.lang.String cipherShortname
        end local 13 // java.lang.String cipherFullname
        45: .line 1241
      StackMap locals:
      StackMap stack:
            ldc "DESede/CBC/NoPadding"
            astore 13 /* cipherFullname */
        start local 13 // java.lang.String cipherFullname
        46: .line 1242
            ldc "desede"
            astore 14 /* cipherShortname */
        start local 14 // java.lang.String cipherShortname
        47: .line 1245
      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 1246
            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 1248
            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 1249
            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 1252
            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 1253
            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 1256
            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 1257
            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 1259
            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 1260
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        57: .line 1261
            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 1262
            aload 15 /* encIv */
            invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
        59: .line 1260
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        60: .line 1263
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        61: .line 1264
            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 1265
            aload 16 /* decIv */
            invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
        63: .line 1263
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        64: .line 1266
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        65: .line 1267
            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 1268
            aload 11 /* encKey */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
        67: .line 1266
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        68: .line 1269
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "generatePrivacyKeyPair"
        69: .line 1270
            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 1271
            aload 12 /* decKey */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
        71: .line 1269
            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 1274
            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 1275
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Unsupported key specification used."
        75: .line 1276
            aload 11 /* e */
        76: .line 1275
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.security.spec.InvalidKeySpecException e
        77: .line 1277
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
            astore 11 /* e */
        start local 11 // java.security.InvalidAlgorithmParameterException e
        78: .line 1278
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Invalid cipher algorithem parameter used to create cipher instance"
        79: .line 1279
            aload 11 /* e */
        80: .line 1278
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.security.InvalidAlgorithmParameterException e
        81: .line 1280
      StackMap locals:
      StackMap stack: javax.crypto.NoSuchPaddingException
            astore 11 /* e */
        start local 11 // javax.crypto.NoSuchPaddingException e
        82: .line 1281
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Unsupported padding used for chosen cipher"
        83: .line 1282
            aload 11 /* e */
        84: .line 1281
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // javax.crypto.NoSuchPaddingException e
        85: .line 1283
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            astore 11 /* e */
        start local 11 // java.security.InvalidKeyException e
        86: .line 1284
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Invalid data used to initialize keys"
        87: .line 1285
            aload 11 /* e */
        88: .line 1284
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.security.InvalidKeyException e
        89: .line 1287
      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.io.UnsupportedEncodingException, 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 1307
            iload 3 /* len */
            ifne 2
         1: .line 1308
            getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
            areturn
         2: .line 1312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.incrementSeqNum:()V
         3: .line 1313
            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 1315
            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 1316
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "wrap"
            ldc "DIGEST30:Outgoing: "
         6: .line 1317
            aload 1 /* outgoing */
            iload 2 /* start */
            iload 3 /* len */
         7: .line 1316
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$3:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BII)V
         8: .line 1318
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "wrap"
            ldc "seqNum: "
         9: .line 1319
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.sequenceNum:[B
        10: .line 1318
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        11: .line 1320
            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 1324
      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 1326
            iload 5 /* bs */
            iconst_1
            if_icmple 22
        14: .line 1327
            iload 5 /* bs */
            iload 3 /* len */
            bipush 10
            iadd
            iload 5 /* bs */
            irem
            isub
            istore 7 /* pad */
        start local 7 // int pad
        15: .line 1328
            iload 7 /* pad */
            newarray 8
            astore 6 /* padding */
        start local 6 // byte[] padding
        16: .line 1329
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        17: goto 20
        18: .line 1330
      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 1329
            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 1332
            goto 23
        end local 6 // byte[] padding
        22: .line 1333
      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 1336
      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 1339
            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 1340
            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 1341
            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 1343
            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 1344
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "wrap"
        29: .line 1345
            ldc "DIGEST31:{msg, pad, KicMAC}: "
            aload 7 /* toBeEncrypted */
        30: .line 1344
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        31: .line 1352
      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 1354
            aload 8 /* cipherBlock */
            ifnonnull 38
        33: .line 1356
            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 1358
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            astore 9 /* e */
        start local 9 // javax.crypto.IllegalBlockSizeException e
        35: .line 1359
            new javax.security.sasl.SaslException
            dup
        36: .line 1360
            ldc "DIGEST-MD5: Invalid block size for cipher"
            aload 9 /* e */
        37: .line 1359
            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 1363
      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 1364
            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 1365
            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 1366
            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 1368
            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 1369
            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 1372
      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=8, 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 1392
            iload 3 /* len */
            ifne 2
         1: .line 1393
            getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
            areturn
         2: .line 1396
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            bipush 6
            isub
            newarray 8
            astore 4 /* encryptedMsg */
        start local 4 // byte[] encryptedMsg
         3: .line 1397
            iconst_2
            newarray 8
            astore 5 /* msgType */
        start local 5 // byte[] msgType
         4: .line 1398
            iconst_4
            newarray 8
            astore 6 /* seqNum */
        start local 6 // byte[] seqNum
         5: .line 1401
            aload 1 /* incoming */
            iload 2 /* start */
         6: .line 1402
            aload 4 /* encryptedMsg */
            iconst_0
            aload 4 /* encryptedMsg */
            arraylength
         7: .line 1401
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 1403
            aload 1 /* incoming */
            iload 2 /* start */
            aload 4 /* encryptedMsg */
            arraylength
            iadd
         9: .line 1404
            aload 5 /* msgType */
            iconst_0
            iconst_2
        10: .line 1403
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 1405
            aload 1 /* incoming */
            iload 2 /* start */
            aload 4 /* encryptedMsg */
            arraylength
            iadd
            iconst_2
            iadd
        12: .line 1406
            aload 6 /* seqNum */
            iconst_0
            iconst_4
        13: .line 1405
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        14: .line 1408
            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 1409
            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 1410
            ldc "DIGEST33:Expecting sequence num: {0}"
        17: .line 1411
            new java.lang.Integer
            dup
            aload 0 /* this */
            getfield com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.peerSeqNum:I
            invokespecial java.lang.Integer.<init>:(I)V
        18: .line 1409
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        19: .line 1412
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
            ldc "DIGEST34:incoming: "
        20: .line 1413
            aload 4 /* encryptedMsg */
        21: .line 1412
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        22: .line 1422
      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 1424
            aload 7 /* decryptedMsg */
            ifnonnull 29
        24: .line 1426
            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 1428
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            astore 8 /* e */
        start local 8 // javax.crypto.IllegalBlockSizeException e
        26: .line 1429
            new javax.security.sasl.SaslException
            dup
            ldc "DIGEST-MD5: Illegal block sizes used with chosen cipher"
        27: .line 1430
            aload 8 /* e */
        28: .line 1429
            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 1433
      StackMap locals: byte[]
      StackMap stack:
            aload 7 /* decryptedMsg */
            arraylength
            bipush 10
            isub
            newarray 8
            astore 8 /* msgWithPadding */
        start local 8 // byte[] msgWithPadding
        30: .line 1434
            bipush 10
            newarray 8
            astore 9 /* mac */
        start local 9 // byte[] mac
        31: .line 1436
            aload 7 /* decryptedMsg */
            iconst_0
        32: .line 1437
            aload 8 /* msgWithPadding */
            iconst_0
            aload 8 /* msgWithPadding */
            arraylength
        33: .line 1436
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        34: .line 1438
            aload 7 /* decryptedMsg */
            aload 8 /* msgWithPadding */
            arraylength
        35: .line 1439
            aload 9 /* mac */
            iconst_0
            bipush 10
        36: .line 1438
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        37: .line 1441
            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 1442
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
        39: .line 1443
            ldc "DIGEST35:Unwrapped (w/padding): "
            aload 8 /* msgWithPadding */
        40: .line 1442
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        41: .line 1444
            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 1445
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
            ldc "DIGEST37:messageType: "
        43: .line 1446
            aload 5 /* msgType */
        44: .line 1445
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        45: .line 1447
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
            ldc "DIGEST38:sequenceNum: "
        46: .line 1448
            aload 6 /* seqNum */
        47: .line 1447
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        48: .line 1451
      StackMap locals: byte[] byte[]
      StackMap stack:
            aload 8 /* msgWithPadding */
            arraylength
            istore 10 /* msgLength */
        start local 10 // int msgLength
        49: .line 1452
            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 1453
            iload 11 /* blockSize */
            iconst_1
            if_icmple 59
        51: .line 1455
            iload 10 /* msgLength */
            aload 8 /* msgWithPadding */
            aload 8 /* msgWithPadding */
            arraylength
            iconst_1
            isub
            baload
            isub
            istore 10 /* msgLength */
        52: .line 1456
            iload 10 /* msgLength */
            ifge 59
        53: .line 1458
            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 1459
            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 1460
            ldc "DIGEST39:Incorrect padding: {0}"
        56: .line 1461
            new java.lang.Byte
            dup
            aload 8 /* msgWithPadding */
            aload 8 /* msgWithPadding */
            arraylength
            iconst_1
            isub
            baload
            invokespecial java.lang.Byte.<init>:(B)V
        57: .line 1459
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
        58: .line 1463
      StackMap locals: int int
      StackMap stack:
            getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
            areturn
        59: .line 1468
      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 1469
            iconst_0
            iload 10 /* msgLength */
        61: .line 1468
            invokevirtual com.sun.security.sasl.digest.DigestMD5Base$DigestPrivacy.getHMAC:([B[B[BII)[B
            astore 12 /* expectedMac */
        start local 12 // byte[] expectedMac
        62: .line 1471
            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 1472
            getstatic com.sun.security.sasl.digest.DigestMD5Base.DP_CLASS_NAME:Ljava/lang/String;
            ldc "unwrap"
            ldc "DIGEST40:KisMAC: "
        64: .line 1473
            aload 12 /* expectedMac */
        65: .line 1472
            invokestatic com.sun.security.sasl.digest.DigestMD5Base.access$2:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
        66: .line 1477
      StackMap locals: byte[]
      StackMap stack:
            aload 9 /* mac */
            aload 12 /* expectedMac */
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifne 69
        67: .line 1479
            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 1480
            getstatic com.sun.security.sasl.digest.DigestMD5Base.EMPTY_BYTE_ARRAY:[B
            areturn
        69: .line 1484
      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 1485
            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 1487
            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 1488
            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 1485
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        74: .line 1492
      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 1493
            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 1494
            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 1493
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        78: .line 1498
      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 1500
            iload 10 /* msgLength */
            aload 8 /* msgWithPadding */
            arraylength
            if_icmpne 81
        80: .line 1501
            aload 8 /* msgWithPadding */
            areturn
        81: .line 1504
      StackMap locals:
      StackMap stack:
            iload 10 /* msgLength */
            newarray 8
            astore 13 /* clearMsg */
        start local 13 // byte[] clearMsg
        82: .line 1505
            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 1506
            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