package at.gv.egovernment.moa.spss.server.invoke; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import iaik.server.modules.cmsverify.CMSSignatureVerificationResult; import iaik.server.modules.cmsverify.CertificateValidationResult; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.api.SPSSFactory; import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse; import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement; import at.gv.egovernment.moa.spss.api.common.CheckResult; import at.gv.egovernment.moa.spss.api.common.SignerInfo; /** * A class to build a VerifyCMSSignatureResponse object. * *

Via subsequent calls to addResult() a number of results from * a CMS signature verification can be added to the response.

* *

The getResponseElement() method then returns the * VerifyCMSSignatureResponse built so far.

* * @author Patrick Peck * @version $Id$ */ public class VerifyCMSSignatureResponseBuilder { /** The SPSSFactory for creating API objects. */ private SPSSFactory factory = SPSSFactory.getInstance(); /** The elements making up the response. */ private List responseElements = new ArrayList(); /** * Get the VerifyCMSSignatureResponse built so far. * * @return The VerifyCMSSignatureResponse built so far. */ public VerifyCMSSignatureResponse getResponse() { return factory.createVerifyCMSSignatureResponse(responseElements); } /** * Add a verification result to the response. * * @param result The result to add. * @throws MOAApplicationException An error occurred adding the result. */ public void addResult(CMSSignatureVerificationResult result) throws MOAApplicationException { CertificateValidationResult certResult = result.getCertificateValidationResult(); int signatureCheckCode = result.getSignatureValueVerificationCode().intValue(); int certificateCheckCode = certResult.getValidationResultCode().intValue(); VerifyCMSSignatureResponseElement responseElement; SignerInfo signerInfo; CheckResult signatureCheck; CheckResult certificateCheck; // add SignerInfo element signerInfo = factory.createSignerInfo( (X509Certificate) certResult.getCertificateChain().get(0), certResult.isQualifiedCertificate(), certResult.isPublicAuthorityCertificate(), certResult.getPublicAuthorityID()); // add SignatureCheck element signatureCheck = factory.createCheckResult(signatureCheckCode, null); // add CertificateCheck element certificateCheck = factory.createCheckResult(certificateCheckCode, null); // build the response element responseElement = factory.createVerifyCMSSignatureResponseElement( signerInfo, signatureCheck, certificateCheck); responseElements.add(responseElement); } }