Как добавить префикс к элементу подписи в C#
Мы подписываем элементы xml, используя класс SignedXml. Требуется добавить узел подписи в Ws Security для связи со службой.
Мы могли бы подписать элементы и проверить их. В этом случае пример XML-кода, как показано ниже
X509Certificate2 certificate = new X509Certificate2(CertPath, CertPassword);
// Create a new XML document.
XmlDocument doc = new XmlDocument();
// Format the document to ignore white spaces.
doc.PreserveWhitespace = false;
// Load the passed XML file using it's name.
doc.Load(new XmlTextReader(FileName));
SignedXml signedXml = new SignedXml(doc);
signedXml.SigningKey = certificate.PrivateKey;
// Create a reference to be signed.
Reference reference = new Reference();
reference.Uri = "#" + elementID;
// Add an enveloped transformation to the reference.
XmlDsigEnvelopedSignatureTransform envTransform = new XmlDsigEnvelopedSignatureTransform();
reference.AddTransform(envTransform);
// Add the reference to the SignedXml object.
signedXml.AddReference(reference);
// Create a new KeyInfo object.
KeyInfo keyInfo = new KeyInfo();
// Load the certificate into a KeyInfoX509Data object
// and add it to the KeyInfo object.
keyInfo.AddClause(new KeyInfoX509Data(certificate));
// Add the KeyInfo object to the SignedXml object.
signedXml.KeyInfo = keyInfo;
// Compute the signature.
signedXml.ComputeSignature();
// Get the XML representation of the signature and save
// it to an XmlElement object.
XmlElement xmlDigitalSignature = signedXml.GetXml();
с помощью этого элемента подписи, сгенерированного как < signature> .... </signature>
, но мы хотим сгенерировать его как < ds:signature> .... </ds:signature>
Попытка установить префикс явно, но затем подпись не проверяется.
Не могли бы вы помочь, как мы можем этого добиться?
1 ответ
Поскольку это достаточно общий вопрос, этот пост может быть полезен для тех, кто ищет ту же информацию.
Для конкретного проекта, над которым я работаю, представление IRS A2A, это то, что я использовал, когда думал, что мне нужно добавить префиксы к Signature
элемент. Однако, обсуждая с некоторыми другими пользователями SO, я отказался от идеи добавления префиксов к Signature
элемент, так как он на самом деле не нужен.