/// <summary>
        /// Sets plaintext = DecryptWithAd(h, ciphertext),
        /// calls MixHash(ciphertext), and returns plaintext.
        /// </summary>
        public int DecryptAndHash(ReadOnlySpan <byte> ciphertext, Span <byte> plaintext)
        {
            var bytesRead = state.DecryptWithAd(h, ciphertext, plaintext);

            MixHash(ciphertext);

            return(bytesRead);
        }