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);
            }
        }
Ejemplo n.º 2
0
        public void SetSignatureProviderId()
        {
            //ExStart:SetSignatureProviderID
            Document doc = new Document(MyDir + "Signature line.docx");

            SignatureLine signatureLine =
                ((Shape)doc.FirstSection.Body.GetChild(NodeType.Shape, 0, true)).SignatureLine;

            SignOptions signOptions = new SignOptions
            {
                ProviderId = signatureLine.ProviderId, SignatureLineId = signatureLine.Id
            };

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

            DigitalSignatureUtil.Sign(MyDir + "Digitally signed.docx",
                                      ArtifactsDir + "SignDocuments.SetSignatureProviderId.docx", certHolder, signOptions);
            //ExEnd:SetSignatureProviderID
        }
        public void IncorrectPasswordForDecrypring()
        {
            CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

            Document doc            = new Document(MyDir + "Document.Encrypted.docx", new LoadOptions("docPassword"));
            string   outputFileName = MyDir + @"\Artifacts\Document.Encrypted.docx";

            SignOptions signOptions = new SignOptions
            {
                Comments           = "Comment",
                SignTime           = DateTime.Now,
                DecryptionPassword = "******"
            };

            // Digitally sign encrypted with "docPassword" document in the specified path.
            Assert.That(
                () => DigitalSignatureUtil.Sign(doc.OriginalFileName, outputFileName, certificateHolder, signOptions),
                Throws.TypeOf <IncorrectPasswordException>(), "The document password is incorrect.");
        }
        public static void SetSignatureProviderID(String dataDir)
        {
            // ExStart:SetSignatureProviderID
            Document      doc           = new Document(dataDir + "Document.Signed.docx");
            SignatureLine signatureLine = ((Shape)doc.FirstSection.Body.GetChild(NodeType.Shape, 0, true)).SignatureLine;

            //Set signature and signature line provider ID
            SignOptions signOptions = new SignOptions();

            signOptions.ProviderId      = signatureLine.ProviderId;
            signOptions.SignatureLineId = signatureLine.Id;

            CertificateHolder certHolder = CertificateHolder.Create(dataDir + "signature.pfx", "signature");

            DigitalSignatureUtil.Sign(dataDir + "Document.Signed.docx", dataDir + "Document.Signed_out.docx", certHolder, signOptions);

            // ExEnd:SetSignatureProviderID

            Console.WriteLine("\nProvider ID of signature is set successfully.\nFile saved at " + dataDir + "Document.Signed_out.docx");
        }
        public void SigningExistingSignatureLine()
        {
            //ExStart:SigningExistingSignatureLine
            Document doc = new Document(MyDir + "Signature line.docx");

            SignatureLine signatureLine =
                ((Shape)doc.FirstSection.Body.GetChild(NodeType.Shape, 0, true)).SignatureLine;

            SignOptions signOptions = new SignOptions
            {
                SignatureLineId    = signatureLine.Id,
                SignatureLineImage = File.ReadAllBytes(ImagesDir + "Enhanced Windows MetaFile.emf")
            };

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

            DigitalSignatureUtil.Sign(MyDir + "Digitally signed.docx",
                                      ArtifactsDir + "SignDocuments.SigningExistingSignatureLine.docx", certHolder, signOptions);
            //ExEnd:SigningExistingSignatureLine
        }
        public void IncorrectDecryptionPassword()
        {
            CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

            Document doc            = new Document(MyDir + "Encrypted.docx", new LoadOptions("docPassword"));
            string   outputFileName = ArtifactsDir + "DigitalSignatureUtil.IncorrectDecryptionPassword.docx";

            SignOptions signOptions = new SignOptions
            {
                Comments           = "Comment",
                SignTime           = DateTime.Now,
                DecryptionPassword = "******"
            };

#if NET462 || NETCOREAPP2_1 || JAVA
            Assert.That(
                () => DigitalSignatureUtil.Sign(doc.OriginalFileName, outputFileName, certificateHolder, signOptions),
                Throws.TypeOf <IncorrectPasswordException>(), "The document password is incorrect.");
#endif
        }
        public static void Run()
        {
            // ExStart:DigitallySignedPdfUsingCertificateHolder
            // The path to the documents directory.
            string dataDir = RunExamples.GetDataDir_LoadingAndSaving();

            // Create a simple document from scratch.
            Document        doc     = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);

            builder.Writeln("Test Signed PDF.");

            PdfSaveOptions options = new PdfSaveOptions();

            options.DigitalSignatureDetails = new PdfDigitalSignatureDetails(
                CertificateHolder.Create(dataDir + "CioSrv1.pfx", "cinD96..arellA"), "reason", "location", DateTime.Now);
            doc.Save(dataDir + @"DigitallySignedPdfUsingCertificateHolder.Signed_out.pdf", options);
            // ExEnd:DigitallySignedPdfUsingCertificateHolder
            Console.WriteLine("\nDigitally signed PDF file created successfully.\nFile saved at " + dataDir);
        }
        public void SignEx()
        {
            //ExStart
            //ExFor:DigitalSignatureUtil.Sign(String, String, CertificateHolder, String, DateTime)
            //ExFor:DigitalSignatureUtil.Sign(Stream, Stream, CertificateHolder, String, DateTime)
            //ExSummary:Shows how to sign documents.
            CertificateHolder ch = CertificateHolder.Create(MyDir + "MyPkcs12.pfx", "My password");

            //By String
            Document doc = new Document(MyDir + "Document.doc");
            string   outputDocFileName = MyDir + "Document.Signed.doc";

            DigitalSignatureUtil.Sign(doc.OriginalFileName, outputDocFileName, ch, "My comment", DateTime.Now);

            //By Stream
            Stream docInStream  = new FileStream(MyDir + "Document.doc", FileMode.Open);
            Stream docOutStream = new FileStream(MyDir + "Document.Signed.doc", FileMode.OpenOrCreate);

            DigitalSignatureUtil.Sign(docInStream, docOutStream, ch, "My comment", DateTime.Now);
            //ExEnd
        }
        public static void CreatingAndSigningNewSignatureLine(String dataDir)
        {
            // ExStart:CreatingAndSigningNewSignatureLine
            Document        doc           = new Document();
            DocumentBuilder builder       = new DocumentBuilder(doc);
            SignatureLine   signatureLine = builder.InsertSignatureLine(new SignatureLineOptions()).SignatureLine;

            doc.Save(dataDir + "Document.NewSignatureLine.docx");

            SignOptions signOptions = new SignOptions();

            signOptions.SignatureLineId    = signatureLine.Id;
            signOptions.SignatureLineImage = File.ReadAllBytes(dataDir + "SignatureImage.emf");

            CertificateHolder certHolder = CertificateHolder.Create(dataDir + "signature.pfx", "signature");

            DigitalSignatureUtil.Sign(dataDir + "Document.NewSignatureLine.docx", dataDir + "Document.NewSignatureLine.docx_out.docx", certHolder, signOptions);
            // ExEnd:CreatingAndSigningNewSignatureLine

            Console.WriteLine("\nDocument is created and Signed with new SignatureLine successfully.\nFile saved at " + dataDir + "Document.NewSignatureLine.docx_out.docx");
        }
        public void SignDocumentWithDecryptionPassword()
        {
            //ExStart
            //ExFor:CertificateHolder
            //ExFor:SignOptions.DecryptionPassword
            //ExFor:LoadOptions.Password
            //ExSummary:Shows how to sign encrypted document file.
            string outputFileName = ArtifactsDir + "Document.Encrypted.docx";

            Document doc = new Document(MyDir + "Document.Encrypted.docx", new LoadOptions("docPassword"));

            // Create certificate holder from a file.
            CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

            SignOptions signOptions = new SignOptions
            {
                Comments           = "Comment",
                SignTime           = DateTime.Now,
                DecryptionPassword = "******"
            };

            // Digitally sign encrypted with "docPassword" document in the specified path.
            DigitalSignatureUtil.Sign(doc.OriginalFileName, outputFileName, certificateHolder, signOptions);
            //ExEnd

            // Open encrypted document from a file.
            LoadOptions loadOptions = new LoadOptions("docPassword");

            Assert.AreEqual(signOptions.DecryptionPassword, loadOptions.Password);

            Document signedDoc = new Document(outputFileName, loadOptions);

            // Check that encrypted document was successfully signed.
            DigitalSignatureCollection signatures = signedDoc.DigitalSignatures;

            if (signatures.IsValid && (signatures.Count > 0))
            {
                Assert.Pass(); //The document was signed successfully
            }
        }
        public void SignDocument()
        {
            //ExStart
            //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
            };

            Stream streamIn  = new FileStream(MyDir + "Document.DigitalSignature.docx", FileMode.Open);
            Stream streamOut = new FileStream(MyDir + @"\Artifacts\Document.DigitalSignature.docx", FileMode.OpenOrCreate);

            DigitalSignatureUtil.Sign(streamIn, streamOut, certificateHolder, signOptions);
            //ExEnd

            streamIn.Dispose();
            streamOut.Dispose();
        }
        public void CreatingAndSigningNewSignatureLine()
        {
            //ExStart:CreatingAndSigningNewSignatureLine
            Document        doc     = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);

            SignatureLine signatureLine = builder.InsertSignatureLine(new SignatureLineOptions()).SignatureLine;

            doc.Save(ArtifactsDir + "SignDocuments.SignatureLine.docx");

            SignOptions signOptions = new SignOptions
            {
                SignatureLineId    = signatureLine.Id,
                SignatureLineImage = File.ReadAllBytes(ImagesDir + "Enhanced Windows MetaFile.emf")
            };

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

            DigitalSignatureUtil.Sign(ArtifactsDir + "SignDocuments.SignatureLine.docx",
                                      ArtifactsDir + "SignDocuments.NewSignatureLine.docx", certHolder, signOptions);
            //ExEnd:CreatingAndSigningNewSignatureLine
        }
