re-implementing AES-GCM without CLR security library