首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有关于xmlseclib的文档吗?

有关于xmlseclib的文档吗?
EN

Stack Overflow用户
提问于 2014-07-23 22:51:42
回答 2查看 4K关注 0票数 5

我已经对XML进行了签名,但我不知道如何在签名中包含KeyValue元素。拥有一些文档可以节省很多时间。

下面的代码(如果您感兴趣的话)是我到目前为止对xmlseclibs所做的工作:

代码语言:javascript
复制
<?php
require('xmlseclibs.php'); 

XML字符串

代码语言:javascript
复制
$getToken = '<getToken>
<item>
<Semilla>Random string</Semilla>
</item>
</getToken>';

创建XML对象(要签名)

代码语言:javascript
复制
$getToken_DOMDocument = new DOMDocument(); 
$getToken_DOMDocument -> loadXml($getToken); 

使用xmlseclib创建签名对象

代码语言:javascript
复制
$getToken_XMLSecurityDSig = new XMLSecurityDSig(); 
$getToken_XMLSecurityDSig -> setCanonicalMethod(XMLSecurityDSig::C14N); 

试图关闭不起作用的ds:前缀

代码语言:javascript
复制
$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); 

访问必要的密钥数据

代码语言:javascript
复制
$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对象签名

代码语言:javascript
复制
$getToken_XMLSecurityDSig -> sign($XMLSecurityKey); 

添加公钥

代码语言:javascript
复制
$getToken_XMLSecurityDSig -> add509Cert(file_get_contents('../../DTE/certificado/firma/certificado.pem')); 

将信封签名附加到XML对象

代码语言:javascript
复制
$getToken_XMLSecurityDSig -> appendSignature($getToken_DOMDocument -> documentElement); 

将签名的XML代码保存到文件中。

代码语言:javascript
复制
$getToken_DOMDocument -> save('sign-basic-test.xml'); 
?>

此外,还想从这个图书馆:

  1. 了解官方和可信任的存储库,以确保库不被破坏。
  2. 关闭"ds:“前缀(因为我正在生成的XML示例或文档都不包含这种前缀)。
  3. 行分隔Base64类型值中的每个X字符。
  4. 完全缩进(否则根本没有)。

我从在这里输入链接描述得到了图书馆

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-07-23 23:15:05

下面列出了一些可能有助于解决这些问题的链接:

如何在XML签名消息中使用phpseclib验证签名?

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独占规范化?

不确定它能解决所有问题,但应该对你有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2015-02-21 10:02:40

我编写了一个名为xmldsig的facade库,以简化下划线XMLSecLibs的使用

在这个库中,代码的结果如下:

代码语言:javascript
复制
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();
    );
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24922384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档