class com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter implements com.google.crypto.tink.subtle.StreamSegmentDecrypter
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter
super_class: java.lang.Object
{
private javax.crypto.spec.SecretKeySpec keySpec;
descriptor: Ljavax/crypto/spec/SecretKeySpec;
flags: (0x0002) ACC_PRIVATE
private javax.crypto.spec.SecretKeySpec hmacKeySpec;
descriptor: Ljavax/crypto/spec/SecretKeySpec;
flags: (0x0002) ACC_PRIVATE
private javax.crypto.Cipher cipher;
descriptor: Ljavax/crypto/Cipher;
flags: (0x0002) ACC_PRIVATE
private javax.crypto.Mac mac;
descriptor: Ljavax/crypto/Mac;
flags: (0x0002) ACC_PRIVATE
private byte[] noncePrefix;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
final com.google.crypto.tink.subtle.AesCtrHmacStreaming this$0;
descriptor: Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(com.google.crypto.tink.subtle.AesCtrHmacStreaming);
descriptor: (Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming$AesCtrHmacStreamDecrypter;
MethodParameters:
Name Flags
this$0 final
public synchronized void init(java.nio.ByteBuffer, byte[]);
descriptor: (Ljava/nio/ByteBuffer;[B)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
invokevirtual com.google.crypto.tink.subtle.AesCtrHmacStreaming.getHeaderLength:()I
if_icmpeq 2
1: new java.security.InvalidAlgorithmParameterException
dup
ldc "Invalid header length"
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.get:()B
istore 3
start local 3 3: iload 3
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
invokevirtual com.google.crypto.tink.subtle.AesCtrHmacStreaming.getHeaderLength:()I
if_icmpeq 5
4: new java.security.GeneralSecurityException
dup
ldc "Invalid ciphertext"
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals: int
StackMap stack:
aload 0
bipush 7
newarray 8
putfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.noncePrefix:[B
6: aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming.keySizeInBytes:I
newarray 8
astore 4
start local 4 7: aload 1
aload 4
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
8: aload 1
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.noncePrefix:[B
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
9: aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
aload 4
aload 2
invokevirtual com.google.crypto.tink.subtle.AesCtrHmacStreaming.deriveKeyMaterial:([B[B)[B
astore 5
start local 5 10: aload 0
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
aload 5
invokevirtual com.google.crypto.tink.subtle.AesCtrHmacStreaming.deriveKeySpec:([B)Ljavax/crypto/spec/SecretKeySpec;
putfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.keySpec:Ljavax/crypto/spec/SecretKeySpec;
11: aload 0
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
aload 5
invokevirtual com.google.crypto.tink.subtle.AesCtrHmacStreaming.deriveHmacKeySpec:([B)Ljavax/crypto/spec/SecretKeySpec;
putfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.hmacKeySpec:Ljavax/crypto/spec/SecretKeySpec;
12: aload 0
invokestatic com.google.crypto.tink.subtle.AesCtrHmacStreaming.cipherInstance:()Ljavax/crypto/Cipher;
putfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.cipher:Ljavax/crypto/Cipher;
13: aload 0
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
invokevirtual com.google.crypto.tink.subtle.AesCtrHmacStreaming.macInstance:()Ljavax/crypto/Mac;
putfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.mac:Ljavax/crypto/Mac;
14: 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 15 0 this Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming$AesCtrHmacStreamDecrypter;
0 15 1 header Ljava/nio/ByteBuffer;
0 15 2 aad [B
3 15 3 firstByte B
7 15 4 salt [B
10 15 5 keymaterial [B
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
header
aad
public synchronized void decryptSegment(java.nio.ByteBuffer, int, boolean, java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;IZLjava/nio/ByteBuffer;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=6, locals=14, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 5
start local 5 1: aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.noncePrefix:[B
iload 2
i2l
iload 3
invokevirtual com.google.crypto.tink.subtle.AesCtrHmacStreaming.nonceForSegment:([BJZ)[B
astore 6
start local 6 2: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 7
start local 7 3: iload 7
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming.tagSizeInBytes:I
if_icmpge 5
4: new java.security.GeneralSecurityException
dup
ldc "Ciphertext too short"
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals: int byte[] int
StackMap stack:
iload 7
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming.tagSizeInBytes:I
isub
istore 8
start local 8 6: iload 5
iload 8
iadd
istore 9
start local 9 7: aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 10
start local 10 8: aload 10
iload 9
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
9: aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 11
start local 11 10: aload 11
iload 9
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
11: getstatic com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.$assertionsDisabled:Z
ifne 12
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.mac:Ljavax/crypto/Mac;
ifnonnull 12
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
12: StackMap locals: com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter java.nio.ByteBuffer int int java.nio.ByteBuffer int byte[] int int int java.nio.ByteBuffer java.nio.ByteBuffer
StackMap stack:
getstatic com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.$assertionsDisabled:Z
ifne 13
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.hmacKeySpec:Ljavax/crypto/spec/SecretKeySpec;
ifnonnull 13
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
13: StackMap locals:
StackMap stack:
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.mac:Ljavax/crypto/Mac;
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.hmacKeySpec:Ljavax/crypto/spec/SecretKeySpec;
invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
14: aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.mac:Ljavax/crypto/Mac;
aload 6
invokevirtual javax.crypto.Mac.update:([B)V
15: aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.mac:Ljavax/crypto/Mac;
aload 10
invokevirtual javax.crypto.Mac.update:(Ljava/nio/ByteBuffer;)V
16: aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.mac:Ljavax/crypto/Mac;
invokevirtual javax.crypto.Mac.doFinal:()[B
astore 12
start local 12 17: aload 12
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming.tagSizeInBytes:I
invokestatic java.util.Arrays.copyOf:([BI)[B
astore 12
18: aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming.tagSizeInBytes:I
newarray 8
astore 13
start local 13 19: getstatic com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.$assertionsDisabled:Z
ifne 20
aload 11
invokevirtual java.nio.ByteBuffer.remaining:()I
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.this$0:Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming;
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming.tagSizeInBytes:I
if_icmpeq 20
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
20: StackMap locals: byte[] byte[]
StackMap stack:
aload 11
aload 13
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
21: getstatic com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.$assertionsDisabled:Z
ifne 22
aload 13
arraylength
aload 12
arraylength
if_icmpeq 22
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
22: StackMap locals:
StackMap stack:
aload 13
aload 12
invokestatic com.google.crypto.tink.subtle.Bytes.equal:([B[B)Z
ifne 24
23: new java.security.GeneralSecurityException
dup
ldc "Tag mismatch"
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
24: StackMap locals:
StackMap stack:
aload 1
iload 9
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
25: aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.cipher:Ljavax/crypto/Cipher;
iconst_1
aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.keySpec:Ljavax/crypto/spec/SecretKeySpec;
new javax.crypto.spec.IvParameterSpec
dup
aload 6
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
26: aload 0
getfield com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter.cipher:Ljavax/crypto/Cipher;
aload 1
aload 4
invokevirtual javax.crypto.Cipher.doFinal:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
pop
27: return
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 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lcom/google/crypto/tink/subtle/AesCtrHmacStreaming$AesCtrHmacStreamDecrypter;
0 28 1 ciphertext Ljava/nio/ByteBuffer;
0 28 2 segmentNr I
0 28 3 isLastSegment Z
0 28 4 plaintext Ljava/nio/ByteBuffer;
1 28 5 position I
2 28 6 nonce [B
3 28 7 ctLength I
6 28 8 ptLength I
7 28 9 startOfTag I
8 28 10 ct Ljava/nio/ByteBuffer;
10 28 11 tagBuffer Ljava/nio/ByteBuffer;
17 28 12 tag [B
19 28 13 expectedTag [B
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
ciphertext
segmentNr
isLastSegment
plaintext
}
SourceFile: "AesCtrHmacStreaming.java"
NestHost: com.google.crypto.tink.subtle.AesCtrHmacStreaming
InnerClasses:
AesCtrHmacStreamDecrypter = com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter of com.google.crypto.tink.subtle.AesCtrHmacStreaming