aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java
diff options
context:
space:
mode:
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.java56
1 files changed, 56 insertions, 0 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
new file mode 100644
index 00000000..491c465a
--- /dev/null
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/sl/util/ISignatureConnectorSLWrapper.java
@@ -0,0 +1,56 @@
+package at.gv.egiz.sl.util;
+
+import java.security.cert.CertificateException;
+import java.util.Iterator;
+
+import iaik.x509.X509Certificate;
+import at.gv.egiz.pdfas.common.exceptions.PdfAsException;
+import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner;
+import at.gv.egiz.sl.CreateCMSSignatureRequestType;
+import at.gv.egiz.sl.CreateCMSSignatureResponseType;
+import at.gv.egiz.sl.InfoboxAssocArrayPairType;
+import at.gv.egiz.sl.InfoboxReadRequestType;
+import at.gv.egiz.sl.InfoboxReadResponseType;
+
+public class ISignatureConnectorSLWrapper implements ISignatureConnector {
+
+ private ISLConnector connector;
+
+ public ISignatureConnectorSLWrapper(ISLConnector connector) {
+ this.connector = connector;
+ }
+
+ public X509Certificate getCertificate() throws PdfAsException {
+ X509Certificate certificate = null;
+ try {
+ InfoboxReadRequestType request = connector
+ .createInfoboxReadRequest();
+ InfoboxReadResponseType response = connector
+ .sendInfoboxReadRequest(request);
+
+ Iterator<InfoboxAssocArrayPairType> iterator = response
+ .getAssocArrayData().getPair().iterator();
+
+ while (iterator.hasNext()) {
+ InfoboxAssocArrayPairType pair = iterator.next();
+ if (pair.getKey().equals("SecureSignatureKeypair")) {
+ byte[] certData = pair.getBase64Content();
+ certificate = new X509Certificate(certData);
+ break;
+ }
+ }
+ } catch (CertificateException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return certificate;
+ }
+
+ public byte[] sign(byte[] input, int[] byteRange) throws PdfAsException {
+ CreateCMSSignatureRequestType request = connector.createCMSRequest(input, byteRange);
+ CreateCMSSignatureResponseType response = connector.sendCMSRequest(request);
+
+ return response.getCMSSignature();
+ }
+
+}