public abstract class org.jruby.util.SecurityHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.jruby.util.SecurityHelper
  super_class: java.lang.Object
{
  private static final org.jruby.util.log.Logger LOG;
    descriptor: Lorg/jruby/util/log/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static boolean attempted;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final boolean JAVA9;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 13
            ldc Lorg/jruby/util/SecurityHelper;
            invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
            putstatic org.jruby.util.SecurityHelper.LOG:Lorg/jruby/util/log/Logger;
         1: .line 14
            iconst_0
            putstatic org.jruby.util.SecurityHelper.attempted:Z
         2: .line 20
            ldc "java.lang.Runtime.Version"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            pop
         3: .line 21
            iconst_1
            istore 0 /* versionClassFound */
        start local 0 // boolean versionClassFound
         4: .line 22
            goto 7
        end local 0 // boolean versionClassFound
         5: .line 23
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         6: .line 24
            iconst_0
            istore 0 /* versionClassFound */
        start local 0 // boolean versionClassFound
         7: .line 26
      StackMap locals: int
      StackMap stack:
            iload 0 /* versionClassFound */
            putstatic org.jruby.util.SecurityHelper.JAVA9:Z
        end local 0 // boolean versionClassFound
         8: .line 27
            return
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            4    5     0  versionClassFound  Z
            7    8     0  versionClassFound  Z
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.Exception

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

  public static void checkCryptoRestrictions(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 31
            getstatic org.jruby.util.SecurityHelper.attempted:Z
            ifne 6
         1: .line 32
            iconst_1
            putstatic org.jruby.util.SecurityHelper.attempted:Z
         2: .line 33
            getstatic org.jruby.util.SecurityHelper.JAVA9:Z
            ifeq 5
         3: .line 34
            invokestatic org.jruby.util.SecurityHelper.setNonRestrictedJava9:()Z
            pop
         4: .line 35
            goto 6
         5: .line 37
      StackMap locals:
      StackMap stack:
            invokestatic org.jruby.util.SecurityHelper.setNonRestrictedJava8:()Z
            pop
         6: .line 45
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0  runtime  Lorg/jruby/Ruby;
    MethodParameters:
         Name  Flags
      runtime  final

  private static boolean setNonRestrictedJava9();
    descriptor: ()Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 49
            ldc "crypto.policy"
            invokestatic java.security.Security.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            ifnonnull 2
         1: .line 50
            ldc "crypto.policy"
            ldc "unlimited"
            invokestatic java.security.Security.setProperty:(Ljava/lang/String;Ljava/lang/String;)V
         2: .line 52
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         3: .line 54
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 0 /* e */
        start local 0 // java.lang.Exception e
         4: .line 55
            getstatic org.jruby.util.SecurityHelper.LOG:Lorg/jruby/util/log/Logger;
            invokeinterface org.jruby.util.log.Logger.isDebugEnabled:()Z
            ifeq 5
            getstatic org.jruby.util.SecurityHelper.LOG:Lorg/jruby/util/log/Logger;
            ldc "unable un-restrict jce security: "
            aload 0 /* e */
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 0 // java.lang.Exception e
         5: .line 57
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            4    5     0     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.Exception

  private static boolean setNonRestrictedJava8();
    descriptor: ()Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=0
         0: .line 62
            ldc "javax.crypto.JceSecurity"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 0 /* jceSecurity */
        start local 0 // java.lang.Class jceSecurity
         1: .line 63
            aload 0 /* jceSecurity */
            ldc "isRestricted"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 1 /* isRestricted */
        start local 1 // java.lang.reflect.Field isRestricted
         2: .line 65
            aload 1 /* isRestricted */
            invokevirtual java.lang.reflect.Field.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isFinal:(I)Z
            ifeq 6
         3: .line 66
            ldc Ljava/lang/reflect/Field;
            ldc "modifiers"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 2 /* modifiers */
        start local 2 // java.lang.reflect.Field modifiers
         4: .line 67
            aload 2 /* modifiers */
            iconst_1
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
         5: .line 68
            aload 2 /* modifiers */
            aload 1 /* isRestricted */
            aload 1 /* isRestricted */
            invokevirtual java.lang.reflect.Field.getModifiers:()I
            bipush -17
            iand
            invokevirtual java.lang.reflect.Field.setInt:(Ljava/lang/Object;I)V
        end local 2 // java.lang.reflect.Field modifiers
         6: .line 71
      StackMap locals: java.lang.Class java.lang.reflect.Field
      StackMap stack:
            aload 1 /* isRestricted */
            iconst_1
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
         7: .line 72
            aload 1 /* isRestricted */
            aconst_null
            iconst_0
            invokevirtual java.lang.reflect.Field.setBoolean:(Ljava/lang/Object;Z)V
         8: .line 73
            aload 1 /* isRestricted */
            iconst_0
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
         9: .line 75
            iconst_1
            ireturn
        end local 1 // java.lang.reflect.Field isRestricted
        end local 0 // java.lang.Class jceSecurity
        10: .line 77
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 0 /* e */
        start local 0 // java.lang.ClassNotFoundException e
        11: .line 78
            getstatic org.jruby.util.SecurityHelper.LOG:Lorg/jruby/util/log/Logger;
            invokeinterface org.jruby.util.log.Logger.isDebugEnabled:()Z
            ifeq 15
            getstatic org.jruby.util.SecurityHelper.LOG:Lorg/jruby/util/log/Logger;
            new java.lang.StringBuilder
            dup
            ldc "unable un-restrict jce security: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
        end local 0 // java.lang.ClassNotFoundException e
        12: goto 15
        13: .line 80
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 0 /* e */
        start local 0 // java.lang.Exception e
        14: .line 81
            getstatic org.jruby.util.SecurityHelper.LOG:Lorg/jruby/util/log/Logger;
            invokeinterface org.jruby.util.log.Logger.isDebugEnabled:()Z
            ifeq 15
            getstatic org.jruby.util.SecurityHelper.LOG:Lorg/jruby/util/log/Logger;
            ldc "unable un-restrict jce security: "
            aload 0 /* e */
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 0 // java.lang.Exception e
        15: .line 83
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            1   10     0   jceSecurity  Ljava/lang/Class;
            2   10     1  isRestricted  Ljava/lang/reflect/Field;
            4    6     2     modifiers  Ljava/lang/reflect/Field;
           11   12     0             e  Ljava/lang/ClassNotFoundException;
           14   15     0             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     9      10  Class java.lang.ClassNotFoundException
           0     9      13  Class java.lang.Exception
}
SourceFile: "SecurityHelper.java"