diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-10-30 17:15:54 +0100 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-10-30 17:15:54 +0100 |
commit | fb3344c1e4d4ac8e8a6aa5605d052cee8cd4c3b1 (patch) | |
tree | 01e04f2f9e9286c02bbc55699d027150180bbe01 /pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java | |
parent | e123b037e65b336c677c0a66125ae85f5827417a (diff) | |
download | pdf-as-4-fb3344c1e4d4ac8e8a6aa5605d052cee8cd4c3b1.tar.gz pdf-as-4-fb3344c1e4d4ac8e8a6aa5605d052cee8cd4c3b1.tar.bz2 pdf-as-4-fb3344c1e4d4ac8e8a6aa5605d052cee8cd4c3b1.zip |
Introduced Process Information Map in PDFASError and SignResult
Diffstat (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java')
-rw-r--r-- | pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java index 19dc3d76..49a450af 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java @@ -31,6 +31,7 @@ import java.util.Iterator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import at.gv.egiz.pdfas.common.exceptions.ErrorConstants; import at.gv.egiz.pdfas.common.exceptions.PDFASError; import at.gv.egiz.pdfas.common.exceptions.PdfAsErrorCarrier; import at.gv.egiz.pdfas.common.exceptions.PdfAsException; @@ -48,7 +49,9 @@ import at.gv.egiz.sl.schema.InfoboxReadResponseType; public class ISignatureConnectorSLWrapper implements ISignatureConnector { public static final String SL_USE_BASE64 = ""; - + + public static final String SIGNATURE_DEVICE = "BKU"; + private static final Logger logger = LoggerFactory .getLogger(ISignatureConnectorSLWrapper.class); @@ -58,7 +61,8 @@ public class ISignatureConnectorSLWrapper implements ISignatureConnector { this.connector = connector; } - public X509Certificate getCertificate(SignParameter parameter) throws PdfAsException { + public X509Certificate getCertificate(SignParameter parameter) + throws PdfAsException { X509Certificate certificate = null; try { InfoboxReadRequestType request = connector @@ -83,25 +87,43 @@ public class ISignatureConnectorSLWrapper implements ISignatureConnector { return certificate; } - public byte[] sign(byte[] input, int[] byteRange, - SignParameter parameter, RequestedSignature requestedSignature) throws PdfAsException { - RequestPackage pack = connector.createCMSRequest( - input, byteRange, parameter); - CreateCMSSignatureResponseType response = connector - .sendCMSRequest(pack, parameter); - + public byte[] sign(byte[] input, int[] byteRange, SignParameter parameter, + RequestedSignature requestedSignature) throws PdfAsException { + RequestPackage pack = connector.createCMSRequest(input, byteRange, + parameter); + CreateCMSSignatureResponseType response = connector.sendCMSRequest( + pack, parameter); + + Iterator<BKUHeader> bkuHeaderIt = pack.getHeaders().iterator(); + + requestedSignature.getStatus().getMetaInformations() + .put(ErrorConstants.STATUS_INFO_SIGDEVICE, SIGNATURE_DEVICE); + while (bkuHeaderIt.hasNext()) { + BKUHeader header = bkuHeaderIt.next(); + if ("Server".equalsIgnoreCase(header.getName())) { + requestedSignature + .getStatus() + .getMetaInformations() + .put(ErrorConstants.STATUS_INFO_SIGDEVICEVERSION, + header.getValue()); + break; + } + } + VerifyResult verifyResult; try { - verifyResult = SignatureUtils.verifySignature(response.getCMSSignature(), input); + verifyResult = SignatureUtils.verifySignature( + response.getCMSSignature(), input); } catch (PDFASError e) { throw new PdfAsErrorCarrier(e); } - if(!StreamUtils.dataCompare(requestedSignature.getCertificate().getFingerprintSHA(), - ((X509Certificate)verifyResult.getSignerCertificate()).getFingerprintSHA())) { + if (!StreamUtils.dataCompare(requestedSignature.getCertificate() + .getFingerprintSHA(), ((X509Certificate) verifyResult + .getSignerCertificate()).getFingerprintSHA())) { throw new PdfAsSignatureException("Certificates missmatch!"); } - + return response.getCMSSignature(); } |