final class sun.security.pkcs11.P11KeyPairGenerator extends java.security.KeyPairGeneratorSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.pkcs11.P11KeyPairGenerator
  super_class: java.security.KeyPairGeneratorSpi
{
  private final sun.security.pkcs11.Token token;
    descriptor: Lsun/security/pkcs11/Token;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String algorithm;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long mechanism;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int keySize;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.security.spec.AlgorithmParameterSpec params;
    descriptor: Ljava/security/spec/AlgorithmParameterSpec;
    flags: (0x0002) ACC_PRIVATE

  private java.math.BigInteger rsaPublicExponent;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE

  private final int minKeySize;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int maxKeySize;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.security.SecureRandom random;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0002) ACC_PRIVATE

  void <init>(sun.security.pkcs11.Token, java.lang.String, long);
    descriptor: (Lsun/security/pkcs11/Token;Ljava/lang/String;J)V
    flags: (0x0000) 
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // sun.security.pkcs11.P11KeyPairGenerator this
        start local 1 // sun.security.pkcs11.Token token
        start local 2 // java.lang.String algorithm
        start local 3 // long mechanism
         0: .line 85
            aload 0 /* this */
            invokespecial java.security.KeyPairGeneratorSpi.<init>:()V
         1: .line 73
            aload 0 /* this */
            getstatic java.security.spec.RSAKeyGenParameterSpec.F4:Ljava/math/BigInteger;
            putfield sun.security.pkcs11.P11KeyPairGenerator.rsaPublicExponent:Ljava/math/BigInteger;
         2: .line 86
            iconst_m1
            istore 5 /* minKeyLen */
        start local 5 // int minKeyLen
         3: .line 87
            iconst_m1
            istore 6 /* maxKeyLen */
        start local 6 // int maxKeyLen
         4: .line 89
            aload 1 /* token */
            lload 3 /* mechanism */
            invokevirtual sun.security.pkcs11.Token.getMechanismInfo:(J)Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;
            astore 7 /* mechInfo */
        start local 7 // sun.security.pkcs11.wrapper.CK_MECHANISM_INFO mechInfo
         5: .line 90
            aload 7 /* mechInfo */
            ifnull 13
         6: .line 91
            aload 7 /* mechInfo */
            getfield sun.security.pkcs11.wrapper.CK_MECHANISM_INFO.ulMinKeySize:J
            l2i
            istore 5 /* minKeyLen */
         7: .line 92
            aload 7 /* mechInfo */
            getfield sun.security.pkcs11.wrapper.CK_MECHANISM_INFO.ulMaxKeySize:J
            l2i
            istore 6 /* maxKeyLen */
        end local 7 // sun.security.pkcs11.wrapper.CK_MECHANISM_INFO mechInfo
         8: .line 94
            goto 13
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator sun.security.pkcs11.Token java.lang.String long int int
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
         9: astore 7 /* p11e */
        start local 7 // sun.security.pkcs11.wrapper.PKCS11Exception p11e
        10: .line 96
            new java.security.ProviderException
            dup
        11: .line 97
            ldc "Unexpected error while getting mechanism info"
            aload 7 /* p11e */
        12: .line 96
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // sun.security.pkcs11.wrapper.PKCS11Exception p11e
        13: .line 102
      StackMap locals:
      StackMap stack:
            aload 2 /* algorithm */
            ldc "EC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 20
        14: .line 103
            aload 0 /* this */
            sipush 256
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        15: .line 104
            iload 5 /* minKeyLen */
            iconst_m1
            if_icmpeq 16
            iload 5 /* minKeyLen */
            bipush 112
            if_icmpge 17
        16: .line 105
      StackMap locals:
      StackMap stack:
            bipush 112
            istore 5 /* minKeyLen */
        17: .line 107
      StackMap locals:
      StackMap stack:
            iload 6 /* maxKeyLen */
            iconst_m1
            if_icmpeq 18
            iload 6 /* maxKeyLen */
            sipush 2048
            if_icmple 26
        18: .line 108
      StackMap locals:
      StackMap stack:
            sipush 2048
            istore 6 /* maxKeyLen */
        19: .line 110
            goto 26
        20: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            sipush 1024
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        21: .line 113
            iload 5 /* minKeyLen */
            iconst_m1
            if_icmpeq 22
            iload 5 /* minKeyLen */
            sipush 512
            if_icmpge 23
        22: .line 114
      StackMap locals:
      StackMap stack:
            sipush 512
            istore 5 /* minKeyLen */
        23: .line 116
      StackMap locals:
      StackMap stack:
            aload 2 /* algorithm */
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        24: .line 117
            iload 6 /* maxKeyLen */
            iconst_m1
            if_icmpeq 25
            iload 6 /* maxKeyLen */
            ldc 65536
            if_icmple 26
        25: .line 118
      StackMap locals:
      StackMap stack:
            ldc 65536
            istore 6 /* maxKeyLen */
        26: .line 124
      StackMap locals:
      StackMap stack:
            iload 5 /* minKeyLen */
            iconst_m1
            if_icmpeq 28
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            iload 5 /* minKeyLen */
            if_icmpge 28
        27: .line 125
            aload 0 /* this */
            iload 5 /* minKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        28: .line 127
      StackMap locals:
      StackMap stack:
            iload 6 /* maxKeyLen */
            iconst_m1
            if_icmpeq 30
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            iload 6 /* maxKeyLen */
            if_icmple 30
        29: .line 128
            aload 0 /* this */
            iload 6 /* maxKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        30: .line 130
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* token */
            putfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
        31: .line 131
            aload 0 /* this */
            aload 2 /* algorithm */
            putfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
        32: .line 132
            aload 0 /* this */
            lload 3 /* mechanism */
            putfield sun.security.pkcs11.P11KeyPairGenerator.mechanism:J
        33: .line 133
            aload 0 /* this */
            iload 5 /* minKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
        34: .line 134
            aload 0 /* this */
            iload 6 /* maxKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
        35: .line 135
            aload 2 /* algorithm */
            ldc "EC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 38
        36: .line 136
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_EC_KEY_SIZE:I
            aconst_null
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.initialize:(ILjava/security/SecureRandom;)V
        37: .line 137
            goto 45
        38: .line 138
      StackMap locals:
      StackMap stack:
            aload 2 /* algorithm */
            ldc "DSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 41
        39: .line 139
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_DSA_KEY_SIZE:I
            aconst_null
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.initialize:(ILjava/security/SecureRandom;)V
        40: .line 140
            goto 45
      StackMap locals:
      StackMap stack:
        41: aload 2 /* algorithm */
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 44
        42: .line 141
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_RSA_KEY_SIZE:I
            aconst_null
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.initialize:(ILjava/security/SecureRandom;)V
        43: .line 142
            goto 45
        44: .line 143
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_DH_KEY_SIZE:I
            aconst_null
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.initialize:(ILjava/security/SecureRandom;)V
        45: .line 146
      StackMap locals:
      StackMap stack:
            return
        end local 6 // int maxKeyLen
        end local 5 // int minKeyLen
        end local 3 // long mechanism
        end local 2 // java.lang.String algorithm
        end local 1 // sun.security.pkcs11.Token token
        end local 0 // sun.security.pkcs11.P11KeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   46     0       this  Lsun/security/pkcs11/P11KeyPairGenerator;
            0   46     1      token  Lsun/security/pkcs11/Token;
            0   46     2  algorithm  Ljava/lang/String;
            0   46     3  mechanism  J
            3   46     5  minKeyLen  I
            4   46     6  maxKeyLen  I
            5    8     7   mechInfo  Lsun/security/pkcs11/wrapper/CK_MECHANISM_INFO;
           10   13     7       p11e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
           4     8       9  Class sun.security.pkcs11.wrapper.PKCS11Exception
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
           Name  Flags
      token      
      algorithm  
      mechanism  

  public void initialize(int, java.security.SecureRandom);
    descriptor: (ILjava/security/SecureRandom;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // sun.security.pkcs11.P11KeyPairGenerator this
        start local 1 // int keySize
        start local 2 // java.security.SecureRandom random
         0: .line 151
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 153
            aload 0 /* this */
            iload 1 /* keySize */
            aconst_null
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.checkKeySize:(ILjava/security/spec/AlgorithmParameterSpec;)V
         2: .line 154
            goto 5
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
         3: astore 3 /* e */
        start local 3 // java.security.InvalidAlgorithmParameterException e
         4: .line 155
            new java.security.InvalidParameterException
            dup
            aload 3 /* e */
            invokevirtual java.security.InvalidAlgorithmParameterException.getMessage:()Ljava/lang/String;
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.security.InvalidAlgorithmParameterException e
         5: .line 157
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
         6: .line 158
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "EC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 14
         7: .line 159
            aload 0 /* this */
            iload 1 /* keySize */
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getECParameterSpec:(I)Ljava/security/spec/ECParameterSpec;
            putfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
         8: .line 160
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            ifnonnull 14
         9: .line 161
            new java.security.InvalidParameterException
            dup
        10: .line 162
            new java.lang.StringBuilder
            dup
            ldc "No EC parameters available for key size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        11: .line 163
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bits"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: .line 162
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 161
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 166
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* keySize */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        15: .line 167
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        16: .line 168
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // int keySize
        end local 0 // sun.security.pkcs11.P11KeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0     this  Lsun/security/pkcs11/P11KeyPairGenerator;
            0   17     1  keySize  I
            0   17     2   random  Ljava/security/SecureRandom;
            4    5     3        e  Ljava/security/InvalidAlgorithmParameterException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.security.InvalidAlgorithmParameterException
    MethodParameters:
         Name  Flags
      keySize  
      random   

  public void initialize(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // sun.security.pkcs11.P11KeyPairGenerator this
        start local 1 // java.security.spec.AlgorithmParameterSpec params
        start local 2 // java.security.SecureRandom random
         0: .line 174
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 176
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "DH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         2: .line 177
            aload 1 /* params */
            instanceof javax.crypto.spec.DHParameterSpec
            ifne 6
         3: .line 178
            new java.security.InvalidAlgorithmParameterException
            dup
         4: .line 179
            ldc "DHParameterSpec required for Diffie-Hellman"
         5: .line 178
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 181
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            checkcast javax.crypto.spec.DHParameterSpec
            astore 4 /* dhParams */
        start local 4 // javax.crypto.spec.DHParameterSpec dhParams
         7: .line 182
            aload 4 /* dhParams */
            invokevirtual javax.crypto.spec.DHParameterSpec.getP:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 3 /* tmpKeySize */
        start local 3 // int tmpKeySize
         8: .line 183
            aload 0 /* this */
            iload 3 /* tmpKeySize */
            aload 4 /* dhParams */
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.checkKeySize:(ILjava/security/spec/AlgorithmParameterSpec;)V
        end local 4 // javax.crypto.spec.DHParameterSpec dhParams
         9: .line 185
            goto 55
        end local 3 // int tmpKeySize
      StackMap locals:
      StackMap stack:
        10: aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 22
        11: .line 186
            aload 1 /* params */
            instanceof java.security.spec.RSAKeyGenParameterSpec
            ifne 15
        12: .line 187
            new java.security.InvalidAlgorithmParameterException
            dup
        13: .line 188
            ldc "RSAKeyGenParameterSpec required for RSA"
        14: .line 187
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 191
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            checkcast java.security.spec.RSAKeyGenParameterSpec
        16: .line 190
            astore 4 /* rsaParams */
        start local 4 // java.security.spec.RSAKeyGenParameterSpec rsaParams
        17: .line 192
            aload 4 /* rsaParams */
            invokevirtual java.security.spec.RSAKeyGenParameterSpec.getKeysize:()I
            istore 3 /* tmpKeySize */
        start local 3 // int tmpKeySize
        18: .line 193
            aload 0 /* this */
            iload 3 /* tmpKeySize */
            aload 4 /* rsaParams */
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.checkKeySize:(ILjava/security/spec/AlgorithmParameterSpec;)V
        19: .line 195
            aconst_null
            astore 1 /* params */
        20: .line 196
            aload 0 /* this */
            aload 4 /* rsaParams */
            invokevirtual java.security.spec.RSAKeyGenParameterSpec.getPublicExponent:()Ljava/math/BigInteger;
            putfield sun.security.pkcs11.P11KeyPairGenerator.rsaPublicExponent:Ljava/math/BigInteger;
        end local 4 // java.security.spec.RSAKeyGenParameterSpec rsaParams
        21: .line 198
            goto 55
        end local 3 // int tmpKeySize
      StackMap locals:
      StackMap stack:
        22: aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "DSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 31
        23: .line 199
            aload 1 /* params */
            instanceof java.security.spec.DSAParameterSpec
            ifne 27
        24: .line 200
            new java.security.InvalidAlgorithmParameterException
            dup
        25: .line 201
            ldc "DSAParameterSpec required for DSA"
        26: .line 200
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 203
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            checkcast java.security.spec.DSAParameterSpec
            astore 4 /* dsaParams */
        start local 4 // java.security.spec.DSAParameterSpec dsaParams
        28: .line 204
            aload 4 /* dsaParams */
            invokevirtual java.security.spec.DSAParameterSpec.getP:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 3 /* tmpKeySize */
        start local 3 // int tmpKeySize
        29: .line 205
            aload 0 /* this */
            iload 3 /* tmpKeySize */
            aload 4 /* dsaParams */
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.checkKeySize:(ILjava/security/spec/AlgorithmParameterSpec;)V
        end local 4 // java.security.spec.DSAParameterSpec dsaParams
        30: .line 207
            goto 55
        end local 3 // int tmpKeySize
      StackMap locals:
      StackMap stack:
        31: aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "EC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 54
        32: .line 209
            aload 1 /* params */
            instanceof java.security.spec.ECParameterSpec
            ifeq 39
        33: .line 211
            aload 1 /* params */
            checkcast java.security.spec.ECParameterSpec
        34: .line 210
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getECParameterSpec:(Ljava/security/spec/ECParameterSpec;)Ljava/security/spec/ECParameterSpec;
            astore 4 /* ecParams */
        start local 4 // java.security.spec.ECParameterSpec ecParams
        35: .line 212
            aload 4 /* ecParams */
            ifnonnull 51
        36: .line 213
            new java.security.InvalidAlgorithmParameterException
            dup
        37: .line 214
            new java.lang.StringBuilder
            dup
            ldc "Unsupported curve: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* params */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        38: .line 213
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.security.spec.ECParameterSpec ecParams
        39: .line 216
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            instanceof java.security.spec.ECGenParameterSpec
            ifeq 48
        40: .line 217
            aload 1 /* params */
            checkcast java.security.spec.ECGenParameterSpec
            invokevirtual java.security.spec.ECGenParameterSpec.getName:()Ljava/lang/String;
            astore 5 /* name */
        start local 5 // java.lang.String name
        41: .line 218
            aload 5 /* name */
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getECParameterSpec:(Ljava/lang/String;)Ljava/security/spec/ECParameterSpec;
            astore 4 /* ecParams */
        start local 4 // java.security.spec.ECParameterSpec ecParams
        42: .line 219
            aload 4 /* ecParams */
            ifnonnull 46
        43: .line 220
            new java.security.InvalidAlgorithmParameterException
            dup
        44: .line 221
            new java.lang.StringBuilder
            dup
            ldc "Unknown curve name: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        45: .line 220
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        46: .line 224
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator java.security.spec.AlgorithmParameterSpec java.security.SecureRandom top java.security.spec.ECParameterSpec java.lang.String
      StackMap stack:
            aload 4 /* ecParams */
            astore 1 /* params */
        end local 5 // java.lang.String name
        47: .line 225
            goto 51
        end local 4 // java.security.spec.ECParameterSpec ecParams
        48: .line 226
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator java.security.spec.AlgorithmParameterSpec java.security.SecureRandom
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        49: .line 227
            ldc "ECParameterSpec or ECGenParameterSpec required for EC"
        50: .line 226
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        start local 4 // java.security.spec.ECParameterSpec ecParams
        51: .line 229
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator java.security.spec.AlgorithmParameterSpec java.security.SecureRandom top java.security.spec.ECParameterSpec
      StackMap stack:
            aload 4 /* ecParams */
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
            invokevirtual java.security.spec.EllipticCurve.getField:()Ljava/security/spec/ECField;
            invokeinterface java.security.spec.ECField.getFieldSize:()I
            istore 3 /* tmpKeySize */
        start local 3 // int tmpKeySize
        52: .line 230
            aload 0 /* this */
            iload 3 /* tmpKeySize */
            aload 4 /* ecParams */
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.checkKeySize:(ILjava/security/spec/AlgorithmParameterSpec;)V
        end local 4 // java.security.spec.ECParameterSpec ecParams
        53: .line 231
            goto 55
        end local 3 // int tmpKeySize
        54: .line 232
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator java.security.spec.AlgorithmParameterSpec java.security.SecureRandom
      StackMap stack:
            new java.security.ProviderException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        start local 3 // int tmpKeySize
        55: .line 234
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* tmpKeySize */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        56: .line 235
            aload 0 /* this */
            aload 1 /* params */
            putfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
        57: .line 236
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        58: .line 237
            return
        end local 3 // int tmpKeySize
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.spec.AlgorithmParameterSpec params
        end local 0 // sun.security.pkcs11.P11KeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   59     0        this  Lsun/security/pkcs11/P11KeyPairGenerator;
            0   59     1      params  Ljava/security/spec/AlgorithmParameterSpec;
            0   59     2      random  Ljava/security/SecureRandom;
            8   10     3  tmpKeySize  I
           18   22     3  tmpKeySize  I
           29   31     3  tmpKeySize  I
           52   54     3  tmpKeySize  I
           55   59     3  tmpKeySize  I
            7    9     4    dhParams  Ljavax/crypto/spec/DHParameterSpec;
           17   21     4   rsaParams  Ljava/security/spec/RSAKeyGenParameterSpec;
           28   30     4   dsaParams  Ljava/security/spec/DSAParameterSpec;
           35   39     4    ecParams  Ljava/security/spec/ECParameterSpec;
           42   48     4    ecParams  Ljava/security/spec/ECParameterSpec;
           51   53     4    ecParams  Ljava/security/spec/ECParameterSpec;
           41   47     5        name  Ljava/lang/String;
    Exceptions:
      throws java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      params  
      random  

  private void checkKeySize(int, java.security.spec.AlgorithmParameterSpec);
    descriptor: (ILjava/security/spec/AlgorithmParameterSpec;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // sun.security.pkcs11.P11KeyPairGenerator this
        start local 1 // int keySize
        start local 2 // java.security.spec.AlgorithmParameterSpec params
         0: .line 242
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
            iconst_m1
            if_icmpeq 5
            iload 1 /* keySize */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
            if_icmpge 5
         1: .line 243
            new java.security.InvalidAlgorithmParameterException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 244
            ldc " key must be at least "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bits. "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 245
            ldc "The specific key size "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " is not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 243
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 247
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
            iconst_m1
            if_icmpeq 10
            iload 1 /* keySize */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
            if_icmple 10
         6: .line 248
            new java.security.InvalidAlgorithmParameterException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 249
            ldc " key must be at most "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bits. "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 250
            ldc "The specific key size "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " is not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 248
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 254
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "EC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 23
        11: .line 255
            iload 1 /* keySize */
            bipush 112
            if_icmpge 17
        12: .line 256
            new java.security.InvalidAlgorithmParameterException
            dup
        13: .line 257
            new java.lang.StringBuilder
            dup
            ldc "EC key size must be at least 112 bit. The specific key size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        14: .line 258
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " is not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        15: .line 257
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 256
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 260
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 2048
            if_icmple 71
        18: .line 262
            new java.security.InvalidAlgorithmParameterException
            dup
        19: .line 263
            new java.lang.StringBuilder
            dup
            ldc "EC key size must be at most 2048 bit. The specific key size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        20: .line 264
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " is not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 263
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        22: .line 262
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 268
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 512
            if_icmpge 28
        24: .line 269
            new java.security.InvalidAlgorithmParameterException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        25: .line 270
            ldc " key size must be at least 512 bit. "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        26: .line 271
            ldc "The specific key size "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " is not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        27: .line 269
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        28: .line 273
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 41
        29: .line 274
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.rsaPublicExponent:Ljava/math/BigInteger;
            astore 3 /* tmpExponent */
        start local 3 // java.math.BigInteger tmpExponent
        30: .line 275
            aload 2 /* params */
            ifnull 33
        31: .line 277
            aload 2 /* params */
            checkcast java.security.spec.RSAKeyGenParameterSpec
            invokevirtual java.security.spec.RSAKeyGenParameterSpec.getPublicExponent:()Ljava/math/BigInteger;
        32: .line 276
            astore 3 /* tmpExponent */
        33: .line 283
      StackMap locals: java.math.BigInteger
      StackMap stack:
            iload 1 /* keySize */
            aload 3 /* tmpExponent */
        34: .line 284
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
        35: .line 285
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
            iconst_m1
            if_icmpne 36
            ldc 2147483647
            goto 37
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator int java.security.spec.AlgorithmParameterSpec java.math.BigInteger
      StackMap stack: int java.math.BigInteger int
        36: aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
        37: .line 283
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator int java.security.spec.AlgorithmParameterSpec java.math.BigInteger
      StackMap stack: int java.math.BigInteger int int
            invokestatic sun.security.rsa.RSAKeyFactory.checkKeyLengths:(ILjava/math/BigInteger;II)V
        38: .line 286
            goto 71
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
        39: astore 4 /* e */
        start local 4 // java.security.InvalidKeyException e
        40: .line 287
            new java.security.InvalidAlgorithmParameterException
            dup
            aload 4 /* e */
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.InvalidKeyException e
        end local 3 // java.math.BigInteger tmpExponent
        41: .line 289
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "DH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 64
        42: .line 290
            aload 2 /* params */
            ifnull 49
        43: .line 292
            iload 1 /* keySize */
            ldc 65536
            if_icmple 71
        44: .line 293
            new java.security.InvalidAlgorithmParameterException
            dup
        45: .line 294
            new java.lang.StringBuilder
            dup
            ldc "DH key size must be at most 65536 bit. The specific key size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        46: .line 296
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " is not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        47: .line 294
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        48: .line 293
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        49: .line 301
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 8192
            if_icmpgt 51
            iload 1 /* keySize */
            sipush 512
            if_icmplt 51
        50: .line 302
            iload 1 /* keySize */
            bipush 63
            iand
            ifeq 56
        51: .line 303
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        52: .line 304
            new java.lang.StringBuilder
            dup
            ldc "DH key size must be multiple of 64, and can only range from 512 to 8192 (inclusive). The specific key size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        53: .line 307
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " is not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        54: .line 304
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        55: .line 303
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        56: .line 311
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            invokestatic sun.security.provider.ParameterCache.getCachedDHParameterSpec:(I)Ljavax/crypto/spec/DHParameterSpec;
        57: .line 310
            astore 3 /* cache */
        start local 3 // javax.crypto.spec.DHParameterSpec cache
        58: .line 314
            aload 3 /* cache */
            ifnonnull 71
            iload 1 /* keySize */
            sipush 1024
            if_icmple 71
        59: .line 315
            new java.security.InvalidAlgorithmParameterException
            dup
        60: .line 316
            new java.lang.StringBuilder
            dup
            ldc "Unsupported "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        61: .line 317
            ldc "-bit DH parameter generation"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        62: .line 316
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        63: .line 315
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // javax.crypto.spec.DHParameterSpec cache
        64: .line 322
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 3072
            if_icmpeq 71
            iload 1 /* keySize */
            sipush 2048
            if_icmpeq 71
        65: .line 323
            iload 1 /* keySize */
            sipush 1024
            if_icmpgt 66
            iload 1 /* keySize */
            bipush 63
            iand
            ifeq 71
        66: .line 324
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        67: .line 325
            new java.lang.StringBuilder
            dup
            ldc "DSA key must be multiples of 64 if less than 1024 bits, or 2048, 3072 bits. The specific key size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        68: .line 328
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " is not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        69: .line 325
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        70: .line 324
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        71: .line 332
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.security.spec.AlgorithmParameterSpec params
        end local 1 // int keySize
        end local 0 // sun.security.pkcs11.P11KeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   72     0         this  Lsun/security/pkcs11/P11KeyPairGenerator;
            0   72     1      keySize  I
            0   72     2       params  Ljava/security/spec/AlgorithmParameterSpec;
           30   41     3  tmpExponent  Ljava/math/BigInteger;
           40   41     4            e  Ljava/security/InvalidKeyException;
           58   64     3        cache  Ljavax/crypto/spec/DHParameterSpec;
      Exception table:
        from    to  target  type
          33    38      39  Class java.security.InvalidKeyException
    Exceptions:
      throws java.security.InvalidAlgorithmParameterException
    MethodParameters:
         Name  Flags
      keySize  
      params   

  public java.security.KeyPair generateKeyPair();
    descriptor: ()Ljava/security/KeyPair;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=11, args_size=1
        start local 0 // sun.security.pkcs11.P11KeyPairGenerator this
         0: .line 337
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 341
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         2: .line 342
            lconst_0
            lstore 3 /* keyType */
        start local 3 // long keyType
         3: .line 343
            iconst_2
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
         4: .line 344
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 289
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            i2l
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
            dup
            iconst_1
         5: .line 345
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 290
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.rsaPublicExponent:Ljava/math/BigInteger;
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/math/BigInteger;)V
            aastore
         6: .line 343
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
         7: .line 347
            iconst_0
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            astore 2 /* privateKeyTemplate */
        start local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
         8: .line 350
            goto 63
        end local 3 // long keyType
        end local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
        end local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
      StackMap locals:
      StackMap stack:
         9: aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "DSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 27
        10: .line 351
            lconst_1
            lstore 3 /* keyType */
        start local 3 // long keyType
        11: .line 353
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            ifnonnull 19
        12: .line 356
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        13: .line 355
            invokestatic sun.security.provider.ParameterCache.getDSAParameterSpec:(ILjava/security/SecureRandom;)Ljava/security/spec/DSAParameterSpec;
            astore 5 /* dsaParams */
        start local 5 // java.security.spec.DSAParameterSpec dsaParams
        14: .line 357
            goto 20
        end local 5 // java.security.spec.DSAParameterSpec dsaParams
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator top top long
      StackMap stack: java.security.GeneralSecurityException
        15: astore 6 /* e */
        start local 6 // java.security.GeneralSecurityException e
        16: .line 358
            new java.security.ProviderException
            dup
        17: .line 359
            ldc "Could not generate DSA parameters"
            aload 6 /* e */
        18: .line 358
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.security.GeneralSecurityException e
        19: .line 362
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            checkcast java.security.spec.DSAParameterSpec
            astore 5 /* dsaParams */
        start local 5 // java.security.spec.DSAParameterSpec dsaParams
        20: .line 364
      StackMap locals: java.security.spec.DSAParameterSpec
      StackMap stack:
            iconst_3
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        21: .line 365
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 304
            aload 5 /* dsaParams */
            invokevirtual java.security.spec.DSAParameterSpec.getP:()Ljava/math/BigInteger;
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/math/BigInteger;)V
            aastore
            dup
            iconst_1
        22: .line 366
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 305
            aload 5 /* dsaParams */
            invokevirtual java.security.spec.DSAParameterSpec.getQ:()Ljava/math/BigInteger;
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/math/BigInteger;)V
            aastore
            dup
            iconst_2
        23: .line 367
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 306
            aload 5 /* dsaParams */
            invokevirtual java.security.spec.DSAParameterSpec.getG:()Ljava/math/BigInteger;
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/math/BigInteger;)V
            aastore
        24: .line 364
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        25: .line 369
            iconst_0
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            astore 2 /* privateKeyTemplate */
        end local 5 // java.security.spec.DSAParameterSpec dsaParams
        start local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
        26: .line 372
            goto 63
        end local 3 // long keyType
        end local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
        end local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator
      StackMap stack:
        27: aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "DH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 53
        28: .line 373
            ldc 2
            lstore 3 /* keyType */
        start local 3 // long keyType
        29: .line 376
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            ifnonnull 39
        30: .line 379
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        31: .line 378
            invokestatic sun.security.provider.ParameterCache.getDHParameterSpec:(ILjava/security/SecureRandom;)Ljavax/crypto/spec/DHParameterSpec;
            astore 5 /* dhParams */
        start local 5 // javax.crypto.spec.DHParameterSpec dhParams
        32: .line 380
            goto 37
        end local 5 // javax.crypto.spec.DHParameterSpec dhParams
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator top top long
      StackMap stack: java.security.GeneralSecurityException
        33: astore 7 /* e */
        start local 7 // java.security.GeneralSecurityException e
        34: .line 381
            new java.security.ProviderException
            dup
        35: .line 382
            ldc "Could not generate DH parameters"
            aload 7 /* e */
        36: .line 381
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.security.GeneralSecurityException e
        start local 5 // javax.crypto.spec.DHParameterSpec dhParams
        37: .line 384
      StackMap locals: javax.crypto.spec.DHParameterSpec
      StackMap stack:
            iconst_0
            istore 6 /* privateBits */
        start local 6 // int privateBits
        38: .line 385
            goto 41
        end local 6 // int privateBits
        end local 5 // javax.crypto.spec.DHParameterSpec dhParams
        39: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            checkcast javax.crypto.spec.DHParameterSpec
            astore 5 /* dhParams */
        start local 5 // javax.crypto.spec.DHParameterSpec dhParams
        40: .line 387
            aload 5 /* dhParams */
            invokevirtual javax.crypto.spec.DHParameterSpec.getL:()I
            istore 6 /* privateBits */
        start local 6 // int privateBits
        41: .line 389
      StackMap locals: javax.crypto.spec.DHParameterSpec int
      StackMap stack:
            iload 6 /* privateBits */
            ifgt 45
        42: .line 391
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            sipush 1024
            if_icmplt 43
            sipush 768
            goto 44
      StackMap locals:
      StackMap stack:
        43: sipush 512
      StackMap locals:
      StackMap stack: int
        44: istore 6 /* privateBits */
        45: .line 393
      StackMap locals:
      StackMap stack:
            iconst_2
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        46: .line 394
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 304
            aload 5 /* dhParams */
            invokevirtual javax.crypto.spec.DHParameterSpec.getP:()Ljava/math/BigInteger;
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/math/BigInteger;)V
            aastore
            dup
            iconst_1
        47: .line 395
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 306
            aload 5 /* dhParams */
            invokevirtual javax.crypto.spec.DHParameterSpec.getG:()Ljava/math/BigInteger;
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/math/BigInteger;)V
            aastore
        48: .line 393
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        49: .line 397
            iconst_1
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        50: .line 398
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 352
            iload 6 /* privateBits */
            i2l
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
        51: .line 397
            astore 2 /* privateKeyTemplate */
        end local 6 // int privateBits
        end local 5 // javax.crypto.spec.DHParameterSpec dhParams
        start local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
        52: .line 400
            goto 63
        end local 3 // long keyType
        end local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
        end local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator
      StackMap stack:
        53: aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            ldc "EC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 62
        54: .line 401
            ldc 3
            lstore 3 /* keyType */
        start local 3 // long keyType
        55: .line 403
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            checkcast java.security.spec.ECParameterSpec
            invokestatic sun.security.pkcs11.P11ECKeyFactory.encodeParameters:(Ljava/security/spec/ECParameterSpec;)[B
        56: .line 402
            astore 5 /* encodedParams */
        start local 5 // byte[] encodedParams
        57: .line 404
            iconst_1
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        58: .line 405
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 384
            aload 5 /* encodedParams */
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/lang/Object;)V
            aastore
        59: .line 404
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        60: .line 407
            iconst_0
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            astore 2 /* privateKeyTemplate */
        end local 5 // byte[] encodedParams
        start local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
        61: .line 410
            goto 63
        end local 3 // long keyType
        end local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
        end local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        62: .line 411
      StackMap locals:
      StackMap stack:
            new java.security.ProviderException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        start local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
        start local 3 // long keyType
        63: .line 413
      StackMap locals: sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] long
      StackMap stack:
            aconst_null
            astore 5 /* session */
        start local 5 // sun.security.pkcs11.Session session
        64: .line 415
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getObjSession:()Lsun/security/pkcs11/Session;
            astore 5 /* session */
        65: .line 416
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
        66: .line 417
            ldc "generate"
            ldc 2
            lload 3 /* keyType */
            aload 1 /* publicKeyTemplate */
        67: .line 416
            invokevirtual sun.security.pkcs11.Token.getAttributes:(Ljava/lang/String;JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            astore 1 /* publicKeyTemplate */
        68: .line 418
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
        69: .line 419
            ldc "generate"
            ldc 3
            lload 3 /* keyType */
            aload 2 /* privateKeyTemplate */
        70: .line 418
            invokevirtual sun.security.pkcs11.Token.getAttributes:(Ljava/lang/String;JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            astore 2 /* privateKeyTemplate */
        71: .line 420
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        72: .line 421
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            new sun.security.pkcs11.wrapper.CK_MECHANISM
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.mechanism:J
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM.<init>:(J)V
        73: .line 422
            aload 1 /* publicKeyTemplate */
            aload 2 /* privateKeyTemplate */
        74: .line 420
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GenerateKeyPair:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[J
            astore 6 /* keyIDs */
        start local 6 // long[] keyIDs
        75: .line 424
            aload 5 /* session */
            aload 6 /* keyIDs */
            iconst_0
            laload
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            aload 1 /* publicKeyTemplate */
        76: .line 423
            invokestatic sun.security.pkcs11.P11Key.publicKey:(Lsun/security/pkcs11/Session;JLjava/lang/String;I[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)Ljava/security/PublicKey;
            astore 7 /* publicKey */
        start local 7 // java.security.PublicKey publicKey
        77: .line 426
            aload 5 /* session */
            aload 6 /* keyIDs */
            iconst_1
            laload
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            aload 2 /* privateKeyTemplate */
        78: .line 425
            invokestatic sun.security.pkcs11.P11Key.privateKey:(Lsun/security/pkcs11/Session;JLjava/lang/String;I[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)Ljava/security/PrivateKey;
            astore 8 /* privateKey */
        start local 8 // java.security.PrivateKey privateKey
        79: .line 427
            new java.security.KeyPair
            dup
            aload 7 /* publicKey */
            aload 8 /* privateKey */
            invokespecial java.security.KeyPair.<init>:(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V
            astore 10
        80: .line 431
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        81: .line 427
            aload 10
            areturn
        end local 8 // java.security.PrivateKey privateKey
        end local 7 // java.security.PublicKey publicKey
        end local 6 // long[] keyIDs
        82: .line 428
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] long sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 6 /* e */
        start local 6 // sun.security.pkcs11.wrapper.PKCS11Exception e
        83: .line 429
            new java.security.ProviderException
            dup
            aload 6 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 6 // sun.security.pkcs11.wrapper.PKCS11Exception e
        84: .line 430
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        85: .line 431
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        86: .line 432
            aload 9
            athrow
        end local 5 // sun.security.pkcs11.Session session
        end local 3 // long keyType
        end local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
        end local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        end local 0 // sun.security.pkcs11.P11KeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   87     0                this  Lsun/security/pkcs11/P11KeyPairGenerator;
            7    9     1   publicKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           25   27     1   publicKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           49   53     1   publicKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           60   62     1   publicKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           63   87     1   publicKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            8    9     2  privateKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           26   27     2  privateKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           52   53     2  privateKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           61   62     2  privateKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           63   87     2  privateKeyTemplate  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            3    9     3             keyType  J
           11   27     3             keyType  J
           29   53     3             keyType  J
           55   62     3             keyType  J
           63   87     3             keyType  J
           14   15     5           dsaParams  Ljava/security/spec/DSAParameterSpec;
           20   26     5           dsaParams  Ljava/security/spec/DSAParameterSpec;
           16   19     6                   e  Ljava/security/GeneralSecurityException;
           32   33     5            dhParams  Ljavax/crypto/spec/DHParameterSpec;
           37   39     5            dhParams  Ljavax/crypto/spec/DHParameterSpec;
           40   52     5            dhParams  Ljavax/crypto/spec/DHParameterSpec;
           38   39     6         privateBits  I
           41   52     6         privateBits  I
           34   37     7                   e  Ljava/security/GeneralSecurityException;
           57   61     5       encodedParams  [B
           64   87     5             session  Lsun/security/pkcs11/Session;
           75   82     6              keyIDs  [J
           77   82     7           publicKey  Ljava/security/PublicKey;
           79   82     8          privateKey  Ljava/security/PrivateKey;
           83   84     6                   e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
          12    14      15  Class java.security.GeneralSecurityException
          30    32      33  Class java.security.GeneralSecurityException
          64    80      82  Class sun.security.pkcs11.wrapper.PKCS11Exception
          64    80      84  any
          82    84      84  any
}
SourceFile: "P11KeyPairGenerator.java"