public SpcIndirectDataToken()

in net/JetBrains.SignatureVerifier/src/Crypt/BC/Authenticode/SpcIndirectDataToken.cs [18:50]


  public SpcIndirectDataToken(
    CmsSignedData signedData)
  {
    if (signedData.SignedContent == null)
      throw new ArgumentException("SignedContent is empty");

    if (!signedData.SignedContentType.Equals(OIDs.SPC_INDIRECT_DATA))
      throw new CmsException($"Invalid content type. Expected SPC_INDIRECT_DATA, got {signedData.SignedContentType}");

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

    if (signers.Count != 1)
      throw new AuthenticodeException($"SPC_INDIRECT_DATA token is signed by ${signers.Count} signers, but it must contain only 1 signature.");

    IEnumerator signerEnum = signers.GetEnumerator();

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

    Pkcs7ProcessableObject pkcs7ProcessableObject = signedData.SignedContent as Pkcs7ProcessableObject;

    if (pkcs7ProcessableObject == null)
      throw new AuthenticodeException($"Invalid type of SignedContent: ${signedData.SignedContent.GetType()}");

    try
    {
      IndirectDataContent = SpcIndirectDataContent.GetInstance(pkcs7ProcessableObject.GetContent());
    }
    catch (Exception e)
    {
      throw new AuthenticodeException(e.Message, e.InnerException);
    }
  }