abstract class com.sun.crypto.provider.ChaCha20Cipher extends javax.crypto.CipherSpi
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: com.sun.crypto.provider.ChaCha20Cipher
super_class: javax.crypto.CipherSpi
{
private static final int MODE_NONE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int MODE_AEAD;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int STATE_CONST_0;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1634760805
private static final int STATE_CONST_1;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 857760878
private static final int STATE_CONST_2;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2036477234
private static final int STATE_CONST_3;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1797285236
private static final int KEYSTREAM_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 64
private static final int KS_SIZE_INTS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16
private static final int CIPHERBUF_BASE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1024
private boolean initialized;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
protected int mode;
descriptor: I
flags: (0x0004) ACC_PROTECTED
private int direction;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean aadDone;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private byte[] keyBytes;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] nonce;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private static final long MAX_UINT32;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4294967295
private long finalCounterValue;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long counter;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private final int[] startState;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final byte[] keyStream;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private int keyStrOffset;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private static final int TAG_LENGTH;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16
private long aadLen;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long dataLen;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private static final byte[] padBuf;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final byte[] lenBuf;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
protected java.lang.String authAlgName;
descriptor: Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
private com.sun.crypto.provider.Poly1305 authenticator;
descriptor: Lcom/sun/crypto/provider/Poly1305;
flags: (0x0002) ACC_PRIVATE
private com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine engine;
descriptor: Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
flags: (0x0002) ACC_PRIVATE
private static final java.lang.invoke.VarHandle asIntLittleEndian;
descriptor: Ljava/lang/invoke/VarHandle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.invoke.VarHandle asLongLittleEndian;
descriptor: Ljava/lang/invoke/VarHandle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.invoke.VarHandle asLongView;
descriptor: Ljava/lang/invoke/VarHandle;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: bipush 16
newarray 8
putstatic com.sun.crypto.provider.ChaCha20Cipher.padBuf:[B
1: ldc [I
2: getstatic java.nio.ByteOrder.LITTLE_ENDIAN:Ljava/nio/ByteOrder;
3: invokestatic java.lang.invoke.MethodHandles.byteArrayViewVarHandle:(Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
4: putstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
5: ldc [J
6: getstatic java.nio.ByteOrder.LITTLE_ENDIAN:Ljava/nio/ByteOrder;
7: invokestatic java.lang.invoke.MethodHandles.byteArrayViewVarHandle:(Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
8: putstatic com.sun.crypto.provider.ChaCha20Cipher.asLongLittleEndian:Ljava/lang/invoke/VarHandle;
9: ldc [J
10: invokestatic java.nio.ByteOrder.nativeOrder:()Ljava/nio/ByteOrder;
11: invokestatic java.lang.invoke.MethodHandles.byteArrayViewVarHandle:(Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle;
12: putstatic com.sun.crypto.provider.ChaCha20Cipher.asLongView:Ljava/lang/invoke/VarHandle;
13: return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial javax.crypto.CipherSpi.<init>:()V
1: aload 0
iconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.aadDone:Z
2: aload 0
bipush 16
newarray 10
putfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
3: aload 0
bipush 64
newarray 8
putfield com.sun.crypto.provider.ChaCha20Cipher.keyStream:[B
4: aload 0
bipush 16
newarray 8
putfield com.sun.crypto.provider.ChaCha20Cipher.lenBuf:[B
5: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
protected void engineSetMode(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "None"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 2
1: new java.security.NoSuchAlgorithmException
dup
ldc "Mode must be None"
invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 3 1 mode Ljava/lang/String;
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
mode
protected void engineSetPadding(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "NoPadding"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 2
1: new javax.crypto.NoSuchPaddingException
dup
ldc "Padding must be NoPadding"
invokespecial javax.crypto.NoSuchPaddingException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 3 1 padding Ljava/lang/String;
Exceptions:
throws javax.crypto.NoSuchPaddingException
MethodParameters:
Name Flags
padding
protected int engineGetBlockSize();
descriptor: ()I
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
protected int engineGetOutputSize(int);
descriptor: (I)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
iload 1
iconst_1
invokeinterface com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine.getOutputSize:(IZ)I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 1 1 inputLen I
MethodParameters:
Name Flags
inputLen
protected byte[] engineGetIV();
descriptor: ()[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.nonce:[B
invokevirtual byte[].clone:()Ljava/lang/Object;
checkcast byte[]
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
protected java.security.AlgorithmParameters engineGetParameters();
descriptor: ()Ljava/security/AlgorithmParameters;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=3, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.mode:I
iconst_1
if_icmpne 9
2: ldc "ChaCha20-Poly1305"
invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
astore 1
3: aload 1
new sun.security.util.DerValue
dup
4: iconst_4
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.nonce:[B
invokespecial sun.security.util.DerValue.<init>:(B[B)V
invokevirtual sun.security.util.DerValue.toByteArray:()[B
5: invokevirtual java.security.AlgorithmParameters.init:([B)V
6: goto 9
StackMap locals: com.sun.crypto.provider.ChaCha20Cipher java.security.AlgorithmParameters
StackMap stack: java.lang.Exception
7: astore 2
start local 2 8: new java.lang.RuntimeException
dup
aload 2
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 9: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
1 10 1 params Ljava/security/AlgorithmParameters;
8 9 2 exc Ljava/lang/Exception;
Exception table:
from to target type
2 6 7 Class java.security.NoSuchAlgorithmException
2 6 7 Class java.io.IOException
protected void engineInit(int, java.security.Key, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/SecureRandom;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
iconst_2
if_icmpeq 5
1: aload 0
aload 3
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.createRandomNonce:(Ljava/security/SecureRandom;)[B
astore 4
start local 4 2: aload 0
lconst_1
putfield com.sun.crypto.provider.ChaCha20Cipher.counter:J
3: aload 0
iload 1
aload 2
aload 4
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.init:(ILjava/security/Key;[B)V
end local 4 4: goto 6
5: StackMap locals:
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "Default parameter generation disallowed in DECRYPT and UNWRAP modes"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 7 1 opmode I
0 7 2 key Ljava/security/Key;
0 7 3 random Ljava/security/SecureRandom;
2 4 4 newNonce [B
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
opmode
key
random
protected void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
ifnonnull 3
1: aload 0
iload 1
aload 2
aload 4
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.engineInit:(ILjava/security/Key;Ljava/security/SecureRandom;)V
2: return
3: StackMap locals:
StackMap stack:
aconst_null
astore 5
start local 5 4: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.mode:I
tableswitch { // 0 - 1
0: 5
1: 13
default: 23
}
5: StackMap locals: byte[]
StackMap stack:
aload 3
instanceof javax.crypto.spec.ChaCha20ParameterSpec
ifne 9
6: new java.security.InvalidAlgorithmParameterException
dup
7: ldc "ChaCha20 algorithm requires ChaCha20ParameterSpec"
8: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
aload 3
checkcast javax.crypto.spec.ChaCha20ParameterSpec
astore 6
start local 6 10: aload 6
invokevirtual javax.crypto.spec.ChaCha20ParameterSpec.getNonce:()[B
astore 5
11: aload 0
aload 6
invokevirtual javax.crypto.spec.ChaCha20ParameterSpec.getCounter:()I
i2l
ldc 4294967295
land
putfield com.sun.crypto.provider.ChaCha20Cipher.counter:J
12: goto 24
end local 6 13: StackMap locals:
StackMap stack:
aload 3
instanceof javax.crypto.spec.IvParameterSpec
ifne 17
14: new java.security.InvalidAlgorithmParameterException
dup
15: ldc "ChaCha20-Poly1305 requires IvParameterSpec"
16: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
17: StackMap locals:
StackMap stack:
aload 3
checkcast javax.crypto.spec.IvParameterSpec
astore 7
start local 7 18: aload 7
invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
astore 5
19: aload 5
arraylength
bipush 12
if_icmpeq 24
20: new java.security.InvalidAlgorithmParameterException
dup
21: ldc "ChaCha20-Poly1305 nonce must be 12 bytes in length"
22: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
end local 7 23: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
ldc "ChaCha20 in unsupported mode"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
24: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 2
aload 5
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.init:(ILjava/security/Key;[B)V
25: return
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 26 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 26 1 opmode I
0 26 2 key Ljava/security/Key;
0 26 3 params Ljava/security/spec/AlgorithmParameterSpec;
0 26 4 random Ljava/security/SecureRandom;
4 26 5 newNonce [B
10 13 6 chaParams Ljavax/crypto/spec/ChaCha20ParameterSpec;
18 23 7 ivParams Ljavax/crypto/spec/IvParameterSpec;
Exceptions:
throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
opmode
key
params
random
protected void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
ifnonnull 3
1: aload 0
iload 1
aload 2
aload 4
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.engineInit:(ILjava/security/Key;Ljava/security/SecureRandom;)V
2: return
3: StackMap locals:
StackMap stack:
aconst_null
astore 5
start local 5 4: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.mode:I
tableswitch { // 0 - 1
0: 5
1: 8
default: 21
}
5: StackMap locals: byte[]
StackMap stack:
new java.security.InvalidAlgorithmParameterException
dup
6: ldc "AlgorithmParameters not supported"
7: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.security.AlgorithmParameters.getAlgorithm:()Ljava/lang/String;
astore 6
start local 6 9: aload 6
ldc "ChaCha20-Poly1305"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 13
10: new java.security.InvalidAlgorithmParameterException
dup
11: new java.lang.StringBuilder
dup
ldc "Invalid parameter type: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
12: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals: java.lang.String
StackMap stack:
new sun.security.util.DerValue
dup
aload 3
invokevirtual java.security.AlgorithmParameters.getEncoded:()[B
invokespecial sun.security.util.DerValue.<init>:([B)V
astore 7
start local 7 14: aload 7
invokevirtual sun.security.util.DerValue.getOctetString:()[B
astore 5
15: aload 5
arraylength
bipush 12
if_icmpeq 22
16: new java.security.InvalidAlgorithmParameterException
dup
17: ldc "ChaCha20-Poly1305 nonce must be 12 bytes in length"
18: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
end local 7 19: StackMap locals:
StackMap stack: java.io.IOException
astore 7
start local 7 20: new java.security.InvalidAlgorithmParameterException
dup
aload 7
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 7 end local 6 21: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Invalid mode: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.mode:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
22: StackMap locals:
StackMap stack:
aload 5
ifnonnull 24
23: aload 0
aload 4
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.createRandomNonce:(Ljava/security/SecureRandom;)[B
astore 5
24: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 2
aload 5
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.init:(ILjava/security/Key;[B)V
25: return
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 26 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 26 1 opmode I
0 26 2 key Ljava/security/Key;
0 26 3 params Ljava/security/AlgorithmParameters;
0 26 4 random Ljava/security/SecureRandom;
4 26 5 newNonce [B
9 21 6 paramAlg Ljava/lang/String;
14 19 7 dv Lsun/security/util/DerValue;
20 21 7 ioe Ljava/io/IOException;
Exception table:
from to target type
13 19 19 Class java.io.IOException
Exceptions:
throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
opmode
key
params
random
protected void engineUpdateAAD(byte[], int, int);
descriptor: ([BII)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.initialized:Z
ifne 4
1: new java.lang.IllegalStateException
dup
2: ldc "Attempted to update AAD on uninitialized Cipher"
3: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.aadDone:Z
ifeq 6
5: new java.lang.IllegalStateException
dup
ldc "Attempted to update AAD on Cipher after plaintext/ciphertext update"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.mode:I
iconst_1
if_icmpeq 10
7: new java.lang.IllegalStateException
dup
8: ldc "Cipher is running in non-AEAD mode"
9: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.aadLen:J
iload 3
i2l
invokestatic java.lang.Math.addExact:(JJ)J
putfield com.sun.crypto.provider.ChaCha20Cipher.aadLen:J
11: aload 0
aload 1
iload 2
iload 3
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.authUpdate:([BII)I
pop
12: goto 15
StackMap locals:
StackMap stack: java.lang.ArithmeticException
13: astore 4
start local 4 14: new java.lang.IllegalStateException
dup
ldc "AAD overflow"
aload 4
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 15: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 16 1 src [B
0 16 2 offset I
0 16 3 len I
14 15 4 ae Ljava/lang/ArithmeticException;
Exception table:
from to target type
10 12 13 Class java.lang.ArithmeticException
MethodParameters:
Name Flags
src
offset
len
protected void engineUpdateAAD(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.initialized:Z
ifne 4
1: new java.lang.IllegalStateException
dup
2: ldc "Attempted to update AAD on uninitialized Cipher"
3: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.aadDone:Z
ifeq 6
5: new java.lang.IllegalStateException
dup
ldc "Attempted to update AAD on Cipher after plaintext/ciphertext update"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.mode:I
iconst_1
if_icmpeq 10
7: new java.lang.IllegalStateException
dup
8: ldc "Cipher is running in non-AEAD mode"
9: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.aadLen:J
aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
isub
i2l
invokestatic java.lang.Math.addExact:(JJ)J
putfield com.sun.crypto.provider.ChaCha20Cipher.aadLen:J
11: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.authenticator:Lcom/sun/crypto/provider/Poly1305;
aload 1
invokevirtual com.sun.crypto.provider.Poly1305.engineUpdate:(Ljava/nio/ByteBuffer;)V
12: goto 15
StackMap locals:
StackMap stack: java.lang.ArithmeticException
13: astore 2
start local 2 14: new java.lang.IllegalStateException
dup
ldc "AAD overflow"
aload 2
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 15: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 16 1 src Ljava/nio/ByteBuffer;
14 15 2 ae Ljava/lang/ArithmeticException;
Exception table:
from to target type
10 12 13 Class java.lang.ArithmeticException
MethodParameters:
Name Flags
src
private byte[] createRandomNonce(java.security.SecureRandom);
descriptor: (Ljava/security/SecureRandom;)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: bipush 12
newarray 8
astore 2
start local 2 1: aload 1
ifnull 2
aload 1
goto 3
StackMap locals: byte[]
StackMap stack:
2: new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
StackMap locals:
StackMap stack: java.security.SecureRandom
3: astore 3
start local 3 4: aload 3
aload 2
invokevirtual java.security.SecureRandom.nextBytes:([B)V
5: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 6 1 random Ljava/security/SecureRandom;
1 6 2 newNonce [B
4 6 3 rand Ljava/security/SecureRandom;
MethodParameters:
Name Flags
random
private void init(int, java.security.Key, byte[]);
descriptor: (ILjava/security/Key;[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
iconst_3
if_icmpeq 1
iload 1
iconst_4
if_icmpne 4
1: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
2: ldc "WRAP_MODE and UNWRAP_MODE are not currently supported"
3: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
iload 1
iconst_1
if_icmpeq 7
5: iload 1
iconst_2
if_icmpeq 7
6: new java.security.InvalidKeyException
dup
new java.lang.StringBuilder
dup
ldc "Unknown opmode: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
aload 2
invokestatic com.sun.crypto.provider.ChaCha20Cipher.getEncodedKey:(Ljava/security/Key;)[B
astore 4
start local 4 8: aload 0
aload 4
aload 3
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.checkKeyAndNonce:([B[B)V
9: aload 0
aload 4
putfield com.sun.crypto.provider.ChaCha20Cipher.keyBytes:[B
10: aload 0
aload 3
putfield com.sun.crypto.provider.ChaCha20Cipher.nonce:[B
11: aload 0
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.setInitialState:()V
12: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.mode:I
ifne 15
13: aload 0
new com.sun.crypto.provider.ChaCha20Cipher$EngineStreamOnly
dup
aload 0
invokespecial com.sun.crypto.provider.ChaCha20Cipher$EngineStreamOnly.<init>:(Lcom/sun/crypto/provider/ChaCha20Cipher;)V
putfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
14: goto 23
StackMap locals: byte[]
StackMap stack:
15: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.mode:I
iconst_1
if_icmpne 23
16: iload 1
iconst_1
if_icmpne 19
17: aload 0
new com.sun.crypto.provider.ChaCha20Cipher$EngineAEADEnc
dup
aload 0
invokespecial com.sun.crypto.provider.ChaCha20Cipher$EngineAEADEnc.<init>:(Lcom/sun/crypto/provider/ChaCha20Cipher;)V
putfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
18: goto 23
StackMap locals:
StackMap stack:
19: iload 1
iconst_2
if_icmpne 22
20: aload 0
new com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec
dup
aload 0
invokespecial com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec.<init>:(Lcom/sun/crypto/provider/ChaCha20Cipher;)V
putfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
21: goto 23
22: StackMap locals:
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "Not encrypt or decrypt mode"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
23: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.counter:J
ldc 4294967295
ladd
putfield com.sun.crypto.provider.ChaCha20Cipher.finalCounterValue:J
24: aload 0
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.generateKeystream:()V
25: aload 0
iload 1
putfield com.sun.crypto.provider.ChaCha20Cipher.direction:I
26: aload 0
iconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.aadDone:Z
27: aload 0
iconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.keyStrOffset:I
28: aload 0
iconst_1
putfield com.sun.crypto.provider.ChaCha20Cipher.initialized:Z
29: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 30 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 30 1 opmode I
0 30 2 key Ljava/security/Key;
0 30 3 newNonce [B
8 30 4 newKeyBytes [B
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
opmode
key
newNonce
private void checkKeyAndNonce(byte[], byte[]);
descriptor: ([B[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyBytes:[B
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ifeq 5
1: aload 2
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.nonce:[B
invokestatic java.security.MessageDigest.isEqual:([B[B)Z
ifeq 5
2: new java.security.InvalidKeyException
dup
3: ldc "Matching key and nonce from previous initialization"
4: invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 6 1 newKeyBytes [B
0 6 2 newNonce [B
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
newKeyBytes
newNonce
private static byte[] getEncodedKey(java.security.Key);
descriptor: (Ljava/security/Key;)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: ldc "RAW"
aload 0
invokeinterface java.security.Key.getFormat:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 2
1: new java.security.InvalidKeyException
dup
ldc "Key encoding format must be RAW"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokeinterface java.security.Key.getEncoded:()[B
astore 1
start local 1 3: aload 1
ifnull 4
aload 1
arraylength
bipush 32
if_icmpeq 5
4: StackMap locals: byte[]
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "Key length must be 256 bits"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 key Ljava/security/Key;
3 6 1 encodedKey [B
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
key
protected byte[] engineUpdate(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
iload 3
iconst_0
invokeinterface com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine.getOutputSize:(IZ)I
newarray 8
astore 4
start local 4 1: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
aload 1
iload 2
iload 3
aload 4
iconst_0
invokeinterface com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine.doUpdate:([BII[BI)I
pop
2: goto 5
StackMap locals: com.sun.crypto.provider.ChaCha20Cipher byte[] int int byte[]
StackMap stack: java.security.GeneralSecurityException
3: astore 5
start local 5 4: new java.lang.RuntimeException
dup
aload 5
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 5 5: StackMap locals:
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 6 1 in [B
0 6 2 inOfs I
0 6 3 inLen I
1 6 4 out [B
4 5 5 exc Ljava/security/GeneralSecurityException;
Exception table:
from to target type
1 2 3 Class javax.crypto.ShortBufferException
1 2 3 Class java.security.KeyException
MethodParameters:
Name Flags
in
inOfs
inLen
protected int engineUpdate(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=8, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: iconst_0
istore 6
start local 6 1: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
aload 1
iload 2
iload 3
aload 4
iload 5
invokeinterface com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine.doUpdate:([BII[BI)I
istore 6
2: goto 5
StackMap locals: com.sun.crypto.provider.ChaCha20Cipher byte[] int int byte[] int int
StackMap stack: java.security.KeyException
3: astore 7
start local 7 4: new java.lang.RuntimeException
dup
aload 7
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 7 5: StackMap locals:
StackMap stack:
iload 6
ireturn
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 6 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 6 1 in [B
0 6 2 inOfs I
0 6 3 inLen I
0 6 4 out [B
0 6 5 outOfs I
1 6 6 bytesUpdated I
4 5 7 ke Ljava/security/KeyException;
Exception table:
from to target type
1 2 3 Class java.security.KeyException
Exceptions:
throws javax.crypto.ShortBufferException
MethodParameters:
Name Flags
in
inOfs
inLen
out
outOfs
protected byte[] engineDoFinal(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
iload 3
iconst_1
invokeinterface com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine.getOutputSize:(IZ)I
newarray 8
astore 4
start local 4 1: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
aload 1
iload 2
iload 3
aload 4
iconst_0
invokeinterface com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine.doFinal:([BII[BI)I
pop
2: goto 8
StackMap locals: com.sun.crypto.provider.ChaCha20Cipher byte[] int int byte[]
StackMap stack: java.security.GeneralSecurityException
3: astore 5
start local 5 4: new java.lang.RuntimeException
dup
aload 5
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 5 5: StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
6: aload 0
iconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.initialized:Z
7: aload 6
athrow
8: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.initialized:Z
9: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 10 1 in [B
0 10 2 inOfs I
0 10 3 inLen I
1 10 4 output [B
4 5 5 exc Ljava/security/GeneralSecurityException;
Exception table:
from to target type
1 2 3 Class javax.crypto.ShortBufferException
1 2 3 Class java.security.KeyException
1 5 5 any
Exceptions:
throws javax.crypto.AEADBadTagException
MethodParameters:
Name Flags
in
inOfs
inLen
protected int engineDoFinal(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=9, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: iconst_0
istore 6
start local 6 1: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.engine:Lcom/sun/crypto/provider/ChaCha20Cipher$ChaChaEngine;
aload 1
iload 2
iload 3
aload 4
iload 5
invokeinterface com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine.doFinal:([BII[BI)I
istore 6
2: goto 8
StackMap locals: com.sun.crypto.provider.ChaCha20Cipher byte[] int int byte[] int int
StackMap stack: java.security.KeyException
3: astore 7
start local 7 4: new java.lang.RuntimeException
dup
aload 7
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 7 5: StackMap locals:
StackMap stack: java.lang.Throwable
astore 8
6: aload 0
iconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.initialized:Z
7: aload 8
athrow
8: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.initialized:Z
9: iload 6
ireturn
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 10 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 10 1 in [B
0 10 2 inOfs I
0 10 3 inLen I
0 10 4 out [B
0 10 5 outOfs I
1 10 6 bytesUpdated I
4 5 7 ke Ljava/security/KeyException;
Exception table:
from to target type
1 2 3 Class java.security.KeyException
1 5 5 any
Exceptions:
throws javax.crypto.ShortBufferException, javax.crypto.AEADBadTagException
MethodParameters:
Name Flags
in
inOfs
inLen
out
outOfs
protected byte[] engineWrap(java.security.Key);
descriptor: (Ljava/security/Key;)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: new java.lang.UnsupportedOperationException
dup
1: ldc "Wrap operations are not supported"
2: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 3 1 key Ljava/security/Key;
Exceptions:
throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException
MethodParameters:
Name Flags
key
protected java.security.Key engineUnwrap(byte[], java.lang.String, int);
descriptor: ([BLjava/lang/String;I)Ljava/security/Key;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.lang.UnsupportedOperationException
dup
1: ldc "Unwrap operations are not supported"
2: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 3 1 wrappedKey [B
0 3 2 algorithm Ljava/lang/String;
0 3 3 type I
Exceptions:
throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
wrappedKey
algorithm
type
protected int engineGetKeySize(java.security.Key);
descriptor: (Ljava/security/Key;)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokestatic com.sun.crypto.provider.ChaCha20Cipher.getEncodedKey:(Ljava/security/Key;)[B
astore 2
start local 2 1: aload 2
arraylength
iconst_3
ishl
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 2 1 key Ljava/security/Key;
1 2 2 encodedKey [B
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
key
private void setInitialState();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=2, args_size=1
start local 0 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
iconst_0
ldc 1634760805
iastore
1: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
iconst_1
ldc 857760878
iastore
2: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
iconst_2
ldc 2036477234
iastore
3: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
iconst_3
ldc 1797285236
iastore
4: iconst_0
istore 1
start local 1 5: goto 12
6: StackMap locals: int
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
iload 1
iconst_4
idiv
iconst_4
iadd
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyBytes:[B
iload 1
baload
sipush 255
iand
7: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyBytes:[B
iload 1
iconst_1
iadd
baload
bipush 8
ishl
ldc 65280
iand
ior
8: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyBytes:[B
iload 1
iconst_2
iadd
baload
bipush 16
ishl
ldc 16711680
iand
ior
9: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyBytes:[B
iload 1
iconst_3
iadd
baload
bipush 24
ishl
ldc -16777216
iand
ior
10: iastore
11: iinc 1 4
StackMap locals:
StackMap stack:
12: iload 1
bipush 32
if_icmplt 6
end local 1 13: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
bipush 12
iconst_0
iastore
14: iconst_0
istore 1
start local 1 15: goto 22
16: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
iload 1
iconst_4
idiv
bipush 13
iadd
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.nonce:[B
iload 1
baload
sipush 255
iand
17: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.nonce:[B
iload 1
iconst_1
iadd
baload
bipush 8
ishl
ldc 65280
iand
ior
18: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.nonce:[B
iload 1
iconst_2
iadd
baload
bipush 16
ishl
ldc 16711680
iand
ior
19: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.nonce:[B
iload 1
iconst_3
iadd
baload
bipush 24
ishl
ldc -16777216
iand
ior
20: iastore
21: iinc 1 4
StackMap locals:
StackMap stack:
22: iload 1
bipush 12
if_icmplt 16
end local 1 23: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
5 13 1 i I
15 23 1 i I
Exceptions:
throws java.security.InvalidKeyException
private void generateKeystream();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.counter:J
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyStream:[B
invokestatic com.sun.crypto.provider.ChaCha20Cipher.chaCha20Block:([IJ[B)V
1: aload 0
dup
getfield com.sun.crypto.provider.ChaCha20Cipher.counter:J
lconst_1
ladd
putfield com.sun.crypto.provider.ChaCha20Cipher.counter:J
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
private static void chaCha20Block(int[], long, byte[]);
descriptor: ([IJ[B)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=21, args_size=3
start local 0 start local 1 start local 3 0: ldc 1634760805
istore 4
start local 4 1: ldc 857760878
istore 5
start local 5 2: ldc 2036477234
istore 6
start local 6 3: ldc 1797285236
istore 7
start local 7 4: aload 0
iconst_4
iaload
istore 8
start local 8 5: aload 0
iconst_5
iaload
istore 9
start local 9 6: aload 0
bipush 6
iaload
istore 10
start local 10 7: aload 0
bipush 7
iaload
istore 11
start local 11 8: aload 0
bipush 8
iaload
istore 12
start local 12 9: aload 0
bipush 9
iaload
istore 13
start local 13 10: aload 0
bipush 10
iaload
istore 14
start local 14 11: aload 0
bipush 11
iaload
istore 15
start local 15 12: lload 1
l2i
istore 16
start local 16 13: aload 0
bipush 13
iaload
istore 17
start local 17 14: aload 0
bipush 14
iaload
istore 18
start local 18 15: aload 0
bipush 15
iaload
istore 19
start local 19 16: iconst_0
istore 20
start local 20 17: goto 83
18: StackMap locals: int[] long byte[] int int int int int int int int int int int int int int int int int
StackMap stack:
iload 4
iload 8
iadd
istore 4
19: iload 16
iload 4
ixor
bipush 16
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 16
20: iload 12
iload 16
iadd
istore 12
21: iload 8
iload 12
ixor
bipush 12
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 8
22: iload 4
iload 8
iadd
istore 4
23: iload 16
iload 4
ixor
bipush 8
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 16
24: iload 12
iload 16
iadd
istore 12
25: iload 8
iload 12
ixor
bipush 7
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 8
26: iload 5
iload 9
iadd
istore 5
27: iload 17
iload 5
ixor
bipush 16
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 17
28: iload 13
iload 17
iadd
istore 13
29: iload 9
iload 13
ixor
bipush 12
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 9
30: iload 5
iload 9
iadd
istore 5
31: iload 17
iload 5
ixor
bipush 8
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 17
32: iload 13
iload 17
iadd
istore 13
33: iload 9
iload 13
ixor
bipush 7
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 9
34: iload 6
iload 10
iadd
istore 6
35: iload 18
iload 6
ixor
bipush 16
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 18
36: iload 14
iload 18
iadd
istore 14
37: iload 10
iload 14
ixor
bipush 12
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 10
38: iload 6
iload 10
iadd
istore 6
39: iload 18
iload 6
ixor
bipush 8
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 18
40: iload 14
iload 18
iadd
istore 14
41: iload 10
iload 14
ixor
bipush 7
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 10
42: iload 7
iload 11
iadd
istore 7
43: iload 19
iload 7
ixor
bipush 16
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 19
44: iload 15
iload 19
iadd
istore 15
45: iload 11
iload 15
ixor
bipush 12
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 11
46: iload 7
iload 11
iadd
istore 7
47: iload 19
iload 7
ixor
bipush 8
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 19
48: iload 15
iload 19
iadd
istore 15
49: iload 11
iload 15
ixor
bipush 7
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 11
50: iload 4
iload 9
iadd
istore 4
51: iload 19
iload 4
ixor
bipush 16
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 19
52: iload 14
iload 19
iadd
istore 14
53: iload 9
iload 14
ixor
bipush 12
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 9
54: iload 4
iload 9
iadd
istore 4
55: iload 19
iload 4
ixor
bipush 8
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 19
56: iload 14
iload 19
iadd
istore 14
57: iload 9
iload 14
ixor
bipush 7
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 9
58: iload 5
iload 10
iadd
istore 5
59: iload 16
iload 5
ixor
bipush 16
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 16
60: iload 15
iload 16
iadd
istore 15
61: iload 10
iload 15
ixor
bipush 12
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 10
62: iload 5
iload 10
iadd
istore 5
63: iload 16
iload 5
ixor
bipush 8
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 16
64: iload 15
iload 16
iadd
istore 15
65: iload 10
iload 15
ixor
bipush 7
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 10
66: iload 6
iload 11
iadd
istore 6
67: iload 17
iload 6
ixor
bipush 16
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 17
68: iload 12
iload 17
iadd
istore 12
69: iload 11
iload 12
ixor
bipush 12
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 11
70: iload 6
iload 11
iadd
istore 6
71: iload 17
iload 6
ixor
bipush 8
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 17
72: iload 12
iload 17
iadd
istore 12
73: iload 11
iload 12
ixor
bipush 7
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 11
74: iload 7
iload 8
iadd
istore 7
75: iload 18
iload 7
ixor
bipush 16
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 18
76: iload 13
iload 18
iadd
istore 13
77: iload 8
iload 13
ixor
bipush 12
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 8
78: iload 7
iload 8
iadd
istore 7
79: iload 18
iload 7
ixor
bipush 8
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 18
80: iload 13
iload 18
iadd
istore 13
81: iload 8
iload 13
ixor
bipush 7
invokestatic java.lang.Integer.rotateLeft:(II)I
istore 8
82: iinc 20 1
StackMap locals:
StackMap stack:
83: iload 20
bipush 10
if_icmplt 18
end local 20 84: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
iconst_0
iload 4
ldc 1634760805
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
85: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
iconst_4
iload 5
ldc 857760878
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
86: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 8
iload 6
ldc 2036477234
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
87: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 12
iload 7
ldc 1797285236
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
88: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 16
iload 8
aload 0
iconst_4
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
89: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 20
iload 9
aload 0
iconst_5
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
90: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 24
iload 10
aload 0
bipush 6
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
91: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 28
iload 11
aload 0
bipush 7
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
92: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 32
iload 12
aload 0
bipush 8
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
93: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 36
iload 13
aload 0
bipush 9
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
94: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 40
iload 14
aload 0
bipush 10
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
95: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 44
iload 15
aload 0
bipush 11
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
96: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 48
iload 16
lload 1
l2i
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
97: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 52
iload 17
aload 0
bipush 13
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
98: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 56
iload 18
aload 0
bipush 14
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
99: getstatic com.sun.crypto.provider.ChaCha20Cipher.asIntLittleEndian:Ljava/lang/invoke/VarHandle;
aload 3
bipush 60
iload 19
aload 0
bipush 15
iaload
iadd
invokevirtual java.lang.invoke.VarHandle.set:([BII)V
100: return
end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 101 0 initState [I
0 101 1 counter J
0 101 3 result [B
1 101 4 ws00 I
2 101 5 ws01 I
3 101 6 ws02 I
4 101 7 ws03 I
5 101 8 ws04 I
6 101 9 ws05 I
7 101 10 ws06 I
8 101 11 ws07 I
9 101 12 ws08 I
10 101 13 ws09 I
11 101 14 ws10 I
12 101 15 ws11 I
13 101 16 ws12 I
14 101 17 ws13 I
15 101 18 ws14 I
16 101 19 ws15 I
17 84 20 round I
MethodParameters:
Name Flags
initState
counter
result
private void chaCha20Transform(byte[], int, int, byte[], int);
descriptor: ([BII[BI)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=9, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: iload 3
istore 6
start local 6 1: goto 16
2: StackMap locals: int
StackMap stack:
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyStream:[B
arraylength
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyStrOffset:I
isub
istore 7
start local 7 3: iload 7
ifgt 10
4: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.counter:J
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.finalCounterValue:J
lcmp
ifgt 9
5: aload 0
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.generateKeystream:()V
6: aload 0
iconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.keyStrOffset:I
7: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyStream:[B
arraylength
istore 7
8: goto 10
9: StackMap locals: int
StackMap stack:
new java.security.KeyException
dup
ldc "Counter exhausted. Reinitialize with new key and/or nonce"
invokespecial java.security.KeyException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
iload 6
iload 7
invokestatic java.lang.Math.min:(II)I
istore 8
start local 8 11: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyStream:[B
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.keyStrOffset:I
aload 1
iload 2
aload 4
iload 5
iload 8
invokestatic com.sun.crypto.provider.ChaCha20Cipher.xor:([BI[BI[BII)V
12: iload 5
iload 8
iadd
istore 5
13: iload 2
iload 8
iadd
istore 2
14: aload 0
dup
getfield com.sun.crypto.provider.ChaCha20Cipher.keyStrOffset:I
iload 8
iadd
putfield com.sun.crypto.provider.ChaCha20Cipher.keyStrOffset:I
15: iload 6
iload 8
isub
istore 6
end local 8 end local 7 16: StackMap locals:
StackMap stack:
iload 6
ifgt 2
17: return
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 18 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 18 1 in [B
0 18 2 inOff I
0 18 3 inLen I
0 18 4 out [B
0 18 5 outOff I
1 18 6 remainingData I
3 16 7 ksRemain I
11 16 8 xformLen I
Exceptions:
throws java.security.KeyException
MethodParameters:
Name Flags
in
inOff
inLen
out
outOff
private static void xor(byte[], int, byte[], int, byte[], int, int);
descriptor: ([BI[BI[BII)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=11, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: goto 8
1: StackMap locals:
StackMap stack:
getstatic com.sun.crypto.provider.ChaCha20Cipher.asLongView:Ljava/lang/invoke/VarHandle;
aload 0
iload 1
invokevirtual java.lang.invoke.VarHandle.get:([BI)J
lstore 7
start local 7 2: getstatic com.sun.crypto.provider.ChaCha20Cipher.asLongView:Ljava/lang/invoke/VarHandle;
aload 2
iload 3
invokevirtual java.lang.invoke.VarHandle.get:([BI)J
lstore 9
start local 9 3: getstatic com.sun.crypto.provider.ChaCha20Cipher.asLongView:Ljava/lang/invoke/VarHandle;
aload 4
iload 5
lload 7
lload 9
lxor
invokevirtual java.lang.invoke.VarHandle.set:([BIJ)V
4: iinc 1 8
5: iinc 3 8
6: iinc 5 8
7: iinc 6 -8
end local 9 end local 7 8: StackMap locals:
StackMap stack:
iload 6
bipush 8
if_icmpge 1
9: goto 15
10: StackMap locals:
StackMap stack:
aload 4
iload 5
aload 0
iload 1
baload
aload 2
iload 3
baload
ixor
i2b
bastore
11: iinc 1 1
12: iinc 3 1
13: iinc 5 1
14: iinc 6 -1
15: StackMap locals:
StackMap stack:
iload 6
ifgt 10
16: return
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 17 0 in1 [B
0 17 1 off1 I
0 17 2 in2 [B
0 17 3 off2 I
0 17 4 out [B
0 17 5 outOff I
0 17 6 len I
2 8 7 v1 J
3 8 9 v2 J
MethodParameters:
Name Flags
in1
off1
in2
off2
out
outOff
len
private void initAuthenticator();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=2, args_size=1
start local 0 0: aload 0
new com.sun.crypto.provider.Poly1305
dup
invokespecial com.sun.crypto.provider.Poly1305.<init>:()V
putfield com.sun.crypto.provider.ChaCha20Cipher.authenticator:Lcom/sun/crypto/provider/Poly1305;
1: bipush 64
newarray 8
astore 1
start local 1 2: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.startState:[I
lconst_0
aload 1
invokestatic com.sun.crypto.provider.ChaCha20Cipher.chaCha20Block:([IJ[B)V
3: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.authenticator:Lcom/sun/crypto/provider/Poly1305;
new javax.crypto.spec.SecretKeySpec
dup
aload 1
iconst_0
bipush 32
4: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.authAlgName:Ljava/lang/String;
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BIILjava/lang/String;)V
aconst_null
5: invokevirtual com.sun.crypto.provider.Poly1305.engineInit:(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
6: aload 0
lconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.aadLen:J
7: aload 0
lconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.dataLen:J
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
2 9 1 serializedKey [B
Exceptions:
throws java.security.InvalidKeyException
private int authUpdate(byte[], int, int);
descriptor: ([BII)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
iload 3
aload 1
arraylength
invokestatic java.util.Objects.checkFromIndexSize:(III)I
pop
1: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.authenticator:Lcom/sun/crypto/provider/Poly1305;
aload 1
iload 2
iload 3
invokevirtual com.sun.crypto.provider.Poly1305.engineUpdate:([BII)V
2: iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 3 1 data [B
0 3 2 offset I
0 3 3 length I
MethodParameters:
Name Flags
data
offset
length
private void authFinalizeData(byte[], int, int, byte[], int);
descriptor: ([BII[BI)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 1
ifnull 2
1: aload 0
dup
getfield com.sun.crypto.provider.ChaCha20Cipher.dataLen:J
aload 0
aload 1
iload 2
iload 3
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.authUpdate:([BII)I
i2l
ladd
putfield com.sun.crypto.provider.ChaCha20Cipher.dataLen:J
2: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.dataLen:J
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.authPad16:(J)V
3: aload 0
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.aadLen:J
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.dataLen:J
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.lenBuf:[B
invokevirtual com.sun.crypto.provider.ChaCha20Cipher.authWriteLengths:(JJ[B)V
4: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.authenticator:Lcom/sun/crypto/provider/Poly1305;
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.lenBuf:[B
iconst_0
aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.lenBuf:[B
arraylength
invokevirtual com.sun.crypto.provider.Poly1305.engineUpdate:([BII)V
5: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.authenticator:Lcom/sun/crypto/provider/Poly1305;
invokevirtual com.sun.crypto.provider.Poly1305.engineDoFinal:()[B
astore 6
start local 6 6: iload 5
aload 6
arraylength
aload 4
arraylength
invokestatic java.util.Objects.checkFromIndexSize:(III)I
pop
7: aload 6
iconst_0
aload 4
iload 5
aload 6
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
8: aload 0
lconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.aadLen:J
9: aload 0
lconst_0
putfield com.sun.crypto.provider.ChaCha20Cipher.dataLen:J
10: return
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 11 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 11 1 data [B
0 11 2 dataOff I
0 11 3 length I
0 11 4 out [B
0 11 5 outOff I
6 11 6 tag [B
Exceptions:
throws javax.crypto.ShortBufferException
MethodParameters:
Name Flags
data
dataOff
length
out
outOff
private void authPad16(long);
descriptor: (J)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.crypto.provider.ChaCha20Cipher.authenticator:Lcom/sun/crypto/provider/Poly1305;
getstatic com.sun.crypto.provider.ChaCha20Cipher.padBuf:[B
iconst_0
1: bipush 16
lload 1
l2i
bipush 15
iand
isub
bipush 15
iand
2: invokevirtual com.sun.crypto.provider.Poly1305.engineUpdate:([BII)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 4 1 dataLen J
MethodParameters:
Name Flags
dataLen
private void authWriteLengths(long, long, byte[]);
descriptor: (JJ[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=4
start local 0 start local 1 start local 3 start local 5 0: getstatic com.sun.crypto.provider.ChaCha20Cipher.asLongLittleEndian:Ljava/lang/invoke/VarHandle;
aload 5
iconst_0
lload 1
invokevirtual java.lang.invoke.VarHandle.set:([BIJ)V
1: getstatic com.sun.crypto.provider.ChaCha20Cipher.asLongLittleEndian:Ljava/lang/invoke/VarHandle;
aload 5
bipush 8
lload 3
invokevirtual java.lang.invoke.VarHandle.set:([BIJ)V
2: return
end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/crypto/provider/ChaCha20Cipher;
0 3 1 aLen J
0 3 3 dLen J
0 3 5 buf [B
MethodParameters:
Name Flags
aLen
dLen
buf
}
SourceFile: "ChaCha20Cipher.java"
NestMembers:
com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Only com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305 com.sun.crypto.provider.ChaCha20Cipher$ChaChaEngine com.sun.crypto.provider.ChaCha20Cipher$EngineAEADDec com.sun.crypto.provider.ChaCha20Cipher$EngineAEADEnc com.sun.crypto.provider.ChaCha20Cipher$EngineStreamOnly
InnerClasses:
public final ChaCha20Only = com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Only of com.sun.crypto.provider.ChaCha20Cipher
public final ChaCha20Poly1305 = com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305 of com.sun.crypto.provider.ChaCha20Cipher
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
private final EngineAEADEnc = com.sun.crypto.provider.ChaCha20Cipher$EngineAEADEnc of com.sun.crypto.provider.ChaCha20Cipher
private final EngineStreamOnly = com.sun.crypto.provider.ChaCha20Cipher$EngineStreamOnly of com.sun.crypto.provider.ChaCha20Cipher