diff options
Diffstat (limited to 'moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java')
-rw-r--r-- | moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java new file mode 100644 index 0000000..705eff6 --- /dev/null +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java @@ -0,0 +1,110 @@ +package at.gv.egovernment.moa.spss.server.xmlbind; + +import java.util.Iterator; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import at.gv.egiz.pdfas.lib.api.verify.VerifyResult; +import at.gv.egovernment.moa.spss.MOAApplicationException; +import at.gv.egovernment.moa.spss.MOAException; +import at.gv.egovernment.moa.spss.MOASystemException; +import at.gv.egovernment.moa.spss.api.xmlbind.ResponseBuilderUtils; +import at.gv.egovernment.moa.spss.server.pdfas.ExtendedVerifyResult; +import at.gv.egovernment.moa.util.Constants; + +public class VerifyPDFResponseBuilder { + private static final String MOA_NS_URI = Constants.MOA_NS_URI; + + //private static final Logger logger = LoggerFactory.getLogger(VerifyPDFResponseBuilder.class); + + /** The XML document containing the response element. */ + private Document responseDoc; + /** The response <code>CreateCMSSignatureResponse</code> DOM element. */ + private Element responseElem; + + /** + * Create a new <code>CreateCMSSignatureResponseBuilder</code>: + * + * @throws MOASystemException + * An error occurred setting up the resulting XML document. + */ + public VerifyPDFResponseBuilder() throws MOASystemException { + responseDoc = ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse"); + responseElem = responseDoc.getDocumentElement(); + } + + /** + * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM + * element being the XML representation of the given + * <code>CreateCMSSignatureResponse</code> API object. + * + * @param response + * The <code>CreateCMSSignatureResponse</code> to convert to XML. + * @return A document containing the <code>CreateCMSSignatureResponse</code> + * DOM element. + */ + public Document build(VerifyPDFResponse response) throws MOAException { + if(response.getVerificationResults() == null) { + throw new MOAApplicationException("No verification results available", null); + } + Iterator<VerifyResult> iter = response.getVerificationResults().iterator(); + + while (iter.hasNext()) { + VerifyResult verifyResult = iter.next(); + addVerifyResult(verifyResult); + } + + return responseDoc; + } + + private void addVerifyResult(VerifyResult verifyResult) throws MOAApplicationException { + Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "SignatureResult"); + + + String qcSource = null; + String publicAuthorityID = null; + String sscdSource = null; + boolean isPublicAuthority = false; + boolean isSSCD = false; + String issureCountryCode = null; + + if(verifyResult instanceof ExtendedVerifyResult) { + ExtendedVerifyResult extendedVerifyResult = (ExtendedVerifyResult)verifyResult; + + qcSource = extendedVerifyResult.getQcSource(); + publicAuthorityID = extendedVerifyResult.getPublicAuthorityID(); + sscdSource = extendedVerifyResult.getQcSource(); + issureCountryCode = extendedVerifyResult.getIssureCountryCode(); + + isPublicAuthority = extendedVerifyResult.isPublicAuthority(); + isSSCD = extendedVerifyResult.isSSCD(); + } + + ResponseBuilderUtils.addSignerInfo(responseDoc, pdfSignature, + verifyResult.getSignerCertificate(), + verifyResult.isQualifiedCertificate(), + qcSource, + isPublicAuthority, + publicAuthorityID, + isSSCD, + sscdSource, + issureCountryCode); + + ResponseBuilderUtils.addCodeInfoElement( + responseDoc, + pdfSignature, + "SignatureCheck", + verifyResult.getValueCheckCode().getCode(), + (String)null); + + ResponseBuilderUtils.addCodeInfoElement( + responseDoc, + pdfSignature, + "CertificateCheck", + verifyResult.getCertificateCheck().getCode(), + (String)null); + + responseElem.appendChild(pdfSignature); + } +} |