Skip to main content
All docs
V25.1
  • PackageSignatureValidation.Items Property

    Retrieves a list of items with detailed validation information.

    Namespace: DevExpress.Office.DigitalSignatures

    Assembly: DevExpress.Docs.v25.1.dll

    NuGet Package: DevExpress.Document.Processor

    Declaration

    public IList<SignatureValidationInfo> Items { get; }

    Property Value

    Type Description
    IList<SignatureValidationInfo>

    A list of objects with validation information.

    Remarks

    Check the Items property to obtain a list of SignatureValidationInfo objects with information about signature validation. A number of items in the returned IList is equal to the number of signatures in the document.

    Use properties from the table below for more information:

    Property Description
    SignatureValidationInfo.PassedChecks Returns verification types the signature passed.
    SignatureValidationInfo.PassedCheckDetails Obtains information about passed verifications.
    SignatureValidationInfo.FailedChecks Returns verification types the signature did not pass.
    SignatureValidationInfo.FailedCheckDetails Retrieves information about failed verifications.
    SignatureValidationInfo.CheckDetails Gets information about all verifications.

    The code sample below validates signatures in a DOCX and XLSX document, checks the result, and displays information in the console:

    using DevExpress.Office.DigitalSignatures;
    using System.Diagnostics;
    using System.Net;
    
    static void Main(string[] args)
    {
        ValidateSignature("Template_signed.docx");
        ValidateSignature("Template_signed.xlsx");
    }
    
    private static void ValidateSignature(string path)
    {
        DocumentSigner validator = new DocumentSigner();
    
        //In this example, certificate validation is skipped
        SignatureValidationOptions validationOptions = new SignatureValidationOptions();
        validationOptions.ValidationFlags = ~ValidationFlags.ValidateSignatureCertificate & ~ValidationFlags.ValidateTimestampCertificate;
    
        //Validate the signature:
        PackageSignatureValidation signatureValidation = validator.Validate(path, validationOptions);
        AnalyzeValidationResult(signatureValidation);        
    
    }
    
    private static void AnalyzeValidationResult(PackageSignatureValidation signatureValidation)
    {
        string validationMessage = signatureValidation.ResultMessage;
    
        //Check validation result and show information in the console:
        switch (signatureValidation.Result)
        {
            case PackageSignatureValidationResult.Valid:
                Console.WriteLine(validationMessage); Console.ReadKey();
                Process.Start(output);
                break;
    
            case PackageSignatureValidationResult.SignaturesNotFound:
                Console.WriteLine(validationMessage);
                break;
    
            case PackageSignatureValidationResult.Invalid:
            case PackageSignatureValidationResult.PartiallyValid:
                var failedCheckDetails = signatureValidation.Items[0].FailedCheckDetails;
                Console.WriteLine(validationMessage);
                int i = 1;
                foreach (SignatureCheckResult checkResult in failedCheckDetails)
                {
                    Console.WriteLine(String.Format("Validation details {0}: \r\n" +
                        "{1} failed, Info: {2} \r\n", i, checkResult.CheckType, checkResult.Info));
                    i++;
                }
                Console.ReadKey();
                break;
        }
    }
    
    See Also