class org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider implements org.bouncycastle.est.ESTClientSourceProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider
  super_class: java.lang.Object
{
  private final javax.net.ssl.SSLSocketFactory sslSocketFactory;
    descriptor: Ljavax/net/ssl/SSLSocketFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.bouncycastle.est.jcajce.JsseHostnameAuthorizer hostNameAuthorizer;
    descriptor: Lorg/bouncycastle/est/jcajce/JsseHostnameAuthorizer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int timeout;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.bouncycastle.est.jcajce.ChannelBindingProvider bindingProvider;
    descriptor: Lorg/bouncycastle/est/jcajce/ChannelBindingProvider;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Set<java.lang.String> cipherSuites;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final java.lang.Long absoluteLimit;
    descriptor: Ljava/lang/Long;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean filterSupportedSuites;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(javax.net.ssl.SSLSocketFactory, org.bouncycastle.est.jcajce.JsseHostnameAuthorizer, int, org.bouncycastle.est.jcajce.ChannelBindingProvider, java.util.Set<java.lang.String>, java.lang.Long, );
    descriptor: (Ljavax/net/ssl/SSLSocketFactory;Lorg/bouncycastle/est/jcajce/JsseHostnameAuthorizer;ILorg/bouncycastle/est/jcajce/ChannelBindingProvider;Ljava/util/Set;Ljava/lang/Long;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=8, args_size=8
        start local 0 // org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider this
        start local 1 // javax.net.ssl.SSLSocketFactory socketFactory
        start local 2 // org.bouncycastle.est.jcajce.JsseHostnameAuthorizer hostNameAuthorizer
        start local 3 // int timeout
        start local 4 // org.bouncycastle.est.jcajce.ChannelBindingProvider bindingProvider
        start local 5 // java.util.Set cipherSuites
        start local 6 // java.lang.Long absoluteLimit
        start local 7 // boolean filterSupportedSuites
         0: .line 32
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 40
            aload 0 /* this */
            aload 1 /* socketFactory */
            putfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
         2: .line 41
            aload 0 /* this */
            aload 2 /* hostNameAuthorizer */
            putfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.hostNameAuthorizer:Lorg/bouncycastle/est/jcajce/JsseHostnameAuthorizer;
         3: .line 42
            aload 0 /* this */
            iload 3 /* timeout */
            putfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.timeout:I
         4: .line 43
            aload 0 /* this */
            aload 4 /* bindingProvider */
            putfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.bindingProvider:Lorg/bouncycastle/est/jcajce/ChannelBindingProvider;
         5: .line 44
            aload 0 /* this */
            aload 5 /* cipherSuites */
            putfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.cipherSuites:Ljava/util/Set;
         6: .line 45
            aload 0 /* this */
            aload 6 /* absoluteLimit */
            putfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.absoluteLimit:Ljava/lang/Long;
         7: .line 46
            aload 0 /* this */
            iload 7 /* filterSupportedSuites */
            putfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.filterSupportedSuites:Z
         8: .line 47
            return
        end local 7 // boolean filterSupportedSuites
        end local 6 // java.lang.Long absoluteLimit
        end local 5 // java.util.Set cipherSuites
        end local 4 // org.bouncycastle.est.jcajce.ChannelBindingProvider bindingProvider
        end local 3 // int timeout
        end local 2 // org.bouncycastle.est.jcajce.JsseHostnameAuthorizer hostNameAuthorizer
        end local 1 // javax.net.ssl.SSLSocketFactory socketFactory
        end local 0 // org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    9     0                   this  Lorg/bouncycastle/est/jcajce/DefaultESTClientSourceProvider;
            0    9     1          socketFactory  Ljavax/net/ssl/SSLSocketFactory;
            0    9     2     hostNameAuthorizer  Lorg/bouncycastle/est/jcajce/JsseHostnameAuthorizer;
            0    9     3                timeout  I
            0    9     4        bindingProvider  Lorg/bouncycastle/est/jcajce/ChannelBindingProvider;
            0    9     5           cipherSuites  Ljava/util/Set<Ljava/lang/String;>;
            0    9     6          absoluteLimit  Ljava/lang/Long;
            0    9     7  filterSupportedSuites  Z
    Exceptions:
      throws java.security.GeneralSecurityException
    Signature: (Ljavax/net/ssl/SSLSocketFactory;Lorg/bouncycastle/est/jcajce/JsseHostnameAuthorizer;ILorg/bouncycastle/est/jcajce/ChannelBindingProvider;Ljava/util/Set<Ljava/lang/String;>;Ljava/lang/Long;Z)V
    MethodParameters:
                       Name  Flags
      socketFactory          
      hostNameAuthorizer     
      timeout                
      bindingProvider        
      cipherSuites           
      absoluteLimit          
      filterSupportedSuites  

  public org.bouncycastle.est.Source makeSource(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Lorg/bouncycastle/est/Source;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider this
        start local 1 // java.lang.String host
        start local 2 // int port
         0: .line 53
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
            aload 1 /* host */
            iload 2 /* port */
            invokevirtual javax.net.ssl.SSLSocketFactory.createSocket:(Ljava/lang/String;I)Ljava/net/Socket;
            checkcast javax.net.ssl.SSLSocket
            astore 3 /* sock */
        start local 3 // javax.net.ssl.SSLSocket sock
         1: .line 54
            aload 3 /* sock */
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.timeout:I
            invokevirtual javax.net.ssl.SSLSocket.setSoTimeout:(I)V
         2: .line 56
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.cipherSuites:Ljava/util/Set;
            ifnull 23
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.cipherSuites:Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 23
         3: .line 59
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.filterSupportedSuites:Z
            ifeq 22
         4: .line 61
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 4 /* fs */
        start local 4 // java.util.HashSet fs
         5: .line 62
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.getSupportedCipherSuites:()[Ljava/lang/String;
            astore 5 /* supportedCipherSuites */
        start local 5 // java.lang.String[] supportedCipherSuites
         6: .line 63
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         7: goto 10
         8: .line 65
      StackMap locals: org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider java.lang.String int javax.net.ssl.SSLSocket java.util.HashSet java.lang.String[] int
      StackMap stack:
            aload 4 /* fs */
            aload 5 /* supportedCipherSuites */
            iload 6 /* i */
            aaload
            invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
            pop
         9: .line 63
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 6 /* i */
            aload 5 /* supportedCipherSuites */
            arraylength
            if_icmpne 8
        end local 6 // int i
        11: .line 68
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* j */
        start local 6 // java.util.List j
        12: .line 69
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.cipherSuites:Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7 /* it */
        start local 7 // java.util.Iterator it
        13: goto 17
        14: .line 71
      StackMap locals: org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider java.lang.String int javax.net.ssl.SSLSocket java.util.HashSet java.lang.String[] java.util.List java.util.Iterator
      StackMap stack:
            aload 7 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 8 /* s */
        start local 8 // java.lang.String s
        15: .line 72
            aload 4 /* fs */
            aload 8 /* s */
            invokevirtual java.util.HashSet.contains:(Ljava/lang/Object;)Z
            ifeq 17
        16: .line 74
            aload 6 /* j */
            aload 8 /* s */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // java.lang.String s
        17: .line 69
      StackMap locals:
      StackMap stack:
            aload 7 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        end local 7 // java.util.Iterator it
        18: .line 78
            aload 6 /* j */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 20
        19: .line 80
            new java.lang.IllegalStateException
            dup
            ldc "No supplied cipher suite is supported by the provider."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 83
      StackMap locals:
      StackMap stack:
            aload 3 /* sock */
            aload 6 /* j */
            aload 6 /* j */
            invokeinterface java.util.List.size:()I
            anewarray java.lang.String
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            invokevirtual javax.net.ssl.SSLSocket.setEnabledCipherSuites:([Ljava/lang/String;)V
        end local 6 // java.util.List j
        end local 5 // java.lang.String[] supportedCipherSuites
        end local 4 // java.util.HashSet fs
        21: .line 84
            goto 23
        22: .line 87
      StackMap locals:
      StackMap stack:
            aload 3 /* sock */
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.cipherSuites:Ljava/util/Set;
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.cipherSuites:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            anewarray java.lang.String
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            invokevirtual javax.net.ssl.SSLSocket.setEnabledCipherSuites:([Ljava/lang/String;)V
        23: .line 92
      StackMap locals:
      StackMap stack:
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.startHandshake:()V
        24: .line 94
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.hostNameAuthorizer:Lorg/bouncycastle/est/jcajce/JsseHostnameAuthorizer;
            ifnull 27
        25: .line 96
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.hostNameAuthorizer:Lorg/bouncycastle/est/jcajce/JsseHostnameAuthorizer;
            aload 1 /* host */
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface org.bouncycastle.est.jcajce.JsseHostnameAuthorizer.verified:(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z
            ifne 27
        26: .line 98
            new java.io.IOException
            dup
            ldc "Host name could not be verified."
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 103
      StackMap locals:
      StackMap stack:
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getCipherSuite:()Ljava/lang/String;
            invokestatic org.bouncycastle.util.Strings.toLowerCase:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* t */
        start local 4 // java.lang.String t
        28: .line 104
            aload 4 /* t */
            ldc "_des_"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 29
            aload 4 /* t */
            ldc "_des40_"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 29
            aload 4 /* t */
            ldc "_3des_"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 30
        29: .line 106
      StackMap locals: java.lang.String
      StackMap stack:
            new java.io.IOException
            dup
            ldc "EST clients must not use DES ciphers"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.String t
        30: .line 111
      StackMap locals:
      StackMap stack:
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getCipherSuite:()Ljava/lang/String;
            invokestatic org.bouncycastle.util.Strings.toLowerCase:(Ljava/lang/String;)Ljava/lang/String;
            ldc "null"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 32
        31: .line 113
            new java.io.IOException
            dup
            ldc "EST clients must not use NULL ciphers"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 117
      StackMap locals:
      StackMap stack:
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getCipherSuite:()Ljava/lang/String;
            invokestatic org.bouncycastle.util.Strings.toLowerCase:(Ljava/lang/String;)Ljava/lang/String;
            ldc "anon"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 34
        33: .line 119
            new java.io.IOException
            dup
            ldc "EST clients must not use anon ciphers"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        34: .line 123
      StackMap locals:
      StackMap stack:
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getCipherSuite:()Ljava/lang/String;
            invokestatic org.bouncycastle.util.Strings.toLowerCase:(Ljava/lang/String;)Ljava/lang/String;
            ldc "export"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 36
        35: .line 125
            new java.io.IOException
            dup
            ldc "EST clients must not use export ciphers"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        36: .line 128
      StackMap locals:
      StackMap stack:
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface javax.net.ssl.SSLSession.getProtocol:()Ljava/lang/String;
            ldc "tlsv1"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 41
        37: .line 132
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.close:()V
        38: .line 133
            goto 40
        39: .line 134
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
        40: .line 138
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "EST clients must not use TLSv1"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        41: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.hostNameAuthorizer:Lorg/bouncycastle/est/jcajce/JsseHostnameAuthorizer;
            ifnull 43
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.hostNameAuthorizer:Lorg/bouncycastle/est/jcajce/JsseHostnameAuthorizer;
            aload 1 /* host */
            aload 3 /* sock */
            invokevirtual javax.net.ssl.SSLSocket.getSession:()Ljavax/net/ssl/SSLSession;
            invokeinterface org.bouncycastle.est.jcajce.JsseHostnameAuthorizer.verified:(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z
            ifne 43
        42: .line 144
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Hostname was not verified: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* host */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        43: .line 146
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.est.jcajce.LimitedSSLSocketSource
            dup
            aload 3 /* sock */
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.bindingProvider:Lorg/bouncycastle/est/jcajce/ChannelBindingProvider;
            aload 0 /* this */
            getfield org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider.absoluteLimit:Ljava/lang/Long;
            invokespecial org.bouncycastle.est.jcajce.LimitedSSLSocketSource.<init>:(Ljavax/net/ssl/SSLSocket;Lorg/bouncycastle/est/jcajce/ChannelBindingProvider;Ljava/lang/Long;)V
            areturn
        end local 3 // javax.net.ssl.SSLSocket sock
        end local 2 // int port
        end local 1 // java.lang.String host
        end local 0 // org.bouncycastle.est.jcajce.DefaultESTClientSourceProvider this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   44     0                   this  Lorg/bouncycastle/est/jcajce/DefaultESTClientSourceProvider;
            0   44     1                   host  Ljava/lang/String;
            0   44     2                   port  I
            1   44     3                   sock  Ljavax/net/ssl/SSLSocket;
            5   21     4                     fs  Ljava/util/HashSet<Ljava/lang/String;>;
            6   21     5  supportedCipherSuites  [Ljava/lang/String;
            7   11     6                      i  I
           12   21     6                      j  Ljava/util/List<Ljava/lang/String;>;
           13   18     7                     it  Ljava/util/Iterator;
           15   17     8                      s  Ljava/lang/String;
           28   30     4                      t  Ljava/lang/String;
      Exception table:
        from    to  target  type
          37    38      39  Class java.lang.Exception
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      host  
      port  
}
SourceFile: "DefaultESTClientSourceProvider.java"