org.faceless.pdf2
Class EGIZSignatureHandler

java.lang.Object
  extended by org.faceless.pdf2.SignatureHandler
      extended by org.faceless.pdf2.EGIZSignatureHandler

public class EGIZSignatureHandler
extends SignatureHandler

The EGIZSignatureHandler SignatureHandler provides the framework for signing documents according to the requirements set by http://www.egiz.gv.at/. In order for this class to do anything useful, a EGIZSignatureHandler.Factory must be created.

Since:
2.11.12

Nested Class Summary
static interface EGIZSignatureHandler.Factory
          An implementation of this Factory is required to create and control the EGIZSignatureHandler
 
Nested classes/interfaces inherited from class org.faceless.pdf2.SignatureHandler
SignatureHandler.Placeholder
 
Field Summary
static int FONTCONSTANT
          A constant that must be added to the value passed in to the StandardFont constructor for any fonts used within the populateCanvas method
 
Constructor Summary
EGIZSignatureHandler(EGIZSignatureHandler.Factory factory)
          Create a a new EGIZSignatureHandler from the specified Factory
 
Method Summary
 String createToken(String type, int line, int length)
           Create a new token to be inserted into the canvas.
 X509Certificate[] getCertificates()
          Get the X.509 Certificates used to sign this Signature
 String getFilter()
          Return the name of the filter, eg "Adobe.PPKLite".
 String getIssuerInfo()
          Return the "Issuer Information" field of this siganture
 PDFCanvas getLayerAppearance(String value, PDFStyle style)
          Return a PDFCanvas for the specified layer.
 String[] getLayerNames()
          Return the list of appearance layer names used by this Signature Handler to create a visible appearance on the page, in the order they should be drawn.
 MessageDigest getMessageDigest()
          Return a MessageDigest that will be used to calculate the digest of the PDF for signing.
 String getParameter()
          Get the "Parameter" field of this Signature
 BigInteger getSerialNumber()
          Get the "Serial Number" field of this Signature
 byte[] getSignatureValue()
          Get the "Signature Value" of this signature.
 Calendar getSignDate()
          Get the time this signature was applied
 Map getVariables()
           Return the list of "variables" which will be set by the handler after the PDF is rendered.
 void postDigest(long filelength, Map variables)
          Update any Variables that need to be updated after the Digest is calculated (eg Contents).
 void preDigest(long filelength, Map variables)
          Update any Variables that need to be updated before the Digest is calculated (eg ByteRange).
 void prepareToSign(KeyStore keystore, String alias, char[] password)
           This method initialized the handler using the specified values into a state where it's ready to sign.
 void setCertificates(X509Certificate[] certs)
          Set the X.509 Certificates for this signature.
 void setIssuerInfo(String value)
          Set the "Issuer Information" field of this siganture.
 void setParameter(String value)
          Set the "Parameter" field of this Signature
 void setSerialNumber(BigInteger serial)
          Set the "Serial Number" field of this Signature
 void setSignatureValue(byte[] data)
          Set the "Signature Value" of this signature.
 void setSignDate(Calendar calender)
          Set the time this signature was applied
 void setSignerInfo(String value)
          Set the "Signer Information" field of this siganture.
 boolean verify(InputStream in)
          Return a boolean indicating whether or not the signature handler can verify the specified InputStream.
 
Methods inherited from class org.faceless.pdf2.SignatureHandler
containsKey, getArrayValueSize, getBooleanValue, getDefaultName, getDictionaryValueKeys, getEstimatedContentSize, getFormSignature, getNameValue, getNumericValue, getStreamValue, getStringValue, getTextStringValue, putArrayValue, putBooleanValue, putDictionaryValue, putNameValue, putNumericValue, putStreamValue, putStringValue, putTextStringValue, sign
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FONTCONSTANT

public static final int FONTCONSTANT
A constant that must be added to the value passed in to the StandardFont constructor for any fonts used within the populateCanvas method

See Also:
Constant Field Values
Constructor Detail

EGIZSignatureHandler

public EGIZSignatureHandler(EGIZSignatureHandler.Factory factory)
Create a a new EGIZSignatureHandler from the specified Factory

Method Detail

getFilter

public String getFilter()
Description copied from class: SignatureHandler
Return the name of the filter, eg "Adobe.PPKLite".

Specified by:
getFilter in class SignatureHandler

createToken

public String createToken(String type,
                          int line,
                          int length)

Create a new token to be inserted into the canvas. The token type must be one of "date" for the signature date, "serial" for the serial number, "parameter" for the parameter field, "value" for the signature value, "issuer" or "signer" for the signature issuer/signer, or "method" for the signature method. All these fields except for method can be split over multiple lines if necessary - the "line" parameter can range from 0 to 9.

This method should be called by the populateCanvas method, which is passed a reference to this EGIZSignatureHandler for this reason.

Parameters:
type - one of "date", "serial", "signer", "issuer", "method", "parameter" or "value"
line - the line number, from 0 to 9 (for type="method", this must be 0)
length - the length of the field in the canvas
Returns:
the piece of text to be inserted into the canvas for later substitution

prepareToSign

public void prepareToSign(KeyStore keystore,
                          String alias,
                          char[] password)
                   throws GeneralSecurityException
Description copied from class: SignatureHandler

This method initialized the handler using the specified values into a state where it's ready to sign. This method should be used to set any additional fields in the Signature dictionary, for example "Certs" for the Self-Sign handler.

Those overriding this method must call super.prepareToSign() before doing anything else.

