XML签名为任何类型的数据提供完整性,消息身份验证和/或签名者身份验证服务,无论是位于包含签名的XML还是其他位置。
我正在开发一个集成,需要在将 xml 有效负载传递到请求内容之前对其进行签名和加密。 我正在使用 java 来签名和加密 xml 文档,这是......
我使用 OpenSaml 库,我想验证嵌入在未签名的 SAMLResponse 中的签名断言(XML 签名)。验证总是失败,有办法验证签名的屁股...
我想解析 XML-DSIG 文件及其内容。我在维基百科上阅读了有关它的结构和一些 xmldsig-core 规范的信息。但我无法弄清楚一些事情,假设这是一个例子......
如何使用 Spring Security SAML 扩展签署 SAML 请求/响应
我能够使用 Spring Security SAML 扩展让我的应用程序充当具有 IDP SSOCIRCLE 的 SP。我的客户有以下要求: 1. 签署断言:断言
我需要实施 EBICS 协议,特别是 HPB 请求,并且我需要签署我的 XML 文件: 我需要实施 EBICS 协议,特别是 HPB 请求,并且我需要签署我的 XML 文件: <?xml version="1.0" encoding="UTF-8"?> <ebicsNoPubKeyDigestsRequest xmlns="http://www.ebics.org/H003" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ebics.org/H003 http://www.ebics.org/H003/ebics_keymgmt_request.xsd" Version="H003" Revision="1"> <header authenticate="true"> <static> <HostID>EBIXQUAL</HostID> <Nonce>234AB2340FD2C23035764578FF3091C1</Nonce> <Timestamp>2015-11-13T10:32:30.123Z</Timestamp> <PartnerID>AD598</PartnerID> <UserID>EF056</UserID> <OrderDetails> <OrderType>HPB</OrderType> <OrderAttribute>DZHNN</OrderAttribute> </OrderDetails> <SecurityMedium>0000</SecurityMedium> </static> <mutable /> </header> </ebicsNoPubKeyDigestsRequest> 所以我需要对元素进行签名 验证=“真” 为了用 C# 签署我的文档,我编写了以下代码: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.PreserveWhitespace = false; xmlDoc.Load("hpbtest.xml"); RSA Key = new GestionCertificat("CN=XML_ENC_TEST_CERT4").getClePrivee(); // Create a SignedXml object. SignedXml signedXml = new SignedXml(xmlDoc); // Add the key to the SignedXml document. signedXml.SigningKey = Key; // Create a reference to be signed. Reference reference = new Reference(); reference.Uri = "#xpointer(//*[@authenticate='true'])"; // Add an enveloped transformation to the reference. XmlDsigExcC14NTransform env = new XmlDsigExcC14NTransform(); reference.AddTransform(env); // Add the reference to the SignedXml object. signedXml.AddReference(reference); // Compute the signature. signedXml.ComputeSignature(); // Get the XML representation of the signature and save // it to an XmlElement object. XmlElement xmlDigitalSignature = signedXml.GetXml(); // Append the element to the XML document. xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true)); xmlDoc.Save("hpbtest.xml"); 但是当我尝试签名时,我在网上收到此错误 signedXml.ComputeSignature() : 参考元素不正确 您能帮我解决我的问题吗? 提前谢谢您! 托马斯! 我通过 SignedXml 和 Reference 类对 XPointer 操作进行了逆向工程,并且..我可以在单独的答案中为您提供所有详细信息,但我现在的结论是,您只能有两种类型的查询: #xpointer(/) 这是有效的,因为它被明确检查,并且 #xpointer(id( 再次明确(使用 string.StartsWith)检查。 因此,正如您在评论中指出的那样,实现此目的的唯一方法似乎是扩展 SignedXml 类并重写 GetIdElement 方法,如下所示: public class CustomSignedXml : SignedXml { XmlDocument xmlDocumentToSign; public CustomSignedXml(XmlDocument xmlDocument) : base(xmlDocument) { xmlDocumentToSign = xmlDocument; } public override XmlElement GetIdElement(XmlDocument document, string idValue) { XmlElement matchingElement = null; try { matchingElement = base.GetIdElement(document, idValue); } catch (Exception idElementException) { Trace.TraceError(idElementException.ToString()); } if (matchingElement == null) { // at this point, idValue = xpointer(//*[@authenticate='true']) string customXPath = idValue.TrimEnd(')'); customXPath = customXPath.Substring(customXPath.IndexOf('(') + 1); matchingElement = xmlDocumentToSign.SelectSingleNode(customXPath) as XmlElement; } return matchingElement; } } 然后在消费者代码中,只需将SignedXml更改为CustomSignedXml即可: CustomSignedXml signedXml = new CustomSignedXml(xmlDoc);
使用 PHP 通过 RSASSA-PSS (SHA256-RSA-MGF1) 签署 XML 时出现问题
我正在尝试使用 PHP 中的 RSASSA-PSS (SHA256-RSA-MGF1) 算法对 XML 文档进行签名。我使用以下 OpenSSL 命令创建了一个证书: openssl req -newkey rsa-pss -new -nodes -x509...
我正在使用 xmlsec1 工具和 XML 数字签名 (XMLDSIG) 标准对 SOAP 信封进行签名。这是我正在使用的未签名的 SOAP 信封。 我正在使用 xmlsec1 工具和 XML 数字签名 (XMLDSIG) 标准对 SOAP 信封进行签名。这是我正在使用的未签名 SOAP 信封。 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue /> </Reference> </SignedInfo> <SignatureValue /> <KeyInfo> <X509Data /> </KeyInfo> </Signature> <soapenv:Body>This is the body of the SOAP envelope</soapenv:Body> </soapenv:Envelope> 我使用以下 xmlsec1 命令生成了签名信封。 xmlsec1 --sign --privkey-pem private_key.pem --output signed_test.xml test.xml 生成的签名信封如下 <?xml version="1.0"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>mT/qq9iX2rvTrWOPfE8thFOKdbA=</DigestValue> </Reference> </SignedInfo> <SignatureValue>eZFngILLORe+r/07FupC9YPJEB3n3qhTyEi0+3J7Ivv/20rm7YNU5CllAiUmLUDJ 0A9/YLDo2BOokrNmAkpWtxU1xs83FH3NDecfqEj1hgIXsbkMhJLh2szssR6nRoff ZV8FqWjQgUGS/IKLY0R9S/pxMxROKkiJ0J71hFHvuFphN/ZtpOGXdmX7oaS6EZmT BeSu8R2jGiMVbGyf4+EBxkpSN6VF4tn3MWgfP+MV7ICw3MHHgNVd7Nqy7vS+kOtZ hq2Tndg4b7O79XW2ni5tmpKJzHPDBfWFS+fEXHqkOFcPnb1rCk3oTOcaCqHOVZ1m BbiB7r2bxyrKDL7uIA4suw==</SignatureValue> <KeyInfo> <X509Data/> </KeyInfo> </Signature> <soapenv:Body>This is the body of the SOAP envelope</soapenv:Body> </soapenv:Envelope> 我试图理解 和 是如何计算的。根据 SOAP 信封,我知道的是: DigestValue 使用 SHA-1 算法,如元素中所指定。 SignatureValue 使用 RSA-SHA1 算法生成,如元素中所指定。 当我使用 <soap:Body> 算法对 sha1 进行哈希处理时,我得到了不同的值。如果有人可以展示正确生成这些值的详细步骤,我们将不胜感激。 我在这个 github 存储库中检查了 xmlsec 的代码:https://github.com/lsh123/xmlsec我认为这是正确的。 我对C和密码学的了解很差,所以我无法直接向你解释。 但是通过在整个项目中搜索“SignatureValue”,我在第805行找到了这个文件https://github.com/lsh123/xmlsec/blob/master/src/gcrypt/signatures.c#L805,其中解释 SignatureValue 基于 DSA-SHA1 的评论,这里是: DSA-SHA1 signature transform http://www.w3.org/TR/xmldsig-core/#sec-SignatureAlg: The output of the DSA algorithm consists of a pair of integers usually referred by the pair (r, s). The signature value consists of the base64 encoding of the concatenation of two octet-streams that respectively result from the octet-encoding of the values r and s in that order. Integer to octet-stream conversion must be done according to the I2OSP operation defined in the RFC 2437 [PKCS1] specification with a l parameter equal to 20. For example, the SignatureValue element for a DSA signature (r, s) with values specified in hexadecimal: r = 8BAC1AB6 6410435C B7181F95 B16AB97C 92B341C0 s = 41E2345F 1F56DF24 58F426D1 55B4BA2D B6DCD8C8 from the example in Appendix 5 of the DSS standard would be <SignatureValue>i6watmQQQ1y3GB+VsWq5fJKzQcBB4jRfH1bfJFj0JtFVtLotttzYyA==</SignatureValue> 希望它可以帮助您找到您想要的东西。
如何在 TypeScript 中使用 xml-crypto 在 XML 签名中添加对 KeyInfo 的引用?
我正在开发一个项目,使用 TypeScript 中的 xml-crypto 包来签署 XML 文档。我的目标是对 XML 进行签名并在同一签名中包含对 KeyInfo 元素的引用。 这里'...
我想通过添加存档时间戳将 XAdES-XL 签名扩展到 XAdES-A。我已遵循 ETSI EN 319 132-1 V1.2.1 (2022-02) 第 5.5.2.2 节中的每个步骤,但我仍然收到错误...
如何在 JSON、Fetch API、Django 中传递签名图像 url
使用 javascript 和 Fetch API 动态生成内容时,我在显示数据库中的图像时遇到问题。使用模板标签访问图像时图像显示正确...
如何确定 InclusiveNamespaces 元素的 PrefixList 属性的值
签署 SOAP 请求时,我应该如何确定需要在 InclusiveNamespaces 元素的 PrefixList 属性中列出哪些值? 我正在努力确保我所设定的...
我需要通过 REST 发送签名的 XML 消息。 XSD 包含架构 https://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd。我能够成功基因...
如何在 C# .NET 中正确为 ECDsa 进行 CryptoConfig.AddAlgorithm?
我有一个使用 edcsa-sha384 签名的 XMLDocument,开箱即用的 .NET SignedXml 不支持该算法,所以我遵循了这篇文章(https://www.scottbrady91.com/c-sharp/ecdsa- xml-点...
在Python中使用signxml生成和验证签名时出现问题(命名空间和签名)
首先抱歉我的英语。我正在Python中使用signxml迈出第一步,从我看到的文章来看,它看起来很容易使用,但我无法正确签署文档,因为我
这将是一个奇怪的事情。我正在尝试在波兰政府网站上填写一份表格以进行犯罪记录检查,但出于某种奇怪的原因,它要求我签署一个 xml 文件作为签名...
如何计算 XAdES 签名的 SignedProperties 的摘要?
我几天来一直在努力研究如何计算 XAdES 签名中 SignedProperties 元素的摘要。我有一个参考 XML 文件,其中计算了两个摘要值(文件
我是 SOAP 新手,我需要在这里使用它。 我正在尝试向外部端点发送 SOAP 请求。 为了让它工作,我必须使用证书多次签署 SOAP 请求并加密......
格式化带有 SignatureValue 的 XML 后签名验证失败
来自 apache santuario xmlsignature 测试, 我做了一个测试:向 XML 文件添加签名,然后将其保存为文件,然后从该文件中读取它,并验证签名。 请参考com...