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

0 ответов

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