public static CmsSignedData ReplaceSigners()

in net/JetBrains.SignatureVerifier/src/Crypt/BC/CMSSignedData.cs [260:312]


    public static CmsSignedData ReplaceSigners(
      CmsSignedData signedData,
      SignerInformationStore signerInformationStore)
    {
      //
      // copy
      //
      CmsSignedData cms = new CmsSignedData(signedData);

      //
      // replace the store
      //
      cms.signerInfoStore = signerInformationStore;

      //
      // replace the signers in the SignedData object
      //
      Asn1EncodableVector digestAlgs = new Asn1EncodableVector();
      Asn1EncodableVector vec = new Asn1EncodableVector();

      foreach (SignerInformation signer in signerInformationStore.GetSigners())
      {
        digestAlgs.Add(Helper.FixAlgID(signer.DigestAlgorithmID));
        vec.Add(signer.ToSignerInfo());
      }

      Asn1Set digests = new DerSet(digestAlgs);
      Asn1Set signers = new DerSet(vec);
      Asn1Sequence sD = (Asn1Sequence)signedData.signedData.ToAsn1Object();

      //
      // signers are the last item in the sequence.
      //
      vec = new Asn1EncodableVector(
        sD[0], // version
        digests);

      for (int i = 2; i != sD.Count - 1; i++)
      {
        vec.Add(sD[i]);
      }

      vec.Add(signers);

      cms.signedData = SignedData.GetInstance(new BerSequence(vec));

      //
      // replace the contentInfo with the new one
      //
      cms.contentInfo = new ContentInfo(cms.contentInfo.ContentType, cms.signedData);

      return cms;
    }