abstract class sun.security.mscapi.CKey implements java.security.Key, sun.security.util.Length
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: sun.security.mscapi.CKey
  super_class: java.lang.Object
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1088859394025049194

  protected final sun.security.mscapi.CKey$NativeHandles handles;
    descriptor: Lsun/security/mscapi/CKey$NativeHandles;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int keyLength;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String algorithm;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected void <init>(java.lang.String, sun.security.mscapi.CKey$NativeHandles, int);
    descriptor: (Ljava/lang/String;Lsun/security/mscapi/CKey$NativeHandles;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // sun.security.mscapi.CKey this
        start local 1 // java.lang.String algorithm
        start local 2 // sun.security.mscapi.CKey$NativeHandles handles
        start local 3 // int keyLength
         0: .line 78
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 79
            aload 0 /* this */
            aload 1 /* algorithm */
            putfield sun.security.mscapi.CKey.algorithm:Ljava/lang/String;
         2: .line 80
            aload 0 /* this */
            aload 2 /* handles */
            putfield sun.security.mscapi.CKey.handles:Lsun/security/mscapi/CKey$NativeHandles;
         3: .line 81
            aload 0 /* this */
            iload 3 /* keyLength */
            putfield sun.security.mscapi.CKey.keyLength:I
         4: .line 82
            return
        end local 3 // int keyLength
        end local 2 // sun.security.mscapi.CKey$NativeHandles handles
        end local 1 // java.lang.String algorithm
        end local 0 // sun.security.mscapi.CKey this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lsun/security/mscapi/CKey;
            0    5     1  algorithm  Ljava/lang/String;
            0    5     2    handles  Lsun/security/mscapi/CKey$NativeHandles;
            0    5     3  keyLength  I
    MethodParameters:
           Name  Flags
      algorithm  
      handles    
      keyLength  

  private static native void cleanUp(long, long);
    descriptor: (JJ)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
            Name  Flags
      hCryptProv  
      hCryptKey   

  public int length();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.mscapi.CKey this
         0: .line 89
            aload 0 /* this */
            getfield sun.security.mscapi.CKey.keyLength:I
            ireturn
        end local 0 // sun.security.mscapi.CKey this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/mscapi/CKey;

  public long getHCryptKey();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.mscapi.CKey this
         0: .line 93
            aload 0 /* this */
            getfield sun.security.mscapi.CKey.handles:Lsun/security/mscapi/CKey$NativeHandles;
            getfield sun.security.mscapi.CKey$NativeHandles.hCryptKey:J
            lreturn
        end local 0 // sun.security.mscapi.CKey this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/mscapi/CKey;

  public long getHCryptProvider();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.mscapi.CKey this
         0: .line 97
            aload 0 /* this */
            getfield sun.security.mscapi.CKey.handles:Lsun/security/mscapi/CKey$NativeHandles;
            getfield sun.security.mscapi.CKey$NativeHandles.hCryptProv:J
            lreturn
        end local 0 // sun.security.mscapi.CKey this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/mscapi/CKey;

  public java.lang.String getAlgorithm();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.mscapi.CKey this
         0: .line 101
            aload 0 /* this */
            getfield sun.security.mscapi.CKey.algorithm:Ljava/lang/String;
            areturn
        end local 0 // sun.security.mscapi.CKey this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/mscapi/CKey;

  protected static native java.lang.String getContainerName(long);
    descriptor: (J)Ljava/lang/String;
    flags: (0x010c) ACC_PROTECTED, ACC_STATIC, ACC_NATIVE
    MethodParameters:
            Name  Flags
      hCryptProv  

  protected static native java.lang.String getKeyType(long);
    descriptor: (J)Ljava/lang/String;
    flags: (0x010c) ACC_PROTECTED, ACC_STATIC, ACC_NATIVE
    MethodParameters:
           Name  Flags
      hCryptKey  

  static byte[] generateECBlob(java.security.Key);
    descriptor: (Ljava/security/Key;)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=10, args_size=1
        start local 0 // java.security.Key k
         0: .line 112
            aload 0 /* k */
            invokestatic sun.security.util.KeyUtil.getKeySize:(Ljava/security/Key;)I
            istore 1 /* keyBitLength */
        start local 1 // int keyBitLength
         1: .line 113
            iload 1 /* keyBitLength */
            bipush 7
            iadd
            bipush 8
            idiv
            istore 2 /* keyLen */
        start local 2 // int keyLen
         2: .line 114
            aload 0 /* k */
            instanceof java.security.interfaces.ECPrivateKey
            istore 3 /* isPrivate */
        start local 3 // boolean isPrivate
         3: .line 116
            bipush 8
            iload 2 /* keyLen */
            iload 3 /* isPrivate */
            ifeq 4
            iconst_3
            goto 5
      StackMap locals: java.security.Key int int int
      StackMap stack: int int
         4: iconst_2
      StackMap locals: java.security.Key int int int
      StackMap stack: int int int
         5: imul
            iadd
            newarray 8
            astore 4 /* keyBlob */
        start local 4 // byte[] keyBlob
         6: .line 117
            aload 4 /* keyBlob */
            iconst_0
            bipush 69
            bastore
         7: .line 118
            aload 4 /* keyBlob */
            iconst_1
            bipush 67
            bastore
         8: .line 119
            aload 4 /* keyBlob */
            iconst_2
            bipush 83
            bastore
         9: .line 120
            iload 3 /* isPrivate */
            ifeq 16
        10: .line 121
            aload 4 /* keyBlob */
            iconst_3
            iload 1 /* keyBitLength */
            sipush 256
            if_icmpne 11
            bipush 50
            goto 13
        11: .line 122
      StackMap locals: java.security.Key int int int byte[]
      StackMap stack: byte[] int
            iload 1 /* keyBitLength */
            sipush 384
            if_icmpne 12
            bipush 52
            goto 13
      StackMap locals: java.security.Key int int int byte[]
      StackMap stack: byte[] int
        12: bipush 54
      StackMap locals: java.security.Key int int int byte[]
      StackMap stack: byte[] int int
        13: i2b
        14: .line 121
            bastore
        15: .line 123
            goto 21
        16: .line 124
      StackMap locals:
      StackMap stack:
            aload 4 /* keyBlob */
            iconst_3
            iload 1 /* keyBitLength */
            sipush 256
            if_icmpne 17
            bipush 49
            goto 19
        17: .line 125
      StackMap locals: java.security.Key int int int byte[]
      StackMap stack: byte[] int
            iload 1 /* keyBitLength */
            sipush 384
            if_icmpne 18
            bipush 51
            goto 19
      StackMap locals: java.security.Key int int int byte[]
      StackMap stack: byte[] int
        18: bipush 53
      StackMap locals: java.security.Key int int int byte[]
      StackMap stack: byte[] int int
        19: i2b
        20: .line 124
            bastore
        21: .line 131
      StackMap locals:
      StackMap stack:
            iload 3 /* isPrivate */
            ifeq 30
        22: .line 133
            aload 0 /* k */
            checkcast java.security.interfaces.ECPrivateKey
            astore 7 /* prk */
        start local 7 // java.security.interfaces.ECPrivateKey prk
        23: .line 134
            aload 7 /* prk */
            invokeinterface java.security.interfaces.ECPrivateKey.getS:()Ljava/math/BigInteger;
            astore 8 /* s */
        start local 8 // java.math.BigInteger s
        24: .line 135
            aload 8 /* s */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 9 /* bs */
        start local 9 // byte[] bs
        25: .line 137
            aload 9 /* bs */
            iconst_0
        26: .line 138
            aload 4 /* keyBlob */
            bipush 8
            iload 2 /* keyLen */
            iadd
            iload 2 /* keyLen */
            iadd
            iload 2 /* keyLen */
            iadd
            aload 9 /* bs */
            arraylength
            isub
        27: .line 139
            aload 9 /* bs */
            arraylength
        28: .line 136
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 9 // byte[] bs
        end local 8 // java.math.BigInteger s
        end local 7 // java.security.interfaces.ECPrivateKey prk
        29: .line 140
            goto 39
        30: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* k */
            checkcast java.security.interfaces.ECPublicKey
            astore 7 /* puk */
        start local 7 // java.security.interfaces.ECPublicKey puk
        31: .line 142
            aload 7 /* puk */
            invokeinterface java.security.interfaces.ECPublicKey.getW:()Ljava/security/spec/ECPoint;
            invokevirtual java.security.spec.ECPoint.getAffineX:()Ljava/math/BigInteger;
            astore 5 /* x */
        start local 5 // java.math.BigInteger x
        32: .line 143
            aload 7 /* puk */
            invokeinterface java.security.interfaces.ECPublicKey.getW:()Ljava/security/spec/ECPoint;
            invokevirtual java.security.spec.ECPoint.getAffineY:()Ljava/math/BigInteger;
            astore 6 /* y */
        start local 6 // java.math.BigInteger y
        33: .line 144
            aload 6 /* y */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 8 /* by */
        start local 8 // byte[] by
        34: .line 145
            aload 8 /* by */
            iconst_0
            aload 4 /* keyBlob */
            bipush 8
            iload 2 /* keyLen */
            iadd
            iload 2 /* keyLen */
            iadd
            aload 8 /* by */
            arraylength
            isub
        35: .line 146
            aload 8 /* by */
            arraylength
        36: .line 145
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        37: .line 147
            aload 5 /* x */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 9 /* bx */
        start local 9 // byte[] bx
        38: .line 148
            aload 9 /* bx */
            iconst_0
            aload 4 /* keyBlob */
            bipush 8
            iload 2 /* keyLen */
            iadd
            aload 9 /* bx */
            arraylength
            isub
            aload 9 /* bx */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 9 // byte[] bx
        end local 8 // byte[] by
        end local 7 // java.security.interfaces.ECPublicKey puk
        end local 6 // java.math.BigInteger y
        end local 5 // java.math.BigInteger x
        39: .line 150
      StackMap locals:
      StackMap stack:
            aload 4 /* keyBlob */
            iconst_4
            iload 2 /* keyLen */
            i2b
            bastore
        40: .line 151
            aload 4 /* keyBlob */
            iconst_5
            aload 4 /* keyBlob */
            bipush 6
            aload 4 /* keyBlob */
            bipush 7
            iconst_0
            dup_x2
            bastore
            dup_x2
            bastore
            bastore
        41: .line 152
            aload 4 /* keyBlob */
            areturn
        end local 4 // byte[] keyBlob
        end local 3 // boolean isPrivate
        end local 2 // int keyLen
        end local 1 // int keyBitLength
        end local 0 // java.security.Key k
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   42     0             k  Ljava/security/Key;
            1   42     1  keyBitLength  I
            2   42     2        keyLen  I
            3   42     3     isPrivate  Z
            6   42     4       keyBlob  [B
           32   39     5             x  Ljava/math/BigInteger;
           33   39     6             y  Ljava/math/BigInteger;
           23   29     7           prk  Ljava/security/interfaces/ECPrivateKey;
           24   29     8             s  Ljava/math/BigInteger;
           25   29     9            bs  [B
           31   39     7           puk  Ljava/security/interfaces/ECPublicKey;
           34   39     8            by  [B
           38   39     9            bx  [B
    MethodParameters:
      Name  Flags
      k     
}
SourceFile: "CKey.java"
NestMembers:
  sun.security.mscapi.CKey$NativeHandles
InnerClasses:
  NativeHandles = sun.security.mscapi.CKey$NativeHandles of sun.security.mscapi.CKey