The purpose of ADATA in GCM I have a hard time understanding the purpose of ADATA in GCM algorithm. Is ADATA the plaintext itself we would like to encrypt or is it some random data as for the IV ? Otherwise from what I have understood so far, is that one cannot get the GMAC (i.e. Tag) of some plaintext unless he does encrypt it where the ciphertext is fed to the XOR function. Is that right?
GCM is an algorithm for building an "authenticated encryption with associated data" (AEAD) scheme. The ADATA in the spec refers to associated data. Associated data is auxiliary information or metadata that needs to be in plaintext for functionality reasons (for example, headers in an IP packet) but which needs some integrity guarantees. The idea of AEAD was folklore, but Phil Rogaway introduced it as a design goal for symmetric encryption and formalized security notions for it. See this paper for more details.