public class com.google.crypto.tink.subtle.SubtleUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.google.crypto.tink.subtle.SubtleUtil
  super_class: java.lang.Object
{
  private static volatile int[] $SWITCH_TABLE$com$google$crypto$tink$subtle$Enums$HashType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.crypto.tink.subtle.SubtleUtil this
         0: .line 27
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.crypto.tink.subtle.SubtleUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/crypto/tink/subtle/SubtleUtil;

  public static java.lang.String toEcdsaAlgo(com.google.crypto.tink.subtle.Enums$HashType);
    descriptor: (Lcom/google/crypto/tink/subtle/Enums$HashType;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.crypto.tink.subtle.Enums$HashType hash
         0: .line 38
            aload 0 /* hash */
            invokestatic com.google.crypto.tink.subtle.Validators.validateSignatureHash:(Lcom/google/crypto/tink/subtle/Enums$HashType;)V
         1: .line 39
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* hash */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "withECDSA"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.google.crypto.tink.subtle.Enums$HashType hash
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  hash  Lcom/google/crypto/tink/subtle/Enums$HashType;
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
      Name  Flags
      hash  

  public static java.lang.String toRsaSsaPkcs1Algo(com.google.crypto.tink.subtle.Enums$HashType);
    descriptor: (Lcom/google/crypto/tink/subtle/Enums$HashType;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.crypto.tink.subtle.Enums$HashType hash
         0: .line 52
            aload 0 /* hash */
            invokestatic com.google.crypto.tink.subtle.Validators.validateSignatureHash:(Lcom/google/crypto/tink/subtle/Enums$HashType;)V
         1: .line 53
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* hash */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "withRSA"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.google.crypto.tink.subtle.Enums$HashType hash
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  hash  Lcom/google/crypto/tink/subtle/Enums$HashType;
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
      Name  Flags
      hash  

  public static java.lang.String toDigestAlgo(com.google.crypto.tink.subtle.Enums$HashType);
    descriptor: (Lcom/google/crypto/tink/subtle/Enums$HashType;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.google.crypto.tink.subtle.Enums$HashType hash
         0: .line 64
            invokestatic com.google.crypto.tink.subtle.SubtleUtil.$SWITCH_TABLE$com$google$crypto$tink$subtle$Enums$HashType:()[I
            aload 0 /* hash */
            invokevirtual com.google.crypto.tink.subtle.Enums$HashType.ordinal:()I
            iaload
            tableswitch { // 1 - 4
                    1: 1
                    2: 2
                    3: 3
                    4: 4
              default: 5
          }
         1: .line 66
      StackMap locals:
      StackMap stack:
            ldc "SHA-1"
            areturn
         2: .line 68
      StackMap locals:
      StackMap stack:
            ldc "SHA-256"
            areturn
         3: .line 70
      StackMap locals:
      StackMap stack:
            ldc "SHA-384"
            areturn
         4: .line 72
      StackMap locals:
      StackMap stack:
            ldc "SHA-512"
            areturn
         5: .line 74
      StackMap locals:
      StackMap stack:
            new java.security.GeneralSecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported hash "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* hash */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.google.crypto.tink.subtle.Enums$HashType hash
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  hash  Lcom/google/crypto/tink/subtle/Enums$HashType;
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
      Name  Flags
      hash  

  public static boolean isAndroid();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 84
            ldc "android.app.Application"
            iconst_0
            aconst_null
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            pop
         1: .line 85
            iconst_1
            ireturn
         2: .line 86
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         3: .line 88
            iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Exception

  public static int androidApiLevel();
    descriptor: ()I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 95
            ldc "android.os.Build$VERSION"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 0 /* buildVersion */
        start local 0 // java.lang.Class buildVersion
         1: .line 96
            aload 0 /* buildVersion */
            ldc "SDK_INT"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            aconst_null
            invokevirtual java.lang.reflect.Field.getInt:(Ljava/lang/Object;)I
         2: ireturn
        end local 0 // java.lang.Class buildVersion
         3: .line 97
      StackMap locals:
      StackMap stack: java.lang.ReflectiveOperationException
            pop
         4: .line 98
            iconst_m1
            ireturn
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            1    3     0  buildVersion  Ljava/lang/Class<*>;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.ClassNotFoundException
           0     2       3  Class java.lang.NoSuchFieldException
           0     2       3  Class java.lang.IllegalAccessException

  public static java.math.BigInteger bytes2Integer(byte[]);
    descriptor: ([B)Ljava/math/BigInteger;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // byte[] bs
         0: .line 110
            new java.math.BigInteger
            dup
            iconst_1
            aload 0 /* bs */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            areturn
        end local 0 // byte[] bs
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    bs  [B
    MethodParameters:
      Name  Flags
      bs    

  public static byte[] integer2Bytes(java.math.BigInteger, int);
    descriptor: (Ljava/math/BigInteger;I)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.math.BigInteger num
        start local 1 // int intendedLength
         0: .line 123
            aload 0 /* num */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 2 /* b */
        start local 2 // byte[] b
         1: .line 124
            aload 2 /* b */
            arraylength
            iload 1 /* intendedLength */
            if_icmpne 3
         2: .line 125
            aload 2 /* b */
            areturn
         3: .line 127
      StackMap locals: byte[]
      StackMap stack:
            aload 2 /* b */
            arraylength
            iload 1 /* intendedLength */
            iconst_1
            iadd
            if_icmple 5
         4: .line 128
            new java.security.GeneralSecurityException
            dup
            ldc "integer too large"
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 130
      StackMap locals:
      StackMap stack:
            aload 2 /* b */
            arraylength
            iload 1 /* intendedLength */
            iconst_1
            iadd
            if_icmpne 9
         6: .line 131
            aload 2 /* b */
            iconst_0
            baload
            ifne 8
         7: .line 132
            aload 2 /* b */
            iconst_1
            aload 2 /* b */
            arraylength
            invokestatic java.util.Arrays.copyOfRange:([BII)[B
            areturn
         8: .line 134
      StackMap locals:
      StackMap stack:
            new java.security.GeneralSecurityException
            dup
            ldc "integer too large"
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 138
      StackMap locals:
      StackMap stack:
            iload 1 /* intendedLength */
            newarray 8
            astore 3 /* res */
        start local 3 // byte[] res
        10: .line 139
            aload 2 /* b */
            iconst_0
            aload 3 /* res */
            iload 1 /* intendedLength */
            aload 2 /* b */
            arraylength
            isub
            aload 2 /* b */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 140
            aload 3 /* res */
            areturn
        end local 3 // byte[] res
        end local 2 // byte[] b
        end local 1 // int intendedLength
        end local 0 // java.math.BigInteger num
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   12     0             num  Ljava/math/BigInteger;
            0   12     1  intendedLength  I
            1   12     2               b  [B
           10   12     3             res  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
                Name  Flags
      num             
      intendedLength  

  public static byte[] mgf1(byte[], int, com.google.crypto.tink.subtle.Enums$HashType);
    descriptor: ([BILcom/google/crypto/tink/subtle/Enums$HashType;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=3
        start local 0 // byte[] mgfSeed
        start local 1 // int maskLen
        start local 2 // com.google.crypto.tink.subtle.Enums$HashType mgfHash
         0: .line 147
            getstatic com.google.crypto.tink.subtle.EngineFactory.MESSAGE_DIGEST:Lcom/google/crypto/tink/subtle/EngineFactory;
            aload 2 /* mgfHash */
            invokestatic com.google.crypto.tink.subtle.SubtleUtil.toDigestAlgo:(Lcom/google/crypto/tink/subtle/Enums$HashType;)Ljava/lang/String;
            invokevirtual com.google.crypto.tink.subtle.EngineFactory.getInstance:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.security.MessageDigest
         1: .line 146
            astore 3 /* digest */
        start local 3 // java.security.MessageDigest digest
         2: .line 148
            aload 3 /* digest */
            invokevirtual java.security.MessageDigest.getDigestLength:()I
            istore 4 /* hLen */
        start local 4 // int hLen
         3: .line 153
            iload 1 /* maskLen */
            newarray 8
            astore 5 /* t */
        start local 5 // byte[] t
         4: .line 154
            iconst_0
            istore 6 /* tPos */
        start local 6 // int tPos
         5: .line 155
            iconst_0
            istore 7 /* counter */
        start local 7 // int counter
         6: goto 14
         7: .line 156
      StackMap locals: byte[] int com.google.crypto.tink.subtle.Enums$HashType java.security.MessageDigest int byte[] int int
      StackMap stack:
            aload 3 /* digest */
            invokevirtual java.security.MessageDigest.reset:()V
         8: .line 157
            aload 3 /* digest */
            aload 0 /* mgfSeed */
            invokevirtual java.security.MessageDigest.update:([B)V
         9: .line 158
            aload 3 /* digest */
            iload 7 /* counter */
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            iconst_4
            invokestatic com.google.crypto.tink.subtle.SubtleUtil.integer2Bytes:(Ljava/math/BigInteger;I)[B
            invokevirtual java.security.MessageDigest.update:([B)V
        10: .line 159
            aload 3 /* digest */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 8 /* c */
        start local 8 // byte[] c
        11: .line 160
            aload 8 /* c */
            iconst_0
            aload 5 /* t */
            iload 6 /* tPos */
            aload 8 /* c */
            arraylength
            aload 5 /* t */
            arraylength
            iload 6 /* tPos */
            isub
            invokestatic java.lang.Math.min:(II)I
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        12: .line 161
            iload 6 /* tPos */
            aload 8 /* c */
            arraylength
            iadd
            istore 6 /* tPos */
        end local 8 // byte[] c
        13: .line 155
            iinc 7 /* counter */ 1
      StackMap locals:
      StackMap stack:
        14: iload 7 /* counter */
            iload 1 /* maskLen */
            iconst_1
            isub
            iload 4 /* hLen */
            idiv
            if_icmple 7
        end local 7 // int counter
        15: .line 163
            aload 5 /* t */
            areturn
        end local 6 // int tPos
        end local 5 // byte[] t
        end local 4 // int hLen
        end local 3 // java.security.MessageDigest digest
        end local 2 // com.google.crypto.tink.subtle.Enums$HashType mgfHash
        end local 1 // int maskLen
        end local 0 // byte[] mgfSeed
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0  mgfSeed  [B
            0   16     1  maskLen  I
            0   16     2  mgfHash  Lcom/google/crypto/tink/subtle/Enums$HashType;
            2   16     3   digest  Ljava/security/MessageDigest;
            3   16     4     hLen  I
            4   16     5        t  [B
            5   16     6     tPos  I
            6   15     7  counter  I
           11   13     8        c  [B
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
         Name  Flags
      mgfSeed  
      maskLen  
      mgfHash  

  public static void putAsUnsigedInt(java.nio.ByteBuffer, long);
    descriptor: (Ljava/nio/ByteBuffer;J)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.nio.ByteBuffer buffer
        start local 1 // long value
         0: .line 173
            lconst_0
            lload 1 /* value */
            lcmp
            ifgt 1
            lload 1 /* value */
            ldc 4294967296
            lcmp
            iflt 2
         1: .line 174
      StackMap locals:
      StackMap stack:
            new java.security.GeneralSecurityException
            dup
            ldc "Index out of range"
            invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 176
      StackMap locals:
      StackMap stack:
            aload 0 /* buffer */
            lload 1 /* value */
            l2i
            invokevirtual java.nio.ByteBuffer.putInt:(I)Ljava/nio/ByteBuffer;
            pop
         3: .line 177
            return
        end local 1 // long value
        end local 0 // java.nio.ByteBuffer buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  buffer  Ljava/nio/ByteBuffer;
            0    4     1   value  J
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
        Name  Flags
      buffer  
      value   

  static int[] $SWITCH_TABLE$com$google$crypto$tink$subtle$Enums$HashType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 27
            getstatic com.google.crypto.tink.subtle.SubtleUtil.$SWITCH_TABLE$com$google$crypto$tink$subtle$Enums$HashType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic com.google.crypto.tink.subtle.Enums$HashType.values:()[Lcom/google/crypto/tink/subtle/Enums$HashType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic com.google.crypto.tink.subtle.Enums$HashType.SHA1:Lcom/google/crypto/tink/subtle/Enums$HashType;
            invokevirtual com.google.crypto.tink.subtle.Enums$HashType.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic com.google.crypto.tink.subtle.Enums$HashType.SHA256:Lcom/google/crypto/tink/subtle/Enums$HashType;
            invokevirtual com.google.crypto.tink.subtle.Enums$HashType.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic com.google.crypto.tink.subtle.Enums$HashType.SHA384:Lcom/google/crypto/tink/subtle/Enums$HashType;
            invokevirtual com.google.crypto.tink.subtle.Enums$HashType.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic com.google.crypto.tink.subtle.Enums$HashType.SHA512:Lcom/google/crypto/tink/subtle/Enums$HashType;
            invokevirtual com.google.crypto.tink.subtle.Enums$HashType.ordinal:()I
            iconst_4
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic com.google.crypto.tink.subtle.SubtleUtil.$SWITCH_TABLE$com$google$crypto$tink$subtle$Enums$HashType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
}
SourceFile: "SubtleUtil.java"
InnerClasses:
  public final HashType = com.google.crypto.tink.subtle.Enums$HashType of com.google.crypto.tink.subtle.Enums