Overrides:
prepareToSign in class SignatureHandler
Parameters:
keystore - the KeyStore
alias - which key to use
password - the password to use to decode the key
Throws:
GeneralSecurityException

setSignatureValue

public void setSignatureValue(byte[] data)
Set the "Signature Value" of this signature. Must be called from EGIZSignatureHandler.Factory.doSign(org.faceless.pdf2.EGIZSignatureHandler, java.security.MessageDigest)


setCertificates

public void setCertificates(X509Certificate[] certs)
Set the X.509 Certificates for this signature. Must be called from EGIZSignatureHandler.Factory.doSign(org.faceless.pdf2.EGIZSignatureHandler, java.security.MessageDigest)


getSignatureValue

public byte[] getSignatureValue()
Get the "Signature Value" of this signature.


setSignerInfo

public void setSignerInfo(String value)
Set the "Signer Information" field of this siganture. The supplied String may be split into multiple lines with "\n"


getCertificates

public X509Certificate[] getCertificates()
Get the X.509 Certificates used to sign this Signature


getIssuerInfo

public String getIssuerInfo()
Return the "Issuer Information" field of this siganture


setIssuerInfo

public void setIssuerInfo(String value)
Set the "Issuer Information" field of this siganture. The supplied String may be split into multiple lines with "\n"


setSignDate

public void setSignDate(Calendar calender)
Set the time this signature was applied


getSignDate

public Calendar getSignDate()
Get the time this signature was applied


setSerialNumber

public void setSerialNumber(BigInteger serial)
Set the "Serial Number" field of this Signature


getSerialNumber

public BigInteger getSerialNumber()
Get the "Serial Number" field of this Signature


getParameter

public String getParameter()
Get the "Parameter" field of this Signature


setParameter

public void setParameter(String value)
Set the "Parameter" field of this Signature


getMessageDigest

public MessageDigest getMessageDigest()
Description copied from class: SignatureHandler
Return a MessageDigest that will be used to calculate the digest of the PDF for signing. This message will be called before SignatureHandler.sign() - see the API docs for that method for more details.

Specified by:
getMessageDigest in class SignatureHandler

getVariables

public Map getVariables()
                 throws GeneralSecurityException
Description copied from class: SignatureHandler

Return the list of "variables" which will be set by the handler after the PDF is rendered. Entries in the returned map should have a String as a key and a SignatureHandler.Placeholder as a value. These placeholders will be inserted into the PDF at the correct points.

For most SignatureHandlers, the only variables are the "ByteRange" and "Contents" array containing the signature token, which is what this method returns (it may be overridden if more variables are required).

This method was updated for a new signing architecture in release 2.11.12.

Overrides:
getVariables in class SignatureHandler
Returns:
a Map containing the variables to be substituted into the PDF during signing
Throws:
GeneralSecurityException
See Also:
AcrobatSignatureHandlerFactory.setContentSize(int)

preDigest

public void preDigest(long filelength,
                      Map variables)
               throws IOException,
                      GeneralSecurityException,
                      CertificateException
Description copied from class: SignatureHandler
Update any Variables that need to be updated before the Digest is calculated (eg ByteRange).

Overrides:
preDigest in class SignatureHandler
Parameters:
filelength - the length of the PDF file, in bytes
variables - the Map of variables, ordered by their position in the file.
Throws:
IOException
GeneralSecurityException
CertificateException

postDigest

public void postDigest(long filelength,
                       Map variables)
                throws Exception
Description copied from class: SignatureHandler
Update any Variables that need to be updated after the Digest is calculated (eg Contents).

Overrides:
postDigest in class SignatureHandler
Parameters:
filelength - the length of the PDF file, in bytes
variables - the Map of variables, ordered by their position in the file.
Throws:
Exception

verify

public boolean verify(InputStream in)
               throws IOException,
                      GeneralSecurityException
Description copied from class: SignatureHandler
Return a boolean indicating whether or not the signature handler can verify the specified InputStream.

Specified by:
verify in class SignatureHandler
Returns:
true if the signature matches the specified InputStream
Throws:
IOException - if the InputStream cannot be read
GeneralSecurityException - if the signature cannot be verified for some cryptographic reason

getLayerNames

public String[] getLayerNames()
Description copied from class: SignatureHandler
Return the list of appearance layer names used by this Signature Handler to create a visible appearance on the page, in the order they should be drawn. This method is called internally by the FormSignature class when drawing the signature annotations on the page. For more information see the document "Digital Signature Appearances for Public-Key Interoperability", from Adobes website.

As an example, both the Verisign and the SelfSign handlers return the array [ "n0", "n1", "n2", "n3" ].

Specified by:
getLayerNames in class SignatureHandler
Returns:
the ordered list of layer names that should to used to create a visible representation of this signature on a page.
See Also:
SignatureHandler.getLayerAppearance(java.lang.String, org.faceless.pdf2.PDFStyle)

getLayerAppearance

public PDFCanvas getLayerAppearance(String value,
                                    PDFStyle style)
Description copied from class: SignatureHandler
Return a PDFCanvas for the specified layer. This method is called internally by the FormSignature class when drawing the signature annotations on the page. For more information see the document "Digital Signature Appearances for Public-Key Interoperability", from Adobes website.

Specified by:
getLayerAppearance in class SignatureHandler
Parameters:
value - the layer to create (from the list returned by SignatureHandler.getLayerNames())
style - the style in which to draw the text, if any
Returns:
a new PDFCanvas of any size containing the specified layer.
See Also:
SignatureHandler.getLayerNames()


Copyright © 2001-2010 Big Faceless Organization