public class org.bouncycastle.crypto.util.PrivateKeyInfoFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.crypto.util.PrivateKeyInfoFactory
  super_class: java.lang.Object
{
  private static java.util.Set cryptoProOids;
    descriptor: Ljava/util/Set;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 47
            new java.util.HashSet
            dup
            iconst_5
            invokespecial java.util.HashSet.<init>:(I)V
            putstatic org.bouncycastle.crypto.util.PrivateKeyInfoFactory.cryptoProOids:Ljava/util/Set;
         1: .line 51
            getstatic org.bouncycastle.crypto.util.PrivateKeyInfoFactory.cryptoProOids:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3410_2001_CryptoPro_A:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         2: .line 52
            getstatic org.bouncycastle.crypto.util.PrivateKeyInfoFactory.cryptoProOids:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3410_2001_CryptoPro_B:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         3: .line 53
            getstatic org.bouncycastle.crypto.util.PrivateKeyInfoFactory.cryptoProOids:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3410_2001_CryptoPro_C:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 54
            getstatic org.bouncycastle.crypto.util.PrivateKeyInfoFactory.cryptoProOids:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3410_2001_CryptoPro_XchA:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 55
            getstatic org.bouncycastle.crypto.util.PrivateKeyInfoFactory.cryptoProOids:Ljava/util/Set;
            getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3410_2001_CryptoPro_XchB:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         6: .line 56
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.util.PrivateKeyInfoFactory this
         0: .line 58
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 61
            return
        end local 0 // org.bouncycastle.crypto.util.PrivateKeyInfoFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bouncycastle/crypto/util/PrivateKeyInfoFactory;

  public static org.bouncycastle.asn1.pkcs.PrivateKeyInfo createPrivateKeyInfo(org.bouncycastle.crypto.params.AsymmetricKeyParameter);
    descriptor: (Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;)Lorg/bouncycastle/asn1/pkcs/PrivateKeyInfo;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.params.AsymmetricKeyParameter privateKey
         0: .line 73
            aload 0 /* privateKey */
            aconst_null
            invokestatic org.bouncycastle.crypto.util.PrivateKeyInfoFactory.createPrivateKeyInfo:(Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;Lorg/bouncycastle/asn1/ASN1Set;)Lorg/bouncycastle/asn1/pkcs/PrivateKeyInfo;
            areturn
        end local 0 // org.bouncycastle.crypto.params.AsymmetricKeyParameter privateKey
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  privateKey  Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      privateKey  

  public static org.bouncycastle.asn1.pkcs.PrivateKeyInfo createPrivateKeyInfo(org.bouncycastle.crypto.params.AsymmetricKeyParameter, org.bouncycastle.asn1.ASN1Set);
    descriptor: (Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;Lorg/bouncycastle/asn1/ASN1Set;)Lorg/bouncycastle/asn1/pkcs/PrivateKeyInfo;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=13, locals=10, args_size=2
        start local 0 // org.bouncycastle.crypto.params.AsymmetricKeyParameter privateKey
        start local 1 // org.bouncycastle.asn1.ASN1Set attributes
         0: .line 87
            aload 0 /* privateKey */
            instanceof org.bouncycastle.crypto.params.RSAKeyParameters
            ifeq 6
         1: .line 89
            aload 0 /* privateKey */
            checkcast org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters
            astore 2 /* priv */
        start local 2 // org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters priv
         2: .line 91
            new org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.rsaEncryption:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            getstatic org.bouncycastle.asn1.DERNull.INSTANCE:Lorg/bouncycastle/asn1/DERNull;
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
         3: .line 92
            new org.bouncycastle.asn1.pkcs.RSAPrivateKey
            dup
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters.getModulus:()Ljava/math/BigInteger;
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters.getPublicExponent:()Ljava/math/BigInteger;
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters.getExponent:()Ljava/math/BigInteger;
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters.getP:()Ljava/math/BigInteger;
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters.getQ:()Ljava/math/BigInteger;
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters.getDP:()Ljava/math/BigInteger;
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters.getDQ:()Ljava/math/BigInteger;
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters.getQInv:()Ljava/math/BigInteger;
            invokespecial org.bouncycastle.asn1.pkcs.RSAPrivateKey.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
         4: .line 93
            aload 1 /* attributes */
         5: .line 91
            invokespecial org.bouncycastle.asn1.pkcs.PrivateKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;Lorg/bouncycastle/asn1/ASN1Set;)V
            areturn
        end local 2 // org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters priv
         6: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* privateKey */
            instanceof org.bouncycastle.crypto.params.DSAPrivateKeyParameters
            ifeq 13
         7: .line 97
            aload 0 /* privateKey */
            checkcast org.bouncycastle.crypto.params.DSAPrivateKeyParameters
            astore 2 /* priv */
        start local 2 // org.bouncycastle.crypto.params.DSAPrivateKeyParameters priv
         8: .line 98
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.DSAPrivateKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/DSAParameters;
            astore 3 /* params */
        start local 3 // org.bouncycastle.crypto.params.DSAParameters params
         9: .line 100
            new org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.id_dsa:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
        10: .line 101
            new org.bouncycastle.asn1.x509.DSAParameter
            dup
            aload 3 /* params */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getP:()Ljava/math/BigInteger;
            aload 3 /* params */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getQ:()Ljava/math/BigInteger;
            aload 3 /* params */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getG:()Ljava/math/BigInteger;
            invokespecial org.bouncycastle.asn1.x509.DSAParameter.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
            new org.bouncycastle.asn1.ASN1Integer
            dup
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.DSAPrivateKeyParameters.getX:()Ljava/math/BigInteger;
            invokespecial org.bouncycastle.asn1.ASN1Integer.<init>:(Ljava/math/BigInteger;)V
        11: .line 102
            aload 1 /* attributes */
        12: .line 100
            invokespecial org.bouncycastle.asn1.pkcs.PrivateKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;Lorg/bouncycastle/asn1/ASN1Set;)V
            areturn
        end local 3 // org.bouncycastle.crypto.params.DSAParameters params
        end local 2 // org.bouncycastle.crypto.params.DSAPrivateKeyParameters priv
        13: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* privateKey */
            instanceof org.bouncycastle.crypto.params.ECPrivateKeyParameters
            ifeq 62
        14: .line 106
            aload 0 /* privateKey */
            checkcast org.bouncycastle.crypto.params.ECPrivateKeyParameters
            astore 2 /* priv */
        start local 2 // org.bouncycastle.crypto.params.ECPrivateKeyParameters priv
        15: .line 107
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/ECDomainParameters;
            astore 3 /* domainParams */
        start local 3 // org.bouncycastle.crypto.params.ECDomainParameters domainParams
        16: .line 111
            aload 3 /* domainParams */
            ifnonnull 20
        17: .line 113
            new org.bouncycastle.asn1.x9.X962Parameters
            dup
            getstatic org.bouncycastle.asn1.DERNull.INSTANCE:Lorg/bouncycastle/asn1/DERNull;
            invokespecial org.bouncycastle.asn1.x9.X962Parameters.<init>:(Lorg/bouncycastle/asn1/ASN1Null;)V
            astore 4 /* params */
        start local 4 // org.bouncycastle.asn1.ASN1Encodable params
        18: .line 114
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getD:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 5 /* orderBitLength */
        start local 5 // int orderBitLength
        19: .line 115
            goto 56
        end local 5 // int orderBitLength
        end local 4 // org.bouncycastle.asn1.ASN1Encodable params
        20: .line 116
      StackMap locals: org.bouncycastle.crypto.params.ECPrivateKeyParameters org.bouncycastle.crypto.params.ECDomainParameters
      StackMap stack:
            aload 3 /* domainParams */
            instanceof org.bouncycastle.crypto.params.ECGOST3410Parameters
            ifeq 43
        21: .line 118
            new org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters
            dup
        22: .line 119
            aload 3 /* domainParams */
            checkcast org.bouncycastle.crypto.params.ECGOST3410Parameters
            invokevirtual org.bouncycastle.crypto.params.ECGOST3410Parameters.getPublicKeyParamSet:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
        23: .line 120
            aload 3 /* domainParams */
            checkcast org.bouncycastle.crypto.params.ECGOST3410Parameters
            invokevirtual org.bouncycastle.crypto.params.ECGOST3410Parameters.getDigestParamSet:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
        24: .line 121
            aload 3 /* domainParams */
            checkcast org.bouncycastle.crypto.params.ECGOST3410Parameters
            invokevirtual org.bouncycastle.crypto.params.ECGOST3410Parameters.getEncryptionParamSet:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
        25: .line 118
            invokespecial org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
            astore 6 /* gostParams */
        start local 6 // org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters gostParams
        26: .line 127
            getstatic org.bouncycastle.crypto.util.PrivateKeyInfoFactory.cryptoProOids:Ljava/util/Set;
            aload 6 /* gostParams */
            invokevirtual org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters.getPublicKeyParamSet:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 30
        27: .line 129
            bipush 32
            istore 7 /* size */
        start local 7 // int size
        28: .line 130
            getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3410_2001:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            astore 8 /* identifier */
        start local 8 // org.bouncycastle.asn1.ASN1ObjectIdentifier identifier
        29: .line 131
            goto 40
        end local 8 // org.bouncycastle.asn1.ASN1ObjectIdentifier identifier
        end local 7 // int size
        30: .line 135
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.asn1.ASN1Set org.bouncycastle.crypto.params.ECPrivateKeyParameters org.bouncycastle.crypto.params.ECDomainParameters top top org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters
      StackMap stack:
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getD:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            sipush 256
            if_icmple 31
            iconst_1
            goto 32
      StackMap locals:
      StackMap stack:
        31: iconst_0
      StackMap locals:
      StackMap stack: int
        32: istore 9 /* is512 */
        start local 9 // boolean is512
        33: .line 136
            iload 9 /* is512 */
            ifeq 35
        34: .line 137
            getstatic org.bouncycastle.asn1.rosstandart.RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            goto 36
        35: .line 138
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.asn1.ASN1Set org.bouncycastle.crypto.params.ECPrivateKeyParameters org.bouncycastle.crypto.params.ECDomainParameters top top org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters top top int
      StackMap stack:
            getstatic org.bouncycastle.asn1.rosstandart.RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
        36: .line 136
      StackMap locals:
      StackMap stack: org.bouncycastle.asn1.ASN1ObjectIdentifier
            astore 8 /* identifier */
        start local 8 // org.bouncycastle.asn1.ASN1ObjectIdentifier identifier
        37: .line 139
            iload 9 /* is512 */
            ifeq 38
            bipush 64
            goto 39
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.asn1.ASN1Set org.bouncycastle.crypto.params.ECPrivateKeyParameters org.bouncycastle.crypto.params.ECDomainParameters top top org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters top org.bouncycastle.asn1.ASN1ObjectIdentifier int
      StackMap stack:
        38: bipush 32
      StackMap locals:
      StackMap stack: int
        39: istore 7 /* size */
        end local 9 // boolean is512
        start local 7 // int size
        40: .line 141
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.asn1.ASN1Set org.bouncycastle.crypto.params.ECPrivateKeyParameters org.bouncycastle.crypto.params.ECDomainParameters top top org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters int org.bouncycastle.asn1.ASN1ObjectIdentifier
      StackMap stack:
            iload 7 /* size */
            newarray 8
            astore 9 /* encKey */
        start local 9 // byte[] encKey
        41: .line 143
            aload 9 /* encKey */
            iload 7 /* size */
            iconst_0
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getD:()Ljava/math/BigInteger;
            invokestatic org.bouncycastle.crypto.util.PrivateKeyInfoFactory.extractBytes:([BIILjava/math/BigInteger;)V
        42: .line 145
            new org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            aload 8 /* identifier */
            aload 6 /* gostParams */
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 9 /* encKey */
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            invokespecial org.bouncycastle.asn1.pkcs.PrivateKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
            areturn
        end local 9 // byte[] encKey
        end local 8 // org.bouncycastle.asn1.ASN1ObjectIdentifier identifier
        end local 7 // int size
        end local 6 // org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters gostParams
        43: .line 147
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.asn1.ASN1Set org.bouncycastle.crypto.params.ECPrivateKeyParameters org.bouncycastle.crypto.params.ECDomainParameters
      StackMap stack:
            aload 3 /* domainParams */
            instanceof org.bouncycastle.crypto.params.ECNamedDomainParameters
            ifeq 47
        44: .line 149
            new org.bouncycastle.asn1.x9.X962Parameters
            dup
            aload 3 /* domainParams */
            checkcast org.bouncycastle.crypto.params.ECNamedDomainParameters
            invokevirtual org.bouncycastle.crypto.params.ECNamedDomainParameters.getName:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokespecial org.bouncycastle.asn1.x9.X962Parameters.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
            astore 4 /* params */
        start local 4 // org.bouncycastle.asn1.ASN1Encodable params
        45: .line 150
            aload 3 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getN:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 5 /* orderBitLength */
        start local 5 // int orderBitLength
        46: .line 151
            goto 56
        end local 5 // int orderBitLength
        end local 4 // org.bouncycastle.asn1.ASN1Encodable params
        47: .line 154
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.asn1.x9.X9ECParameters
            dup
        48: .line 155
            aload 3 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
        49: .line 156
            aload 3 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getG:()Lorg/bouncycastle/math/ec/ECPoint;
        50: .line 157
            aload 3 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getN:()Ljava/math/BigInteger;
        51: .line 158
            aload 3 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getH:()Ljava/math/BigInteger;
        52: .line 159
            aload 3 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getSeed:()[B
        53: .line 154
            invokespecial org.bouncycastle.asn1.x9.X9ECParameters.<init>:(Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
            astore 6 /* ecP */
        start local 6 // org.bouncycastle.asn1.x9.X9ECParameters ecP
        54: .line 161
            new org.bouncycastle.asn1.x9.X962Parameters
            dup
            aload 6 /* ecP */
            invokespecial org.bouncycastle.asn1.x9.X962Parameters.<init>:(Lorg/bouncycastle/asn1/x9/X9ECParameters;)V
            astore 4 /* params */
        start local 4 // org.bouncycastle.asn1.ASN1Encodable params
        55: .line 162
            aload 3 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getN:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 5 /* orderBitLength */
        end local 6 // org.bouncycastle.asn1.x9.X9ECParameters ecP
        start local 5 // int orderBitLength
        56: .line 165
      StackMap locals: org.bouncycastle.asn1.ASN1Encodable int
      StackMap stack:
            new org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.id_ecPublicKey:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 4 /* params */
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
        57: .line 166
            new org.bouncycastle.asn1.sec.ECPrivateKey
            dup
            iload 5 /* orderBitLength */
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getD:()Ljava/math/BigInteger;
        58: .line 167
            new org.bouncycastle.asn1.DERBitString
            dup
            aload 3 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getG:()Lorg/bouncycastle/math/ec/ECPoint;
            aload 2 /* priv */
            invokevirtual org.bouncycastle.crypto.params.ECPrivateKeyParameters.getD:()Ljava/math/BigInteger;
            invokevirtual org.bouncycastle.math.ec.ECPoint.multiply:(Ljava/math/BigInteger;)Lorg/bouncycastle/math/ec/ECPoint;
            iconst_0
            invokevirtual org.bouncycastle.math.ec.ECPoint.getEncoded:(Z)[B
            invokespecial org.bouncycastle.asn1.DERBitString.<init>:([B)V
            aload 4 /* params */
        59: .line 166
            invokespecial org.bouncycastle.asn1.sec.ECPrivateKey.<init>:(ILjava/math/BigInteger;Lorg/bouncycastle/asn1/DERBitString;Lorg/bouncycastle/asn1/ASN1Encodable;)V
        60: .line 168
            aload 1 /* attributes */
        61: .line 165
            invokespecial org.bouncycastle.asn1.pkcs.PrivateKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;Lorg/bouncycastle/asn1/ASN1Set;)V
            areturn
        end local 5 // int orderBitLength
        end local 4 // org.bouncycastle.asn1.ASN1Encodable params
        end local 3 // org.bouncycastle.crypto.params.ECDomainParameters domainParams
        end local 2 // org.bouncycastle.crypto.params.ECPrivateKeyParameters priv
        62: .line 170
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.asn1.ASN1Set
      StackMap stack:
            aload 0 /* privateKey */
            instanceof org.bouncycastle.crypto.params.X448PrivateKeyParameters
            ifeq 67
        63: .line 172
            aload 0 /* privateKey */
            checkcast org.bouncycastle.crypto.params.X448PrivateKeyParameters
            astore 2 /* key */
        start local 2 // org.bouncycastle.crypto.params.X448PrivateKeyParameters key
        64: .line 174
            new org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            getstatic org.bouncycastle.asn1.edec.EdECObjectIdentifiers.id_X448:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
        65: .line 175
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 2 /* key */
            invokevirtual org.bouncycastle.crypto.params.X448PrivateKeyParameters.getEncoded:()[B
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            aload 1 /* attributes */
            aload 2 /* key */
            invokevirtual org.bouncycastle.crypto.params.X448PrivateKeyParameters.generatePublicKey:()Lorg/bouncycastle/crypto/params/X448PublicKeyParameters;
            invokevirtual org.bouncycastle.crypto.params.X448PublicKeyParameters.getEncoded:()[B
        66: .line 174
            invokespecial org.bouncycastle.asn1.pkcs.PrivateKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;Lorg/bouncycastle/asn1/ASN1Set;[B)V
            areturn
        end local 2 // org.bouncycastle.crypto.params.X448PrivateKeyParameters key
        67: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* privateKey */
            instanceof org.bouncycastle.crypto.params.X25519PrivateKeyParameters
            ifeq 72
        68: .line 179
            aload 0 /* privateKey */
            checkcast org.bouncycastle.crypto.params.X25519PrivateKeyParameters
            astore 2 /* key */
        start local 2 // org.bouncycastle.crypto.params.X25519PrivateKeyParameters key
        69: .line 181
            new org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            getstatic org.bouncycastle.asn1.edec.EdECObjectIdentifiers.id_X25519:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
        70: .line 182
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 2 /* key */
            invokevirtual org.bouncycastle.crypto.params.X25519PrivateKeyParameters.getEncoded:()[B
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            aload 1 /* attributes */
            aload 2 /* key */
            invokevirtual org.bouncycastle.crypto.params.X25519PrivateKeyParameters.generatePublicKey:()Lorg/bouncycastle/crypto/params/X25519PublicKeyParameters;
            invokevirtual org.bouncycastle.crypto.params.X25519PublicKeyParameters.getEncoded:()[B
        71: .line 181
            invokespecial org.bouncycastle.asn1.pkcs.PrivateKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;Lorg/bouncycastle/asn1/ASN1Set;[B)V
            areturn
        end local 2 // org.bouncycastle.crypto.params.X25519PrivateKeyParameters key
        72: .line 184
      StackMap locals:
      StackMap stack:
            aload 0 /* privateKey */
            instanceof org.bouncycastle.crypto.params.Ed448PrivateKeyParameters
            ifeq 77
        73: .line 186
            aload 0 /* privateKey */
            checkcast org.bouncycastle.crypto.params.Ed448PrivateKeyParameters
            astore 2 /* key */
        start local 2 // org.bouncycastle.crypto.params.Ed448PrivateKeyParameters key
        74: .line 188
            new org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            getstatic org.bouncycastle.asn1.edec.EdECObjectIdentifiers.id_Ed448:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
        75: .line 189
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 2 /* key */
            invokevirtual org.bouncycastle.crypto.params.Ed448PrivateKeyParameters.getEncoded:()[B
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            aload 1 /* attributes */
            aload 2 /* key */
            invokevirtual org.bouncycastle.crypto.params.Ed448PrivateKeyParameters.generatePublicKey:()Lorg/bouncycastle/crypto/params/Ed448PublicKeyParameters;
            invokevirtual org.bouncycastle.crypto.params.Ed448PublicKeyParameters.getEncoded:()[B
        76: .line 188
            invokespecial org.bouncycastle.asn1.pkcs.PrivateKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;Lorg/bouncycastle/asn1/ASN1Set;[B)V
            areturn
        end local 2 // org.bouncycastle.crypto.params.Ed448PrivateKeyParameters key
        77: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* privateKey */
            instanceof org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters
            ifeq 82
        78: .line 193
            aload 0 /* privateKey */
            checkcast org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters
            astore 2 /* key */
        start local 2 // org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters key
        79: .line 195
            new org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            getstatic org.bouncycastle.asn1.edec.EdECObjectIdentifiers.id_Ed25519:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
        80: .line 196
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 2 /* key */
            invokevirtual org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters.getEncoded:()[B
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            aload 1 /* attributes */
            aload 2 /* key */
            invokevirtual org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters.generatePublicKey:()Lorg/bouncycastle/crypto/params/Ed25519PublicKeyParameters;
            invokevirtual org.bouncycastle.crypto.params.Ed25519PublicKeyParameters.getEncoded:()[B
        81: .line 195
            invokespecial org.bouncycastle.asn1.pkcs.PrivateKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;Lorg/bouncycastle/asn1/ASN1Set;[B)V
            areturn
        end local 2 // org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters key
        82: .line 200
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "key parameters not recognized"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // org.bouncycastle.asn1.ASN1Set attributes
        end local 0 // org.bouncycastle.crypto.params.AsymmetricKeyParameter privateKey
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   83     0      privateKey  Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
            0   83     1      attributes  Lorg/bouncycastle/asn1/ASN1Set;
            2    6     2            priv  Lorg/bouncycastle/crypto/params/RSAPrivateCrtKeyParameters;
            8   13     2            priv  Lorg/bouncycastle/crypto/params/DSAPrivateKeyParameters;
            9   13     3          params  Lorg/bouncycastle/crypto/params/DSAParameters;
           15   62     2            priv  Lorg/bouncycastle/crypto/params/ECPrivateKeyParameters;
           16   62     3    domainParams  Lorg/bouncycastle/crypto/params/ECDomainParameters;
           18   20     4          params  Lorg/bouncycastle/asn1/ASN1Encodable;
           45   47     4          params  Lorg/bouncycastle/asn1/ASN1Encodable;
           55   62     4          params  Lorg/bouncycastle/asn1/ASN1Encodable;
           19   20     5  orderBitLength  I
           46   47     5  orderBitLength  I
           56   62     5  orderBitLength  I
           26   43     6      gostParams  Lorg/bouncycastle/asn1/cryptopro/GOST3410PublicKeyAlgParameters;
           28   30     7            size  I
           40   43     7            size  I
           29   30     8      identifier  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
           37   43     8      identifier  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
           33   40     9           is512  Z
           41   43     9          encKey  [B
           54   56     6             ecP  Lorg/bouncycastle/asn1/x9/X9ECParameters;
           64   67     2             key  Lorg/bouncycastle/crypto/params/X448PrivateKeyParameters;
           69   72     2             key  Lorg/bouncycastle/crypto/params/X25519PrivateKeyParameters;
           74   77     2             key  Lorg/bouncycastle/crypto/params/Ed448PrivateKeyParameters;
           79   82     2             key  Lorg/bouncycastle/crypto/params/Ed25519PrivateKeyParameters;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      privateKey  
      attributes  

  private static void extractBytes(byte[], int, int, java.math.BigInteger);
    descriptor: ([BIILjava/math/BigInteger;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // byte[] encKey
        start local 1 // int size
        start local 2 // int offSet
        start local 3 // java.math.BigInteger bI
         0: .line 207
            aload 3 /* bI */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 4 /* val */
        start local 4 // byte[] val
         1: .line 208
            aload 4 /* val */
            arraylength
            iload 1 /* size */
            if_icmpge 5
         2: .line 210
            iload 1 /* size */
            newarray 8
            astore 5 /* tmp */
        start local 5 // byte[] tmp
         3: .line 211
            aload 4 /* val */
            iconst_0
            aload 5 /* tmp */
            aload 5 /* tmp */
            arraylength
            aload 4 /* val */
            arraylength
            isub
            aload 4 /* val */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 212
            aload 5 /* tmp */
            astore 4 /* val */
        end local 5 // byte[] tmp
         5: .line 215
      StackMap locals: byte[]
      StackMap stack:
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         6: goto 9
         7: .line 217
      StackMap locals: int
      StackMap stack:
            aload 0 /* encKey */
            iload 2 /* offSet */
            iload 5 /* i */
            iadd
            aload 4 /* val */
            aload 4 /* val */
            arraylength
            iconst_1
            isub
            iload 5 /* i */
            isub
            baload
            bastore
         8: .line 215
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 5 /* i */
            iload 1 /* size */
            if_icmpne 7
        end local 5 // int i
        10: .line 219
            return
        end local 4 // byte[] val
        end local 3 // java.math.BigInteger bI
        end local 2 // int offSet
        end local 1 // int size
        end local 0 // byte[] encKey
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0  encKey  [B
            0   11     1    size  I
            0   11     2  offSet  I
            0   11     3      bI  Ljava/math/BigInteger;
            1   11     4     val  [B
            3    5     5     tmp  [B
            6   10     5       i  I
    MethodParameters:
        Name  Flags
      encKey  
      size    
      offSet  
      bI      
}
SourceFile: "PrivateKeyInfoFactory.java"