Reputation: 3091
The MSDN link provides references to concrete AES classes:
However AesCryptoServiceProvider is for older machines and AesManaged is not certified for FIPS. So the only option is AesCng. The AesCng has a property called Mode, which will only take: CBC, ECB, OFB, CFB, CTS but no GCM.
Upvotes: 13
Views: 17696
Reputation: 42009
This answer reflects the comments from Luke Park, bartonjs, Timo, aand Maarten Bodewes above.
One option is to use the Bouncycastle C# library, which has its own self-contained implementation of AES as well as the GCM mode. Look at the source code for the classes GCMBlockCipher, AesEngine, and AEADParameters.
Another option is to use P/Invoke to manually call BCryptEncrypt.
Finally, note that .NET Core will have support starting in 3.0. The source is already available in github.
Upvotes: 6