public CertificateVerification(CertificateAndContext cert, IValidationContext ctx)
        {
            if (ctx is null)
            {
                throw new System.ArgumentNullException(nameof(ctx));
            }

            CertificateAndContext = cert;
            if (cert != null)
            {
                try
                {
                    cert.Certificate.CheckValidity(ctx.ValidationDate);
                    validityPeriodVerification = new Result(ResultStatus.VALID, null);
                }
                catch (CertificateExpiredException)
                {
                    validityPeriodVerification = new Result(ResultStatus.INVALID, "$UI_Signatures_ValidationText_CertificateExpired");
                }
                catch (CertificateNotYetValidException)
                {
                    validityPeriodVerification = new Result(ResultStatus.INVALID, "$UI_Signatures_ValidationText_CertificateNotYetValid");
                }
                CertificateStatus status = ctx.GetCertificateStatusFromContext(cert);
                if (status != null)
                {
                    certificateStatus = new RevocationVerificationResult(status);
                }

                Summary.SetStatus(ResultStatus.VALID, null);
                if (ValidityPeriodVerification.IsInvalid)
                {
                    Summary.SetStatus(ResultStatus.INVALID, "$UI_Signatures_ValidationText_CertificateIsNotValid");
                }
                if (CertificateStatus != null)
                {
                    if (CertificateStatus.Status == CertificateValidity.REVOKED)
                    {
                        Summary.SetStatus(ResultStatus.INVALID, "$UI_Signatures_ValidationText_CertificateRevoked");
                    }
                    else
                    {
                        if (CertificateStatus.Status == CertificateValidity.UNKNOWN)
                        {
                            Summary.SetStatus(ResultStatus.UNDETERMINED, "$UI_Signatures_ValidationText_RevocationUnknown");
                        }
                    }
                }
                else if (!ValidityPeriodVerification.IsInvalid)
                {
                    Summary.SetStatus(ResultStatus.UNDETERMINED, "$UI_Signatures_ValidationText_NoRevocationData");
                }
            }
        }