public void TestWithAttributeCertificate()
        {
            IList certList = new ArrayList();

            certList.Add(SignCert);

            IX509Store x509Certs = X509StoreFactory.Create(
                "Certificate/Collection",
                new X509CollectionStoreParameters(certList));

            CmsSignedDataStreamGenerator gen = new CmsSignedDataStreamGenerator();

            gen.AddSigner(OrigKP.Private, OrigCert, CmsSignedDataGenerator.DigestSha1);

            gen.AddCertificates(x509Certs);

            IX509AttributeCertificate attrCert = CmsTestUtil.GetAttributeCertificate();

            ArrayList attrCerts = new ArrayList();

            attrCerts.Add(attrCert);
            IX509Store store = X509StoreFactory.Create(
                "AttributeCertificate/Collection",
                new X509CollectionStoreParameters(attrCerts));

            gen.AddAttributeCertificates(store);

            MemoryStream bOut = new MemoryStream();

            Stream sigOut = gen.Open(bOut, true);

            byte[] testBytes = Encoding.ASCII.GetBytes(TestMessage);
            sigOut.Write(testBytes, 0, testBytes.Length);

            sigOut.Close();

            CmsSignedDataParser sp = new CmsSignedDataParser(bOut.ToArray());

            sp.GetSignedContent().Drain();

            Assert.AreEqual(4, sp.Version);

            store = sp.GetAttributeCertificates("Collection");

            ArrayList coll = new ArrayList(store.GetMatches(null));

            Assert.AreEqual(1, coll.Count);

            Assert.IsTrue(coll.Contains(attrCert));
        }
        private void CheckSigParseable(byte[] sig)
        {
            CmsSignedDataParser sp = new CmsSignedDataParser(sig);

            sp.Version.ToString();
            CmsTypedStream sc = sp.GetSignedContent();

            if (sc != null)
            {
                sc.Drain();
            }
            sp.GetAttributeCertificates("Collection");
            sp.GetCertificates("Collection");
            sp.GetCrls("Collection");
            sp.GetSignerInfos();
            sp.Close();
        }
Beispiel #3
0
    public static Stream ReplaceSigners(Stream original, SignerInformationStore signerInformationStore, Stream outStr)
    {
        CmsSignedDataStreamGenerator cmsSignedDataStreamGenerator = new CmsSignedDataStreamGenerator();
        CmsSignedDataParser          cmsSignedDataParser          = new CmsSignedDataParser(original);

        cmsSignedDataStreamGenerator.AddSigners(signerInformationStore);
        CmsTypedStream signedContent = cmsSignedDataParser.GetSignedContent();
        bool           flag          = signedContent != null;
        Stream         stream        = cmsSignedDataStreamGenerator.Open(outStr, cmsSignedDataParser.SignedContentType.Id, flag);

        if (flag)
        {
            Streams.PipeAll(signedContent.ContentStream, stream);
        }
        cmsSignedDataStreamGenerator.AddAttributeCertificates(cmsSignedDataParser.GetAttributeCertificates("Collection"));
        cmsSignedDataStreamGenerator.AddCertificates(cmsSignedDataParser.GetCertificates("Collection"));
        cmsSignedDataStreamGenerator.AddCrls(cmsSignedDataParser.GetCrls("Collection"));
        Platform.Dispose(stream);
        return(outStr);
    }