public class sun.security.x509.X509Key implements java.security.PublicKey
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.x509.X509Key
  super_class: java.lang.Object
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -5359250853002055002

  protected sun.security.x509.AlgorithmId algid;
    descriptor: Lsun/security/x509/AlgorithmId;
    flags: (0x0004) ACC_PROTECTED

  protected byte[] key;
    descriptor: [B
    flags: (0x0004) ACC_PROTECTED
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  private int unusedBits;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  private sun.security.util.BitArray bitStringKey;
    descriptor: Lsun/security/util/BitArray;
    flags: (0x0002) ACC_PRIVATE

  protected byte[] encodedKey;
    descriptor: [B
    flags: (0x0004) ACC_PROTECTED

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 96
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 75
            aload 0 /* this */
            aconst_null
            putfield sun.security.x509.X509Key.key:[B
         2: .line 83
            aload 0 /* this */
            iconst_0
            putfield sun.security.x509.X509Key.unusedBits:I
         3: .line 86
            aload 0 /* this */
            aconst_null
            putfield sun.security.x509.X509Key.bitStringKey:Lsun/security/util/BitArray;
         4: .line 96
            return
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/security/x509/X509Key;

  private void <init>(sun.security.x509.AlgorithmId, sun.security.util.BitArray);
    descriptor: (Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // sun.security.x509.X509Key this
        start local 1 // sun.security.x509.AlgorithmId algid
        start local 2 // sun.security.util.BitArray key
         0: .line 103
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 75
            aload 0 /* this */
            aconst_null
            putfield sun.security.x509.X509Key.key:[B
         2: .line 83
            aload 0 /* this */
            iconst_0
            putfield sun.security.x509.X509Key.unusedBits:I
         3: .line 86
            aload 0 /* this */
            aconst_null
            putfield sun.security.x509.X509Key.bitStringKey:Lsun/security/util/BitArray;
         4: .line 105
            aload 0 /* this */
            aload 1 /* algid */
            putfield sun.security.x509.X509Key.algid:Lsun/security/x509/AlgorithmId;
         5: .line 106
            aload 0 /* this */
            aload 2 /* key */
            invokevirtual sun.security.x509.X509Key.setKey:(Lsun/security/util/BitArray;)V
         6: .line 107
            aload 0 /* this */
            invokevirtual sun.security.x509.X509Key.encode:()[B
            pop
         7: .line 108
            return
        end local 2 // sun.security.util.BitArray key
        end local 1 // sun.security.x509.AlgorithmId algid
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lsun/security/x509/X509Key;
            0    8     1  algid  Lsun/security/x509/AlgorithmId;
            0    8     2    key  Lsun/security/util/BitArray;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
       Name  Flags
      algid  
      key    

  protected void setKey(sun.security.util.BitArray);
    descriptor: (Lsun/security/util/BitArray;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.security.x509.X509Key this
        start local 1 // sun.security.util.BitArray key
         0: .line 114
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual sun.security.util.BitArray.clone:()Ljava/lang/Object;
            checkcast sun.security.util.BitArray
            putfield sun.security.x509.X509Key.bitStringKey:Lsun/security/util/BitArray;
         1: .line 120
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual sun.security.util.BitArray.toByteArray:()[B
            putfield sun.security.x509.X509Key.key:[B
         2: .line 121
            aload 1 /* key */
            invokevirtual sun.security.util.BitArray.length:()I
            bipush 8
            irem
            istore 2 /* remaining */
        start local 2 // int remaining
         3: .line 122
            aload 0 /* this */
         4: .line 123
            iload 2 /* remaining */
            ifne 5
            iconst_0
            goto 6
      StackMap locals: sun.security.x509.X509Key sun.security.util.BitArray int
      StackMap stack: sun.security.x509.X509Key
         5: bipush 8
            iload 2 /* remaining */
            isub
         6: .line 122
      StackMap locals: sun.security.x509.X509Key sun.security.util.BitArray int
      StackMap stack: sun.security.x509.X509Key int
            putfield sun.security.x509.X509Key.unusedBits:I
         7: .line 124
            return
        end local 2 // int remaining
        end local 1 // sun.security.util.BitArray key
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lsun/security/x509/X509Key;
            0    8     1        key  Lsun/security/util/BitArray;
            3    8     2  remaining  I
    MethodParameters:
      Name  Flags
      key   

  protected sun.security.util.BitArray getKey();
    descriptor: ()Lsun/security/util/BitArray;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 139
            aload 0 /* this */
            new sun.security.util.BitArray
            dup
         1: .line 140
            aload 0 /* this */
            getfield sun.security.x509.X509Key.key:[B
            arraylength
            bipush 8
            imul
            aload 0 /* this */
            getfield sun.security.x509.X509Key.unusedBits:I
            isub
         2: .line 141
            aload 0 /* this */
            getfield sun.security.x509.X509Key.key:[B
            invokespecial sun.security.util.BitArray.<init>:(I[B)V
         3: .line 139
            putfield sun.security.x509.X509Key.bitStringKey:Lsun/security/util/BitArray;
         4: .line 143
            aload 0 /* this */
            getfield sun.security.x509.X509Key.bitStringKey:Lsun/security/util/BitArray;
            invokevirtual sun.security.util.BitArray.clone:()Ljava/lang/Object;
            checkcast sun.security.util.BitArray
            areturn
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/security/x509/X509Key;

  public static java.security.PublicKey parse(sun.security.util.DerValue);
    descriptor: (Lsun/security/util/DerValue;)Ljava/security/PublicKey;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // sun.security.util.DerValue in
         0: .line 165
            aload 0 /* in */
            getfield sun.security.util.DerValue.tag:B
            bipush 48
            if_icmpeq 2
         1: .line 166
            new java.io.IOException
            dup
            ldc "corrupt subject key"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 168
      StackMap locals:
      StackMap stack:
            aload 0 /* in */
            getfield sun.security.util.DerValue.data:Lsun/security/util/DerInputStream;
            invokevirtual sun.security.util.DerInputStream.getDerValue:()Lsun/security/util/DerValue;
            invokestatic sun.security.x509.AlgorithmId.parse:(Lsun/security/util/DerValue;)Lsun/security/x509/AlgorithmId;
            astore 1 /* algorithm */
        start local 1 // sun.security.x509.AlgorithmId algorithm
         3: .line 170
            aload 1 /* algorithm */
         4: .line 171
            aload 0 /* in */
            getfield sun.security.util.DerValue.data:Lsun/security/util/DerInputStream;
            invokevirtual sun.security.util.DerInputStream.getUnalignedBitString:()Lsun/security/util/BitArray;
         5: .line 170
            invokestatic sun.security.x509.X509Key.buildX509Key:(Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)Ljava/security/PublicKey;
            astore 2 /* subjectKey */
        start local 2 // java.security.PublicKey subjectKey
         6: .line 173
            goto 9
        end local 2 // java.security.PublicKey subjectKey
      StackMap locals: sun.security.util.DerValue sun.security.x509.AlgorithmId
      StackMap stack: java.security.InvalidKeyException
         7: astore 3 /* e */
        start local 3 // java.security.InvalidKeyException e
         8: .line 174
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "subject key, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* e */
            invokevirtual java.security.InvalidKeyException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.InvalidKeyException e
        start local 2 // java.security.PublicKey subjectKey
         9: .line 177
      StackMap locals: java.security.PublicKey
      StackMap stack:
            aload 0 /* in */
            getfield sun.security.util.DerValue.data:Lsun/security/util/DerInputStream;
            invokevirtual sun.security.util.DerInputStream.available:()I
            ifeq 11
        10: .line 178
            new java.io.IOException
            dup
            ldc "excess subject key"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 179
      StackMap locals:
      StackMap stack:
            aload 2 /* subjectKey */
            areturn
        end local 2 // java.security.PublicKey subjectKey
        end local 1 // sun.security.x509.AlgorithmId algorithm
        end local 0 // sun.security.util.DerValue in
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0          in  Lsun/security/util/DerValue;
            3   12     1   algorithm  Lsun/security/x509/AlgorithmId;
            6    7     2  subjectKey  Ljava/security/PublicKey;
            9   12     2  subjectKey  Ljava/security/PublicKey;
            8    9     3           e  Ljava/security/InvalidKeyException;
      Exception table:
        from    to  target  type
           3     6       7  Class java.security.InvalidKeyException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    

  protected void parseKeyBits();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 197
            aload 0 /* this */
            invokevirtual sun.security.x509.X509Key.encode:()[B
            pop
         1: .line 198
            return
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/x509/X509Key;
    Exceptions:
      throws java.io.IOException, java.security.InvalidKeyException

  static java.security.PublicKey buildX509Key(sun.security.x509.AlgorithmId, sun.security.util.BitArray);
    descriptor: (Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)Ljava/security/PublicKey;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // sun.security.x509.AlgorithmId algid
        start local 1 // sun.security.util.BitArray key
         0: .line 213
            new sun.security.util.DerOutputStream
            dup
            invokespecial sun.security.util.DerOutputStream.<init>:()V
            astore 2 /* x509EncodedKeyStream */
        start local 2 // sun.security.util.DerOutputStream x509EncodedKeyStream
         1: .line 214
            aload 2 /* x509EncodedKeyStream */
            aload 0 /* algid */
            aload 1 /* key */
            invokestatic sun.security.x509.X509Key.encode:(Lsun/security/util/DerOutputStream;Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)V
         2: .line 216
            new java.security.spec.X509EncodedKeySpec
            dup
            aload 2 /* x509EncodedKeyStream */
            invokevirtual sun.security.util.DerOutputStream.toByteArray:()[B
            invokespecial java.security.spec.X509EncodedKeySpec.<init>:([B)V
         3: .line 215
            astore 3 /* x509KeySpec */
        start local 3 // java.security.spec.X509EncodedKeySpec x509KeySpec
         4: .line 220
            aload 0 /* algid */
            invokevirtual sun.security.x509.AlgorithmId.getName:()Ljava/lang/String;
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
            astore 4 /* keyFac */
        start local 4 // java.security.KeyFactory keyFac
         5: .line 223
            aload 4 /* keyFac */
            aload 3 /* x509KeySpec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
         6: areturn
        end local 4 // java.security.KeyFactory keyFac
         7: .line 224
      StackMap locals: sun.security.x509.AlgorithmId sun.security.util.BitArray sun.security.util.DerOutputStream java.security.spec.X509EncodedKeySpec
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
            goto 10
         8: .line 226
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            astore 4 /* e */
        start local 4 // java.security.spec.InvalidKeySpecException e
         9: .line 227
            new java.security.InvalidKeyException
            dup
            aload 4 /* e */
            invokevirtual java.security.spec.InvalidKeySpecException.getMessage:()Ljava/lang/String;
            aload 4 /* e */
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.spec.InvalidKeySpecException e
        10: .line 233
      StackMap locals:
      StackMap stack:
            ldc ""
            astore 4 /* classname */
        start local 4 // java.lang.String classname
        11: .line 239
            ldc "SUN"
            invokestatic java.security.Security.getProvider:(Ljava/lang/String;)Ljava/security/Provider;
            astore 5 /* sunProvider */
        start local 5 // java.security.Provider sunProvider
        12: .line 240
            aload 5 /* sunProvider */
            ifnonnull 14
        13: .line 241
            new java.lang.InstantiationException
            dup
            invokespecial java.lang.InstantiationException.<init>:()V
            athrow
        14: .line 242
      StackMap locals: java.lang.String java.security.Provider
      StackMap stack:
            aload 5 /* sunProvider */
            new java.lang.StringBuilder
            dup
            ldc "PublicKey.X.509."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        15: .line 243
            aload 0 /* algid */
            invokevirtual sun.security.x509.AlgorithmId.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 242
            invokevirtual java.security.Provider.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* classname */
        17: .line 244
            aload 4 /* classname */
            ifnonnull 19
        18: .line 245
            new java.lang.InstantiationException
            dup
            invokespecial java.lang.InstantiationException.<init>:()V
            athrow
        19: .line 248
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* keyClass */
        start local 6 // java.lang.Class keyClass
        20: .line 250
            aload 4 /* classname */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 6 /* keyClass */
        21: .line 251
            goto 26
      StackMap locals: sun.security.x509.AlgorithmId sun.security.util.BitArray sun.security.util.DerOutputStream java.security.spec.X509EncodedKeySpec java.lang.String java.security.Provider java.lang.Class
      StackMap stack: java.lang.ClassNotFoundException
        22: pop
        23: .line 252
            invokestatic java.lang.ClassLoader.getSystemClassLoader:()Ljava/lang/ClassLoader;
            astore 7 /* cl */
        start local 7 // java.lang.ClassLoader cl
        24: .line 253
            aload 7 /* cl */
            ifnull 26
        25: .line 254
            aload 7 /* cl */
            aload 4 /* classname */
            invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
            astore 6 /* keyClass */
        end local 7 // java.lang.ClassLoader cl
        26: .line 259
      StackMap locals:
      StackMap stack:
            aload 6 /* keyClass */
            ifnull 27
            aload 6 /* keyClass */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            goto 28
      StackMap locals:
      StackMap stack:
        27: aconst_null
      StackMap locals:
      StackMap stack: java.lang.Object
        28: astore 7 /* inst */
        start local 7 // java.lang.Object inst
        29: .line 262
            aload 7 /* inst */
            instanceof sun.security.x509.X509Key
            ifeq 40
        30: .line 263
            aload 7 /* inst */
            checkcast sun.security.x509.X509Key
            astore 8 /* result */
        start local 8 // sun.security.x509.X509Key result
        31: .line 264
            aload 8 /* result */
            aload 0 /* algid */
            putfield sun.security.x509.X509Key.algid:Lsun/security/x509/AlgorithmId;
        32: .line 265
            aload 8 /* result */
            aload 1 /* key */
            invokevirtual sun.security.x509.X509Key.setKey:(Lsun/security/util/BitArray;)V
        33: .line 266
            aload 8 /* result */
            invokevirtual sun.security.x509.X509Key.parseKeyBits:()V
        34: .line 267
            aload 8 /* result */
        35: areturn
        end local 8 // sun.security.x509.X509Key result
        end local 7 // java.lang.Object inst
        end local 6 // java.lang.Class keyClass
        end local 5 // java.security.Provider sunProvider
        36: .line 269
      StackMap locals: sun.security.x509.AlgorithmId sun.security.util.BitArray sun.security.util.DerOutputStream java.security.spec.X509EncodedKeySpec java.lang.String
      StackMap stack: java.lang.ClassNotFoundException
            pop
            goto 40
        37: .line 270
      StackMap locals:
      StackMap stack: java.lang.InstantiationException
            pop
            goto 40
        38: .line 271
      StackMap locals:
      StackMap stack: java.lang.IllegalAccessException
            pop
        39: .line 273
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            aload 4 /* classname */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " [internal error]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        40: .line 276
      StackMap locals:
      StackMap stack:
            new sun.security.x509.X509Key
            dup
            aload 0 /* algid */
            aload 1 /* key */
            invokespecial sun.security.x509.X509Key.<init>:(Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)V
            astore 5 /* result */
        start local 5 // sun.security.x509.X509Key result
        41: .line 277
            aload 5 /* result */
            areturn
        end local 5 // sun.security.x509.X509Key result
        end local 4 // java.lang.String classname
        end local 3 // java.security.spec.X509EncodedKeySpec x509KeySpec
        end local 2 // sun.security.util.DerOutputStream x509EncodedKeyStream
        end local 1 // sun.security.util.BitArray key
        end local 0 // sun.security.x509.AlgorithmId algid
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   42     0                 algid  Lsun/security/x509/AlgorithmId;
            0   42     1                   key  Lsun/security/util/BitArray;
            1   42     2  x509EncodedKeyStream  Lsun/security/util/DerOutputStream;
            4   42     3           x509KeySpec  Ljava/security/spec/X509EncodedKeySpec;
            5    7     4                keyFac  Ljava/security/KeyFactory;
            9   10     4                     e  Ljava/security/spec/InvalidKeySpecException;
           11   42     4             classname  Ljava/lang/String;
           12   36     5           sunProvider  Ljava/security/Provider;
           20   36     6              keyClass  Ljava/lang/Class<*>;
           24   26     7                    cl  Ljava/lang/ClassLoader;
           29   36     7                  inst  Ljava/lang/Object;
           31   36     8                result  Lsun/security/x509/X509Key;
           41   42     5                result  Lsun/security/x509/X509Key;
      Exception table:
        from    to  target  type
           4     6       7  Class java.security.NoSuchAlgorithmException
           4     6       8  Class java.security.spec.InvalidKeySpecException
          20    21      22  Class java.lang.ClassNotFoundException
          11    35      36  Class java.lang.ClassNotFoundException
          11    35      37  Class java.lang.InstantiationException
          11    35      38  Class java.lang.IllegalAccessException
    Exceptions:
      throws java.io.IOException, java.security.InvalidKeyException
    MethodParameters:
       Name  Flags
      algid  
      key    

  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.x509.X509Key this
         0: .line 284
            aload 0 /* this */
            getfield sun.security.x509.X509Key.algid:Lsun/security/x509/AlgorithmId;
            invokevirtual sun.security.x509.AlgorithmId.getName:()Ljava/lang/String;
            areturn
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/x509/X509Key;

  public sun.security.x509.AlgorithmId getAlgorithmId();
    descriptor: ()Lsun/security/x509/AlgorithmId;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 290
            aload 0 /* this */
            getfield sun.security.x509.X509Key.algid:Lsun/security/x509/AlgorithmId;
            areturn
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/x509/X509Key;

  public final void encode(sun.security.util.DerOutputStream);
    descriptor: (Lsun/security/util/DerOutputStream;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.x509.X509Key this
        start local 1 // sun.security.util.DerOutputStream out
         0: .line 299
            aload 1 /* out */
            aload 0 /* this */
            getfield sun.security.x509.X509Key.algid:Lsun/security/x509/AlgorithmId;
            aload 0 /* this */
            invokevirtual sun.security.x509.X509Key.getKey:()Lsun/security/util/BitArray;
            invokestatic sun.security.x509.X509Key.encode:(Lsun/security/util/DerOutputStream;Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)V
         1: .line 300
            return
        end local 1 // sun.security.util.DerOutputStream out
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/x509/X509Key;
            0    2     1   out  Lsun/security/util/DerOutputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      out   

  public byte[] getEncoded();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 307
            aload 0 /* this */
            invokevirtual sun.security.x509.X509Key.getEncodedInternal:()[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
         1: areturn
         2: .line 308
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            pop
         3: .line 311
            aconst_null
            areturn
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/security/x509/X509Key;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.InvalidKeyException

  public byte[] getEncodedInternal();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 315
            aload 0 /* this */
            getfield sun.security.x509.X509Key.encodedKey:[B
            astore 1 /* encoded */
        start local 1 // byte[] encoded
         1: .line 316
            aload 1 /* encoded */
            ifnonnull 11
         2: .line 318
            new sun.security.util.DerOutputStream
            dup
            invokespecial sun.security.util.DerOutputStream.<init>:()V
            astore 2 /* out */
        start local 2 // sun.security.util.DerOutputStream out
         3: .line 319
            aload 0 /* this */
            aload 2 /* out */
            invokevirtual sun.security.x509.X509Key.encode:(Lsun/security/util/DerOutputStream;)V
         4: .line 320
            aload 2 /* out */
            invokevirtual sun.security.util.DerOutputStream.toByteArray:()[B
            astore 1 /* encoded */
        end local 2 // sun.security.util.DerOutputStream out
         5: .line 321
            goto 10
      StackMap locals: sun.security.x509.X509Key byte[]
      StackMap stack: java.io.IOException
         6: astore 2 /* e */
        start local 2 // java.io.IOException e
         7: .line 322
            new java.security.InvalidKeyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "IOException : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 323
            aload 2 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 322
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.io.IOException e
        10: .line 325
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* encoded */
            putfield sun.security.x509.X509Key.encodedKey:[B
        11: .line 327
      StackMap locals:
      StackMap stack:
            aload 1 /* encoded */
            areturn
        end local 1 // byte[] encoded
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lsun/security/x509/X509Key;
            1   12     1  encoded  [B
            3    5     2      out  Lsun/security/util/DerOutputStream;
            7   10     2        e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     5       6  Class java.io.IOException
    Exceptions:
      throws java.security.InvalidKeyException

  public java.lang.String getFormat();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 334
            ldc "X.509"
            areturn
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/x509/X509Key;

  public byte[] encode();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 343
            aload 0 /* this */
            invokevirtual sun.security.x509.X509Key.getEncodedInternal:()[B
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
            areturn
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/x509/X509Key;
    Exceptions:
      throws java.security.InvalidKeyException

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 351
            new sun.security.util.HexDumpEncoder
            dup
            invokespecial sun.security.util.HexDumpEncoder.<init>:()V
            astore 1 /* encoder */
        start local 1 // sun.security.util.HexDumpEncoder encoder
         1: .line 353
            new java.lang.StringBuilder
            dup
            ldc "algorithm = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.x509.X509Key.algid:Lsun/security/x509/AlgorithmId;
            invokevirtual sun.security.x509.AlgorithmId.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 354
            ldc ", unparsed keybits = \n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* encoder */
            aload 0 /* this */
            getfield sun.security.x509.X509Key.key:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 353
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // sun.security.util.HexDumpEncoder encoder
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lsun/security/x509/X509Key;
            1    4     1  encoder  Lsun/security/util/HexDumpEncoder;

  public void decode(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // sun.security.x509.X509Key this
        start local 1 // java.io.InputStream in
         0: .line 384
            new sun.security.util.DerValue
            dup
            aload 1 /* in */
            invokespecial sun.security.util.DerValue.<init>:(Ljava/io/InputStream;)V
            astore 2 /* val */
        start local 2 // sun.security.util.DerValue val
         1: .line 385
            aload 2 /* val */
            getfield sun.security.util.DerValue.tag:B
            bipush 48
            if_icmpeq 3
         2: .line 386
            new java.security.InvalidKeyException
            dup
            ldc "invalid key format"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 388
      StackMap locals: sun.security.util.DerValue
      StackMap stack:
            aload 0 /* this */
            aload 2 /* val */
            getfield sun.security.util.DerValue.data:Lsun/security/util/DerInputStream;
            invokevirtual sun.security.util.DerInputStream.getDerValue:()Lsun/security/util/DerValue;
            invokestatic sun.security.x509.AlgorithmId.parse:(Lsun/security/util/DerValue;)Lsun/security/x509/AlgorithmId;
            putfield sun.security.x509.X509Key.algid:Lsun/security/x509/AlgorithmId;
         4: .line 389
            aload 0 /* this */
            aload 2 /* val */
            getfield sun.security.util.DerValue.data:Lsun/security/util/DerInputStream;
            invokevirtual sun.security.util.DerInputStream.getUnalignedBitString:()Lsun/security/util/BitArray;
            invokevirtual sun.security.x509.X509Key.setKey:(Lsun/security/util/BitArray;)V
         5: .line 390
            aload 0 /* this */
            invokevirtual sun.security.x509.X509Key.parseKeyBits:()V
         6: .line 391
            aload 2 /* val */
            getfield sun.security.util.DerValue.data:Lsun/security/util/DerInputStream;
            invokevirtual sun.security.util.DerInputStream.available:()I
            ifeq 12
         7: .line 392
            new java.security.InvalidKeyException
            dup
            ldc "excess key data"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // sun.security.util.DerValue val
         8: .line 394
      StackMap locals: sun.security.x509.X509Key java.io.InputStream
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
         9: .line 395
            new java.security.InvalidKeyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "IOException: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 396
            aload 3 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 395
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.io.IOException e
        start local 2 // sun.security.util.DerValue val
        12: .line 398
      StackMap locals: sun.security.util.DerValue
      StackMap stack:
            return
        end local 2 // sun.security.util.DerValue val
        end local 1 // java.io.InputStream in
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lsun/security/x509/X509Key;
            0   13     1    in  Ljava/io/InputStream;
            1    8     2   val  Lsun/security/util/DerValue;
           12   13     2   val  Lsun/security/util/DerValue;
            9   12     3     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     8       8  Class java.io.IOException
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      in    

  public void decode(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.security.x509.X509Key this
        start local 1 // byte[] encodedKey
         0: .line 401
            aload 0 /* this */
            new java.io.ByteArrayInputStream
            dup
            aload 1 /* encodedKey */
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            invokevirtual sun.security.x509.X509Key.decode:(Ljava/io/InputStream;)V
         1: .line 402
            return
        end local 1 // byte[] encodedKey
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lsun/security/x509/X509Key;
            0    2     1  encodedKey  [B
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
            Name  Flags
      encodedKey  

  private void writeObject(java.io.ObjectOutputStream);
    descriptor: (Ljava/io/ObjectOutputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.x509.X509Key this
        start local 1 // java.io.ObjectOutputStream stream
         0: .line 409
            aload 1 /* stream */
            aload 0 /* this */
            invokevirtual sun.security.x509.X509Key.getEncoded:()[B
            invokevirtual java.io.ObjectOutputStream.write:([B)V
         1: .line 410
            return
        end local 1 // java.io.ObjectOutputStream stream
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lsun/security/x509/X509Key;
            0    2     1  stream  Ljava/io/ObjectOutputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  private void readObject(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // sun.security.x509.X509Key this
        start local 1 // java.io.ObjectInputStream stream
         0: .line 418
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual sun.security.x509.X509Key.decode:(Ljava/io/InputStream;)V
         1: .line 419
            goto 7
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
         2: astore 2 /* e */
        start local 2 // java.security.InvalidKeyException e
         3: .line 420
            aload 2 /* e */
            invokevirtual java.security.InvalidKeyException.printStackTrace:()V
         4: .line 421
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "deserialized key is invalid: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 422
            aload 2 /* e */
            invokevirtual java.security.InvalidKeyException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 421
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.security.InvalidKeyException e
         7: .line 424
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.ObjectInputStream stream
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lsun/security/x509/X509Key;
            0    8     1  stream  Ljava/io/ObjectInputStream;
            3    7     2       e  Ljava/security/InvalidKeyException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.InvalidKeyException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // sun.security.x509.X509Key this
        start local 1 // java.lang.Object obj
         0: .line 427
            aload 0 /* this */
            aload 1 /* obj */
            if_acmpne 2
         1: .line 428
            iconst_1
            ireturn
         2: .line 430
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            instanceof java.security.Key
            ifne 4
         3: .line 431
            iconst_0
            ireturn
         4: .line 434
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.security.x509.X509Key.getEncodedInternal:()[B
            astore 2 /* thisEncoded */
        start local 2 // byte[] thisEncoded
         5: .line 436
            aload 1 /* obj */
            instanceof sun.security.x509.X509Key
            ifeq 8
         6: .line 437
            aload 1 /* obj */
            checkcast sun.security.x509.X509Key
            invokevirtual sun.security.x509.X509Key.getEncodedInternal:()[B
            astore 3 /* otherEncoded */
        start local 3 // byte[] otherEncoded
         7: .line 438
            goto 9
        end local 3 // byte[] otherEncoded
         8: .line 439
      StackMap locals: byte[]
      StackMap stack:
            aload 1 /* obj */
            checkcast java.security.Key
            invokeinterface java.security.Key.getEncoded:()[B
            astore 3 /* otherEncoded */
        start local 3 // byte[] otherEncoded
         9: .line 441
      StackMap locals: byte[]
      StackMap stack:
            aload 2 /* thisEncoded */
            aload 3 /* otherEncoded */
            invokestatic java.util.Arrays.equals:([B[B)Z
        10: ireturn
        end local 3 // byte[] otherEncoded
        end local 2 // byte[] thisEncoded
        11: .line 442
      StackMap locals: sun.security.x509.X509Key java.lang.Object
      StackMap stack: java.security.InvalidKeyException
            pop
        12: .line 443
            iconst_0
            ireturn
        end local 1 // java.lang.Object obj
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0          this  Lsun/security/x509/X509Key;
            0   13     1           obj  Ljava/lang/Object;
            5   11     2   thisEncoded  [B
            7    8     3  otherEncoded  [B
            9   11     3  otherEncoded  [B
      Exception table:
        from    to  target  type
           4    10      11  Class java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      obj   

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // sun.security.x509.X509Key this
         0: .line 453
            aload 0 /* this */
            invokevirtual sun.security.x509.X509Key.getEncodedInternal:()[B
            astore 1 /* b1 */
        start local 1 // byte[] b1
         1: .line 454
            aload 1 /* b1 */
            arraylength
            istore 2 /* r */
        start local 2 // int r
         2: .line 455
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 6
         4: .line 456
      StackMap locals: byte[] int int
      StackMap stack:
            iload 2 /* r */
            aload 1 /* b1 */
            iload 3 /* i */
            baload
            sipush 255
            iand
            bipush 37
            imul
            iadd
            istore 2 /* r */
         5: .line 455
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 3 /* i */
            aload 1 /* b1 */
            arraylength
            if_icmplt 4
        end local 3 // int i
         7: .line 458
            iload 2 /* r */
         8: ireturn
        end local 2 // int r
        end local 1 // byte[] b1
         9: .line 459
      StackMap locals: sun.security.x509.X509Key
      StackMap stack: java.security.InvalidKeyException
            pop
        10: .line 461
            iconst_0
            ireturn
        end local 0 // sun.security.x509.X509Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lsun/security/x509/X509Key;
            1    9     1    b1  [B
            2    9     2     r  I
            3    7     3     i  I
      Exception table:
        from    to  target  type
           0     8       9  Class java.security.InvalidKeyException

  static void encode(sun.security.util.DerOutputStream, sun.security.x509.AlgorithmId, sun.security.util.BitArray);
    descriptor: (Lsun/security/util/DerOutputStream;Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.security.util.DerOutputStream out
        start local 1 // sun.security.x509.AlgorithmId algid
        start local 2 // sun.security.util.BitArray key
         0: .line 470
            new sun.security.util.DerOutputStream
            dup
            invokespecial sun.security.util.DerOutputStream.<init>:()V
            astore 3 /* tmp */
        start local 3 // sun.security.util.DerOutputStream tmp
         1: .line 471
            aload 1 /* algid */
            aload 3 /* tmp */
            invokevirtual sun.security.x509.AlgorithmId.encode:(Lsun/security/util/DerOutputStream;)V
         2: .line 472
            aload 3 /* tmp */
            aload 2 /* key */
            invokevirtual sun.security.util.DerOutputStream.putUnalignedBitString:(Lsun/security/util/BitArray;)V
         3: .line 473
            aload 0 /* out */
            bipush 48
            aload 3 /* tmp */
            invokevirtual sun.security.util.DerOutputStream.write:(BLsun/security/util/DerOutputStream;)V
         4: .line 474
            return
        end local 3 // sun.security.util.DerOutputStream tmp
        end local 2 // sun.security.util.BitArray key
        end local 1 // sun.security.x509.AlgorithmId algid
        end local 0 // sun.security.util.DerOutputStream out
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0    out  Lsun/security/util/DerOutputStream;
            0    5     1  algid  Lsun/security/x509/AlgorithmId;
            0    5     2    key  Lsun/security/util/BitArray;
            1    5     3    tmp  Lsun/security/util/DerOutputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      out    
      algid  
      key    
}
SourceFile: "X509Key.java"