final class com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec implements com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec
super_class: java.lang.Object
{
private final java.io.ByteArrayOutputStream cipherBuf;
descriptor: Ljava/io/ByteArrayOutputStream;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final byte[] tag;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final com.sun.crypto.provider.ChaCha20Cipher this$0;
descriptor: Lcom/sun/crypto/provider/ChaCha20Cipher;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(com.sun.crypto.provider.ChaCha20Cipher);
descriptor: (Lcom/sun/crypto/provider/ChaCha20Cipher;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.this$0:Lcom/sun/crypto/provider/ChaCha20Cipher;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 1
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.initAuthenticator:()V
2: aload 1
lconst_1
putfield com.sun.crypto.provider.ChaCha20Cipher.counter:J
3: aload 0
new java.io.ByteArrayOutputStream
dup
sipush 1024
invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
putfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.cipherBuf:Ljava/io/ByteArrayOutputStream;
4: aload 0
bipush 16
newarray 8
putfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.tag:[B
5: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/sun/crypto/provider/ChaCha20Cipher$EngineAEADDec;
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
this$0 final
public int doUpdate(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.this$0:Lcom/sun/crypto/provider/ChaCha20Cipher;
getfield com.sun.crypto.provider.ChaCha20Cipher.initialized:Z
ifeq 8
1: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.this$0:Lcom/sun/crypto/provider/ChaCha20Cipher;
getfield com.sun.crypto.provider.ChaCha20Cipher.aadDone:Z
ifne 4
2: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.this$0:Lcom/sun/crypto/provider/ChaCha20Cipher;
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.this$0:Lcom/sun/crypto/provider/ChaCha20Cipher;
getfield com.sun.crypto.provider.ChaCha20Cipher.aadLen:J
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.authPad16:(J)V
3: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.this$0:Lcom/sun/crypto/provider/ChaCha20Cipher;
iconst_1
putfield com.sun.crypto.provider.ChaCha20Cipher.aadDone:Z
4: StackMap locals:
StackMap stack:
aload 1
ifnull 11
5: iload 2
iload 3
aload 1
arraylength
invokestatic java.util.Objects.checkFromIndexSize:(III)I
pop
6: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.cipherBuf:Ljava/io/ByteArrayOutputStream;
aload 1
iload 2
iload 3
invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
7: goto 11
8: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
9: ldc "Must use either a different key or iv."
10: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/sun/crypto/provider/ChaCha20Cipher$EngineAEADDec;
0 12 1 in [B
0 12 2 inOff I
0 12 3 inLen I
0 12 4 out [B
0 12 5 outOff I
MethodParameters:
Name Flags
in
inOff
inLen
out
outOff
public int doFinal(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=11, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.cipherBuf:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
ifne 5
iload 2
ifne 5
1: aload 0
aconst_null
iload 2
iload 3
aload 4
iload 5
invokevirtual com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.doUpdate:([BII[BI)I
pop
2: aload 1
astore 6
start local 6 3: iload 3
istore 7
start local 7 4: goto 8
end local 7 end local 6 5: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
iload 3
aload 4
iload 5
invokevirtual com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.doUpdate:([BII[BI)I
pop
6: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.cipherBuf:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
astore 6
start local 6 7: aload 6
arraylength
istore 7
start local 7 8: StackMap locals: byte[] int
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.cipherBuf:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.reset:()V
9: iload 7
bipush 16
if_icmpge 11
10: new javax.crypto.AEADBadTagException
dup
ldc "Input too short - need tag"
invokespecial javax.crypto.AEADBadTagException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
iload 7
bipush 16
isub
istore 8
start local 8 12: iload 5
iload 8
aload 4
arraylength
invokestatic java.util.Objects.checkFromIndexSize:(III)I
pop
13: goto 16
StackMap locals: com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec byte[] int int byte[] int byte[] int int
StackMap stack: java.lang.IndexOutOfBoundsException
14: pop
15: new javax.crypto.ShortBufferException
dup
ldc "Output buffer too small"
invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.this$0:Lcom/sun/crypto/provider/ChaCha20Cipher;
aload 6
iconst_0
iload 8
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.tag:[B
iconst_0
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.authFinalizeData:([BII[BI)V
17: getstatic com.sun.crypto.provider.ChaCha20Cipher.asLongView:Ljava/lang/invoke/VarHandle;
aload 6
iload 8
invokevirtual java.lang.invoke.VarHandle.get:([BI)J
18: getstatic com.sun.crypto.provider.ChaCha20Cipher.asLongView:Ljava/lang/invoke/VarHandle;
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.tag:[B
iconst_0
invokevirtual java.lang.invoke.VarHandle.get:([BI)J
19: lxor
20: getstatic com.sun.crypto.provider.ChaCha20Cipher.asLongView:Ljava/lang/invoke/VarHandle;
aload 6
iload 8
bipush 8
iadd
invokevirtual java.lang.invoke.VarHandle.get:([BI)J
21: getstatic com.sun.crypto.provider.ChaCha20Cipher.asLongView:Ljava/lang/invoke/VarHandle;
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.tag:[B
bipush 8
invokevirtual java.lang.invoke.VarHandle.get:([BI)J
22: lxor
23: lor
lstore 9
start local 9 24: lload 9
lconst_0
lcmp
ifeq 26
25: new javax.crypto.AEADBadTagException
dup
ldc "Tag mismatch"
invokespecial javax.crypto.AEADBadTagException.<init>:(Ljava/lang/String;)V
athrow
26: StackMap locals: long
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.this$0:Lcom/sun/crypto/provider/ChaCha20Cipher;
aload 6
iconst_0
iload 8
aload 4
iload 5
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.chaCha20Transform:([BII[BI)V
27: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.this$0:Lcom/sun/crypto/provider/ChaCha20Cipher;
iconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.aadDone:Z
28: iload 8
ireturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Lcom/sun/crypto/provider/ChaCha20Cipher$EngineAEADDec;
0 29 1 in [B
0 29 2 inOff I
0 29 3 inLen I
0 29 4 out [B
0 29 5 outOff I
3 5 6 ctPlusTag [B
7 29 6 ctPlusTag [B
4 5 7 ctPlusTagLen I
8 29 7 ctPlusTagLen I
12 29 8 ctLen I
24 29 9 tagCompare J
Exception table:
from to target type
12 13 14 Class java.lang.IndexOutOfBoundsException
Exceptions:
throws javax.crypto.ShortBufferException, javax.crypto.AEADBadTagException, java.security.KeyException
MethodParameters:
Name Flags
in
inOff
inLen
out
outOff
}
SourceFile: "ChaCha20Cipher.java"
NestHost: com.sun.crypto.provider.ChaCha20Cipher
InnerClasses:
abstract ChaChaEngine = com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine of com.sun.crypto.provider.ChaCha20Cipher
private final EngineAEADDec = com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec of com.sun.crypto.provider.ChaCha20Cipher