Example usage for com.lowagie.text.pdf PdfPKCS7 getEncodedPKCS1

List of usage examples for com.lowagie.text.pdf PdfPKCS7 getEncodedPKCS1

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfPKCS7 getEncodedPKCS1.

Prototype

public byte[] getEncodedPKCS1() 

Source Link

Document

Gets the bytes for the PKCS#1 object.

Usage

From source file:androidGLUESigner.pdf.PDFSignerEngine.java

License:Open Source License

/**
 * Simple Sign method to create a signature without Online Timestamp (needed if device
 * has no internet connection)/*from  w ww.  ja v  a 2  s .co  m*/
 * 
 * @param inputfile the inputfile
 * @param outputfile the outpuftile
 * @param connection the IConnection Object
 */
public void simpleSign(String inputfile, String outputfile, IConnection connection)
        throws IOException, DocumentException, CertificateException, InvalidKeyException,
        NoSuchAlgorithmException, SignatureException, ReaderException {
    try {
        SignatureInfo sigInfo = getSiginfo();
        PdfReader reader = new PdfReader(inputfile);
        FileOutputStream fout = new FileOutputStream(outputfile);
        PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0', null, true);
        PdfSignatureAppearance sap = stp.getSignatureAppearance();
        sap.setCrypto(null, new Certificate[] { getCertificateChain()[0] }, null,
                PdfSignatureAppearance.SELF_SIGNED);
        sap.setReason(sigInfo.getSignatureReason());
        sap.setLocation(sigInfo.getSignatureLocation());

        // get the selected rectangle and pagenumber for visible signature
        Rectangle signatureRect = new Rectangle(siginfo.getSignatureRect().left,
                siginfo.getSignatureRect().bottom, siginfo.getSignatureRect().right,
                siginfo.getSignatureRect().top);
        int pageNumber = siginfo.getPageNumber();
        sap.setVisibleSignature(signatureRect, pageNumber, null);
        // set signature picture, if there is one
        if (siginfo.getSignatureType() == SignatureType.PICTURE) {
            Image obj_pic = Image.getInstance(siginfo.getImagePath());
            sap.setImage(obj_pic);
        }

        sap.setExternalDigest(new byte[256], new byte[20], null);
        sap.preClose();

        java.io.InputStream inp = sap.getRangeStream();
        byte bytesToHash[] = IOUtils.toByteArray(inp);

        // sign the hash value
        byte[] signed = connection.sign(bytesToHash);

        PdfPKCS7 pdfSignature = sap.getSigStandard().getSigner();
        pdfSignature.setExternalDigest(signed, null, "RSA");

        PdfDictionary dic = new PdfDictionary();
        dic.put(PdfName.CONTENTS, new PdfString(pdfSignature.getEncodedPKCS1()).setHexWriting(true));
        sap.close(dic);
    } catch (Exception e) {
        Logger.toConsole(e);
    }
}