Sign
Sign(Stream, Stream, CertificateHolder, SignOptions)
Signs source document using given CertificateHolder
and SignOptions
with digital signature and writes signed document to destination stream.
Supported formats are: Doc, Dot, Docx, Dotx, Docm, Odt, Ott.
Output will be written to the start of stream and stream size will be updated with content length.
public static void Sign(Stream srcStream, Stream dstStream, CertificateHolder certHolder,
SignOptions signOptions)
Parameter | Type | Description |
---|---|---|
srcStream | Stream | The stream which contains the document to sign. |
dstStream | Stream | The stream that signed document will be written to. |
certHolder | CertificateHolder | CertificateHolder object with certificate that used to sign file. The certificate in holder MUST contain private keys and have the X509KeyStorageFlags.Exportable flag set. |
signOptions | SignOptions | SignOptions object with various signing options. |
Examples
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);
}
}
See Also
- class CertificateHolder
- class SignOptions
- class DigitalSignatureUtil
- namespace Aspose.Words.DigitalSignatures
- assembly Aspose.Words
Sign(string, string, CertificateHolder, SignOptions)
Signs source document using given CertificateHolder
and SignOptions
with digital signature and writes signed document to destination file.
Supported formats are: Doc, Dot, Docx, Dotx, Docm, Odt, Ott.
public static void Sign(string srcFileName, string dstFileName, CertificateHolder certHolder,
SignOptions signOptions)
Parameter | Type | Description |
---|---|---|
srcFileName | String | The file name of the document to sign. |
dstFileName | String | The file name of the signed document output. |
certHolder | CertificateHolder | CertificateHolder object with certificate that used to sign file. The certificate in holder MUST contain private keys and have the X509KeyStorageFlags.Exportable flag set. |
signOptions | SignOptions | SignOptions object with various signing options. |
Examples
Shows how to add a signature line to a document, and then sign it using a digital certificate.
[Description("WORDSNET-16868")]
public static void Sign()
{
string signeeName = "Ron Williams";
string srcDocumentPath = MyDir + "Document.docx";
string dstDocumentPath = ArtifactsDir + "SignDocumentCustom.Sign.docx";
string certificatePath = MyDir + "morzal.pfx";
string certificatePassword = "aw";
CreateSignees();
Signee signeeInfo = mSignees.Find(c => c.Name == signeeName);
if (signeeInfo != null)
SignDocument(srcDocumentPath, dstDocumentPath, signeeInfo, certificatePath, certificatePassword);
else
Assert.Fail("Signee does not exist.");
}
/// <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 class Signee
{
public Guid PersonId { get; set; }
public string Name { get; set; }
public string Position { get; set; }
public byte[] Image { get; set; }
public Signee(Guid guid, string name, string position, byte[] image)
{
PersonId = guid;
Name = name;
Position = position;
Image = image;
}
}
private static void CreateSignees()
{
var signImagePath = ImageDir + "Logo.jpg";
mSignees = new List<Signee>
{
new Signee(Guid.NewGuid(), "Ron Williams", "Chief Executive Officer", TestUtil.ImageToByteArray(signImagePath)),
new Signee(Guid.NewGuid(), "Stephen Morse", "Head of Compliance", TestUtil.ImageToByteArray(signImagePath))
};
}
private static List<Signee> mSignees;
See Also
- class CertificateHolder
- class SignOptions
- class DigitalSignatureUtil
- namespace Aspose.Words.DigitalSignatures
- assembly Aspose.Words
Sign(Stream, Stream, CertificateHolder)
Signs source document using given CertificateHolder
with digital signature and writes signed document to destination stream.
Supported formats are: Doc, Dot, Docx, Dotx, Docm, Odt, Ott.
Output will be written to the start of stream and stream size will be updated with content length.
public static void Sign(Stream srcStream, Stream dstStream, CertificateHolder certHolder)
Parameter | Type | Description |
---|---|---|
srcStream | Stream | The stream which contains the document to sign. |
dstStream | Stream | The stream that signed document will be written to. |
certHolder | CertificateHolder | CertificateHolder object with certificate that used to sign file. The certificate in holder MUST contain private keys and have the X509KeyStorageFlags.Exportable flag set. |
Examples
Shows how to sign documents with X.509 certificates.
// Verify that a document is not signed.
Assert.False(FileFormatUtil.DetectFileFormat(MyDir + "Document.docx").HasDigitalSignature);
// Create a CertificateHolder object from a PKCS12 file, which we will use to sign the document.
CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);
// There are two ways of saving a signed copy of a document to the local file system:
// 1 - Designate a document by a local system filename and save a signed copy at a location specified by another filename.
SignOptions signOptions = new SignOptions { SignTime = DateTime.Now };
DigitalSignatureUtil.Sign(MyDir + "Document.docx", ArtifactsDir + "Document.DigitalSignature.docx",
certificateHolder, signOptions);
Assert.True(FileFormatUtil.DetectFileFormat(ArtifactsDir + "Document.DigitalSignature.docx").HasDigitalSignature);
// 2 - Take a document from a stream and save a signed copy to another stream.
using (FileStream inDoc = new FileStream(MyDir + "Document.docx", FileMode.Open))
{
using (FileStream outDoc = new FileStream(ArtifactsDir + "Document.DigitalSignature.docx", FileMode.Create))
{
DigitalSignatureUtil.Sign(inDoc, outDoc, certificateHolder);
}
}
Assert.True(FileFormatUtil.DetectFileFormat(ArtifactsDir + "Document.DigitalSignature.docx").HasDigitalSignature);
// Please verify that all of the document's digital signatures are valid and check their details.
Document signedDoc = new Document(ArtifactsDir + "Document.DigitalSignature.docx");
DigitalSignatureCollection digitalSignatureCollection = signedDoc.DigitalSignatures;
Assert.True(digitalSignatureCollection.IsValid);
Assert.AreEqual(1, digitalSignatureCollection.Count);
Assert.AreEqual(DigitalSignatureType.XmlDsig, digitalSignatureCollection[0].SignatureType);
Assert.AreEqual("CN=Morzal.Me", signedDoc.DigitalSignatures[0].IssuerName);
Assert.AreEqual("CN=Morzal.Me", signedDoc.DigitalSignatures[0].SubjectName);
See Also
- class CertificateHolder
- class DigitalSignatureUtil
- namespace Aspose.Words.DigitalSignatures
- assembly Aspose.Words
Sign(string, string, CertificateHolder)
Signs source document using given CertificateHolder
with digital signature and writes signed document to destination file.
Supported formats are: Doc, Dot, Docx, Dotx, Docm, Odt, Ott.
public static void Sign(string srcFileName, string dstFileName, CertificateHolder certHolder)
Parameter | Type | Description |
---|---|---|
srcFileName | String | The file name of the document to sign. |
dstFileName | String | The file name of the signed document output. |
certHolder | CertificateHolder | CertificateHolder object with certificate that used to sign file. The certificate in holder MUST contain private keys and have the X509KeyStorageFlags.Exportable flag set. |
Examples
Shows how to sign documents with X.509 certificates.
// Verify that a document is not signed.
Assert.False(FileFormatUtil.DetectFileFormat(MyDir + "Document.docx").HasDigitalSignature);
// Create a CertificateHolder object from a PKCS12 file, which we will use to sign the document.
CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);
// There are two ways of saving a signed copy of a document to the local file system:
// 1 - Designate a document by a local system filename and save a signed copy at a location specified by another filename.
SignOptions signOptions = new SignOptions { SignTime = DateTime.Now };
DigitalSignatureUtil.Sign(MyDir + "Document.docx", ArtifactsDir + "Document.DigitalSignature.docx",
certificateHolder, signOptions);
Assert.True(FileFormatUtil.DetectFileFormat(ArtifactsDir + "Document.DigitalSignature.docx").HasDigitalSignature);
// 2 - Take a document from a stream and save a signed copy to another stream.
using (FileStream inDoc = new FileStream(MyDir + "Document.docx", FileMode.Open))
{
using (FileStream outDoc = new FileStream(ArtifactsDir + "Document.DigitalSignature.docx", FileMode.Create))
{
DigitalSignatureUtil.Sign(inDoc, outDoc, certificateHolder);
}
}
Assert.True(FileFormatUtil.DetectFileFormat(ArtifactsDir + "Document.DigitalSignature.docx").HasDigitalSignature);
// Please verify that all of the document's digital signatures are valid and check their details.
Document signedDoc = new Document(ArtifactsDir + "Document.DigitalSignature.docx");
DigitalSignatureCollection digitalSignatureCollection = signedDoc.DigitalSignatures;
Assert.True(digitalSignatureCollection.IsValid);
Assert.AreEqual(1, digitalSignatureCollection.Count);
Assert.AreEqual(DigitalSignatureType.XmlDsig, digitalSignatureCollection[0].SignatureType);
Assert.AreEqual("CN=Morzal.Me", signedDoc.DigitalSignatures[0].IssuerName);
Assert.AreEqual("CN=Morzal.Me", signedDoc.DigitalSignatures[0].SubjectName);
See Also
- class CertificateHolder
- class DigitalSignatureUtil
- namespace Aspose.Words.DigitalSignatures
- assembly Aspose.Words