Я подписал XML, но не знаю, как включить в подпись элемент KeyValue. Наличие документации сэкономило бы много времени.
Код ниже (если вам интересно) — это то, что мне удалось сделать с xmlseclibs до сих пор:
<?php
require('xmlseclibs.php');
XML-строка
$getToken = '<getToken>
<item>
<Semilla>Random string</Semilla>
</item>
</getToken>';
Создание объекта XML (для подписи)
$getToken_DOMDocument = new DOMDocument();
$getToken_DOMDocument -> loadXml($getToken);
Создание объекта подписи с помощью xmlseclibs
$getToken_XMLSecurityDSig = new XMLSecurityDSig();
$getToken_XMLSecurityDSig -> setCanonicalMethod(XMLSecurityDSig::C14N);
Попытка отключить префикс ds:, который не работал
$options['prefix'] = '';
$options['prefix_ns'] = '';
$options['force_uri'] = TRUE;
$options['id_name'] = 'ID';
$getToken_XMLSecurityDSig -> addReference($getToken_DOMDocument, XMLSecurityDSig::SHA1, array('http://www.w3.org/2000/09/xmldsig#enveloped-signature', 'http://www.w3.org/TR/2001/REC-xml-c14n-20010315'), $options);
Доступ к необходимым ключевым данным
$XMLSecurityKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type'=>'private'));
$XMLSecurityKey -> loadKey('../../DTE/certificado/firma/certificado.pem', TRUE);
/* if key has Passphrase, set it using $objKey -> passphrase = <passphrase> */
Подписание XML-объекта
$getToken_XMLSecurityDSig -> sign($XMLSecurityKey);
Добавление открытого ключа
$getToken_XMLSecurityDSig -> add509Cert(file_get_contents('../../DTE/certificado/firma/certificado.pem'));
Добавление обернутой подписи к XML-объекту
$getToken_XMLSecurityDSig -> appendSignature($getToken_DOMDocument -> documentElement);
Сохранение подписанного XML-кода в файл
$getToken_DOMDocument -> save('sign-basic-test.xml');
?>
Дополнительно также хотелось бы из этой библиотеки:
- Знайте официальный и надежный репозиторий, чтобы убедиться, что библиотека не повреждена.
- Отключение префикса «ds:» (поскольку ни пример, ни документация XML, который я создаю, не содержат такого префикса).
- Разбивает строку через каждые X символов в значениях типа Base64.
- Полный отступ (иначе вообще никакой).
Я получил библиотеку от введите здесь описание ссылки
Заранее спасибо.