final class sun.security.pkcs11.P11ECKeyFactory extends sun.security.pkcs11.P11KeyFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.pkcs11.P11ECKeyFactory
  super_class: sun.security.pkcs11.P11KeyFactory
{
  private static java.security.Provider sunECprovider;
    descriptor: Ljava/security/Provider;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.security.Provider getSunECProvider();
    descriptor: ()Ljava/security/Provider;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 52
            getstatic sun.security.pkcs11.P11ECKeyFactory.sunECprovider:Ljava/security/Provider;
            ifnonnull 4
         1: .line 53
            ldc "SunEC"
            invokestatic java.security.Security.getProvider:(Ljava/lang/String;)Ljava/security/Provider;
            putstatic sun.security.pkcs11.P11ECKeyFactory.sunECprovider:Ljava/security/Provider;
         2: .line 54
            getstatic sun.security.pkcs11.P11ECKeyFactory.sunECprovider:Ljava/security/Provider;
            ifnonnull 4
         3: .line 55
            new java.lang.RuntimeException
            dup
            ldc "Cannot load SunEC provider"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 59
      StackMap locals:
      StackMap stack:
            getstatic sun.security.pkcs11.P11ECKeyFactory.sunECprovider:Ljava/security/Provider;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(sun.security.pkcs11.Token, java.lang.String);
    descriptor: (Lsun/security/pkcs11/Token;Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
        start local 1 // sun.security.pkcs11.Token token
        start local 2 // java.lang.String algorithm
         0: .line 63
            aload 0 /* this */
            aload 1 /* token */
            aload 2 /* algorithm */
            invokespecial sun.security.pkcs11.P11KeyFactory.<init>:(Lsun/security/pkcs11/Token;Ljava/lang/String;)V
         1: .line 64
            return
        end local 2 // java.lang.String algorithm
        end local 1 // sun.security.pkcs11.Token token
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lsun/security/pkcs11/P11ECKeyFactory;
            0    2     1      token  Lsun/security/pkcs11/Token;
            0    2     2  algorithm  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      token      
      algorithm  

  static java.security.spec.ECParameterSpec getECParameterSpec(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/spec/ECParameterSpec;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 67
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getSunECProvider:()Ljava/security/Provider;
            aload 0 /* name */
            invokestatic sun.security.util.ECUtil.getECParameterSpec:(Ljava/security/Provider;Ljava/lang/String;)Ljava/security/spec/ECParameterSpec;
            areturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  static java.security.spec.ECParameterSpec getECParameterSpec(int);
    descriptor: (I)Ljava/security/spec/ECParameterSpec;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int keySize
         0: .line 71
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getSunECProvider:()Ljava/security/Provider;
            iload 0 /* keySize */
            invokestatic sun.security.util.ECUtil.getECParameterSpec:(Ljava/security/Provider;I)Ljava/security/spec/ECParameterSpec;
            areturn
        end local 0 // int keySize
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  keySize  I
    MethodParameters:
         Name  Flags
      keySize  

  static java.security.spec.ECParameterSpec getECParameterSpec(java.security.spec.ECParameterSpec);
    descriptor: (Ljava/security/spec/ECParameterSpec;)Ljava/security/spec/ECParameterSpec;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.security.spec.ECParameterSpec spec
         0: .line 77
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getSunECProvider:()Ljava/security/Provider;
            aload 0 /* spec */
            invokestatic sun.security.util.ECUtil.getECParameterSpec:(Ljava/security/Provider;Ljava/security/spec/ECParameterSpec;)Ljava/security/spec/ECParameterSpec;
            areturn
        end local 0 // java.security.spec.ECParameterSpec spec
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  spec  Ljava/security/spec/ECParameterSpec;
    MethodParameters:
      Name  Flags
      spec  

  static java.security.spec.ECParameterSpec decodeParameters(byte[]);
    descriptor: ([B)Ljava/security/spec/ECParameterSpec;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte[] params
         0: .line 81
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getSunECProvider:()Ljava/security/Provider;
            aload 0 /* params */
            invokestatic sun.security.util.ECUtil.getECParameterSpec:(Ljava/security/Provider;[B)Ljava/security/spec/ECParameterSpec;
            areturn
        end local 0 // byte[] params
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  params  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      params  

  static byte[] encodeParameters(java.security.spec.ECParameterSpec);
    descriptor: (Ljava/security/spec/ECParameterSpec;)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.security.spec.ECParameterSpec params
         0: .line 85
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getSunECProvider:()Ljava/security/Provider;
            aload 0 /* params */
            invokestatic sun.security.util.ECUtil.encodeECParameterSpec:(Ljava/security/Provider;Ljava/security/spec/ECParameterSpec;)[B
            areturn
        end local 0 // java.security.spec.ECParameterSpec params
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  params  Ljava/security/spec/ECParameterSpec;
    MethodParameters:
        Name  Flags
      params  

  static java.security.spec.ECPoint decodePoint(byte[], java.security.spec.EllipticCurve);
    descriptor: ([BLjava/security/spec/EllipticCurve;)Ljava/security/spec/ECPoint;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // byte[] encoded
        start local 1 // java.security.spec.EllipticCurve curve
         0: .line 89
            aload 0 /* encoded */
            aload 1 /* curve */
            invokestatic sun.security.util.ECUtil.decodePoint:([BLjava/security/spec/EllipticCurve;)Ljava/security/spec/ECPoint;
            areturn
        end local 1 // java.security.spec.EllipticCurve curve
        end local 0 // byte[] encoded
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  encoded  [B
            0    1     1    curve  Ljava/security/spec/EllipticCurve;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      encoded  
      curve    

  static byte[] getEncodedPublicValue(java.security.PublicKey);
    descriptor: (Ljava/security/PublicKey;)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // java.security.PublicKey key
         0: .line 94
            aload 0 /* key */
            instanceof java.security.interfaces.ECPublicKey
            ifeq 5
         1: .line 95
            aload 0 /* key */
            checkcast java.security.interfaces.ECPublicKey
            astore 1 /* ecKey */
        start local 1 // java.security.interfaces.ECPublicKey ecKey
         2: .line 96
            aload 1 /* ecKey */
            invokeinterface java.security.interfaces.ECPublicKey.getW:()Ljava/security/spec/ECPoint;
            astore 2 /* w */
        start local 2 // java.security.spec.ECPoint w
         3: .line 97
            aload 1 /* ecKey */
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
            astore 3 /* params */
        start local 3 // java.security.spec.ECParameterSpec params
         4: .line 98
            aload 2 /* w */
            aload 3 /* params */
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
            invokestatic sun.security.util.ECUtil.encodePoint:(Ljava/security/spec/ECPoint;Ljava/security/spec/EllipticCurve;)[B
            areturn
        end local 3 // java.security.spec.ECParameterSpec params
        end local 2 // java.security.spec.ECPoint w
        end local 1 // java.security.interfaces.ECPublicKey ecKey
         5: .line 101
      StackMap locals:
      StackMap stack:
            new java.security.InvalidKeyException
            dup
         6: .line 102
            new java.lang.StringBuilder
            dup
            ldc "Key class not yet supported: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* key */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 101
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.security.PublicKey key
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0     key  Ljava/security/PublicKey;
            2    5     1   ecKey  Ljava/security/interfaces/ECPublicKey;
            3    5     2       w  Ljava/security/spec/ECPoint;
            4    5     3  params  Ljava/security/spec/ECParameterSpec;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  java.security.PublicKey implTranslatePublicKey(java.security.PublicKey);
    descriptor: (Ljava/security/PublicKey;)Ljava/security/PublicKey;
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
        start local 1 // java.security.PublicKey key
         0: .line 108
            aload 1 /* key */
            instanceof java.security.interfaces.ECPublicKey
            ifeq 7
         1: .line 109
            aload 1 /* key */
            checkcast java.security.interfaces.ECPublicKey
            astore 2 /* ecKey */
        start local 2 // java.security.interfaces.ECPublicKey ecKey
         2: .line 110
            aload 0 /* this */
         3: .line 111
            aload 2 /* ecKey */
            invokeinterface java.security.interfaces.ECPublicKey.getW:()Ljava/security/spec/ECPoint;
         4: .line 112
            aload 2 /* ecKey */
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
         5: .line 110
            invokevirtual sun.security.pkcs11.P11ECKeyFactory.generatePublic:(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)Ljava/security/PublicKey;
         6: areturn
        end local 2 // java.security.interfaces.ECPublicKey ecKey
         7: .line 114
      StackMap locals:
      StackMap stack:
            ldc "X.509"
            aload 1 /* key */
            invokeinterface java.security.PublicKey.getFormat:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
         8: .line 116
            aload 1 /* key */
            invokeinterface java.security.PublicKey.getEncoded:()[B
            astore 2 /* encoded */
        start local 2 // byte[] encoded
         9: .line 119
            aload 2 /* encoded */
            invokestatic sun.security.util.ECUtil.decodeX509ECPublicKey:([B)Ljava/security/interfaces/ECPublicKey;
            astore 1 /* key */
        10: .line 120
            goto 13
      StackMap locals: sun.security.pkcs11.P11ECKeyFactory java.security.PublicKey byte[]
      StackMap stack: java.security.spec.InvalidKeySpecException
        11: astore 3 /* ikse */
        start local 3 // java.security.spec.InvalidKeySpecException ikse
        12: .line 121
            new java.security.InvalidKeyException
            dup
            aload 3 /* ikse */
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.spec.InvalidKeySpecException ikse
        13: .line 124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual sun.security.pkcs11.P11ECKeyFactory.implTranslatePublicKey:(Ljava/security/PublicKey;)Ljava/security/PublicKey;
        14: areturn
        end local 2 // byte[] encoded
        15: .line 126
      StackMap locals:
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            ldc "PublicKey must be instance of ECPublicKey or have X.509 encoding"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 129
      StackMap locals:
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 2 /* e */
        start local 2 // sun.security.pkcs11.wrapper.PKCS11Exception e
        17: .line 130
            new java.security.InvalidKeyException
            dup
            ldc "Could not create EC public key"
            aload 2 /* e */
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // sun.security.pkcs11.wrapper.PKCS11Exception e
        end local 1 // java.security.PublicKey key
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   18     0     this  Lsun/security/pkcs11/P11ECKeyFactory;
            0   18     1      key  Ljava/security/PublicKey;
            2    7     2    ecKey  Ljava/security/interfaces/ECPublicKey;
            9   15     2  encoded  [B
           12   13     3     ikse  Ljava/security/spec/InvalidKeySpecException;
           17   18     2        e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
           9    10      11  Class java.security.spec.InvalidKeySpecException
           0     6      16  Class sun.security.pkcs11.wrapper.PKCS11Exception
           7    14      16  Class sun.security.pkcs11.wrapper.PKCS11Exception
          15    16      16  Class sun.security.pkcs11.wrapper.PKCS11Exception
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  java.security.PrivateKey implTranslatePrivateKey(java.security.PrivateKey);
    descriptor: (Ljava/security/PrivateKey;)Ljava/security/PrivateKey;
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
        start local 1 // java.security.PrivateKey key
         0: .line 137
            aload 1 /* key */
            instanceof java.security.interfaces.ECPrivateKey
            ifeq 7
         1: .line 138
            aload 1 /* key */
            checkcast java.security.interfaces.ECPrivateKey
            astore 2 /* ecKey */
        start local 2 // java.security.interfaces.ECPrivateKey ecKey
         2: .line 139
            aload 0 /* this */
         3: .line 140
            aload 2 /* ecKey */
            invokeinterface java.security.interfaces.ECPrivateKey.getS:()Ljava/math/BigInteger;
         4: .line 141
            aload 2 /* ecKey */
            invokeinterface java.security.interfaces.ECPrivateKey.getParams:()Ljava/security/spec/ECParameterSpec;
         5: .line 139
            invokevirtual sun.security.pkcs11.P11ECKeyFactory.generatePrivate:(Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)Ljava/security/PrivateKey;
         6: areturn
        end local 2 // java.security.interfaces.ECPrivateKey ecKey
         7: .line 143
      StackMap locals:
      StackMap stack:
            ldc "PKCS#8"
            aload 1 /* key */
            invokeinterface java.security.PrivateKey.getFormat:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
         8: .line 145
            aload 1 /* key */
            invokeinterface java.security.PrivateKey.getEncoded:()[B
            astore 2 /* encoded */
        start local 2 // byte[] encoded
         9: .line 148
            aload 2 /* encoded */
            invokestatic sun.security.util.ECUtil.decodePKCS8ECPrivateKey:([B)Ljava/security/interfaces/ECPrivateKey;
            astore 1 /* key */
        10: .line 149
            goto 13
      StackMap locals: sun.security.pkcs11.P11ECKeyFactory java.security.PrivateKey byte[]
      StackMap stack: java.security.spec.InvalidKeySpecException
        11: astore 3 /* ikse */
        start local 3 // java.security.spec.InvalidKeySpecException ikse
        12: .line 150
            new java.security.InvalidKeyException
            dup
            aload 3 /* ikse */
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.spec.InvalidKeySpecException ikse
        13: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual sun.security.pkcs11.P11ECKeyFactory.implTranslatePrivateKey:(Ljava/security/PrivateKey;)Ljava/security/PrivateKey;
        14: areturn
        end local 2 // byte[] encoded
        15: .line 155
      StackMap locals:
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            ldc "PrivateKey must be instance of ECPrivateKey or have PKCS#8 encoding"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 158
      StackMap locals:
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 2 /* e */
        start local 2 // sun.security.pkcs11.wrapper.PKCS11Exception e
        17: .line 159
            new java.security.InvalidKeyException
            dup
            ldc "Could not create EC private key"
            aload 2 /* e */
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // sun.security.pkcs11.wrapper.PKCS11Exception e
        end local 1 // java.security.PrivateKey key
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   18     0     this  Lsun/security/pkcs11/P11ECKeyFactory;
            0   18     1      key  Ljava/security/PrivateKey;
            2    7     2    ecKey  Ljava/security/interfaces/ECPrivateKey;
            9   15     2  encoded  [B
           12   13     3     ikse  Ljava/security/spec/InvalidKeySpecException;
           17   18     2        e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
           9    10      11  Class java.security.spec.InvalidKeySpecException
           0     6      16  Class sun.security.pkcs11.wrapper.PKCS11Exception
           7    14      16  Class sun.security.pkcs11.wrapper.PKCS11Exception
          15    16      16  Class sun.security.pkcs11.wrapper.PKCS11Exception
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected java.security.PublicKey engineGeneratePublic(java.security.spec.KeySpec);
    descriptor: (Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
        start local 1 // java.security.spec.KeySpec keySpec
         0: .line 166
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 167
            aload 1 /* keySpec */
            instanceof java.security.spec.X509EncodedKeySpec
            ifeq 10
         2: .line 169
            aload 1 /* keySpec */
            checkcast java.security.spec.X509EncodedKeySpec
            invokevirtual java.security.spec.X509EncodedKeySpec.getEncoded:()[B
            astore 2 /* encoded */
        start local 2 // byte[] encoded
         3: .line 170
            aload 2 /* encoded */
            invokestatic sun.security.util.ECUtil.decodeX509ECPublicKey:([B)Ljava/security/interfaces/ECPublicKey;
            astore 3 /* key */
        start local 3 // java.security.PublicKey key
         4: .line 171
            aload 0 /* this */
            aload 3 /* key */
            invokevirtual sun.security.pkcs11.P11ECKeyFactory.implTranslatePublicKey:(Ljava/security/PublicKey;)Ljava/security/PublicKey;
         5: areturn
        end local 3 // java.security.PublicKey key
        end local 2 // byte[] encoded
         6: .line 172
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            astore 2 /* e */
        start local 2 // java.security.InvalidKeyException e
         7: .line 173
            new java.security.spec.InvalidKeySpecException
            dup
         8: .line 174
            ldc "Could not create EC public key"
            aload 2 /* e */
         9: .line 173
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.InvalidKeyException e
        10: .line 177
      StackMap locals:
      StackMap stack:
            aload 1 /* keySpec */
            instanceof java.security.spec.ECPublicKeySpec
            ifne 12
        11: .line 178
            new java.security.spec.InvalidKeySpecException
            dup
            ldc "Only ECPublicKeySpec and X509EncodedKeySpec supported for EC public keys"
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 182
      StackMap locals:
      StackMap stack:
            aload 1 /* keySpec */
            checkcast java.security.spec.ECPublicKeySpec
            astore 2 /* ec */
        start local 2 // java.security.spec.ECPublicKeySpec ec
        13: .line 183
            aload 0 /* this */
        14: .line 184
            aload 2 /* ec */
            invokevirtual java.security.spec.ECPublicKeySpec.getW:()Ljava/security/spec/ECPoint;
        15: .line 185
            aload 2 /* ec */
            invokevirtual java.security.spec.ECPublicKeySpec.getParams:()Ljava/security/spec/ECParameterSpec;
        16: .line 183
            invokevirtual sun.security.pkcs11.P11ECKeyFactory.generatePublic:(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)Ljava/security/PublicKey;
        17: areturn
        end local 2 // java.security.spec.ECPublicKeySpec ec
        18: .line 187
      StackMap locals:
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 2 /* e */
        start local 2 // sun.security.pkcs11.wrapper.PKCS11Exception e
        19: .line 188
            new java.security.spec.InvalidKeySpecException
            dup
        20: .line 189
            ldc "Could not create EC public key"
            aload 2 /* e */
        21: .line 188
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // sun.security.pkcs11.wrapper.PKCS11Exception e
        end local 1 // java.security.spec.KeySpec keySpec
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   22     0     this  Lsun/security/pkcs11/P11ECKeyFactory;
            0   22     1  keySpec  Ljava/security/spec/KeySpec;
            3    6     2  encoded  [B
            4    6     3      key  Ljava/security/PublicKey;
            7   10     2        e  Ljava/security/InvalidKeyException;
           13   18     2       ec  Ljava/security/spec/ECPublicKeySpec;
           19   22     2        e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
           2     5       6  Class java.security.InvalidKeyException
          12    17      18  Class sun.security.pkcs11.wrapper.PKCS11Exception
    Exceptions:
      throws java.security.spec.InvalidKeySpecException
    MethodParameters:
         Name  Flags
      keySpec  

  protected java.security.PrivateKey engineGeneratePrivate(java.security.spec.KeySpec);
    descriptor: (Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
        start local 1 // java.security.spec.KeySpec keySpec
         0: .line 196
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.ensureValid:()V
         1: .line 197
            aload 1 /* keySpec */
            instanceof java.security.spec.PKCS8EncodedKeySpec
            ifeq 10
         2: .line 199
            aload 1 /* keySpec */
            checkcast java.security.spec.PKCS8EncodedKeySpec
            invokevirtual java.security.spec.PKCS8EncodedKeySpec.getEncoded:()[B
            astore 2 /* encoded */
        start local 2 // byte[] encoded
         3: .line 200
            aload 2 /* encoded */
            invokestatic sun.security.util.ECUtil.decodePKCS8ECPrivateKey:([B)Ljava/security/interfaces/ECPrivateKey;
            astore 3 /* key */
        start local 3 // java.security.PrivateKey key
         4: .line 201
            aload 0 /* this */
            aload 3 /* key */
            invokevirtual sun.security.pkcs11.P11ECKeyFactory.implTranslatePrivateKey:(Ljava/security/PrivateKey;)Ljava/security/PrivateKey;
         5: areturn
        end local 3 // java.security.PrivateKey key
        end local 2 // byte[] encoded
         6: .line 202
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         7: .line 203
            new java.security.spec.InvalidKeySpecException
            dup
         8: .line 204
            ldc "Could not create EC private key"
            aload 2 /* e */
         9: .line 203
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.GeneralSecurityException e
        10: .line 207
      StackMap locals:
      StackMap stack:
            aload 1 /* keySpec */
            instanceof java.security.spec.ECPrivateKeySpec
            ifne 12
        11: .line 208
            new java.security.spec.InvalidKeySpecException
            dup
            ldc "Only ECPrivateKeySpec and PKCS8EncodedKeySpec supported for EC private keys"
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 212
      StackMap locals:
      StackMap stack:
            aload 1 /* keySpec */
            checkcast java.security.spec.ECPrivateKeySpec
            astore 2 /* ec */
        start local 2 // java.security.spec.ECPrivateKeySpec ec
        13: .line 213
            aload 0 /* this */
        14: .line 214
            aload 2 /* ec */
            invokevirtual java.security.spec.ECPrivateKeySpec.getS:()Ljava/math/BigInteger;
        15: .line 215
            aload 2 /* ec */
            invokevirtual java.security.spec.ECPrivateKeySpec.getParams:()Ljava/security/spec/ECParameterSpec;
        16: .line 213
            invokevirtual sun.security.pkcs11.P11ECKeyFactory.generatePrivate:(Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)Ljava/security/PrivateKey;
        17: areturn
        end local 2 // java.security.spec.ECPrivateKeySpec ec
        18: .line 217
      StackMap locals:
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 2 /* e */
        start local 2 // sun.security.pkcs11.wrapper.PKCS11Exception e
        19: .line 218
            new java.security.spec.InvalidKeySpecException
            dup
        20: .line 219
            ldc "Could not create EC private key"
            aload 2 /* e */
        21: .line 218
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // sun.security.pkcs11.wrapper.PKCS11Exception e
        end local 1 // java.security.spec.KeySpec keySpec
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   22     0     this  Lsun/security/pkcs11/P11ECKeyFactory;
            0   22     1  keySpec  Ljava/security/spec/KeySpec;
            3    6     2  encoded  [B
            4    6     3      key  Ljava/security/PrivateKey;
            7   10     2        e  Ljava/security/GeneralSecurityException;
           13   18     2       ec  Ljava/security/spec/ECPrivateKeySpec;
           19   22     2        e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
           2     5       6  Class java.security.GeneralSecurityException
          12    17      18  Class sun.security.pkcs11.wrapper.PKCS11Exception
    Exceptions:
      throws java.security.spec.InvalidKeySpecException
    MethodParameters:
         Name  Flags
      keySpec  

  private java.security.PublicKey generatePublic(java.security.spec.ECPoint, java.security.spec.ECParameterSpec);
    descriptor: (Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)Ljava/security/PublicKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=11, args_size=3
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
        start local 1 // java.security.spec.ECPoint point
        start local 2 // java.security.spec.ECParameterSpec params
         0: .line 226
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getSunECProvider:()Ljava/security/Provider;
            aload 2 /* params */
            invokestatic sun.security.util.ECUtil.encodeECParameterSpec:(Ljava/security/Provider;Ljava/security/spec/ECParameterSpec;)[B
         1: .line 225
            astore 3 /* encodedParams */
        start local 3 // byte[] encodedParams
         2: .line 228
            aload 1 /* point */
            aload 2 /* params */
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
            invokestatic sun.security.util.ECUtil.encodePoint:(Ljava/security/spec/ECPoint;Ljava/security/spec/EllipticCurve;)[B
         3: .line 227
            astore 4 /* encodedPoint */
        start local 4 // byte[] encodedPoint
         4: .line 232
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.config:Lsun/security/pkcs11/Config;
            invokevirtual sun.security.pkcs11.Config.getUseEcX963Encoding:()Z
            ifne 12
         5: .line 235
            new sun.security.util.DerValue
            dup
            iconst_4
            aload 4 /* encodedPoint */
            invokespecial sun.security.util.DerValue.<init>:(B[B)V
         6: .line 236
            invokevirtual sun.security.util.DerValue.toByteArray:()[B
         7: .line 234
            astore 4 /* encodedPoint */
         8: .line 237
            goto 12
      StackMap locals: sun.security.pkcs11.P11ECKeyFactory java.security.spec.ECPoint java.security.spec.ECParameterSpec byte[] byte[]
      StackMap stack: java.io.IOException
         9: astore 5 /* e */
        start local 5 // java.io.IOException e
        10: .line 239
            new java.lang.IllegalArgumentException
            dup
            ldc "Could not DER encode point"
            aload 5 /* e */
        11: .line 238
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.io.IOException e
        12: .line 243
      StackMap locals:
      StackMap stack:
            iconst_4
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
        13: .line 244
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            lconst_0
            ldc 2
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
            dup
            iconst_1
        14: .line 245
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 256
            ldc 3
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
            dup
            iconst_2
        15: .line 246
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 385
            aload 4 /* encodedPoint */
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/lang/Object;)V
            aastore
            dup
            iconst_3
        16: .line 247
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 384
            aload 3 /* encodedParams */
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/lang/Object;)V
            aastore
        17: .line 243
            astore 5 /* attributes */
        start local 5 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attributes
        18: .line 249
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
        19: .line 250
            ldc "import"
            ldc 2
            ldc 3
            aload 5 /* attributes */
        20: .line 249
            invokevirtual sun.security.pkcs11.Token.getAttributes:(Ljava/lang/String;JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            astore 5 /* attributes */
        21: .line 251
            aconst_null
            astore 6 /* session */
        start local 6 // sun.security.pkcs11.Session session
        22: .line 253
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getObjSession:()Lsun/security/pkcs11/Session;
            astore 6 /* session */
        23: .line 254
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 6 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            aload 5 /* attributes */
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_CreateObject:(J[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J
            lstore 7 /* keyID */
        start local 7 // long keyID
        24: .line 256
            aload 6 /* session */
            lload 7 /* keyID */
            ldc "EC"
            aload 2 /* params */
            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
            aload 5 /* attributes */
        25: .line 255
            invokestatic sun.security.pkcs11.P11Key.publicKey:(Lsun/security/pkcs11/Session;JLjava/lang/String;I[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)Ljava/security/PublicKey;
            astore 10
        26: .line 258
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            aload 6 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        27: .line 255
            aload 10
            areturn
        end local 7 // long keyID
        28: .line 257
      StackMap locals: sun.security.pkcs11.P11ECKeyFactory java.security.spec.ECPoint java.security.spec.ECParameterSpec byte[] byte[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.Session
      StackMap stack: java.lang.Throwable
            astore 9
        29: .line 258
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            aload 6 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        30: .line 259
            aload 9
            athrow
        end local 6 // sun.security.pkcs11.Session session
        end local 5 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attributes
        end local 4 // byte[] encodedPoint
        end local 3 // byte[] encodedParams
        end local 2 // java.security.spec.ECParameterSpec params
        end local 1 // java.security.spec.ECPoint point
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   31     0           this  Lsun/security/pkcs11/P11ECKeyFactory;
            0   31     1          point  Ljava/security/spec/ECPoint;
            0   31     2         params  Ljava/security/spec/ECParameterSpec;
            2   31     3  encodedParams  [B
            4   31     4   encodedPoint  [B
           10   12     5              e  Ljava/io/IOException;
           18   31     5     attributes  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           22   31     6        session  Lsun/security/pkcs11/Session;
           24   28     7          keyID  J
      Exception table:
        from    to  target  type
           5     8       9  Class java.io.IOException
          22    26      28  any
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
        Name  Flags
      point   
      params  

  private java.security.PrivateKey generatePrivate(java.math.BigInteger, java.security.spec.ECParameterSpec);
    descriptor: (Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)Ljava/security/PrivateKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=10, args_size=3
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
        start local 1 // java.math.BigInteger s
        start local 2 // java.security.spec.ECParameterSpec params
         0: .line 265
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getSunECProvider:()Ljava/security/Provider;
            aload 2 /* params */
            invokestatic sun.security.util.ECUtil.encodeECParameterSpec:(Ljava/security/Provider;Ljava/security/spec/ECParameterSpec;)[B
         1: .line 264
            astore 3 /* encodedParams */
        start local 3 // byte[] encodedParams
         2: .line 266
            iconst_4
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
         3: .line 267
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            lconst_0
            ldc 3
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
            dup
            iconst_1
         4: .line 268
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 256
            ldc 3
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JJ)V
            aastore
            dup
            iconst_2
         5: .line 269
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 17
            aload 1 /* s */
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/math/BigInteger;)V
            aastore
            dup
            iconst_3
         6: .line 270
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 384
            aload 3 /* encodedParams */
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(JLjava/lang/Object;)V
            aastore
         7: .line 266
            astore 4 /* attributes */
        start local 4 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attributes
         8: .line 272
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
         9: .line 273
            ldc "import"
            ldc 3
            ldc 3
            aload 4 /* attributes */
        10: .line 272
            invokevirtual sun.security.pkcs11.Token.getAttributes:(Ljava/lang/String;JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            astore 4 /* attributes */
        11: .line 274
            aconst_null
            astore 5 /* session */
        start local 5 // sun.security.pkcs11.Session session
        12: .line 276
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getObjSession:()Lsun/security/pkcs11/Session;
            astore 5 /* session */
        13: .line 277
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            aload 4 /* attributes */
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_CreateObject:(J[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J
            lstore 6 /* keyID */
        start local 6 // long keyID
        14: .line 279
            aload 5 /* session */
            lload 6 /* keyID */
            ldc "EC"
            aload 2 /* params */
            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
            aload 4 /* attributes */
        15: .line 278
            invokestatic sun.security.pkcs11.P11Key.privateKey:(Lsun/security/pkcs11/Session;JLjava/lang/String;I[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)Ljava/security/PrivateKey;
            astore 9
        16: .line 281
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        17: .line 278
            aload 9
            areturn
        end local 6 // long keyID
        18: .line 280
      StackMap locals: sun.security.pkcs11.P11ECKeyFactory java.math.BigInteger java.security.spec.ECParameterSpec byte[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] sun.security.pkcs11.Session
      StackMap stack: java.lang.Throwable
            astore 8
        19: .line 281
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        20: .line 282
            aload 8
            athrow
        end local 5 // sun.security.pkcs11.Session session
        end local 4 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attributes
        end local 3 // byte[] encodedParams
        end local 2 // java.security.spec.ECParameterSpec params
        end local 1 // java.math.BigInteger s
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   21     0           this  Lsun/security/pkcs11/P11ECKeyFactory;
            0   21     1              s  Ljava/math/BigInteger;
            0   21     2         params  Ljava/security/spec/ECParameterSpec;
            2   21     3  encodedParams  [B
            8   21     4     attributes  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
           12   21     5        session  Lsun/security/pkcs11/Session;
           14   18     6          keyID  J
      Exception table:
        from    to  target  type
          12    16      18  any
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
        Name  Flags
      s       
      params  

  <T extends java.security.spec.KeySpec> T implGetPublicKeySpec(sun.security.pkcs11.P11Key, java.lang.Class<T>, sun.security.pkcs11.Session[]);
    descriptor: (Lsun/security/pkcs11/P11Key;Ljava/lang/Class;[Lsun/security/pkcs11/Session;)Ljava/security/spec/KeySpec;
    flags: (0x0000) 
    Code:
      stack=7, locals=11, args_size=4
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
        start local 1 // sun.security.pkcs11.P11Key key
        start local 2 // java.lang.Class keySpec
        start local 3 // sun.security.pkcs11.Session[] session
         0: .line 287
            ldc Ljava/security/spec/ECPublicKeySpec;
            aload 2 /* keySpec */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 18
         1: .line 288
            aload 3 /* session */
            iconst_0
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getObjSession:()Lsun/security/pkcs11/Session;
            aastore
         2: .line 289
            iconst_2
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
         3: .line 290
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 385
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(J)V
            aastore
            dup
            iconst_1
         4: .line 291
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 384
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(J)V
            aastore
         5: .line 289
            astore 4 /* attributes */
        start local 4 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attributes
         6: .line 293
            aload 1 /* key */
            invokevirtual sun.security.pkcs11.P11Key.getKeyID:()J
            lstore 5 /* keyID */
        start local 5 // long keyID
         7: .line 295
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 3 /* session */
            iconst_0
            aaload
            invokevirtual sun.security.pkcs11.Session.id:()J
            lload 5 /* keyID */
            aload 4 /* attributes */
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GetAttributeValue:(JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)V
         8: .line 296
            aload 4 /* attributes */
            iconst_1
            aaload
            invokevirtual sun.security.pkcs11.wrapper.CK_ATTRIBUTE.getByteArray:()[B
            invokestatic sun.security.pkcs11.P11ECKeyFactory.decodeParameters:([B)Ljava/security/spec/ECParameterSpec;
            astore 7 /* params */
        start local 7 // java.security.spec.ECParameterSpec params
         9: .line 297
            aload 4 /* attributes */
            iconst_0
            aaload
            invokevirtual sun.security.pkcs11.wrapper.CK_ATTRIBUTE.getByteArray:()[B
            aload 7 /* params */
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
            invokestatic sun.security.pkcs11.P11ECKeyFactory.decodePoint:([BLjava/security/spec/EllipticCurve;)Ljava/security/spec/ECPoint;
            astore 8 /* point */
        start local 8 // java.security.spec.ECPoint point
        10: .line 298
            aload 2 /* keySpec */
            new java.security.spec.ECPublicKeySpec
            dup
            aload 8 /* point */
            aload 7 /* params */
            invokespecial java.security.spec.ECPublicKeySpec.<init>:(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.spec.KeySpec
            astore 10
        11: .line 302
            aload 1 /* key */
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        12: .line 298
            aload 10
            areturn
        end local 8 // java.security.spec.ECPoint point
        end local 7 // java.security.spec.ECParameterSpec params
        13: .line 299
      StackMap locals: sun.security.pkcs11.P11ECKeyFactory sun.security.pkcs11.P11Key java.lang.Class sun.security.pkcs11.Session[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] long
      StackMap stack: java.io.IOException
            astore 7 /* e */
        start local 7 // java.io.IOException e
        14: .line 300
            new java.security.spec.InvalidKeySpecException
            dup
            ldc "Could not parse key"
            aload 7 /* e */
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.io.IOException e
        15: .line 301
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        16: .line 302
            aload 1 /* key */
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        17: .line 303
            aload 9
            athrow
        end local 5 // long keyID
        end local 4 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attributes
        18: .line 305
      StackMap locals:
      StackMap stack:
            new java.security.spec.InvalidKeySpecException
            dup
            ldc "Only ECPublicKeySpec and X509EncodedKeySpec supported for EC public keys"
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // sun.security.pkcs11.Session[] session
        end local 2 // java.lang.Class keySpec
        end local 1 // sun.security.pkcs11.P11Key key
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   19     0        this  Lsun/security/pkcs11/P11ECKeyFactory;
            0   19     1         key  Lsun/security/pkcs11/P11Key;
            0   19     2     keySpec  Ljava/lang/Class<TT;>;
            0   19     3     session  [Lsun/security/pkcs11/Session;
            6   18     4  attributes  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            7   18     5       keyID  J
            9   13     7      params  Ljava/security/spec/ECParameterSpec;
           10   13     8       point  Ljava/security/spec/ECPoint;
           14   15     7           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7    11      13  Class java.io.IOException
           7    11      15  any
          13    15      15  any
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception, java.security.spec.InvalidKeySpecException
    Signature: <T::Ljava/security/spec/KeySpec;>(Lsun/security/pkcs11/P11Key;Ljava/lang/Class<TT;>;[Lsun/security/pkcs11/Session;)TT;
    MethodParameters:
         Name  Flags
      key      
      keySpec  
      session  

  <T extends java.security.spec.KeySpec> T implGetPrivateKeySpec(sun.security.pkcs11.P11Key, java.lang.Class<T>, sun.security.pkcs11.Session[]);
    descriptor: (Lsun/security/pkcs11/P11Key;Ljava/lang/Class;[Lsun/security/pkcs11/Session;)Ljava/security/spec/KeySpec;
    flags: (0x0000) 
    Code:
      stack=7, locals=10, args_size=4
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
        start local 1 // sun.security.pkcs11.P11Key key
        start local 2 // java.lang.Class keySpec
        start local 3 // sun.security.pkcs11.Session[] session
         0: .line 312
            ldc Ljava/security/spec/ECPrivateKeySpec;
            aload 2 /* keySpec */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 19
         1: .line 313
            aload 3 /* session */
            iconst_0
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getObjSession:()Lsun/security/pkcs11/Session;
            aastore
         2: .line 314
            iconst_2
            anewarray sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            iconst_0
         3: .line 315
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 17
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(J)V
            aastore
            dup
            iconst_1
         4: .line 316
            new sun.security.pkcs11.wrapper.CK_ATTRIBUTE
            dup
            ldc 384
            invokespecial sun.security.pkcs11.wrapper.CK_ATTRIBUTE.<init>:(J)V
            aastore
         5: .line 314
            astore 4 /* attributes */
        start local 4 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attributes
         6: .line 318
            aload 1 /* key */
            invokevirtual sun.security.pkcs11.P11Key.getKeyID:()J
            lstore 5 /* keyID */
        start local 5 // long keyID
         7: .line 320
            aload 0 /* this */
            getfield sun.security.pkcs11.P11ECKeyFactory.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 3 /* session */
            iconst_0
            aaload
            invokevirtual sun.security.pkcs11.Session.id:()J
            lload 5 /* keyID */
            aload 4 /* attributes */
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_GetAttributeValue:(JJ[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)V
         8: .line 321
            aload 4 /* attributes */
            iconst_1
            aaload
            invokevirtual sun.security.pkcs11.wrapper.CK_ATTRIBUTE.getByteArray:()[B
            invokestatic sun.security.pkcs11.P11ECKeyFactory.decodeParameters:([B)Ljava/security/spec/ECParameterSpec;
            astore 7 /* params */
        start local 7 // java.security.spec.ECParameterSpec params
         9: .line 322
            aload 2 /* keySpec */
        10: .line 323
            new java.security.spec.ECPrivateKeySpec
            dup
            aload 4 /* attributes */
            iconst_0
            aaload
            invokevirtual sun.security.pkcs11.wrapper.CK_ATTRIBUTE.getBigInteger:()Ljava/math/BigInteger;
            aload 7 /* params */
            invokespecial java.security.spec.ECPrivateKeySpec.<init>:(Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)V
        11: .line 322
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.spec.KeySpec
            astore 9
        12: .line 327
            aload 1 /* key */
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        13: .line 322
            aload 9
            areturn
        end local 7 // java.security.spec.ECParameterSpec params
        14: .line 324
      StackMap locals: sun.security.pkcs11.P11ECKeyFactory sun.security.pkcs11.P11Key java.lang.Class sun.security.pkcs11.Session[] sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] long
      StackMap stack: java.io.IOException
            astore 7 /* e */
        start local 7 // java.io.IOException e
        15: .line 325
            new java.security.spec.InvalidKeySpecException
            dup
            ldc "Could not parse key"
            aload 7 /* e */
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.io.IOException e
        16: .line 326
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        17: .line 327
            aload 1 /* key */
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        18: .line 328
            aload 8
            athrow
        end local 5 // long keyID
        end local 4 // sun.security.pkcs11.wrapper.CK_ATTRIBUTE[] attributes
        19: .line 330
      StackMap locals:
      StackMap stack:
            new java.security.spec.InvalidKeySpecException
            dup
            ldc "Only ECPrivateKeySpec and PKCS8EncodedKeySpec supported for EC private keys"
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // sun.security.pkcs11.Session[] session
        end local 2 // java.lang.Class keySpec
        end local 1 // sun.security.pkcs11.P11Key key
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   20     0        this  Lsun/security/pkcs11/P11ECKeyFactory;
            0   20     1         key  Lsun/security/pkcs11/P11Key;
            0   20     2     keySpec  Ljava/lang/Class<TT;>;
            0   20     3     session  [Lsun/security/pkcs11/Session;
            6   19     4  attributes  [Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;
            7   19     5       keyID  J
            9   14     7      params  Ljava/security/spec/ECParameterSpec;
           15   16     7           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7    12      14  Class java.io.IOException
           7    12      16  any
          14    16      16  any
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception, java.security.spec.InvalidKeySpecException
    Signature: <T::Ljava/security/spec/KeySpec;>(Lsun/security/pkcs11/P11Key;Ljava/lang/Class<TT;>;[Lsun/security/pkcs11/Session;)TT;
    MethodParameters:
         Name  Flags
      key      
      keySpec  
      session  

  java.security.KeyFactory implGetSoftwareFactory();
    descriptor: ()Ljava/security/KeyFactory;
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.pkcs11.P11ECKeyFactory this
         0: .line 336
            ldc "EC"
            invokestatic sun.security.pkcs11.P11ECKeyFactory.getSunECProvider:()Ljava/security/Provider;
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyFactory;
            areturn
        end local 0 // sun.security.pkcs11.P11ECKeyFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/pkcs11/P11ECKeyFactory;
    Exceptions:
      throws java.security.GeneralSecurityException
}
SourceFile: "P11ECKeyFactory.java"