public void SingDocumentWithPasswordDecrypring() { //ExStart //ExFor:DigitalSignatureUtil.Sign(String, String, CertificateHolder, String, DateTime) //ExFor:DigitalSignatureUtil.Sign(Stream, Stream, CertificateHolder, String, DateTime) //ExSummary:Shows how to sign encrypted documents // Create certificate holder from a file. CertificateHolder ch = CertificateHolder.Create(MyDir + "certificate.pfx", "123456"); //ByDocument Document doc = new Document(MyDir + "Document.Encrypted.docx", new LoadOptions("docPassword")); string outputDocFileName = MyDir + @"\Artifacts\Document.Encrypted.docx"; // Digitally sign encrypted with "docPassword" document in the specified path. DigitalSignatureUtil.Sign(doc.OriginalFileName, outputDocFileName, ch, "Comment", DateTime.Now, "docPassword"); // Open encrypted document from a file. Document signedDoc = new Document(outputDocFileName, new LoadOptions("docPassword")); // 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: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 }; 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 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 }
/// <summary> /// Creates a copy of a source document signed using provided signee information and X509 certificate. /// </summary> private static void SignDocument(string srcDocumentPath, string dstDocumentPath, Signee signeeInfo, string certificatePath, string certificatePassword) { Document document = new Document(srcDocumentPath); DocumentBuilder builder = new DocumentBuilder(document); // Configure and insert a signature line, an object in the document that will display a signature that we sign it with. SignatureLineOptions signatureLineOptions = new SignatureLineOptions { Signer = signeeInfo.Name, SignerTitle = signeeInfo.Position }; SignatureLine signatureLine = builder.InsertSignatureLine(signatureLineOptions).SignatureLine; signatureLine.Id = signeeInfo.PersonId; // First, we will save an unsigned version of our document. builder.Document.Save(dstDocumentPath); CertificateHolder certificateHolder = CertificateHolder.Create(certificatePath, certificatePassword); SignOptions signOptions = new SignOptions { SignatureLineId = signeeInfo.PersonId, SignatureLineImage = signeeInfo.Image }; // Overwrite the unsigned document we saved above with a version signed using the certificate. DigitalSignatureUtil.Sign(dstDocumentPath, dstDocumentPath, certificateHolder, signOptions); }
public void EncryptedHtml() { //ExStart //ExFor:HtmlLoadOptions.#ctor(String) //ExSummary:Shows how to encrypt an Html document, and then open it using a password. // Create and sign an encrypted HTML document from an encrypted .docx. CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw"); SignOptions signOptions = new SignOptions { Comments = "Comment", SignTime = DateTime.Now, DecryptionPassword = "******" }; string inputFileName = MyDir + "Encrypted.docx"; string outputFileName = ArtifactsDir + "HtmlLoadOptions.EncryptedHtml.html"; DigitalSignatureUtil.Sign(inputFileName, outputFileName, certificateHolder, signOptions); // To load and read this document, we will need to pass its decryption // password using a HtmlLoadOptions object. HtmlLoadOptions loadOptions = new HtmlLoadOptions("docPassword"); Assert.AreEqual(signOptions.DecryptionPassword, loadOptions.Password); Document doc = new Document(outputFileName, loadOptions); Assert.AreEqual("Test encrypted document.", doc.GetText().Trim()); //ExEnd }
/// <summary> /// Signs the document obtained at the source location and saves it to the specified destination. /// </summary> private static void SignDocument(string srcDocumentPath, string dstDocumentPath, SignPersonTestClass signPersonInfo, string certificatePath, string certificatePassword) { // Create new document instance based on a test file that we need to sign. Document document = new Document(srcDocumentPath); DocumentBuilder builder = new DocumentBuilder(document); // Add info about responsible person who sign a document. SignatureLineOptions signatureLineOptions = new SignatureLineOptions { Signer = signPersonInfo.Name, SignerTitle = signPersonInfo.Position }; // Add signature line for responsible person who sign a document. SignatureLine signatureLine = builder.InsertSignatureLine(signatureLineOptions).SignatureLine; signatureLine.Id = signPersonInfo.PersonId; // Save a document with line signatures into temporary file for future signing. builder.Document.Save(dstDocumentPath); // Create holder of certificate instance based on your personal certificate. // This is the test certificate generated for this example. CertificateHolder certificateHolder = CertificateHolder.Create(certificatePath, certificatePassword); // Link our signature line with personal signature. SignOptions signOptions = new SignOptions { SignatureLineId = signPersonInfo.PersonId, SignatureLineImage = signPersonInfo.Image }; // Sign a document which contains signature line with personal certificate. DigitalSignatureUtil.Sign(dstDocumentPath, dstDocumentPath, certificateHolder, signOptions); }
public void SingDocumentWithPasswordDecrypring() { //ExStart //ExFor:CertificateHolder //ExFor:SignOptions.DecryptionPassword //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. Document signedDoc = new Document(outputFileName, new LoadOptions("docPassword")); // 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 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 }
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 }
public void EncryptedHtml() { //ExStart //ExFor:HtmlLoadOptions.#ctor(String) //ExSummary:Shows how to encrypt an Html document and then open it using a password. // Create and sign an encrypted html document from an encrypted .docx CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw"); SignOptions signOptions = new SignOptions { Comments = "Comment", SignTime = DateTime.Now, DecryptionPassword = "******" }; string inputFileName = MyDir + "Encrypted.docx"; string outputFileName = ArtifactsDir + "HtmlLoadOptions.EncryptedHtml.html"; DigitalSignatureUtil.Sign(inputFileName, outputFileName, certificateHolder, signOptions); // This .html document will need a password to be decrypted, opened and have its contents accessed // The password is specified by HtmlLoadOptions.Password HtmlLoadOptions loadOptions = new HtmlLoadOptions("docPassword"); Assert.AreEqual(signOptions.DecryptionPassword, loadOptions.Password); Document doc = new Document(outputFileName, loadOptions); Assert.AreEqual("Test encrypted document.", doc.GetText().Trim()); //ExEnd }
public void SingStreamDocumentWithPasswordDecrypring() { // Create certificate holder from a file. CertificateHolder ch = CertificateHolder.Create(MyDir + "certificate.pfx", "123456"); //By Stream Stream docInStream = new FileStream(MyDir + "Document.Encrypted.docx", FileMode.Open); Stream docOutStream = new FileStream(MyDir + @"\Artifacts\Document.Encrypted.docx", FileMode.OpenOrCreate); // Digitally sign encrypted with "docPassword" document in the specified path. DigitalSignatureUtil.Sign(docInStream, docOutStream, ch, "Comment", DateTime.Now, "docPassword"); // Open encrypted document from a file. Document signedDoc = new Document(docOutStream, new LoadOptions("docPassword")); // Check that encrypted document was successfully signed. DigitalSignatureCollection signatures = signedDoc.DigitalSignatures; if (signatures.IsValid && (signatures.Count > 0)) { docInStream.Dispose(); docOutStream.Dispose(); Assert.Pass(); //The document was signed successfully } }
public void NoCertificateForSign() { //ByDocument Document doc = new Document(MyDir + "Document.DigitalSignature.docx"); string outputDocFileName = MyDir + @"\Artifacts\Document.DigitalSignature.docx"; // Digitally sign encrypted with "docPassword" document in the specified path. Assert.That(() => DigitalSignatureUtil.Sign(doc.OriginalFileName, outputDocFileName, null, "Comment", DateTime.Now, "docPassword"), Throws.TypeOf <NullReferenceException>()); }
public void SignDocument() { //ExStart:SingDocument CertificateHolder certHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw"); DigitalSignatureUtil.Sign(MyDir + "Digitally signed.docx", ArtifactsDir + "Document.Signed.docx", certHolder); //ExEnd:SingDocument }
public void NoArgumentsForSing() { SignOptions signOptions = new SignOptions { Comments = String.Empty, SignTime = DateTime.Now, DecryptionPassword = String.Empty }; Assert.That(() => DigitalSignatureUtil.Sign(String.Empty, String.Empty, null, signOptions), Throws.TypeOf <ArgumentException>()); }
public static void SimpleDocumentSigning(String dataDir) { // ExStart:SimpleDocumentSigning CertificateHolder certHolder = CertificateHolder.Create(dataDir + "signature.pfx", "signature"); DigitalSignatureUtil.Sign(dataDir + "Document.Signed.docx", dataDir + "Document.Signed_out.docx", certHolder); // ExEnd:SimpleDocumentSigning Console.WriteLine("\nDocument is signed successfully.\nFile saved at " + dataDir + "Document.Signed_out.docx"); }
public void IncorrectPasswordForDecrypring() { CertificateHolder ch = CertificateHolder.Create(MyDir + "certificate.pfx", "123456"); //ByDocument Document doc = new Document(MyDir + "Document.Encrypted.docx", new LoadOptions("docPassword")); string outputDocFileName = MyDir + @"\Artifacts\Document.Encrypted.docx"; // Digitally sign encrypted with "docPassword" document in the specified path. DigitalSignatureUtil.Sign(doc.OriginalFileName, outputDocFileName, ch, "Comment", DateTime.Now, "docPassword1"); }
public void NoCertificateForSign() { Document doc = new Document(MyDir + "Document.DigitalSignature.docx"); string outputFileName = MyDir + @"\Artifacts\Document.DigitalSignature.docx"; SignOptions signOptions = new SignOptions { Comments = "Comment", SignTime = DateTime.Now, DecryptionPassword = "******" }; Assert.That(() => DigitalSignatureUtil.Sign(doc.OriginalFileName, outputFileName, null, signOptions), Throws.TypeOf <ArgumentNullException>()); }
public void SignDocumentObfuscationBug() { CertificateHolder ch = CertificateHolder.Create(MyDir + "morzal.pfx", "aw"); Document doc = new Document(MyDir + "TestRepeatingSection.docx"); string outputFileName = ArtifactsDir + "TestRepeatingSection.Signed.doc"; SignOptions signOptions = new SignOptions { Comments = "Comment", SignTime = DateTime.Now }; DigitalSignatureUtil.Sign(doc.OriginalFileName, outputFileName, ch, signOptions); }
public void SignDocumentObfuscationBug() { CertificateHolder ch = CertificateHolder.Create(File.ReadAllBytes(MyDir + "morzal.pfx"), "aw"); Document doc = new Document(MyDir + "Structured document tags.docx"); string outputFileName = ArtifactsDir + "DigitalSignatureUtil.SignDocumentObfuscationBug.doc"; SignOptions signOptions = new SignOptions { Comments = "Comment", SignTime = DateTime.Now }; DigitalSignatureUtil.Sign(doc.OriginalFileName, outputFileName, ch, signOptions); }
public void SigningEncryptedDocument() { //ExStart:SigningEncryptedDocument SignOptions signOptions = new SignOptions { DecryptionPassword = "******" }; CertificateHolder certHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw"); DigitalSignatureUtil.Sign(MyDir + "Digitally signed.docx", ArtifactsDir + "Document.EncryptedDocument.docx", certHolder, signOptions); //ExEnd:SigningEncryptedDocument }
public static void SigningEncryptedDocument(String dataDir) { // ExStart:SigningEncryptedDocument SignOptions signOptions = new SignOptions(); signOptions.DecryptionPassword = "******"; CertificateHolder certHolder = CertificateHolder.Create(dataDir + "signature.pfx", "signature"); DigitalSignatureUtil.Sign(dataDir + "Document.Signed.docx", dataDir + "Document.EncryptedDocument_out.docx", certHolder, signOptions); // ExEnd:SigningEncryptedDocument Console.WriteLine("\nDocument is signed with successfully.\nFile saved at " + dataDir + "Document.EncryptedDocument_out.docx"); }
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 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 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. // 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 static void SigningExistingSignatureLine(String dataDir) { // ExStart:SigningExistingSignatureLine Document doc = new Document(dataDir + "Document.Signed.docx"); SignatureLine signatureLine = ((Shape)doc.FirstSection.Body.GetChild(NodeType.Shape, 0, true)).SignatureLine; 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.Signed.docx", dataDir + "Document.Signed.ExistingSignatureLine.docx", certHolder, signOptions); // ExEnd:SigningExistingSignatureLine Console.WriteLine("\nDocument is signed with existing SignatureLine successfully.\nFile saved at " + dataDir + "Document.Signed.ExistingSignatureLine.docx"); }
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 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 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); } }