public string Sign(string xmlString)
{
XmlDocument doc = new XmlDocument();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("cdp", "http://www.hl7.org.tw/EMR/CDocumentPayload/v1.0");
nsmgr.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#");
nsmgr.AddNamespace("xades132", "http://uri.etsi.org/01903/v1.3.2#");
nsmgr.AddNamespace("xades141", "http://uri.etsi.org/01903/v1.4.1#");
doc.PreserveWhitespace = true;
doc.LoadXml(xmlString);
SignedXml sig = new SignedXml(doc);
X509Certificate2 cert = new X509Certificate2("d:\\cer.pfx", "password");
sig.SigningKey = cert.PrivateKey;
Reference reff = new Reference("");
reff.AddTransform(new XmlDsigEnvelopedSignatureTransform());
sig.AddReference(reff);
KeyInfo keyInfo = new KeyInfo();
keyInfo.AddClause(new KeyInfoX509Data(cert));
sig.KeyInfo = keyInfo;
sig.ComputeSignature();
doc.DocumentElement.AppendChild(sig.GetXml());
StringWriter sw = new StringWriter();
doc.Save(sw);
return sw.ToString();
}
沒有留言:
張貼留言