public void Remove()
        {
            //ExStart
            //ExFor:DigitalSignatureUtil
            //ExFor:DigitalSignatureUtil.LoadSignatures(String)
            //ExFor:DigitalSignatureUtil.RemoveAllSignatures(Stream, Stream)
            //ExFor:DigitalSignatureUtil.RemoveAllSignatures(String, String)
            //ExSummary:Shows how to remove digital signatures from a digitally signed document.
            // There are two ways of using the DigitalSignatureUtil class to remove digital signatures
            // from a signed document by saving an unsigned copy of it somewhere else in the local file system.
            // 1 - Determine the locations of both the signed document and the unsigned copy by filename strings:
            DigitalSignatureUtil.RemoveAllSignatures(MyDir + "Digitally signed.docx",
                                                     ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromString.docx");

            // 2 - Determine the locations of both the signed document and the unsigned copy by file streams:
            using (Stream streamIn = new FileStream(MyDir + "Digitally signed.docx", FileMode.Open))
            {
                using (Stream streamOut = new FileStream(ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromStream.docx", FileMode.Create))
                {
                    DigitalSignatureUtil.RemoveAllSignatures(streamIn, streamOut);
                }
            }

            // Verify that both our output documents have no digital signatures.
            Assert.That(DigitalSignatureUtil.LoadSignatures(ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromString.docx"), Is.Empty);
            Assert.That(DigitalSignatureUtil.LoadSignatures(ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromStream.docx"), Is.Empty);
            //ExEnd
        }
Exemple #2
0
        public void DetectDigitalSignatures()
        {
            //ExStart
            //ExFor:FileFormatUtil.DetectFileFormat(String)
            //ExFor:FileFormatInfo
            //ExFor:FileFormatInfo.LoadFormat
            //ExFor:FileFormatInfo.HasDigitalSignature
            //ExSummary:Shows how to use the FileFormatUtil class to detect the document format and presence of digital signatures.
            // Use a FileFormatInfo instance to verify that a document is not digitally signed.
            FileFormatInfo info = FileFormatUtil.DetectFileFormat(MyDir + "Document.docx");

            Assert.AreEqual(".docx", FileFormatUtil.LoadFormatToExtension(info.LoadFormat));
            Assert.False(info.HasDigitalSignature);

            CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

            DigitalSignatureUtil.Sign(MyDir + "Document.docx", ArtifactsDir + "File.DetectDigitalSignatures.docx",
                                      certificateHolder, new SignOptions()
            {
                SignTime = DateTime.Now
            });

            // Use a new FileFormatInstance to confirm that it is signed.
            info = FileFormatUtil.DetectFileFormat(ArtifactsDir + "File.DetectDigitalSignatures.docx");

            Assert.True(info.HasDigitalSignature);

            // We can load and access the signatures of a signed document in a collection like this.
            Assert.AreEqual(1, DigitalSignatureUtil.LoadSignatures(ArtifactsDir + "File.DetectDigitalSignatures.docx").Count);
            //ExEnd
        }
        public void LoadAndRemove()
        {
            //ExStart
            //ExFor:DigitalSignatureUtil
            //ExFor:DigitalSignatureUtil.LoadSignatures(String)
            //ExFor:DigitalSignatureUtil.LoadSignatures(Stream)
            //ExFor:DigitalSignatureUtil.RemoveAllSignatures(Stream, Stream)
            //ExFor:DigitalSignatureUtil.RemoveAllSignatures(String, String)
            //ExSummary:Shows how to load and remove digital signatures from a digitally signed document.
            // Load digital signatures via filename string to verify that the document is signed
            DigitalSignatureCollection digitalSignatures = DigitalSignatureUtil.LoadSignatures(MyDir + "Digitally signed.docx");

            Assert.AreEqual(1, digitalSignatures.Count);

            // Re-save the document to an output filename with all digital signatures removed
            DigitalSignatureUtil.RemoveAllSignatures(MyDir + "Digitally signed.docx", ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromString.docx");

            // Remove all signatures from the document using stream parameters
            using (Stream streamIn = new FileStream(MyDir + "Digitally signed.docx", FileMode.Open))
            {
                using (Stream streamOut = new FileStream(ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromStream.docx", FileMode.Create))
                {
                    DigitalSignatureUtil.RemoveAllSignatures(streamIn, streamOut);
                }
            }

            // We can also load a document's digital signatures via stream, which we will do to verify that all signatures have been removed
            using (Stream stream = new FileStream(ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromStream.docx", FileMode.Open))
            {
                digitalSignatures = DigitalSignatureUtil.LoadSignatures(stream);
                Assert.AreEqual(0, digitalSignatures.Count);
            }
            //ExEnd
        }
Exemple #4
0
        public void GetEnumerator()
        {
            //ExStart
            //ExFor:DigitalSignatureCollection.GetEnumerator
            //ExSummary:Shows how to load and enumerate all digital signatures of a document.
            DigitalSignatureCollection digitalSignatures =
                DigitalSignatureUtil.LoadSignatures(MyDir + "Digitally signed.docx");

            using (IEnumerator <DigitalSignature> enumerator = digitalSignatures.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    // Do something useful
                    DigitalSignature ds = enumerator.Current;

                    if (ds != null)
                    {
                        Console.WriteLine(ds.ToString());
                    }
                }
            }
            //ExEnd

            Assert.AreEqual(1, digitalSignatures.Count);

            DigitalSignature signature = digitalSignatures[0];

            Assert.True(signature.IsValid);
            Assert.AreEqual(DigitalSignatureType.XmlDsig, signature.SignatureType);
            Assert.AreEqual("12/23/2010 02:14:40 AM", signature.SignTime.ToString("MM/dd/yyyy hh:mm:ss tt"));
            Assert.AreEqual("Test Sign", signature.Comments);

            Assert.AreEqual(signature.IssuerName, signature.CertificateHolder.Certificate.IssuerName.Name);
            Assert.AreEqual(signature.SubjectName, signature.CertificateHolder.Certificate.SubjectName.Name);

            Assert.AreEqual("CN=VeriSign Class 3 Code Signing 2009-2 CA, " +
                            "OU=Terms of use at https://www.verisign.com/rpa (c)09, " +
                            "OU=VeriSign Trust Network, " +
                            "O=\"VeriSign, Inc.\", " +
                            "C=US", signature.IssuerName);

            Assert.AreEqual("CN=Aspose Pty Ltd, " +
                            "OU=Digital ID Class 3 - Microsoft Software Validation v2, " +
                            "O=Aspose Pty Ltd, " +
                            "L=Lane Cove, " +
                            "S=New South Wales, " +
                            "C=AU", signature.SubjectName);
        }
        public void GetEnumeratorEx()
        {
            //ExStart
            //ExFor:DigitalSignatureCollection.GetEnumerator
            //ExSummary:Shows how to load and enumerate all digital signatures of a document.
            DigitalSignatureCollection digitalSignatures = DigitalSignatureUtil.LoadSignatures(MyDir + "Document.Signed.doc");

            var enumerator = digitalSignatures.GetEnumerator();

            while (enumerator.MoveNext())
            {
                // Do something useful
                DigitalSignature ds = (DigitalSignature)enumerator.Current;
                Console.WriteLine(ds.ToString());
            }
            //ExEnd
        }
        public void LoadSignatures()
        {
            //ExStart
            //ExFor:DigitalSignatureUtil.LoadSignatures(Stream)
            //ExFor:DigitalSignatureUtil.LoadSignatures(String)
            //ExSummary:Shows how to load all existing signatures from a document.
            // By string:
            DigitalSignatureCollection digitalSignatures = DigitalSignatureUtil.LoadSignatures(MyDir + "Document.DigitalSignature.docx");

            // By stream:
            Stream stream = new FileStream(MyDir + "Document.DigitalSignature.docx", FileMode.Open);

            digitalSignatures = DigitalSignatureUtil.LoadSignatures(stream);
            //ExEnd

            stream.Close();
        }
        public void LoadSignaturesEx()
        {
            //ExStart
            //ExFor:DigitalSignatureUtil.LoadSignatures(Stream)
            //ExFor:DigitalSignatureUtil.LoadSignatures(String)
            //ExSummary:Shows how to load signatures from a document by stream and by string.
            Stream docStream = new FileStream(MyDir + "Document.DigitalSignature.docx", FileMode.Open);

            // By stream:
            DigitalSignatureCollection digitalSignatures = DigitalSignatureUtil.LoadSignatures(docStream);

            docStream.Close();

            // By string:
            digitalSignatures = DigitalSignatureUtil.LoadSignatures(MyDir + "Document.DigitalSignature.docx");
            //ExEnd
        }
        public void LoadSignatures()
        {
            //ExStart
            //ExFor:DigitalSignatureUtil.LoadSignatures(Stream)
            //ExFor:DigitalSignatureUtil.LoadSignatures(String)
            //ExSummary:Shows how to load all existing signatures from a document.
            // Load all signatures from the document using string parameters
            DigitalSignatureCollection digitalSignatures = DigitalSignatureUtil.LoadSignatures(MyDir + "Document.DigitalSignature.docx");

            Assert.NotNull(digitalSignatures);

            // Load all signatures from the document using stream parameters
            Stream stream = new FileStream(MyDir + "Document.DigitalSignature.docx", FileMode.Open);

            digitalSignatures = DigitalSignatureUtil.LoadSignatures(stream);
            //ExEnd

            stream.Close();
        }
        public void SignDocument()
        {
            //ExStart
            //ExFor:CertificateHolder
            //ExFor:CertificateHolder.Create(String, String)
            //ExFor:DigitalSignatureUtil.Sign(Stream, Stream, CertificateHolder, SignOptions)
            //ExFor:SignOptions.Comments
            //ExFor:SignOptions.SignTime
            //ExSummary:Shows how to digitally sign documents.
            // Create an X.509 certificate from a PKCS#12 store, which should contain a private key.
            CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

            // Create a comment and date which will be applied with our new digital signature.
            SignOptions signOptions = new SignOptions
            {
                Comments = "My comment",
                SignTime = DateTime.Now
            };

            // Take an unsigned document from the local file system via a file stream,
            // then create a signed copy of it determined by the filename of the output file stream.
            using (Stream streamIn = new FileStream(MyDir + "Document.docx", FileMode.Open))
            {
                using (Stream streamOut = new FileStream(ArtifactsDir + "DigitalSignatureUtil.SignDocument.docx", FileMode.OpenOrCreate))
                {
                    DigitalSignatureUtil.Sign(streamIn, streamOut, certificateHolder, signOptions);
                }
            }
            //ExEnd

            using (Stream stream = new FileStream(ArtifactsDir + "DigitalSignatureUtil.SignDocument.docx", FileMode.Open))
            {
                DigitalSignatureCollection digitalSignatures = DigitalSignatureUtil.LoadSignatures(stream);
                Assert.AreEqual(1, digitalSignatures.Count);

                DigitalSignature signature = digitalSignatures[0];

                Assert.True(signature.IsValid);
                Assert.AreEqual(DigitalSignatureType.XmlDsig, signature.SignatureType);
                Assert.AreEqual(signOptions.SignTime.ToString(), signature.SignTime.ToString());
                Assert.AreEqual("My comment", signature.Comments);
            }
        }
        public void GetEnumerator()
        {
            //ExStart
            //ExFor:DigitalSignatureCollection.GetEnumerator
            //ExSummary:Shows how to load and enumerate all digital signatures of a document.
            DigitalSignatureCollection digitalSignatures =
                DigitalSignatureUtil.LoadSignatures(MyDir + "Document.DigitalSignature.docx");

            using (IEnumerator<DigitalSignature> enumerator = digitalSignatures.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    // Do something useful
                    DigitalSignature ds = enumerator.Current;

                    if (ds != null)
                        Console.WriteLine(ds.ToString());
                }
            }

            //ExEnd
        }
        public void Load()
        {
            //ExStart
            //ExFor:DigitalSignatureUtil
            //ExFor:DigitalSignatureUtil.LoadSignatures(String)
            //ExFor:DigitalSignatureUtil.LoadSignatures(Stream)
            //ExSummary:Shows how to load signatures from a digitally signed document.
            // There are two ways of loading a signed document's collection of digital signatures using the DigitalSignatureUtil class.
            // 1 -  Load from a document from a local file system filename:
            DigitalSignatureCollection digitalSignatures =
                DigitalSignatureUtil.LoadSignatures(MyDir + "Digitally signed.docx");

            // If this collection is nonempty, then we can verify that the document is digitally signed.
            Assert.AreEqual(1, digitalSignatures.Count);

            // 2 -  Load from a document from a FileStream:
            using (Stream stream = new FileStream(MyDir + "Digitally signed.docx", FileMode.Open))
            {
                digitalSignatures = DigitalSignatureUtil.LoadSignatures(stream);
                Assert.AreEqual(1, digitalSignatures.Count);
            }
            //ExEnd
        }
        public void SignDocument()
        {
            //ExStart
            //ExFor:CertificateHolder
            //ExFor:CertificateHolder.Create(String, String)
            //ExFor:DigitalSignatureUtil.Sign(Stream, Stream, CertificateHolder, SignOptions)
            //ExFor:SignOptions.Comments
            //ExFor:SignOptions.SignTime
            //ExSummary:Shows how to sign documents using certificate holder and sign options.
            CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

            SignOptions signOptions = new SignOptions {
                Comments = "My comment", SignTime = DateTime.Now
            };

            using (Stream streamIn = new FileStream(MyDir + "Digitally signed.docx", FileMode.Open))
            {
                using (Stream streamOut = new FileStream(ArtifactsDir + "DigitalSignatureUtil.SignDocument.docx", FileMode.OpenOrCreate))
                {
                    DigitalSignatureUtil.Sign(streamIn, streamOut, certificateHolder, signOptions);
                }
            }
            //ExEnd

            using (Stream stream = new FileStream(ArtifactsDir + "DigitalSignatureUtil.SignDocument.docx", FileMode.Open))
            {
                DigitalSignatureCollection digitalSignatures = DigitalSignatureUtil.LoadSignatures(stream);
                Assert.AreEqual(1, digitalSignatures.Count);

                DigitalSignature signature = digitalSignatures[0];

                Assert.True(signature.IsValid);
                Assert.AreEqual(DigitalSignatureType.XmlDsig, signature.SignatureType);
                Assert.AreEqual(signOptions.SignTime.ToString(), signature.SignTime.ToString());
                Assert.AreEqual("My comment", signature.Comments);
            }
        }