Как мне скопировать хеши манифеста Microsoft .NET, в идеале в командной строке Linux?
У меня есть.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=
Они явно не совпадают, поэтому я что-то упустил.
Нужна информация о следующем:
- Какая другая магия используется в этих хэшах?
- Относительно 1, манифест упоминает "Алгоритм преобразования". Что это такое, и если это недостающий кусок, как это делается? - РЕДАКТИРОВАТЬ: ввод XML-данных в хеш-код преобразуется этим алгоритмом перед передачей в хеш-алгоритм, однако в этом случае
Identity
указан transform, поэтому я все еще ожидаю, что необработанного SHA1 в файле должно быть достаточно для получения контрольной суммы. .deploy
суффикс? Насколько я могу судить,.config
во время сборки и тому.config.deploy
опубликованные на сервере текстовые идентичные. Если я ошибаюсь, это будет хорошей информацией.- Как все это будет включено с помощью инструментов Linux?