com.aspose.words

Class DigitalSignature

  • java.lang.Object
    • com.aspose.words.DigitalSignature
public class DigitalSignature 
extends java.lang.Object

Represents a digital signature on a document and the result of its verification.

Example:

Shows how to validate each signature in a document and display basic information about the signature.
// Load the document which contains signature
Document doc = new Document(getMyDir() + "Digitally signed.docx");

for (DigitalSignature signature : doc.getDigitalSignatures()) {
    System.out.println("*** Signature Found ***");
    System.out.println("Is valid: " + signature.isValid());
    // This property is available in MS Word documents only
    System.out.println("Reason for signing: " + signature.getComments()); 
    System.out.println("Signature type: " + signature.getSignatureType());
    System.out.println("Time of signing: " + signature.getSignTime());
    System.out.println("Subject name: " + signature.getSubjectName());
    System.out.println("Issuer name: " + signature.getIssuerName());
    System.out.println();
}

Property Getters/Setters Summary
CertificateHoldergetCertificateHolder()
Returns the certificate holder object that contains the certificate was used to sign the document.
java.lang.StringgetComments()
Gets the signing purpose comment.
java.lang.StringgetIssuerName()
Returns the subject distinguished name of the certificate isuuer.
booleanisValid()
Returns true if this digital signature is valid and the document has not been tampered with.
intgetSignatureType()
Gets the type of the digital signature. The value of the property is DigitalSignatureType integer constant.
java.util.DategetSignTime()
Gets the time the document was signed.
java.lang.StringgetSubjectName()
Returns the subject distinguished name of the certificate that was used to sign the document.
 
