public class sun.security.util.SignatureUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.util.SignatureUtil
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.util.SignatureUtil this
         0: .line 42
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.security.util.SignatureUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/util/SignatureUtil;

  private static java.lang.String checkName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.lang.String algName
         0: .line 45
            aload 0 /* algName */
            ldc "."
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_m1
            if_icmpne 2
         1: .line 46
            aload 0 /* algName */
            areturn
         2: .line 50
      StackMap locals:
      StackMap stack:
            aload 0 /* algName */
            invokestatic java.security.Signature.getInstance:(Ljava/lang/String;)Ljava/security/Signature;
            invokevirtual java.security.Signature.getAlgorithm:()Ljava/lang/String;
         3: areturn
         4: .line 51
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
         5: .line 52
            new java.security.ProviderException
            dup
            ldc "Error mapping algorithm name"
            aload 1 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        end local 0 // java.lang.String algName
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0  algName  Ljava/lang/String;
            5    6     1        e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Exception
    Exceptions:
      throws java.security.ProviderException
    MethodParameters:
         Name  Flags
      algName  

  private static java.security.AlgorithmParameters createAlgorithmParameters(java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;[B)Ljava/security/AlgorithmParameters;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.String algName
        start local 1 // byte[] paramBytes
         0: .line 62
            aload 0 /* algName */
            invokestatic sun.security.util.SignatureUtil.checkName:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* algName */
         1: .line 64
            aload 0 /* algName */
            invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
         2: .line 63
            astore 2 /* result */
        start local 2 // java.security.AlgorithmParameters result
         3: .line 65
            aload 2 /* result */
            aload 1 /* paramBytes */
            invokevirtual java.security.AlgorithmParameters.init:([B)V
         4: .line 66
            aload 2 /* result */
         5: areturn
        end local 2 // java.security.AlgorithmParameters result
         6: .line 67
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         7: .line 68
            new java.security.ProviderException
            dup
            aload 2 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // byte[] paramBytes
        end local 0 // java.lang.String algName
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0     algName  Ljava/lang/String;
            0    8     1  paramBytes  [B
            3    6     2      result  Ljava/security/AlgorithmParameters;
            7    8     2           e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     5       6  Class java.security.NoSuchAlgorithmException
           0     5       6  Class java.io.IOException
    Exceptions:
      throws java.security.ProviderException
    MethodParameters:
            Name  Flags
      algName     
      paramBytes  

  public static java.security.spec.AlgorithmParameterSpec getParamSpec(java.lang.String, java.security.AlgorithmParameters);
    descriptor: (Ljava/lang/String;Ljava/security/AlgorithmParameters;)Ljava/security/spec/AlgorithmParameterSpec;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.lang.String sigName
        start local 1 // java.security.AlgorithmParameters params
         0: .line 78
            aload 0 /* sigName */
            invokestatic sun.security.util.SignatureUtil.checkName:(Ljava/lang/String;)Ljava/lang/String;
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 0 /* sigName */
         1: .line 79
            aconst_null
            astore 2 /* paramSpec */
        start local 2 // java.security.spec.AlgorithmParameterSpec paramSpec
         2: .line 80
            aload 1 /* params */
            ifnull 23
         3: .line 84
            aload 1 /* params */
            invokevirtual java.security.AlgorithmParameters.getAlgorithm:()Ljava/lang/String;
            ldc "."
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_m1
            if_icmpeq 10
         4: .line 86
            aload 0 /* sigName */
         5: .line 87
            aload 1 /* params */
            invokevirtual java.security.AlgorithmParameters.getEncoded:()[B
         6: .line 86
            invokestatic sun.security.util.SignatureUtil.createAlgorithmParameters:(Ljava/lang/String;[B)Ljava/security/AlgorithmParameters;
            astore 1 /* params */
         7: .line 88
            goto 10
      StackMap locals: java.lang.String java.security.AlgorithmParameters java.security.spec.AlgorithmParameterSpec
      StackMap stack: java.io.IOException
         8: astore 3 /* e */
        start local 3 // java.io.IOException e
         9: .line 89
            new java.security.ProviderException
            dup
            aload 3 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.IOException e
        10: .line 93
      StackMap locals:
      StackMap stack:
            aload 0 /* sigName */
            ldc "RSA"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_m1
            if_icmpeq 13
        11: .line 94
            aload 1 /* params */
            invokestatic sun.security.rsa.RSAUtil.getParamSpec:(Ljava/security/AlgorithmParameters;)Ljava/security/spec/AlgorithmParameterSpec;
            astore 2 /* paramSpec */
        12: .line 95
            goto 23
      StackMap locals:
      StackMap stack:
        13: aload 0 /* sigName */
            ldc "ECDSA"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_m1
            if_icmpeq 18
        14: .line 97
            aload 1 /* params */
            ldc Ljava/security/spec/ECParameterSpec;
            invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
            astore 2 /* paramSpec */
        15: .line 98
            goto 23
      StackMap locals:
      StackMap stack: java.lang.Exception
        16: astore 3 /* e */
        start local 3 // java.lang.Exception e
        17: .line 99
            new java.security.ProviderException
            dup
            ldc "Error handling EC parameters"
            aload 3 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
        18: .line 102
      StackMap locals:
      StackMap stack:
            new java.security.ProviderException
            dup
        19: .line 103
            new java.lang.StringBuilder
            dup
            ldc "Unrecognized algorithm for signature parameters "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        20: .line 104
            aload 0 /* sigName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 103
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        22: .line 102
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 107
      StackMap locals:
      StackMap stack:
            aload 2 /* paramSpec */
            areturn
        end local 2 // java.security.spec.AlgorithmParameterSpec paramSpec
        end local 1 // java.security.AlgorithmParameters params
        end local 0 // java.lang.String sigName
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   24     0    sigName  Ljava/lang/String;
            0   24     1     params  Ljava/security/AlgorithmParameters;
            2   24     2  paramSpec  Ljava/security/spec/AlgorithmParameterSpec;
            9   10     3          e  Ljava/io/IOException;
           17   18     3          e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           4     7       8  Class java.io.IOException
          14    15      16  Class java.lang.Exception
    Exceptions:
      throws java.security.ProviderException
    MethodParameters:
         Name  Flags
      sigName  
      params   

  public static java.security.spec.AlgorithmParameterSpec getParamSpec(java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;[B)Ljava/security/spec/AlgorithmParameterSpec;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.lang.String sigName
        start local 1 // byte[] paramBytes
         0: .line 115
            aload 0 /* sigName */
            invokestatic sun.security.util.SignatureUtil.checkName:(Ljava/lang/String;)Ljava/lang/String;
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 0 /* sigName */
         1: .line 116
            aconst_null
            astore 2 /* paramSpec */
        start local 2 // java.security.spec.AlgorithmParameterSpec paramSpec
         2: .line 118
            aload 1 /* paramBytes */
            ifnull 21
         3: .line 119
            aload 0 /* sigName */
            ldc "RSA"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_m1
            if_icmpeq 8
         4: .line 121
            aload 0 /* sigName */
            aload 1 /* paramBytes */
            invokestatic sun.security.util.SignatureUtil.createAlgorithmParameters:(Ljava/lang/String;[B)Ljava/security/AlgorithmParameters;
         5: .line 120
            astore 3 /* params */
        start local 3 // java.security.AlgorithmParameters params
         6: .line 122
            aload 3 /* params */
            invokestatic sun.security.rsa.RSAUtil.getParamSpec:(Ljava/security/AlgorithmParameters;)Ljava/security/spec/AlgorithmParameterSpec;
            astore 2 /* paramSpec */
        end local 3 // java.security.AlgorithmParameters params
         7: .line 123
            goto 21
      StackMap locals: java.security.spec.AlgorithmParameterSpec
      StackMap stack:
         8: aload 0 /* sigName */
            ldc "ECDSA"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_m1
            if_icmpeq 16
         9: .line 125
            aload 0 /* sigName */
            invokestatic java.security.Signature.getInstance:(Ljava/lang/String;)Ljava/security/Signature;
            invokevirtual java.security.Signature.getProvider:()Ljava/security/Provider;
            astore 3 /* p */
        start local 3 // java.security.Provider p
        10: .line 126
            aload 3 /* p */
            aload 1 /* paramBytes */
            invokestatic sun.security.util.ECUtil.getECParameterSpec:(Ljava/security/Provider;[B)Ljava/security/spec/ECParameterSpec;
            astore 2 /* paramSpec */
        end local 3 // java.security.Provider p
        11: .line 127
            goto 14
      StackMap locals:
      StackMap stack: java.lang.Exception
        12: astore 3 /* e */
        start local 3 // java.lang.Exception e
        13: .line 128
            new java.security.ProviderException
            dup
            ldc "Error handling EC parameters"
            aload 3 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
        14: .line 132
      StackMap locals:
      StackMap stack:
            aload 2 /* paramSpec */
            ifnonnull 21
        15: .line 133
            new java.security.ProviderException
            dup
            ldc "Error handling EC parameters"
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 136
      StackMap locals:
      StackMap stack:
            new java.security.ProviderException
            dup
        17: .line 137
            new java.lang.StringBuilder
            dup
            ldc "Unrecognized algorithm for signature parameters "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        18: .line 138
            aload 0 /* sigName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: .line 137
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 136
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 141
      StackMap locals:
      StackMap stack:
            aload 2 /* paramSpec */
            areturn
        end local 2 // java.security.spec.AlgorithmParameterSpec paramSpec
        end local 1 // byte[] paramBytes
        end local 0 // java.lang.String sigName
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   22     0     sigName  Ljava/lang/String;
            0   22     1  paramBytes  [B
            2   22     2   paramSpec  Ljava/security/spec/AlgorithmParameterSpec;
            6    7     3      params  Ljava/security/AlgorithmParameters;
           10   11     3           p  Ljava/security/Provider;
           13   14     3           e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           9    11      12  Class java.lang.Exception
    Exceptions:
      throws java.security.ProviderException
    MethodParameters:
            Name  Flags
      sigName     
      paramBytes  

  public static void initVerifyWithParam(java.security.Signature, java.security.PublicKey, java.security.spec.AlgorithmParameterSpec);
    descriptor: (Ljava/security/Signature;Ljava/security/PublicKey;Ljava/security/spec/AlgorithmParameterSpec;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.security.Signature s
        start local 1 // java.security.PublicKey key
        start local 2 // java.security.spec.AlgorithmParameterSpec params
         0: .line 150
            invokestatic jdk.internal.misc.SharedSecrets.getJavaSecuritySignatureAccess:()Ljdk/internal/misc/JavaSecuritySignatureAccess;
            aload 0 /* s */
            aload 1 /* key */
            aload 2 /* params */
            invokeinterface jdk.internal.misc.JavaSecuritySignatureAccess.initVerify:(Ljava/security/Signature;Ljava/security/PublicKey;Ljava/security/spec/AlgorithmParameterSpec;)V
         1: .line 151
            return
        end local 2 // java.security.spec.AlgorithmParameterSpec params
        end local 1 // java.security.PublicKey key
        end local 0 // java.security.Signature s
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0       s  Ljava/security/Signature;
            0    2     1     key  Ljava/security/PublicKey;
            0    2     2  params  Ljava/security/spec/AlgorithmParameterSpec;
    Exceptions:
      throws java.security.ProviderException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      s       
      key     
      params  

  public static void initVerifyWithParam(java.security.Signature, java.security.cert.Certificate, java.security.spec.AlgorithmParameterSpec);
    descriptor: (Ljava/security/Signature;Ljava/security/cert/Certificate;Ljava/security/spec/AlgorithmParameterSpec;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.security.Signature s
        start local 1 // java.security.cert.Certificate cert
        start local 2 // java.security.spec.AlgorithmParameterSpec params
         0: .line 160
            invokestatic jdk.internal.misc.SharedSecrets.getJavaSecuritySignatureAccess:()Ljdk/internal/misc/JavaSecuritySignatureAccess;
            aload 0 /* s */
            aload 1 /* cert */
            aload 2 /* params */
            invokeinterface jdk.internal.misc.JavaSecuritySignatureAccess.initVerify:(Ljava/security/Signature;Ljava/security/cert/Certificate;Ljava/security/spec/AlgorithmParameterSpec;)V
         1: .line 161
            return
        end local 2 // java.security.spec.AlgorithmParameterSpec params
        end local 1 // java.security.cert.Certificate cert
        end local 0 // java.security.Signature s
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0       s  Ljava/security/Signature;
            0    2     1    cert  Ljava/security/cert/Certificate;
            0    2     2  params  Ljava/security/spec/AlgorithmParameterSpec;
    Exceptions:
      throws java.security.ProviderException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      s       
      cert    
      params  

  public static void initSignWithParam(java.security.Signature, java.security.PrivateKey, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (Ljava/security/Signature;Ljava/security/PrivateKey;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // java.security.Signature s
        start local 1 // java.security.PrivateKey key
        start local 2 // java.security.spec.AlgorithmParameterSpec params
        start local 3 // java.security.SecureRandom sr
         0: .line 169
            invokestatic jdk.internal.misc.SharedSecrets.getJavaSecuritySignatureAccess:()Ljdk/internal/misc/JavaSecuritySignatureAccess;
            aload 0 /* s */
            aload 1 /* key */
            aload 2 /* params */
            aload 3 /* sr */
            invokeinterface jdk.internal.misc.JavaSecuritySignatureAccess.initSign:(Ljava/security/Signature;Ljava/security/PrivateKey;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         1: .line 170
            return
        end local 3 // java.security.SecureRandom sr
        end local 2 // java.security.spec.AlgorithmParameterSpec params
        end local 1 // java.security.PrivateKey key
        end local 0 // java.security.Signature s
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0       s  Ljava/security/Signature;
            0    2     1     key  Ljava/security/PrivateKey;
            0    2     2  params  Ljava/security/spec/AlgorithmParameterSpec;
            0    2     3      sr  Ljava/security/SecureRandom;
    Exceptions:
      throws java.security.ProviderException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      s       
      key     
      params  
      sr      
}
SourceFile: "SignatureUtil.java"