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 63
            aload 0 /* this */
            invokespecial java.security.KeyStoreSpi.<init>:()V
         1: .line 99
            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 63
            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 119
            aconst_null
            astore 3 /* key */
        start local 3 // java.security.Key key
         1: .line 121
            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 123
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifne 5
         3: .line 124
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            ifne 5
         4: .line 125
            aconst_null
            areturn
         5: .line 128
      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 130
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 14
         7: .line 131
            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 134
            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 135
            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 136
            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 140
      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 141
            goto 16
        14: .line 142
      StackMap locals:
      StackMap stack:
            aload 4 /* entry */
            checkcast com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            astore 6 /* ske */
        start local 6 // com.sun.crypto.provider.JceKeyStore$SecretKeyEntry ske
        15: .line 143
            aload 5 /* keyProtector */
            aload 6 /* ske */
            getfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.sealedKey:Ljavax/crypto/SealedObject;
            aload 6 /* ske */
            getfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.maxLength:I
            invokevirtual com.sun.crypto.provider.KeyProtector.unseal:(Ljavax/crypto/SealedObject;I)Ljava/security/Key;
            astore 3 /* key */
        end local 6 // com.sun.crypto.provider.JceKeyStore$SecretKeyEntry ske
        16: .line 146
      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;
           15   16     6           ske  Lcom/sun/crypto/provider/JceKeyStore$SecretKeyEntry;
      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 162
            aconst_null
            astore 2 /* chain */
        start local 2 // java.security.cert.Certificate[] chain
         1: .line 164
            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 166
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 5
         3: .line 167
            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 168
            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 171
      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 190
            aconst_null
            astore 2 /* cert */
        start local 2 // java.security.cert.Certificate cert
         1: .line 192
            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 194
            aload 3 /* entry */
            ifnull 9
         3: .line 195
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 6
         4: .line 196
            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 197
            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 198
            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 199
            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 203
      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 215
            aconst_null
            astore 2 /* date */
        start local 2 // java.util.Date date
         1: .line 217
            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 219
            aload 3 /* entry */
            ifnull 10
         3: .line 222
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 6
         4: .line 223
            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 224
            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 225
            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 226
            goto 10
         9: .line 227
      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 231
      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 260
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 5
            monitorenter
         1: .line 262
            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 264
            aload 2 /* key */
            instanceof java.security.PrivateKey
            ifeq 13
         3: .line 265
            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 266
            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 269
            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 272
            aload 4 /* chain */
            ifnull 10
         7: .line 273
            aload 4 /* chain */
            arraylength
            ifeq 10
         8: .line 274
            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 275
            goto 11
        10: .line 276
      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 280
      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 282
            goto 21
        13: .line 283
      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 284
            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 287
            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 288
            aload 7 /* entry */
            ldc 2147483647
            putfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.maxLength:I
        17: .line 289
            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
        18: .line 292
            goto 21
      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
        19: astore 6 /* e */
        start local 6 // java.lang.Exception e
        20: .line 293
            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
        21: .line 260
      StackMap locals:
      StackMap stack:
            aload 5
            monitorexit
        22: goto 25
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: aload 5
            monitorexit
        24: athrow
        25: .line 296
      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   26     0          this  Lcom/sun/crypto/provider/JceKeyStore;
            0   26     1         alias  Ljava/lang/String;
            0   26     2           key  Ljava/security/Key;
            0   26     3      password  [C
            0   26     4         chain  [Ljava/security/cert/Certificate;
            2   18     6  keyProtector  Lcom/sun/crypto/provider/KeyProtector;
            4   12     7         entry  Lcom/sun/crypto/provider/JceKeyStore$PrivateKeyEntry;
           14   18     7         entry  Lcom/sun/crypto/provider/JceKeyStore$SecretKeyEntry;
           20   21     6             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1    18      19  Class java.lang.Exception
           1    22      23  any
          23    24      23  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 323
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 4
            monitorenter
         1: .line 326
            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 327
            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 329
            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 330
            aload 3 /* chain */
            ifnull 8
         5: .line 331
            aload 3 /* chain */
            arraylength
            ifeq 8
         6: .line 332
            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 333
            goto 9
         8: .line 334
      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 337
      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 323
            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 339
      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 358
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 3
            monitorenter
         1: .line 360
            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 361
            aload 4 /* entry */
            ifnull 7
         3: .line 362
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 5
         4: .line 363
            new java.security.KeyStoreException
            dup
            ldc "Cannot overwrite own certificate"
            invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 365
      StackMap locals: java.util.Hashtable java.lang.Object
      StackMap stack:
            aload 4 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            ifeq 7
         6: .line 366
            new java.security.KeyStoreException
            dup
            ldc "Cannot overwrite secret key"
            invokespecial java.security.KeyStoreException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 370
      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 371
            aload 5 /* trustedCertEntry */
            aload 2 /* cert */
            putfield com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.cert:Ljava/security/cert/Certificate;
         9: .line 372
            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 373
            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 358
            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 375
      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 387
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 2
            monitorenter
         1: .line 388
            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 387
            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 390
      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 398
            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 409
            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 418
            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 429
            iconst_0
            istore 2 /* isKey */
        start local 2 // boolean isKey
         1: .line 431
            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 432
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifne 4
         3: .line 433
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            ifeq 5
         4: .line 434
      StackMap locals: int java.lang.Object
      StackMap stack:
            iconst_1
            istore 2 /* isKey */
         5: .line 437
      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 448
            iconst_0
            istore 2 /* isCert */
        start local 2 // boolean isCert
         1: .line 449
            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 450
            aload 3 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 4
         3: .line 451
            iconst_1
            istore 2 /* isCert */
         4: .line 453
      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 475
            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 476
            goto 12
         2: .line 477
      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 478
            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 479
            aload 5 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 7
         5: .line 480
            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 481
            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 482
            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 483
            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 487
      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 488
            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 476
      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 491
            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 510
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 3
            monitorenter
         1: .line 555
            aload 2 /* password */
            ifnonnull 3
         2: .line 556
            new java.lang.IllegalArgumentException
            dup
            ldc "password can't be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 561
      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 563
            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 562
            astore 6 /* dos */
        start local 6 // java.io.DataOutputStream dos
         6: .line 566
            aconst_null
            astore 7 /* oos */
        start local 7 // java.io.ObjectOutputStream oos
         7: .line 568
            aload 6 /* dos */
            ldc -825307442
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
         8: .line 569
            aload 6 /* dos */
            iconst_2
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
         9: .line 571
            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 573
            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 574
            goto 49
        12: .line 576
      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 577
            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 579
            aload 10 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            ifeq 35
        15: .line 581
            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 584
            aload 6 /* dos */
            iconst_1
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        17: .line 587
            aload 6 /* dos */
            aload 9 /* alias */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        18: .line 590
            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 593
            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 594
            aload 6 /* dos */
            aload 11 /* pentry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.protectedKey:[B
            invokevirtual java.io.DataOutputStream.write:([B)V
        21: .line 598
            aload 11 /* pentry */
            getfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
            ifnonnull 24
        22: .line 599
            iconst_0
            istore 12 /* chainLen */
        start local 12 // int chainLen
        23: .line 600
            goto 25
        end local 12 // int chainLen
        24: .line 601
      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 603
      StackMap locals: int
      StackMap stack:
            aload 6 /* dos */
            iload 12 /* chainLen */
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        26: .line 604
            iconst_0
            istore 13 /* i */
        start local 13 // int i
        27: goto 33
        28: .line 605
      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 606
            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 607
            aload 6 /* dos */
            aload 4 /* encoded */
            arraylength
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        31: .line 608
            aload 6 /* dos */
            aload 4 /* encoded */
            invokevirtual java.io.DataOutputStream.write:([B)V
        32: .line 604
            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 611
            goto 49
      StackMap locals:
      StackMap stack:
        35: aload 10 /* entry */
            instanceof com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            ifeq 44
        36: .line 614
            aload 6 /* dos */
            iconst_2
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        37: .line 617
            aload 6 /* dos */
            aload 9 /* alias */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        38: .line 620
            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 623
            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 624
            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 625
            aload 6 /* dos */
            aload 4 /* encoded */
            arraylength
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        42: .line 626
            aload 6 /* dos */
            aload 4 /* encoded */
            invokevirtual java.io.DataOutputStream.write:([B)V
        43: .line 628
            goto 49
        end local 4 // byte[] encoded
        44: .line 631
      StackMap locals:
      StackMap stack:
            aload 6 /* dos */
            iconst_3
            invokevirtual java.io.DataOutputStream.writeInt:(I)V
        45: .line 634
            aload 6 /* dos */
            aload 9 /* alias */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        46: .line 637
            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 640
            new java.io.ObjectOutputStream
            dup
            aload 6 /* dos */
            invokespecial java.io.ObjectOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 7 /* oos */
        48: .line 641
            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 574
      StackMap locals:
      StackMap stack:
            aload 8 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 12
        50: .line 652
            aload 5 /* md */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 9 /* digest */
        start local 9 // byte[] digest
        51: .line 654
            aload 6 /* dos */
            aload 9 /* digest */
            invokevirtual java.io.DataOutputStream.write:([B)V
        52: .line 655
            aload 6 /* dos */
            invokevirtual java.io.DataOutputStream.flush:()V
        end local 9 // byte[] digest
        end local 8 // java.util.Enumeration e
        53: .line 656
            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 657
            aload 7 /* oos */
            ifnull 58
        56: .line 658
            aload 7 /* oos */
            invokevirtual java.io.ObjectOutputStream.close:()V
        57: .line 659
            goto 59
        58: .line 660
      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 662
      StackMap locals:
      StackMap stack:
            aload 14
            athrow
        60: .line 657
      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 658
            aload 7 /* oos */
            invokevirtual java.io.ObjectOutputStream.close:()V
        62: .line 659
            goto 64
        63: .line 660
      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 510
      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 664
      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=25, 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 686
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            dup
            astore 3
            monitorenter
         1: .line 688
            aconst_null
            astore 5 /* md */
        start local 5 // java.security.MessageDigest md
         2: .line 689
            aconst_null
            astore 6 /* cf */
        start local 6 // java.security.cert.CertificateFactory cf
         3: .line 690
            aconst_null
            astore 7 /* cfs */
        start local 7 // java.util.Hashtable cfs
         4: .line 691
            aconst_null
            astore 8 /* bais */
        start local 8 // java.io.ByteArrayInputStream bais
         5: .line 692
            aconst_null
            astore 9 /* encoded */
        start local 9 // byte[] encoded
         6: .line 694
            aload 1 /* stream */
            ifnonnull 9
         7: .line 695
            aload 3
            monitorexit
         8: return
         9: .line 697
      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 1 /* stream */
            invokestatic sun.misc.IOUtils.readAllBytes:(Ljava/io/InputStream;)[B
            astore 10 /* allData */
        start local 10 // byte[] allData
        10: .line 698
            aload 10 /* allData */
            arraylength
            istore 11 /* fullLength */
        start local 11 // int fullLength
        11: .line 700
            new java.io.ByteArrayInputStream
            dup
            aload 10 /* allData */
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 1 /* stream */
        12: .line 701
            aload 2 /* password */
            ifnull 16
        13: .line 702
            aload 0 /* this */
            aload 2 /* password */
            invokevirtual com.sun.crypto.provider.JceKeyStore.getPreKeyedHash:([C)Ljava/security/MessageDigest;
            astore 5 /* md */
        14: .line 703
            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
        15: .line 704
            goto 17
        end local 4 // java.io.DataInputStream dis
        16: .line 705
      StackMap locals: byte[] int
      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
        17: .line 709
      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[] byte[] int
      StackMap stack:
            aconst_null
            astore 12 /* ois */
        start local 12 // java.io.ObjectInputStream ois
        18: .line 714
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 13 /* xMagic */
        start local 13 // int xMagic
        19: .line 715
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 14 /* xVersion */
        start local 14 // int xVersion
        20: .line 721
            iload 13 /* xMagic */
            ldc -825307442
            if_icmpeq 21
            iload 13 /* xMagic */
            ldc -17957139
            if_icmpne 22
        21: .line 722
      StackMap locals: java.io.ObjectInputStream int int
      StackMap stack:
            iload 14 /* xVersion */
            iconst_1
            if_icmpeq 23
            iload 14 /* xVersion */
            iconst_2
            if_icmpeq 23
        22: .line 723
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "Invalid keystore format"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 726
      StackMap locals:
      StackMap stack:
            iload 14 /* xVersion */
            iconst_1
            if_icmpne 26
        24: .line 727
            ldc "X509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 6 /* cf */
        25: .line 728
            goto 27
        26: .line 730
      StackMap locals:
      StackMap stack:
            new java.util.Hashtable
            dup
            iconst_3
            invokespecial java.util.Hashtable.<init>:(I)V
            astore 7 /* cfs */
        27: .line 733
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.clear:()V
        28: .line 734
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 15 /* count */
        start local 15 // int count
        29: .line 736
            iconst_0
            istore 16 /* i */
        start local 16 // int i
        30: goto 93
        31: .line 740
      StackMap locals: int int
      StackMap stack:
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 17 /* tag */
        start local 17 // int tag
        32: .line 742
            iload 17 /* tag */
            iconst_1
            if_icmpne 59
        33: .line 744
            new com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.<init>:()V
            astore 19 /* entry */
        start local 19 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry entry
        34: .line 747
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 18 /* alias */
        start local 18 // java.lang.String alias
        35: .line 750
            aload 19 /* 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;
        36: .line 753
            aload 19 /* entry */
            aload 4 /* dis */
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            invokestatic sun.misc.IOUtils.readExactlyNBytes:(Ljava/io/InputStream;I)[B
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.protectedKey:[B
        37: .line 756
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 20 /* numOfCerts */
        start local 20 // int numOfCerts
        38: .line 757
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 21 /* tmpCerts */
        start local 21 // java.util.List tmpCerts
        39: .line 758
            iconst_0
            istore 22 /* j */
        start local 22 // int j
        40: goto 53
        41: .line 759
      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[] byte[] int java.io.ObjectInputStream int int int int int java.lang.String com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry int java.util.List int
      StackMap stack:
            iload 14 /* xVersion */
            iconst_2
            if_icmpne 49
        42: .line 763
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 23 /* certType */
        start local 23 // java.lang.String certType
        43: .line 764
            aload 7 /* cfs */
            aload 23 /* certType */
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifeq 46
        44: .line 766
            aload 7 /* cfs */
            aload 23 /* certType */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.cert.CertificateFactory
            astore 6 /* cf */
        45: .line 767
            goto 49
        46: .line 770
      StackMap locals: java.lang.String
      StackMap stack:
            aload 23 /* certType */
        47: .line 769
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 6 /* cf */
        48: .line 773
            aload 7 /* cfs */
            aload 23 /* certType */
            aload 6 /* cf */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 23 // java.lang.String certType
        49: .line 777
      StackMap locals:
      StackMap stack:
            aload 4 /* dis */
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            invokestatic sun.misc.IOUtils.readExactlyNBytes:(Ljava/io/InputStream;I)[B
            astore 9 /* encoded */
        50: .line 778
            new java.io.ByteArrayInputStream
            dup
            aload 9 /* encoded */
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 8 /* bais */
        51: .line 779
            aload 21 /* tmpCerts */
            aload 6 /* cf */
            aload 8 /* bais */
            invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        52: .line 758
            iinc 22 /* j */ 1
      StackMap locals:
      StackMap stack:
        53: iload 22 /* j */
            iload 20 /* numOfCerts */
            if_icmplt 41
        end local 22 // int j
        54: .line 781
            aload 19 /* entry */
            aload 21 /* tmpCerts */
        55: .line 782
            iload 20 /* numOfCerts */
            anewarray java.security.cert.Certificate
        56: .line 781
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.security.cert.Certificate[]
            putfield com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry.chain:[Ljava/security/cert/Certificate;
        57: .line 785
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 18 /* alias */
            aload 19 /* entry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 21 // java.util.List tmpCerts
        end local 20 // int numOfCerts
        end local 19 // com.sun.crypto.provider.JceKeyStore$PrivateKeyEntry entry
        58: .line 787
            goto 92
        end local 18 // 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[] byte[] int java.io.ObjectInputStream int int int int int
      StackMap stack:
        59: iload 17 /* tag */
            iconst_2
            if_icmpne 75
        60: .line 789
            new com.sun.crypto.provider.JceKeyStore$TrustedCertEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$TrustedCertEntry.<init>:()V
            astore 19 /* entry */
        start local 19 // com.sun.crypto.provider.JceKeyStore$TrustedCertEntry entry
        61: .line 792
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 18 /* alias */
        start local 18 // java.lang.String alias
        62: .line 795
            aload 19 /* 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;
        63: .line 798
            iload 14 /* xVersion */
            iconst_2
            if_icmpne 70
        64: .line 802
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 20 /* certType */
        start local 20 // java.lang.String certType
        65: .line 803
            aload 7 /* cfs */
            aload 20 /* certType */
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifeq 68
        66: .line 805
            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 */
        67: .line 806
            goto 70
        68: .line 808
      StackMap locals: java.lang.String com.sun.crypto.provider.JceKeyStore$TrustedCertEntry java.lang.String
      StackMap stack:
            aload 20 /* certType */
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 6 /* cf */
        69: .line 811
            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
        70: .line 814
      StackMap locals:
      StackMap stack:
            aload 4 /* dis */
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readInt:()I
            invokestatic sun.misc.IOUtils.readExactlyNBytes:(Ljava/io/InputStream;I)[B
            astore 9 /* encoded */
        71: .line 815
            new java.io.ByteArrayInputStream
            dup
            aload 9 /* encoded */
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 8 /* bais */
        72: .line 816
            aload 19 /* 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;
        73: .line 819
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 18 /* alias */
            aload 19 /* entry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 19 // com.sun.crypto.provider.JceKeyStore$TrustedCertEntry entry
        74: .line 821
            goto 92
        end local 18 // java.lang.String alias
      StackMap locals:
      StackMap stack:
        75: iload 17 /* tag */
            iconst_3
            if_icmpne 91
        76: .line 823
            new com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
            dup
            invokespecial com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.<init>:()V
            astore 19 /* entry */
        start local 19 // com.sun.crypto.provider.JceKeyStore$SecretKeyEntry entry
        77: .line 826
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 18 /* alias */
        start local 18 // java.lang.String alias
        78: .line 829
            aload 19 /* 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;
        79: .line 833
            new java.io.ObjectInputStream
            dup
            aload 4 /* dis */
            invokespecial java.io.ObjectInputStream.<init>:(Ljava/io/InputStream;)V
            astore 12 /* ois */
        80: .line 834
            aload 12 /* ois */
            astore 20 /* ois2 */
        start local 20 // java.io.ObjectInputStream ois2
        81: .line 836
            new com.sun.crypto.provider.JceKeyStore$1
            dup
            aload 0 /* this */
            aload 20 /* ois2 */
            iload 11 /* fullLength */
            invokespecial com.sun.crypto.provider.JceKeyStore$1.<init>:(Lcom/sun/crypto/provider/JceKeyStore;Ljava/io/ObjectInputStream;I)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
        82: .line 844
            aload 19 /* entry */
            aload 12 /* ois */
            invokevirtual java.io.ObjectInputStream.readObject:()Ljava/lang/Object;
            checkcast javax.crypto.SealedObject
            putfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.sealedKey:Ljavax/crypto/SealedObject;
        83: .line 845
            aload 19 /* entry */
            iload 11 /* fullLength */
            putfield com.sun.crypto.provider.JceKeyStore$SecretKeyEntry.maxLength:I
        end local 20 // java.io.ObjectInputStream ois2
        84: .line 848
            goto 89
      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[] byte[] int java.io.ObjectInputStream int int int int int java.lang.String com.sun.crypto.provider.JceKeyStore$SecretKeyEntry
      StackMap stack: java.lang.ClassNotFoundException
        85: astore 20 /* cnfe */
        start local 20 // java.lang.ClassNotFoundException cnfe
        86: .line 849
            new java.io.IOException
            dup
            aload 20 /* cnfe */
            invokevirtual java.lang.ClassNotFoundException.getMessage:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 20 // java.lang.ClassNotFoundException cnfe
        87: .line 850
      StackMap locals:
      StackMap stack: java.io.InvalidClassException
            pop
        88: .line 851
            new java.io.IOException
            dup
            ldc "Invalid secret key format"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        89: .line 855
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.JceKeyStore.entries:Ljava/util/Hashtable;
            aload 18 /* alias */
            aload 19 /* entry */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 19 // com.sun.crypto.provider.JceKeyStore$SecretKeyEntry entry
        90: .line 857
            goto 92
        end local 18 // java.lang.String alias
        91: .line 858
      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 17 // int tag
        92: .line 736
      StackMap locals:
      StackMap stack:
            iinc 16 /* i */ 1
      StackMap locals:
      StackMap stack:
        93: iload 16 /* i */
            iload 15 /* count */
            if_icmplt 31
        end local 16 // int i
        94: .line 867
            aload 2 /* password */
            ifnull 110
        95: .line 868
            aload 5 /* md */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 16 /* computed */
        start local 16 // byte[] computed
        96: .line 869
            aload 4 /* dis */
            aload 16 /* computed */
            arraylength
            invokestatic sun.misc.IOUtils.readExactlyNBytes:(Ljava/io/InputStream;I)[B
            astore 17 /* actual */
        start local 17 // byte[] actual
        97: .line 870
            aload 16 /* computed */
            aload 17 /* actual */
            invokestatic java.security.MessageDigest.isEqual:([B[B)Z
            ifne 110
        98: .line 871
            new java.io.IOException
            dup
        99: .line 872
            ldc "Keystore was tampered with, or password was incorrect"
       100: .line 874
            new java.security.UnrecoverableKeyException
            dup
       101: .line 875
            ldc "Password verification failed"
       102: .line 874
            invokespecial java.security.UnrecoverableKeyException.<init>:(Ljava/lang/String;)V
       103: .line 871
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 17 // byte[] actual
        end local 16 // byte[] computed
        end local 15 // int count
        end local 14 // int xVersion
        end local 13 // int xMagic
       104: .line 878
      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[] byte[] int java.io.ObjectInputStream
      StackMap stack: java.lang.Throwable
            astore 24
       105: .line 879
            aload 12 /* ois */
            ifnull 108
       106: .line 880
            aload 12 /* ois */
            invokevirtual java.io.ObjectInputStream.close:()V
       107: .line 881
            goto 109
       108: .line 882
      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[] byte[] int java.io.ObjectInputStream top top top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.close:()V
       109: .line 884
      StackMap locals:
      StackMap stack:
            aload 24
            athrow
       110: .line 879
      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[] byte[] int java.io.ObjectInputStream
      StackMap stack:
            aload 12 /* ois */
            ifnull 113
       111: .line 880
            aload 12 /* ois */
            invokevirtual java.io.ObjectInputStream.close:()V
       112: .line 881
            goto 114
       113: .line 882
      StackMap locals:
      StackMap stack:
            aload 4 /* dis */
            invokevirtual java.io.DataInputStream.close:()V
        end local 12 // java.io.ObjectInputStream ois
        end local 11 // int fullLength
        end local 10 // byte[] allData
        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
       114: .line 686
      StackMap locals: com.sun.crypto.provider.JceKeyStore java.io.InputStream char[] java.util.Hashtable
      StackMap stack:
            aload 3
            monitorexit
       115: goto 118
      StackMap locals:
      StackMap stack: java.lang.Throwable
       116: aload 3
            monitorexit
       117: athrow
       118: .line 886
      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  119     0        this  Lcom/sun/crypto/provider/JceKeyStore;
            0  119     1      stream  Ljava/io/InputStream;
            0  119     2    password  [C
           15   16     4         dis  Ljava/io/DataInputStream;
           17  114     4         dis  Ljava/io/DataInputStream;
            2  114     5          md  Ljava/security/MessageDigest;
            3  114     6          cf  Ljava/security/cert/CertificateFactory;
            4  114     7         cfs  Ljava/util/Hashtable<Ljava/lang/String;Ljava/security/cert/CertificateFactory;>;
            5  114     8        bais  Ljava/io/ByteArrayInputStream;
            6  114     9     encoded  [B
           10  114    10     allData  [B
           11  114    11  fullLength  I
           18  114    12         ois  Ljava/io/ObjectInputStream;
           19  104    13      xMagic  I
           20  104    14    xVersion  I
           29  104    15       count  I
           30   94    16           i  I
           32   92    17         tag  I
           35   59    18       alias  Ljava/lang/String;
           62   75    18       alias  Ljava/lang/String;
           78   91    18       alias  Ljava/lang/String;
           34   58    19       entry  Lcom/sun/crypto/provider/JceKeyStore$PrivateKeyEntry;
           38   58    20  numOfCerts  I
           39   58    21    tmpCerts  Ljava/util/List<Ljava/security/cert/Certificate;>;
           40   54    22           j  I
           43   49    23    certType  Ljava/lang/String;
           61   74    19       entry  Lcom/sun/crypto/provider/JceKeyStore$TrustedCertEntry;
           65   70    20    certType  Ljava/lang/String;
           77   90    19       entry  Lcom/sun/crypto/provider/JceKeyStore$SecretKeyEntry;
           81   84    20        ois2  Ljava/io/ObjectInputStream;
           86   87    20        cnfe  Ljava/lang/ClassNotFoundException;
           96  104    16    computed  [B
           97  104    17      actual  [B
      Exception table:
        from    to  target  type
          79    84      85  Class java.lang.ClassNotFoundException
          79    84      87  Class java.io.InvalidClassException
          18   104     104  any
           1     8     116  any
           9   115     116  any
         116   117     116  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 896
            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 897
            aload 1 /* password */
            arraylength
            iconst_2
            imul
            newarray 8
            astore 5 /* passwdBytes */
        start local 5 // byte[] passwdBytes
         2: .line 898
            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 899
      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 900
            aload 5 /* passwdBytes */
            iload 3 /* j */
            iinc 3 /* j */ 1
            aload 1 /* password */
            iload 2 /* i */
            caload
            i2b
            bastore
         7: .line 898
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            aload 1 /* password */
            arraylength
            if_icmplt 5
         9: .line 902
            aload 4 /* md */
            aload 5 /* passwdBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        10: .line 903
            iconst_0
            istore 2 /* i */
            goto 13
        11: .line 904
      StackMap locals:
      StackMap stack:
            aload 5 /* passwdBytes */
            iload 2 /* i */
            iconst_0
            bastore
        12: .line 903
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 2 /* i */
            aload 5 /* passwdBytes */
            arraylength
            if_icmplt 11
        14: .line 905
            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 906
            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  
}
SourceFile: "JceKeyStore.java"
NestMembers:
  com.sun.crypto.provider.JceKeyStore$1  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:
  com.sun.crypto.provider.JceKeyStore$1
  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