无法在Xamarin.Android上使用X509Certificate2签署soap xml消息,
错误是:缺少System.Security.Cryptography.Xml。
还有其他解决方案吗?
我的代码:
X509Certificate2 certifikat = new X509Certificate2(certificate, certificatePassword);
RSACryptoServiceProvider provider = (RSACryptoServiceProvider)certifikat.PrivateKey;
SignedXml xml = null;
try
{
xml = new SignedXml(dokument);
xml.SigningKey = provider;
xml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;
KeyInfo keyInfo = new KeyInfo();
KeyInfoX509Data keyInfoData = new KeyInfoX509Data();
keyInfoData.AddCertificate(certifikat);
keyInfoData.AddIssuerSerial(certifikat.Issuer, certifikat.GetSerialNumberString());
keyInfo.AddClause(keyInfoData);
xml.KeyInfo = keyInfo;
Reference reference = new Reference("");
reference.AddTransform(new XmlDsigEnvelopedSignatureTransform(false));
reference.AddTransform(new XmlDsigExcC14NTransform(false));
reference.Uri = "#signXmlId";
xml.AddReference(reference);
xml.ComputeSignature();
XmlElement element = xml.GetXml();
dokument.DocumentElement.AppendChild(element);
}
catch (Exception ex)
{
}