//create a new workbook var workbook = new GrapeCity.Documents.Excel.Workbook(); workbook.Open(GetResourceStream(@"xlsx\Signature.xlsx")); ISignatureSet signatures = workbook.Signatures; bool signed = false; bool valid = false; X509Certificate2 certificate = null; // Verify the first signed signature foreach (var signature in signatures) { if (signature.IsSigned) { signed = true; certificate = signature.Details.SignatureCertificate; // Verify signature valid = signature.IsValid; break; } } // Verify certificate if (certificate != null) { var status = X509ChainStatusFlags.NoError; // build the certificate chain var chain = new X509Chain(); bool certValid = chain.Build(certificate); // inspect the results if (!certValid) { var chainStatus = chain.ChainStatus; for (var i = 0; i < chainStatus.Length; i++) { status |= chainStatus[i].Status; } } // Extract the certificate verification result. // You can write them to trace listeners or draw them on your screen to observe the result. var isCertificateExpired = status.HasFlag(X509ChainStatusFlags.NotTimeValid); var isCertificateRevoked = status.HasFlag(X509ChainStatusFlags.Revoked); var isCertificateUntrusted = status.HasFlag(X509ChainStatusFlags.UntrustedRoot); }
' Create a new Workbook Dim workbook As New Workbook workbook.Open(GetResourceStream("Signature.xlsx")) Dim signatures As ISignatureSet = workbook.Signatures Dim signed = False Dim valid = False Dim certificate As X509Certificate2 = Nothing ' Verify the first signed signature For Each signature In signatures If signature.IsSigned Then signed = True certificate = signature.Details.SignatureCertificate ' Verify signature valid = signature.IsValid Exit For End If Next ' Verify certificate If certificate IsNot Nothing Then Dim status = X509ChainStatusFlags.NoError ' build the certificate chain Dim chain As New X509Chain Dim certValid As Boolean = chain.Build(certificate) ' inspect the results If Not certValid Then Dim chainStatus = chain.ChainStatus For i = 0 To chainStatus.Length - 1 status = status Or chainStatus(i).Status Next End If ' Extract the certificate verification result ' You can write them to trace listeners or draw them on your screen to observe the result. Dim isCertificateExpired = status.HasFlag(X509ChainStatusFlags.NotTimeValid) Dim isCertificateRevoked = status.HasFlag(X509ChainStatusFlags.Revoked) Dim isCertificateUntrusted = status.HasFlag(X509ChainStatusFlags.UntrustedRoot) End If