Assembly: Microsoft.Office.InfoPath (in microsoft.office.infopath.dll)
The Signature class provides the Sign method for writing the XML digital signature block and computing the cryptographic hash for the signed data.
The Signature class provides the following properties for retrieving information about the digital signature:
Certificate Gets the Certificate object for the X.509 digital certificate with which the form user signed a form or a set of data in a form.
Comment Gets the comment the user added to the digital signature that the user associated with a form or a set of data in a form.
SignatureBlockXmlNode Gets the XML node that contains a digital signature. You can use this property to extend the signature properties or the set of data that InfoPath stores with the signature.
The following example displays information about the first digital signature for the first set of signed data in a form (or if the form template is configured to sign the entire form, information about the first signature for the entire form). First, a reference to the Signature object that represents the signature is retrieved. The Status and Comment properties of the Signature class are used to get the status and comment values from the signature. The Certificate property of the Signature class is used to get the Certificate object of the signature, which is later used to display who the certificate was issued to. The SignatureBlockXmlNode property of the Signature class is used to retrieve the XML node subtree that contains the signature information. Finally, all of this information is displayed in a series of message boxes.
// Get signature. Signature mySignature = this.SignedDataBlocks.Signatures; // Get status of signature. string sigStatus = mySignature.Status.ToString(); // Get comment. string signatureComment = mySignature.Comment; // Get certificate used to sign with. Certificate signatureCertificate = mySignature.Certificate; // Get XML node that contains the signature. XPathNavigator signatureNode = mySignature.SignatureBlockXmlNode; // Display properties. MessageBox.Show("Signature properties:\n\nStatus: " + sigStatus + "\nComment: " + signatureComment + "\nCertificate Issued To: " + signatureCertificate.IssuedTo); // Display XML node subtree that contains signature. MessageBox.Show("Digital signature XML block: \n" + signatureNode.InnerXml);