How do you use FIPS validated cryptographic algorithms with Visual Studio 2010 and Windows 7?
This has a list of FIPS compliant algorithms. A more complete list is here
FIPS compliant Algorithms:
Hash algorithms
HMACSHA1
MACTripleDES
SHA1CryptoServiceProvider
Symmetric algorithms (use the same key for encryption and decryption)
DESCryptoServiceProvider
TripleDESCryptoServiceProvider
Asymmetric algorithms (use a public key for encryption and a private key for decryption)
DSACryptoServiceProvider
RSACryptoServiceProvider
So you will need to use SHA1CryptoServiceProvider
and TripleDESCryptoServiceProvider
to be FIPS compliant
Try making a blank C# app and compiling it, it should fail for the same reason. Ultimately the problem is Visual Studio, not your code. Follow the instructions here and add this to your IDE's config file (Devenv.exe.config
/VCSExpress.exe.config
/vbexpress.exe.config
):
<enforceFIPSPolicy enabled="false"/>
This doesn't mean that your app isn't running in FIPS compliant mode, it means that Visual Studio isn't now. Non-compliant code will still compile but if it tries to execute you'll receive an System.InvalidOperationException
exception.
I think, but don't know for sure, that the algorithms that VS uses to generate certain hashes in libraries isn't actually FIPS compliant.