public final class jdk.jpackage.internal.MacCertificate
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: jdk.jpackage.internal.MacCertificate
  super_class: java.lang.Object
{
  private final java.lang.String certificate;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jpackage.internal.MacCertificate this
        start local 1 // java.lang.String certificate
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            aload 1 /* certificate */
            putfield jdk.jpackage.internal.MacCertificate.certificate:Ljava/lang/String;
         2: .line 49
            return
        end local 1 // java.lang.String certificate
        end local 0 // jdk.jpackage.internal.MacCertificate this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Ljdk/jpackage/internal/MacCertificate;
            0    3     1  certificate  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      certificate  

  public boolean isValid();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.jpackage.internal.MacCertificate this
         0: .line 52
            aload 0 /* this */
            getfield jdk.jpackage.internal.MacCertificate.certificate:Ljava/lang/String;
            invokestatic jdk.jpackage.internal.MacCertificate.verifyCertificate:(Ljava/lang/String;)Z
            ireturn
        end local 0 // jdk.jpackage.internal.MacCertificate this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jpackage/internal/MacCertificate;

  private static java.nio.file.Path findCertificate(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/nio/file/Path;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=1
        start local 0 // java.lang.String certificate
         0: .line 56
            aconst_null
            astore 1 /* result */
        start local 1 // java.nio.file.Path result
         1: .line 58
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* args */
        start local 2 // java.util.List args
         2: .line 59
            aload 2 /* args */
            ldc "/usr/bin/security"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 60
            aload 2 /* args */
            ldc "find-certificate"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 61
            aload 2 /* args */
            ldc "-c"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 62
            aload 2 /* args */
            aload 0 /* certificate */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 63
            aload 2 /* args */
            ldc "-a"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 64
            aload 2 /* args */
            ldc "-p"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 66
            aconst_null
            astore 3
            aconst_null
            astore 4
         9: new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 5 /* baos */
        start local 5 // java.io.ByteArrayOutputStream baos
        10: .line 67
            new java.io.PrintStream
            dup
            aload 5 /* baos */
            invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;)V
            astore 6 /* ps */
        start local 6 // java.io.PrintStream ps
        11: .line 68
            new java.lang.ProcessBuilder
            dup
            aload 2 /* args */
            invokespecial java.lang.ProcessBuilder.<init>:(Ljava/util/List;)V
            astore 7 /* security */
        start local 7 // java.lang.ProcessBuilder security
        12: .line 69
            aload 7 /* security */
            iconst_0
            aload 6 /* ps */
            invokestatic jdk.jpackage.internal.IOUtils.exec:(Ljava/lang/ProcessBuilder;ZLjava/io/PrintStream;)V
        13: .line 71
            ldc "tempfile"
            ldc ".tmp"
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createTempFile:(Ljava/lang/String;Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            astore 8 /* output */
        start local 8 // java.nio.file.Path output
        14: .line 73
            new java.io.ByteArrayInputStream
            dup
            aload 5 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
        15: .line 74
            aload 8 /* output */
            iconst_1
            anewarray java.nio.file.CopyOption
            dup
            iconst_0
            getstatic java.nio.file.StandardCopyOption.REPLACE_EXISTING:Ljava/nio/file/StandardCopyOption;
            aastore
        16: .line 73
            invokestatic java.nio.file.Files.copy:(Ljava/io/InputStream;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)J
            pop2
        17: .line 76
            aload 8 /* output */
            astore 1 /* result */
        end local 8 // java.nio.file.Path output
        end local 7 // java.lang.ProcessBuilder security
        18: .line 77
            aload 6 /* ps */
            ifnull 21
            aload 6 /* ps */
            invokevirtual java.io.PrintStream.close:()V
            goto 21
      StackMap locals: java.lang.String java.nio.file.Path java.util.List java.lang.Throwable java.lang.Throwable java.io.ByteArrayOutputStream java.io.PrintStream
      StackMap stack: java.lang.Throwable
        19: astore 3
            aload 6 /* ps */
            ifnull 20
            aload 6 /* ps */
            invokevirtual java.io.PrintStream.close:()V
        end local 6 // java.io.PrintStream ps
      StackMap locals:
      StackMap stack:
        20: aload 3
            athrow
      StackMap locals:
      StackMap stack:
        21: aload 5 /* baos */
            ifnull 30
            aload 5 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.close:()V
            goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: astore 4
            aload 3
            ifnonnull 23
            aload 4
            astore 3
            goto 24
      StackMap locals:
      StackMap stack:
        23: aload 3
            aload 4
            if_acmpeq 24
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        24: aload 5 /* baos */
            ifnull 25
            aload 5 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.close:()V
        end local 5 // java.io.ByteArrayOutputStream baos
      StackMap locals:
      StackMap stack:
        25: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: astore 4
            aload 3
            ifnonnull 27
            aload 4
            astore 3
            goto 28
      StackMap locals:
      StackMap stack:
        27: aload 3
            aload 4
            if_acmpeq 28
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        28: aload 3
            athrow
        29: .line 78
      StackMap locals: java.lang.String java.nio.file.Path java.util.List
      StackMap stack: java.io.IOException
            pop
        30: .line 80
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 2 // java.util.List args
        end local 1 // java.nio.file.Path result
        end local 0 // java.lang.String certificate
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   31     0  certificate  Ljava/lang/String;
            1   31     1       result  Ljava/nio/file/Path;
            2   31     2         args  Ljava/util/List<Ljava/lang/String;>;
           10   25     5         baos  Ljava/io/ByteArrayOutputStream;
           11   20     6           ps  Ljava/io/PrintStream;
           12   18     7     security  Ljava/lang/ProcessBuilder;
           14   18     8       output  Ljava/nio/file/Path;
      Exception table:
        from    to  target  type
          11    18      19  any
          10    21      22  any
           9    26      26  any
           8    29      29  Class java.io.IOException
    MethodParameters:
             Name  Flags
      certificate  

  private static java.util.Date findCertificateDate(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Date;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=1
        start local 0 // java.lang.String filename
         0: .line 84
            aconst_null
            astore 1 /* result */
        start local 1 // java.util.Date result
         1: .line 86
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* args */
        start local 2 // java.util.List args
         2: .line 87
            aload 2 /* args */
            ldc "/usr/bin/openssl"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 88
            aload 2 /* args */
            ldc "x509"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 89
            aload 2 /* args */
            ldc "-noout"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 90
            aload 2 /* args */
            ldc "-enddate"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 91
            aload 2 /* args */
            ldc "-in"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 92
            aload 2 /* args */
            aload 0 /* filename */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 94
            aconst_null
            astore 3
            aconst_null
            astore 4
         9: new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 5 /* baos */
        start local 5 // java.io.ByteArrayOutputStream baos
        10: .line 95
            new java.io.PrintStream
            dup
            aload 5 /* baos */
            invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;)V
            astore 6 /* ps */
        start local 6 // java.io.PrintStream ps
        11: .line 96
            new java.lang.ProcessBuilder
            dup
            aload 2 /* args */
            invokespecial java.lang.ProcessBuilder.<init>:(Ljava/util/List;)V
            astore 7 /* security */
        start local 7 // java.lang.ProcessBuilder security
        12: .line 97
            aload 7 /* security */
            iconst_0
            aload 6 /* ps */
            invokestatic jdk.jpackage.internal.IOUtils.exec:(Ljava/lang/ProcessBuilder;ZLjava/io/PrintStream;)V
        13: .line 98
            aload 5 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            astore 8 /* output */
        start local 8 // java.lang.String output
        14: .line 99
            aload 8 /* output */
            aload 8 /* output */
            ldc "="
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 8 /* output */
        15: .line 100
            new java.text.SimpleDateFormat
            dup
        16: .line 101
            ldc "MMM dd kk:mm:ss yyyy z"
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
        17: .line 100
            invokespecial java.text.SimpleDateFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 9 /* df */
        start local 9 // java.text.DateFormat df
        18: .line 102
            aload 9 /* df */
            aload 8 /* output */
            invokevirtual java.text.DateFormat.parse:(Ljava/lang/String;)Ljava/util/Date;
            astore 1 /* result */
        end local 9 // java.text.DateFormat df
        end local 8 // java.lang.String output
        end local 7 // java.lang.ProcessBuilder security
        19: .line 103
            aload 6 /* ps */
            ifnull 22
            aload 6 /* ps */
            invokevirtual java.io.PrintStream.close:()V
            goto 22
      StackMap locals: java.lang.String java.util.Date java.util.List java.lang.Throwable java.lang.Throwable java.io.ByteArrayOutputStream java.io.PrintStream
      StackMap stack: java.lang.Throwable
        20: astore 3
            aload 6 /* ps */
            ifnull 21
            aload 6 /* ps */
            invokevirtual java.io.PrintStream.close:()V
        end local 6 // java.io.PrintStream ps
      StackMap locals:
      StackMap stack:
        21: aload 3
            athrow
      StackMap locals:
      StackMap stack:
        22: aload 5 /* baos */
            ifnull 32
            aload 5 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.close:()V
            goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: astore 4
            aload 3
            ifnonnull 24
            aload 4
            astore 3
            goto 25
      StackMap locals:
      StackMap stack:
        24: aload 3
            aload 4
            if_acmpeq 25
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        25: aload 5 /* baos */
            ifnull 26
            aload 5 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.close:()V
        end local 5 // java.io.ByteArrayOutputStream baos
      StackMap locals:
      StackMap stack:
        26: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        27: astore 4
            aload 3
            ifnonnull 28
            aload 4
            astore 3
            goto 29
      StackMap locals:
      StackMap stack:
        28: aload 3
            aload 4
            if_acmpeq 29
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        29: aload 3
            athrow
      StackMap locals: java.lang.String java.util.Date java.util.List
      StackMap stack: java.lang.Exception
        30: astore 3 /* ex */
        start local 3 // java.lang.Exception ex
        31: .line 104
            aload 3 /* ex */
            invokestatic jdk.jpackage.internal.Log.verbose:(Ljava/lang/Throwable;)V
        end local 3 // java.lang.Exception ex
        32: .line 107
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 2 // java.util.List args
        end local 1 // java.util.Date result
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   33     0  filename  Ljava/lang/String;
            1   33     1    result  Ljava/util/Date;
            2   33     2      args  Ljava/util/List<Ljava/lang/String;>;
           10   26     5      baos  Ljava/io/ByteArrayOutputStream;
           11   21     6        ps  Ljava/io/PrintStream;
           12   19     7  security  Ljava/lang/ProcessBuilder;
           14   19     8    output  Ljava/lang/String;
           18   19     9        df  Ljava/text/DateFormat;
           31   32     3        ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          11    19      20  any
          10    22      23  any
           9    27      27  any
           8    30      30  Class java.io.IOException
           8    30      30  Class java.text.ParseException
    MethodParameters:
          Name  Flags
      filename  

  private static boolean verifyCertificate(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // java.lang.String certificate
         0: .line 111
            iconst_0
            istore 1 /* result */
        start local 1 // boolean result
         1: .line 114
            aconst_null
            astore 2 /* file */
        start local 2 // java.nio.file.Path file
         2: .line 115
            aconst_null
            astore 3 /* certificateDate */
        start local 3 // java.util.Date certificateDate
         3: .line 118
            aload 0 /* certificate */
            invokestatic jdk.jpackage.internal.MacCertificate.findCertificate:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 2 /* file */
         4: .line 120
            aload 2 /* file */
            ifnull 12
         5: .line 122
            aload 2 /* file */
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            invokevirtual java.io.File.getCanonicalPath:()Ljava/lang/String;
         6: .line 121
            invokestatic jdk.jpackage.internal.MacCertificate.findCertificateDate:(Ljava/lang/String;)Ljava/util/Date;
            astore 3 /* certificateDate */
         7: .line 124
            goto 12
         8: .line 125
      StackMap locals: java.lang.String int java.nio.file.Path java.util.Date
      StackMap stack: java.lang.Throwable
            astore 4
         9: .line 126
            aload 2 /* file */
            ifnull 11
        10: .line 127
            aload 2 /* file */
            invokestatic java.nio.file.Files.delete:(Ljava/nio/file/Path;)V
        11: .line 129
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 4
            athrow
        12: .line 126
      StackMap locals:
      StackMap stack:
            aload 2 /* file */
            ifnull 14
        13: .line 127
            aload 2 /* file */
            invokestatic java.nio.file.Files.delete:(Ljava/nio/file/Path;)V
        14: .line 131
      StackMap locals:
      StackMap stack:
            aload 3 /* certificateDate */
            ifnull 21
        15: .line 132
            invokestatic java.util.Calendar.getInstance:()Ljava/util/Calendar;
            astore 4 /* c */
        start local 4 // java.util.Calendar c
        16: .line 133
            aload 4 /* c */
            invokevirtual java.util.Calendar.getTime:()Ljava/util/Date;
            astore 5 /* today */
        start local 5 // java.util.Date today
        17: .line 135
            aload 3 /* certificateDate */
            aload 5 /* today */
            invokevirtual java.util.Date.after:(Ljava/util/Date;)Z
            ifeq 21
        18: .line 136
            iconst_1
            istore 1 /* result */
        end local 5 // java.util.Date today
        end local 4 // java.util.Calendar c
        end local 3 // java.util.Date certificateDate
        end local 2 // java.nio.file.Path file
        19: .line 139
            goto 21
        20: .line 140
      StackMap locals: java.lang.String int
      StackMap stack: java.io.IOException
            pop
        21: .line 142
      StackMap locals:
      StackMap stack:
            iload 1 /* result */
            ireturn
        end local 1 // boolean result
        end local 0 // java.lang.String certificate
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   22     0      certificate  Ljava/lang/String;
            1   22     1           result  Z
            2   19     2             file  Ljava/nio/file/Path;
            3   19     3  certificateDate  Ljava/util/Date;
           16   19     4                c  Ljava/util/Calendar;
           17   19     5            today  Ljava/util/Date;
      Exception table:
        from    to  target  type
           3     8       8  any
           1    19      20  Class java.io.IOException
    MethodParameters:
             Name  Flags
      certificate  
}
SourceFile: "MacCertificate.java"