public final class com.sun.crypto.provider.JceKeyStore extends java.security.KeyStoreSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.sun.crypto.provider.JceKeyStore
  super_class: java.security.KeyStoreSpi
{
  private static final int JCEKS_MAGIC;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -825307442

  private static final int JKS_MAGIC;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -17957139

  private static final int VERSION_1;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int VERSION_2;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private java.util.Hashtable<java.lang.String, java.lang.Object> entries;
    descriptor: Ljava/util/Hashtable;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.JceKeyStore this
         0: .line 60
            aload 0 /* this */
            invokespecial java.security.KeyStoreSpi.<init>:()V
         1: .line 90
            aload 0 /* this */
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
         2: .line 60
            return
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/crypto/provider/JceKeyStore;

  public java.security.Key engineGetKey(java.lang.String, char[]);
    descriptor: (Ljava/lang/String;[C)Ljava/security/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
        start local 2 // char[] password
         0: .line 110
            aconst_null
            astore 3 /* key */
        start local 3 // java.security.Key key
         1: .line 112
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* entry */
        start local 4 // java.lang.Object entry
         2: .line 114
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifne 5
         3: .line 115
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            ifne 5
         4: .line 116
            aconst_null
            areturn
         5: .line 119
      StackMap locals: java.security.Key java.lang.Object
      StackMap stack:
            new com.sun.crypto.provider.KeyProtector
            dup
            aload 2 /* password */
            invokespecial com.sun.crypto.provider.KeyProtector.<init>:([C)V
            astore 5 /* keyProtector */
        start local 5 // com.sun.crypto.provider.KeyProtector keyProtector
         6: .line 121
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 14
         7: .line 122
            aload 4 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.protectedKey:[B
            astore 6 /* encrBytes */
        start local 6 // byte[] encrBytes
         8: .line 125
            new com.sun.crypto.provider.EncryptedPrivateKeyInfo
            dup
            aload 6 /* encrBytes */
            invokespecial com.sun.crypto.provider.EncryptedPrivateKeyInfo.<init>:([B)V
            astore 7 /* encrInfo */
        start local 7 // com.sun.crypto.provider.EncryptedPrivateKeyInfo encrInfo
         9: .line 126
            goto 12
        end local 7 // com.sun.crypto.provider.EncryptedPrivateKeyInfo encrInfo
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.lang.String char[] java.security.Key java.lang.Object com.sun.crypto.provider.KeyProtector byte[]
      StackMap stack: java.io.IOException
        10: pop
        11: .line 127
            new java.security.UnrecoverableKeyException
            dup
            ldc "Private key not stored as PKCS #8 EncryptedPrivateKeyInfo"
            invokespecial java.security.UnrecoverableKeyException.<init>:(Ljava/lang/String;)V
            athrow
        start local 7 // com.sun.crypto.provider.EncryptedPrivateKeyInfo encrInfo
        12: .line 131
      StackMap locals: com.sun.crypto.provider.EncryptedPrivateKeyInfo
      StackMap stack:
            aload 5 /* keyProtector */
            aload 7 /* encrInfo */
            invokevirtual com.sun.crypto.provider.KeyProtector.recover:(Lcom/sun/crypto/provider/EncryptedPrivateKeyInfo;)Ljava/security/Key;
            astore 3 /* key */
        end local 7 // com.sun.crypto.provider.EncryptedPrivateKeyInfo encrInfo
        end local 6 // byte[] encrBytes
        13: .line 132
            goto 16
        14: .line 134
      StackMap locals:
      StackMap stack:
            aload 5 /* keyProtector */
            aload 4 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.sealedKey:Ljavax/crypto/SealedObject;
            invokevirtual com.sun.crypto.provider.KeyProtector.unseal:(Ljavax/crypto/SealedObject;)Ljava/security/Key;
        15: .line 133
            astore 3 /* key */
        16: .line 137
      StackMap locals:
      StackMap stack:
            aload 3 /* key */
            areturn
        end local 5 // com.sun.crypto.provider.KeyProtector keyProtector
        end local 4 // java.lang.Object entry
        end local 3 // java.security.Key key
        end local 2 // char[] password
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   17     0          this  Lcom/sun/crypto/provider/JceKeyStore;
            0   17     1         alias  Ljava/lang/String;
            0   17     2      password  [C
            1   17     3           key  Ljava/security/Key;
            2   17     4         entry  Ljava/lang/Object;
            6   17     5  keyProtector  Lcom/sun/crypto/provider/KeyProtector;
            8   13     6     encrBytes  [B
            9   10     7      encrInfo  Lcom/sun/crypto/provider/EncryptedPrivateKeyInfo;
           12   13     7      encrInfo  Lcom/sun/crypto/provider/EncryptedPrivateKeyInfo;
      Exception table:
        from    to  target  type
           8     9      10  Class java.io.IOException
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException
    MethodParameters:
          Name  Flags
      alias     
      password  

  public java.security.cert.Certificate[] engineGetCertificateChain(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/security/cert/Certificate;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
         0: .line 153
            aconst_null
            astore 2 /* chain */
        start local 2 // java.security.cert.Certificate[] chain
         1: .line 155
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* entry */
        start local 3 // java.lang.Object entry
         2: .line 157
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 5
         3: .line 158
            aload 3 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            ifnull 5
         4: .line 159
            aload 3 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            invokevirtual java.security.cert.Certificate[].clone:()Ljava/lang/Object;
            checkcast java.security.cert.Certificate[]
            astore 2 /* chain */
         5: .line 162
      StackMap locals: java.security.cert.Certificate[] java.lang.Object
      StackMap stack:
            aload 2 /* chain */
            areturn
        end local 3 // java.lang.Object entry
        end local 2 // java.security.cert.Certificate[] chain
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lcom/sun/crypto/provider/JceKeyStore;
            0    6     1  alias  Ljava/lang/String;
            1    6     2  chain  [Ljava/security/cert/Certificate;
            2    6     3  entry  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      alias  

  public java.security.cert.Certificate engineGetCertificate(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/cert/Certificate;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
         0: .line 181
            aconst_null
            astore 2 /* cert */
        start local 2 // java.security.cert.Certificate cert
         1: .line 183
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* entry */
        start local 3 // java.lang.Object entry
         2: .line 185
            aload 3 /* entry */
            ifnull 9
         3: .line 186
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 6
         4: .line 187
            aload 3 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            getfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
            astore 2 /* cert */
         5: .line 188
            goto 9
      StackMap locals: java.security.cert.Certificate java.lang.Object
      StackMap stack:
         6: aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 9
         7: .line 189
            aload 3 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            ifnull 9
         8: .line 190
            aload 3 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            iconst_0
            aaload
            astore 2 /* cert */
         9: .line 194
      StackMap locals:
      StackMap stack:
            aload 2 /* cert */
            areturn
        end local 3 // java.lang.Object entry
        end local 2 // java.security.cert.Certificate cert
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Lcom/sun/crypto/provider/JceKeyStore;
            0   10     1  alias  Ljava/lang/String;
            1   10     2   cert  Ljava/security/cert/Certificate;
            2   10     3  entry  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      alias  

  public java.util.Date engineGetCreationDate(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Date;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
         0: .line 206
            aconst_null
            astore 2 /* date */
        start local 2 // java.util.Date date
         1: .line 208
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* entry */
        start local 3 // java.lang.Object entry
         2: .line 210
            aload 3 /* entry */
            ifnull 10
         3: .line 213
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 6
         4: .line 214
            new java.util.Date
            dup
            aload 3 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            getfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.date:Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.util.Date.<init>:(J)V
            astore 2 /* date */
         5: .line 215
            goto 10
      StackMap locals: java.util.Date java.lang.Object
      StackMap stack:
         6: aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 9
         7: .line 216
            new java.util.Date
            dup
            aload 3 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.date:Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.util.Date.<init>:(J)V
            astore 2 /* date */
         8: .line 217
            goto 10
         9: .line 218
      StackMap locals:
      StackMap stack:
            new java.util.Date
            dup
            aload 3 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.date:Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.util.Date.<init>:(J)V
            astore 2 /* date */
        10: .line 222
      StackMap locals:
      StackMap stack:
            aload 2 /* date */
            areturn
        end local 3 // java.lang.Object entry
        end local 2 // java.util.Date date
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Lcom/sun/crypto/provider/JceKeyStore;
            0   11     1  alias  Ljava/lang/String;
            1   11     2   date  Ljava/util/Date;
            2   11     3  entry  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      alias  

  public void engineSetKeyEntry(java.lang.String, java.security.Key, char[], java.security.cert.Certificate[]);
    descriptor: (Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=5
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
        start local 2 // java.security.Key key
        start local 3 // char[] password
        start local 4 // java.security.cert.Certificate[] chain
         0: .line 251
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 5
            monitorenter
         1: .line 253
            new com.sun.crypto.provider.KeyProtector
            dup
            aload 3 /* password */
            invokespecial com.sun.crypto.provider.KeyProtector.<init>:([C)V
            astore 6 /* keyProtector */
        start local 6 // com.sun.crypto.provider.KeyProtector keyProtector
         2: .line 255
            aload 2 /* key */
            instanceof java.security.PrivateKey
            ifeq 13
         3: .line 256
            new com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.<init>:()V
            astore 7 /* entry */
        start local 7 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry entry
         4: .line 257
            aload 7 /* entry */
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.date:Ljava/util/Date;
         5: .line 260
            aload 7 /* entry */
            aload 6 /* keyProtector */
            aload 2 /* key */
            checkcast java.security.PrivateKey
            invokevirtual com.sun.crypto.provider.KeyProtector.protect:(Ljava/security/PrivateKey;)[B
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.protectedKey:[B
         6: .line 263
            aload 4 /* chain */
            ifnull 10
         7: .line 264
            aload 4 /* chain */
            arraylength
            ifeq 10
         8: .line 265
            aload 7 /* entry */
            aload 4 /* chain */
            invokevirtual java.security.cert.Certificate[].clone:()Ljava/lang/Object;
            checkcast java.security.cert.Certificate[]
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
         9: .line 266
            goto 11
        10: .line 267
      StackMap locals: java.util.Hashtable com.sun.crypto.provider.KeyProtector com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
      StackMap stack:
            aload 7 /* entry */
            aconst_null
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
        11: .line 271
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            aload 7 /* entry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry entry
        12: .line 273
            goto 20
        13: .line 274
      StackMap locals:
      StackMap stack:
            new com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.<init>:()V
            astore 7 /* entry */
        start local 7 // com.sun.crypto.provider.JceKeyStore$SecretKeyEntry entry
        14: .line 275
            aload 7 /* entry */
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            putfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.date:Ljava/util/Date;
        15: .line 278
            aload 7 /* entry */
            aload 6 /* keyProtector */
            aload 2 /* key */
            invokevirtual com.sun.crypto.provider.KeyProtector.seal:(Ljava/security/Key;)Ljavax/crypto/SealedObject;
            putfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.sealedKey:Ljavax/crypto/SealedObject;
        16: .line 279
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            aload 7 /* entry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // com.sun.crypto.provider.JceKeyStore$SecretKeyEntry entry
        end local 6 // com.sun.crypto.provider.KeyProtector keyProtector
        17: .line 282
            goto 20
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.lang.String java.security.Key char[] java.security.cert.Certificate[] java.util.Hashtable
      StackMap stack: java.lang.Exception
        18: astore 6 /* e */
        start local 6 // java.lang.Exception e
        19: .line 283
            new java.security.KeyStoreException
            dup
            aload 6 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.lang.Exception e
        20: .line 251
      StackMap locals:
      StackMap stack:
            aload 5
            monitorexit
        21: goto 24
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: aload 5
            monitorexit
        23: athrow
        24: .line 286
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.security.cert.Certificate[] chain
        end local 3 // char[] password
        end local 2 // java.security.Key key
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   25     0          this  Lcom/sun/crypto/provider/JceKeyStore;
            0   25     1         alias  Ljava/lang/String;
            0   25     2           key  Ljava/security/Key;
            0   25     3      password  [C
            0   25     4         chain  [Ljava/security/cert/Certificate;
            2   17     6  keyProtector  Lcom/sun/crypto/provider/KeyProtector;
            4   12     7         entry  Lcom/sun/crypto/provider/JceKeyStore$PrivateKeyEntry;
           14   17     7         entry  Lcom/sun/crypto/provider/JceKeyStore$SecretKeyEntry;
           19   20     6             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1    17      18  Class java.lang.Exception
           1    21      22  any
          22    23      22  any
    Exceptions:
      throws java.security.KeyStoreException
    MethodParameters:
          Name  Flags
      alias     
      key       
      password  
      chain     

  public void engineSetKeyEntry(java.lang.String, byte[], java.security.cert.Certificate[]);
    descriptor: (Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
        start local 2 // byte[] key
        start local 3 // java.security.cert.Certificate[] chain
         0: .line 313
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 4
            monitorenter
         1: .line 316
            new com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.<init>:()V
            astore 5 /* entry */
        start local 5 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry entry
         2: .line 317
            aload 5 /* entry */
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.date:Ljava/util/Date;
         3: .line 319
            aload 5 /* entry */
            aload 2 /* key */
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.protectedKey:[B
         4: .line 320
            aload 3 /* chain */
            ifnull 8
         5: .line 321
            aload 3 /* chain */
            arraylength
            ifeq 8
         6: .line 322
            aload 5 /* entry */
            aload 3 /* chain */
            invokevirtual java.security.cert.Certificate[].clone:()Ljava/lang/Object;
            checkcast java.security.cert.Certificate[]
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
         7: .line 323
            goto 9
         8: .line 324
      StackMap locals: java.util.Hashtable com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
      StackMap stack:
            aload 5 /* entry */
            aconst_null
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
         9: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            aload 5 /* entry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry entry
        10: .line 313
            aload 4
            monitorexit
        11: goto 14
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.lang.String byte[] java.security.cert.Certificate[] java.util.Hashtable
      StackMap stack: java.lang.Throwable
        12: aload 4
            monitorexit
        13: athrow
        14: .line 329
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.security.cert.Certificate[] chain
        end local 2 // byte[] key
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0   this  Lcom/sun/crypto/provider/JceKeyStore;
            0   15     1  alias  Ljava/lang/String;
            0   15     2    key  [B
            0   15     3  chain  [Ljava/security/cert/Certificate;
            2   10     5  entry  Lcom/sun/crypto/provider/JceKeyStore$PrivateKeyEntry;
      Exception table:
        from    to  target  type
           1    11      12  any
          12    13      12  any
    Exceptions:
      throws java.security.KeyStoreException
    MethodParameters:
       Name  Flags
      alias  
      key    
      chain  

  public void engineSetCertificateEntry(java.lang.String, java.security.cert.Certificate);
    descriptor: (Ljava/lang/String;Ljava/security/cert/Certificate;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
        start local 2 // java.security.cert.Certificate cert
         0: .line 348
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 3
            monitorenter
         1: .line 350
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* entry */
        start local 4 // java.lang.Object entry
         2: .line 351
            aload 4 /* entry */
            ifnull 7
         3: .line 352
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 5
         4: .line 353
            new java.security.KeyStoreException
            dup
            ldc "Cannot overwrite own certificate"
            invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 355
      StackMap locals: java.util.Hashtable java.lang.Object
      StackMap stack:
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            ifeq 7
         6: .line 356
            new java.security.KeyStoreException
            dup
            ldc "Cannot overwrite secret key"
            invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 360
      StackMap locals:
      StackMap stack:
            new com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.<init>:()V
            astore 5 /* trustedCertEntry */
        start local 5 // com.sun.crypto.provider.JceKeyStore$TrustedCertEntry trustedCertEntry
         8: .line 361
            aload 5 /* trustedCertEntry */
            aload 2 /* cert */
            putfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
         9: .line 362
            aload 5 /* trustedCertEntry */
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            putfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.date:Ljava/util/Date;
        10: .line 363
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            aload 5 /* trustedCertEntry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // com.sun.crypto.provider.JceKeyStore$TrustedCertEntry trustedCertEntry
        end local 4 // java.lang.Object entry
        11: .line 348
            aload 3
            monitorexit
        12: goto 15
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.lang.String java.security.cert.Certificate java.util.Hashtable
      StackMap stack: java.lang.Throwable
        13: aload 3
            monitorexit
        14: athrow
        15: .line 365
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.security.cert.Certificate cert
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   16     0              this  Lcom/sun/crypto/provider/JceKeyStore;
            0   16     1             alias  Ljava/lang/String;
            0   16     2              cert  Ljava/security/cert/Certificate;
            2   11     4             entry  Ljava/lang/Object;
            8   11     5  trustedCertEntry  Lcom/sun/crypto/provider/JceKeyStore$TrustedCertEntry;
      Exception table:
        from    to  target  type
           1    12      13  any
          13    14      13  any
    Exceptions:
      throws java.security.KeyStoreException
    MethodParameters:
       Name  Flags
      alias  
      cert   

  public void engineDeleteEntry(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
         0: .line 377
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 2
            monitorenter
         1: .line 378
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 377
            aload 2
            monitorexit
         3: goto 6
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.lang.String java.util.Hashtable
      StackMap stack: java.lang.Throwable
         4: aload 2
            monitorexit
         5: athrow
         6: .line 380
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lcom/sun/crypto/provider/JceKeyStore;
            0    7     1  alias  Ljava/lang/String;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
    Exceptions:
      throws java.security.KeyStoreException
    MethodParameters:
       Name  Flags
      alias  

  public java.util.Enumeration<java.lang.String> engineAliases();
    descriptor: ()Ljava/util/Enumeration;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.JceKeyStore this
         0: .line 388
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.keys:()Ljava/util/Enumeration;
            areturn
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/JceKeyStore;
    Signature: ()Ljava/util/Enumeration<Ljava/lang/String;>;

  public boolean engineContainsAlias(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
         0: .line 399
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/sun/crypto/provider/JceKeyStore;
            0    1     1  alias  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      alias  

  public int engineSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.JceKeyStore this
         0: .line 408
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.size:()I
            ireturn
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/JceKeyStore;

  public boolean engineIsKeyEntry(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
         0: .line 419
            iconst_0
            istore 2 /* isKey */
        start local 2 // boolean isKey
         1: .line 421
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* entry */
        start local 3 // java.lang.Object entry
         2: .line 422
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifne 4
         3: .line 423
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            ifeq 5
         4: .line 424
      StackMap locals: int java.lang.Object
      StackMap stack:
            iconst_1
            istore 2 /* isKey */
         5: .line 427
      StackMap locals:
      StackMap stack:
            iload 2 /* isKey */
            ireturn
        end local 3 // java.lang.Object entry
        end local 2 // boolean isKey
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lcom/sun/crypto/provider/JceKeyStore;
            0    6     1  alias  Ljava/lang/String;
            1    6     2  isKey  Z
            2    6     3  entry  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      alias  

  public boolean engineIsCertificateEntry(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.lang.String alias
         0: .line 438
            iconst_0
            istore 2 /* isCert */
        start local 2 // boolean isCert
         1: .line 439
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 1 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* entry */
        start local 3 // java.lang.Object entry
         2: .line 440
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 4
         3: .line 441
            iconst_1
            istore 2 /* isCert */
         4: .line 443
      StackMap locals: int java.lang.Object
      StackMap stack:
            iload 2 /* isCert */
            ireturn
        end local 3 // java.lang.Object entry
        end local 2 // boolean isCert
        end local 1 // java.lang.String alias
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/sun/crypto/provider/JceKeyStore;
            0    5     1   alias  Ljava/lang/String;
            1    5     2  isCert  Z
            2    5     3   entry  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      alias  

  public java.lang.String engineGetCertificateAlias(java.security.cert.Certificate);
    descriptor: (Ljava/security/cert/Certificate;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.security.cert.Certificate cert
         0: .line 465
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.keys:()Ljava/util/Enumeration;
            astore 3 /* e */
        start local 3 // java.util.Enumeration e
         1: .line 466
            goto 12
         2: .line 467
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.security.cert.Certificate top java.util.Enumeration
      StackMap stack:
            aload 3 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* alias */
        start local 4 // java.lang.String alias
         3: .line 468
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 4 /* alias */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* entry */
        start local 5 // java.lang.Object entry
         4: .line 469
            aload 5 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 7
         5: .line 470
            aload 5 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            getfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
            astore 2 /* certElem */
        start local 2 // java.security.cert.Certificate certElem
         6: .line 471
            goto 10
        end local 2 // java.security.cert.Certificate certElem
      StackMap locals: java.lang.String java.lang.Object
      StackMap stack:
         7: aload 5 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 12
         8: .line 472
            aload 5 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            ifnull 12
         9: .line 473
            aload 5 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            iconst_0
            aaload
            astore 2 /* certElem */
        start local 2 // java.security.cert.Certificate certElem
        10: .line 477
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.security.cert.Certificate java.security.cert.Certificate java.util.Enumeration java.lang.String java.lang.Object
      StackMap stack:
            aload 2 /* certElem */
            aload 1 /* cert */
            invokevirtual java.security.cert.Certificate.equals:(Ljava/lang/Object;)Z
            ifeq 12
        11: .line 478
            aload 4 /* alias */
            areturn
        end local 5 // java.lang.Object entry
        end local 4 // java.lang.String alias
        end local 2 // java.security.cert.Certificate certElem
        12: .line 466
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.security.cert.Certificate top java.util.Enumeration
      StackMap stack:
            aload 3 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 2
        13: .line 481
            aconst_null
            areturn
        end local 3 // java.util.Enumeration e
        end local 1 // java.security.cert.Certificate cert
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0      this  Lcom/sun/crypto/provider/JceKeyStore;
            0   14     1      cert  Ljava/security/cert/Certificate;
            6    7     2  certElem  Ljava/security/cert/Certificate;
           10   12     2  certElem  Ljava/security/cert/Certificate;
            1   14     3         e  Ljava/util/Enumeration<Ljava/lang/String;>;
            3   12     4     alias  Ljava/lang/String;
            4   12     5     entry  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      cert  

  public void engineStore(java.io.OutputStream, char[]);
    descriptor: (Ljava/io/OutputStream;[C)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=15, args_size=3
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.io.OutputStream stream
        start local 2 // char[] password
         0: .line 500
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 3
            monitorenter
         1: .line 545
            aload 2 /* password */
            ifnonnull 3
         2: .line 546
            new java.lang.IllegalArgumentException
            dup
            ldc "password can't be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 551
      StackMap locals: java.util.Hashtable
      StackMap stack:
            aload 0 /* this */
            aload 2 /* password */
            invokevirtual com.sun.crypto.provider.JceKeyStore.getPreKeyedHash:([C)Ljava/security/MessageDigest;
            astore 5 /* md */
        start local 5 // java.security.MessageDigest md
         4: .line 553
            new java.io.DataOutputStream
            dup
            new java.security.DigestOutputStream
            dup
            aload 1 /* stream */
            aload 5 /* md */
            invokespecial java.security.DigestOutputStream.<init>:(Ljava/io/OutputStream;Ljava/security/MessageDigest;)V
            invokespecial java.io.DataOutputStream.<init>:(Ljava/io/OutputStream;)V
         5: .line 552
            astore 6 /* dos */
        start local 6 // java.io.DataOutputStream dos
         6: .line 556
            aconst_null
            astore 7 /* oos */
        start local 7 // java.io.ObjectOutputStream oos
         7: .line 558
            aload 6 /* dos */
            ldc -825307442
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
         8: .line 559
            aload 6 /* dos */
            iconst_2
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
         9: .line 561
            aload 6 /* dos */
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.size:()I
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        10: .line 563
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.keys:()Ljava/util/Enumeration;
            astore 8 /* e */
        start local 8 // java.util.Enumeration e
        11: .line 564
            goto 49
        12: .line 566
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.OutputStream char[] java.util.Hashtable top java.security.MessageDigest java.io.DataOutputStream java.io.ObjectOutputStream java.util.Enumeration
      StackMap stack:
            aload 8 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* alias */
        start local 9 // java.lang.String alias
        13: .line 567
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 9 /* alias */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 10 /* entry */
        start local 10 // java.lang.Object entry
        14: .line 569
            aload 10 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 35
        15: .line 571
            aload 10 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            astore 11 /* pentry */
        start local 11 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry pentry
        16: .line 574
            aload 6 /* dos */
            iconst_1
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        17: .line 577
            aload 6 /* dos */
            aload 9 /* alias */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        18: .line 580
            aload 6 /* dos */
            aload 11 /* pentry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.date:Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokevirtual java.io.DataOutputStream.writeLong:(J)V
        19: .line 583
            aload 6 /* dos */
            aload 11 /* pentry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.protectedKey:[B
            arraylength
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        20: .line 584
            aload 6 /* dos */
            aload 11 /* pentry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.protectedKey:[B
            invokevirtual java.io.DataOutputStream.write:([B)V
        21: .line 588
            aload 11 /* pentry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            ifnonnull 24
        22: .line 589
            iconst_0
            istore 12 /* chainLen */
        start local 12 // int chainLen
        23: .line 590
            goto 25
        end local 12 // int chainLen
        24: .line 591
      StackMap locals: java.lang.String java.lang.Object com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
      StackMap stack:
            aload 11 /* pentry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            arraylength
            istore 12 /* chainLen */
        start local 12 // int chainLen
        25: .line 593
      StackMap locals: int
      StackMap stack:
            aload 6 /* dos */
            iload 12 /* chainLen */
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        26: .line 594
            iconst_0
            istore 13 /* i */
        start local 13 // int i
        27: goto 33
        28: .line 595
      StackMap locals: int
      StackMap stack:
            aload 11 /* pentry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            iload 13 /* i */
            aaload
            invokevirtual java.security.cert.Certificate.getEncoded:()[B
            astore 4 /* encoded */
        start local 4 // byte[] encoded
        29: .line 596
            aload 6 /* dos */
            aload 11 /* pentry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            iload 13 /* i */
            aaload
            invokevirtual java.security.cert.Certificate.getType:()Ljava/lang/String;
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        30: .line 597
            aload 6 /* dos */
            aload 4 /* encoded */
            arraylength
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        31: .line 598
            aload 6 /* dos */
            aload 4 /* encoded */
            invokevirtual java.io.DataOutputStream.write:([B)V
        32: .line 594
            iinc 13 /* i */ 1
        end local 4 // byte[] encoded
      StackMap locals:
      StackMap stack:
        33: iload 13 /* i */
            iload 12 /* chainLen */
            if_icmplt 28
        end local 13 // int i
        end local 12 // int chainLen
        end local 11 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry pentry
        34: .line 601
            goto 49
      StackMap locals:
      StackMap stack:
        35: aload 10 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 44
        36: .line 604
            aload 6 /* dos */
            iconst_2
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        37: .line 607
            aload 6 /* dos */
            aload 9 /* alias */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        38: .line 610
            aload 6 /* dos */
            aload 10 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            getfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.date:Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokevirtual java.io.DataOutputStream.writeLong:(J)V
        39: .line 613
            aload 10 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            getfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
            invokevirtual java.security.cert.Certificate.getEncoded:()[B
            astore 4 /* encoded */
        start local 4 // byte[] encoded
        40: .line 614
            aload 6 /* dos */
            aload 10 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            getfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
            invokevirtual java.security.cert.Certificate.getType:()Ljava/lang/String;
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        41: .line 615
            aload 6 /* dos */
            aload 4 /* encoded */
            arraylength
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        42: .line 616
            aload 6 /* dos */
            aload 4 /* encoded */
            invokevirtual java.io.DataOutputStream.write:([B)V
        43: .line 618
            goto 49
        end local 4 // byte[] encoded
        44: .line 621
      StackMap locals:
      StackMap stack:
            aload 6 /* dos */
            iconst_3
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        45: .line 624
            aload 6 /* dos */
            aload 9 /* alias */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        46: .line 627
            aload 6 /* dos */
            aload 10 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.date:Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokevirtual java.io.DataOutputStream.writeLong:(J)V
        47: .line 630
            new java.io.ObjectOutputStream
            dup
            aload 6 /* dos */
            invokespecial java.io.ObjectOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 7 /* oos */
        48: .line 631
            aload 7 /* oos */
            aload 10 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            getfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.sealedKey:Ljavax/crypto/SealedObject;
            invokevirtual java.io.ObjectOutputStream.writeObject:(Ljava/lang/Object;)V
        end local 10 // java.lang.Object entry
        end local 9 // java.lang.String alias
        49: .line 564
      StackMap locals:
      StackMap stack:
            aload 8 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 12
        50: .line 642
            aload 5 /* md */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 9 /* digest */
        start local 9 // byte[] digest
        51: .line 644
            aload 6 /* dos */
            aload 9 /* digest */
            invokevirtual java.io.DataOutputStream.write:([B)V
        52: .line 645
            aload 6 /* dos */
            invokevirtual java.io.DataOutputStream.flush:()V
        end local 9 // byte[] digest
        end local 8 // java.util.Enumeration e
        53: .line 646
            goto 60
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.OutputStream char[] java.util.Hashtable top java.security.MessageDigest java.io.DataOutputStream java.io.ObjectOutputStream
      StackMap stack: java.lang.Throwable
        54: astore 14
        55: .line 647
            aload 7 /* oos */
            ifnull 58
        56: .line 648
            aload 7 /* oos */
            invokevirtual java.io.ObjectOutputStream.close:()V
        57: .line 649
            goto 59
        58: .line 650
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.OutputStream char[] java.util.Hashtable top java.security.MessageDigest java.io.DataOutputStream java.io.ObjectOutputStream top top top top top top java.lang.Throwable
      StackMap stack:
            aload 6 /* dos */
            invokevirtual java.io.DataOutputStream.close:()V
        59: .line 652
      StackMap locals:
      StackMap stack:
            aload 14
            athrow
        60: .line 647
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.OutputStream char[] java.util.Hashtable top java.security.MessageDigest java.io.DataOutputStream java.io.ObjectOutputStream
      StackMap stack:
            aload 7 /* oos */
            ifnull 63
        61: .line 648
            aload 7 /* oos */
            invokevirtual java.io.ObjectOutputStream.close:()V
        62: .line 649
            goto 64
        63: .line 650
      StackMap locals:
      StackMap stack:
            aload 6 /* dos */
            invokevirtual java.io.DataOutputStream.close:()V
        end local 7 // java.io.ObjectOutputStream oos
        end local 6 // java.io.DataOutputStream dos
        end local 5 // java.security.MessageDigest md
        64: .line 500
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.OutputStream char[] java.util.Hashtable
      StackMap stack:
            aload 3
            monitorexit
        65: goto 68
      StackMap locals:
      StackMap stack: java.lang.Throwable
        66: aload 3
            monitorexit
        67: athrow
        68: .line 654
      StackMap locals:
      StackMap stack:
            return
        end local 2 // char[] password
        end local 1 // java.io.OutputStream stream
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   69     0      this  Lcom/sun/crypto/provider/JceKeyStore;
            0   69     1    stream  Ljava/io/OutputStream;
            0   69     2  password  [C
           29   33     4   encoded  [B
           40   44     4   encoded  [B
            4   64     5        md  Ljava/security/MessageDigest;
            6   64     6       dos  Ljava/io/DataOutputStream;
            7   64     7       oos  Ljava/io/ObjectOutputStream;
           11   53     8         e  Ljava/util/Enumeration<Ljava/lang/String;>;
           13   49     9     alias  Ljava/lang/String;
           14   49    10     entry  Ljava/lang/Object;
           16   34    11    pentry  Lcom/sun/crypto/provider/JceKeyStore$PrivateKeyEntry;
           23   24    12  chainLen  I
           25   34    12  chainLen  I
           27   34    13         i  I
           51   53     9    digest  [B
      Exception table:
        from    to  target  type
           7    54      54  any
           1    65      66  any
          66    67      66  any
    Exceptions:
      throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.cert.CertificateException
    MethodParameters:
          Name  Flags
      stream    
      password  

  public void engineLoad(java.io.InputStream, char[]);
    descriptor: (Ljava/io/InputStream;[C)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=22, args_size=3
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.io.InputStream stream
        start local 2 // char[] password
         0: .line 676
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 3
            monitorenter
         1: .line 678
            aconst_null
            astore 5 /* md */
        start local 5 // java.security.MessageDigest md
         2: .line 679
            aconst_null
            astore 6 /* cf */
        start local 6 // java.security.cert.CertificateFactory cf
         3: .line 680
            aconst_null
            astore 7 /* cfs */
        start local 7 // java.util.Hashtable cfs
         4: .line 681
            aconst_null
            astore 8 /* bais */
        start local 8 // java.io.ByteArrayInputStream bais
         5: .line 682
            aconst_null
            astore 9 /* encoded */
        start local 9 // byte[] encoded
         6: .line 684
            aload 1 /* stream */
            ifnonnull 9
         7: .line 685
            aload 3
            monitorexit
         8: return
         9: .line 687
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable top java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[]
      StackMap stack:
            aload 2 /* password */
            ifnull 13
        10: .line 688
            aload 0 /* this */
            aload 2 /* password */
            invokevirtual com.sun.crypto.provider.JceKeyStore.getPreKeyedHash:([C)Ljava/security/MessageDigest;
            astore 5 /* md */
        11: .line 689
            new java.io.DataInputStream
            dup
            new java.security.DigestInputStream
            dup
            aload 1 /* stream */
            aload 5 /* md */
            invokespecial java.security.DigestInputStream.<init>:(Ljava/io/InputStream;Ljava/security/MessageDigest;)V
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 4 /* dis */
        start local 4 // java.io.DataInputStream dis
        12: .line 690
            goto 14
        end local 4 // java.io.DataInputStream dis
        13: .line 691
      StackMap locals:
      StackMap stack:
            new java.io.DataInputStream
            dup
            aload 1 /* stream */
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 4 /* dis */
        start local 4 // java.io.DataInputStream dis
        14: .line 695
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable java.io.DataInputStream java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[]
      StackMap stack:
            aconst_null
            astore 10 /* ois */
        start local 10 // java.io.ObjectInputStream ois
        15: .line 700
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 11 /* xMagic */
        start local 11 // int xMagic
        16: .line 701
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 12 /* xVersion */
        start local 12 // int xVersion
        17: .line 707
            iload 11 /* xMagic */
            ldc -825307442
            if_icmpeq 18
            iload 11 /* xMagic */
            ldc -17957139
            if_icmpne 19
        18: .line 708
      StackMap locals: java.io.ObjectInputStream int int
      StackMap stack:
            iload 12 /* xVersion */
            iconst_1
            if_icmpeq 20
            iload 12 /* xVersion */
            iconst_2
            if_icmpeq 20
        19: .line 709
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "Invalid keystore format"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 712
      StackMap locals:
      StackMap stack:
            iload 12 /* xVersion */
            iconst_1
            if_icmpne 23
        21: .line 713
            ldc "X509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 6 /* cf */
        22: .line 714
            goto 24
        23: .line 716
      StackMap locals:
      StackMap stack:
            new java.util.Hashtable
            dup
            iconst_3
            invokespecial java.util.Hashtable.<init>:(I)V
            astore 7 /* cfs */
        24: .line 719
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.clear:()V
        25: .line 720
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 13 /* count */
        start local 13 // int count
        26: .line 722
            iconst_0
            istore 14 /* i */
        start local 14 // int i
        27: goto 103
        28: .line 726
      StackMap locals: int int
      StackMap stack:
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 15 /* tag */
        start local 15 // int tag
        29: .line 728
            iload 15 /* tag */
            iconst_1
            if_icmpne 65
        30: .line 730
            new com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.<init>:()V
            astore 17 /* entry */
        start local 17 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry entry
        31: .line 733
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 16 /* alias */
        start local 16 // java.lang.String alias
        32: .line 736
            aload 17 /* entry */
            new java.util.Date
            dup
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readLong:()J
            invokespecial java.util.Date.<init>:(J)V
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.date:Ljava/util/Date;
        33: .line 740
            aload 17 /* entry */
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            newarray 8
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.protectedKey:[B
        34: .line 741
            goto 37
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable java.io.DataInputStream java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[] java.io.ObjectInputStream int int int int int java.lang.String com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
      StackMap stack: java.lang.OutOfMemoryError
        35: pop
        36: .line 742
            new java.io.IOException
            dup
            ldc "Keysize too big"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        37: .line 744
      StackMap locals:
      StackMap stack:
            aload 4 /* dis */
            aload 17 /* entry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.protectedKey:[B
            invokevirtual java.io.DataInputStream.readFully:([B)V
        38: .line 747
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 18 /* numOfCerts */
        start local 18 // int numOfCerts
        39: .line 749
            iload 18 /* numOfCerts */
            ifle 44
        40: .line 750
            aload 17 /* entry */
            iload 18 /* numOfCerts */
            anewarray java.security.cert.Certificate
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
        41: .line 752
            goto 44
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable java.io.DataInputStream java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[] java.io.ObjectInputStream int int int int int java.lang.String com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry int
      StackMap stack: java.lang.OutOfMemoryError
        42: pop
        43: .line 753
            new java.io.IOException
            dup
            ldc "Too many certificates in chain"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        44: .line 756
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 19 /* j */
        start local 19 // int j
        45: goto 62
        46: .line 757
      StackMap locals: int
      StackMap stack:
            iload 12 /* xVersion */
            iconst_2
            if_icmpne 54
        47: .line 761
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 20 /* certType */
        start local 20 // java.lang.String certType
        48: .line 762
            aload 7 /* cfs */
            aload 20 /* certType */
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifeq 51
        49: .line 764
            aload 7 /* cfs */
            aload 20 /* certType */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.cert.CertificateFactory
            astore 6 /* cf */
        50: .line 765
            goto 54
        51: .line 768
      StackMap locals: java.lang.String
      StackMap stack:
            aload 20 /* certType */
        52: .line 767
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 6 /* cf */
        53: .line 771
            aload 7 /* cfs */
            aload 20 /* certType */
            aload 6 /* cf */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 20 // java.lang.String certType
        54: .line 776
      StackMap locals:
      StackMap stack:
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            newarray 8
            astore 9 /* encoded */
        55: .line 777
            goto 58
      StackMap locals:
      StackMap stack: java.lang.OutOfMemoryError
        56: pop
        57: .line 778
            new java.io.IOException
            dup
            ldc "Certificate too big"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        58: .line 780
      StackMap locals:
      StackMap stack:
            aload 4 /* dis */
            aload 9 /* encoded */
            invokevirtual java.io.DataInputStream.readFully:([B)V
        59: .line 781
            new java.io.ByteArrayInputStream
            dup
            aload 9 /* encoded */
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 8 /* bais */
        60: .line 782
            aload 17 /* entry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            iload 19 /* j */
            aload 6 /* cf */
            aload 8 /* bais */
            invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
            aastore
        61: .line 756
            iinc 19 /* j */ 1
      StackMap locals:
      StackMap stack:
        62: iload 19 /* j */
            iload 18 /* numOfCerts */
            if_icmplt 46
        end local 19 // int j
        63: .line 786
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 16 /* alias */
            aload 17 /* entry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 18 // int numOfCerts
        end local 17 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry entry
        64: .line 788
            goto 102
        end local 16 // java.lang.String alias
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable java.io.DataInputStream java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[] java.io.ObjectInputStream int int int int int
      StackMap stack:
        65: iload 15 /* tag */
            iconst_2
            if_icmpne 85
        66: .line 790
            new com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.<init>:()V
            astore 17 /* entry */
        start local 17 // com.sun.crypto.provider.JceKeyStore$TrustedCertEntry entry
        67: .line 793
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 16 /* alias */
        start local 16 // java.lang.String alias
        68: .line 796
            aload 17 /* entry */
            new java.util.Date
            dup
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readLong:()J
            invokespecial java.util.Date.<init>:(J)V
            putfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.date:Ljava/util/Date;
        69: .line 799
            iload 12 /* xVersion */
            iconst_2
            if_icmpne 76
        70: .line 803
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 18 /* certType */
        start local 18 // java.lang.String certType
        71: .line 804
            aload 7 /* cfs */
            aload 18 /* certType */
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifeq 74
        72: .line 806
            aload 7 /* cfs */
            aload 18 /* certType */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.cert.CertificateFactory
            astore 6 /* cf */
        73: .line 807
            goto 76
        74: .line 809
      StackMap locals: java.lang.String com.sun.crypto.provider.JceKeyStore$TrustedCertEntry java.lang.String
      StackMap stack:
            aload 18 /* certType */
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 6 /* cf */
        75: .line 812
            aload 7 /* cfs */
            aload 18 /* certType */
            aload 6 /* cf */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 18 // java.lang.String certType
        76: .line 816
      StackMap locals:
      StackMap stack:
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            newarray 8
            astore 9 /* encoded */
        77: .line 817
            goto 80
      StackMap locals:
      StackMap stack: java.lang.OutOfMemoryError
        78: pop
        79: .line 818
            new java.io.IOException
            dup
            ldc "Certificate too big"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        80: .line 820
      StackMap locals:
      StackMap stack:
            aload 4 /* dis */
            aload 9 /* encoded */
            invokevirtual java.io.DataInputStream.readFully:([B)V
        81: .line 821
            new java.io.ByteArrayInputStream
            dup
            aload 9 /* encoded */
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 8 /* bais */
        82: .line 822
            aload 17 /* entry */
            aload 6 /* cf */
            aload 8 /* bais */
            invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
            putfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
        83: .line 825
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 16 /* alias */
            aload 17 /* entry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 17 // com.sun.crypto.provider.JceKeyStore$TrustedCertEntry entry
        84: .line 827
            goto 102
        end local 16 // java.lang.String alias
      StackMap locals:
      StackMap stack:
        85: iload 15 /* tag */
            iconst_3
            if_icmpne 101
        86: .line 829
            new com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.<init>:()V
            astore 17 /* entry */
        start local 17 // com.sun.crypto.provider.JceKeyStore$SecretKeyEntry entry
        87: .line 832
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 16 /* alias */
        start local 16 // java.lang.String alias
        88: .line 835
            aload 17 /* entry */
            new java.util.Date
            dup
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readLong:()J
            invokespecial java.util.Date.<init>:(J)V
            putfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.date:Ljava/util/Date;
        89: .line 839
            new java.io.ObjectInputStream
            dup
            aload 4 /* dis */
            invokespecial java.io.ObjectInputStream.<init>:(Ljava/io/InputStream;)V
            astore 10 /* ois */
        90: .line 840
            aload 10 /* ois */
            astore 18 /* ois2 */
        start local 18 // java.io.ObjectInputStream ois2
        91: .line 843
            aload 18 /* ois2 */
            invokedynamic run(Ljava/io/ObjectInputStream;)Ljava/security/PrivilegedAction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  com/sun/crypto/provider/JceKeyStore.lambda$0(Ljava/io/ObjectInputStream;)Ljava/lang/Void; (6)
                  ()Ljava/lang/Void;
        92: .line 842
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
        93: .line 848
            aload 17 /* entry */
            aload 10 /* ois */
            invokevirtual java.io.ObjectInputStream.readObject:()Ljava/lang/Object;
            checkcast javax.crypto.SealedObject
            putfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.sealedKey:Ljavax/crypto/SealedObject;
        end local 18 // java.io.ObjectInputStream ois2
        94: .line 851
            goto 99
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable java.io.DataInputStream java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[] java.io.ObjectInputStream int int int int int java.lang.String com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
      StackMap stack: java.lang.ClassNotFoundException
        95: astore 18 /* cnfe */
        start local 18 // java.lang.ClassNotFoundException cnfe
        96: .line 852
            new java.io.IOException
            dup
            aload 18 /* cnfe */
            invokevirtual java.lang.ClassNotFoundException.getMessage:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 18 // java.lang.ClassNotFoundException cnfe
        97: .line 853
      StackMap locals:
      StackMap stack: java.io.InvalidClassException
            pop
        98: .line 854
            new java.io.IOException
            dup
            ldc "Invalid secret key format"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        99: .line 858
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 16 /* alias */
            aload 17 /* entry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 17 // com.sun.crypto.provider.JceKeyStore$SecretKeyEntry entry
       100: .line 860
            goto 102
        end local 16 // java.lang.String alias
       101: .line 861
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "Unrecognized keystore entry"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 15 // int tag
       102: .line 722
      StackMap locals:
      StackMap stack:
            iinc 14 /* i */ 1
      StackMap locals:
      StackMap stack:
       103: iload 14 /* i */
            iload 13 /* count */
            if_icmplt 28
        end local 14 // int i
       104: .line 870
            aload 2 /* password */
            ifnull 126
       105: .line 872
            aload 5 /* md */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 14 /* computed */
        start local 14 // byte[] computed
       106: .line 873
            aload 14 /* computed */
            arraylength
            newarray 8
            astore 15 /* actual */
        start local 15 // byte[] actual
       107: .line 874
            aload 4 /* dis */
            aload 15 /* actual */
            invokevirtual java.io.DataInputStream.readFully:([B)V
       108: .line 875
            iconst_0
            istore 16 /* i */
        start local 16 // int i
       109: goto 118
       110: .line 876
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable java.io.DataInputStream java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[] java.io.ObjectInputStream int int int byte[] byte[] int
      StackMap stack:
            aload 14 /* computed */
            iload 16 /* i */
            baload
            aload 15 /* actual */
            iload 16 /* i */
            baload
            if_icmpeq 117
       111: .line 877
            new java.io.IOException
            dup
       112: .line 878
            ldc "Keystore was tampered with, or password was incorrect"
       113: .line 880
            new java.security.UnrecoverableKeyException
            dup
       114: .line 881
            ldc "Password verification failed"
       115: .line 880
            invokespecial java.security.UnrecoverableKeyException.<init>:(Ljava/lang/String;)V
       116: .line 877
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
       117: .line 875
      StackMap locals:
      StackMap stack:
            iinc 16 /* i */ 1
      StackMap locals:
      StackMap stack:
       118: iload 16 /* i */
            aload 14 /* computed */
            arraylength
            if_icmplt 110
        end local 16 // int i
        end local 15 // byte[] actual
        end local 14 // byte[] computed
        end local 13 // int count
        end local 12 // int xVersion
        end local 11 // int xMagic
       119: .line 885
            goto 126
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable java.io.DataInputStream java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[] java.io.ObjectInputStream
      StackMap stack: java.lang.Throwable
       120: astore 21
       121: .line 886
            aload 10 /* ois */
            ifnull 124
       122: .line 887
            aload 10 /* ois */
            invokevirtual java.io.ObjectInputStream.close:()V
       123: .line 888
            goto 125
       124: .line 889
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable java.io.DataInputStream java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[] java.io.ObjectInputStream top top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.close:()V
       125: .line 891
      StackMap locals:
      StackMap stack:
            aload 21
            athrow
       126: .line 886
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable java.io.DataInputStream java.security.MessageDigest java.security.cert.CertificateFactory java.util.Hashtable java.io.ByteArrayInputStream byte[] java.io.ObjectInputStream
      StackMap stack:
            aload 10 /* ois */
            ifnull 129
       127: .line 887
            aload 10 /* ois */
            invokevirtual java.io.ObjectInputStream.close:()V
       128: .line 888
            goto 130
       129: .line 889
      StackMap locals:
      StackMap stack:
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.close:()V
        end local 10 // java.io.ObjectInputStream ois
        end local 9 // byte[] encoded
        end local 8 // java.io.ByteArrayInputStream bais
        end local 7 // java.util.Hashtable cfs
        end local 6 // java.security.cert.CertificateFactory cf
        end local 5 // java.security.MessageDigest md
        end local 4 // java.io.DataInputStream dis
       130: .line 676
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable
      StackMap stack:
            aload 3
            monitorexit
       131: goto 134
      StackMap locals:
      StackMap stack: java.lang.Throwable
       132: aload 3
            monitorexit
       133: athrow
       134: .line 893
      StackMap locals:
      StackMap stack:
            return
        end local 2 // char[] password
        end local 1 // java.io.InputStream stream
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0  135     0        this  Lcom/sun/crypto/provider/JceKeyStore;
            0  135     1      stream  Ljava/io/InputStream;
            0  135     2    password  [C
           12   13     4         dis  Ljava/io/DataInputStream;
           14  130     4         dis  Ljava/io/DataInputStream;
            2  130     5          md  Ljava/security/MessageDigest;
            3  130     6          cf  Ljava/security/cert/CertificateFactory;
            4  130     7         cfs  Ljava/util/Hashtable<Ljava/lang/String;Ljava/security/cert/CertificateFactory;>;
            5  130     8        bais  Ljava/io/ByteArrayInputStream;
            6  130     9     encoded  [B
           15  130    10         ois  Ljava/io/ObjectInputStream;
           16  119    11      xMagic  I
           17  119    12    xVersion  I
           26  119    13       count  I
           27  104    14           i  I
           29  102    15         tag  I
           32   65    16       alias  Ljava/lang/String;
           68   85    16       alias  Ljava/lang/String;
           88  101    16       alias  Ljava/lang/String;
           31   64    17       entry  Lcom/sun/crypto/provider/JceKeyStore$PrivateKeyEntry;
           39   64    18  numOfCerts  I
           45   63    19           j  I
           48   54    20    certType  Ljava/lang/String;
           67   84    17       entry  Lcom/sun/crypto/provider/JceKeyStore$TrustedCertEntry;
           71   76    18    certType  Ljava/lang/String;
           87  100    17       entry  Lcom/sun/crypto/provider/JceKeyStore$SecretKeyEntry;
           91   94    18        ois2  Ljava/io/ObjectInputStream;
           96   97    18        cnfe  Ljava/lang/ClassNotFoundException;
          106  119    14    computed  [B
          107  119    15      actual  [B
          109  119    16           i  I
      Exception table:
        from    to  target  type
          33    34      35  Class java.lang.OutOfMemoryError
          39    41      42  Class java.lang.OutOfMemoryError
          54    55      56  Class java.lang.OutOfMemoryError
          76    77      78  Class java.lang.OutOfMemoryError
          89    94      95  Class java.lang.ClassNotFoundException
          89    94      97  Class java.io.InvalidClassException
          15   120     120  any
           1     8     132  any
           9   131     132  any
         132   133     132  any
    Exceptions:
      throws java.io.IOException, java.security.NoSuchAlgorithmException, java.security.cert.CertificateException
    MethodParameters:
          Name  Flags
      stream    
      password  

  private java.security.MessageDigest getPreKeyedHash(char[]);
    descriptor: ([C)Ljava/security/MessageDigest;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // char[] password
         0: .line 903
            ldc "SHA"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 4 /* md */
        start local 4 // java.security.MessageDigest md
         1: .line 904
            aload 1 /* password */
            arraylength
            iconst_2
            imul
            newarray 8
            astore 5 /* passwdBytes */
        start local 5 // byte[] passwdBytes
         2: .line 905
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         3: iconst_0
            istore 3 /* j */
        start local 3 // int j
         4: goto 8
         5: .line 906
      StackMap locals: com.sun.crypto.provider.JceKeyStore char[] int int java.security.MessageDigest byte[]
      StackMap stack:
            aload 5 /* passwdBytes */
            iload 3 /* j */
            iinc 3 /* j */ 1
            aload 1 /* password */
            iload 2 /* i */
            caload
            bipush 8
            ishr
            i2b
            bastore
         6: .line 907
            aload 5 /* passwdBytes */
            iload 3 /* j */
            iinc 3 /* j */ 1
            aload 1 /* password */
            iload 2 /* i */
            caload
            i2b
            bastore
         7: .line 905
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            aload 1 /* password */
            arraylength
            if_icmplt 5
         9: .line 909
            aload 4 /* md */
            aload 5 /* passwdBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        10: .line 910
            iconst_0
            istore 2 /* i */
            goto 13
        11: .line 911
      StackMap locals:
      StackMap stack:
            aload 5 /* passwdBytes */
            iload 2 /* i */
            iconst_0
            bastore
        12: .line 910
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 2 /* i */
            aload 5 /* passwdBytes */
            arraylength
            if_icmplt 11
        14: .line 912
            aload 4 /* md */
            ldc "Mighty Aphrodite"
            ldc "UTF8"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            invokevirtual java.security.MessageDigest.update:([B)V
        15: .line 913
            aload 4 /* md */
            areturn
        end local 5 // byte[] passwdBytes
        end local 4 // java.security.MessageDigest md
        end local 3 // int j
        end local 2 // int i
        end local 1 // char[] password
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0         this  Lcom/sun/crypto/provider/JceKeyStore;
            0   16     1     password  [C
            3   16     2            i  I
            4   16     3            j  I
            1   16     4           md  Ljava/security/MessageDigest;
            2   16     5  passwdBytes  [B
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.io.UnsupportedEncodingException
    MethodParameters:
          Name  Flags
      password  

  public boolean engineProbe(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.sun.crypto.provider.JceKeyStore this
        start local 1 // java.io.InputStream stream
         0: .line 923
            aload 1 /* stream */
            instanceof java.io.DataInputStream
            ifeq 3
         1: .line 924
            aload 1 /* stream */
            checkcast java.io.DataInputStream
            astore 2 /* dataStream */
        start local 2 // java.io.DataInputStream dataStream
         2: .line 925
            goto 4
        end local 2 // java.io.DataInputStream dataStream
         3: .line 926
      StackMap locals:
      StackMap stack:
            new java.io.DataInputStream
            dup
            aload 1 /* stream */
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 2 /* dataStream */
        start local 2 // java.io.DataInputStream dataStream
         4: .line 929
      StackMap locals: java.io.DataInputStream
      StackMap stack:
            ldc -825307442
            aload 2 /* dataStream */
            invokevirtual java.io.DataInputStream.readInt:()I
            if_icmpne 5
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
        end local 2 // java.io.DataInputStream dataStream
        end local 1 // java.io.InputStream stream
        end local 0 // com.sun.crypto.provider.JceKeyStore this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/sun/crypto/provider/JceKeyStore;
            0    6     1      stream  Ljava/io/InputStream;
            2    3     2  dataStream  Ljava/io/DataInputStream;
            4    6     2  dataStream  Ljava/io/DataInputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  private static java.lang.Void lambda$0(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)Ljava/lang/Void;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 844
            aload 0
         1: .line 845
            new com.sun.crypto.provider.JceKeyStore$DeserializationChecker
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$DeserializationChecker.<init>:()V
         2: .line 844
            invokevirtual java.io.ObjectInputStream.setObjectInputFilter:(Ljava/io/ObjectInputFilter;)V
         3: .line 846
            aconst_null
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "JceKeyStore.java"
NestMembers:
  com.sun.crypto.provider.JceKeyStore$DeserializationChecker  com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry  com.sun.crypto.provider.JceKeyStore$SecretKeyEntry  com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
InnerClasses:
  private DeserializationChecker = com.sun.crypto.provider.JceKeyStore$DeserializationChecker of com.sun.crypto.provider.JceKeyStore
  private final PrivateKeyEntry = com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry of com.sun.crypto.provider.JceKeyStore
  private final SecretKeyEntry = com.sun.crypto.provider.JceKeyStore$SecretKeyEntry of com.sun.crypto.provider.JceKeyStore
  private final TrustedCertEntry = com.sun.crypto.provider.JceKeyStore$TrustedCertEntry of com.sun.crypto.provider.JceKeyStore
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles