aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/VerifyResultJSONEncoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/VerifyResultJSONEncoder.java')
-rw-r--r--pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/VerifyResultJSONEncoder.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/VerifyResultJSONEncoder.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/VerifyResultJSONEncoder.java
new file mode 100644
index 00000000..c2d0aeb9
--- /dev/null
+++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/VerifyResultJSONEncoder.java
@@ -0,0 +1,78 @@
+package at.gv.egiz.pdfas.web.helper;
+
+import iaik.x509.X509Certificate;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.security.cert.CertificateEncodingException;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
+
+import org.apache.commons.codec.binary.Base64;
+
+public class VerifyResultJSONEncoder implements VerifyResultEncoder {
+
+ private static final Logger logger = LoggerFactory
+ .getLogger(VerifyResultJSONEncoder.class);
+
+ public void produce(HttpServletRequest request,
+ HttpServletResponse response, List<VerifyResult> results)
+ throws IOException {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("{\"signatures\":[");
+ for (int i = 0; i < results.size(); i++) {
+ VerifyResult result = results.get(i);
+
+ X509Certificate cert = (X509Certificate) result
+ .getSignerCertificate();
+
+ int certCode = result.getCertificateCheck().getCode();
+ String certMessage = result.getCertificateCheck().getMessage();
+
+ int valueCode = result.getValueCheckCode().getCode();
+ String valueMessage = result.getValueCheckCode().getMessage();
+
+ Exception e = result.getVerificationException();
+
+ sb.append("{");
+ if (result.isVerificationDone()) {
+ sb.append("\"processed\":\"" + result.isVerificationDone()
+ + "\", ");
+ sb.append("\"signedBy\":\"" + cert.getSubjectDN().getName()
+ + "\", ");
+ sb.append("\"certCode\":\"" + certCode + "\", ");
+ sb.append("\"certMessage\":\"" + certMessage + "\", ");
+ sb.append("\"valueCode\":\"" + valueCode + "\", ");
+ sb.append("\"valueMessage\":\"" + valueMessage + "\"");
+ if (e != null) {
+ sb.append(", ");
+ sb.append("\"error\":\"" + e.getMessage()
+ + "\"");
+ }
+ sb.append(", ");
+ sb.append("\"certificate\":\"signCert?SIGID=" + i + "\", ");
+ sb.append("\"signedData\":\"signData?SIGID=" + i + "\"");
+ } else {
+ sb.append("\"processed\":\"" + result.isVerificationDone()
+ + "\"");
+ }
+
+ sb.append("}");
+ }
+ sb.append("]}");
+
+ response.setContentType("application/json");
+ OutputStream os = response.getOutputStream();
+ os.write(sb.toString().getBytes());
+ os.close();
+ }
+
+}