class com.google.crypto.tink.subtle.XChaCha20 extends com.google.crypto.tink.subtle.ChaCha20Base
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.google.crypto.tink.subtle.XChaCha20
super_class: com.google.crypto.tink.subtle.ChaCha20Base
{
void <init>(byte[], int);
descriptor: ([BI)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 // com.google.crypto.tink.subtle.XChaCha20 this
start local 1 // byte[] key
start local 2 // int initialCounter
0: .line 37
aload 0 /* this */
aload 1 /* key */
iload 2 /* initialCounter */
invokespecial com.google.crypto.tink.subtle.ChaCha20Base.<init>:([BI)V
1: .line 38
return
end local 2 // int initialCounter
end local 1 // byte[] key
end local 0 // com.google.crypto.tink.subtle.XChaCha20 this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/google/crypto/tink/subtle/XChaCha20;
0 2 1 key [B
0 2 2 initialCounter I
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
key
initialCounter
int[] createInitialState(int[], int);
descriptor: ([II)[I
flags: (0x0000)
Code:
stack=8, locals=4, args_size=3
start local 0 // com.google.crypto.tink.subtle.XChaCha20 this
start local 1 // int[] nonce
start local 2 // int counter
0: .line 42
aload 1 /* nonce */
arraylength
aload 0 /* this */
invokevirtual com.google.crypto.tink.subtle.XChaCha20.nonceSizeInBytes:()I
iconst_4
idiv
if_icmpeq 5
1: .line 43
new java.lang.IllegalArgumentException
dup
2: .line 45
ldc "XChaCha20 uses 192-bit nonces, but got a %d-bit nonce"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1 /* nonce */
arraylength
bipush 32
imul
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
3: .line 44
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
4: .line 43
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
5: .line 49
StackMap locals:
StackMap stack:
bipush 16
newarray 10
astore 3 /* state */
start local 3 // int[] state
6: .line 50
aload 3 /* state */
aload 0 /* this */
getfield com.google.crypto.tink.subtle.XChaCha20.key:[I
aload 1 /* nonce */
invokestatic com.google.crypto.tink.subtle.XChaCha20.hChaCha20:([I[I)[I
invokestatic com.google.crypto.tink.subtle.ChaCha20Base.setSigmaAndKey:([I[I)V
7: .line 51
aload 3 /* state */
bipush 12
iload 2 /* counter */
iastore
8: .line 52
aload 3 /* state */
bipush 13
iconst_0
iastore
9: .line 53
aload 3 /* state */
bipush 14
aload 1 /* nonce */
iconst_4
iaload
iastore
10: .line 54
aload 3 /* state */
bipush 15
aload 1 /* nonce */
iconst_5
iaload
iastore
11: .line 55
aload 3 /* state */
areturn
end local 3 // int[] state
end local 2 // int counter
end local 1 // int[] nonce
end local 0 // com.google.crypto.tink.subtle.XChaCha20 this
LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/google/crypto/tink/subtle/XChaCha20;
0 12 1 nonce [I
0 12 2 counter I
6 12 3 state [I
MethodParameters:
Name Flags
nonce final
counter
int nonceSizeInBytes();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 // com.google.crypto.tink.subtle.XChaCha20 this
0: .line 60
bipush 24
ireturn
end local 0 // com.google.crypto.tink.subtle.XChaCha20 this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/crypto/tink/subtle/XChaCha20;
static int[] hChaCha20(int[], int[]);
descriptor: ([I[I)[I
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 // int[] key
start local 1 // int[] nonce
0: .line 65
bipush 16
newarray 10
astore 2 /* state */
start local 2 // int[] state
1: .line 66
aload 2 /* state */
aload 0 /* key */
invokestatic com.google.crypto.tink.subtle.ChaCha20Base.setSigmaAndKey:([I[I)V
2: .line 67
aload 2 /* state */
bipush 12
aload 1 /* nonce */
iconst_0
iaload
iastore
3: .line 68
aload 2 /* state */
bipush 13
aload 1 /* nonce */
iconst_1
iaload
iastore
4: .line 69
aload 2 /* state */
bipush 14
aload 1 /* nonce */
iconst_2
iaload
iastore
5: .line 70
aload 2 /* state */
bipush 15
aload 1 /* nonce */
iconst_3
iaload
iastore
6: .line 71
aload 2 /* state */
invokestatic com.google.crypto.tink.subtle.ChaCha20Base.shuffleState:([I)V
7: .line 73
aload 2 /* state */
iconst_4
aload 2 /* state */
bipush 12
iaload
iastore
8: .line 74
aload 2 /* state */
iconst_5
aload 2 /* state */
bipush 13
iaload
iastore
9: .line 75
aload 2 /* state */
bipush 6
aload 2 /* state */
bipush 14
iaload
iastore
10: .line 76
aload 2 /* state */
bipush 7
aload 2 /* state */
bipush 15
iaload
iastore
11: .line 77
aload 2 /* state */
bipush 8
invokestatic java.util.Arrays.copyOf:([II)[I
areturn
end local 2 // int[] state
end local 1 // int[] nonce
end local 0 // int[] key
LocalVariableTable:
Start End Slot Name Signature
0 12 0 key [I
0 12 1 nonce [I
1 12 2 state [I
MethodParameters:
Name Flags
key final
nonce final
}
SourceFile: "XChaCha20.java"