package at.gv.egovernment.moa.spss.server.invoke; import java.io.ByteArrayOutputStream; import java.io.File; import java.util.Iterator; import java.util.List; import org.apache.commons.io.IOUtils; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.server.logging.TransactionId; import at.gv.egovernment.moa.spss.server.pdfas.InternalMoaConnector; import at.gv.egovernment.moa.spss.server.pdfas.InternalMoaVerifier; import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRequest; import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRespone; import at.gv.egovernment.moa.spss.server.xmlbind.PDFSignatureInfo; import at.gv.egovernment.moa.spss.server.xmlbind.SignedPDFInfo; import at.gv.egovernment.moa.spss.server.xmlbind.VerifyPDFRequest; import at.gv.egovernment.moa.spss.server.xmlbind.VerifyPDFResponse; import at.gv.egovernment.moaspss.logging.Logger; public class PDFASInvoker { /* private static PDFASInvoker instance = null; private PdfAs pdfAS; private PDFASInvoker(File configuration) { pdfAS = PdfAsFactory.createPdfAs(configuration); } public synchronized static void init(String pdfAsConfiguration) { instance = new PDFASInvoker(new File(pdfAsConfiguration)); } public synchronized static PDFASInvoker getInstance() { if (instance == null) { throw new RuntimeException("PDF PDFASInvoker not initialized"); } return instance; } public VerifyPDFResponse verifyPDFSignature(VerifyPDFRequest verifyPDFRequest) throws MOAException { Configuration pdfConfiguration = this.pdfAS.getConfiguration(); VerifyPDFResponse verifyPDFResponse = new VerifyPDFResponse(); VerifyParameter verifyParameter = PdfAsFactory.createVerifyParameter(pdfConfiguration, new ByteArrayDataSource( verifyPDFRequest.getSignedPDF())); pdfConfiguration.setValue(InternalMoaVerifier.MOA_TRUSTPROFILE, verifyPDFRequest.getTrustProfileID()); try { List verifyResults = this.pdfAS.verify(verifyParameter); verifyPDFResponse.setVerificationResults(verifyResults); } catch (Throwable e) { Logger.warn("Failed to generate signed PDF document", e); throw new MOAApplicationException("Failed to generate signed PDF document", null, e); } return verifyPDFResponse; } public CreatePDFRespone createPDFSignature(CreatePDFRequest createPDFRequest, String transactionId) { Configuration pdfConfiguration = this.pdfAS.getConfiguration(); String keyIdentifier = createPDFRequest.getKeyIdentifier(); Iterator signatureInfoIterator = createPDFRequest.getSignatureInfoList().iterator(); CreatePDFRespone createPDFRespone = new CreatePDFRespone(); while (signatureInfoIterator.hasNext()) { PDFSignatureInfo pdfSignatureInfo = signatureInfoIterator.next(); SignedPDFInfo signedPDFInfo = new SignedPDFInfo(pdfSignatureInfo.getSignatureID()); try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); SignParameter signParameter = PdfAsFactory.createSignParameter(pdfConfiguration, new ByteArrayDataSource(pdfSignatureInfo.getPdfDocument()), baos); signParameter.setSignaturePosition(pdfSignatureInfo.getSignaturePosition()); signParameter.setSignatureProfileId(pdfSignatureInfo.getSignatureProfile()); IPlainSigner signer = new PAdESSigner( new InternalMoaConnector(keyIdentifier, new TransactionId(transactionId), null)); signParameter.setPlainSigner(signer); try { this.pdfAS.sign(signParameter); signedPDFInfo.setPdfDocument(baos.toByteArray()); signedPDFInfo.setResponseType(SignedPDFInfo.SUCCESS_SIGNATURE); } catch (Throwable e) { signedPDFInfo.setResponseType(SignedPDFInfo.ERROR_RESPONSE); if (e instanceof PDFASError) { PDFASError pdfAsError = (PDFASError) e; Logger.warn("Failed to generate signed PDF document", e); signedPDFInfo.setErrorCode((int) pdfAsError.getCode()); signedPDFInfo.setErrorInfo(pdfAsError.getInfo()); } else { Logger.error("Unknown exception!: ", e); signedPDFInfo.setErrorCode(9999); signedPDFInfo.setErrorInfo("Nicht klassifizierter Fehler"); } } finally { IOUtils.closeQuietly(baos); } } finally { createPDFRespone.getSignatureInfoList().add(signedPDFInfo); } } return createPDFRespone; }*/ }