public class sun.security.timestamp.HttpTimestamper implements sun.security.timestamp.Timestamper
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.timestamp.HttpTimestamper
  super_class: java.lang.Object
{
  private static final int CONNECT_TIMEOUT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 15000

  private static final java.lang.String TS_QUERY_MIME_TYPE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "application/timestamp-query"

  private static final java.lang.String TS_REPLY_MIME_TYPE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "application/timestamp-reply"

  private static final sun.security.util.Debug debug;
    descriptor: Lsun/security/util/Debug;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.net.URI tsaURI;
    descriptor: Ljava/net/URI;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 61
            ldc "ts"
            invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;)Lsun/security/util/Debug;
            putstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.net.URI);
    descriptor: (Ljava/net/URI;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.timestamp.HttpTimestamper this
        start local 1 // java.net.URI tsaURI
         0: .line 74
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 66
            aload 0 /* this */
            aconst_null
            putfield sun.security.timestamp.HttpTimestamper.tsaURI:Ljava/net/URI;
         2: .line 75
            aload 1 /* tsaURI */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            ldc "http"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 7
         3: .line 76
            aload 1 /* tsaURI */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            ldc "https"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 7
         4: .line 77
            new java.lang.IllegalArgumentException
            dup
         5: .line 78
            ldc "TSA must be an HTTP or HTTPS URI"
         6: .line 77
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 80
      StackMap locals: sun.security.timestamp.HttpTimestamper java.net.URI
      StackMap stack:
            aload 0 /* this */
            aload 1 /* tsaURI */
            putfield sun.security.timestamp.HttpTimestamper.tsaURI:Ljava/net/URI;
         8: .line 81
            return
        end local 1 // java.net.URI tsaURI
        end local 0 // sun.security.timestamp.HttpTimestamper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lsun/security/timestamp/HttpTimestamper;
            0    9     1  tsaURI  Ljava/net/URI;
    MethodParameters:
        Name  Flags
      tsaURI  

  public sun.security.timestamp.TSResponse generateTimestamp(sun.security.timestamp.TSRequest);
    descriptor: (Lsun/security/timestamp/TSRequest;)Lsun/security/timestamp/TSResponse;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // sun.security.timestamp.HttpTimestamper this
        start local 1 // sun.security.timestamp.TSRequest tsQuery
         0: .line 94
            aload 0 /* this */
            getfield sun.security.timestamp.HttpTimestamper.tsaURI:Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            checkcast java.net.HttpURLConnection
         1: .line 93
            astore 2 /* connection */
        start local 2 // java.net.HttpURLConnection connection
         2: .line 95
            aload 2 /* connection */
            iconst_1
            invokevirtual java.net.HttpURLConnection.setDoOutput:(Z)V
         3: .line 96
            aload 2 /* connection */
            iconst_0
            invokevirtual java.net.HttpURLConnection.setUseCaches:(Z)V
         4: .line 97
            aload 2 /* connection */
            ldc "Content-Type"
            ldc "application/timestamp-query"
            invokevirtual java.net.HttpURLConnection.setRequestProperty:(Ljava/lang/String;Ljava/lang/String;)V
         5: .line 98
            aload 2 /* connection */
            ldc "POST"
            invokevirtual java.net.HttpURLConnection.setRequestMethod:(Ljava/lang/String;)V
         6: .line 100
            aload 2 /* connection */
            sipush 15000
            invokevirtual java.net.HttpURLConnection.setConnectTimeout:(I)V
         7: .line 102
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            ifnull 18
         8: .line 104
            aload 2 /* connection */
            invokevirtual java.net.HttpURLConnection.getRequestProperties:()Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
         9: .line 103
            astore 3 /* headers */
        start local 3 // java.util.Set headers
        10: .line 105
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            aload 2 /* connection */
            invokevirtual java.net.HttpURLConnection.getRequestMethod:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.security.timestamp.HttpTimestamper.tsaURI:Ljava/net/URI;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        11: .line 106
            ldc " HTTP/1.1"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 105
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        13: .line 107
            aload 3 /* headers */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5
            goto 16
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.util.Set top java.util.Iterator
      StackMap stack:
        14: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 4 /* e */
        start local 4 // java.util.Map$Entry e
        15: .line 108
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "  "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 4 // java.util.Map$Entry e
        16: .line 107
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        17: .line 110
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            invokevirtual sun.security.util.Debug.println:()V
        end local 3 // java.util.Set headers
        18: .line 112
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection
      StackMap stack:
            aload 2 /* connection */
            invokevirtual java.net.HttpURLConnection.connect:()V
        19: .line 115
            aconst_null
            astore 3 /* output */
        start local 3 // java.io.DataOutputStream output
        20: .line 117
            new java.io.DataOutputStream
            dup
            aload 2 /* connection */
            invokevirtual java.net.HttpURLConnection.getOutputStream:()Ljava/io/OutputStream;
            invokespecial java.io.DataOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 3 /* output */
        21: .line 118
            aload 1 /* tsQuery */
            invokevirtual sun.security.timestamp.TSRequest.encode:()[B
            astore 4 /* request */
        start local 4 // byte[] request
        22: .line 119
            aload 3 /* output */
            aload 4 /* request */
            iconst_0
            aload 4 /* request */
            arraylength
            invokevirtual java.io.DataOutputStream.write:([BII)V
        23: .line 120
            aload 3 /* output */
            invokevirtual java.io.DataOutputStream.flush:()V
        24: .line 121
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            ifnull 33
        25: .line 122
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "sent timestamp query (length="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        26: .line 123
            aload 4 /* request */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        27: .line 122
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 4 // byte[] request
        28: .line 125
            goto 33
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.io.DataOutputStream
      StackMap stack: java.lang.Throwable
        29: astore 5
        30: .line 126
            aload 3 /* output */
            ifnull 32
        31: .line 127
            aload 3 /* output */
            invokevirtual java.io.DataOutputStream.close:()V
        32: .line 129
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.io.DataOutputStream top java.lang.Throwable
      StackMap stack:
            aload 5
            athrow
        33: .line 126
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.io.DataOutputStream
      StackMap stack:
            aload 3 /* output */
            ifnull 35
        34: .line 127
            aload 3 /* output */
            invokevirtual java.io.DataOutputStream.close:()V
        35: .line 132
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* input */
        start local 4 // java.io.BufferedInputStream input
        36: .line 133
            aconst_null
            astore 5 /* replyBuffer */
        start local 5 // byte[] replyBuffer
        37: .line 135
            new java.io.BufferedInputStream
            dup
            aload 2 /* connection */
            invokevirtual java.net.HttpURLConnection.getInputStream:()Ljava/io/InputStream;
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 4 /* input */
        38: .line 136
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            ifnull 52
        39: .line 137
            aload 2 /* connection */
            iconst_0
            invokevirtual java.net.HttpURLConnection.getHeaderField:(I)Ljava/lang/String;
            astore 6 /* header */
        start local 6 // java.lang.String header
        40: .line 138
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            aload 6 /* header */
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        41: .line 139
            iconst_1
            istore 7 /* i */
        start local 7 // int i
        42: .line 140
            goto 50
        43: .line 141
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.io.DataOutputStream java.io.BufferedInputStream byte[] java.lang.String int
      StackMap stack:
            aload 2 /* connection */
            iload 7 /* i */
            invokevirtual java.net.HttpURLConnection.getHeaderFieldKey:(I)Ljava/lang/String;
            astore 8 /* key */
        start local 8 // java.lang.String key
        44: .line 142
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "  "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* key */
            ifnonnull 45
            ldc ""
            goto 46
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.io.DataOutputStream java.io.BufferedInputStream byte[] java.lang.String int java.lang.String
      StackMap stack: sun.security.util.Debug java.lang.StringBuilder
        45: new java.lang.StringBuilder
            dup
            aload 8 /* key */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.io.DataOutputStream java.io.BufferedInputStream byte[] java.lang.String int java.lang.String
      StackMap stack: sun.security.util.Debug java.lang.StringBuilder java.lang.String
        46: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        47: .line 143
            aload 6 /* header */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        48: .line 142
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        49: .line 144
            iinc 7 /* i */ 1
        end local 8 // java.lang.String key
        50: .line 140
      StackMap locals:
      StackMap stack:
            aload 2 /* connection */
            iload 7 /* i */
            invokevirtual java.net.HttpURLConnection.getHeaderField:(I)Ljava/lang/String;
            dup
            astore 6 /* header */
            ifnonnull 43
        51: .line 146
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            invokevirtual sun.security.util.Debug.println:()V
        end local 7 // int i
        end local 6 // java.lang.String header
        52: .line 148
      StackMap locals:
      StackMap stack:
            aload 2 /* connection */
            invokevirtual java.net.HttpURLConnection.getContentType:()Ljava/lang/String;
            invokestatic sun.security.timestamp.HttpTimestamper.verifyMimeType:(Ljava/lang/String;)V
        53: .line 150
            aload 2 /* connection */
            invokevirtual java.net.HttpURLConnection.getContentLength:()I
            istore 6 /* clen */
        start local 6 // int clen
        54: .line 151
            aload 4 /* input */
            invokevirtual java.io.BufferedInputStream.readAllBytes:()[B
            astore 5 /* replyBuffer */
        55: .line 152
            iload 6 /* clen */
            iconst_m1
            if_icmpeq 59
            aload 5 /* replyBuffer */
            arraylength
            iload 6 /* clen */
            if_icmpeq 59
        56: .line 153
            new java.io.EOFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Expected:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 6 /* clen */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        57: .line 154
            ldc ", read:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* replyBuffer */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        58: .line 153
            invokespecial java.io.EOFException.<init>:(Ljava/lang/String;)V
            athrow
        59: .line 156
      StackMap locals: int
      StackMap stack:
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            ifnull 68
        60: .line 157
            getstatic sun.security.timestamp.HttpTimestamper.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "received timestamp response (length="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        61: .line 158
            aload 5 /* replyBuffer */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        62: .line 157
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        end local 6 // int clen
        63: .line 160
            goto 68
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.io.DataOutputStream java.io.BufferedInputStream byte[]
      StackMap stack: java.lang.Throwable
        64: astore 9
        65: .line 161
            aload 4 /* input */
            ifnull 67
        66: .line 162
            aload 4 /* input */
            invokevirtual java.io.BufferedInputStream.close:()V
        67: .line 164
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.io.DataOutputStream java.io.BufferedInputStream byte[] top top top java.lang.Throwable
      StackMap stack:
            aload 9
            athrow
        68: .line 161
      StackMap locals: sun.security.timestamp.HttpTimestamper sun.security.timestamp.TSRequest java.net.HttpURLConnection java.io.DataOutputStream java.io.BufferedInputStream byte[]
      StackMap stack:
            aload 4 /* input */
            ifnull 70
        69: .line 162
            aload 4 /* input */
            invokevirtual java.io.BufferedInputStream.close:()V
        70: .line 165
      StackMap locals:
      StackMap stack:
            new sun.security.timestamp.TSResponse
            dup
            aload 5 /* replyBuffer */
            invokespecial sun.security.timestamp.TSResponse.<init>:([B)V
            areturn
        end local 5 // byte[] replyBuffer
        end local 4 // java.io.BufferedInputStream input
        end local 3 // java.io.DataOutputStream output
        end local 2 // java.net.HttpURLConnection connection
        end local 1 // sun.security.timestamp.TSRequest tsQuery
        end local 0 // sun.security.timestamp.HttpTimestamper this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   71     0         this  Lsun/security/timestamp/HttpTimestamper;
            0   71     1      tsQuery  Lsun/security/timestamp/TSRequest;
            2   71     2   connection  Ljava/net/HttpURLConnection;
           10   18     3      headers  Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;>;
           15   16     4            e  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
           20   71     3       output  Ljava/io/DataOutputStream;
           22   28     4      request  [B
           36   71     4        input  Ljava/io/BufferedInputStream;
           37   71     5  replyBuffer  [B
           40   52     6       header  Ljava/lang/String;
           42   52     7            i  I
           44   50     8          key  Ljava/lang/String;
           54   63     6         clen  I
      Exception table:
        from    to  target  type
          20    29      29  any
          37    64      64  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      tsQuery  

  private static void verifyMimeType(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String contentType
         0: .line 175
            ldc "application/timestamp-reply"
            aload 0 /* contentType */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 2
         1: .line 176
            new java.io.IOException
            dup
            ldc "MIME Content-Type is not application/timestamp-reply"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 179
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String contentType
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0  contentType  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      contentType  
}
SourceFile: "HttpTimestamper.java"
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map