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"); } } }