class java.security.Signature$CipherAdapter extends java.security.SignatureSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: java.security.Signature$CipherAdapter
  super_class: java.security.SignatureSpi
{
  private final javax.crypto.Cipher cipher;
    descriptor: Ljavax/crypto/Cipher;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.io.ByteArrayOutputStream data;
    descriptor: Ljava/io/ByteArrayOutputStream;
    flags: (0x0002) ACC_PRIVATE

  void <init>(javax.crypto.Cipher);
    descriptor: (Ljavax/crypto/Cipher;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.security.Signature$CipherAdapter this
        start local 1 // javax.crypto.Cipher cipher
         0: .line 1443
            aload 0 /* this */
            invokespecial java.security.SignatureSpi.<init>:()V
         1: .line 1444
            aload 0 /* this */
            aload 1 /* cipher */
            putfield java.security.Signature$CipherAdapter.cipher:Ljavax/crypto/Cipher;
         2: .line 1445
            return
        end local 1 // javax.crypto.Cipher cipher
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljava/security/Signature$CipherAdapter;
            0    3     1  cipher  Ljavax/crypto/Cipher;
    MethodParameters:
        Name  Flags
      cipher  

  protected void engineInitVerify(java.security.PublicKey);
    descriptor: (Ljava/security/PublicKey;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.security.Signature$CipherAdapter this
        start local 1 // java.security.PublicKey publicKey
         0: .line 1449
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.cipher:Ljavax/crypto/Cipher;
            iconst_2
            aload 1 /* publicKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
         1: .line 1450
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.data:Ljava/io/ByteArrayOutputStream;
            ifnonnull 4
         2: .line 1451
            aload 0 /* this */
            new java.io.ByteArrayOutputStream
            dup
            sipush 128
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            putfield java.security.Signature$CipherAdapter.data:Ljava/io/ByteArrayOutputStream;
         3: .line 1452
            goto 5
         4: .line 1453
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.data:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
         5: .line 1455
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.security.PublicKey publicKey
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Ljava/security/Signature$CipherAdapter;
            0    6     1  publicKey  Ljava/security/PublicKey;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
           Name  Flags
      publicKey  

  protected void engineInitSign(java.security.PrivateKey);
    descriptor: (Ljava/security/PrivateKey;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.security.Signature$CipherAdapter this
        start local 1 // java.security.PrivateKey privateKey
         0: .line 1459
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.cipher:Ljavax/crypto/Cipher;
            iconst_1
            aload 1 /* privateKey */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;)V
         1: .line 1460
            aload 0 /* this */
            aconst_null
            putfield java.security.Signature$CipherAdapter.data:Ljava/io/ByteArrayOutputStream;
         2: .line 1461
            return
        end local 1 // java.security.PrivateKey privateKey
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Ljava/security/Signature$CipherAdapter;
            0    3     1  privateKey  Ljava/security/PrivateKey;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
            Name  Flags
      privateKey  

  protected void engineInitSign(java.security.PrivateKey, java.security.SecureRandom);
    descriptor: (Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.security.Signature$CipherAdapter this
        start local 1 // java.security.PrivateKey privateKey
        start local 2 // java.security.SecureRandom random
         0: .line 1465
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.cipher:Ljavax/crypto/Cipher;
            iconst_1
            aload 1 /* privateKey */
            aload 2 /* random */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/SecureRandom;)V
         1: .line 1466
            aload 0 /* this */
            aconst_null
            putfield java.security.Signature$CipherAdapter.data:Ljava/io/ByteArrayOutputStream;
         2: .line 1467
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.PrivateKey privateKey
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Ljava/security/Signature$CipherAdapter;
            0    3     1  privateKey  Ljava/security/PrivateKey;
            0    3     2      random  Ljava/security/SecureRandom;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
            Name  Flags
      privateKey  
      random      

  protected void engineUpdate(byte);
    descriptor: (B)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.security.Signature$CipherAdapter this
        start local 1 // byte b
         0: .line 1470
            aload 0 /* this */
            iconst_1
            newarray 8
            dup
            iconst_0
            iload 1 /* b */
            bastore
            iconst_0
            iconst_1
            invokevirtual java.security.Signature$CipherAdapter.engineUpdate:([BII)V
         1: .line 1471
            return
        end local 1 // byte b
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/security/Signature$CipherAdapter;
            0    2     1     b  B
    Exceptions:
      throws java.security.SignatureException
    MethodParameters:
      Name  Flags
      b     

  protected void engineUpdate(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // java.security.Signature$CipherAdapter this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 1475
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.data:Ljava/io/ByteArrayOutputStream;
            ifnull 3
         1: .line 1476
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.data:Ljava/io/ByteArrayOutputStream;
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
         2: .line 1477
            return
         3: .line 1479
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.cipher:Ljavax/crypto/Cipher;
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual javax.crypto.Cipher.update:([BII)[B
            astore 4 /* out */
        start local 4 // byte[] out
         4: .line 1480
            aload 4 /* out */
            ifnull 8
            aload 4 /* out */
            arraylength
            ifeq 8
         5: .line 1481
            new java.security.SignatureException
            dup
         6: .line 1482
            ldc "Cipher unexpectedly returned data"
         7: .line 1481
            invokespecial java.security.SignatureException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 1484
      StackMap locals: byte[]
      StackMap stack:
            return
        end local 4 // byte[] out
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Ljava/security/Signature$CipherAdapter;
            0    9     1     b  [B
            0    9     2   off  I
            0    9     3   len  I
            4    9     4   out  [B
    Exceptions:
      throws java.security.SignatureException
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  protected byte[] engineSign();
    descriptor: ()[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.security.Signature$CipherAdapter this
         0: .line 1488
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.cipher:Ljavax/crypto/Cipher;
            invokevirtual javax.crypto.Cipher.doFinal:()[B
         1: areturn
         2: .line 1489
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            astore 1 /* e */
        start local 1 // javax.crypto.IllegalBlockSizeException e
         3: .line 1490
            new java.security.SignatureException
            dup
            ldc "doFinal() failed"
            aload 1 /* e */
            invokespecial java.security.SignatureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // javax.crypto.IllegalBlockSizeException e
         4: .line 1491
      StackMap locals:
      StackMap stack: javax.crypto.BadPaddingException
            astore 1 /* e */
        start local 1 // javax.crypto.BadPaddingException e
         5: .line 1492
            new java.security.SignatureException
            dup
            ldc "doFinal() failed"
            aload 1 /* e */
            invokespecial java.security.SignatureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // javax.crypto.BadPaddingException e
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljava/security/Signature$CipherAdapter;
            3    4     1     e  Ljavax/crypto/IllegalBlockSizeException;
            5    6     1     e  Ljavax/crypto/BadPaddingException;
      Exception table:
        from    to  target  type
           0     1       2  Class javax.crypto.IllegalBlockSizeException
           0     1       4  Class javax.crypto.BadPaddingException
    Exceptions:
      throws java.security.SignatureException

  protected boolean engineVerify(byte[]);
    descriptor: ([B)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.security.Signature$CipherAdapter this
        start local 1 // byte[] sigBytes
         0: .line 1499
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.cipher:Ljavax/crypto/Cipher;
            aload 1 /* sigBytes */
            invokevirtual javax.crypto.Cipher.doFinal:([B)[B
            astore 2 /* out */
        start local 2 // byte[] out
         1: .line 1500
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.data:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            astore 3 /* dataBytes */
        start local 3 // byte[] dataBytes
         2: .line 1501
            aload 0 /* this */
            getfield java.security.Signature$CipherAdapter.data:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
         3: .line 1502
            aload 2 /* out */
            aload 3 /* dataBytes */
            invokestatic java.security.MessageDigest.isEqual:([B[B)Z
         4: ireturn
        end local 3 // byte[] dataBytes
        end local 2 // byte[] out
         5: .line 1503
      StackMap locals:
      StackMap stack: javax.crypto.BadPaddingException
            pop
         6: .line 1506
            iconst_0
            ireturn
         7: .line 1507
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            astore 2 /* e */
        start local 2 // javax.crypto.IllegalBlockSizeException e
         8: .line 1508
            new java.security.SignatureException
            dup
            ldc "doFinal() failed"
            aload 2 /* e */
            invokespecial java.security.SignatureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // javax.crypto.IllegalBlockSizeException e
        end local 1 // byte[] sigBytes
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Ljava/security/Signature$CipherAdapter;
            0    9     1   sigBytes  [B
            1    5     2        out  [B
            2    5     3  dataBytes  [B
            8    9     2          e  Ljavax/crypto/IllegalBlockSizeException;
      Exception table:
        from    to  target  type
           0     4       5  Class javax.crypto.BadPaddingException
           0     4       7  Class javax.crypto.IllegalBlockSizeException
    Exceptions:
      throws java.security.SignatureException
    MethodParameters:
          Name  Flags
      sigBytes  

  protected void engineSetParameter(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.security.Signature$CipherAdapter this
        start local 1 // java.lang.String param
        start local 2 // java.lang.Object value
         0: .line 1514
            new java.security.InvalidParameterException
            dup
            ldc "Parameters not supported"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String param
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Ljava/security/Signature$CipherAdapter;
            0    1     1  param  Ljava/lang/String;
            0    1     2  value  Ljava/lang/Object;
    Exceptions:
      throws java.security.InvalidParameterException
    MethodParameters:
       Name  Flags
      param  
      value  

  protected java.lang.Object engineGetParameter(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.security.Signature$CipherAdapter this
        start local 1 // java.lang.String param
         0: .line 1519
            new java.security.InvalidParameterException
            dup
            ldc "Parameters not supported"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.String param
        end local 0 // java.security.Signature$CipherAdapter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Ljava/security/Signature$CipherAdapter;
            0    1     1  param  Ljava/lang/String;
    Exceptions:
      throws java.security.InvalidParameterException
    MethodParameters:
       Name  Flags
      param  
}
SourceFile: "Signature.java"
NestHost: java.security.Signature
InnerClasses:
  private CipherAdapter = java.security.Signature$CipherAdapter of java.security.Signature