Ejemplo n.º 13
0
        public void PdfDigitalSignature()
        {
            //ExStart
            //ExFor:PdfDigitalSignatureDetails
            //ExFor:PdfDigitalSignatureDetails.#ctor
            //ExFor:PdfDigitalSignatureDetails.#ctor(CertificateHolder, String, String, DateTime)
            //ExFor:PdfDigitalSignatureDetails.HashAlgorithm
            //ExFor:PdfDigitalSignatureDetails.Location
            //ExFor:PdfDigitalSignatureDetails.Reason
            //ExFor:PdfDigitalSignatureDetails.SignatureDate
            //ExFor:PdfDigitalSignatureHashAlgorithm
            //ExFor:PdfSaveOptions.DigitalSignatureDetails
            //ExSummary:Shows how to sign a generated PDF using Aspose.Words.
            Document        doc     = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);

            builder.Writeln("Signed PDF contents.");

            // Load the certificate from disk
            // The other constructor overloads can be used to load certificates from different locations
            CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

            // Pass the certificate and details to the save options class to sign with
            PdfSaveOptions options     = new PdfSaveOptions();
            DateTime       signingTime = DateTime.Now;

            options.DigitalSignatureDetails = new PdfDigitalSignatureDetails(certificateHolder, "Test Signing", "Aspose Office", signingTime);

            // We can use this attribute to set a different hash algorithm
            options.DigitalSignatureDetails.HashAlgorithm = PdfDigitalSignatureHashAlgorithm.Sha256;

            Assert.AreEqual("Test Signing", options.DigitalSignatureDetails.Reason);
            Assert.AreEqual("Aspose Office", options.DigitalSignatureDetails.Location);
            Assert.AreEqual(signingTime.ToUniversalTime(), options.DigitalSignatureDetails.SignatureDate);

            doc.Save(ArtifactsDir + "PdfSaveOptions.PdfDigitalSignature.pdf");
            //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);
            }
        }
        public void DecryptionPassword()
        {
            //ExStart
            //ExFor:CertificateHolder
            //ExFor:SignOptions.DecryptionPassword
            //ExFor:LoadOptions.Password
            //ExSummary:Shows how to sign encrypted document file.
            // 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, date, and decryption password which will be applied with our new digital signature.
            SignOptions signOptions = new SignOptions
            {
                Comments           = "Comment",
                SignTime           = DateTime.Now,
                DecryptionPassword = "******"
            };

            // Set a local system filename for the unsigned input document, and an output filename for its new digitally signed copy.
            string inputFileName  = MyDir + "Encrypted.docx";
            string outputFileName = ArtifactsDir + "DigitalSignatureUtil.DecryptionPassword.docx";

            DigitalSignatureUtil.Sign(inputFileName, outputFileName, certificateHolder, signOptions);
            //ExEnd

            // Open encrypted document from a file.
            LoadOptions loadOptions = new LoadOptions("docPassword");

            Assert.AreEqual(signOptions.DecryptionPassword, loadOptions.Password);

            // Check that encrypted document was successfully signed.
            Document signedDoc = new Document(outputFileName, loadOptions);
            DigitalSignatureCollection signatures = signedDoc.DigitalSignatures;

            Assert.AreEqual(1, signatures.Count);
            Assert.True(signatures.IsValid);
        }
        public void CreateNewSignatureLineAndSetProviderId()
        {
            //ExStart:CreateNewSignatureLineAndSetProviderID
            Document        doc     = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);

            SignatureLineOptions signatureLineOptions = new SignatureLineOptions
            {
                Signer              = "vderyushev",
                SignerTitle         = "QA",
                Email               = "*****@*****.**",
                ShowDate            = true,
                DefaultInstructions = false,
                Instructions        = "Please sign here.",
                AllowComments       = true
            };

            SignatureLine signatureLine = builder.InsertSignatureLine(signatureLineOptions).SignatureLine;

            signatureLine.ProviderId = Guid.Parse("CF5A7BB4-8F3C-4756-9DF6-BEF7F13259A2");

            doc.Save(ArtifactsDir + "SignDocuments.SignatureLineProviderId.docx");

            SignOptions signOptions = new SignOptions
            {
                SignatureLineId = signatureLine.Id,
                ProviderId      = signatureLine.ProviderId,
                Comments        = "Document was signed by vderyushev",
                SignTime        = DateTime.Now
            };

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

            DigitalSignatureUtil.Sign(ArtifactsDir + "SignDocuments.SignatureLineProviderId.docx",
                                      ArtifactsDir + "SignDocuments.CreateNewSignatureLineAndSetProviderId.docx", certHolder, signOptions);
            //ExEnd:CreateNewSignatureLineAndSetProviderID
        }
