private async Task verifyTimeStampAsync()

in net/JetBrains.SignatureVerifier/src/Crypt/SignerInfoVerifier.cs [180:225]


    private async Task<VerifySignatureResult> verifyTimeStampAsync(
      SignatureVerificationParams signatureVerificationParams)
    {
      var tst = TimeStampToken;

      if (tst == null)
        return VerifySignatureResult.Valid;

      var tstCerts = tst.GetCertificates();
      var tstCertsList = tstCerts.EnumerateMatches(tst.SignerID).ToList();

      if (tstCertsList.Count < 1)
        return new VerifySignatureResult(VerifySignatureStatus.InvalidTimestamp)
          { Message = Messages.signer_cert_not_found };

      var tstCert = tstCertsList[0];

      try
      {
        tst.Validate(tstCert);

        if (signatureVerificationParams.BuildChain)
          try
          {
            var tstCmsSignedData = tst.ToCmsSignedData();
            var certs = tstCmsSignedData.GetCertificates();
            return await buildCertificateChainAsync(tstCert, certs, signatureVerificationParams);
          }
          catch (PkixCertPathBuilderException ex)
          {
            return VerifySignatureResult.InvalidChain(ex.FlatMessages());
          }
      }
      catch (TspException ex)
      {
        return new VerifySignatureResult(VerifySignatureStatus.InvalidTimestamp)
          { Message = ex.FlatMessages() };
      }
      catch (CertificateExpiredException ex)
      {
        return new VerifySignatureResult(VerifySignatureStatus.InvalidTimestamp)
          { Message = ex.FlatMessages() };
      }

      return VerifySignatureResult.Valid;
    }