XMLDsig предоставляет гибкие возможности подписания множества документов.
Мы понимаем, что у многих разработчиков ИС отсутствует опыт работы с форматом XMLDsig.
Частично мы попытались помочь им. Так, мы опубликовали методику, которая кратко описывает основные
принципы применения ЭЦП с различными форматами (
pki.gov.kz/index.php/ru/razrabotchikam).
Подписать не XML документ вы можете, например, переведя сам документ любого формата в формат Base64 и разместив его в теле XML файла. Тогда передаваться будет один XML документ. При этом, вам необходимо определить область внутри XML документа, по которой будет вычисляться хэш
<ds:Reference URI="idObject">
То есть, тэг
будет содержать хэш на данные в этой области.
Вы также можете указать путь до локального или удаленного файла, например
<ds:Reference URI="file:///C:/myfile.doc">
в этом случае будет передаваться документ + подписанный xml. Таким образом, при проверке подписи будет выполнена попытка найти файл по URL, с последующим вычислениям хэша по нему для сравнения с тем, что было в подписи.