public class org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory
  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 45
            new java.util.HashSet
            dup
            iconst_5
            invokespecial java.util.HashSet.<init>:(I)V
            putstatic org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory.cryptoProOids:Ljava/util/Set;
         1: .line 49
            getstatic org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory.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 50
            getstatic org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory.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 51
            getstatic org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory.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 52
            getstatic org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory.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 53
            getstatic org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory.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 54
            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.SubjectPublicKeyInfoFactory this
         0: .line 56
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 59
            return
        end local 0 // org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bouncycastle/crypto/util/SubjectPublicKeyInfoFactory;

  public static org.bouncycastle.asn1.x509.SubjectPublicKeyInfo createSubjectPublicKeyInfo(org.bouncycastle.crypto.params.AsymmetricKeyParameter);
    descriptor: (Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;)Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=11, args_size=1
        start local 0 // org.bouncycastle.crypto.params.AsymmetricKeyParameter publicKey
         0: .line 71
            aload 0 /* publicKey */
            instanceof org.bouncycastle.crypto.params.RSAKeyParameters
            ifeq 3
         1: .line 73
            aload 0 /* publicKey */
            checkcast org.bouncycastle.crypto.params.RSAKeyParameters
            astore 1 /* pub */
        start local 1 // org.bouncycastle.crypto.params.RSAKeyParameters pub
         2: .line 75
            new org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
            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
            new org.bouncycastle.asn1.pkcs.RSAPublicKey
            dup
            aload 1 /* pub */
            invokevirtual org.bouncycastle.crypto.params.RSAKeyParameters.getModulus:()Ljava/math/BigInteger;
            aload 1 /* pub */
            invokevirtual org.bouncycastle.crypto.params.RSAKeyParameters.getExponent:()Ljava/math/BigInteger;
            invokespecial org.bouncycastle.asn1.pkcs.RSAPublicKey.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            invokespecial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
            areturn
        end local 1 // org.bouncycastle.crypto.params.RSAKeyParameters pub
         3: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* publicKey */
            instanceof org.bouncycastle.crypto.params.DSAPublicKeyParameters
            ifeq 10
         4: .line 79
            aload 0 /* publicKey */
            checkcast org.bouncycastle.crypto.params.DSAPublicKeyParameters
            astore 1 /* pub */
        start local 1 // org.bouncycastle.crypto.params.DSAPublicKeyParameters pub
         5: .line 81
            aconst_null
            astore 2 /* params */
        start local 2 // org.bouncycastle.asn1.x509.DSAParameter params
         6: .line 82
            aload 1 /* pub */
            invokevirtual org.bouncycastle.crypto.params.DSAPublicKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/DSAParameters;
            astore 3 /* dsaParams */
        start local 3 // org.bouncycastle.crypto.params.DSAParameters dsaParams
         7: .line 83
            aload 3 /* dsaParams */
            ifnull 9
         8: .line 85
            new org.bouncycastle.asn1.x509.DSAParameter
            dup
            aload 3 /* dsaParams */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getP:()Ljava/math/BigInteger;
            aload 3 /* dsaParams */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getQ:()Ljava/math/BigInteger;
            aload 3 /* dsaParams */
            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
            astore 2 /* params */
         9: .line 88
      StackMap locals: org.bouncycastle.crypto.params.DSAPublicKeyParameters org.bouncycastle.asn1.x509.DSAParameter org.bouncycastle.crypto.params.DSAParameters
      StackMap stack:
            new org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.id_dsa:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 2 /* params */
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
            new org.bouncycastle.asn1.ASN1Integer
            dup
            aload 1 /* pub */
            invokevirtual org.bouncycastle.crypto.params.DSAPublicKeyParameters.getY:()Ljava/math/BigInteger;
            invokespecial org.bouncycastle.asn1.ASN1Integer.<init>:(Ljava/math/BigInteger;)V
            invokespecial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
            areturn
        end local 3 // org.bouncycastle.crypto.params.DSAParameters dsaParams
        end local 2 // org.bouncycastle.asn1.x509.DSAParameter params
        end local 1 // org.bouncycastle.crypto.params.DSAPublicKeyParameters pub
        10: .line 90
      StackMap locals:
      StackMap stack:
            aload 0 /* publicKey */
            instanceof org.bouncycastle.crypto.params.ECPublicKeyParameters
            ifeq 57
        11: .line 92
            aload 0 /* publicKey */
            checkcast org.bouncycastle.crypto.params.ECPublicKeyParameters
            astore 1 /* pub */
        start local 1 // org.bouncycastle.crypto.params.ECPublicKeyParameters pub
        12: .line 93
            aload 1 /* pub */
            invokevirtual org.bouncycastle.crypto.params.ECPublicKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/ECDomainParameters;
            astore 2 /* domainParams */
        start local 2 // org.bouncycastle.crypto.params.ECDomainParameters domainParams
        13: .line 96
            aload 2 /* domainParams */
            ifnonnull 16
        14: .line 98
            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 3 /* params */
        start local 3 // org.bouncycastle.asn1.ASN1Encodable params
        15: .line 99
            goto 55
        end local 3 // org.bouncycastle.asn1.ASN1Encodable params
        16: .line 100
      StackMap locals: org.bouncycastle.crypto.params.ECPublicKeyParameters org.bouncycastle.crypto.params.ECDomainParameters
      StackMap stack:
            aload 2 /* domainParams */
            instanceof org.bouncycastle.crypto.params.ECGOST3410Parameters
            ifeq 44
        17: .line 102
            aload 2 /* domainParams */
            checkcast org.bouncycastle.crypto.params.ECGOST3410Parameters
            astore 4 /* gostParams */
        start local 4 // org.bouncycastle.crypto.params.ECGOST3410Parameters gostParams
        18: .line 104
            aload 1 /* pub */
            invokevirtual org.bouncycastle.crypto.params.ECPublicKeyParameters.getQ:()Lorg/bouncycastle/math/ec/ECPoint;
            invokevirtual org.bouncycastle.math.ec.ECPoint.getAffineXCoord:()Lorg/bouncycastle/math/ec/ECFieldElement;
            invokevirtual org.bouncycastle.math.ec.ECFieldElement.toBigInteger:()Ljava/math/BigInteger;
            astore 5 /* bX */
        start local 5 // java.math.BigInteger bX
        19: .line 105
            aload 1 /* pub */
            invokevirtual org.bouncycastle.crypto.params.ECPublicKeyParameters.getQ:()Lorg/bouncycastle/math/ec/ECPoint;
            invokevirtual org.bouncycastle.math.ec.ECPoint.getAffineYCoord:()Lorg/bouncycastle/math/ec/ECFieldElement;
            invokevirtual org.bouncycastle.math.ec.ECFieldElement.toBigInteger:()Ljava/math/BigInteger;
            astore 6 /* bY */
        start local 6 // java.math.BigInteger bY
        20: .line 107
            new org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters
            dup
            aload 4 /* gostParams */
            invokevirtual org.bouncycastle.crypto.params.ECGOST3410Parameters.getPublicKeyParamSet:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 4 /* gostParams */
            invokevirtual org.bouncycastle.crypto.params.ECGOST3410Parameters.getDigestParamSet:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokespecial org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)V
            astore 3 /* params */
        start local 3 // org.bouncycastle.asn1.ASN1Encodable params
        21: .line 114
            getstatic org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory.cryptoProOids:Ljava/util/Set;
            aload 4 /* gostParams */
            invokevirtual org.bouncycastle.crypto.params.ECGOST3410Parameters.getPublicKeyParamSet:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 26
        22: .line 116
            bipush 64
            istore 7 /* encKeySize */
        start local 7 // int encKeySize
        23: .line 117
            bipush 32
            istore 8 /* offset */
        start local 8 // int offset
        24: .line 118
            getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3410_2001:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            astore 9 /* algIdentifier */
        start local 9 // org.bouncycastle.asn1.ASN1ObjectIdentifier algIdentifier
        25: .line 119
            goto 37
        end local 9 // org.bouncycastle.asn1.ASN1ObjectIdentifier algIdentifier
        end local 8 // int offset
        end local 7 // int encKeySize
        26: .line 122
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.crypto.params.ECPublicKeyParameters org.bouncycastle.crypto.params.ECDomainParameters org.bouncycastle.asn1.ASN1Encodable org.bouncycastle.crypto.params.ECGOST3410Parameters java.math.BigInteger java.math.BigInteger
      StackMap stack:
            aload 5 /* bX */
            invokevirtual java.math.BigInteger.bitLength:()I
            sipush 256
            if_icmple 27
            iconst_1
            goto 28
      StackMap locals:
      StackMap stack:
        27: iconst_0
      StackMap locals:
      StackMap stack: int
        28: istore 10 /* is512 */
        start local 10 // boolean is512
        29: .line 123
            iload 10 /* is512 */
            ifeq 34
        30: .line 125
            sipush 128
            istore 7 /* encKeySize */
        start local 7 // int encKeySize
        31: .line 126
            bipush 64
            istore 8 /* offset */
        start local 8 // int offset
        32: .line 127
            getstatic org.bouncycastle.asn1.rosstandart.RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            astore 9 /* algIdentifier */
        start local 9 // org.bouncycastle.asn1.ASN1ObjectIdentifier algIdentifier
        33: .line 128
            goto 37
        end local 9 // org.bouncycastle.asn1.ASN1ObjectIdentifier algIdentifier
        end local 8 // int offset
        end local 7 // int encKeySize
        34: .line 131
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.crypto.params.ECPublicKeyParameters org.bouncycastle.crypto.params.ECDomainParameters org.bouncycastle.asn1.ASN1Encodable org.bouncycastle.crypto.params.ECGOST3410Parameters java.math.BigInteger java.math.BigInteger top top top int
      StackMap stack:
            bipush 64
            istore 7 /* encKeySize */
        start local 7 // int encKeySize
        35: .line 132
            bipush 32
            istore 8 /* offset */
        start local 8 // int offset
        36: .line 133
            getstatic org.bouncycastle.asn1.rosstandart.RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            astore 9 /* algIdentifier */
        end local 10 // boolean is512
        start local 9 // org.bouncycastle.asn1.ASN1ObjectIdentifier algIdentifier
        37: .line 137
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.crypto.params.ECPublicKeyParameters org.bouncycastle.crypto.params.ECDomainParameters org.bouncycastle.asn1.ASN1Encodable org.bouncycastle.crypto.params.ECGOST3410Parameters java.math.BigInteger java.math.BigInteger int int org.bouncycastle.asn1.ASN1ObjectIdentifier
      StackMap stack:
            iload 7 /* encKeySize */
            newarray 8
            astore 10 /* encKey */
        start local 10 // byte[] encKey
        38: .line 140
            aload 10 /* encKey */
            iload 7 /* encKeySize */
            iconst_2
            idiv
            iconst_0
            aload 5 /* bX */
            invokestatic org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory.extractBytes:([BIILjava/math/BigInteger;)V
        39: .line 141
            aload 10 /* encKey */
            iload 7 /* encKeySize */
            iconst_2
            idiv
            iload 8 /* offset */
            aload 6 /* bY */
            invokestatic org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory.extractBytes:([BIILjava/math/BigInteger;)V
        40: .line 145
            new org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            aload 9 /* algIdentifier */
            aload 3 /* params */
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 10 /* encKey */
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            invokespecial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
        41: areturn
        42: .line 147
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.crypto.params.ECPublicKeyParameters org.bouncycastle.crypto.params.ECDomainParameters org.bouncycastle.asn1.ASN1Encodable org.bouncycastle.crypto.params.ECGOST3410Parameters java.math.BigInteger java.math.BigInteger int int org.bouncycastle.asn1.ASN1ObjectIdentifier byte[]
      StackMap stack: java.io.IOException
            pop
        43: .line 149
            aconst_null
            areturn
        end local 10 // byte[] encKey
        end local 9 // org.bouncycastle.asn1.ASN1ObjectIdentifier algIdentifier
        end local 8 // int offset
        end local 7 // int encKeySize
        end local 6 // java.math.BigInteger bY
        end local 5 // java.math.BigInteger bX
        end local 4 // org.bouncycastle.crypto.params.ECGOST3410Parameters gostParams
        end local 3 // org.bouncycastle.asn1.ASN1Encodable params
        44: .line 152
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter org.bouncycastle.crypto.params.ECPublicKeyParameters org.bouncycastle.crypto.params.ECDomainParameters
      StackMap stack:
            aload 2 /* domainParams */
            instanceof org.bouncycastle.crypto.params.ECNamedDomainParameters
            ifeq 47
        45: .line 154
            new org.bouncycastle.asn1.x9.X962Parameters
            dup
            aload 2 /* 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 3 /* params */
        start local 3 // org.bouncycastle.asn1.ASN1Encodable params
        46: .line 155
            goto 55
        end local 3 // org.bouncycastle.asn1.ASN1Encodable params
        47: .line 158
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.asn1.x9.X9ECParameters
            dup
        48: .line 159
            aload 2 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
        49: .line 160
            aload 2 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getG:()Lorg/bouncycastle/math/ec/ECPoint;
        50: .line 161
            aload 2 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getN:()Ljava/math/BigInteger;
        51: .line 162
            aload 2 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getH:()Ljava/math/BigInteger;
        52: .line 163
            aload 2 /* domainParams */
            invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getSeed:()[B
        53: .line 158
            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 4 /* ecP */
        start local 4 // org.bouncycastle.asn1.x9.X9ECParameters ecP
        54: .line 165
            new org.bouncycastle.asn1.x9.X962Parameters
            dup
            aload 4 /* ecP */
            invokespecial org.bouncycastle.asn1.x9.X962Parameters.<init>:(Lorg/bouncycastle/asn1/x9/X9ECParameters;)V
            astore 3 /* params */
        end local 4 // org.bouncycastle.asn1.x9.X9ECParameters ecP
        start local 3 // org.bouncycastle.asn1.ASN1Encodable params
        55: .line 168
      StackMap locals: org.bouncycastle.asn1.ASN1Encodable
      StackMap stack:
            new org.bouncycastle.asn1.x9.X9ECPoint
            dup
            aload 1 /* pub */
            invokevirtual org.bouncycastle.crypto.params.ECPublicKeyParameters.getQ:()Lorg/bouncycastle/math/ec/ECPoint;
            invokespecial org.bouncycastle.asn1.x9.X9ECPoint.<init>:(Lorg/bouncycastle/math/ec/ECPoint;)V
            invokevirtual org.bouncycastle.asn1.x9.X9ECPoint.toASN1Primitive:()Lorg/bouncycastle/asn1/ASN1Primitive;
            checkcast org.bouncycastle.asn1.ASN1OctetString
            astore 4 /* p */
        start local 4 // org.bouncycastle.asn1.ASN1OctetString p
        56: .line 170
            new org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
            dup
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
            getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.id_ecPublicKey:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 3 /* params */
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
            aload 4 /* p */
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            invokespecial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;[B)V
            areturn
        end local 4 // org.bouncycastle.asn1.ASN1OctetString p
        end local 3 // org.bouncycastle.asn1.ASN1Encodable params
        end local 2 // org.bouncycastle.crypto.params.ECDomainParameters domainParams
        end local 1 // org.bouncycastle.crypto.params.ECPublicKeyParameters pub
        57: .line 172
      StackMap locals:
      StackMap stack:
            aload 0 /* publicKey */
            instanceof org.bouncycastle.crypto.params.X448PublicKeyParameters
            ifeq 60
        58: .line 174
            aload 0 /* publicKey */
            checkcast org.bouncycastle.crypto.params.X448PublicKeyParameters
            astore 1 /* key */
        start local 1 // org.bouncycastle.crypto.params.X448PublicKeyParameters key
        59: .line 176
            new org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
            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
            aload 1 /* key */
            invokevirtual org.bouncycastle.crypto.params.X448PublicKeyParameters.getEncoded:()[B
            invokespecial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;[B)V
            areturn
        end local 1 // org.bouncycastle.crypto.params.X448PublicKeyParameters key
        60: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* publicKey */
            instanceof org.bouncycastle.crypto.params.X25519PublicKeyParameters
            ifeq 63
        61: .line 180
            aload 0 /* publicKey */
            checkcast org.bouncycastle.crypto.params.X25519PublicKeyParameters
            astore 1 /* key */
        start local 1 // org.bouncycastle.crypto.params.X25519PublicKeyParameters key
        62: .line 182
            new org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
            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
            aload 1 /* key */
            invokevirtual org.bouncycastle.crypto.params.X25519PublicKeyParameters.getEncoded:()[B
            invokespecial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;[B)V
            areturn
        end local 1 // org.bouncycastle.crypto.params.X25519PublicKeyParameters key
        63: .line 184
      StackMap locals:
      StackMap stack:
            aload 0 /* publicKey */
            instanceof org.bouncycastle.crypto.params.Ed448PublicKeyParameters
            ifeq 66
        64: .line 186
            aload 0 /* publicKey */
            checkcast org.bouncycastle.crypto.params.Ed448PublicKeyParameters
            astore 1 /* key */
        start local 1 // org.bouncycastle.crypto.params.Ed448PublicKeyParameters key
        65: .line 188
            new org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
            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
            aload 1 /* key */
            invokevirtual org.bouncycastle.crypto.params.Ed448PublicKeyParameters.getEncoded:()[B
            invokespecial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;[B)V
            areturn
        end local 1 // org.bouncycastle.crypto.params.Ed448PublicKeyParameters key
        66: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* publicKey */
            instanceof org.bouncycastle.crypto.params.Ed25519PublicKeyParameters
            ifeq 69
        67: .line 192
            aload 0 /* publicKey */
            checkcast org.bouncycastle.crypto.params.Ed25519PublicKeyParameters
            astore 1 /* key */
        start local 1 // org.bouncycastle.crypto.params.Ed25519PublicKeyParameters key
        68: .line 194
            new org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
            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
            aload 1 /* key */
            invokevirtual org.bouncycastle.crypto.params.Ed25519PublicKeyParameters.getEncoded:()[B
            invokespecial org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;[B)V
            areturn
        end local 1 // org.bouncycastle.crypto.params.Ed25519PublicKeyParameters key
        69: .line 198
      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 0 // org.bouncycastle.crypto.params.AsymmetricKeyParameter publicKey
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   70     0      publicKey  Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
            2    3     1            pub  Lorg/bouncycastle/crypto/params/RSAKeyParameters;
            5   10     1            pub  Lorg/bouncycastle/crypto/params/DSAPublicKeyParameters;
            6   10     2         params  Lorg/bouncycastle/asn1/x509/DSAParameter;
            7   10     3      dsaParams  Lorg/bouncycastle/crypto/params/DSAParameters;
           12   57     1            pub  Lorg/bouncycastle/crypto/params/ECPublicKeyParameters;
           13   57     2   domainParams  Lorg/bouncycastle/crypto/params/ECDomainParameters;
           15   16     3         params  Lorg/bouncycastle/asn1/ASN1Encodable;
           21   44     3         params  Lorg/bouncycastle/asn1/ASN1Encodable;
           46   47     3         params  Lorg/bouncycastle/asn1/ASN1Encodable;
           55   57     3         params  Lorg/bouncycastle/asn1/ASN1Encodable;
           18   44     4     gostParams  Lorg/bouncycastle/crypto/params/ECGOST3410Parameters;
           19   44     5             bX  Ljava/math/BigInteger;
           20   44     6             bY  Ljava/math/BigInteger;
           23   26     7     encKeySize  I
           31   34     7     encKeySize  I
           35   44     7     encKeySize  I
           24   26     8         offset  I
           32   34     8         offset  I
           36   44     8         offset  I
           25   26     9  algIdentifier  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
           33   34     9  algIdentifier  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
           37   44     9  algIdentifier  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
           29   37    10          is512  Z
           38   44    10         encKey  [B
           54   55     4            ecP  Lorg/bouncycastle/asn1/x9/X9ECParameters;
           56   57     4              p  Lorg/bouncycastle/asn1/ASN1OctetString;
           59   60     1            key  Lorg/bouncycastle/crypto/params/X448PublicKeyParameters;
           62   63     1            key  Lorg/bouncycastle/crypto/params/X25519PublicKeyParameters;
           65   66     1            key  Lorg/bouncycastle/crypto/params/Ed448PublicKeyParameters;
           68   69     1            key  Lorg/bouncycastle/crypto/params/Ed25519PublicKeyParameters;
      Exception table:
        from    to  target  type
          40    41      42  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      publicKey  

  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 204
            aload 3 /* bI */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 4 /* val */
        start local 4 // byte[] val
         1: .line 205
            aload 4 /* val */
            arraylength
            iload 1 /* size */
            if_icmpge 5
         2: .line 207
            iload 1 /* size */
            newarray 8
            astore 5 /* tmp */
        start local 5 // byte[] tmp
         3: .line 208
            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 209
            aload 5 /* tmp */
            astore 4 /* val */
        end local 5 // byte[] tmp
         5: .line 212
      StackMap locals: byte[]
      StackMap stack:
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         6: goto 9
         7: .line 214
      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 212
            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 216
            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: "SubjectPublicKeyInfoFactory.java"