From 5812d840b420697b6821080a7cbb0f3c792fc1ac Mon Sep 17 00:00:00 2001
From: tknall <tknall@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c>
Date: Thu, 19 Mar 2009 17:33:16 +0000
Subject: Build script for command line version updated. JavaDoc fixes. Some
 updates for debugging messages. Parser for MOCCA-CreateXMLSignatureResponses
 enhanced. Many updates and fixes for the external web app interface. New
 profile for invisible signatures added.

git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@333 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
---
 pom.xml                                            |   3 +-
 src/main/assembly/assemble_distribution_brz.xml    |   2 +-
 src/main/assembly/assemble_distribution_cl.xml     | 107 +++-----------
 src/main/distribution/brz/pdf-as.bat               |   8 ++
 src/main/distribution/cl/pdf-as.bat                |   8 ++
 src/main/distribution/cl/pdf-as.sh                 |   8 ++
 src/main/distribution/pdf-as.bat                   |   8 --
 .../at/gv/egiz/pdfas/api/verify/VerifyResult.java  |   6 +-
 .../at/gv/egiz/pdfas/impl/api/CheckHelper.java     |   2 +-
 .../egiz/pdfas/web/helper/SignServletHelper.java   |  23 ++-
 .../java/at/knowcenter/wag/egov/egiz/PdfAS.java    |   2 +-
 .../wag/egov/egiz/cfg/SettingsReader.java          |   2 +-
 .../wag/egov/egiz/pdf/PDFSignatureObjectIText.java |   4 +-
 .../sig/connectors/bku/DetachedBKUConnector.java   |   6 +
 .../bku/EnvelopedBase64BKUConnector.java           |   8 ++
 .../connectors/moa/DetachedLocRefMOAConnector.java |   8 ++
 .../moa/EnvelopingBase64MOAConnector.java          |   8 ++
 .../moa/MOASoapWithAttachmentConnector.java        |   8 ++
 .../mocca/LocRefDetachedMOCCAConnector.java        |   9 ++
 .../egiz/sig/connectors/mocca/MOCCAHelper.java     |   4 +-
 .../knowcenter/wag/egov/egiz/web/FormFields.java   |   2 +
 .../wag/egov/egiz/web/servlets/DataURLServlet.java |   6 +
 .../egov/egiz/web/servlets/ProvidePDFServlet.java  |  58 +++++---
 src/main/resources/DefaultConfiguration.zip        | Bin 648596 -> 648725 bytes
 src/main/webapp/jsp/error.jsp                      |   9 +-
 src/main/webapp/jsp/redirect_to_parent.jsp         |  13 +-
 .../sitemesh/buergerkarte/pdf-as-template-de.jsp   | 140 ------------------
 .../sitemesh/buergerkarte/pdf-as-template.jsp      | 160 ---------------------
 .../buergerkarte/test-pdf-as-template-de.jsp       | 140 ------------------
 .../sitemesh/buergerkarte/test-pdf-as-template.jsp | 160 ---------------------
 src/site/changes.xml                               |   9 ++
 work/cfg/config.properties                         |  85 ++++++-----
 32 files changed, 248 insertions(+), 768 deletions(-)
 create mode 100644 src/main/distribution/brz/pdf-as.bat
 create mode 100644 src/main/distribution/cl/pdf-as.bat
 create mode 100644 src/main/distribution/cl/pdf-as.sh
 delete mode 100644 src/main/distribution/pdf-as.bat
 delete mode 100644 src/main/webapp/sitemesh/buergerkarte/pdf-as-template-de.jsp
 delete mode 100644 src/main/webapp/sitemesh/buergerkarte/pdf-as-template.jsp
 delete mode 100644 src/main/webapp/sitemesh/buergerkarte/test-pdf-as-template-de.jsp
 delete mode 100644 src/main/webapp/sitemesh/buergerkarte/test-pdf-as-template.jsp

diff --git a/pom.xml b/pom.xml
index 31bc29c..5f89609 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
 	<groupId>knowcenter</groupId>
 	<artifactId>pdf-as</artifactId>
 	<name>PDF-AS</name>
-	<version>3.0.9-20090203</version>
+	<version>3.0.9-20090319</version>
 	<!-- don't forget to set the version string at.knowcenter.wag.egov.egiz.PdfAS.PDFAS_VERSION accordingly -->
 
 	<description>Amtssignatur fuer elektronische Aktenfuehrung</description>
@@ -132,6 +132,7 @@
 						<descriptor>src/main/assembly/assemble_distribution_brz.xml</descriptor>
 						-->
 						<descriptor>src/main/assembly/assemble_distribution_brz.xml</descriptor>
+						<descriptor>src/main/assembly/assemble_distribution_cl.xml</descriptor>
 					</descriptors>
 				</configuration>
 			</plugin>
diff --git a/src/main/assembly/assemble_distribution_brz.xml b/src/main/assembly/assemble_distribution_brz.xml
index ca31425..76ae2b5 100644
--- a/src/main/assembly/assemble_distribution_brz.xml
+++ b/src/main/assembly/assemble_distribution_brz.xml
@@ -20,7 +20,7 @@
 
 	<files>
 		<file>
-			<source>src/main/distribution/pdf-as.bat</source>
+			<source>src/main/distribution/brz/pdf-as.bat</source>
 			<outputDirectory />
 			<filtered>true</filtered>
 		</file>
diff --git a/src/main/assembly/assemble_distribution_cl.xml b/src/main/assembly/assemble_distribution_cl.xml
index 1cc3062..22684d9 100644
--- a/src/main/assembly/assemble_distribution_cl.xml
+++ b/src/main/assembly/assemble_distribution_cl.xml
@@ -1,105 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html -->
-<assembly>
-	<id>distribution-cl</id>
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+	<id>distribution_cl</id>
 	<formats>
 		<format>zip</format>
 	</formats>
-	<includeBaseDirectory>false</includeBaseDirectory>
+	<baseDirectory>pdf-as</baseDirectory>
+	<includeBaseDirectory>true</includeBaseDirectory>
+	<dependencySets>
+		<dependencySet>
+			<unpack>false</unpack>
+			<scope>runtime</scope>
+			<outputDirectory>lib</outputDirectory>
+			<excludes>
+				<exclude>*:${project.artifactId}:jar</exclude>
+			</excludes>
+		</dependencySet>
+	</dependencySets>
 	<fileSets>
 		<fileSet>
-			<directory>distribution/jdk/1.5.0_06/jre</directory>
-			<outputDirectory>/pdf-as-cl/jre</outputDirectory>
+			<directory>src/main/distribution/cl</directory>
+			<filtered>true</filtered>
+			<outputDirectory/>
 			<includes>
-				<include>**/*</include>
+				<include>pdf-as.*</include>
 			</includes>
 		</fileSet>
 		<fileSet>
 			<directory>target</directory>
-			<outputDirectory>/pdf-as-cl</outputDirectory>
-			<includes>
-				<include>pdf-as*.jar</include>
-			</includes>
-		</fileSet>
-		<fileSet>
-			<directory>distribution/cfg</directory>
-			<outputDirectory>/pdf-as-cl/cfg</outputDirectory>
-			<includes>
-				<include>*.properties</include>
-			</includes>
-		</fileSet>
-		<fileSet>
-			<directory>distribution/certificates</directory>
-			<outputDirectory>/pdf-as-cl/certificates</outputDirectory>
-			<includes>
-				<include>**/*</include>
-			</includes>
-		</fileSet>
-		<fileSet>
-			<directory>distribution/pdfastmp</directory>
-			<outputDirectory>/pdf-as-cl/pdfastmp</outputDirectory>
-			<includes>
-				<include>**/*</include>
-			</includes>
-		</fileSet>
-		<fileSet>
-			<directory>distribution/images</directory>
-			<outputDirectory>/pdf-as-cl/images</outputDirectory>
-			<includes>
-				<include>**/*</include>
-			</includes>
-		</fileSet>
-		<fileSet>
-			<directory>work/templates</directory>
-			<outputDirectory>/pdf-as-cl/templates</outputDirectory>
+			<outputDirectory/>
 			<includes>
-				<include>**/*</include>
+				<include>${project.build.finalName}.jar</include>
 			</includes>
-			<excludes>
-				<exclude>.svn</exclude>
-			</excludes>
 		</fileSet>
 		<fileSet>
-			<directory>work/licenses</directory>
-			<outputDirectory>/pdf-as-cl/licenses</outputDirectory>
+			<directory>dok</directory>
+			<outputDirectory>doc</outputDirectory>
 			<includes>
-				<include>**/*</include>
-			</includes>
-			<excludes>
-				<exclude>.svn</exclude>
-			</excludes>
-		</fileSet>
-		<fileSet>
-			<directory>distribution/scripts</directory>
-			<outputDirectory>/pdf-as-cl</outputDirectory>
-			<includes>
-				<!--include>pdf-as.bat</include-->
-				<include>SIGN_BIN_BKU.bat</include>
-				<include>SIGN_TEXT_BKU.bat</include>
-				<include>VERIFY_ALL_BKU.bat</include>
-			</includes>
-		</fileSet>
-				<fileSet>
-			<directory>distribution/doc</directory>
-			<outputDirectory>/pdf-as-cl</outputDirectory>
-			<includes>				
-				<include>Demotext.pdf</include>
+				<include>*.pdf</include>
 			</includes>
 		</fileSet>
 	</fileSets>
