Есть ли документация для xmlseclibs?

Я подписал 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'); 
?>

Дополнительно также хотелось бы из этой библиотеки:

  1. Знайте официальный и надежный репозиторий, чтобы гарантировать, что библиотека не повреждена.
  2. Отключение префикса "ds:" (потому что ни пример, ни документация по XML, которую я создаю, не содержат такого префикса).
  3. Разрывы строки каждые X символов в значениях типа Base64.
  4. Полный отступ (в противном случае вообще ничего).

Я получил библиотеку от введите ссылку ссылку здесь

Заранее спасибо.

2 ответа

Я написал библиотеку фасадов под названием xmldsig для упрощения использования подчеркивания XMLSecLibs

С этой библиотекой код приведен так:

public function testSign()
{
    $getToken = '<getToken>
    <item>
    <Semilla>Random string</Semilla>
    </item>
    </getToken>';

    $data = new DOMDocument();
    $data->loadXml($getToken);

    $adapter = new XmlseclibsAdapter();
    $adapter
        ->setPrivateKey(file_get_contents('privateKey.pem'))
        ->setPublicKey(file_get_contents('publicKey.pem'))
        ->setCanonicalMethod('http://www.w3.org/2001/10/xml-exc-c14n#')
        ->sign($data);

        echo $data->saveXML();
    );
}
Другие вопросы по тегам