SecureBlackbox 16: How to reference elements inside the Signature element
Create an instance of the TElXMLReference class, but don't fill the URIData and URINode properties. Add it to the References after the call to UpdateReferencesDigest(). Assign URI and ID for the Reference and the referenced element. That's all.
For example, signing the KeyInfo element:
ElXMLSigner.UpdateReferencesDigest();
...
// add the reference after UpdateReferencesDigest call, otherwise an exception will be thrown
TElXMLReference Ref = new TElXMLReference();
Ref.URI = "#KeyInfo1";
// Ref.URINode = // skip this. The node will be located and the digest value will be recalculated in the Save method after it is generated and added to the XML document. It is done automatically for all elements under the Signature element.
ElXMLSigner.References.Add(Ref);
...
ElXMLSigner.Sign(); // this method generates the Signature structure
...
ElXMLSigner.Signature.KeyInfo.ID = "KeyInfo1"; // set an Id for the KeyInfo element
We appreciate your feedback. If you have any questions, comments, or suggestions about this article please contact our support team at support@nsoftware.com.