/// <summary> /// Is the certificate valid? /// </summary> /// <param name="certificateStorage">Storage of certificates.</param> /// <param name="date">Date on which it must be valid.</param> /// <returns>Is certificate valid.</returns> public CertificateValidationResult Validate(ICertificateStorage certificateStorage, DateTime date) { if (SelfSignatureValid) { if (certificateStorage.IsRootCertificate(this)) { return CertificateValidationResult.Valid; } else { CertificateValidationResult result = CertificateValidationResult.NoSignature; foreach (Signature signature in this.signatures) { result = signature.Verify(GetSignatureContent(), certificateStorage, date); if (result == CertificateValidationResult.Valid) { return certificateStorage.IsRevoked(signature.SignerId, Id, date); } } return result; } } else { return CertificateValidationResult.SelfsignatureInvalid; } }