private IEnumerable GetIndirectDataTokens()

in net/JetBrains.SignatureVerifier/src/Crypt/AuthenticodeSignatureVerifier.cs [200:234]


  private IEnumerable<SpcIndirectDataToken> GetIndirectDataTokens(SignedMessage signedMessage)
  {
    List<SpcIndirectDataToken> tokens = new List<SpcIndirectDataToken>();

    if (signedMessage.SignedData.SignedContent != null && signedMessage.SignedData.SignedContentType.Equals(OIDs.SPC_INDIRECT_DATA))
    {
      tokens.Add(new SpcIndirectDataToken(signedMessage.SignedData));
    }

    var signersStore = signedMessage.SignedData.GetSignerInfos();

    foreach (SignerInformation signer in signersStore.GetSigners())
    {
      if (signer.UnsignedAttributes != null)
      {
        var nestedSignatures = signer.UnsignedAttributes.GetAll(OIDs.SPC_NESTED_SIGNATURE);

        foreach (Attribute nestedSignature in nestedSignatures)
        {
          foreach (var nestedSignatureAttrValue in nestedSignature.AttrValues)
          {
            var contentInfo = ContentInfo.GetInstance(nestedSignatureAttrValue);
            var cmsSignedData = new CmsSignedData(contentInfo);

            if (cmsSignedData.SignedContent != null && cmsSignedData.SignedContentType.Equals(OIDs.SPC_INDIRECT_DATA))
            {
              tokens.Add(new SpcIndirectDataToken(cmsSignedData));
            }
          }
        }
      }
    }

    return tokens;
  }