public TimeStampToken()

in net/JetBrains.SignatureVerifier/src/Crypt/BC/TimeStampToken.cs [40:119]


    public TimeStampToken(
      CmsSignedData signedData)
    {
      this.tsToken = signedData;

      if (!this.tsToken.SignedContentType.Equals(PkcsObjectIdentifiers.IdCTTstInfo))
      {
        throw new TspValidationException("ContentInfo object not for a time stamp.");
      }

      ICollection signers = tsToken.GetSignerInfos().GetSigners();

      if (signers.Count != 1)
      {
        throw new ArgumentException("Time-stamp token signed by "
                                    + signers.Count
                                    + " signers, but it must contain just the TSA signature.");
      }


      IEnumerator signerEnum = signers.GetEnumerator();

      signerEnum.MoveNext();
      tsaSignerInfo = (SignerInformation)signerEnum.Current;

      try
      {
        CmsProcessable content = tsToken.SignedContent;
        MemoryStream bOut = new MemoryStream();

        content.Write(bOut);

        this.tstInfo = new TimeStampTokenInfo(
          TstInfo.GetInstance(
            Asn1Object.FromByteArray(bOut.ToArray())));

        Attribute attr = tsaSignerInfo.SignedAttributes[
          PkcsObjectIdentifiers.IdAASigningCertificate];

//				if (attr == null)
//				{
//					throw new TspValidationException(
//						"no signing certificate attribute found, time stamp invalid.");
//				}
//
//				SigningCertificate signCert = SigningCertificate.GetInstance(
//					attr.AttrValues[0]);
//
//				this.certID = EssCertID.GetInstance(signCert.GetCerts()[0]);

        if (attr != null)
        {
          if (attr.AttrValues[0] is SigningCertificateV2)
          {
            SigningCertificateV2 signCert = SigningCertificateV2.GetInstance(attr.AttrValues[0]);
            this.certID = new CertID(EssCertIDv2.GetInstance(signCert.GetCerts()[0]));
          }
          else
          {
            SigningCertificate signCert = SigningCertificate.GetInstance(attr.AttrValues[0]);
            this.certID = new CertID(EssCertID.GetInstance(signCert.GetCerts()[0]));
          }
        }
        else
        {
          attr = tsaSignerInfo.SignedAttributes[PkcsObjectIdentifiers.IdAASigningCertificateV2];

          if (attr == null)
            throw new TspValidationException("no signing certificate attribute found, time stamp invalid.");

          SigningCertificateV2 signCertV2 = SigningCertificateV2.GetInstance(attr.AttrValues[0]);

          this.certID = new CertID(EssCertIDv2.GetInstance(signCertV2.GetCerts()[0]));
        }
      }
      catch (CmsException e)
      {
        throw new TspException(e.Message, e.InnerException);
      }
    }