Неизвестная ошибка сборки "Данная реализация не является частью проверенных криптографических алгоритмов FIPS платформы Windows"

Поэтому я включил эту групповую политику, и при первой попытке компилировать свое решение я получил эту ошибку. Самое смешное, что я использую криптографическую функцию только в одном месте, но я вижу все мои файлы Silverlight ResourceDictionary и WPF userControl. Все остальное вроде компилируется нормально.

Почему я вижу ошибку только в файлах xaml, где я ничего не делаю с шифрованием? Я знаю, что могу отключить групповую политику FIPS, но хочу ее поддерживать. Любая идея, почему определенные файлы XAML выдают эту ошибку во время компиляции?

2 ответа

Решение

После некоторого исследования я нашел этот ответ, который имеет смысл:

WPF и FIPS

Вот содержание ссылки на случай, если она будет удалена:

The following is the reply I got from the WPF XAML team:

We didn’t fix it because this issue was discovered days (June 2, 2008) before the release.

I still have the BBPack I didn’t checkin.  Here is the comment from the code.



            // The Federal Information Processing Standard mandates that

            // MD5 is obsolete and not safe for cryptographic checksums.

            // We are using it to coordinating source files for debugging

            // not authenticating so MD5 use is OK here.

            // But, on a OS with the FIPS compliant switch ON, the managed

            // MD5CryptoServiceProvider Ctor will throw.  So we can't use it.

            //

            // Currently we use a PInvoke wrapper to the Native layer;

            // which still works, even on a FIPS compliant machine.  A Better

            // fix would be to move to the approved SHA checksums, but that

            // will require co-ordination with VS and the Debugger groups etc.



The MSI builder and a few other tools also threw on a FIPS=1 machine.

So even we if we fixed our part (in 3.5sp1), the customer’s end-to-end solution was still broken.



General FIPS info:

http://support.microsoft.com/kb/811833/en-us

Я знаю, что немного опоздал на игру, но недавно я столкнулся с этой проблемой и также нашел решение. По причинам, указанным @mdutra выше, именно поэтому это не работает, но интересно, что Visual Studio 2010 и 2012 имеют два разных "исправления".

Эта запись Microsoft Connect гласит:

Сообщение от Microsoft 6/30/2012 в 16:00:

VS 2012 теперь строит проекты на C# в отдельном процессе, который запускает msbuild. Запись, которую вы добавили в devenv.exe.config (которая работала для VS 2010), не будет видна этому процессу. Вы должны добавить ту же запись, а именно

<enforceFIPSPolicy enabled="false"/>

в конфигурационный файл для msbuild; как правило, это найдено в

c:\Windows\Microsoft.Net\Framework\v4.0.30319\msbuild.exe.config

Эта строка должна быть добавлена ​​непосредственно над </runtime> тег в msbuild.exe.config файл.

Я также добавил это к C:\Windows\Microsoft.Net\Framework64\v4.0.30319\msbuild.exe.config файл, так как я не знал, какой MSBuild я использовал.

Другие вопросы по тегам