public class org.bouncycastle.jce.PKCS12Util
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.jce.PKCS12Util
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.jce.PKCS12Util this
         0: .line 30
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bouncycastle.jce.PKCS12Util this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/jce/PKCS12Util;

  public static byte[] convertToDefiniteLength(byte[]);
    descriptor: ([B)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // byte[] berPKCS12File
         0: .line 42
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 1 /* bOut */
        start local 1 // java.io.ByteArrayOutputStream bOut
         1: .line 43
            new org.bouncycastle.asn1.DEROutputStream
            dup
            aload 1 /* bOut */
            invokespecial org.bouncycastle.asn1.DEROutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 2 /* dOut */
        start local 2 // org.bouncycastle.asn1.DEROutputStream dOut
         2: .line 45
            new org.bouncycastle.asn1.pkcs.Pfx
            dup
            aload 0 /* berPKCS12File */
            invokestatic org.bouncycastle.asn1.ASN1Object.fromByteArray:([B)Lorg/bouncycastle/asn1/ASN1Object;
            invokestatic org.bouncycastle.asn1.ASN1Sequence.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/ASN1Sequence;
            invokespecial org.bouncycastle.asn1.pkcs.Pfx.<init>:(Lorg/bouncycastle/asn1/ASN1Sequence;)V
            astore 3 /* pfx */
        start local 3 // org.bouncycastle.asn1.pkcs.Pfx pfx
         3: .line 47
            aload 1 /* bOut */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
         4: .line 49
            aload 2 /* dOut */
            aload 3 /* pfx */
            invokevirtual org.bouncycastle.asn1.DEROutputStream.writeObject:(Ljava/lang/Object;)V
         5: .line 51
            aload 1 /* bOut */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            areturn
        end local 3 // org.bouncycastle.asn1.pkcs.Pfx pfx
        end local 2 // org.bouncycastle.asn1.DEROutputStream dOut
        end local 1 // java.io.ByteArrayOutputStream bOut
        end local 0 // byte[] berPKCS12File
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0  berPKCS12File  [B
            1    6     1           bOut  Ljava/io/ByteArrayOutputStream;
            2    6     2           dOut  Lorg/bouncycastle/asn1/DEROutputStream;
            3    6     3            pfx  Lorg/bouncycastle/asn1/pkcs/Pfx;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      berPKCS12File  

  public static byte[] convertToDefiniteLength(byte[], char[], java.lang.String);
    descriptor: ([B[CLjava/lang/String;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=16, args_size=3
        start local 0 // byte[] berPKCS12File
        start local 1 // char[] passwd
        start local 2 // java.lang.String provider
         0: .line 66
            new org.bouncycastle.asn1.pkcs.Pfx
            dup
            aload 0 /* berPKCS12File */
            invokestatic org.bouncycastle.asn1.ASN1Object.fromByteArray:([B)Lorg/bouncycastle/asn1/ASN1Object;
            invokestatic org.bouncycastle.asn1.ASN1Sequence.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/ASN1Sequence;
            invokespecial org.bouncycastle.asn1.pkcs.Pfx.<init>:(Lorg/bouncycastle/asn1/ASN1Sequence;)V
            astore 3 /* pfx */
        start local 3 // org.bouncycastle.asn1.pkcs.Pfx pfx
         1: .line 68
            aload 3 /* pfx */
            invokevirtual org.bouncycastle.asn1.pkcs.Pfx.getAuthSafe:()Lorg/bouncycastle/asn1/pkcs/ContentInfo;
            astore 4 /* info */
        start local 4 // org.bouncycastle.asn1.pkcs.ContentInfo info
         2: .line 70
            aload 4 /* info */
            invokevirtual org.bouncycastle.asn1.pkcs.ContentInfo.getContent:()Lorg/bouncycastle/asn1/DEREncodable;
            invokestatic org.bouncycastle.asn1.ASN1OctetString.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/ASN1OctetString;
            astore 5 /* content */
        start local 5 // org.bouncycastle.asn1.ASN1OctetString content
         3: .line 72
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 6 /* bOut */
        start local 6 // java.io.ByteArrayOutputStream bOut
         4: .line 73
            new org.bouncycastle.asn1.DEROutputStream
            dup
            aload 6 /* bOut */
            invokespecial org.bouncycastle.asn1.DEROutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 7 /* dOut */
        start local 7 // org.bouncycastle.asn1.DEROutputStream dOut
         5: .line 75
            new org.bouncycastle.asn1.ASN1InputStream
            dup
            aload 5 /* content */
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            invokespecial org.bouncycastle.asn1.ASN1InputStream.<init>:([B)V
            astore 8 /* contentIn */
        start local 8 // org.bouncycastle.asn1.ASN1InputStream contentIn
         6: .line 76
            aload 8 /* contentIn */
            invokevirtual org.bouncycastle.asn1.ASN1InputStream.readObject:()Lorg/bouncycastle/asn1/DERObject;
            astore 9 /* obj */
        start local 9 // org.bouncycastle.asn1.DERObject obj
         7: .line 78
            aload 7 /* dOut */
            aload 9 /* obj */
            invokevirtual org.bouncycastle.asn1.DEROutputStream.writeObject:(Ljava/lang/Object;)V
         8: .line 80
            new org.bouncycastle.asn1.pkcs.ContentInfo
            dup
            aload 4 /* info */
            invokevirtual org.bouncycastle.asn1.pkcs.ContentInfo.getContentType:()Lorg/bouncycastle/asn1/DERObjectIdentifier;
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 6 /* bOut */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            invokespecial org.bouncycastle.asn1.pkcs.ContentInfo.<init>:(Lorg/bouncycastle/asn1/DERObjectIdentifier;Lorg/bouncycastle/asn1/DEREncodable;)V
            astore 4 /* info */
         9: .line 82
            aload 3 /* pfx */
            invokevirtual org.bouncycastle.asn1.pkcs.Pfx.getMacData:()Lorg/bouncycastle/asn1/pkcs/MacData;
            astore 10 /* mData */
        start local 10 // org.bouncycastle.asn1.pkcs.MacData mData
        10: .line 85
            aload 10 /* mData */
            invokevirtual org.bouncycastle.asn1.pkcs.MacData.getIterationCount:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.intValue:()I
            istore 11 /* itCount */
        start local 11 // int itCount
        11: .line 86
            aload 4 /* info */
            invokevirtual org.bouncycastle.asn1.pkcs.ContentInfo.getContent:()Lorg/bouncycastle/asn1/DEREncodable;
            invokestatic org.bouncycastle.asn1.ASN1OctetString.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/ASN1OctetString;
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            astore 12 /* data */
        start local 12 // byte[] data
        12: .line 87
            aload 10 /* mData */
            invokevirtual org.bouncycastle.asn1.pkcs.MacData.getMac:()Lorg/bouncycastle/asn1/x509/DigestInfo;
            invokevirtual org.bouncycastle.asn1.x509.DigestInfo.getAlgorithmId:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getObjectId:()Lorg/bouncycastle/asn1/DERObjectIdentifier;
            aload 10 /* mData */
            invokevirtual org.bouncycastle.asn1.pkcs.MacData.getSalt:()[B
            iload 11 /* itCount */
            aload 1 /* passwd */
            aload 12 /* data */
            aload 2 /* provider */
            invokestatic org.bouncycastle.jce.PKCS12Util.calculatePbeMac:(Lorg/bouncycastle/asn1/DERObjectIdentifier;[BI[C[BLjava/lang/String;)[B
            astore 13 /* res */
        start local 13 // byte[] res
        13: .line 89
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            aload 10 /* mData */
            invokevirtual org.bouncycastle.asn1.pkcs.MacData.getMac:()Lorg/bouncycastle/asn1/x509/DigestInfo;
            invokevirtual org.bouncycastle.asn1.x509.DigestInfo.getAlgorithmId:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getObjectId:()Lorg/bouncycastle/asn1/DERObjectIdentifier;
            new org.bouncycastle.asn1.DERNull
            dup
            invokespecial org.bouncycastle.asn1.DERNull.<init>:()V
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/DERObjectIdentifier;Lorg/bouncycastle/asn1/DEREncodable;)V
            astore 14 /* algId */
        start local 14 // org.bouncycastle.asn1.x509.AlgorithmIdentifier algId
        14: .line 90
            new org.bouncycastle.asn1.x509.DigestInfo
            dup
            aload 14 /* algId */
            aload 13 /* res */
            invokespecial org.bouncycastle.asn1.x509.DigestInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;[B)V
            astore 15 /* dInfo */
        start local 15 // org.bouncycastle.asn1.x509.DigestInfo dInfo
        15: .line 92
            new org.bouncycastle.asn1.pkcs.MacData
            dup
            aload 15 /* dInfo */
            aload 10 /* mData */
            invokevirtual org.bouncycastle.asn1.pkcs.MacData.getSalt:()[B
            iload 11 /* itCount */
            invokespecial org.bouncycastle.asn1.pkcs.MacData.<init>:(Lorg/bouncycastle/asn1/x509/DigestInfo;[BI)V
            astore 10 /* mData */
        end local 15 // org.bouncycastle.asn1.x509.DigestInfo dInfo
        end local 14 // org.bouncycastle.asn1.x509.AlgorithmIdentifier algId
        end local 13 // byte[] res
        end local 12 // byte[] data
        end local 11 // int itCount
        16: .line 93
            goto 19
        17: .line 94
      StackMap locals: byte[] char[] java.lang.String org.bouncycastle.asn1.pkcs.Pfx org.bouncycastle.asn1.pkcs.ContentInfo org.bouncycastle.asn1.ASN1OctetString java.io.ByteArrayOutputStream org.bouncycastle.asn1.DEROutputStream org.bouncycastle.asn1.ASN1InputStream org.bouncycastle.asn1.DERObject org.bouncycastle.asn1.pkcs.MacData
      StackMap stack: java.lang.Exception
            astore 11 /* e */
        start local 11 // java.lang.Exception e
        18: .line 96
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "error constructing MAC: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 11 /* e */
            invokevirtual java.lang.Exception.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 11 // java.lang.Exception e
        19: .line 99
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.asn1.pkcs.Pfx
            dup
            aload 4 /* info */
            aload 10 /* mData */
            invokespecial org.bouncycastle.asn1.pkcs.Pfx.<init>:(Lorg/bouncycastle/asn1/pkcs/ContentInfo;Lorg/bouncycastle/asn1/pkcs/MacData;)V
            astore 3 /* pfx */
        20: .line 101
            aload 6 /* bOut */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        21: .line 103
            aload 7 /* dOut */
            aload 3 /* pfx */
            invokevirtual org.bouncycastle.asn1.DEROutputStream.writeObject:(Ljava/lang/Object;)V
        22: .line 105
            aload 6 /* bOut */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            areturn
        end local 10 // org.bouncycastle.asn1.pkcs.MacData mData
        end local 9 // org.bouncycastle.asn1.DERObject obj
        end local 8 // org.bouncycastle.asn1.ASN1InputStream contentIn
        end local 7 // org.bouncycastle.asn1.DEROutputStream dOut
        end local 6 // java.io.ByteArrayOutputStream bOut
        end local 5 // org.bouncycastle.asn1.ASN1OctetString content
        end local 4 // org.bouncycastle.asn1.pkcs.ContentInfo info
        end local 3 // org.bouncycastle.asn1.pkcs.Pfx pfx
        end local 2 // java.lang.String provider
        end local 1 // char[] passwd
        end local 0 // byte[] berPKCS12File
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   23     0  berPKCS12File  [B
            0   23     1         passwd  [C
            0   23     2       provider  Ljava/lang/String;
            1   23     3            pfx  Lorg/bouncycastle/asn1/pkcs/Pfx;
            2   23     4           info  Lorg/bouncycastle/asn1/pkcs/ContentInfo;
            3   23     5        content  Lorg/bouncycastle/asn1/ASN1OctetString;
            4   23     6           bOut  Ljava/io/ByteArrayOutputStream;
            5   23     7           dOut  Lorg/bouncycastle/asn1/DEROutputStream;
            6   23     8      contentIn  Lorg/bouncycastle/asn1/ASN1InputStream;
            7   23     9            obj  Lorg/bouncycastle/asn1/DERObject;
           10   23    10          mData  Lorg/bouncycastle/asn1/pkcs/MacData;
           11   16    11        itCount  I
           12   16    12           data  [B
           13   16    13            res  [B
           14   16    14          algId  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
           15   16    15          dInfo  Lorg/bouncycastle/asn1/x509/DigestInfo;
           18   19    11              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          10    16      17  Class java.lang.Exception
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      berPKCS12File  
      passwd         
      provider       

  private static byte[] calculatePbeMac(org.bouncycastle.asn1.DERObjectIdentifier, byte[], int, char[], byte[], java.lang.String);
    descriptor: (Lorg/bouncycastle/asn1/DERObjectIdentifier;[BI[C[BLjava/lang/String;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=11, args_size=6
        start local 0 // org.bouncycastle.asn1.DERObjectIdentifier oid
        start local 1 // byte[] salt
        start local 2 // int itCount
        start local 3 // char[] password
        start local 4 // byte[] data
        start local 5 // java.lang.String provider
         0: .line 117
            aload 0 /* oid */
            invokevirtual org.bouncycastle.asn1.DERObjectIdentifier.getId:()Ljava/lang/String;
            aload 5 /* provider */
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
            astore 6 /* keyFact */
        start local 6 // javax.crypto.SecretKeyFactory keyFact
         1: .line 118
            new javax.crypto.spec.PBEParameterSpec
            dup
            aload 1 /* salt */
            iload 2 /* itCount */
            invokespecial javax.crypto.spec.PBEParameterSpec.<init>:([BI)V
            astore 7 /* defParams */
        start local 7 // javax.crypto.spec.PBEParameterSpec defParams
         2: .line 119
            new javax.crypto.spec.PBEKeySpec
            dup
            aload 3 /* password */
            invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C)V
            astore 8 /* pbeSpec */
        start local 8 // javax.crypto.spec.PBEKeySpec pbeSpec
         3: .line 120
            aload 6 /* keyFact */
            aload 8 /* pbeSpec */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 9 /* key */
        start local 9 // javax.crypto.SecretKey key
         4: .line 122
            aload 0 /* oid */
            invokevirtual org.bouncycastle.asn1.DERObjectIdentifier.getId:()Ljava/lang/String;
            aload 5 /* provider */
            invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/Mac;
            astore 10 /* mac */
        start local 10 // javax.crypto.Mac mac
         5: .line 123
            aload 10 /* mac */
            aload 9 /* key */
            aload 7 /* defParams */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
         6: .line 124
            aload 10 /* mac */
            aload 4 /* data */
            invokevirtual javax.crypto.Mac.update:([B)V
         7: .line 126
            aload 10 /* mac */
            invokevirtual javax.crypto.Mac.doFinal:()[B
            areturn
        end local 10 // javax.crypto.Mac mac
        end local 9 // javax.crypto.SecretKey key
        end local 8 // javax.crypto.spec.PBEKeySpec pbeSpec
        end local 7 // javax.crypto.spec.PBEParameterSpec defParams
        end local 6 // javax.crypto.SecretKeyFactory keyFact
        end local 5 // java.lang.String provider
        end local 4 // byte[] data
        end local 3 // char[] password
        end local 2 // int itCount
        end local 1 // byte[] salt
        end local 0 // org.bouncycastle.asn1.DERObjectIdentifier oid
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0        oid  Lorg/bouncycastle/asn1/DERObjectIdentifier;
            0    8     1       salt  [B
            0    8     2    itCount  I
            0    8     3   password  [C
            0    8     4       data  [B
            0    8     5   provider  Ljava/lang/String;
            1    8     6    keyFact  Ljavax/crypto/SecretKeyFactory;
            2    8     7  defParams  Ljavax/crypto/spec/PBEParameterSpec;
            3    8     8    pbeSpec  Ljavax/crypto/spec/PBEKeySpec;
            4    8     9        key  Ljavax/crypto/SecretKey;
            5    8    10        mac  Ljavax/crypto/Mac;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
          Name  Flags
      oid       
      salt      
      itCount   
      password  
      data      
      provider  
}
SourceFile: "PKCS12Util.java"