I get the following error: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
OS: Windows XP (32bit)
.NET 4 Framework
Visual Studio 2010 SP1
To reproduce:
1. go to registry (HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa) and set fipsalgorithmpolity to 1.
2. Go to devenv.exe.config (for your version of VS) and add "<enforceFIPSPolicy enabled="false"/>" to the runtime section. (it won't build without this)
3. Create console application (.NET 4)
4. Add System.Data.SQLite & System.Data.SQLite.Linq references
5. Add new "ADO.NET Entity Data Model", generate from database, choose northwindEF.db, select all tables, views, and SPROCs, wait for data model generation.
6. Add the following method to Program.cs :
private static void RunIt()
{
var t = new northwindEFEntities();
var customers = t.Customers.Where(c => c.CompanyName.StartsWith("a"));
foreach (var customer in customers)
{
Console.WriteLine(customer.CompanyName);
}
}
7. Add "RunIt();" to Program.Main.
8. Hit F5
<hr /><i>mistachkin added on 2011-07-09 18:39:21 UTC:</i><br />
This appears to be related to the use of the RC4 (CALG_RC4) algorithm in the crypt.c file of the SQLite.Interop assembly for CryptDeriveKey.
<hr /><i>mistachkin added on 2011-07-09 19:10:46 UTC:</i><br />
As far as I can tell, the interop assembly has always used the RC4 algorithm and that prevents it from being FIPS compliant. The algorithm used cannot be changed without breaking the pre-existing database encrypted via the interop assembly.
<hr /><i>anonymous added on 2011-07-27 20:28:38 UTC:</i><br />
This seem to be an issue with using the LINQ/entity framework using managedsha256 more that using system.data.sqlite. I receive the same error using other databases with the LINQ/entity framework. There is even a Microsoft connects bug ticket (ID: 521539) see for more details http://connect.microsoft.com/VisualStudio/feedback/details/521539/fips-and-entity-framework for more details.
|