2016-01-28 4 views
1

Мой XML цифровая подпись имеет следующие выдержки:XML Digital Signature: как вычисляется значение дайджеста для URI одинакового документа?

<Signature Id="idPackageSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"> 
     <SignedInfo> 
      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> 
      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 
      <Reference URI="#idOfficeObject" Type="http://www.w3.org/2000/09/xmldsig#Object"> 
       <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 

       <DigestValue>ofqf9+Tj0qTkkExCEOwFz0V4aNo=</DigestValue> 

      </Reference> 
     </SignedInfo> 

    <Object Id="idOfficeObject"><SignatureProperties><SignatureProperty Id="idOfficeV1Details" Target="#idPackageSignature"><SignatureInfoV1 xmlns="http://schemas.microsoft.com/office/2006/digsig"><SetupID/><SignatureText/><SignatureImage/><SignatureComments>test</SignatureComments><WindowsVersion>6.1</WindowsVersion><OfficeVersion>14.0</OfficeVersion><ApplicationVersion>14.0</ApplicationVersion><Monitors>1</Monitors><HorizontalResolution>1920</HorizontalResolution><VerticalResolution>1200</VerticalResolution><ColorDepth>32</ColorDepth><SignatureProviderId>{00000000-0000-0000-0000-000000000000}</SignatureProviderId><SignatureProviderUrl/><SignatureProviderDetails>9</SignatureProviderDetails><ManifestHashAlgorithm>http://www.w3.org/2000/09/xmldsig#sha1</ManifestHashAlgorithm><SignatureType>1</SignatureType></SignatureInfoV1></SignatureProperty></SignatureProperties></Object> 

по ссылке элемент Объект должен иметь значение дайджеста ofqf9 + Tj0qTkkExCEOwFz0V4aNo =. Я канонизировать элемент объекта, и получить следующий вывод, что кажется правильным для меня:

<Object Id="idOfficeObject"><SignatureProperties><SignatureProperty Id="idOfficeV1Details" Target="#idPackageSignature"><SignatureInfoV1 xmlns="http://schemas.microsoft.com/office/2006/digsig"><SetupID></SetupID><SignatureText></SignatureText><SignatureImage></SignatureImage><SignatureComments>test</SignatureComments><WindowsVersion>6.1</WindowsVersion><OfficeVersion>14.0</OfficeVersion><ApplicationVersion>14.0</ApplicationVersion><Monitors>1</Monitors><HorizontalResolution>1920</HorizontalResolution><VerticalResolution>1200</VerticalResolution><ColorDepth>32</ColorDepth><SignatureProviderId>{00000000-0000-0000-0000-000000000000}</SignatureProviderId><SignatureProviderUrl></SignatureProviderUrl><SignatureProviderDetails>9</SignatureProviderDetails><ManifestHashAlgorithm>http://www.w3.org/2000/09/xmldsig#sha1</ManifestHashAlgorithm><SignatureType>1</SignatureType></SignatureInfoV1></SignatureProperty></SignatureProperties></Object> 

хранить его в файле «inputxml», и попытаться получить в формате base64 версию sha1 переваривать, используя следующие команда:

% shasum inputxml | cut -f 1 -d ' ' | xxd -r -p | base64 
/zTi8HGHX9X+csjULYLt6FLrm3g= 

Вычисленное значение дайджест не соответствует тому, что находится в подписи XML. Что я делаю не так? Я пробовал несколько различных методов и настроек, но не могу получить правильное значение дайджест.

Примечание: Подпись XML проверяет правильность. Значит, это правильно, но я пропускаю какой-то шаг или деталь. Спасибо за вашу помощь. Пожалуйста, дайте мне знать, как я могу уточнить или уточнить мой вопрос дальше, если это не совсем понятно.

+0

Полная подпись поможет. Однако в вашем вычислении отсутствует хотя бы один шаг: канонизация. Если в ссылке не указано преобразование/канонизация, вы должны сделать по умолчанию (см. Спецификацию xmldsig). По умолчанию было бы добавлено объявление пространства имен в элемент «Объект». Это даст: «<Идентификатор объекта =« idOfficeObject »xmlns =« http://www.w3.org/2000/09/xmldsig# »....» – Moez

+0

@Moez * по крайней мере один шаг отсутствует в ваших вычислениях : canonicalization. * - Возможно, вы упустили из виду, что OP написал ** Я canonicalize элемент Object, и получить следующий вывод, который кажется мне правильным ** ... – mkl

+0

@mkl Да, я пропустил это. Однако выход канонизационной обработки неверен. Объявление пространства имен отсутствует. – Moez

ответ

0

Наконец-то я получил его на работу. Было две проблемы с моей канонической разметкой:

a] Строка пространства имен была неправильно установлена. Это должно было быть <Object xmlns="http://www.w3.org/2000/09/xmldsig#" Id="idOfficeObject">

b] В конце файла была ошибочная новая строка, так как я изменял эти файлы в текстовом редакторе.

Устранение этих проблем, а работа на шазуме на нем дала мне правильный результат. Спасибо за вашу помощь, ребята.

 Смежные вопросы

  • Нет связанных вопросов^_^