-	<files>
-		<file>
-			<source>distribution/scripts/pdf-as.bat</source>
-			<outputDirectory>/pdf-as-cl</outputDirectory>
-			<filtered>true</filtered>
-		</file>
-	</files>
-	<dependencySets>
-		<dependencySet>
-			<unpack>false</unpack>
-			<scope>runtime</scope>
-			<outputDirectory>/pdf-as-cl/lib</outputDirectory>
-
-		</dependencySet>
-	</dependencySets>
 </assembly>
diff --git a/src/main/distribution/brz/pdf-as.bat b/src/main/distribution/brz/pdf-as.bat
new file mode 100644
index 0000000..88eb615
--- /dev/null
+++ b/src/main/distribution/brz/pdf-as.bat
@@ -0,0 +1,8 @@
+@echo off
+
+rem Deploy embedded default configuration to current folder
+rem Note: Configuration is not deployed if it already exists.
+rem java -Dpdf-as.work-dir=. -jar ${project.build.finalName}.jar -ddc
+
+rem Start commandline
+java -Dpdf-as.work-dir=. -jar ${project.build.finalName}.jar %*
diff --git a/src/main/distribution/cl/pdf-as.bat b/src/main/distribution/cl/pdf-as.bat
new file mode 100644
index 0000000..c4753c5
--- /dev/null
+++ b/src/main/distribution/cl/pdf-as.bat
@@ -0,0 +1,8 @@
+@echo off
+
+rem Deploys embedded default configuration to USER_HOME/PDF-AS.
+rem Note: Configuration is not deployed if it already exists.
+java -jar ${project.build.finalName}.jar -ddc
+
+rem Start commandline
+java -jar ${project.build.finalName}.jar %*
diff --git a/src/main/distribution/cl/pdf-as.sh b/src/main/distribution/cl/pdf-as.sh
new file mode 100644
index 0000000..254b86a
--- /dev/null
+++ b/src/main/distribution/cl/pdf-as.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+# Deploys embedded default configuration to USER_HOME/PDF-AS.
+# Note: Configuration is not deployed if it already exists.
+java -jar ${project.build.finalName}.jar -ddc
+
+# Start commandline
+java -jar ${project.build.finalName}.jar $@
diff --git a/src/main/distribution/pdf-as.bat b/src/main/distribution/pdf-as.bat
deleted file mode 100644
index 88eb615..0000000
--- a/src/main/distribution/pdf-as.bat
+++ /dev/null
@@ -1,8 +0,0 @@
-@echo off
-
-rem Deploy embedded default configuration to current folder
-rem Note: Configuration is not deployed if it already exists.
-rem java -Dpdf-as.work-dir=. -jar ${project.build.finalName}.jar -ddc
-
-rem Start commandline
-java -Dpdf-as.work-dir=. -jar ${project.build.finalName}.jar %*
diff --git a/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResult.java b/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResult.java
index fa0e683..3886569 100644
--- a/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResult.java
+++ b/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResult.java
@@ -96,11 +96,11 @@ public interface VerifyResult extends SignatureInformation
   public Date getVerificationTime();
 
   /**
-   * Returns the hash input data as returned by MOA.
+   * Returns the hash input data as returned by MOA as Base64-encoded String.
    * 
    * <p>
    * This will only return a value other than null if the corresponding
-   * VerifyParameter was set to true.
+   * {@link VerifyParameters} has been set to true.
    * </p>
    * <p>
    * Note that the HashInputData does not necessarily have to be exactly the
@@ -108,7 +108,7 @@ public interface VerifyResult extends SignatureInformation
    * {@link SignatureInformation#getSignedData()} method.
    * </p>
    * 
-   * @return Returns the hash input data as returned by MOA.
+   * @return Returns the base64 encoded hash input data as returned by MOA.
    * 
    * @see SignatureInformation#getSignedData()
    */
diff --git a/src/main/java/at/gv/egiz/pdfas/impl/api/CheckHelper.java b/src/main/java/at/gv/egiz/pdfas/impl/api/CheckHelper.java
index 4466d8b..0c2d7ca 100644
--- a/src/main/java/at/gv/egiz/pdfas/impl/api/CheckHelper.java
+++ b/src/main/java/at/gv/egiz/pdfas/impl/api/CheckHelper.java
@@ -159,7 +159,7 @@ public final class CheckHelper
     {
       if (!SignatureTypes.getInstance().getSignatureTypes().contains(profileId))
       {
-        throw new IllegalArgumentException("The profileId must be defined in the configuration file. " + profileId);
+        throw new IllegalArgumentException("The profileId \"" + profileId + "\" must be defined in the configuration file.");
       }
     }
     catch (SignatureTypesException e)
diff --git a/src/main/java/at/gv/egiz/pdfas/web/helper/SignServletHelper.java b/src/main/java/at/gv/egiz/pdfas/web/helper/SignServletHelper.java
index 113169c..1e1864b 100644
--- a/src/main/java/at/gv/egiz/pdfas/web/helper/SignServletHelper.java
+++ b/src/main/java/at/gv/egiz/pdfas/web/helper/SignServletHelper.java
@@ -219,6 +219,7 @@ public class SignServletHelper
         ByteArrayDataSink bads = (ByteArrayDataSink)si.output;
         signed_pdf = bads.getByteArray();
       }
+      HttpSession session = request.getSession();
       
       PDFContainer entry = new PDFContainer(signed_pdf, si.exappinf.pdf_id);
       ProvidePDFServlet.signedDocuments.add(entry);
@@ -244,23 +245,28 @@ public class SignServletHelper
       	
       String query = invoke_url.substring(0, ind) + ";jsessionid=" + session_id + invoke_url.substring(ind)
       	+ sep + FormFields.FIELD_PDF_URL + "=" + providePDFServlet + "&" + FormFields.FIELD_PDF_ID
-         + "=" + pdf_id + "&" + FormFields.FIELD_FILE_LENGTH + "=" + signed_pdf.length;
+         + "=" + pdf_id + "&" + FormFields.FIELD_FILE_LENGTH + "=" + signed_pdf.length
+         + "&" + FormFields.FIELD_PDFAS_SESSION_ID + "=" + session.getId();
 
       /*
        *  Using the external web-interface of pdf-as (as described above) pdf-as should be run within
        *  an iframe. In case of a signature performed with a local citizen card software or with the
-       *  server bku the result has to be provided outside an iframe. To break out of the iframe a
+       *  server bku the result has to be provided outside the iframe. To break out of the iframe a
        *  helper jsp (redirect_to_parent) has to be used that redirects the user to the parent
        *  window.
        */
+      disableBrowserCacheForResponse(response);
       if (Constants.SIGNATURE_DEVICE_BKU.equals(si.connector) || Constants.SIGNATURE_DEVICE_MOC.equals(si.connector)) {
-         HttpSession session = request.getSession();
-         log.debug("Local bku was used therefore pdf-as is supposed to run within an iframe.");
+         log.debug("Pdf-as is supposed to run within an iframe.");
          log.debug("Putting external application notify url (\"" + query + "\") in session (" + session.getId() + ") for later use.");
-         request.getSession().setAttribute(SessionAttributes.PARENT_WEBAPP_REDIRECT_URL, query);
+         session.setAttribute(SessionAttributes.PARENT_WEBAPP_REDIRECT_URL, query);
          String redirectHelper = response.encodeRedirectURL(request.getContextPath() + "/jsp/redirect_to_parent.jsp");
+         
          log.debug("Redirecting to " + redirectHelper);
+         log.debug("The browser will finally be redirected outside the iframe to " + query + " in order to notify the external application.");
+         
          response.sendRedirect(redirectHelper);
+         
       } else {
          log.debug("Notifying external application by redirecting to \"" + query + "\".");
          response.sendRedirect(query);
@@ -270,6 +276,13 @@ public class SignServletHelper
 
   }
   
+  public static void disableBrowserCacheForResponse(HttpServletResponse response) {
+     log.debug("Disabling browser cache for HttpServletResponse.");
+     response.setHeader("Cache-Control", "no-cache");
+     response.setHeader("Pragma","no-cache");
+     response.setDateHeader("Expires", -1);
+  }
+  
   /**
    * Formats the file name according to the SignResult.
    * 
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java b/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java
index 5164ae4..c56a03e 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java
@@ -96,7 +96,7 @@ public abstract class PdfAS
    * The current version of the pdf-as library. This version string is logged on every invocation
    * of the api or the web application.
    */
