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 */
            getstatic sun.security.util.SecurityProviderConstants.DEF_EC_KEY_SIZE:I
            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 32
        18: .line 108
      StackMap locals:
      StackMap stack:
            sipush 2048
            istore 6 /* maxKeyLen */
        19: .line 110
            goto 32
        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 27
      StackMap locals:
      StackMap stack:
        23: aload 2 /* algorithm */
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        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
            goto 27
        26: .line 116
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_DH_KEY_SIZE:I
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        27: .line 118
      StackMap locals:
      StackMap stack:
            iload 5 /* minKeyLen */
            iconst_m1
            if_icmpeq 28
            iload 5 /* minKeyLen */
            sipush 512
            if_icmpge 29
        28: .line 119
      StackMap locals:
      StackMap stack:
            sipush 512
            istore 5 /* minKeyLen */
        29: .line 121
      StackMap locals:
      StackMap stack:
            aload 2 /* algorithm */
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 32
        30: .line 122
            iload 6 /* maxKeyLen */
            iconst_m1
            if_icmpeq 31
            iload 6 /* maxKeyLen */
            ldc 65536
            if_icmple 32
        31: .line 123
      StackMap locals:
      StackMap stack:
            ldc 65536
            istore 6 /* maxKeyLen */
        32: .line 129
      StackMap locals:
      StackMap stack:
            iload 5 /* minKeyLen */
            iconst_m1
            if_icmpeq 34
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            iload 5 /* minKeyLen */
            if_icmpge 34
        33: .line 130
            aload 0 /* this */
            iload 5 /* minKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        34: .line 132
      StackMap locals:
      StackMap stack:
            iload 6 /* maxKeyLen */
            iconst_m1
            if_icmpeq 36
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            iload 6 /* maxKeyLen */
            if_icmple 36
        35: .line 133
            aload 0 /* this */
            iload 6 /* maxKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        36: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* token */
            putfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
        37: .line 136
            aload 0 /* this */
            aload 2 /* algorithm */
            putfield sun.security.pkcs11.P11KeyPairGenerator.algorithm:Ljava/lang/String;
        38: .line 137
            aload 0 /* this */
            lload 3 /* mechanism */
            putfield sun.security.pkcs11.P11KeyPairGenerator.mechanism:J
        39: .line 138
            aload 0 /* this */
            iload 5 /* minKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
        40: .line 139
            aload 0 /* this */
            iload 6 /* maxKeyLen */
            putfield sun.security.pkcs11.P11KeyPairGenerator.maxKeySize:I
        41: .line 140
            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
        42: .line 141
            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   43     0       this  Lsun/security/pkcs11/P11KeyPairGenerator;
            0   43     1      token  Lsun/security/pkcs11/Token;
            0   43     2  algorithm  Ljava/lang/String;
            0   43     3  mechanism  J
            3   43     5  minKeyLen  I
            4   43     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 146
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 148
            aload 0 /* this */
            iload 1 /* keySize */
            aconst_null
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.checkKeySize:(ILjava/security/spec/AlgorithmParameterSpec;)V
         2: .line 149
            goto 5
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
         3: astore 3 /* e */
        start local 3 // java.security.InvalidAlgorithmParameterException e
         4: .line 150
            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 152
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
         6: .line 153
            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 154
            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 155
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            ifnonnull 14
         9: .line 156
            new java.security.InvalidParameterException
            dup
        10: .line 157
            new java.lang.StringBuilder
            dup
            ldc "No EC parameters available for key size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        11: .line 158
            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 157
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 156
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 161
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* keySize */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        15: .line 162
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        16: .line 163
            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 169
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 171
            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 172
            aload 1 /* params */
            instanceof javax.crypto.spec.DHParameterSpec
            ifne 6
         3: .line 173
            new java.security.InvalidAlgorithmParameterException
            dup
         4: .line 174
            ldc "DHParameterSpec required for Diffie-Hellman"
         5: .line 173
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 176
      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 177
            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 178
            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 180
            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 181
            aload 1 /* params */
            instanceof java.security.spec.RSAKeyGenParameterSpec
            ifne 15
        12: .line 182
            new java.security.InvalidAlgorithmParameterException
            dup
        13: .line 183
            ldc "RSAKeyGenParameterSpec required for RSA"
        14: .line 182
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 186
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            checkcast java.security.spec.RSAKeyGenParameterSpec
        16: .line 185
            astore 4 /* rsaParams */
        start local 4 // java.security.spec.RSAKeyGenParameterSpec rsaParams
        17: .line 187
            aload 4 /* rsaParams */
            invokevirtual java.security.spec.RSAKeyGenParameterSpec.getKeysize:()I
            istore 3 /* tmpKeySize */
        start local 3 // int tmpKeySize
        18: .line 188
            aload 0 /* this */
            iload 3 /* tmpKeySize */
            aload 4 /* rsaParams */
            invokevirtual sun.security.pkcs11.P11KeyPairGenerator.checkKeySize:(ILjava/security/spec/AlgorithmParameterSpec;)V
        19: .line 190
            aconst_null
            astore 1 /* params */
        20: .line 191
            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 193
            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 194
            aload 1 /* params */
            instanceof java.security.spec.DSAParameterSpec
            ifne 27
        24: .line 195
            new java.security.InvalidAlgorithmParameterException
            dup
        25: .line 196
            ldc "DSAParameterSpec required for DSA"
        26: .line 195
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 198
      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 199
            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 200
            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 202
            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 204
            aload 1 /* params */
            instanceof java.security.spec.ECParameterSpec
            ifeq 39
        33: .line 206
            aload 1 /* params */
            checkcast java.security.spec.ECParameterSpec
        34: .line 205
            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 207
            aload 4 /* ecParams */
            ifnonnull 51
        36: .line 208
            new java.security.InvalidAlgorithmParameterException
            dup
        37: .line 209
            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 208
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.security.spec.ECParameterSpec ecParams
        39: .line 211
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            instanceof java.security.spec.ECGenParameterSpec
            ifeq 48
        40: .line 212
            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 213
            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 214
            aload 4 /* ecParams */
            ifnonnull 46
        43: .line 215
            new java.security.InvalidAlgorithmParameterException
            dup
        44: .line 216
            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 215
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        46: .line 219
      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 220
            goto 51
        end local 4 // java.security.spec.ECParameterSpec ecParams
        48: .line 221
      StackMap locals: sun.security.pkcs11.P11KeyPairGenerator java.security.spec.AlgorithmParameterSpec java.security.SecureRandom
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        49: .line 222
            ldc "ECParameterSpec or ECGenParameterSpec required for EC"
        50: .line 221
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        start local 4 // java.security.spec.ECParameterSpec ecParams
        51: .line 224
      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 225
            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 226
            goto 55
        end local 3 // int tmpKeySize
        54: .line 227
      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 229
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* tmpKeySize */
            putfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
        56: .line 230
            aload 0 /* this */
            aload 1 /* params */
            putfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
        57: .line 231
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        58: .line 232
            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 237
            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 238
            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 239
            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 240
            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 238
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 242
      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 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
         7: .line 244
            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 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;
         9: .line 243
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 249
      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 250
            iload 1 /* keySize */
            bipush 112
            if_icmpge 17
        12: .line 251
            new java.security.InvalidAlgorithmParameterException
            dup
        13: .line 252
            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 253
            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 252
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 251
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 255
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 2048
            if_icmple 71
        18: .line 257
            new java.security.InvalidAlgorithmParameterException
            dup
        19: .line 258
            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 259
            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 258
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        22: .line 257
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 263
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 512
            if_icmpge 28
        24: .line 264
            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 265
            ldc " key size must be at least 512 bit. "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        26: .line 266
            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 264
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        28: .line 268
      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 269
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.rsaPublicExponent:Ljava/math/BigInteger;
            astore 3 /* tmpExponent */
        start local 3 // java.math.BigInteger tmpExponent
        30: .line 270
            aload 2 /* params */
            ifnull 33
        31: .line 272
            aload 2 /* params */
            checkcast java.security.spec.RSAKeyGenParameterSpec
            invokevirtual java.security.spec.RSAKeyGenParameterSpec.getPublicExponent:()Ljava/math/BigInteger;
        32: .line 271
            astore 3 /* tmpExponent */
        33: .line 278
      StackMap locals: java.math.BigInteger
      StackMap stack:
            iload 1 /* keySize */
            aload 3 /* tmpExponent */
        34: .line 279
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.minKeySize:I
        35: .line 280
            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 278
      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 281
            goto 71
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
        39: astore 4 /* e */
        start local 4 // java.security.InvalidKeyException e
        40: .line 282
            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 284
      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 285
            aload 2 /* params */
            ifnull 49
        43: .line 287
            iload 1 /* keySize */
            ldc 65536
            if_icmple 71
        44: .line 288
            new java.security.InvalidAlgorithmParameterException
            dup
        45: .line 289
            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 291
            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 289
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        48: .line 288
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        49: .line 296
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 8192
            if_icmpgt 51
            iload 1 /* keySize */
            sipush 512
            if_icmplt 51
        50: .line 297
            iload 1 /* keySize */
            bipush 63
            iand
            ifeq 56
        51: .line 298
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        52: .line 299
            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 302
            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 299
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        55: .line 298
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        56: .line 306
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            invokestatic sun.security.provider.ParameterCache.getCachedDHParameterSpec:(I)Ljavax/crypto/spec/DHParameterSpec;
        57: .line 305
            astore 3 /* cache */
        start local 3 // javax.crypto.spec.DHParameterSpec cache
        58: .line 309
            aload 3 /* cache */
            ifnonnull 71
            iload 1 /* keySize */
            sipush 1024
            if_icmple 71
        59: .line 310
            new java.security.InvalidAlgorithmParameterException
            dup
        60: .line 311
            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 312
            ldc "-bit DH parameter generation"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        62: .line 311
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        63: .line 310
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // javax.crypto.spec.DHParameterSpec cache
        64: .line 317
      StackMap locals:
      StackMap stack:
            iload 1 /* keySize */
            sipush 3072
            if_icmpeq 71
            iload 1 /* keySize */
            sipush 2048
            if_icmpeq 71
        65: .line 318
            iload 1 /* keySize */
            sipush 1024
            if_icmpgt 66
            iload 1 /* keySize */
            bipush 63
            iand
            ifeq 71
        66: .line 319
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
        67: .line 320
            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 323
            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 320
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        70: .line 319
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        71: .line 327
      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 332
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 336
            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 337
            lconst_0
            lstore 3 /* keyType */
        start local 3 // long keyType
         3: .line 338
            iconst_2
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
         4: .line 339
            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 340
            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 338
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
         7: .line 342
            iconst_0
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            astore 2 /* privateKeyTemplate */
        start local 2 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] privateKeyTemplate
         8: .line 345
            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 346
            lconst_1
            lstore 3 /* keyType */
        start local 3 // long keyType
        11: .line 348
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            ifnonnull 19
        12: .line 351
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        13: .line 350
            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 352
            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 353
            new java.security.ProviderException
            dup
        17: .line 354
            ldc "Could not generate DSA parameters"
            aload 6 /* e */
        18: .line 353
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.security.GeneralSecurityException e
        19: .line 357
      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 359
      StackMap locals: java.security.spec.DSAParameterSpec
      StackMap stack:
            iconst_3
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        21: .line 360
            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 361
            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 362
            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 359
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        25: .line 364
            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 367
            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 368
            ldc 2
            lstore 3 /* keyType */
        start local 3 // long keyType
        29: .line 371
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.params:Ljava/security/spec/AlgorithmParameterSpec;
            ifnonnull 39
        30: .line 374
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.keySize:I
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.random:Ljava/security/SecureRandom;
        31: .line 373
            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 375
            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 376
            new java.security.ProviderException
            dup
        35: .line 377
            ldc "Could not generate DH parameters"
            aload 7 /* e */
        36: .line 376
            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 379
      StackMap locals: javax.crypto.spec.DHParameterSpec
      StackMap stack:
            iconst_0
            istore 6 /* privateBits */
        start local 6 // int privateBits
        38: .line 380
            goto 41
        end local 6 // int privateBits
        end local 5 // javax.crypto.spec.DHParameterSpec dhParams
        39: .line 381
      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 382
            aload 5 /* dhParams */
            invokevirtual javax.crypto.spec.DHParameterSpec.getL:()I
            istore 6 /* privateBits */
        start local 6 // int privateBits
        41: .line 384
      StackMap locals: javax.crypto.spec.DHParameterSpec int
      StackMap stack:
            iload 6 /* privateBits */
            ifgt 45
        42: .line 386
            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 388
      StackMap locals:
      StackMap stack:
            iconst_2
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        46: .line 389
            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 390
            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 388
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        49: .line 392
            iconst_1
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        50: .line 393
            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 392
            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 395
            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 396
            ldc 3
            lstore 3 /* keyType */
        start local 3 // long keyType
        55: .line 398
            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 397
            astore 5 /* encodedParams */
        start local 5 // byte[] encodedParams
        57: .line 399
            iconst_1
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        58: .line 400
            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 399
            astore 1 /* publicKeyTemplate */
        start local 1 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] publicKeyTemplate
        60: .line 402
            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 405
            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 406
      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 408
      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 410
            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 411
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
        66: .line 412
            ldc "generate"
            ldc 2
            lload 3 /* keyType */
            aload 1 /* publicKeyTemplate */
        67: .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 1 /* publicKeyTemplate */
        68: .line 413
            aload 0 /* this */
            getfield sun.security.pkcs11.P11KeyPairGenerator.token:Lsun/security/pkcs11/Token;
        69: .line 414
            ldc "generate"
            ldc 3
            lload 3 /* keyType */
            aload 2 /* privateKeyTemplate */
        70: .line 413
            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 415
            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 416
            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 417
            aload 1 /* publicKeyTemplate */
            aload 2 /* privateKeyTemplate */
        74: .line 415
            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 419
            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 418
            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 421
            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 420
            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 422
            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 426
            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 422
            aload 10
            areturn
        end local 8 // java.security.PrivateKey privateKey
        end local 7 // java.security.PublicKey publicKey
        end local 6 // long[] keyIDs
        82: .line 423
      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 424
            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 425
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        85: .line 426
            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 427
            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"