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_0
            istore 5 /* minKeyLen */
        start local 5 // int minKeyLen
         3: .line 87
            ldc 2147483647
            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.iMinKeySize:I
            istore 5 /* minKeyLen */
         7: .line 92
            aload 7 /* mechInfo */
            getfield sun.security.pkcs11.wrapper.CK_MECHANISM_INFO.iMaxKeySize:I
            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 */
            getstatic sun.security.util.SecurityProviderConstants.DEF_EC_KEY_SIZE:I
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        15: .line 104
            iload 5 /* minKeyLen */
            bipush 112
            if_icmpge 17
        16: .line 105
            bipush 112
            istore 5 /* minKeyLen */
        17: .line 107
      StackMap locals:
      StackMap stack:
            iload 6 /* maxKeyLen */
            sipush 2048
            if_icmple 31
        18: .line 108
            sipush 2048
            istore 6 /* maxKeyLen */
        19: .line 110
            goto 31
        20: .line 111
      StackMap locals:
      StackMap stack:
            aload 2 /* algorithm */
            ldc "DSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 23
        21: .line 112
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_DSA_KEY_SIZE:I
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        22: .line 113
            goto 29
      StackMap locals:
      StackMap stack:
        23: aload 2 /* algorithm */
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 28
        24: .line 114
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_RSA_KEY_SIZE:I
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        25: .line 115
            iload 6 /* maxKeyLen */
            ldc 65536
            if_icmple 29
        26: .line 116
            ldc 65536
            istore 6 /* maxKeyLen */
        27: .line 118
            goto 29
        28: .line 119
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_DH_KEY_SIZE:I
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        29: .line 121
      StackMap locals:
      StackMap stack:
            iload 5 /* minKeyLen */
            sipush 512
            if_icmpge 31
        30: .line 122
            sipush 512
            istore 5 /* minKeyLen */
        31: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            iload 5 /* minKeyLen */
            if_icmpge 33
        32: .line 128
            aload 0 /* this */
            iload 5 /* minKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        33: .line 130
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            iload 6 /* maxKeyLen */
            if_icmple 35
        34: .line 131
            aload 0 /* this */
            iload 6 /* maxKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        35: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* token */
            putfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
        36: .line 134
            aload 0 /* this */
            aload 2 /* algorithm */
            putfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
        37: .line 135
            aload 0 /* this */
            lload 3 /* mechanism */
            putfield sun.security.pkcs11.P11KeyPairGenerator.mechanism:J
        38: .line 136
            aload 0 /* this */
            iload 5 /* minKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
        39: .line 137
            aload 0 /* this */
            iload 6 /* maxKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
        40: .line 138
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            aconst_null
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.initialize:(ILjava/security/SecureRandom;)V
        41: .line 139
            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   42     0       this  Lsun/security/pkcs11/P11KeyPairGenerator;
            0   42     1      token  Lsun/security/pkcs11/Token;
            0   42     2  algorithm  Ljava/lang/String;
            0   42     3  mechanism  J
            3   42     5  minKeyLen  I
            4   42     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 144
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 146
            aload 0 /* this */
            iload 1 /* keySize */
            aconst_null
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.checkKeySize:(ILjava/security/spec/AlgorithmParameterSpec;)V
         2: .line 147
            goto 5
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
         3: astore 3 /* e */
        start local 3 // java.security.InvalidAlgorithmParameterException e
         4: .line 148
            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 150
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
         6: .line 151
            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 152
            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 153
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            ifnonnull 14
         9: .line 154
            new java.security.InvalidParameterException
            dup
        10: .line 155
            new java.lang.StringBuilder
            dup
            ldc "No EC parameters available for key size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        11: .line 156
            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 155
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 154
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 159
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* keySize */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        15: .line 160
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        16: .line 161
            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 167
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 169
            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 170
            aload 1 /* params */
            instanceof javax.crypto.spec.DHParameterSpec
            ifne 6
         3: .line 171
            new java.security.InvalidAlgorithmParameterException
            dup
         4: .line 172
            ldc "DHParameterSpec required for Diffie-Hellman"
         5: .line 171
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 174
      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 175
            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 176
            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 178
            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 179
            aload 1 /* params */
            instanceof java.security.spec.RSAKeyGenParameterSpec
            ifne 15
        12: .line 180
            new java.security.InvalidAlgorithmParameterException
            dup
        13: .line 181
            ldc "RSAKeyGenParameterSpec required for RSA"
        14: .line 180
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 184
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            checkcast java.security.spec.RSAKeyGenParameterSpec
        16: .line 183
            astore 4 /* rsaParams */
        start local 4 // java.security.spec.RSAKeyGenParameterSpec rsaParams
        17: .line 185
            aload 4 /* rsaParams */
            invokevirtual java.security.spec.RSAKeyGenParameterSpec.getKeysize:()I
            istore 3 /* tmpKeySize */
        start local 3 // int tmpKeySize
        18: .line 186
            aload 0 /* this */
            iload 3 /* tmpKeySize */
            aload 4 /* rsaParams */
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.checkKeySize:(ILjava/security/spec/AlgorithmParameterSpec;)V
        19: .line 188
            aconst_null
            astore 1 /* params */
        20: .line 189
            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 191
            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 192
            aload 1 /* params */
            instanceof java.security.spec.DSAParameterSpec
            ifne 27
        24: .line 193
            new java.security.InvalidAlgorithmParameterException
            dup
        25: .line 194
            ldc "DSAParameterSpec required for DSA"
        26: .line 193
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 196
      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 197
            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 198
            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 200
            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 202
            aload 1 /* params */
            instanceof java.security.spec.ECParameterSpec
            ifeq 39
        33: .line 204
            aload 1 /* params */
            checkcast java.security.spec.ECParameterSpec
        34: .line 203
            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 205
            aload 4 /* ecParams */
            ifnonnull 51
        36: .line 206
            new java.security.InvalidAlgorithmParameterException
            dup
        37: .line 207
            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 206
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.security.spec.ECParameterSpec ecParams
        39: .line 209
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            instanceof java.security.spec.ECGenParameterSpec
            ifeq 48
        40: .line 210
            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 211
            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 212
            aload 4 /* ecParams */
            ifnonnull 46
        43: .line 213
            new java.security.InvalidAlgorithmParameterException
            dup
        44: .line 214
            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 213
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        46: .line 217
      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 218
            goto 51
        end local 4 // java.security.spec.ECParameterSpec ecParams
        48: .line 219
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator java.security.spec.AlgorithmParameterSpec java.security.SecureRandom
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        49: .line 220
            ldc "ECParameterSpec or ECGenParameterSpec required for EC"
        50: .line 219
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        start local 4 // java.security.spec.ECParameterSpec ecParams
        51: .line 222
      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 223
            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 224
            goto 55
        end local 3 // int tmpKeySize
        54: .line 225
      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 227
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* tmpKeySize */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        56: .line 228
            aload 0 /* this */
            aload 1 /* params */
            putfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
        57: .line 229
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        58: .line 230
            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 234
            iload 1 /* keySize */
            ifgt 4
         1: .line 235
            new java.security.InvalidAlgorithmParameterException
            dup
         2: .line 236
            new java.lang.StringBuilder
            dup
            ldc "key size must be positive, got "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* keySize */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 235
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 239
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
            if_icmpge 9
         5: .line 240
            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
         6: .line 241
            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;
         7: .line 242
            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;
         8: .line 240
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 244
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
            if_icmple 14
        10: .line 245
            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
        11: .line 246
            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;
        12: .line 247
            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;
        13: .line 245
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 251
      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 27
        15: .line 252
            iload 1 /* keySize */
            bipush 112
            if_icmpge 21
        16: .line 253
            new java.security.InvalidAlgorithmParameterException
            dup
        17: .line 254
            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
        18: .line 255
            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;
        19: .line 254
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 253
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 257
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 2048
            if_icmple 73
        22: .line 259
            new java.security.InvalidAlgorithmParameterException
            dup
        23: .line 260
            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
        24: .line 261
            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;
        25: .line 260
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        26: .line 259
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 265
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 512
            if_icmpge 32
        28: .line 266
            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
        29: .line 267
            ldc " key size must be at least 512 bit. "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        30: .line 268
            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;
        31: .line 266
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 270
      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 43
        33: .line 271
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.rsaPublicExponent:Ljava/math/BigInteger;
            astore 3 /* tmpExponent */
        start local 3 // java.math.BigInteger tmpExponent
        34: .line 272
            aload 2 /* params */
            ifnull 37
        35: .line 274
            aload 2 /* params */
            checkcast java.security.spec.RSAKeyGenParameterSpec
            invokevirtual java.security.spec.RSAKeyGenParameterSpec.getPublicExponent:()Ljava/math/BigInteger;
        36: .line 273
            astore 3 /* tmpExponent */
        37: .line 277
      StackMap locals: java.math.BigInteger
      StackMap stack:
            iload 1 /* keySize */
            aload 3 /* tmpExponent */
        38: .line 278
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
        39: .line 277
            invokestatic sun.security.rsa.RSAKeyFactory.checkKeyLengths:(ILjava/math/BigInteger;II)V
        40: .line 279
            goto 73
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
        41: astore 4 /* e */
        start local 4 // java.security.InvalidKeyException e
        42: .line 280
            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
        43: .line 282
      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 66
        44: .line 283
            aload 2 /* params */
            ifnull 51
        45: .line 285
            iload 1 /* keySize */
            ldc 65536
            if_icmple 73
        46: .line 286
            new java.security.InvalidAlgorithmParameterException
            dup
        47: .line 287
            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
        48: .line 289
            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;
        49: .line 287
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        50: .line 286
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        51: .line 294
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 8192
            if_icmpgt 53
            iload 1 /* keySize */
            sipush 512
            if_icmplt 53
        52: .line 295
            iload 1 /* keySize */
            bipush 63
            iand
            ifeq 58
        53: .line 296
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        54: .line 297
            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
        55: .line 300
            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;
        56: .line 297
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        57: .line 296
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        58: .line 304
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            invokestatic sun.security.provider.ParameterCache.getCachedDHParameterSpec:(I)Ljavax/crypto/spec/DHParameterSpec;
        59: .line 303
            astore 3 /* cache */
        start local 3 // javax.crypto.spec.DHParameterSpec cache
        60: .line 307
            aload 3 /* cache */
            ifnonnull 73
            iload 1 /* keySize */
            sipush 1024
            if_icmple 73
        61: .line 308
            new java.security.InvalidAlgorithmParameterException
            dup
        62: .line 309
            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;
        63: .line 310
            ldc "-bit DH parameter generation"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        64: .line 309
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        65: .line 308
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // javax.crypto.spec.DHParameterSpec cache
        66: .line 315
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 3072
            if_icmpeq 73
            iload 1 /* keySize */
            sipush 2048
            if_icmpeq 73
        67: .line 316
            iload 1 /* keySize */
            sipush 1024
            if_icmpgt 68
            iload 1 /* keySize */
            bipush 63
            iand
            ifeq 73
        68: .line 317
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        69: .line 318
            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
        70: .line 321
            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;
        71: .line 318
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        72: .line 317
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        73: .line 325
      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   74     0         this  Lsun/security/pkcs11/P11KeyPairGenerator;
            0   74     1      keySize  I
            0   74     2       params  Ljava/security/spec/AlgorithmParameterSpec;
           34   43     3  tmpExponent  Ljava/math/BigInteger;
           42   43     4            e  Ljava/security/InvalidKeyException;
           60   66     3        cache  Ljavax/crypto/spec/DHParameterSpec;
      Exception table:
        from    to  target  type
          37    40      41  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 330
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 334
            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 335
            lconst_0
            lstore 3 /* keyType */
        start local 3 // long keyType
         3: .line 336
            iconst_2
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
         4: .line 337
            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 338
            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 336
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
         7: .line 340
            iconst_0
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            astore 2 /* privateKeyTemplate */
        start local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
         8: .line 343
            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 344
            lconst_1
            lstore 3 /* keyType */
        start local 3 // long keyType
        11: .line 346
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            ifnonnull 19
        12: .line 349
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        13: .line 348
            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 350
            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 351
            new java.security.ProviderException
            dup
        17: .line 352
            ldc "Could not generate DSA parameters"
            aload 6 /* e */
        18: .line 351
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.security.GeneralSecurityException e
        19: .line 355
      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 357
      StackMap locals: java.security.spec.DSAParameterSpec
      StackMap stack:
            iconst_3
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        21: .line 358
            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 359
            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 360
            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 357
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        25: .line 362
            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 365
            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 366
            ldc 2
            lstore 3 /* keyType */
        start local 3 // long keyType
        29: .line 369
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            ifnonnull 39
        30: .line 372
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        31: .line 371
            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 373
            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 374
            new java.security.ProviderException
            dup
        35: .line 375
            ldc "Could not generate DH parameters"
            aload 7 /* e */
        36: .line 374
            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 377
      StackMap locals: javax.crypto.spec.DHParameterSpec
      StackMap stack:
            iconst_0
            istore 6 /* privateBits */
        start local 6 // int privateBits
        38: .line 378
            goto 41
        end local 6 // int privateBits
        end local 5 // javax.crypto.spec.DHParameterSpec dhParams
        39: .line 379
      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 380
            aload 5 /* dhParams */
            invokevirtual javax.crypto.spec.DHParameterSpec.getL:()I
            istore 6 /* privateBits */
        start local 6 // int privateBits
        41: .line 382
      StackMap locals: javax.crypto.spec.DHParameterSpec int
      StackMap stack:
            iload 6 /* privateBits */
            ifgt 45
        42: .line 384
            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 386
      StackMap locals:
      StackMap stack:
            iconst_2
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        46: .line 387
            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 388
            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 386
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        49: .line 390
            iconst_1
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        50: .line 391
            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 390
            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 393
            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 394
            ldc 3
            lstore 3 /* keyType */
        start local 3 // long keyType
        55: .line 396
            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 395
            astore 5 /* encodedParams */
        start local 5 // byte[] encodedParams
        57: .line 397
            iconst_1
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        58: .line 398
            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 397
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        60: .line 400
            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 403
            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 404
      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 406
      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 408
            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 409
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
        66: .line 410
            ldc "generate"
            ldc 2
            lload 3 /* keyType */
            aload 1 /* publicKeyTemplate */
        67: .line 409
            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 411
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
        69: .line 412
            ldc "generate"
            ldc 3
            lload 3 /* keyType */
            aload 2 /* privateKeyTemplate */
        70: .line 411
            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 413
            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 414
            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 415
            aload 1 /* publicKeyTemplate */
            aload 2 /* privateKeyTemplate */
        74: .line 413
            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 417
            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 416
            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 419
            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 418
            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 420
            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 424
            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 420
            aload 10
            areturn
        end local 8 // java.security.PrivateKey privateKey
        end local 7 // java.security.PublicKey publicKey
        end local 6 // long[] keyIDs
        82: .line 421
      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 422
            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 423
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        85: .line 424
            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 425
            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"