-  public static final String PDFAS_VERSION = "3.0.9-20090206";
+  public static final String PDFAS_VERSION = "3.0.9-20090319";
   
   /**
    * The key of the strict mode setting.
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java b/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java
index bca5b17..5fd67d2 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java
@@ -394,7 +394,7 @@ public class SettingsReader implements Serializable
        logger_.info(" configuration path = \"" + CONFIG_PATH + "\"");
        logger_.info(" certstore path     = \"" + CERT_PATH + "\"");
        logger_.info(" temporary path     = \"" + TMP_PATH + "\"");
-       logger_.info(" file.encoding      = \"" + System.getProperty("file.encoding") + "\"");
+       logger_.debug(" file.encoding      = \"" + System.getProperty("file.encoding") + "\"");
        logger_.info(StringUtils.repeat("*", length + 25));
        
        IAIK.addAsProvider();
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFSignatureObjectIText.java b/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFSignatureObjectIText.java
index 78aafbf..dc85a4f 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFSignatureObjectIText.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFSignatureObjectIText.java
@@ -323,7 +323,7 @@ public class PDFSignatureObjectIText implements PDFSignatureObject
 		String pdfa = SettingsReader.getInstance().getSetting("sig_obj." +profileid+".key."+SIG_PDFA1_B_VALID, "default."+SIG_PDFA1_B_VALID, "false");
         pdfaValid= "true".equalsIgnoreCase(pdfa);
 		SubsetLocal.set(!pdfaValid);
-        logger_.debug("Sign PDF/A complient:"+pdfa);
+        logger_.trace("Sign PDF/A complient:"+pdfa);
 	  } catch (SettingsException e1) 
 	  {
 		  logger_.error(e1);
@@ -346,7 +346,7 @@ public class PDFSignatureObjectIText implements PDFSignatureObject
         font_string = cell_style.getValueFont();
       }
       
-  	  logger_.debug("using cell font: "+font_string);
+  	  logger_.trace("using cell font: "+font_string);
 
       Font cell_font;
       if(font_string.startsWith("TTF:"))
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java
index d10afc6..5164771 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java
@@ -130,6 +130,12 @@ public class DetachedBKUConnector implements Connector, LocalConnector
 
     BKUHelper.checkResponseForError(response_string);
 
+    // TODO[tknall] Parse server type and version in order to prevent unsupported cces from signing pdfs
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.dataurl
+    log.debug("BKU response header \"user-agent\" header:  " + bkuUserAgentHeader);
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.browser
+    log.debug("BKU response header \"server\"     header:  " + bkuServerHeader);
+    
     SignSignatureObject so;
     if (MOCCAHelper.isMOCCACCEId(bkuServerHeader == null ? bkuUserAgentHeader : bkuServerHeader)) {
        log.debug("Evaluating response as MOCCA response.");
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/EnvelopedBase64BKUConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/EnvelopedBase64BKUConnector.java
index 40a7732..f30b4b7 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/EnvelopedBase64BKUConnector.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/EnvelopedBase64BKUConnector.java
@@ -360,6 +360,14 @@ public class EnvelopedBase64BKUConnector implements Connector, LocalConnector
 
     BKUHelper.checkResponseForError(response_string);
 
+    // TODO[tknall] Parse server type and version in order to prevent unsupported cces from signing pdfs
+    String bkuServerHeader = response_properties.getProperty(BKUPostConnection.BKU_SERVER_HEADER_KEY);
+    String bkuUserAgentHeader = response_properties.getProperty(BKUPostConnection.BKU_USER_AGENT_HEADER_KEY);
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.dataurl
+    log.debug("BKU response header \"user-agent\" header:  " + bkuUserAgentHeader);
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.browser
+    log.debug("BKU response header \"server\"     header:  " + bkuServerHeader);
+    
     SignSignatureObject so = BKUHelper.parseCreateXMLResponse(response_string, new HotfixIdFormatter());
 
     log.debug("analyzeSignResponse finished."); //$NON-NLS-1$
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java
index b31d1ec..6ad5b94 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java
@@ -107,6 +107,14 @@ public class DetachedLocRefMOAConnector implements Connector
 
     BKUHelper.checkResponseForError(response_string);
 
+    // TODO[tknall] Parse server type and version in order to prevent unsupported cces from signing pdfs
+    String bkuServerHeader = response_properties.getProperty(BKUPostConnection.BKU_SERVER_HEADER_KEY);
+    String bkuUserAgentHeader = response_properties.getProperty(BKUPostConnection.BKU_USER_AGENT_HEADER_KEY);
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.dataurl
+    log.debug("BKU response header \"user-agent\" header:  " + bkuUserAgentHeader);
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.browser
+    log.debug("BKU response header \"server\"     header:  " + bkuServerHeader);
+    
     SignSignatureObject so = MOAHelper.parseCreateXMLResponse(response_string, new DetachedLocRefMOAIdFormatter());
 
     log.debug("analyzeSignResponse finished."); //$NON-NLS-1$
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java
index a6db63c..b309432 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java
@@ -218,6 +218,14 @@ public class EnvelopingBase64MOAConnector implements Connector
 
     BKUHelper.checkResponseForError(response_string);
 
+    // TODO[tknall] Parse server type and version in order to prevent unsupported cces from signing pdfs
+    String bkuServerHeader = response_properties.getProperty(BKUPostConnection.BKU_SERVER_HEADER_KEY);
+    String bkuUserAgentHeader = response_properties.getProperty(BKUPostConnection.BKU_USER_AGENT_HEADER_KEY);
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.dataurl
+    log.debug("BKU response header \"user-agent\" header:  " + bkuUserAgentHeader);
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.browser
+    log.debug("BKU response header \"server\"     header:  " + bkuServerHeader);
+
     SignSignatureObject so = MOAHelper.parseCreateXMLResponse(response_string, new OldMOAIdFormatter());
 
     log.debug("analyzeSignResponse finished."); //$NON-NLS-1$
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java
index 7776698..abd2b09 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java
@@ -115,6 +115,14 @@ public class MOASoapWithAttachmentConnector implements Connector
 
     BKUHelper.checkResponseForError(response_string);
 
+    // TODO[tknall] Parse server type and version in order to prevent unsupported cces from signing pdfs
+    String bkuServerHeader = response_properties.getProperty(BKUPostConnection.BKU_SERVER_HEADER_KEY);
+    String bkuUserAgentHeader = response_properties.getProperty(BKUPostConnection.BKU_USER_AGENT_HEADER_KEY);
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.dataurl
+    log.debug("BKU response header \"user-agent\" header:  " + bkuUserAgentHeader);
+    // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.browser
+    log.debug("BKU response header \"server\"     header:  " + bkuServerHeader);
+    
     SignSignatureObject so = MOAHelper.parseCreateXMLResponse(response_string, new DetachedLocRefMOAIdFormatter());
 
     log.debug("analyzeSignResponse finished."); //$NON-NLS-1$
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java
index 30212eb..c44f34b 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java
@@ -115,6 +115,15 @@ public class LocRefDetachedMOCCAConnector implements Connector, LocalConnector {
       log.debug("analyzeSignResponse:"); 
       String response_string = response_properties.getProperty(BKUPostConnection.RESPONSE_STRING_KEY);
       BKUHelper.checkResponseForError(response_string);
+      
+      // TODO[tknall] Parse server type and version in order to prevent unsupported cces from signing pdfs
+      String bkuServerHeader = response_properties.getProperty(BKUPostConnection.BKU_SERVER_HEADER_KEY);
+      String bkuUserAgentHeader = response_properties.getProperty(BKUPostConnection.BKU_USER_AGENT_HEADER_KEY);
+      // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.dataurl
+      log.debug("BKU response header \"user-agent\" header:  " + bkuUserAgentHeader);
+      // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.browser
+      log.debug("BKU response header \"server\"     header:  " + bkuServerHeader);
+
       SignSignatureObject so = MOCCAHelper.parseCreateXMLResponse(response_string, new DetachedMOCIdFormatter());
       so.response_properties = response_properties;
       log.debug("analyzeSignResponse finished."); 
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/MOCCAHelper.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/MOCCAHelper.java
index 1bb89be..fe23584 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/MOCCAHelper.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/MOCCAHelper.java
@@ -73,11 +73,11 @@ public final class MOCCAHelper {
          log.debug("xmlResponse = " + xmlResponse);
       }
 
-      Pattern iss_nam_p_s = Pattern.compile("<[\\w]*:?X509IssuerName>");
+      Pattern iss_nam_p_s = Pattern.compile("<[\\w]*:?X509IssuerName[^>]*>");
       Pattern iss_nam_p_e = Pattern.compile("</[\\w]*:?X509IssuerName>");
       Pattern sig_tim_p_s = Pattern.compile("<[\\w]*:?SigningTime>");
       Pattern sig_tim_p_e = Pattern.compile("</[\\w]*:?SigningTime>");
-      Pattern ser_num_p_s = Pattern.compile("<[\\w]*:?X509SerialNumber>");
+      Pattern ser_num_p_s = Pattern.compile("<[\\w]*:?X509SerialNumber[^>]*>");
       Pattern ser_num_p_e = Pattern.compile("</[\\w]*:?X509SerialNumber>");
       Pattern sig_cer_p_s = Pattern.compile("<[\\w]*:?X509Certificate>");
       Pattern sig_cer_p_e = Pattern.compile("</[\\w]*:?X509Certificate>");
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/FormFields.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/FormFields.java
index 7b8164a..7137741 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/web/FormFields.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/FormFields.java
@@ -85,6 +85,8 @@ public abstract class FormFields
   
   public static final String FIELD_PDF_ID = "pdf-id";
   
+  public static final String FIELD_PDFAS_SESSION_ID = "pdfas-session-id";
+  
   public static final String FIELD_FILE_LENGTH = "num-bytes";
   
   public static final String FIELD_INVOKE_APP_URL = "invoke-app-url";
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java
index f74bd1c..7947d90 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/DataURLServlet.java
@@ -210,6 +210,12 @@ public class DataURLServlet extends HttpServlet
       
       log.debug("There are still requests to be performed -> answering with request."); //$NON-NLS-1$
 
+      // TODO[tknall] Parse user agent's cce type and version in order to prevent unsupported cces from signing pdfs
+      // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.dataurl
+      log.debug("BKU response header \"user-agent\" header:  " + request.getHeader("User-Agent"));
+      // http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response.browser
+      log.debug("BKU response header \"server\"     header:  " + request.getHeader("Server"));
+      
       LocalRequest local_request = si.localRequest;
 
       String request_string = local_request.getRequestString();
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java
index c40f3c6..803dc59 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/ProvidePDFServlet.java
@@ -42,9 +42,9 @@ public class ProvidePDFServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       
       String pdfIdString = request.getParameter(FormFields.FIELD_PDF_ID);
+      HttpSession session = request.getSession();
       
       if (pdfIdString == null) {
-         HttpSession session = request.getSession(true);
          log.debug("No " + FormFields.FIELD_PDF_ID + " provided. Trying to retrieve PDF from session (" + session.getId() + ").");
          SignSessionInformation si = (SignSessionInformation) session.getAttribute(SessionAttributes.SIGNED_PDF_DOCUMENT);
          if (si == null) {
@@ -59,39 +59,51 @@ public class ProvidePDFServlet extends HttpServlet {
             log.debug("Signed pdf found.");
             session.removeAttribute(SessionAttributes.SIGNED_PDF_DOCUMENT);
             log.debug("Returning signed pdf to browser.");
-//            log.debug("Invalidating session.");
-//            session.invalidate();
             SignServletHelper.returnSignResponse(si, request, response);
             return;
          }
       } else {
          long pdfId = Long.parseLong(pdfIdString);
 
-         Iterator it = signedDocuments.iterator();
+         byte[] pdf = null;
+         
+         synchronized (signedDocuments) {
+            Iterator it = signedDocuments.iterator();
 
-         while (it.hasNext()) {
-            PDFContainer current = (PDFContainer) it.next();
-            if (current.id == pdfId) {
-               try {
-                  byte[] pdf = current.pdf;
-
-                  response.setContentType("application/pdf");
-                  response.setContentLength(pdf.length);
-
-                  InputStream is = new ByteArrayInputStream(pdf);
-                  final int bufferSize = 1024;
-                  byte[] buffer = new byte[bufferSize];
-                  int len = -1;
-                  while ((len = is.read(buffer)) != -1) {
-                     response.getOutputStream().write(buffer, 0, len);
-                  }
-                  response.getOutputStream().flush();
+            while (it.hasNext() && pdf == null) {
+               PDFContainer current = (PDFContainer) it.next();
+               if (current.id == pdfId) {
+                  pdf = current.pdf;
                   signedDocuments.remove(current);
-               } catch (IOException e) {
-                  log.error("IO excepton while providing pdf document: " + e.getMessage(), e);
                }
             }
          }
+         
+         if (pdf != null) {
+            try {
+
+               SignServletHelper.disableBrowserCacheForResponse(response);
+               response.setContentType("application/pdf");
+               response.setContentLength(pdf.length);
+               
+               InputStream is = new ByteArrayInputStream(pdf);
+               final int bufferSize = 1024;
+               byte[] buffer = new byte[bufferSize];
+               int len = -1;
+               while ((len = is.read(buffer)) != -1) {
+                  response.getOutputStream().write(buffer, 0, len);
+               }
+               response.getOutputStream().flush();
+               log.debug("File sent. Invalidating session.");
+               session.invalidate();
+            } catch (IOException e) {
+               log.error("IO excepton while providing pdf document: " + e.getMessage(), e);
+            }
+         } else {
+            log.error("Unable to find signed pdf (id=" + pdfId + ") in session (" + session.getId() + ").");
+            return;
+         }
+         
       }
 
    }
diff --git a/src/main/resources/DefaultConfiguration.zip b/src/main/resources/DefaultConfiguration.zip
index a7f41b5..04574f0 100644
Binary files a/src/main/resources/DefaultConfiguration.zip and b/src/main/resources/DefaultConfiguration.zip differ
diff --git a/src/main/webapp/jsp/error.jsp b/src/main/webapp/jsp/error.jsp
index 4bd49a4..bcac0dc 100644
--- a/src/main/webapp/jsp/error.jsp
+++ b/src/main/webapp/jsp/error.jsp
@@ -6,6 +6,7 @@
 <%@ page import="at.knowcenter.wag.egov.egiz.web.SessionAttributes" %>
 <%@ page import="org.apache.commons.httpclient.util.EncodingUtil" %>
 <%@ page import="org.apache.commons.httpclient.NameValuePair" %>
+<%@ page import="at.gv.egiz.pdfas.web.helper.SignServletHelper" %>
 <%@ page import="java.io.*" %>
 
 <%@ include file="language.jsp" %>
@@ -16,14 +17,19 @@
 	<head>
 		<title><fmt:message key="error.title"/></title>
 		<base href="<%=LocalRequestHelper.getLocalContextAddress(request,response)%>/"/>
+		<meta http-equiv="Cache-Control" content="no-cache"/>
+		<meta http-equiv="Pragma"        content="no-cache"/>
+		<meta http-equiv="Expires"       content="-1"/>
 	</head>
 
 <%
-  PresentableException pe = (PresentableException)request.getAttribute("PresentableException");
+  PresentableException pe;
   if (exception != null && exception instanceof PresentableException)
   {
     pe = (PresentableException)exception;
     SignServlet.prepareDispatchToErrorPage(pe, request);
+  } else {
+    pe = (PresentableException)request.getAttribute("PresentableException");
   }
 
   String error = request.getParameter("error");
@@ -56,6 +62,7 @@
 	   session.setAttribute(SessionAttributes.PARENT_WEBAPP_REDIRECT_URL, errorUrl);
      }
    String redirectHelper = response.encodeRedirectURL(request.getContextPath() + "/jsp/redirect_to_parent.jsp");
+   SignServletHelper.disableBrowserCacheForResponse(response);
    response.sendRedirect(redirectHelper);
   }
 	
diff --git a/src/main/webapp/jsp/redirect_to_parent.jsp b/src/main/webapp/jsp/redirect_to_parent.jsp
index 7791109..6bce9f6 100644
--- a/src/main/webapp/jsp/redirect_to_parent.jsp
+++ b/src/main/webapp/jsp/redirect_to_parent.jsp
@@ -5,7 +5,10 @@
 <%@ include file="language.jsp" %>
 
 <head>
-	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+	<meta http-equiv="content-type"  content="text/html; charset=UTF-8" />
+	<meta http-equiv="Cache-Control" content="no-cache"/>
+	<meta http-equiv="Pragma"        content="no-cache"/>
+	<meta http-equiv="Expires"       content="-1"/>
 	<title><fmt:message key="pleasewait.title"/></title>
 	<%
 		String query = (String) session.getAttribute(SessionAttributes.PARENT_WEBAPP_REDIRECT_URL);
@@ -14,7 +17,13 @@
 </head>
 
 <body>
-	<form action="<%= query %>" method="post" name="redirectform" id="redirectform" target="_parent">
+	<form action="<%= query %>" method="post" name="redirectform" id="redirectform" target="_top">
+		<!--
+		<p>Redirecting the browser to</p>
+		<p><code><%= query %></code></p>
+		<p>Session-ID: <code><%= session.getId() %></code></p>
+		<input type="submit" value="submit"/>
+		-->
 	</form>
 	<script language="javascript" type="text/javascript">
 		<!--
diff --git a/src/main/webapp/sitemesh/buergerkarte/pdf-as-template-de.jsp b/src/main/webapp/sitemesh/buergerkarte/pdf-as-template-de.jsp
deleted file mode 100644
index c3838f5..0000000
--- a/src/main/webapp/sitemesh/buergerkarte/pdf-as-template-de.jsp
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-<%@taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>
-<%@taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page" %>
-
-<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
-<%@ page import="at.knowcenter.wag.egov.egiz.web.LocalRequestHelper" %>
-
-<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de"><!-- InstanceBegin template="/Templates/pdf.dwt" codeOutsideHTMLIsLocked="false" -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="description" content="B&uuml;rgerkarte" />
-<meta name="keywords" content="b&uuml;rgerkarte,e-card,pdf signatur" />
-<meta name="robots" content="index,follow" />
-<meta name="language" content="de-at" />
-<meta name="author" content="Tina Fleck" />
-<meta name="geo.region" content="AT-6" />
-<!-- InstanceBeginEditable name="doctitle" -->
-<title>PDF-Signaturen</title>
-<decorator:head/>
-<link rel="stylesheet" type="text/css" href="<%=LocalRequestHelper.getLocalContextAddress(request,response)%>/css/pdfas-styles.css" />
-<!-- InstanceEndEditable -->
-<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-<link rel="icon" href="/favicon.ico" type="image/x-icon" />
-<link rel="stylesheet" type="text/css" href="https://www.buergerkarte.at/css/styles.css" />
-<!-- Template Parameters -->
-
-
-
-
-
-
-
-
-
-
-<!-- InstanceParam name="zusatzspalte" type="boolean" value="true" -->
-<!-- InstanceParam name="contentwidth" type="number" value="700" -->
-
-<!-- InstanceParam name="submenu_1" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_2" type="text" value="entry-active" -->
-<!-- InstanceParam name="submenu_3" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_4" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_5" type="text" value="entry" -->
-
-
-
-
-</head>
-
-<body>
-    <div id="container">
-      <div id="header">
-      	<div id="sitename">B&uuml;rgerkarte</div>
-         <div id="metamenu"><a href="/de/index.html">Home</a> | <a href="/de/sitemap/index.html">Sitemap</a> | <a href="<%=LocalRequestHelper.getLocalContextAddress(request,response)%>/?locale=en">English</a> |<!-- <a href="/switch.php">English</a> | --> <a href="/de/impressum/">Impressum</a></div>
-       	<div class="clearfloat"></div>
-      </div>
-      
-      <div id="menubar">
-      	<div id="menu-top"></div>
-         <div id="menu-middle">
-         	<h4>Ich will eine...</h4>  
-			<!-- menu_inactive -->       	
-            <div><a id="menu_11" class="menu_inactive" href="/de/voraussetzungen/index.html">Ich ben&ouml;tige dazu ...</a></div>
-            <div><a id="menu_12" class="menu_inactive" href="/de/aktivieren/online.html">Jetzt aktivieren ...</a></div>
-            <h4>Ich habe eine...</h4>         	
-            <div><a id="menu_21" class="menu_inactive" href="/de/verwaltung/index.html">&Ouml;ffentliche Verwaltung</a></div>
-            <div><a id="menu_22" class="menu_inactive" href="/de/privatwirtschaft/index.html">Privatwirtschaft</a></div>
-            <div><a id="menu_23" class="menu_inactive" href="/de/zuhause/index.html">Zu Hause</a></div>
-            <div><a id="menu_25" class="menu_active" href="/de/pdf-signieren/index.html"><acronym title="Portable Document Format" lang="en">PDF</acronym> Signaturen</a></div>
-            <div><a id="menu_24" class="menu_inactive" href="/de/hilfe/wer-hilft-mir.html">Hilfe bei Problemen</a></div>
-            <h4>Was ist sie...</h4>         	
-            <div><a id="menu_31" class="menu_inactive" href="/de/ueberblick/index.html">&Uuml;berblick B&uuml;rgerkarte</a></div>
-            <div><a id="menu_32" class="menu_inactive" href="/de/datenschutz-sicherheit/index.html">Datenschutz &amp; Sicherheit</a></div>
-            <div><a id="menu_33" class="menu_inactive" href="/de/spezifikation/index.html">Spezifikation</a></div>
-			<!--
-            <div><a id="menu_11" class="menu_inactive" href="/de/begriffslexikon/index.html">Begriffslexikon</a></div>
-			 -->
-            <div><img src="images/menu-divider.jpg" alt="" width="210" height="2" /></div>
-              
-          
-            <div class="search">            
-            	<form accept-charset="utf-8" action="/regain/search.jsp" method="get" name="search">               
-               <table cellpadding="0" cellspacing="0" border="0"><tr><td><label for="suchtext">Suche: <input name="query" type="text" size="20" maxlength="20"  alt="search" class="inputfield" /></label></td>
-               <td><input type="image" name="enterdata" src="images/button-search.jpg" alt="Suche starten" title="Suche starten" /></td>
-               </tr></table>
-               </form>
-            </div>
-      </div>
-         <div id="menu-bottom"></div>
-	  </div>
-      
-	  
-     
-      
-      
-    
-	
-	
-
-	
-      <div id="mainContent-700">
-	  	
-        <div class="submenu" id="_700">
-		  
-		  <!-- InstanceBeginEditable name="optional-entries-700" -->
-		  <!-- InstanceEndEditable -->		
-          <div class="start"></div>
-          <div class="entry">
-          	<a href="/de/pdf-signieren/index.html">Allgemein</a></div>
-          <div class="entry">
-          	<a href="/de/pdf-signieren/info.html">Weitere Info</a></div>
-           <div class="entry-active">
-          	<a href="<%= request.getContextPath() %>/?locale=de"><acronym title="Portable Document Format" lang="en">PDF</acronym> Signieren</a></div>
-           <div class="entry">
-          	<a href="/signature-verification/?locale=de">Signatur &uuml;berpr&uuml;fen</a></div>
-           <div class="entry">
-          	<a href="/download/pdftools/index.html">Download</a></div>
-           <div class="clear"></div>
-		  
-        </div>
-	   
-	   
-		<!-- Start Content -->
-        <!-- InstanceBeginEditable name="Content-700" -->
-        <div id="content-middle-700">
-          <decorator:body/>
-        </div>
-         <!-- InstanceEndEditable -->
-        <div id="content-bottom-700"></div>
-   	</div>
-    </div>
-	
-
-	
-	
-   
-</body>
-<!-- InstanceEnd --></html>
diff --git a/src/main/webapp/sitemesh/buergerkarte/pdf-as-template.jsp b/src/main/webapp/sitemesh/buergerkarte/pdf-as-template.jsp
deleted file mode 100644
index 02868f3..0000000
--- a/src/main/webapp/sitemesh/buergerkarte/pdf-as-template.jsp
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-<%@taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>
-<%@taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page" %>
-
-<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
-<%@ page import="at.knowcenter.wag.egov.egiz.web.LocalRequestHelper" %>
-
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><!-- InstanceBegin template="/Templates/en/pdf.dwt" codeOutsideHTMLIsLocked="false" -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="description" content="citizen card" />
-<meta name="keywords" content="citizen card,e-card,pdf signature" />
-<meta name="robots" content="index,follow" />
-<meta name="language" content="en-us" />
-<meta name="author" content="Tina Fleck" />
-<meta name="geo.region" content="AT-6" />
-<!-- InstanceBeginEditable name="doctitle" -->
-<title>PDF Signature</title>
-<decorator:head/>
-<link rel="stylesheet" type="text/css" href="<%=LocalRequestHelper.getLocalContextAddress(request,response)%>/css/pdfas-styles.css" />
-<!-- InstanceEndEditable -->
-<!-- InstanceBeginEditable name="templates" -->
-<!-- InstanceEndEditable -->
-<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-<link rel="icon" href="/favicon.ico" type="image/x-icon" />
-<link rel="stylesheet" type="text/css" href="https://www.buergerkarte.at/css/styles.css" />
-<!-- Template Parameters -->
-
-
-
-
-
-
-
-
-
-
-<!-- InstanceParam name="zusatzspalte" type="boolean" value="true" -->
-<!-- InstanceParam name="contentwidth" type="number" value="700" -->
-
-<!-- InstanceParam name="submenu_1" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_2" type="text" value="entry-active" -->
-<!-- InstanceParam name="submenu_3" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_4" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_5" type="text" value="entry" -->
-
-
-
-
-
-<!-- InstanceParam name="test_prefix" type="text" value="" -->
-<!-- InstanceParam name="test_postfix" type="text" value="" -->
-
-<!-- InstanceBeginEditable name="JavaScript" -->
-<!-- Java Script Area -->
-<%
- String localName = request.getLocalName(); 
- if (localName.equals("localhost") || localName.startsWith("brontes.")) {
-%>
- <link rel="stylesheet" type="text/css" href="http://www.buergerkarte.at/css/styles.css" />
-<%
- } // end if
-%>
-<!-- InstanceEndEditable -->
-
-</head>
-
-<body>
-    <div id="container">
-      <div id="header">
-      	<div id="sitename">Citizen Card</div>
-         <div id="metamenu"><a href="/en/index.html">Home</a> | <a href="/en/sitemap/index.html">Sitemap</a> | <a href="<%=LocalRequestHelper.getLocalContextAddress(request,response)%>/?locale=de">German</a> |<!-- <a href="../switch.php">English</a> | --> <a href="/en/impressum">Imprint</a></div>
-       	<div class="clearfloat"></div>
-      </div>
-      
-      <div id="menubar">
-      	<div id="menu-top"></div>
-         <div id="menu-middle">
-         	<h4>I want one...</h4>  
-			<!-- menu_inactive -->       	
-            <div><a id="menu_11" class="menu_inactive" href="/en/voraussetzungen/index.html">What you'll need ...</a></div>
-            <div><a id="menu_12" class="menu_inactive" href="/en/aktivieren/online.html">Activate your card ...</a></div>
-            <h4>I have one...</h4>         	
-            <div><a id="menu_21" class="menu_inactive" href="/en/verwaltung/index.html">Public Administration</a></div>
-            <div><a id="menu_22" class="menu_inactive" href="/en/privatwirtschaft/index.html">Private Sector</a></div>
-            <div><a id="menu_23" class="menu_inactive" href="/en/zuhause/index.html">At Home</a></div>
-            <div><a id="menu_25" class="menu_active" href="/en/pdf-signieren/index.html"><acronym title="Portable Document Format">PDF</acronym> Signatures</a></div>
-            <div><a id="menu_24" class="menu_inactive" href="/en/hilfe/wer-hilft-mir.html">Help</a></div>
-            <h4>What is it...</h4>         	
-            <div><a id="menu_31" class="menu_inactive" href="/en/ueberblick/index.html">Overview</a></div>
-            <div><a id="menu_32" class="menu_inactive" href="/en/datenschutz-sicherheit/index.html">Data Protection
-&amp; Security</a></div>
-            <div><a id="menu_33" class="menu_inactive" href="/en/spezifikation/index.html">Specifications</a></div>
-			<!--
-            <div><a id="menu_11" class="menu_inactive" href="../de/begriffslexikon/index.html">Begriffslexikon</a></div>
-			 -->
-            <div><img src="images/menu-divider.jpg" alt="" width="210" height="2" /></div>
-              
-          
-            <div class="search">            
-            	<form accept-charset="utf-8" action="/regain/search.jsp" method="get" name="search">               
-               <table cellpadding="0" cellspacing="0" border="0"><tr><td><label for="suchtext">Search: 
-                       <input name="query" type="text" size="20" maxlength="20"  alt="search" class="inputfield" /></label></td>
-               <td><input type="image" name="enterdata" src="images/button-search.jpg" alt="Suche starten" title="Suche starten" /></td>
-               </tr></table>
-               </form>
-            </div>
-      </div>
-      <div id="menu-bottom"></div>
-	  </div>
-      
-	  
-     
-      
-      
-    
-	
-	
-
-	
-      <div id="mainContent-700">
-	  	
-        <div class="submenu" id="_700">
-		  
-		  <!-- InstanceBeginEditable name="optional-entries-700" -->
-		  <!-- InstanceEndEditable -->		
-          <div class="start"></div>
-          <div class="entry">
-          	<a href="/en/pdf-signieren/index.html">General</a></div>
-          <div class="entry">
-          	<a href="/en/pdf-signieren/info.html">Additional Info</a></div>
-           <div class="entry-active">
-          	<a href="<%= request.getContextPath() %>/?locale=en"><acronym title="Portable Document Format" lang="en">PDF</acronym> Signatures</a></div>
-           <div class="entry">
-          	<a href="/signature-verification/?locale=en">Signature Verification</a></div>
-           <div class="entry">
-          	<a href="/en/pdf-signieren/downloads.html">Downloads</a></div>
-           <div class="clear"></div>
-		  
-        </div>
-	   
-	   
-		<!-- Start Content -->
-        <!-- InstanceBeginEditable name="Content-700" -->
-        <div id="content-middle-700">
-          <decorator:body/>
-        </div>
-         <!-- InstanceEndEditable -->
-        <div id="content-bottom-700"></div>
-   	</div>
-    </div>
-	
-
-	
-	
-   
-</body>
-<!-- InstanceEnd --></html>
diff --git a/src/main/webapp/sitemesh/buergerkarte/test-pdf-as-template-de.jsp b/src/main/webapp/sitemesh/buergerkarte/test-pdf-as-template-de.jsp
deleted file mode 100644
index bae6f6c..0000000
--- a/src/main/webapp/sitemesh/buergerkarte/test-pdf-as-template-de.jsp
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-<%@taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>
-<%@taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page" %>
-
-<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
-<%@ page import="at.knowcenter.wag.egov.egiz.web.LocalRequestHelper" %>
-
-<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de"><!-- InstanceBegin template="/Templates/pdf.dwt" codeOutsideHTMLIsLocked="false" -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="description" content="B&uuml;rgerkarte" />
-<meta name="keywords" content="b&uuml;rgerkarte,e-card,pdf signatur" />
-<meta name="robots" content="index,follow" />
-<meta name="language" content="de-at" />
-<meta name="author" content="Tina Fleck" />
-<meta name="geo.region" content="AT-6" />
-<!-- InstanceBeginEditable name="doctitle" -->
-<title>PDF-Signatur (Test)</title>
-<decorator:head/>
-<link rel="stylesheet" type="text/css" href="<%=LocalRequestHelper.getLocalContextAddress(request,response)%>/css/pdfas-styles.css" />
-<!-- InstanceEndEditable -->
-<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-<link rel="icon" href="/favicon.ico" type="image/x-icon" />
-<link rel="stylesheet" type="text/css" href="https://www.buergerkarte.at/css/styles.css" />
-<!-- Template Parameters -->
-
-
-
-
-
-
-
-
-
-
-<!-- InstanceParam name="zusatzspalte" type="boolean" value="true" -->
-<!-- InstanceParam name="contentwidth" type="number" value="700" -->
-
-<!-- InstanceParam name="submenu_1" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_2" type="text" value="entry-active" -->
-<!-- InstanceParam name="submenu_3" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_4" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_5" type="text" value="entry" -->
-
-
-
-
-</head>
-
-<body>
-    <div id="container">
-      <div id="header">
-      	<div id="sitename">B&uuml;rgerkarte</div>
-         <div id="metamenu"><a href="/de/index.html">Home</a> | <a href="/de/sitemap/index.html">Sitemap</a> | <a href="<%=LocalRequestHelper.getLocalContextAddress(request,response)%>/?locale=en">English</a> |<!-- <a href="/switch.php">English</a> | --> <a href="/de/impressum/">Impressum</a></div>
-       	<div class="clearfloat"></div>
-      </div>
-      
-      <div id="menubar">
-      	<div id="menu-top"></div>
-         <div id="menu-middle">
-         	<h4>Ich will eine...</h4>  
-			<!-- menu_inactive -->       	
-            <div><a id="menu_11" class="menu_inactive" href="/de/voraussetzungen/index.html">Ich ben&ouml;tige dazu ...</a></div>
-            <div><a id="menu_12" class="menu_inactive" href="/de/aktivieren/online.html">Jetzt aktivieren ...</a></div>
-            <h4>Ich habe eine...</h4>         	
-            <div><a id="menu_21" class="menu_inactive" href="/de/verwaltung/index.html">&Ouml;ffentliche Verwaltung</a></div>
-            <div><a id="menu_22" class="menu_inactive" href="/de/privatwirtschaft/index.html">Privatwirtschaft</a></div>
-            <div><a id="menu_23" class="menu_inactive" href="/de/zuhause/index.html">Zu Hause</a></div>
-            <div><a id="menu_25" class="menu_active" href="/de/pdf-signieren/index.html"><acronym title="Portable Document Format" lang="en">PDF</acronym> Signaturen</a></div>
-            <div><a id="menu_24" class="menu_inactive" href="/de/hilfe/wer-hilft-mir.html">Hilfe bei Problemen</a></div>
-            <h4>Was ist sie...</h4>         	
-            <div><a id="menu_31" class="menu_inactive" href="/de/ueberblick/index.html">&Uuml;berblick B&uuml;rgerkarte</a></div>
-            <div><a id="menu_32" class="menu_inactive" href="/de/datenschutz-sicherheit/index.html">Datenschutz &amp; Sicherheit</a></div>
-            <div><a id="menu_33" class="menu_inactive" href="/de/spezifikation/index.html">Spezifikation</a></div>
-			<!--
-            <div><a id="menu_11" class="menu_inactive" href="/de/begriffslexikon/index.html">Begriffslexikon</a></div>
-			 -->
-            <div><img src="images/menu-divider.jpg" alt="" width="210" height="2" /></div>
-              
-          
-            <div class="search">            
-            	<form accept-charset="utf-8" action="/regain/search.jsp" method="get" name="search">               
-               <table cellpadding="0" cellspacing="0" border="0"><tr><td><label for="suchtext">Suche: <input name="query" type="text" size="20" maxlength="20"  alt="search" class="inputfield" /></label></td>
-               <td><input type="image" name="enterdata" src="images/button-search.jpg" alt="Suche starten" title="Suche starten" /></td>
-               </tr></table>
-               </form>
-            </div>
-      </div>
-         <div id="menu-bottom"></div>
-	  </div>
-      
-	  
-     
-      
-      
-    
-	
-	
-
-	
-      <div id="mainContent-700">
-	  	
-        <div class="submenu" id="_700">
-		  
-		  <!-- InstanceBeginEditable name="optional-entries-700" -->
-		  <!-- InstanceEndEditable -->		
-          <div class="start"></div>
-          <div class="entry">
-          	<a href="/de/pdf-signieren/index.html">Allgemein</a></div>
-          <div class="entry">
-          	<a href="/de/pdf-signieren/info.html">Weitere Info</a></div>
-           <div class="entry-active">
-          	<a href="<%= request.getContextPath() %>/?locale=de"><acronym title="Portable Document Format" lang="en">PDF</acronym> Signieren (Test)</a></div>
-           <div class="entry">
-          	<a href="/test-signature-verification/?locale=de">Signatur &uuml;berpr&uuml;fen (Test)</a></div>
-           <div class="entry">
-          	<a href="/download/pdftools/index.html">Download</a></div>
-           <div class="clear"></div>
-		  
-        </div>
-	   
-	   
-		<!-- Start Content -->
-        <!-- InstanceBeginEditable name="Content-700" -->
-        <div id="content-middle-700">
-          <decorator:body/>
-        </div>
-         <!-- InstanceEndEditable -->
-        <div id="content-bottom-700"></div>
-   	</div>
-    </div>
-	
-
-	
-	
-   
-</body>
-<!-- InstanceEnd --></html>
diff --git a/src/main/webapp/sitemesh/buergerkarte/test-pdf-as-template.jsp b/src/main/webapp/sitemesh/buergerkarte/test-pdf-as-template.jsp
deleted file mode 100644
index c480315..0000000
--- a/src/main/webapp/sitemesh/buergerkarte/test-pdf-as-template.jsp
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-<%@taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>
-<%@taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page" %>
-
-<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
-<%@ page import="at.knowcenter.wag.egov.egiz.web.LocalRequestHelper" %>
-
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><!-- InstanceBegin template="/Templates/en/pdf.dwt" codeOutsideHTMLIsLocked="false" -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="description" content="citizen card" />
-<meta name="keywords" content="citizen card,e-card,pdf signature" />
-<meta name="robots" content="index,follow" />
-<meta name="language" content="en-us" />
-<meta name="author" content="Tina Fleck" />
-<meta name="geo.region" content="AT-6" />
-<!-- InstanceBeginEditable name="doctitle" -->
-<title>PDF Signature (test)</title>
-<decorator:head/>
-<link rel="stylesheet" type="text/css" href="<%=LocalRequestHelper.getLocalContextAddress(request,response)%>/css/pdfas-styles.css" />
-<!-- InstanceEndEditable -->
-<!-- InstanceBeginEditable name="templates" -->
-<!-- InstanceEndEditable -->
-<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
-<link rel="icon" href="/favicon.ico" type="image/x-icon" />
-<link rel="stylesheet" type="text/css" href="https://www.buergerkarte.at/css/styles.css" />
-<!-- Template Parameters -->
-
-
-
-
-
-
-
-
-
-
-<!-- InstanceParam name="zusatzspalte" type="boolean" value="true" -->
-<!-- InstanceParam name="contentwidth" type="number" value="700" -->
-
-<!-- InstanceParam name="submenu_1" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_2" type="text" value="entry-active" -->
-<!-- InstanceParam name="submenu_3" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_4" type="text" value="entry" -->
-<!-- InstanceParam name="submenu_5" type="text" value="entry" -->
-
-
-
-
-
-<!-- InstanceParam name="test_prefix" type="text" value="" -->
-<!-- InstanceParam name="test_postfix" type="text" value="" -->
-
-<!-- InstanceBeginEditable name="JavaScript" -->
-<!-- Java Script Area -->
-<%
- String localName = request.getLocalName(); 
- if (localName.equals("localhost") || localName.startsWith("brontes.")) {
-%>
- <link rel="stylesheet" type="text/css" href="http://www.buergerkarte.at/css/styles.css" />
-<%
- } // end if
-%>
-<!-- InstanceEndEditable -->
-
-</head>
-
-<body>
-    <div id="container">
-      <div id="header">
-      	<div id="sitename">Citizen Card</div>
-         <div id="metamenu"><a href="/en/index.html">Home</a> | <a href="/en/sitemap/index.html">Sitemap</a> | <a href="<%=LocalRequestHelper.getLocalContextAddress(request,response)%>/?locale=de">German</a> |<!-- <a href="../switch.php">English</a> | --> <a href="/en/impressum">Imprint</a></div>
-       	<div class="clearfloat"></div>
-      </div>
-      
-      <div id="menubar">
-      	<div id="menu-top"></div>
-         <div id="menu-middle">
-         	<h4>I want one...</h4>  
-			<!-- menu_inactive -->       	
-            <div><a id="menu_11" class="menu_inactive" href="/en/voraussetzungen/index.html">What you'll need ...</a></div>
-            <div><a id="menu_12" class="menu_inactive" href="/en/aktivieren/online.html">Activate your card ...</a></div>
-            <h4>I have one...</h4>         	
-            <div><a id="menu_21" class="menu_inactive" href="/en/verwaltung/index.html">Public Administration</a></div>
-            <div><a id="menu_22" class="menu_inactive" href="/en/privatwirtschaft/index.html">Private Sector</a></div>
-            <div><a id="menu_23" class="menu_inactive" href="/en/zuhause/index.html">At Home</a></div>
-            <div><a id="menu_25" class="menu_active" href="/en/pdf-signieren/index.html"><acronym title="Portable Document Format">PDF</acronym> Signatures</a></div>
-            <div><a id="menu_24" class="menu_inactive" href="/en/hilfe/wer-hilft-mir.html">Help</a></div>
-            <h4>What is it...</h4>         	
-            <div><a id="menu_31" class="menu_inactive" href="/en/ueberblick/index.html">Overview</a></div>
-            <div><a id="menu_32" class="menu_inactive" href="/en/datenschutz-sicherheit/index.html">Data Protection
-&amp; Security</a></div>
-            <div><a id="menu_33" class="menu_inactive" href="/en/spezifikation/index.html">Specifications</a></div>
-			<!--
-            <div><a id="menu_11" class="menu_inactive" href="../de/begriffslexikon/index.html">Begriffslexikon</a></div>
-			 -->
-            <div><img src="images/menu-divider.jpg" alt="" width="210" height="2" /></div>
-              
-          
-            <div class="search">            
-            	<form accept-charset="utf-8" action="/regain/search.jsp" method="get" name="search">               
-               <table cellpadding="0" cellspacing="0" border="0"><tr><td><label for="suchtext">Search: 
-                       <input name="query" type="text" size="20" maxlength="20"  alt="search" class="inputfield" /></label></td>
-               <td><input type="image" name="enterdata" src="images/button-search.jpg" alt="Suche starten" title="Suche starten" /></td>
-               </tr></table>
-               </form>
-            </div>
-      </div>
-      <div id="menu-bottom"></div>
-	  </div>
-      
-	  
-     
-      
-      
-    
-	
-	
-
-	
-      <div id="mainContent-700">
-	  	
-        <div class="submenu" id="_700">
-		  
-		  <!-- InstanceBeginEditable name="optional-entries-700" -->
-		  <!-- InstanceEndEditable -->		
-          <div class="start"></div>
-          <div class="entry">
-          	<a href="/en/pdf-signieren/index.html">General</a></div>
-          <div class="entry">
-          	<a href="/en/pdf-signieren/info.html">Additional Info</a></div>
-           <div class="entry-active">
-          	<a href="<%= request.getContextPath() %>/?locale=en"><acronym title="Portable Document Format" lang="en">PDF</acronym> Signatures (test)</a></div>
-           <div class="entry">
-          	<a href="/test-signature-verification/?locale=en">Signature Verification (test)</a></div>
-           <div class="entry">
-          	<a href="/en/pdf-signieren/downloads.html">Downloads</a></div>
-           <div class="clear"></div>
-		  
-        </div>
-	   
-	   
-		<!-- Start Content -->
-        <!-- InstanceBeginEditable name="Content-700" -->
-        <div id="content-middle-700">
-          <decorator:body/>
-        </div>
-         <!-- InstanceEndEditable -->
-        <div id="content-bottom-700"></div>
-   	</div>
-    </div>
-	
-
-	
-	
-   
-</body>
-<!-- InstanceEnd --></html>
diff --git a/src/site/changes.xml b/src/site/changes.xml
index 29b29d3..257f216 100644
--- a/src/site/changes.xml
+++ b/src/site/changes.xml
@@ -13,6 +13,15 @@
 			</release>
 		-->
 
+		<release version="3.0.9-20090319" date="2009-03-19" description="subsequent release">
+			<action dev="tknall" type="update">Build script for command line version updated.</action>
+			<action dev="tknall" type="fix">JavaDoc fixes.</action>
+			<action dev="tknall" type="update">Some updates for debugging messages.</action>
+			<action dev="tknall" type="update">Parser for MOCCA-CreateXMLSignatureResponses enhanced.</action>
+			<action dev="tknall" type="update">Many updates and fixes for the external web app interface.</action>
+			<action dev="tknall" type="add">New profile for invisible signatures added.</action>
+		</release>
+
 		<release version="3.0.9-20090206" date="2009-02-04" description="subsequent release">
 			<action dev="tknall" type="fix">Examples for the help screen of the commandline version corrected.</action>
 		</release>
diff --git a/work/cfg/config.properties b/work/cfg/config.properties
index 9bcf39a..ecdb6cd 100644
--- a/work/cfg/config.properties
+++ b/work/cfg/config.properties
@@ -210,7 +210,8 @@ sig_obj.types.SIGNATURBLOCK_DE=on
 sig_obj.types.SIGNATURBLOCK_EN=on
 sig_obj.types.SIGNATURBLOCK_MINIMAL_DE=on
 sig_obj.types.SIGNATURBLOCK_MINIMAL_EN=on
-sig_obj.types.SIGNATURBLOCK_DE-PDFA=on
+sig_obj.types.SIGNATURBLOCK_DE_PDFA=on
+sig_obj.types.INVISIBLE=on
 
 
 #############################################
@@ -384,47 +385,47 @@ sig_obj.SIGNATURBLOCK_DE.table.info.6=SIG_ID-cv
 ###################################################################################################
 # PROFIL: Signaturblock (Deutsch) mit PDF/A-Support
 
-sig_obj.SIGNATURBLOCK_DE-PDFA.description=Standardsignatur Deutsch (PDF/A1b)
+sig_obj.SIGNATURBLOCK_DE_PDFA.description=Standardsignatur Deutsch (PDF/A1b)
 
 # enable/disable PDF/A1b support for this profile
-sig_obj.SIGNATURBLOCK_DE-PDFA.key.SIG_PDFA1B_VALID=true
+sig_obj.SIGNATURBLOCK_DE_PDFA.key.SIG_PDFA1B_VALID=true
 
-sig_obj.SIGNATURBLOCK_DE-PDFA.key.SIG_VALUE=Signaturwert
-sig_obj.SIGNATURBLOCK_DE-PDFA.key.SIG_NAME=Unterzeichner
-sig_obj.SIGNATURBLOCK_DE-PDFA.key.SIG_DATE=Datum/Zeit-UTC
-sig_obj.SIGNATURBLOCK_DE-PDFA.key.SIG_ISSUER=Aussteller-Zertifikat
-sig_obj.SIGNATURBLOCK_DE-PDFA.key.SIG_NUMBER=Serien-Nr.
-sig_obj.SIGNATURBLOCK_DE-PDFA.key.SIG_KZ=Methode
-sig_obj.SIGNATURBLOCK_DE-PDFA.key.SIG_ID=Parameter
-sig_obj.SIGNATURBLOCK_DE-PDFA.key.SIG_META=Pr�finformation
+sig_obj.SIGNATURBLOCK_DE_PDFA.key.SIG_VALUE=Signaturwert
+sig_obj.SIGNATURBLOCK_DE_PDFA.key.SIG_NAME=Unterzeichner
+sig_obj.SIGNATURBLOCK_DE_PDFA.key.SIG_DATE=Datum/Zeit-UTC
+sig_obj.SIGNATURBLOCK_DE_PDFA.key.SIG_ISSUER=Aussteller-Zertifikat
+sig_obj.SIGNATURBLOCK_DE_PDFA.key.SIG_NUMBER=Serien-Nr.
+sig_obj.SIGNATURBLOCK_DE_PDFA.key.SIG_KZ=Methode
+sig_obj.SIGNATURBLOCK_DE_PDFA.key.SIG_ID=Parameter
+sig_obj.SIGNATURBLOCK_DE_PDFA.key.SIG_META=Pr�finformation
 
-sig_obj.SIGNATURBLOCK_DE-PDFA.pos=f:80
+sig_obj.SIGNATURBLOCK_DE_PDFA.pos=f:80
 
-sig_obj.SIGNATURBLOCK_DE-PDFA.value.SIG_META=Informationen zur Pr�fung der elektronischen Signatur und des Ausdrucks finden Sie unter: https://www.buergerkarte.at/signature-verification
-sig_obj.SIGNATURBLOCK_DE-PDFA.value.SIG_LABEL=./images/signatur-logo_de.png
+sig_obj.SIGNATURBLOCK_DE_PDFA.value.SIG_META=Informationen zur Pr�fung der elektronischen Signatur und des Ausdrucks finden Sie unter: https://www.buergerkarte.at/signature-verification
+sig_obj.SIGNATURBLOCK_DE_PDFA.value.SIG_LABEL=./images/signatur-logo_de.png
 
 #---------------------- MAIN TABLE -------------------------
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.1=SIG_VALUE-cv
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.2=SIG_LABEL-i|TABLE-info
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.3=SIG_META-cv
-
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.ColsWidth=1 5
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.Style.bgcolor=255 255 255
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.Style.padding=3
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.Style.border=0.1
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.Style.halign=left
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.Style.valign=middle
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.Style.font=TTF:DejaVuSansCondensed.ttf,8
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.main.Style.valuefont=TTF:DejaVuSansMono.ttf,8
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.1=SIG_VALUE-cv
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.2=SIG_LABEL-i|TABLE-info
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.3=SIG_META-cv
+
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.ColsWidth=1 5
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.Style.bgcolor=255 255 255
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.Style.padding=3
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.Style.border=0.1
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.Style.halign=left
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.Style.valign=middle
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.Style.font=TTF:DejaVuSansCondensed.ttf,8
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.main.Style.valuefont=TTF:DejaVuSansMono.ttf,8
 
 #---------------------- INFO TABLE -------------------------
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.info.ColsWidth=1 4
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.info.1=SIG_NAME-cv
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.info.2=SIG_DATE-cv
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.info.3=SIG_ISSUER-cv
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.info.4=SIG_NUMBER-cv
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.info.5=SIG_KZ-cv
-sig_obj.SIGNATURBLOCK_DE-PDFA.table.info.6=SIG_ID-cv
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.info.ColsWidth=1 4
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.info.1=SIG_NAME-cv
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.info.2=SIG_DATE-cv
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.info.3=SIG_ISSUER-cv
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.info.4=SIG_NUMBER-cv
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.info.5=SIG_KZ-cv
+sig_obj.SIGNATURBLOCK_DE_PDFA.table.info.6=SIG_ID-cv
 
 
 ###################################################################################################
@@ -526,6 +527,24 @@ sig_obj.SIGNATURBLOCK_EN.table.info.5=SIG_KZ-cv
 sig_obj.SIGNATURBLOCK_EN.table.info.6=SIG_ID-cv
 
 
+###################################################################################################
+# PROFIL: Unsichtbarer Signaturblock
+
+#sig_obj.INVISIBLE.description=Unsichtbarer Signaturblock
+
+# Derzeit muss noch mindestens ein sig_obj.XXX.key.XXX Schluessel angegeben werden.
+sig_obj.INVISIBLE.key.SIG_VALUE=foo
+
+sig_obj.INVISIBLE.value.SIG_LABEL=./images/signatur-logo_de.png
+
+#---------------------- MAIN TABLE -------------------------
+sig_obj.INVISIBLE.table.main.1=SIG_LABEL-i
+sig_obj.INVISIBLE.table.main.Style.border=0
+
+# scaling of image (in pdf units)
+sig_obj.INVISIBLE.table.main.Style.imagescaletofit=0.0;0.0
+
+
 
 #############################################
 # start LDAP-Mappings
-- 
cgit v1.2.3