我有.xml
个文件,必须使用digital certificate
格式PKCS#7 version 1.5 (RFC 2315)
和DER (ITU-T Recommendation X.690
.xml
将被发送给政府。 WebService
只接受我上面提到的格式。
我能做的事 - 感谢this website是数字签名.xml
,其中.pfx
文件是我用Certificate Export Wizard
生成的.xml
文件。我用来签名的课程在提到的网站或here上。
到目前为止,我试图理解的是,我需要根据.pfx
标准使用X.690
文件签署using System.Security.Cryptography.X509Certificates;
,但我只能访问此命名空间:
.pfx
显然是X.509格式。
注意:
我有些困惑 - 将证书导出到Internet Explorer - Certificate Export Wizard
我正在使用PKCS#12
我可以:
是 - 导出私钥 - 然后会在.pfx
中生成Cryptographic Message Syntax Standard - PKCS#7
否 - 不导出私钥 - 根据标准.p7b
证明我认为我需要但我会收到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; }
标准签名。
我可以知道如何根据X.690格式签名吗?
感谢大家的时间和回复。
我的代码如下:
{{1}}
答案 0 :(得分:1)
使用签名者的私钥对xml文件进行签名时会生成数字签名。当您将XML文件+签名者的公钥(如X509 .cer文件)+数字签名发送给有兴趣验证它的一方时,可以验证此签名。
PFX / p12是一个包含签名者私钥和公钥的容器。您可以从政府或政府批准的密钥管理人处获得此密钥对。然后,您将使用此PFX执行数字签名。
cryptoAPI支持PKCS#7。
以上是基础知识。这样可以让您更清楚地查询。