У меня есть .NET click-once
приложение, которое, как я выяснил на собственном опыте (пользователь не смог установить), проверяет контрольные суммы своих файлов конфигурации на соответствие контрольным суммам в .exe.manifest
как рассчитано во время сборки.
Мой пользователь не смог установить, в сообщении об ошибке указан плохой хеш. Действительно, файлы были изменены.
При отладке проблемы было бы неплохо иметь возможность реплицировать контрольные суммы в различных версиях файлов конфигурации, чтобы быстро решить проблему путем публикации правильной. Я в первую очередь пользователь Linux, поэтому хотел сделать это в командной строке Bash. Я не мог этого сделать.
В манифесте .exe обратите внимание на <dsig:DigestValue>
тег:
<file name="config\appsettings\Production.config" size="665">
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>2cwIVAHHyOUgxBtwewfNgPU2YuQ=</dsig:DigestValue>
</hash>
</file>
Вот мой мыслительный процесс в командной строке Linux.
#> sha1sum config/appsettings/Development.config.deploy
a2c7bf5b7232c1c1aafbf8203a97c0b791179718
Нет, мне, очевидно, нужен base64, да:
#> sha1sum config/appsettings/Development.config.deploy | cut -f1 -d\ | xxd -r -p | base64
ose/W3IywcGq+/ggOpfAt5EXlxg=
Они явно не совпадают, поэтому я что-то упускаю.
Ищу информацию о следующем:
Identity
transform, поэтому я все еще ожидаю, что необработанного SHA1 в файле должно быть достаточно для получения контрольной суммы..deploy
суффикс? Насколько я могу судить, .config
во время сборки и .config.deploy
опубликованные на сервере текстуально идентичны. Если я ошибаюсь, это будет хорошая информация.