code: def encrypt_and_hash(self, plaintext: bytes) -> bytes:
          
          ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)
          self.mix_hash(ciphertext)
          return ciphertext
docs: Sets ciphertext = EncryptWithAd(h, plaintext), calls MixHash(ciphertext), and returns ciphertext. Note that if
          k is empty, the EncryptWithAd() call will set ciphertext equal to plaintext.
  
          :param plaintext: bytes sequence
          :return: ciphertext bytes sequence