Does GCM spec (NIST SP 800-38D) require tag-size to be fixed for an instance of GCM algorithm (which usually fixes a specific GCM key)?
Asked differently, is the following a legitimate adherence to GCM spec?
There is a discussion going on on GitHub - perhaps knowledgeable folks could comment.
// pseudocode
var one_gcm = new AesGcm(key); key is a legit key of 16/24/32 bytes
var (ciphertext, tag16) = one_gcm.Encrypt(plaintext); // produces 16-byte tag
var truncated_tag12 = tag16.Slice(0,12); // truncating the tag to 12 bytes
var decrypted = one_gcm.Decrypt(ciphertext, truncated_tag12); // this is successful