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;
}