Example usage for org.apache.pdfbox.pdmodel.interactive.digitalsignature PDSignature setContactInfo

List of usage examples for org.apache.pdfbox.pdmodel.interactive.digitalsignature PDSignature setContactInfo

Introduction

In this page you can find the example usage for org.apache.pdfbox.pdmodel.interactive.digitalsignature PDSignature setContactInfo.

Prototype

public void setContactInfo(String contactInfo) 

Source Link

Document

Sets the contact info provided by the signer to enable a recipient to contact the signer to verify the signature, e.g.

Usage

From source file:eu.europa.esig.dss.pdf.pdfbox.PdfBoxSignatureService.java

License:Open Source License

private PDSignature createSignatureDictionary(final PAdESSignatureParameters parameters) {

    final PDSignature signature = new PDSignature();
    signature.setType(getType());//from ww  w . ja  va  2  s  .co m
    // signature.setName(String.format("SD-DSS Signature %s", parameters.getDeterministicId()));
    Date date = parameters.bLevel().getSigningDate();
    String encodedDate = " " + Hex
            .encodeHexString(DSSUtils.digest(DigestAlgorithm.SHA1, Long.toString(date.getTime()).getBytes()));
    CertificateToken token = parameters.getSigningCertificate();
    if (token == null) {
        signature.setName("Unknown signer" + encodedDate);
    } else {
        if (parameters.getSigningCertificate().getSubjectShortName() != null) {
            String shortName = parameters.getSigningCertificate().getSubjectShortName() + encodedDate;
            signature.setName(shortName);
        } else {
            signature.setName("Unknown signer" + encodedDate);
        }
    }

    signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); // default filter
    // sub-filter for basic and PAdES Part 2 signatures
    signature.setSubFilter(getSubFilter());

    if (COSName.SIG.equals(getType())) {
        if (StringUtils.isNotEmpty(parameters.getContactInfo())) {
            signature.setContactInfo(parameters.getContactInfo());
        }

        if (StringUtils.isNotEmpty(parameters.getLocation())) {
            signature.setLocation(parameters.getLocation());
        }

        if (StringUtils.isNotEmpty(parameters.getReason())) {
            signature.setReason(parameters.getReason());
        }
    }

    // the signing date, needed for valid signature
    final Calendar cal = Calendar.getInstance();
    final Date signingDate = parameters.bLevel().getSigningDate();
    cal.setTime(signingDate);
    signature.setSignDate(cal);
    return signature;
}