我需要签署使用c#的UBL2.1发票。问题是,在签名之后,我需要嵌入Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
UBLExtensions元素,如下所示
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">稍后我尝试添加这些元素,但是签名被认为无效。
我没有任何签署XML文件的经验,所以任何帮助都会得到很大的认可。
编辑
初始的XML文件是
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">
... Invoice Elements
</Invoice>我需要生产出这样的东西
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">
<ext:UBLExtensions>
<ext:UBLExtension xmlns:sac="urn:oasis:names:specification:ubl:schema:xsd:SignatureAggregateComponents-2" xmlns:sbc="urn:oasis:names:specification:ubl:schema:xsd:SignatureBasicComponents-2" xmlns:sig="urn:oasis:names:specification:ubl:schema:xsd:CommonSignatureComponents-2">
<ext:ExtensionContent>
<sig:UBLDocumentSignatures>
<sac:SignatureInformation>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
... signature contents produced by signed xml class
</Signature>
</sac:SignatureInformation>
</sig:UBLDocumentSignatures>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
... Invoice Elements
</Invoice>如果稍后添加这些元素,则认为签名无效。
再一次,任何帮助都将受到高度赞赏。
指向实际签名文件的链接是:xml
发布于 2019-01-22 18:10:08
问题是,在签署过程之前,扩展元素必须放在文档上。我真丢脸!谢谢你的时间!
发布于 2019-09-20 08:49:16
这个怎么样..。
var nodes = xmlDoc.GetElementsByTagName("Invoice");
nodes(0).AppendChild(signature);
xmlDoc.Save(xmlFilePath);https://stackoverflow.com/questions/54022024
复制相似问题