Ejemplo n.º 17
0
        public void DecryptionPassword()
        {
            //ExStart
            //ExFor:CertificateHolder
            //ExFor:SignOptions.DecryptionPassword
            //ExFor:LoadOptions.Password
            //ExSummary:Shows how to sign encrypted document file.
            // Create certificate holder from a file
            CertificateHolder certificateHolder = CertificateHolder.Create(File.ReadAllBytes(MyDir + "morzal.pfx"), "aw");

            SignOptions signOptions = new SignOptions
            {
                Comments           = "Comment",
                SignTime           = DateTime.Now,
                DecryptionPassword = "******"
            };

            // Digitally sign encrypted with "docPassword" document in the specified path
            string inputFileName  = MyDir + "Encrypted.docx";
            string outputFileName = ArtifactsDir + "DigitalSignatureUtil.DecryptionPassword.docx";

            DigitalSignatureUtil.Sign(inputFileName, outputFileName, certificateHolder, signOptions);
            //ExEnd

            // Open encrypted document from a file
            LoadOptions loadOptions = new LoadOptions("docPassword");

            Assert.AreEqual(signOptions.DecryptionPassword, loadOptions.Password);

            // Check that encrypted document was successfully signed
            Document signedDoc = new Document(outputFileName, loadOptions);
            DigitalSignatureCollection signatures = signedDoc.DigitalSignatures;

            Assert.AreEqual(1, signatures.Count);
            Assert.True(signatures.IsValid);
        }
        public void SignEx()
        {
            //ExStart
            //ExFor:DigitalSignatureUtil.Sign(String, String, CertificateHolder, String, DateTime)
            //ExFor:DigitalSignatureUtil.Sign(Stream, Stream, CertificateHolder, String, DateTime)
            //ExSummary:Shows how to sign documents.
            CertificateHolder ch = CertificateHolder.Create(MyDir + "certificate.pfx", "123456");

            //By String
            Document doc = new Document(MyDir + "Document.DigitalSignature.docx");
            string   outputDocFileName = MyDir + @"\Artifacts\Document.DigitalSignature.docx";

            DigitalSignatureUtil.Sign(doc.OriginalFileName, outputDocFileName, ch, "My comment", DateTime.Now);

            //By Stream
            Stream docInStream  = new FileStream(MyDir + "Document.DigitalSignature.docx", FileMode.Open);
            Stream docOutStream = new FileStream(MyDir + @"\Artifacts\Document.DigitalSignature.docx", FileMode.OpenOrCreate);

            DigitalSignatureUtil.Sign(docInStream, docOutStream, ch, "My comment", DateTime.Now);
            //ExEnd

            docInStream.Dispose();
            docOutStream.Dispose();
        }
        public static void CreateNewSignatureLineAndSetProviderID(String dataDir)
        {
            // ExStart:CreateNewSignatureLineAndSetProviderID
            Document doc = new Document(dataDir + "Document.Signed.docx");

            DocumentBuilder builder       = new DocumentBuilder(doc);
            SignatureLine   signatureLine = builder.InsertSignatureLine(new SignatureLineOptions()).SignatureLine;

            signatureLine.ProviderId = new Guid("{F5AC7D23-DA04-45F5-ABCB-38CE7A982553}");
            doc.Save(dataDir + "Document.Signed_out.docx");

            SignOptions signOptions = new SignOptions();

            signOptions.SignatureLineId = signatureLine.Id;
            signOptions.ProviderId      = signatureLine.ProviderId;

            CertificateHolder certHolder = CertificateHolder.Create(dataDir + "signature.pfx", "signature");

            DigitalSignatureUtil.Sign(dataDir + "Document.Signed_out.docx", dataDir + "Document.Signed_out.docx", certHolder, signOptions);

            // ExEnd:CreateNewSignatureLineAndSetProviderID

            Console.WriteLine("\nCreate new signature line and set provider ID successfully.\nFile saved at " + dataDir + "Document.Signed_out.docx");
        }