如何在xml中插入我的X509证书签名

如何在xml中插入我的X509证书签名,xml,certificate,x509,sign,Xml,Certificate,X509,Sign,我有一个包含数据的xml,但要发送到服务器,我需要它有一个x509证书(我已经在我的机器上安装了这个证书)。 问题是,我需要以与下面示例相同的格式插入它,但我是一个新手,从我的证书的细节来看,我真的不知道该怎么做 <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="h

我有一个包含数据的xml,但要发送到服务器,我需要它有一个x509证书(我已经在我的机器上安装了这个证书)。 问题是,我需要以与下面示例相同的格式插入它,但我是一个新手,从我的证书的细节来看,我真的不知道该怎么做

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
        <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
        <ds:Reference URI="#assinar">
            <ds:Transforms>
                <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
                <ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
                    <ds:XPath>not(ancestor-or-self::ds:Signature)</ds:XPath>
                </ds:Transform>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
            <ds:DigestValue></ds:DigestValue>
        </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>
    </ds:SignatureValue>
    <ds:KeyInfo>
        <ds:X509Data>
            <ds:X509Certificate>
            </ds:X509Certificate>
        </ds:X509Data>
        <ds:KeyValue>
            <ds:RSAKeyValue>
                <ds:Modulus>
                </ds:Modulus>
                <ds:Exponent>AQAB</ds:Exponent>
            </ds:RSAKeyValue>
        </ds:KeyValue>
    </ds:KeyInfo>
</ds:Signature>

非(祖先或自身::ds:Signature)
AQAB
在我的示例中,字段
是ASCII格式的(我猜),但我的字段是十六进制的


我需要转换它吗?发送到某个url并获取响应?

您可以尝试对二进制数据进行base64编码,这就是电子邮件附件的工作方式。您的API提供程序没有显示任何示例吗?

您可以尝试对二进制数据进行base64编码,这就是使用电子邮件附件的方式。您的API提供程序没有显示任何示例吗?

将ds:X509证书定义为X.509证书的base64编码

类似地,将模和指数描述为
加密二进制
类型

表示正确的编码是将值转换为字节数组,删除任何前导的零值字节,然后对其进行base64编码。我可以从经验中说,不是所有平台都删除前导零,也不是所有平台都支持在删除前导零的情况下读取值。因此,您可以在这里定义希望如何符合规范

如果没有任何语言标记或代码,这里最好的答案是所有答案都在XML签名规范中定义:。

将ds:X509证书定义为X.509证书的base64编码

类似地,将模和指数描述为
加密二进制
类型

表示正确的编码是将值转换为字节数组,删除任何前导的零值字节,然后对其进行base64编码。我可以从经验中说,不是所有平台都删除前导零,也不是所有平台都支持在删除前导零的情况下读取值。因此,您可以在这里定义希望如何符合规范


如果没有任何语言标记或代码,这里最好的答案是所有答案都在XML签名规范中定义:。

实际上,API提供程序文档只是说它需要签名,并提供了一个XML作为示例(我在上面发布的示例)。我有一个证书,但我不知道如何将其格式化为所需的参数(我已经编写了这四个参数)。有没有办法将我的证书自动插入到相应的xml中?实际上,API提供程序文档只是说它需要签名,并提供了一个xml作为示例(我在上面发布的示例)。我有一个证书,但我不知道如何将其格式化为所需的参数(我已经编写了这四个参数)。有没有办法将我的证书自动插入到相应的xml中?