Exemple #1
0
        /// <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;
              }
        }