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.
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);
}
}