DigitalSignature
Inheritance: java.lang.Object
public class DigitalSignature
Represents a digital signature on a document and the result of its verification.
To learn more, visit the Work with Digital Signatures documentation article.
Examples:
Shows how to validate and display information about each signature in a document.
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();
}
Methods
| Method | Description |
|---|---|
| getApplicationVersion() | Gets the application version for the digital signature. |
| getCertificateHolder() | Returns the certificate holder object that contains the certificate was used to sign the document. |
| getColorDepth() | Gets the color depth for the digital signature. |
| getComments() | Gets the signing purpose comment. |
| getHorizontalResolution() | Gets the horizontal resolution for the digital signature. |
| getIssuerName() | Returns the subject distinguished name of the certificate isuuer. |
| getOfficeVersion() | Gets the Office version for the digital signature. |
| getSignTime() | Gets the time the document was signed. |
| getSignatureType() | Gets the type of the digital signature. |
| getSignatureValue() | Gets an array of bytes representing a signature value. |
| getSubjectName() | Returns the subject distinguished name of the certificate that was used to sign the document. |
| getVerticalResolution() | Gets the vertical resolution for the digital signature. |
| getWindowsVersion() | Gets the Windows version for the digital signature. |
| isValid() | Returns true if this digital signature is valid and the document has not been tampered with. |
| toString() | Returns a user-friendly string that displays the value of this object. |
getApplicationVersion()
public String getApplicationVersion()
Gets the application version for the digital signature.
Returns: java.lang.String - The application version for the digital signature.
getCertificateHolder()
public CertificateHolder getCertificateHolder()
Returns the certificate holder object that contains the certificate was used to sign the document.
Examples:
Shows how to sign documents with X.509 certificates.
// Verify that a document is not signed.
Assert.assertFalse(FileFormatUtil.detectFileFormat(getMyDir() + "Document.docx").hasDigitalSignature());
// Create a CertificateHolder object from a PKCS12 file, which we will use to sign the document.
CertificateHolder certificateHolder = CertificateHolder.create(getMyDir() + "morzal.pfx", "aw", null);
SignOptions signOptions = new SignOptions();
signOptions.setSignTime(new Date());
// 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.
DigitalSignatureUtil.sign(getMyDir() + "Document.docx", getArtifactsDir() + "Document.DigitalSignature.docx",
certificateHolder, signOptions);
Assert.assertTrue(FileFormatUtil.detectFileFormat(getArtifactsDir() + "Document.DigitalSignature.docx").hasDigitalSignature());
// 2 - Take a document from a stream, and save a signed copy to another stream.
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());
// Please verify that all of the document's digital signatures are valid and check their details.
Document signedDoc = new Document(getArtifactsDir() + "Document.DigitalSignature.docx");
DigitalSignatureCollection digitalSignatureCollection = signedDoc.getDigitalSignatures();
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());
Returns: CertificateHolder - The certificate holder object that contains the certificate was used to sign the document.
getColorDepth()
public int getColorDepth()
Gets the color depth for the digital signature.
Returns: int - The color depth for the digital signature.
getComments()
public String getComments()
Gets the signing purpose comment.
Examples:
Shows how to validate and display information about each signature in a document.
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();
}
Returns: java.lang.String - The signing purpose comment.
getHorizontalResolution()
public int getHorizontalResolution()
Gets the horizontal resolution for the digital signature.
Returns: int - The horizontal resolution for the digital signature.
getIssuerName()
public String getIssuerName()
Returns the subject distinguished name of the certificate isuuer.
Examples:
Shows how to sign documents with X.509 certificates.
// Verify that a document is not signed.
Assert.assertFalse(FileFormatUtil.detectFileFormat(getMyDir() + "Document.docx").hasDigitalSignature());
// Create a CertificateHolder object from a PKCS12 file, which we will use to sign the document.
CertificateHolder certificateHolder = CertificateHolder.create(getMyDir() + "morzal.pfx", "aw", null);
SignOptions signOptions = new SignOptions();
signOptions.setSignTime(new Date());
// 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.
DigitalSignatureUtil.sign(getMyDir() + "Document.docx", getArtifactsDir() + "Document.DigitalSignature.docx",
certificateHolder, signOptions);
Assert.assertTrue(FileFormatUtil.detectFileFormat(getArtifactsDir() + "Document.DigitalSignature.docx").hasDigitalSignature());
// 2 - Take a document from a stream, and save a signed copy to another stream.
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());
// Please verify that all of the document's digital signatures are valid and check their details.
Document signedDoc = new Document(getArtifactsDir() + "Document.DigitalSignature.docx");
DigitalSignatureCollection digitalSignatureCollection = signedDoc.getDigitalSignatures();
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());
Returns: java.lang.String - The subject distinguished name of the certificate isuuer.
getOfficeVersion()
public String getOfficeVersion()
Gets the Office version for the digital signature.
Returns: java.lang.String - The Office version for the digital signature.
getSignTime()
public Date getSignTime()
Gets the time the document was signed.
Examples:
Shows how to validate and display information about each signature in a document.
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();
}
Returns: java.util.Date - The time the document was signed.
getSignatureType()
public int getSignatureType()
Gets the type of the digital signature.
Examples:
Shows how to validate and display information about each signature in a document.
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();
}
Returns: int - The type of the digital signature. The returned value is one of DigitalSignatureType constants.
getSignatureValue()
public byte[] getSignatureValue()
Gets an array of bytes representing a signature value.
Examples:
Shows how to get a digital signature value from a digitally signed document.
Document doc = new Document(getMyDir() + "Digitally signed.docx");
for (DigitalSignature digitalSignature : doc.getDigitalSignatures())
{
String signatureValue = Base64.getEncoder().encodeToString(digitalSignature.getSignatureValue());
Assert.assertEquals("K1cVLLg2kbJRAzT5WK+m++G8eEO+l7S+5ENdjMxxTXkFzGUfvwxREuJdSFj9AbD" +
"MhnGvDURv9KEhC25DDF1al8NRVR71TF3CjHVZXpYu7edQS5/yLw/k5CiFZzCp1+MmhOdYPcVO+Fm" +
"+9fKr2iNLeyYB+fgEeZHfTqTFM2WwAqo=", signatureValue);
}
Returns: byte[] - An array of bytes representing a signature value.
getSubjectName()
public String getSubjectName()
Returns the subject distinguished name of the certificate that was used to sign the document.
Examples:
Shows how to sign documents with X.509 certificates.
// Verify that a document is not signed.
Assert.assertFalse(FileFormatUtil.detectFileFormat(getMyDir() + "Document.docx").hasDigitalSignature());
// Create a CertificateHolder object from a PKCS12 file, which we will use to sign the document.
CertificateHolder certificateHolder = CertificateHolder.create(getMyDir() + "morzal.pfx", "aw", null);
SignOptions signOptions = new SignOptions();
signOptions.setSignTime(new Date());
// 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.
DigitalSignatureUtil.sign(getMyDir() + "Document.docx", getArtifactsDir() + "Document.DigitalSignature.docx",
certificateHolder, signOptions);
Assert.assertTrue(FileFormatUtil.detectFileFormat(getArtifactsDir() + "Document.DigitalSignature.docx").hasDigitalSignature());
// 2 - Take a document from a stream, and save a signed copy to another stream.
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());
// Please verify that all of the document's digital signatures are valid and check their details.
Document signedDoc = new Document(getArtifactsDir() + "Document.DigitalSignature.docx");
DigitalSignatureCollection digitalSignatureCollection = signedDoc.getDigitalSignatures();
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());
Returns: java.lang.String - The subject distinguished name of the certificate that was used to sign the document.
getVerticalResolution()
public int getVerticalResolution()
Gets the vertical resolution for the digital signature.
Returns: int - The vertical resolution for the digital signature.
getWindowsVersion()
public String getWindowsVersion()
Gets the Windows version for the digital signature.
Returns: java.lang.String - The Windows version for the digital signature.
isValid()
public boolean isValid()
Returns true if this digital signature is valid and the document has not been tampered with.
Examples:
Shows how to validate and display information about each signature in a document.
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();
}
Returns: boolean - true if this digital signature is valid and the document has not been tampered with.
toString()
public String toString()
Returns a user-friendly string that displays the value of this object.
Returns: java.lang.String