Think of ```add_data``` as a method that mixes data into the tag state but does not encrypt. For a decryption to be successful you must supply the same authenticated data you did during encryption, so you have to call ```add_data``` on both contexts.

Would it be more clear to call it something like ```authenticated_data``` instead of ```add_data```?  ```add_data``` arguably implies the data is being stored (rather than simply processed through the GHASH algorithm and not retained directly).