public class org.bouncycastle.jce.provider.ProviderUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.jce.provider.ProviderUtil
  super_class: java.lang.Object
{
  private static final long MAX_MEMORY;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static java.security.Permission BC_EC_LOCAL_PERMISSION;
    descriptor: Ljava/security/Permission;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.security.Permission BC_EC_PERMISSION;
    descriptor: Ljava/security/Permission;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.ThreadLocal threadSpec;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static volatile org.bouncycastle.jce.spec.ECParameterSpec ecImplicitCaParams;
    descriptor: Lorg/bouncycastle/jce/spec/ECParameterSpec;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 15
            invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
            invokevirtual java.lang.Runtime.maxMemory:()J
            putstatic org.bouncycastle.jce.provider.ProviderUtil.MAX_MEMORY:J
         1: .line 17
            new org.bouncycastle.jce.ProviderConfigurationPermission
            dup
         2: .line 18
            getstatic org.bouncycastle.jce.provider.BouncyCastleProvider.PROVIDER_NAME:Ljava/lang/String;
            ldc "threadLocalEcImplicitlyCa"
         3: .line 17
            invokespecial org.bouncycastle.jce.ProviderConfigurationPermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.bouncycastle.jce.provider.ProviderUtil.BC_EC_LOCAL_PERMISSION:Ljava/security/Permission;
         4: .line 19
            new org.bouncycastle.jce.ProviderConfigurationPermission
            dup
         5: .line 20
            getstatic org.bouncycastle.jce.provider.BouncyCastleProvider.PROVIDER_NAME:Ljava/lang/String;
            ldc "ecImplicitlyCa"
         6: .line 19
            invokespecial org.bouncycastle.jce.ProviderConfigurationPermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.bouncycastle.jce.provider.ProviderUtil.BC_EC_PERMISSION:Ljava/security/Permission;
         7: .line 22
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
            putstatic org.bouncycastle.jce.provider.ProviderUtil.threadSpec:Ljava/lang/ThreadLocal;
         8: .line 23
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.jce.provider.ProviderUtil this
         0: .line 13
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bouncycastle.jce.provider.ProviderUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/jce/provider/ProviderUtil;

  static void setParameter(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.lang.String parameterName
        start local 1 // java.lang.Object parameter
         0: .line 27
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* securityManager */
        start local 2 // java.lang.SecurityManager securityManager
         1: .line 29
            aload 0 /* parameterName */
            ldc "threadLocalEcImplicitlyCa"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 13
         2: .line 33
            aload 2 /* securityManager */
            ifnull 4
         3: .line 35
            aload 2 /* securityManager */
            getstatic org.bouncycastle.jce.provider.ProviderUtil.BC_EC_LOCAL_PERMISSION:Ljava/security/Permission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         4: .line 38
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 1 /* parameter */
            instanceof org.bouncycastle.jce.spec.ECParameterSpec
            ifne 5
            aload 1 /* parameter */
            ifnonnull 7
         5: .line 40
      StackMap locals:
      StackMap stack:
            aload 1 /* parameter */
            checkcast org.bouncycastle.jce.spec.ECParameterSpec
            astore 3 /* curveSpec */
        start local 3 // org.bouncycastle.jce.spec.ECParameterSpec curveSpec
         6: .line 41
            goto 8
        end local 3 // org.bouncycastle.jce.spec.ECParameterSpec curveSpec
         7: .line 44
      StackMap locals:
      StackMap stack:
            aload 1 /* parameter */
            checkcast java.security.spec.ECParameterSpec
            iconst_0
            invokestatic org.bouncycastle.jce.provider.asymmetric.ec.EC5Util.convertSpec:(Ljava/security/spec/ECParameterSpec;Z)Lorg/bouncycastle/jce/spec/ECParameterSpec;
            astore 3 /* curveSpec */
        start local 3 // org.bouncycastle.jce.spec.ECParameterSpec curveSpec
         8: .line 47
      StackMap locals: org.bouncycastle.jce.spec.ECParameterSpec
      StackMap stack:
            aload 3 /* curveSpec */
            ifnonnull 11
         9: .line 49
            getstatic org.bouncycastle.jce.provider.ProviderUtil.threadSpec:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.remove:()V
        10: .line 50
            goto 20
        11: .line 53
      StackMap locals:
      StackMap stack:
            getstatic org.bouncycastle.jce.provider.ProviderUtil.threadSpec:Ljava/lang/ThreadLocal;
            aload 3 /* curveSpec */
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
        end local 3 // org.bouncycastle.jce.spec.ECParameterSpec curveSpec
        12: .line 55
            goto 20
        13: .line 56
      StackMap locals:
      StackMap stack:
            aload 0 /* parameterName */
            ldc "ecImplicitlyCa"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 20
        14: .line 58
            aload 2 /* securityManager */
            ifnull 16
        15: .line 60
            aload 2 /* securityManager */
            getstatic org.bouncycastle.jce.provider.ProviderUtil.BC_EC_PERMISSION:Ljava/security/Permission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
        16: .line 63
      StackMap locals:
      StackMap stack:
            aload 1 /* parameter */
            instanceof org.bouncycastle.jce.spec.ECParameterSpec
            ifne 17
            aload 1 /* parameter */
            ifnonnull 19
        17: .line 65
      StackMap locals:
      StackMap stack:
            aload 1 /* parameter */
            checkcast org.bouncycastle.jce.spec.ECParameterSpec
            putstatic org.bouncycastle.jce.provider.ProviderUtil.ecImplicitCaParams:Lorg/bouncycastle/jce/spec/ECParameterSpec;
        18: .line 66
            goto 20
        19: .line 69
      StackMap locals:
      StackMap stack:
            aload 1 /* parameter */
            checkcast java.security.spec.ECParameterSpec
            iconst_0
            invokestatic org.bouncycastle.jce.provider.asymmetric.ec.EC5Util.convertSpec:(Ljava/security/spec/ECParameterSpec;Z)Lorg/bouncycastle/jce/spec/ECParameterSpec;
            putstatic org.bouncycastle.jce.provider.ProviderUtil.ecImplicitCaParams:Lorg/bouncycastle/jce/spec/ECParameterSpec;
        20: .line 72
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.SecurityManager securityManager
        end local 1 // java.lang.Object parameter
        end local 0 // java.lang.String parameterName
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   21     0    parameterName  Ljava/lang/String;
            0   21     1        parameter  Ljava/lang/Object;
            1   21     2  securityManager  Ljava/lang/SecurityManager;
            6    7     3        curveSpec  Lorg/bouncycastle/jce/spec/ECParameterSpec;
            8   12     3        curveSpec  Lorg/bouncycastle/jce/spec/ECParameterSpec;
    MethodParameters:
               Name  Flags
      parameterName  
      parameter      

  public static org.bouncycastle.jce.spec.ECParameterSpec getEcImplicitlyCa();
    descriptor: ()Lorg/bouncycastle/jce/spec/ECParameterSpec;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 76
            getstatic org.bouncycastle.jce.provider.ProviderUtil.threadSpec:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast org.bouncycastle.jce.spec.ECParameterSpec
            astore 0 /* spec */
        start local 0 // org.bouncycastle.jce.spec.ECParameterSpec spec
         1: .line 78
            aload 0 /* spec */
            ifnull 3
         2: .line 80
            aload 0 /* spec */
            areturn
         3: .line 83
      StackMap locals: org.bouncycastle.jce.spec.ECParameterSpec
      StackMap stack:
            getstatic org.bouncycastle.jce.provider.ProviderUtil.ecImplicitCaParams:Lorg/bouncycastle/jce/spec/ECParameterSpec;
            areturn
        end local 0 // org.bouncycastle.jce.spec.ECParameterSpec spec
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    4     0  spec  Lorg/bouncycastle/jce/spec/ECParameterSpec;

  static int getReadLimit(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.io.InputStream in
         0: .line 89
            aload 0 /* in */
            instanceof java.io.ByteArrayInputStream
            ifeq 2
         1: .line 91
            aload 0 /* in */
            invokevirtual java.io.InputStream.available:()I
            ireturn
         2: .line 94
      StackMap locals:
      StackMap stack:
            getstatic org.bouncycastle.jce.provider.ProviderUtil.MAX_MEMORY:J
            ldc 2147483647
            lcmp
            ifle 4
         3: .line 96
            ldc 2147483647
            ireturn
         4: .line 99
      StackMap locals:
      StackMap stack:
            getstatic org.bouncycastle.jce.provider.ProviderUtil.MAX_MEMORY:J
            l2i
            ireturn
        end local 0 // java.io.InputStream in
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0    in  Ljava/io/InputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    
}
SourceFile: "ProviderUtil.java"