public void Validate()

in net/JetBrains.SignatureVerifier/src/Crypt/BC/TimeStampToken.cs [170:235]


    public void Validate(
      X509Certificate cert)
    {
      try
      {
        byte[] hash = DigestUtilities.CalculateDigest(
          certID.GetHashAlgorithmName(), cert.GetEncoded());

        if (!Arrays.FixedTimeEquals(certID.GetCertHash(), hash))
        {
          throw new TspValidationException("certificate hash does not match certID hash.");
        }

        if (certID.IssuerSerial != null)
        {
          if (!certID.IssuerSerial.Serial.Value.Equals(cert.SerialNumber))
          {
            throw new TspValidationException("certificate serial number does not match certID for signature.");
          }

          GeneralName[] names = certID.IssuerSerial.Issuer.GetNames();
          bool found = false;

          for (int i = 0; i != names.Length; i++)
          {
            if (names[i].TagNo == GeneralName.DirectoryName
                && X509Name.GetInstance(names[i].Name).Equivalent(cert.CertificateStructure.Issuer))
            {
              found = true;
              break;
            }
          }

          if (!found)
          {
            throw new TspValidationException("certificate name does not match certID for signature. ");
          }
        }

        TspUtil.ValidateCertificate(cert);

        cert.CheckValidity(tstInfo.GenTime);

        if (!tsaSignerInfo.Verify(cert))
        {
          throw new TspValidationException("signature not created by certificate.");
        }
      }
      catch (CmsException e)
      {
        if (e.InnerException != null)
        {
          throw new TspException(e.Message, e.InnerException);
        }

        throw new TspException("CMS exception: " + e, e);
      }
      catch (CertificateEncodingException e)
      {
        throw new TspException("problem processing certificate: " + e, e);
      }
      catch (SecurityUtilityException e)
      {
        throw new TspException("cannot find algorithm: " + e.Message, e);
      }
    }