public final class com.google.crypto.tink.subtle.EncryptThenAuthenticate implements com.google.crypto.tink.Aead
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.google.crypto.tink.subtle.EncryptThenAuthenticate
super_class: java.lang.Object
{
private final com.google.crypto.tink.subtle.IndCpaCipher cipher;
descriptor: Lcom/google/crypto/tink/subtle/IndCpaCipher;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.google.crypto.tink.Mac mac;
descriptor: Lcom/google/crypto/tink/Mac;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int macLength;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>(com.google.crypto.tink.subtle.IndCpaCipher, com.google.crypto.tink.Mac, int);
descriptor: (Lcom/google/crypto/tink/subtle/IndCpaCipher;Lcom/google/crypto/tink/Mac;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.cipher:Lcom/google/crypto/tink/subtle/IndCpaCipher;
2: aload 0
aload 2
putfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.mac:Lcom/google/crypto/tink/Mac;
3: aload 0
iload 3
putfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.macLength:I
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/google/crypto/tink/subtle/EncryptThenAuthenticate;
0 5 1 cipher Lcom/google/crypto/tink/subtle/IndCpaCipher;
0 5 2 mac Lcom/google/crypto/tink/Mac;
0 5 3 macLength I
MethodParameters:
Name Flags
cipher final
mac final
macLength
public static com.google.crypto.tink.Aead newAesCtrHmac(byte[], int, java.lang.String, byte[], int);
descriptor: ([BILjava/lang/String;[BI)Lcom/google/crypto/tink/Aead;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: new com.google.crypto.tink.subtle.AesCtrJceCipher
dup
aload 0
iload 1
invokespecial com.google.crypto.tink.subtle.AesCtrJceCipher.<init>:([BI)V
astore 5
start local 5 1: new javax.crypto.spec.SecretKeySpec
dup
aload 3
ldc "HMAC"
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 6
start local 6 2: new com.google.crypto.tink.subtle.PrfMac
dup
new com.google.crypto.tink.subtle.PrfHmacJce
dup
aload 2
aload 6
invokespecial com.google.crypto.tink.subtle.PrfHmacJce.<init>:(Ljava/lang/String;Ljava/security/Key;)V
iload 4
invokespecial com.google.crypto.tink.subtle.PrfMac.<init>:(Lcom/google/crypto/tink/prf/Prf;I)V
astore 7
start local 7 3: new com.google.crypto.tink.subtle.EncryptThenAuthenticate
dup
aload 5
aload 7
iload 4
invokespecial com.google.crypto.tink.subtle.EncryptThenAuthenticate.<init>:(Lcom/google/crypto/tink/subtle/IndCpaCipher;Lcom/google/crypto/tink/Mac;I)V
areturn
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 4 0 aesCtrKey [B
0 4 1 ivSize I
0 4 2 hmacAlgorithm Ljava/lang/String;
0 4 3 hmacKey [B
0 4 4 tagSize I
1 4 5 cipher Lcom/google/crypto/tink/subtle/IndCpaCipher;
2 4 6 hmacKeySpec Ljavax/crypto/spec/SecretKeySpec;
3 4 7 hmac Lcom/google/crypto/tink/Mac;
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
aesCtrKey final
ivSize
hmacAlgorithm
hmacKey final
tagSize
public byte[] encrypt(byte[], byte[]);
descriptor: ([B[B)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.cipher:Lcom/google/crypto/tink/subtle/IndCpaCipher;
aload 1
invokeinterface com.google.crypto.tink.subtle.IndCpaCipher.encrypt:([B)[B
astore 3
start local 3 1: aload 2
astore 4
start local 4 2: aload 4
ifnonnull 4
3: iconst_0
newarray 8
astore 4
4: StackMap locals: byte[] byte[]
StackMap stack:
bipush 8
invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
ldc 8
aload 4
arraylength
i2l
lmul
invokevirtual java.nio.ByteBuffer.putLong:(J)Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.array:()[B
bipush 8
invokestatic java.util.Arrays.copyOf:([BI)[B
5: astore 5
start local 5 6: aload 0
getfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.mac:Lcom/google/crypto/tink/Mac;
iconst_3
anewarray byte[]
dup
iconst_0
aload 4
aastore
dup
iconst_1
aload 3
aastore
dup
iconst_2
aload 5
aastore
invokestatic com.google.crypto.tink.subtle.Bytes.concat:([[B)[B
invokeinterface com.google.crypto.tink.Mac.computeMac:([B)[B
astore 6
start local 6 7: iconst_2
anewarray byte[]
dup
iconst_0
aload 3
aastore
dup
iconst_1
aload 6
aastore
invokestatic com.google.crypto.tink.subtle.Bytes.concat:([[B)[B
areturn
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 8 0 this Lcom/google/crypto/tink/subtle/EncryptThenAuthenticate;
0 8 1 plaintext [B
0 8 2 associatedData [B
1 8 3 ciphertext [B
2 8 4 aad [B
6 8 5 aadLengthInBits [B
7 8 6 macValue [B
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
plaintext final
associatedData final
public byte[] decrypt(byte[], byte[]);
descriptor: ([B[B)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
arraylength
aload 0
getfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.macLength:I
if_icmpge 2
1: new java.security.GeneralSecurityException
dup
ldc "ciphertext too short"
invokespecial java.security.GeneralSecurityException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
iconst_0
aload 1
arraylength
aload 0
getfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.macLength:I
isub
invokestatic java.util.Arrays.copyOfRange:([BII)[B
astore 3
start local 3 3: aload 1
aload 1
arraylength
aload 0
getfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.macLength:I
isub
aload 1
arraylength
invokestatic java.util.Arrays.copyOfRange:([BII)[B
4: astore 4
start local 4 5: aload 2
astore 5
start local 5 6: aload 5
ifnonnull 8
7: iconst_0
newarray 8
astore 5
8: StackMap locals: byte[] byte[] byte[]
StackMap stack:
bipush 8
invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
ldc 8
aload 5
arraylength
i2l
lmul
invokevirtual java.nio.ByteBuffer.putLong:(J)Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.array:()[B
bipush 8
invokestatic java.util.Arrays.copyOf:([BI)[B
9: astore 6
start local 6 10: aload 0
getfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.mac:Lcom/google/crypto/tink/Mac;
aload 4
iconst_3
anewarray byte[]
dup
iconst_0
aload 5
aastore
dup
iconst_1
aload 3
aastore
dup
iconst_2
aload 6
aastore
invokestatic com.google.crypto.tink.subtle.Bytes.concat:([[B)[B
invokeinterface com.google.crypto.tink.Mac.verifyMac:([B[B)V
11: aload 0
getfield com.google.crypto.tink.subtle.EncryptThenAuthenticate.cipher:Lcom/google/crypto/tink/subtle/IndCpaCipher;
aload 3
invokeinterface com.google.crypto.tink.subtle.IndCpaCipher.decrypt:([B)[B
areturn
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 12 0 this Lcom/google/crypto/tink/subtle/EncryptThenAuthenticate;
0 12 1 ciphertext [B
0 12 2 associatedData [B
3 12 3 rawCiphertext [B
5 12 4 macValue [B
6 12 5 aad [B
10 12 6 aadLengthInBits [B
Exceptions:
throws java.security.GeneralSecurityException
MethodParameters:
Name Flags
ciphertext final
associatedData final
}
SourceFile: "EncryptThenAuthenticate.java"