2014-07-23 2 views
4

Я подписал XML, но я не знаю, как включить элемент KeyValue в подпись. Наличие некоторой документации позволит сэкономить много времени.Есть ли какая-либо документация для xmlseclibs?

ниже код (если вы заинтересованы) является то, что мне удалось сделать с 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); 

Попытка отключить дц: префикс, который не работал

$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'); 
?> 

Additionaly также хотел бы из этой библиотеки:

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

Я получил библиотеку из enter link description here

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

ответ

2

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

How to validate signature with phpseclib, in a XML signature message?

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

Which is the proper XML exclusive canonicalization?

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

+0

Спасибо, это помогает, но это еще не формальное документация должна иметь полную карту библиотеки, а затем идти прямо к тому, что вам нужно, и, с другой стороны, знать ограничения библиотеки. Я совершенно уверен, что такой вещи не существует (на сегодняшний день), но мне пришлось сделать мою последнюю попытку. – mikl

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(); 
    ); 
} 
+0

Я получаю фатальную ошибку: «Класс« XmlseclibsAdapter »не найден в /Applications/MAMP/htdocs/test.php», хотя я включил файлы через include «AdapterInterface.php»; и включить «XmlseclibsAdapter.php»; Любые указания относительно того, где я могу идти отсюда? –

+0

Вы должны импортировать класс 'FR3D \ XmlDSig \ Adapter \ XmlseclibsAdapter' – Maks3w

Смежные вопросы