Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 使用信封签名时放置签名_Xml_Digital Signature_Xml Signature - Fatal编程技术网

Xml 使用信封签名时放置签名

Xml 使用信封签名时放置签名,xml,digital-signature,xml-signature,Xml,Digital Signature,Xml Signature,我需要使用标准对整个XML文档进行签名。要求签名必须放在已签名的文件中 我这样做的方法是使用信封签名。让我困惑的是,当涉及到签名元素的位置时,实际的需求是什么。 在查看示例时,最常见的方法似乎是将signature元素作为根元素的子元素,并使其成为其最后一个子元素,如下所示: <?xml version="1.0"?> <myRootElement> <someChildElement></someChildElement> &l

我需要使用标准对整个XML文档进行签名。要求签名必须放在已签名的文件中

我这样做的方法是使用信封签名。让我困惑的是,当涉及到签名元素的位置时,实际的需求是什么。 在查看示例时,最常见的方法似乎是将signature元素作为根元素的子元素,并使其成为其最后一个子元素,如下所示:

<?xml version="1.0"?>
<myRootElement>
    <someChildElement></someChildElement>

    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        ...
        <ds:Reference URI="" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        ...
    </ds:Signature>

</myRootElement>

...
...
我想知道的是:当涉及到安置时,具体的要求是什么?它必须作为根元素的子元素放置,还是允许它只是根元素的一个中心元素?像这样:

<?xml version="1.0"?>
<myRootElement>
    <someChildElement>
        <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
            ...
            <ds:Reference URI="" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
            ...
        </ds:Signature>
    </someChildElement>
</myRootElement>

...
...

我试图从规范本身理解这一点,但我没有做到(可能是因为英语不是我的母语)。我将感谢你在这方面的投入!提前谢谢

阅读本标准时,我们发现以下定义:

签名,信封 签名位于包含签名作为元素的XML内容之上。内容提供根XML文档元素。显然,封装签名必须注意不要在SignatureValue的计算中包含它们自己的值

它基本上说,封装的签名必须是被签名元素的子元素


如果使用嵌入签名对某个深埋节点进行签名,签名块将进入该节点

确保:这意味着根据标准,我的第二个示例是无效的?在您的第二个示例中,对文档内容进行了签名,因此,据我所知,它应该放在myRootElement下。