我有一个.xml
具有与要签署的文件digital certificate
中的格式PKCS#7 version 1.5 (RFC 2315)
和DER (ITU-T Recommendation X.690
那.xml
将被发送到政府。WebService
只接受我上面提到的格式。
我能做的-多亏了这个网站,我使用生成.xml
的.pfx
文件进行了数字签名,Certificate Export Wizard
下面对此进行了说明。我用来签名的课程位于提及的网站或此处。
从到目前为止的尝试中,我将需要根据标准对.xml
with.pfx
文件进行签名,X.690
但是我只能访问此名称空间:
using System.Security.Cryptography.X509Certificates;
这显然适用于X.509格式。
注意:
我有些困惑-将证书从那里导出到.pfx
我正在使用的文件中Internet Explorer - Certificate Export Wizard
,我可以:
是的-出口私钥-然后将它在产生PKCS#12
,但.pfx
否-不导出私钥-根据Cryptographic Message Syntax Standard - PKCS#7
我认为我需要的标准,但我会收到.p7b
文件的证书
我必须说我是证书和数字签名的新手,所以我什至不确定我是否正确导出了证书,第二件事是如何按照X.690
标准进行签名。
我可以知道如何按照X.690格式签名吗?
谢谢大家的宝贵时间和答复。
我的代码如下:
bool res = false;
try
{
byte[] certBytes = System.IO.File.ReadAllBytes(pvkPath);
X509Certificate2 cert = new X509Certificate2(certBytes, certPass);
XmlDocument doc = new XmlDocument();
doc.Load(xmlPath);
// sign the document with the private key of the certificate
XmlDsig.SignXml(doc, cert);
// save the document
doc.Save(xmlSavePath);
// verify that the document has a signature
bool hasSignature = XmlDsig.HasSignatureElement(doc);
return res = true;
}
catch (Exception)
{ return res; }
PKCS#7 / CMS格式的数字签名是包含您的XML数据+签名者的x509公钥证书(.cer文件)+数字签名的blob。整个Blob以ASN 1.0格式(X690)编码。由于缺少原始数据或签署者证书,斑点可能会有变化。这种变化称为分离签名。
当您使用签名者的私钥对xml文件签名时,会生成数字签名。当您将XML文件+签名者的公钥(作为X509 .cer文件)+数字签名发送给有兴趣对其进行验证的一方时,可以验证此签名。
PFX / p12是一个包含签名者的私钥和公钥的容器。您可以从政府或政府批准的主要保管人那里获得此密钥对。然后,您将使用此PFX执行数字签名。
cryptoAPI支持PKCS#7 。
以上是基础知识。这样可以使您的查询更清晰。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句