public class sun.security.tools.KeyStoreUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.tools.KeyStoreUtil
  super_class: java.lang.Object
{
  private static final java.lang.String JKS;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "jks"

  private static final java.text.Collator collator;
    descriptor: Ljava/text/Collator;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 56
            invokestatic java.text.Collator.getInstance:()Ljava/text/Collator;
            putstatic sun.security.tools.KeyStoreUtil.collator:Ljava/text/Collator;
         1: .line 59
            getstatic sun.security.tools.KeyStoreUtil.collator:Ljava/text/Collator;
            iconst_0
            invokevirtual java.text.Collator.setStrength:(I)V
         2: .line 60
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.tools.KeyStoreUtil this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 52
            return
        end local 0 // sun.security.tools.KeyStoreUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/tools/KeyStoreUtil;

  public static boolean isSelfSigned(java.security.cert.X509Certificate);
    descriptor: (Ljava/security/cert/X509Certificate;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.security.cert.X509Certificate cert
         0: .line 66
            aload 0 /* cert */
            aload 0 /* cert */
            invokestatic sun.security.tools.KeyStoreUtil.signedBy:(Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
            ireturn
        end local 0 // java.security.cert.X509Certificate cert
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  cert  Ljava/security/cert/X509Certificate;
    MethodParameters:
      Name  Flags
      cert  

  public static boolean signedBy(java.security.cert.X509Certificate, java.security.cert.X509Certificate);
    descriptor: (Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.security.cert.X509Certificate end
        start local 1 // java.security.cert.X509Certificate ca
         0: .line 70
            aload 1 /* ca */
            invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
            aload 0 /* end */
            invokevirtual java.security.cert.X509Certificate.getIssuerX500Principal:()Ljavax/security/auth/x500/X500Principal;
            invokevirtual javax.security.auth.x500.X500Principal.equals:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 71
            iconst_0
            ireturn
         2: .line 74
      StackMap locals:
      StackMap stack:
            aload 0 /* end */
            aload 1 /* ca */
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            invokevirtual java.security.cert.X509Certificate.verify:(Ljava/security/PublicKey;)V
         3: .line 75
            iconst_1
            ireturn
         4: .line 76
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         5: .line 77
            iconst_0
            ireturn
        end local 1 // java.security.cert.X509Certificate ca
        end local 0 // java.security.cert.X509Certificate end
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0   end  Ljava/security/cert/X509Certificate;
            0    6     1    ca  Ljava/security/cert/X509Certificate;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      end   
      ca    

  public static boolean isWindowsKeyStore(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String storetype
         0: .line 86
            aload 0 /* storetype */
            ifnull 4
         1: .line 87
            aload 0 /* storetype */
            ldc "Windows-MY"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 3
         2: .line 88
            aload 0 /* storetype */
            ldc "Windows-ROOT"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 86
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 0 // java.lang.String storetype
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  storetype  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      storetype  

  public static java.lang.String niceStoreTypeName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String storetype
         0: .line 95
            aload 0 /* storetype */
            ldc "Windows-MY"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 96
            ldc "Windows-MY"
            areturn
         2: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* storetype */
            ldc "Windows-ROOT"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 98
            ldc "Windows-ROOT"
            areturn
         4: .line 100
      StackMap locals:
      StackMap stack:
            aload 0 /* storetype */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String storetype
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  storetype  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      storetype  

  public static java.security.KeyStore getCacertsKeyStore();
    descriptor: ()Ljava/security/KeyStore;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=0
         0: .line 110
            getstatic java.io.File.separator:Ljava/lang/String;
            astore 0 /* sep */
        start local 0 // java.lang.String sep
         1: .line 111
            new java.io.File
            dup
            new java.lang.StringBuilder
            dup
            ldc "java.home"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 112
            ldc "lib"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "security"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 113
            ldc "cacerts"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 111
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 1 /* file */
        start local 1 // java.io.File file
         5: .line 114
            aload 1 /* file */
            invokevirtual java.io.File.exists:()Z
            ifne 7
         6: .line 115
            aconst_null
            areturn
         7: .line 117
      StackMap locals: java.lang.String java.io.File
      StackMap stack:
            aconst_null
            astore 2 /* caks */
        start local 2 // java.security.KeyStore caks
         8: .line 118
            aconst_null
            astore 3
            aconst_null
            astore 4
         9: new java.io.FileInputStream
            dup
            aload 1 /* file */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 5 /* fis */
        start local 5 // java.io.FileInputStream fis
        10: .line 119
            ldc "jks"
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;)Ljava/security/KeyStore;
            astore 2 /* caks */
        11: .line 120
            aload 2 /* caks */
            aload 5 /* fis */
            aconst_null
            invokevirtual java.security.KeyStore.load:(Ljava/io/InputStream;[C)V
        12: .line 121
            aload 5 /* fis */
            ifnull 18
            aload 5 /* fis */
            invokevirtual java.io.FileInputStream.close:()V
            goto 18
      StackMap locals: java.lang.String java.io.File java.security.KeyStore java.lang.Throwable java.lang.Throwable java.io.FileInputStream
      StackMap stack: java.lang.Throwable
        13: astore 3
            aload 5 /* fis */
            ifnull 14
            aload 5 /* fis */
            invokevirtual java.io.FileInputStream.close:()V
        end local 5 // java.io.FileInputStream fis
      StackMap locals:
      StackMap stack:
        14: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 4
            aload 3
            ifnonnull 16
            aload 4
            astore 3
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 3
            aload 4
            if_acmpeq 17
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 3
            athrow
        18: .line 122
      StackMap locals:
      StackMap stack:
            aload 2 /* caks */
            areturn
        end local 2 // java.security.KeyStore caks
        end local 1 // java.io.File file
        end local 0 // java.lang.String sep
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1   19     0   sep  Ljava/lang/String;
            5   19     1  file  Ljava/io/File;
            8   19     2  caks  Ljava/security/KeyStore;
           10   14     5   fis  Ljava/io/FileInputStream;
      Exception table:
        from    to  target  type
          10    12      13  any
           9    15      15  any
    Exceptions:
      throws java.lang.Exception

  public static char[] getPassWithModifier(java.lang.String, java.lang.String, java.util.ResourceBundle);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/util/ResourceBundle;)[C
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // java.lang.String modifier
        start local 1 // java.lang.String arg
        start local 2 // java.util.ResourceBundle rb
         0: .line 127
            aload 0 /* modifier */
            ifnonnull 2
         1: .line 128
            aload 1 /* arg */
            invokevirtual java.lang.String.toCharArray:()[C
            areturn
         2: .line 129
      StackMap locals:
      StackMap stack:
            getstatic sun.security.tools.KeyStoreUtil.collator:Ljava/text/Collator;
            aload 0 /* modifier */
            ldc "env"
            invokevirtual java.text.Collator.compare:(Ljava/lang/String;Ljava/lang/String;)I
            ifne 12
         3: .line 130
            aload 1 /* arg */
            invokestatic java.lang.System.getenv:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* value */
        start local 3 // java.lang.String value
         4: .line 131
            aload 3 /* value */
            ifnonnull 11
         5: .line 132
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 2 /* rb */
         6: .line 133
            ldc "Cannot.find.environment.variable."
         7: .line 132
            invokevirtual java.util.ResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 133
            aload 1 /* arg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 132
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        10: .line 134
            aconst_null
            areturn
        11: .line 136
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* value */
            invokevirtual java.lang.String.toCharArray:()[C
            areturn
        end local 3 // java.lang.String value
        12: .line 138
      StackMap locals:
      StackMap stack:
            getstatic sun.security.tools.KeyStoreUtil.collator:Ljava/text/Collator;
            aload 0 /* modifier */
            ldc "file"
            invokevirtual java.text.Collator.compare:(Ljava/lang/String;Ljava/lang/String;)I
            ifne 49
        13: .line 140
            aconst_null
            astore 3 /* url */
        start local 3 // java.net.URL url
        14: .line 142
            new java.net.URL
            dup
            aload 1 /* arg */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 3 /* url */
        15: .line 143
            goto 27
      StackMap locals: java.lang.String java.lang.String java.util.ResourceBundle java.net.URL
      StackMap stack: java.net.MalformedURLException
        16: pop
        17: .line 144
            new java.io.File
            dup
            aload 1 /* arg */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 4 /* f */
        start local 4 // java.io.File f
        18: .line 145
            aload 4 /* f */
            invokevirtual java.io.File.exists:()Z
            ifeq 21
        19: .line 146
            aload 4 /* f */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            astore 3 /* url */
        20: .line 147
            goto 27
        21: .line 148
      StackMap locals: java.io.File
      StackMap stack:
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 2 /* rb */
        22: .line 149
            ldc "Cannot.find.file."
        23: .line 148
            invokevirtual java.util.ResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        24: .line 149
            aload 1 /* arg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        25: .line 148
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 150
            aconst_null
            areturn
        end local 4 // java.io.File f
        27: .line 154
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4
            aconst_null
            astore 5
        28: .line 155
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
        29: .line 156
            aload 3 /* url */
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
        30: .line 155
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
        31: .line 154
            astore 6 /* br */
        start local 6 // java.io.BufferedReader br
        32: .line 157
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 7 /* value */
        start local 7 // java.lang.String value
        33: .line 159
            aload 7 /* value */
            ifnonnull 37
        34: .line 160
            iconst_0
            newarray 5
        35: .line 164
            aload 6 /* br */
            ifnull 36
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.close:()V
        36: .line 160
      StackMap locals: java.lang.String java.lang.String java.util.ResourceBundle java.net.URL java.lang.Throwable java.lang.Throwable java.io.BufferedReader java.lang.String
      StackMap stack: char[]
            areturn
        37: .line 163
      StackMap locals:
      StackMap stack:
            aload 7 /* value */
            invokevirtual java.lang.String.toCharArray:()[C
        38: .line 164
            aload 6 /* br */
            ifnull 39
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.close:()V
        39: .line 163
      StackMap locals:
      StackMap stack: char[]
            areturn
        end local 7 // java.lang.String value
      StackMap locals: java.lang.String java.lang.String java.util.ResourceBundle java.net.URL java.lang.Throwable java.lang.Throwable java.io.BufferedReader
      StackMap stack: java.lang.Throwable
        40: astore 4
        41: .line 164
            aload 6 /* br */
            ifnull 42
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.close:()V
        end local 6 // java.io.BufferedReader br
      StackMap locals:
      StackMap stack:
        42: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        43: astore 5
            aload 4
            ifnonnull 44
            aload 5
            astore 4
            goto 45
      StackMap locals:
      StackMap stack:
        44: aload 4
            aload 5
            if_acmpeq 45
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        45: aload 4
            athrow
        end local 3 // java.net.URL url
        46: .line 165
      StackMap locals: java.lang.String java.lang.String java.util.ResourceBundle
      StackMap stack: java.io.IOException
            astore 3 /* ioe */
        start local 3 // java.io.IOException ioe
        47: .line 166
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 3 /* ioe */
            invokevirtual java.io.PrintStream.println:(Ljava/lang/Object;)V
        48: .line 167
            aconst_null
            areturn
        end local 3 // java.io.IOException ioe
        49: .line 170
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 2 /* rb */
            ldc "Unknown.password.type."
            invokevirtual java.util.ResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        50: .line 171
            aload 0 /* modifier */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        51: .line 170
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        52: .line 172
            aconst_null
            areturn
        end local 2 // java.util.ResourceBundle rb
        end local 1 // java.lang.String arg
        end local 0 // java.lang.String modifier
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   53     0  modifier  Ljava/lang/String;
            0   53     1       arg  Ljava/lang/String;
            0   53     2        rb  Ljava/util/ResourceBundle;
            4   12     3     value  Ljava/lang/String;
           14   46     3       url  Ljava/net/URL;
           18   27     4         f  Ljava/io/File;
           32   42     6        br  Ljava/io/BufferedReader;
           33   40     7     value  Ljava/lang/String;
           47   49     3       ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          14    15      16  Class java.net.MalformedURLException
          32    35      40  any
          37    38      40  any
          28    36      43  any
          37    39      43  any
          40    43      43  any
          13    26      46  Class java.io.IOException
          27    36      46  Class java.io.IOException
          37    39      46  Class java.io.IOException
          40    46      46  Class java.io.IOException
    MethodParameters:
          Name  Flags
      modifier  
      arg       
      rb        
}
SourceFile: "KeyStoreUtil.java"