/** * Copyright 2006 by Know-Center, Graz, Austria * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a * joint initiative of the Federal Chancellery Austria and Graz University of * Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egiz.pdfas.impl.api.verify; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import at.gv.egiz.pdfas.api.exceptions.PdfAsException; import at.gv.egiz.pdfas.api.verify.SignatureCheck; import at.gv.egiz.pdfas.api.verify.VerifyResult; import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData; import at.gv.egiz.pdfas.impl.api.commons.SignatureInformationAdapter; import at.knowcenter.wag.egov.egiz.exceptions.SettingNotFoundException; import at.knowcenter.wag.egov.egiz.pdf.BinarySignatureHolder; import at.knowcenter.wag.egov.egiz.pdf.SignatureHolder; import at.knowcenter.wag.egov.egiz.sig.SignatureResponse; /** * Implements the VerifyResult interface. * * @author wprinz */ public class VerifyResultAdapter extends SignatureInformationAdapter implements VerifyResult { protected SignatureResponse sigRes = null; /** * The log. */ private static final Log logger_ = LogFactory.getLog(VerifyResultAdapter.class); protected Date vTime = null; private String timestamp; private XMLDsigData xmlDsigData; /** * Constructor. * * @param sigRes * The SignatureResponse. * @param sh * The SignatureHolder. * @param verificationTime * The time of verification. This is directly returned by {@link #getVerificationTime()} * @param xmlDsigData */ public VerifyResultAdapter(SignatureResponse sigRes, SignatureHolder sh, Date verificationTime, XMLDsigData xmlDsigData) { super(sh); this.sigRes = sigRes; this.vTime = verificationTime; this.xmlDsigData = xmlDsigData; if (sh instanceof BinarySignatureHolder) { this.timestamp = ((BinarySignatureHolder)sh).getSignatureObject().getTimeStamp(); } // [tknall] start: missing time of verification fixed if (this.vTime == null) { // verification time not been set (= null) therefore signingtime equals verificationtime this.vTime = super.getSigningTime(); } // [tknall] stop: missing time of verification fixed } /** * @see at.gv.egiz.pdfas.api.verify.VerifyResult#getCertificateCheck() */ public SignatureCheck getCertificateCheck() { return new SignatureCheckImpl(Integer.parseInt(this.sigRes.getCertificateCheckCode()), this.sigRes.getCertificateCheckInfo()); } /** * @see at.gv.egiz.pdfas.api.verify.VerifyResult#getManifestCheckCode() */ public SignatureCheck getManifestCheckCode() { return new SignatureCheckImpl(Integer.parseInt(this.sigRes.getSignatureManifestCheckCode()), this.sigRes.getSignatureManifestCheckInfo()); } /** * @see at.gv.egiz.pdfas.api.verify.VerifyResult#getValueCheckCode() */ public SignatureCheck getValueCheckCode() { return new SignatureCheckImpl(Integer.parseInt(this.sigRes.getSignatureCheckCode()), this.sigRes.getSignatureCheckInfo()); } /** * @see at.gv.egiz.pdfas.api.verify.VerifyResult#getVerificationTime() */ public Date getVerificationTime() { return this.vTime; } /** * @see at.gv.egiz.pdfas.api.verify.VerifyResult#isQualifiedCertificate() */ public boolean isQualifiedCertificate() { return this.sigRes.isQualifiedCertificate(); } /** * @see at.gv.egiz.pdfas.api.verify.VerifyResult#getPublicProperties() */ public List getPublicProperties() { try { return this.sigRes.getPublicProperties(); } catch (SettingNotFoundException e) { logger_.error(e.getMessage(), e); return new ArrayList(); } } /** * @see at.gv.egiz.pdfas.api.commons.SignatureInformation#getInternalSignatureInformation() */ public Object getInternalSignatureInformation() { return null; } /** * @see at.gv.egiz.pdfas.api.commons.SignatureInformation#getSignerCertificate() */ public X509Certificate getSignerCertificate() { // TODO this should be the same as the signature holder's cert. return this.sigRes.getCertificate().getX509Certificate(); } /** * @see at.gv.egiz.pdfas.api.verify.VerifyResult#getHashInputData() */ public String getHashInputData() { return this.sigRes.getHashInputData(); } /** * @see at.gv.egiz.pdfas.api.verify.VerifyResult#getPublicAuthorityCode() */ public String getPublicAuthorityCode() { return this.sigRes.getPublicAuthorityCode(); } /** * @see at.gv.egiz.pdfas.api.verify.VerifyResult#isPublicAuthority() */ public boolean isPublicAuthority() { return this.sigRes.isPublicAuthority(); } public PdfAsException getVerificationException() { return this.sigRes.getVerificationImpossibleEx(); } public boolean isVerificationDone() { return this.sigRes.getVerificationImpossibleEx() == null; } /** * @see VerifyResult#getReconstructedXMLDsig() */ public XMLDsigData getReconstructedXMLDsig() { return this.xmlDsigData; } }