private byte[] decryptInternal(final byte[] ciphertext, final byte[] associatedData)
      throws GeneralSecurityException {
    GCMParameterSpec params =
        new GCMParameterSpec(8 * TAG_SIZE_IN_BYTES, ciphertext, 0, IV_SIZE_IN_BYTES);
    Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
    cipher.init(Cipher.DECRYPT_MODE, key, params);
    cipher.updateAAD(associatedData);
    return cipher.doFinal(ciphertext, IV_SIZE_IN_BYTES, ciphertext.length - IV_SIZE_IN_BYTES);
  }
An {@link Aead} that does AES-GCM encryption with a key stored in <a
href="https://developer.android.com/training/articles/keystore.html">Android Keystore</a>.

<p>This class requires Android M (API level 23) or newer.

@since 1.0.0
java_src/src/main/java/com/google/crypto/tink/integration/android/AndroidKeystoreAesGcm.java