Есть ли документация для 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. Полный отступ (иначе вообще никакой).

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

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


person mikl    schedule 23.07.2014    source источник


Ответы (2)


Вот список ссылок, которые могут помочь с этими проблемами:

Как проверить подпись с помощью phpseclib в XML сообщение подписи?

http://code.google.com/p/xmlseclibs/issues/attachmentText?id=6&aid=-1080340148797098435&name=example.php&token=81f737657f6cf89b3e7fcdb6cc15033b

http://code.google.com/p/xmlseclibs/issues/detail?id=13

Какая правильная эксклюзивная канонизация XML?

Не уверен, что это решит все, но должно немного помочь вам.

person Hektor    schedule 23.07.2014
comment
Спасибо, это помогает, но это все еще не официальная документация, необходимая для того, чтобы иметь полную карту библиотеки, а затем переходить непосредственно к тому, что вам нужно, а с другой стороны, чтобы сразу знать ограничения библиотеки. Я совершенно уверен, что такой вещи не существует (на сегодняшний день), но мне пришлось сделать последнюю попытку. - person mikl; 24.07.2014

Я написал фасадную библиотеку под названием 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();
    );
}
person Maks3w    schedule 21.02.2015
comment
Я получаю фатальную ошибку: класс «XmlseclibsAdapter» не найден в /Applications/MAMP/htdocs/test.php, хотя я включил файлы через include «AdapterInterface.php»; и включите «XmlseclibsAdapter.php»; Любые указатели относительно того, куда я могу пойти отсюда? - person Advait S; 30.08.2016
comment
Вы должны импортировать класс FR3D\XmlDSig\Adapter\XmlseclibsAdapter - person Maks3w; 13.09.2016