Method Summary
java.lang.StringtoString()
Returns a user-friendly string that displays the value of this object.
 

    • Property Getters/Setters Detail

      • getCertificateHolder

        public CertificateHolder getCertificateHolder()
        
        Returns the certificate holder object that contains the certificate was used to sign the document.

        Example:

        Shows how to sign documents with X.509 certificates.
        // Verify that a document isn't signed
        Assert.assertFalse(FileFormatUtil.detectFileFormat(getMyDir() + "Document.docx").hasDigitalSignature());
        
        // Create a CertificateHolder object from a PKCS #12 file, which we will use to sign the document
        CertificateHolder certificateHolder = CertificateHolder.create(getMyDir() + "morzal.pfx", "aw", null);
        
        // There are 2 ways of saving a signed copy of a document to the local file system
        // 1: Designate unsigned input and signed output files by filename and sign with the passed CertificateHolder
        SignOptions signOptions = new SignOptions();
        signOptions.setSignTime(new Date());
        
        DigitalSignatureUtil.sign(getMyDir() + "Document.docx", getArtifactsDir() + "Document.DigitalSignature.docx",
                certificateHolder, signOptions);
        
        // 2: Create a stream for the input file and one for the output and create a file, signed with the CertificateHolder, at the file system location determine
        InputStream inDoc = new FileInputStream(getMyDir() + "Document.docx");
        try {
            OutputStream outDoc = new FileOutputStream(getArtifactsDir() + "Document.DigitalSignature.docx");
            try {
                DigitalSignatureUtil.sign(inDoc, outDoc, certificateHolder);
            } finally {
                if (outDoc != null) outDoc.close();
            }
        } finally {
            if (inDoc != null) inDoc.close();
        }
        
        Assert.assertTrue(FileFormatUtil.detectFileFormat(getArtifactsDir() + "Document.DigitalSignature.docx").hasDigitalSignature());
        
        // Open the signed document and get its digital signature collection
        Document signedDoc = new Document(getArtifactsDir() + "Document.DigitalSignature.docx");
        DigitalSignatureCollection digitalSignatureCollection = signedDoc.getDigitalSignatures();
        
        // Verify that all of the document's digital signatures are valid and check their details
        Assert.assertTrue(digitalSignatureCollection.isValid());
        Assert.assertEquals(1, digitalSignatureCollection.getCount());
        Assert.assertEquals(DigitalSignatureType.XML_DSIG, digitalSignatureCollection.get(0).getSignatureType());
        Assert.assertEquals("CN=Morzal.Me", signedDoc.getDigitalSignatures().get(0).getIssuerName());
        Assert.assertEquals("CN=Morzal.Me", signedDoc.getDigitalSignatures().get(0).getSubjectName());
      • getComments

        public java.lang.String getComments()
        
        Gets the signing purpose comment.

        Example:

        Shows how to validate each signature in a document and display basic information about the signature.
        // Load the document which contains signature
        Document doc = new Document(getMyDir() + "Digitally signed.docx");
        
        for (DigitalSignature signature : doc.getDigitalSignatures()) {
            System.out.println("*** Signature Found ***");
            System.out.println("Is valid: " + signature.isValid());
            // This property is available in MS Word documents only
            System.out.println("Reason for signing: " + signature.getComments()); 
            System.out.println("Signature type: " + signature.getSignatureType());
            System.out.println("Time of signing: " + signature.getSignTime());
            System.out.println("Subject name: " + signature.getSubjectName());
            System.out.println("Issuer name: " + signature.getIssuerName());
            System.out.println();
        }
      • getIssuerName

        public java.lang.String getIssuerName()
        
        Returns the subject distinguished name of the certificate isuuer.

        Example:

        Shows how to sign documents with X.509 certificates.
        // Verify that a document isn't signed
        Assert.assertFalse(FileFormatUtil.detectFileFormat(getMyDir() + "Document.docx").hasDigitalSignature());
        
        // Create a CertificateHolder object from a PKCS #12 file, which we will use to sign the document
        CertificateHolder certificateHolder = CertificateHolder.create(getMyDir() + "morzal.pfx", "aw", null);
        
        // There are 2 ways of saving a signed copy of a document to the local file system
        // 1: Designate unsigned input and signed output files by filename and sign with the passed CertificateHolder
        SignOptions signOptions = new SignOptions();
        signOptions.setSignTime(new Date());
        
        DigitalSignatureUtil.sign(getMyDir() + "Document.docx", getArtifactsDir() + "Document.DigitalSignature.docx",
                certificateHolder, signOptions);
        
        // 2: Create a stream for the input file and one for the output and create a file, signed with the CertificateHolder, at the file system location determine
        InputStream inDoc = new FileInputStream(getMyDir() + "Document.docx");
        try {
            OutputStream outDoc = new FileOutputStream(getArtifactsDir() + "Document.DigitalSignature.docx");
            try {
                DigitalSignatureUtil.sign(inDoc, outDoc, certificateHolder);
            } finally {
                if (outDoc != null) outDoc.close();
            }
        } finally {
            if (inDoc != null) inDoc.close();
        }
        
        Assert.assertTrue(FileFormatUtil.detectFileFormat(getArtifactsDir() + "Document.DigitalSignature.docx").hasDigitalSignature());
        
        // Open the signed document and get its digital signature collection
        Document signedDoc = new Document(getArtifactsDir() + "Document.DigitalSignature.docx");
        DigitalSignatureCollection digitalSignatureCollection = signedDoc.getDigitalSignatures();
        
        // Verify that all of the document's digital signatures are valid and check their details
        Assert.assertTrue(digitalSignatureCollection.isValid());
        Assert.assertEquals(1, digitalSignatureCollection.getCount());
        Assert.assertEquals(DigitalSignatureType.XML_DSIG, digitalSignatureCollection.get(0).getSignatureType());
        Assert.assertEquals("CN=Morzal.Me", signedDoc.getDigitalSignatures().get(0).getIssuerName());
        Assert.assertEquals("CN=Morzal.Me", signedDoc.getDigitalSignatures().get(0).getSubjectName());
      • isValid

        public boolean isValid()
        
        Returns true if this digital signature is valid and the document has not been tampered with.

        Example:

        Shows how to validate each signature in a document and display basic information about the signature.
        // Load the document which contains signature
        Document doc = new Document(getMyDir() + "Digitally signed.docx");
        
        for (DigitalSignature signature : doc.getDigitalSignatures()) {
            System.out.println("*** Signature Found ***");
            System.out.println("Is valid: " + signature.isValid());
            // This property is available in MS Word documents only
            System.out.println("Reason for signing: " + signature.getComments()); 
            System.out.println("Signature type: " + signature.getSignatureType());
            System.out.println("Time of signing: " + signature.getSignTime());
            System.out.println("Subject name: " + signature.getSubjectName());
            System.out.println("Issuer name: " + signature.getIssuerName());
            System.out.println();
        }
      • getSignatureType

        public int getSignatureType()
        
        Gets the type of the digital signature. The value of the property is DigitalSignatureType integer constant.

        Example:

        Shows how to validate each signature in a document and display basic information about the signature.
        // Load the document which contains signature
        Document doc = new Document(getMyDir() + "Digitally signed.docx");
        
        for (DigitalSignature signature : doc.getDigitalSignatures()) {
            System.out.println("*** Signature Found ***");
            System.out.println("Is valid: " + signature.isValid());
            // This property is available in MS Word documents only
            System.out.println("Reason for signing: " + signature.getComments()); 
            System.out.println("Signature type: " + signature.getSignatureType());
            System.out.println("Time of signing: " + signature.getSignTime());
            System.out.println("Subject name: " + signature.getSubjectName());
            System.out.println("Issuer name: " + signature.getIssuerName());
            System.out.println();
        }
      • getSignTime

        public java.util.Date getSignTime()
        
        Gets the time the document was signed.

        Example:

        Shows how to validate each signature in a document and display basic information about the signature.
        // Load the document which contains signature
        Document doc = new Document(getMyDir() + "Digitally signed.docx");
        
        for (DigitalSignature signature : doc.getDigitalSignatures()) {
            System.out.println("*** Signature Found ***");
            System.out.println("Is valid: " + signature.isValid());
            // This property is available in MS Word documents only
            System.out.println("Reason for signing: " + signature.getComments()); 
            System.out.println("Signature type: " + signature.getSignatureType());
            System.out.println("Time of signing: " + signature.getSignTime());
            System.out.println("Subject name: " + signature.getSubjectName());
            System.out.println("Issuer name: " + signature.getIssuerName());
            System.out.println();
        }
      • getSubjectName

        public java.lang.String getSubjectName()
        
        Returns the subject distinguished name of the certificate that was used to sign the document.

        Example:

        Shows how to sign documents with X.509 certificates.
        // Verify that a document isn't signed
        Assert.assertFalse(FileFormatUtil.detectFileFormat(getMyDir() + "Document.docx").hasDigitalSignature());
        
        // Create a CertificateHolder object from a PKCS #12 file, which we will use to sign the document
        CertificateHolder certificateHolder = CertificateHolder.create(getMyDir() + "morzal.pfx", "aw", null);
        
        // There are 2 ways of saving a signed copy of a document to the local file system
        // 1: Designate unsigned input and signed output files by filename and sign with the passed CertificateHolder
        SignOptions signOptions = new SignOptions();
        signOptions.setSignTime(new Date());
        
        DigitalSignatureUtil.sign(getMyDir() + "Document.docx", getArtifactsDir() + "Document.DigitalSignature.docx",
                certificateHolder, signOptions);
        
        // 2: Create a stream for the input file and one for the output and create a file, signed with the CertificateHolder, at the file system location determine
        InputStream inDoc = new FileInputStream(getMyDir() + "Document.docx");
        try {
            OutputStream outDoc = new FileOutputStream(getArtifactsDir() + "Document.DigitalSignature.docx");
            try {
                DigitalSignatureUtil.sign(inDoc, outDoc, certificateHolder);
            } finally {
                if (outDoc != null) outDoc.close();
            }
        } finally {
            if (inDoc != null) inDoc.close();
        }
        
        Assert.assertTrue(FileFormatUtil.detectFileFormat(getArtifactsDir() + "Document.DigitalSignature.docx").hasDigitalSignature());
        
        // Open the signed document and get its digital signature collection
        Document signedDoc = new Document(getArtifactsDir() + "Document.DigitalSignature.docx");
        DigitalSignatureCollection digitalSignatureCollection = signedDoc.getDigitalSignatures();
        
        // Verify that all of the document's digital signatures are valid and check their details
        Assert.assertTrue(digitalSignatureCollection.isValid());
        Assert.assertEquals(1, digitalSignatureCollection.getCount());
        Assert.assertEquals(DigitalSignatureType.XML_DSIG, digitalSignatureCollection.get(0).getSignatureType());
        Assert.assertEquals("CN=Morzal.Me", signedDoc.getDigitalSignatures().get(0).getIssuerName());
        Assert.assertEquals("CN=Morzal.Me", signedDoc.getDigitalSignatures().get(0).getSubjectName());
    • Method Detail

      • toString

        public java.lang.String toString()
        Returns a user-friendly string that displays the value of this object.