Предмет:
Тип роботи:
Дипломна робота
К-сть сторінок:
66
Мова:
Українська
можна скористатися перетворенням XSL як шаблоном цього рахунка. Це означає, що буде підписуватися весь рахунок, а не тільки неопрацьовані дані, включені у файл із цифровим підписом XML.
Елемент Transforms містить інформацію про те, які операції виконуються на даних до їхнього підписання. В елемента Transforms у Лістінгу 3 мається один дочірній елемент Transform. Таких елементів може бути будь-яка кількість.
Кожен елемент Transform вказує алгоритм перетворення. Якщо перетворювати дані до їхнього підписання, необхідно уключити вказівку про те, що було зроблено, додавши елемент Transform. Завдяки цьому одержувач підписаного файлу зможе виконати таке ж перетворення до того, як спробувати перевірити підпис. У нашому прикладі була виконана тільки одна операція - алгоритм канонізації, зазначений за допомогою атрибута Algorithm елемента Transform.
У тому випадку якщо елемент Transforms містить більш одного елемента Transform, необхідно враховувати їхній порядок проходження. Перетворення виконуються в тім порядку, у якому вони з'являються в елементі Transforms. Усі вони виробляються до профілювання даних. Отже, вихідні дані останнього елемента Transform є вхідними даними для алгоритму профілю повідомлення.
2.Алгоритм, використовуваний для створення дайджесту. Специфікація "Цифровий підпис XML" рекомендує використовувати алгоритм профілю SHA-1. Ця інформація знаходиться в елементі DigestMethod, нащадку елемента Reference - у значенні його атрибута Algorithm (http://www.w3.org/2000/09/xmldsig#sha1).
3.Значення дайджесту. Елемент DigestValue у Лістінгу 3 містить дійсне значення дайджесту, отримане застосуванням алгоритму дайджесту до канонічної форми елемента GetSpecialDiscountedBookingForPartners. Необхідно відзначити, що бінарні дані в неопрацьованому виді (такі як потік, створений алгоритмами дайджесту повідомлення, підписи і шифрування) не можуть бути загорнені в розмітку XML - це може ускладнити розбір XML. Перш ніж обертати них у розмітку XML, такі дані представляються в кодуванні base-64. У результаті, зашифровані дані не містять бітів, що могли б конфліктувати із правилами обробки XML.
Після того, як SignedInfo і його дочірні елементи сформовані, необхідно провести канонізацію всього елемента SignedInfo по алгоритму, зазначеному в елементі CanonicalizationMethod. Після цього варто одержати значення дайджесту й обернути це значення в елемент SignatureValue, як показано в Лістінгу 4. Під час підписання канонічна форма елемента SignedInfo використовується в якості даному, підлягаючому підписанню. У неї входять усі дочірні елементи елемента SignedInfo.
Лістінг 4
<?xml version=”1.0”?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”>
<SOAP-ENV:Header>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#GetSpecialDiscountedBookingForPartners">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>
BIUddkjKKo2...
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
halHJghyf765....
</ds:SignatureValue>
<ds:KeyInfo>
</ds:KeyInfo>
</ds:Signature>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<s:GetSpecialDiscountedBookingForPartners
xmlns:s=“http://www.MyHotel.com/partnerservice/”
ID="GetSpecialDiscountedBookingForPartners">
<!--Parameters passed with the method call-->
</s:GetSpecialDiscountedBookingForPartners>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Необхідно відзначити, що структура SignedInfo містить посилання на підпис даних (атрибут URI елемента Reference), значення дайджесту й ім'я методу підпису, а також інші біти інформації. Отже, підписання структури SignedInfo фактично означає підписання дайджесту даних разом із самим посиланням на ці дані.
У Лістінгу 2 в елемента Signature є ще один дочірній елемент по імені KeyInfo. Четвертий крок - створення його нащадків. У Лістінгу 5 елемент KeyInfo містить дочірній елемент KeyName. Цей елемент KeyName є ідентифікатором ключа, що використовується для перевірки підпису. KeyName - це просто "заповнювач" для ідентифікаторів ключа. Специфікація "Цифровий підпис XML" не визначає механізм, що співвідносить ідентифікатор з дійсною парою ключів, використовуваних для підписання. Проектування механізму ідентифікації ключа - задача додатків, що