diff options
Diffstat (limited to 'src/test')
3 files changed, 1938 insertions, 2025 deletions
| diff --git a/src/test/java/test/at/knowcenter/wag/egov/egiz/TestNeu.java b/src/test/java/test/at/knowcenter/wag/egov/egiz/TestNeu.java index fdbaee5..8a53fea 100644 --- a/src/test/java/test/at/knowcenter/wag/egov/egiz/TestNeu.java +++ b/src/test/java/test/at/knowcenter/wag/egov/egiz/TestNeu.java @@ -3,337 +3,311 @@   */
  package test.at.knowcenter.wag.egov.egiz;
 -import java.io.File;
 -import java.io.FileInputStream;
 -import java.io.FileOutputStream;
 -import java.io.ObjectInputStream;
 -import java.io.ObjectOutputStream;
 -import java.io.UnsupportedEncodingException;
 -
 -import org.apache.commons.logging.Log;
 -import org.apache.commons.logging.LogFactory;
 -import org.apache.log4j.PropertyConfigurator;
 -
 -import test.at.knowcenter.wag.egov.egiz.detached.BKUConnector;
 -import test.at.knowcenter.wag.egov.egiz.detached.MOAConnector;
 -import at.knowcenter.wag.egov.egiz.PdfASID;
 -import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
 -import at.knowcenter.wag.egov.egiz.exceptions.SignatureException;
 -import at.knowcenter.wag.egov.egiz.sig.SignatureData;
 -import at.knowcenter.wag.egov.egiz.sig.SignatureObject;
 -import at.knowcenter.wag.egov.egiz.sig.SignatureResponse;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.Connector;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.bku.BKUPostConnection;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.bku.DetachedBKUConnector;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.bku.EnvelopedBase64BKUConnector;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.bku.MultipartDetachedBKUConnector;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.bku.SignSignatureObject;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.moa.DetachedLocRefMOAConnector;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.moa.EnvelopingBase64MOAConnector;
 -import at.knowcenter.wag.egov.egiz.tools.DebugHelper;
  /**
 + * @deprecated old code
 + * 
   * @author wprinz
   * 
   */
  public class TestNeu
  {
 -  private static Log logger = LogFactory.getLog(TestNeu.class);
 -
 -  protected static String TEXT = "Test 123 äöüß"; //$NON-NLS-1$
 -
 -  protected static File PDF = new File("C:\\wprinz\\Filer\\egiz\\docs\\document4.pdf"); //$NON-NLS-1$
 -
 -  /**
 -   * @param args
 -   * @throws SignatureException
 -   */
 -  public static void main(String[] args) throws Exception
 -  {
 -    SettingsReader.initializeForCommandLine();
 -    PropertyConfigurator.configure(SettingsReader.CONFIG_PATH + "log4j.properties"); //$NON-NLS-1$
 -
 -    //testEnvelopingBase64BKUConnector();
 -
 -    testEnvelopingBase64MOAConnector();
 -
 -    // testDetachedLocRefMOAConnector ();
 -
 -    // testDetachedMultipartBKUConnector();
 -
 -    // testTexMOA();
 -
 -    // testBinBKU();
 -
 -    // testTexBKU();
 -
 -    // SignatureResponse sr = bku_c.doVerify(TEXT, so);
 -
 -    // logger.debug("sr = " + sr);
 -
 -    logger.info("finished.");
 -  }
 -
 -  public static void testEnvelopingBase64BKUConnector() throws Exception
 -  {
 -    Connector c = new EnvelopedBase64BKUConnector("CIO-BUND2"); //$NON-NLS-1$
 -
 -    SignatureData data = new BinarySignatureData();
 -
 -    {
 -      SignSignatureObject so = c.doSign(data);
 -      
 -      FileOutputStream fos = new FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 -      ObjectOutputStream oos = new ObjectOutputStream(fos);
 -      oos.writeObject(so);
 -      oos.close();
 -    }
 -
 -    {
 -      FileInputStream fis = new FileInputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 -      ObjectInputStream ois = new ObjectInputStream(fis);
 -      SignSignatureObject so = (SignSignatureObject) ois.readObject();
 -      ois.close();
 -
 -      SignatureResponse sr = c.doVerify(data, so);
 -
 -      logger.debug("sr = " + sr);
 -    }
 -  }
 -
 -  public static void testEnvelopingBase64MOAConnector() throws Exception
 -  {
 -    Connector c = new EnvelopingBase64MOAConnector("CIO-BUND2"); //$NON-NLS-1$
 -
 -    SignatureData data = new BinarySignatureData();
 -
 -    {
 -      SignSignatureObject so = c.doSign(data);
 -
 -      FileOutputStream fos = new FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 -      ObjectOutputStream oos = new ObjectOutputStream(fos);
 -      oos.writeObject(so);
 -      oos.close();
 -    }
 -
 -    {
 -      FileInputStream fis = new FileInputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 -      ObjectInputStream ois = new ObjectInputStream(fis);
 -      SignSignatureObject so = (SignSignatureObject) ois.readObject();
 -      ois.close();
 -
 -      SignatureResponse sr = c.doVerify(data, so);
 -      logger.debug("sr = " + sr);
 -    }
 -  }
 -
 -//  public static void testDetachedLocRefMOAConnector() throws Exception
 +//  private static Log logger = LogFactory.getLog(TestNeu.class);
 +//
 +//  protected static String TEXT = "Test 123 äöüß"; //$NON-NLS-1$
 +//
 +//  protected static File PDF = new File("C:\\wprinz\\Filer\\egiz\\docs\\document4.pdf"); //$NON-NLS-1$
 +//
 +//  /**
 +//   * @param args
 +//   * @throws SignatureException
 +//   */
 +//  public static void main(String[] args) throws Exception
 +//  {
 +//    SettingsReader.initializeForCommandLine();
 +//    PropertyConfigurator.configure(SettingsReader.CONFIG_PATH + "log4j.properties"); //$NON-NLS-1$
 +//
 +//    //testEnvelopingBase64BKUConnector();
 +//
 +//    testEnvelopingBase64MOAConnector();
 +//
 +//    // testDetachedLocRefMOAConnector ();
 +//
 +//    // testDetachedMultipartBKUConnector();
 +//
 +//    // testTexMOA();
 +//
 +//    // testBinBKU();
 +//
 +//    // testTexBKU();
 +//
 +//    // SignatureResponse sr = bku_c.doVerify(TEXT, so);
 +//
 +//    // logger.debug("sr = " + sr);
 +//
 +//    logger.info("finished.");
 +//  }
 +//
 +//  public static void testEnvelopingBase64BKUConnector() throws Exception
 +//  {
 +//    Connector c = new EnvelopedBase64BKUConnector("CIO-BUND2"); //$NON-NLS-1$
 +//
 +//    SignatureData data = new BinarySignatureData();
 +//
 +//    {
 +//      SignSignatureObject so = c.doSign(data);
 +//      
 +//      FileOutputStream fos = new FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 +//      ObjectOutputStream oos = new ObjectOutputStream(fos);
 +//      oos.writeObject(so);
 +//      oos.close();
 +//    }
 +//
 +//    {
 +//      FileInputStream fis = new FileInputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 +//      ObjectInputStream ois = new ObjectInputStream(fis);
 +//      SignSignatureObject so = (SignSignatureObject) ois.readObject();
 +//      ois.close();
 +//
 +//      SignatureResponse sr = c.doVerify(data, so);
 +//
 +//      logger.debug("sr = " + sr);
 +//    }
 +//  }
 +//
 +//  public static void testEnvelopingBase64MOAConnector() throws Exception
 +//  {
 +//    Connector c = new EnvelopingBase64MOAConnector("CIO-BUND2"); //$NON-NLS-1$
 +//
 +//    SignatureData data = new BinarySignatureData();
 +//
 +//    {
 +//      SignSignatureObject so = c.doSign(data);
 +//
 +//      FileOutputStream fos = new FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 +//      ObjectOutputStream oos = new ObjectOutputStream(fos);
 +//      oos.writeObject(so);
 +//      oos.close();
 +//    }
 +//
 +//    {
 +//      FileInputStream fis = new FileInputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 +//      ObjectInputStream ois = new ObjectInputStream(fis);
 +//      SignSignatureObject so = (SignSignatureObject) ois.readObject();
 +//      ois.close();
 +//
 +//      SignatureResponse sr = c.doVerify(data, so);
 +//      logger.debug("sr = " + sr);
 +//    }
 +//  }
 +//
 +////  public static void testDetachedLocRefMOAConnector() throws Exception
 +////  {
 +////    DetachedLocRefMOAConnector c = new DetachedLocRefMOAConnector("CIO-BUND2"); //$NON-NLS-1$
 +////
 +////    SignatureData data = new TextSignatureData();
 +////
 +////    SignSignatureObject so = c.doSign(data);
 +////
 +////  }
 +//
 +//  public static void testDetachedMultipartBKUConnector() throws Exception
  //  {
 -//    DetachedLocRefMOAConnector c = new DetachedLocRefMOAConnector("CIO-BUND2"); //$NON-NLS-1$
 +//    DetachedBKUConnector c = new MultipartDetachedBKUConnector("CIO-BUND2"); //$NON-NLS-1$
  //
 -//    SignatureData data = new TextSignatureData();
 +//    SignatureData data = new BinarySignatureData();
  //
  //    SignSignatureObject so = c.doSign(data);
  //
 +//    FileOutputStream fos = new FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 +//    ObjectOutputStream oos = new ObjectOutputStream(fos);
 +//    oos.writeObject(so);
 +//    oos.close();
 +//
 +//    FileInputStream fis = new FileInputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 +//    ObjectInputStream ois = new ObjectInputStream(fis);
 +//    so = (SignSignatureObject) ois.readObject();
 +//    ois.close();
 +//
 +//    SignatureResponse sr = c.doVerify(data, so);
 +//    logger.debug("sr = " + sr);
 +//
 +//  }
 +//
 +//  public static void testBinBKU() throws Exception
 +//  {
 +//    FileInputStream fis = new FileInputStream(PDF);
 +//    byte[] data = new byte[(int) PDF.length()];
 +//    fis.read(data);
 +//    fis.close();
 +//
 +//    PdfASID algorithm = new PdfASID("urn:pdfsigfilter:bka.gv.at:binaer:v1.0.0");
 +//
 +//    SignatureObject so = testSignBKU(data, algorithm);
 +//
 +//    so.setKZ(algorithm);
 +//
 +//    SignatureResponse sr = testVerifyBKU(data, so);
 +//
 +//    logger.debug("sr = " + sr);
 +//
 +//  }
 +//
 +//  public static void testTexBKU() throws Exception
 +//  {
 +//    PdfASID algorithm = new PdfASID("urn:pdfsigfilter:bka.gv.at:text:v1.0.0");
 +//
 +//    SignatureObject so = testSignBKU(TEXT.getBytes("UTF-8"), algorithm);
 +//
 +//    so.setKZ(algorithm);
 +//
 +//    // FileOutputStream fos = new
 +//    // FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 +//    // ObjectOutputStream oos = new ObjectOutputStream(fos);
 +//    // oos.writeObject(so);
 +//    // oos.close();
 +//
 +//    SignatureResponse sr = testVerifyBKU(TEXT.getBytes("UTF-8"), so);
 +//
 +//    logger.debug("sr = " + sr);
 +//  }
 +//
 +//  public static void testTexMOA() throws Exception
 +//  {
 +//    PdfASID algorithm = new PdfASID("urn:pdfsigfilter:bka.gv.at:text:v1.0.0");
 +//
 +//    SignatureObject so = testSignMOA(TEXT.getBytes("UTF-8"), algorithm);
 +//
 +//    so.setKZ(algorithm);
 +//
 +//    // FileOutputStream fos = new
 +//    // FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 +//    // ObjectOutputStream oos = new ObjectOutputStream(fos);
 +//    // oos.writeObject(so);
 +//    // oos.close();
 +//
 +//    // SignatureResponse sr = testVerifyBKU(TEXT.getBytes("UTF-8"), so);
 +//    //    
 +//    // logger.debug("sr = " + sr);
 +//  }
 +//
 +//  public static SignatureObject testSignBKU(byte[] data, PdfASID algorithm) throws Exception
 +//  {
 +//    BKUConnector bku_c = new BKUConnector();
 +//
 +//    SignatureObject so = bku_c.doSign("CIO-BUND2", data, algorithm);
 +//
 +//    logger.debug("so = " + so);
 +//
 +//    return so;
 +//  }
 +//
 +//  public static SignatureObject testSignMOA(byte[] data, PdfASID algorithm) throws Exception
 +//  {
 +//    MOAConnector moa_c = new MOAConnector();
 +//
 +//    SignatureObject so = moa_c.doSign("CIO-BUND2", data, algorithm);
 +//
 +//    logger.debug("so = " + so);
 +//
 +//    return so;
 +//  }
 +//
 +//  public static SignatureResponse testVerifyBKU(byte[] data, SignatureObject so) throws Exception
 +//  {
 +//    BKUConnector bku_c = new BKUConnector();
 +//
 +//    SignatureResponse sr = bku_c.doVerify(data, so);
 +//
 +//    logger.debug("sr = " + sr);
 +//
 +//    return sr;
 +//  }
 +//
 +//  /**
 +//   * A data source for text data.
 +//   * 
 +//   * @author wprinz
 +//   */
 +//  public static class TextSignatureData implements SignatureData
 +//  {
 +//    /**
 +//     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getData()
 +//     */
 +//    public byte[] getData()
 +//    {
 +//      try
 +//      {
 +//        return TEXT.getBytes(getCharacterEncoding());
 +//      }
 +//      catch (UnsupportedEncodingException e)
 +//      {
 +//        e.printStackTrace();
 +//        return null;
 +//      }
 +//    }
 +//
 +//    /**
 +//     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getMimeType()
 +//     */
 +//    public String getMimeType()
 +//    {
 +//      return "text/plain"; //$NON-NLS-1$
 +//    }
 +//
 +//    /**
 +//     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getCharacterEncoding()
 +//     */
 +//    public String getCharacterEncoding()
 +//    {
 +//      return "UTF-8"; //$NON-NLS-1$
 +//    }
 +//  }
 +//
 +//  /**
 +//   * A data source for binary (PDF) data.
 +//   * 
 +//   * @author wprinz
 +//   */
 +//  public static class BinarySignatureData implements SignatureData
 +//  {
 +//    /**
 +//     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getData()
 +//     */
 +//    public byte[] getData()
 +//    {
 +//      try
 +//      {
 +//        FileInputStream fis = new FileInputStream(PDF);
 +//        byte[] data = new byte[(int) PDF.length()];
 +//        fis.read(data);
 +//        fis.close();
 +//
 +//        return data;
 +//      }
 +//      catch (Exception e)
 +//      {
 +//        e.printStackTrace();
 +//        return null;
 +//      }
 +//    }
 +//
 +//    /**
 +//     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getMimeType()
 +//     */
 +//    public String getMimeType()
 +//    {
 +//      return "application/pdf"; //$NON-NLS-1$
 +//    }
 +//
 +//    /**
 +//     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getCharacterEncoding()
 +//     */
 +//    public String getCharacterEncoding()
 +//    {
 +//      return null;
 +//    }
 +//
  //  }
 -
 -  public static void testDetachedMultipartBKUConnector() throws Exception
 -  {
 -    DetachedBKUConnector c = new MultipartDetachedBKUConnector("CIO-BUND2"); //$NON-NLS-1$
 -
 -    SignatureData data = new BinarySignatureData();
 -
 -    SignSignatureObject so = c.doSign(data);
 -
 -    FileOutputStream fos = new FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 -    ObjectOutputStream oos = new ObjectOutputStream(fos);
 -    oos.writeObject(so);
 -    oos.close();
 -
 -    FileInputStream fis = new FileInputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 -    ObjectInputStream ois = new ObjectInputStream(fis);
 -    so = (SignSignatureObject) ois.readObject();
 -    ois.close();
 -
 -    SignatureResponse sr = c.doVerify(data, so);
 -    logger.debug("sr = " + sr);
 -
 -  }
 -
 -  public static void testBinBKU() throws Exception
 -  {
 -    FileInputStream fis = new FileInputStream(PDF);
 -    byte[] data = new byte[(int) PDF.length()];
 -    fis.read(data);
 -    fis.close();
 -
 -    PdfASID algorithm = new PdfASID("urn:pdfsigfilter:bka.gv.at:binaer:v1.0.0");
 -
 -    SignatureObject so = testSignBKU(data, algorithm);
 -
 -    so.setKZ(algorithm);
 -
 -    SignatureResponse sr = testVerifyBKU(data, so);
 -
 -    logger.debug("sr = " + sr);
 -
 -  }
 -
 -  public static void testTexBKU() throws Exception
 -  {
 -    PdfASID algorithm = new PdfASID("urn:pdfsigfilter:bka.gv.at:text:v1.0.0");
 -
 -    SignatureObject so = testSignBKU(TEXT.getBytes("UTF-8"), algorithm);
 -
 -    so.setKZ(algorithm);
 -
 -    // FileOutputStream fos = new
 -    // FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 -    // ObjectOutputStream oos = new ObjectOutputStream(fos);
 -    // oos.writeObject(so);
 -    // oos.close();
 -
 -    SignatureResponse sr = testVerifyBKU(TEXT.getBytes("UTF-8"), so);
 -
 -    logger.debug("sr = " + sr);
 -  }
 -
 -  public static void testTexMOA() throws Exception
 -  {
 -    PdfASID algorithm = new PdfASID("urn:pdfsigfilter:bka.gv.at:text:v1.0.0");
 -
 -    SignatureObject so = testSignMOA(TEXT.getBytes("UTF-8"), algorithm);
 -
 -    so.setKZ(algorithm);
 -
 -    // FileOutputStream fos = new
 -    // FileOutputStream("C:\\wprinz\\Filer\\egiz2\\SignatureObject.bin");
 -    // ObjectOutputStream oos = new ObjectOutputStream(fos);
 -    // oos.writeObject(so);
 -    // oos.close();
 -
 -    // SignatureResponse sr = testVerifyBKU(TEXT.getBytes("UTF-8"), so);
 -    //    
 -    // logger.debug("sr = " + sr);
 -  }
 -
 -  public static SignatureObject testSignBKU(byte[] data, PdfASID algorithm) throws Exception
 -  {
 -    BKUConnector bku_c = new BKUConnector();
 -
 -    SignatureObject so = bku_c.doSign("CIO-BUND2", data, algorithm);
 -
 -    logger.debug("so = " + so);
 -
 -    return so;
 -  }
 -
 -  public static SignatureObject testSignMOA(byte[] data, PdfASID algorithm) throws Exception
 -  {
 -    MOAConnector moa_c = new MOAConnector();
 -
 -    SignatureObject so = moa_c.doSign("CIO-BUND2", data, algorithm);
 -
 -    logger.debug("so = " + so);
 -
 -    return so;
 -  }
 -
 -  public static SignatureResponse testVerifyBKU(byte[] data, SignatureObject so) throws Exception
 -  {
 -    BKUConnector bku_c = new BKUConnector();
 -
 -    SignatureResponse sr = bku_c.doVerify(data, so);
 -
 -    logger.debug("sr = " + sr);
 -
 -    return sr;
 -  }
 -
 -  /**
 -   * A data source for text data.
 -   * 
 -   * @author wprinz
 -   */
 -  public static class TextSignatureData implements SignatureData
 -  {
 -    /**
 -     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getData()
 -     */
 -    public byte[] getData()
 -    {
 -      try
 -      {
 -        return TEXT.getBytes(getCharacterEncoding());
 -      }
 -      catch (UnsupportedEncodingException e)
 -      {
 -        e.printStackTrace();
 -        return null;
 -      }
 -    }
 -
 -    /**
 -     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getMimeType()
 -     */
 -    public String getMimeType()
 -    {
 -      return "text/plain"; //$NON-NLS-1$
 -    }
 -
 -    /**
 -     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getCharacterEncoding()
 -     */
 -    public String getCharacterEncoding()
 -    {
 -      return "UTF-8"; //$NON-NLS-1$
 -    }
 -  }
 -
 -  /**
 -   * A data source for binary (PDF) data.
 -   * 
 -   * @author wprinz
 -   */
 -  public static class BinarySignatureData implements SignatureData
 -  {
 -    /**
 -     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getData()
 -     */
 -    public byte[] getData()
 -    {
 -      try
 -      {
 -        FileInputStream fis = new FileInputStream(PDF);
 -        byte[] data = new byte[(int) PDF.length()];
 -        fis.read(data);
 -        fis.close();
 -
 -        return data;
 -      }
 -      catch (Exception e)
 -      {
 -        e.printStackTrace();
 -        return null;
 -      }
 -    }
 -
 -    /**
 -     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getMimeType()
 -     */
 -    public String getMimeType()
 -    {
 -      return "application/pdf"; //$NON-NLS-1$
 -    }
 -
 -    /**
 -     * @see at.knowcenter.wag.egov.egiz.sig.SignatureData#getCharacterEncoding()
 -     */
 -    public String getCharacterEncoding()
 -    {
 -      return null;
 -    }
 -
 -  }
  }
 diff --git a/src/test/java/test/at/knowcenter/wag/egov/egiz/detached/BKUConnector.java b/src/test/java/test/at/knowcenter/wag/egov/egiz/detached/BKUConnector.java index d395de5..072c277 100644 --- a/src/test/java/test/at/knowcenter/wag/egov/egiz/detached/BKUConnector.java +++ b/src/test/java/test/at/knowcenter/wag/egov/egiz/detached/BKUConnector.java @@ -17,33 +17,6 @@   */
  package test.at.knowcenter.wag.egov.egiz.detached;
 -import java.io.FileOutputStream;
 -import java.io.OutputStreamWriter;
 -import java.io.UnsupportedEncodingException;
 -import java.util.Properties;
 -import java.util.regex.Matcher;
 -import java.util.regex.Pattern;
 -
 -import org.apache.log4j.Level;
 -import org.apache.log4j.Logger;
 -
 -import java.io.File;
 -import at.knowcenter.wag.egov.egiz.PdfASID;
 -import at.knowcenter.wag.egov.egiz.cfg.ConfigLogger;
 -import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
 -import at.knowcenter.wag.egov.egiz.exceptions.SettingsException;
 -import at.knowcenter.wag.egov.egiz.exceptions.SignatureException;
 -import at.knowcenter.wag.egov.egiz.exceptions.SignatureTypesException;
 -import at.knowcenter.wag.egov.egiz.sig.ConnectorInformation;
 -import at.knowcenter.wag.egov.egiz.sig.LocalConnector;
 -import at.knowcenter.wag.egov.egiz.sig.SignatureObject;
 -import at.knowcenter.wag.egov.egiz.sig.SignatureResponse;
 -import at.knowcenter.wag.egov.egiz.framework.SignatorFactory;
 -import at.knowcenter.wag.egov.egiz.sig.X509Cert;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.ConnectorConfigurationKeys;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.MOAConnector;
 -import at.knowcenter.wag.egov.egiz.tools.CodingHelper;
 -import at.knowcenter.wag.egov.egiz.tools.FileHelper;
  /**
   * Connector for communicating with BKU.
 @@ -53,935 +26,935 @@ import at.knowcenter.wag.egov.egiz.tools.FileHelper;   */
  public class BKUConnector
  {
 -  /**
 -   * ConnectorInformation that identifies this Connector to the system.
 -   * 
 -   * @see at.knowcenter.wag.egov.egiz.sig.ConnectorFactory
 -   * @see ConnectorInformation
 -   */
 -  public static final ConnectorInformation CONNECTOR_INFORMATION = new ConnectorInformation("bku", "BKU");
 -
 -  /**
 -   * The SettingsReader instance
 -   */
 -  private SettingsReader settings_ = null;
 -
 -  /**
 -   * The logger definition.
 -   */
 -  private static final Logger logger_ = ConfigLogger.getLogger(BKUConnector.class);
 -
 -  /**
 -   * The empty constructor
 -   */
 -  public BKUConnector() throws SignatureException
 -  {
 -    loadSettings();
 -  }
 -
 -  /**
 -   * load the inital signature settings
 -   * 
 -   * @see SettingsReader
 -   */
 -  private void loadSettings() throws SignatureException
 -  {
 -    if (settings_ == null)
 -    {
 -      try
 -      {
 -        settings_ = SettingsReader.getInstance();
 -      }
 -      catch (SettingsException e)
 -      {
 -        String log_message = "Can not load signature settings. Cause:\n" + e.getMessage();
 -        logger_.error(log_message);
 -        throw new SignatureException(101, log_message, e);
 -      }
 -    }
 -  }
 -
 -  public SignatureObject doSign(String sigType, byte[] data, PdfASID algorithm) throws SignatureException
 -  {
 -    String sigmode = algorithm.getType();
 -
 -    String request_string = prepareSignRequestDetached(sigType, sigmode);
 -
 -    String sign_url = getSignURL(sigType);
 -
 -    String versionstring = algorithm.getVersion();
 -    logger_.info("versionstring=" + versionstring);
 -
 -    String mimetype = "";
 -    if (sigmode.equalsIgnoreCase(SignatorFactory.TYPE_TEXTUAL))
 -    {
 -      mimetype = "text/plain";
 -    }
 -    if (sigmode.equalsIgnoreCase(SignatorFactory.TYPE_BINARY))
 -    {
 -      mimetype = "application/pdf";
 -    }
 -
 -    Properties response_properties = sendRequest(sign_url, request_string, data, mimetype);
 -
 -    return analyzeSignResponse(response_properties, sigType);
 -  }
 -
 -  public SignatureResponse doVerify(byte[] data, SignatureObject sigObject) throws SignatureException
 -  {
 -    String sigmode = sigObject.getKZ().getType();
 -    String sigversion = sigObject.getKZ().getVersion();
 -
 -    // decide which template should be used to verify
 -    // use versionstring to decide if detached Signature
 -    String request_string = prepareVerifyRequestDetached(data, sigObject);
 -    // if (sigversion.equals(SignatorFactory.VERSION_1_1_0))
 -    // {
 -    // TODO support Sign v1.1.0 Remove base64 and write tempfile
 -    // String sigversion=SignatorFactory.TYPE_TEXTUAL;
 -
 -    String mimetype = "";
 -    if (sigmode.equalsIgnoreCase(SignatorFactory.TYPE_TEXTUAL))
 -    {
 -      mimetype = "text/plain";
 -    }
 -    if (sigmode.equalsIgnoreCase(SignatorFactory.TYPE_BINARY))
 -    {
 -      mimetype = "application/pdf";
 -    }
 -
 -    String verify_url = getVerifyURL(sigObject.getSignationType());
 -    Properties response_properties = sendRequest(verify_url, request_string, data, mimetype);
 -
 -    return analyzeVerifyResponse(response_properties);
 -  }
 -
 -  /**
 -   * This method parses the BKU-Response string. It separates the
 -   * SignatureValue, X509IssuerName, SigningTime, X509SerialNumber,
 -   * X509Certificate, CertDigest, DigestValue and the signation id-s. If the
 -   * X509Certificate is extracted it would be stored in the certificates
 -   * directory.
 -   * 
 -   * @param xmlResponse
 -   *          the response string from the BKU sign-request
 -   * @param sigObj
 -   *          the SignatureObject that should be filled
 -   * @throws SignatureException
 -   *           ErrorCode (303, 304)
 -   * @see SignatureObject
 -   * @see CodingHelper
 -   * @see X509Cert
 -   */
 -  private void parseCreateXMLResponse(Properties response_properties,
 -      SignatureObject sigObj) throws SignatureException
 -  {
 -    String xmlResponse = response_properties.getProperty("response_string");
 -
 -    Pattern sig_val_p_s = Pattern.compile("<[\\w]*:?SignatureValue>");
 -    Pattern sig_val_p_e = Pattern.compile("</[\\w]*:?SignatureValue>");
 -    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_e = Pattern.compile("</[\\w]*:?X509SerialNumber>");
 -    Pattern sig_cer_p_s = Pattern.compile("<[\\w]*:?X509Certificate>");
 -    Pattern sig_cer_p_e = Pattern.compile("</[\\w]*:?X509Certificate>");
 -
 -    Pattern sig_cer_d_p_s = Pattern.compile("<[\\w]*:?CertDigest>");
 -    Pattern sig_cer_d_p_e = Pattern.compile("</[\\w]*:?CertDigest>");
 -    Pattern dig_val_p_s = Pattern.compile("<[\\w]*:?DigestValue>");
 -    Pattern dig_val_p_e = Pattern.compile("</[\\w]*:?DigestValue>");
 -
 -    Matcher sig_val_m_s = sig_val_p_s.matcher(xmlResponse);
 -    Matcher sig_val_m_e = sig_val_p_e.matcher(xmlResponse);
 -    Matcher iss_nam_m_s = iss_nam_p_s.matcher(xmlResponse);
 -    Matcher iss_nam_m_e = iss_nam_p_e.matcher(xmlResponse);
 -    Matcher sig_tim_m_s = sig_tim_p_s.matcher(xmlResponse);
 -    Matcher sig_tim_m_e = sig_tim_p_e.matcher(xmlResponse);
 -    Matcher ser_num_m_s = ser_num_p_s.matcher(xmlResponse);
 -    Matcher ser_num_m_e = ser_num_p_e.matcher(xmlResponse);
 -    Matcher sig_cer_m_s = sig_cer_p_s.matcher(xmlResponse);
 -    Matcher sig_cer_m_e = sig_cer_p_e.matcher(xmlResponse);
 -
 -    Matcher sig_cer_d_m_s = sig_cer_d_p_s.matcher(xmlResponse);
 -    Matcher sig_cer_d_m_e = sig_cer_d_p_e.matcher(xmlResponse);
 -
 -    String sig_val = "";
 -    String iss_nam = "";
 -    String ser_num = "";
 -    String sig_tim = "";
 -    String sig_cer = "";
 -    String sig_dig = "";
 -
 -    // SignatureValue
 -    if (sig_val_m_s.find() && sig_val_m_e.find())
 -    {
 -      sig_val = xmlResponse.substring(sig_val_m_s.end(), sig_val_m_e.start());
 -      sig_val = sig_val.replaceAll("\\s", "");
 -      sigObj.setSignationValue(sig_val);
 -    }
 -    // X509IssuerName
 -    if (iss_nam_m_s.find() && iss_nam_m_e.find())
 -    {
 -      iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
 -      sigObj.setSignationIssuer(iss_nam);
 -    }
 -    // X509SerialNumber
 -    if (ser_num_m_s.find() && ser_num_m_e.find())
 -    {
 -      ser_num = xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start());
 -      sigObj.setSignationSerialNumber(ser_num);
 -    }
 -    // SigningTime
 -    if (sig_tim_m_s.find() && sig_tim_m_e.find())
 -    {
 -      sig_tim = xmlResponse.substring(sig_tim_m_s.end(), sig_tim_m_e.start());
 -      sigObj.setSignationDate(sig_tim);
 -    }
 -    // CertDigest
 -    if (sig_cer_d_m_s.find() && sig_cer_d_m_e.find())
 -    {
 -      String cert_digest = xmlResponse.substring(sig_cer_d_m_s.end(), sig_cer_d_m_e.start());
 -      Matcher dig_val_m_s = dig_val_p_s.matcher(cert_digest);
 -      Matcher dig_val_m_e = dig_val_p_e.matcher(cert_digest);
 -      if (dig_val_m_s.find() && dig_val_m_e.find())
 -      {
 -        sig_dig = cert_digest.substring(dig_val_m_s.end(), dig_val_m_e.start());
 -        sigObj.setX509CertificateDigest(sig_dig);
 -      }
 -    }
 -    // extract Subject Name from X509Certificate
 -    if (sig_cer_m_s.find() && sig_cer_m_e.find())
 -    {
 -      sig_cer = xmlResponse.substring(sig_cer_m_s.end(), sig_cer_m_e.start());
 -      sig_cer = sig_cer.replaceAll("\\s", "");
 -      sigObj.setX509Certificate(sig_cer);
 -      X509Cert cert = X509Cert.initByString(sig_cer);
 -      if (cert.isX509Cert())
 -      {
 -        sigObj.setX509Certificate(cert.getCertString());
 -        String serial_num = cert.getSerialNumber();
 -        String subject_name = cert.getSubjectName();
 -        if (!ser_num.equals(serial_num))
 -        {
 -          SignatureException se = new SignatureException(303, "Serialnumber of certificate and tag X509SerialNumber differs!");
 -          throw se;
 -        }
 -        sigObj.setSignationName(subject_name);
 -      }
 -    }
 -    // extract Signature Id's
 -    String[] ids = new String[5];
 -    ids[0] = extractId(xmlResponse, "signature-");
 -    ids[1] = extractId(xmlResponse, "signed-data-reference-");
 -    ids[2] = extractId(xmlResponse, "signed-data-object-");
 -    ids[3] = extractId(xmlResponse, "etsi-data-reference-");
 -    ids[4] = extractId(xmlResponse, "etsi-data-object-");
 -    String final_ids = formatSigIds(ids);
 -    sigObj.setSignationIDs(final_ids);
 -  }
 -
 -  protected String formatSigIds(String[] sigIds) throws SignatureException
 -  {
 -    // ids algorithm:
 -    String join = "";
 -    String base = null;
 -    for (int arr_idx = 0; arr_idx < sigIds.length; arr_idx++)
 -    {
 -      String id = sigIds[arr_idx];
 -      if (logger_.isDebugEnabled())
 -      {
 -        logger_.debug("Set BKU id:" + id);
 -      }
 -      int id_idx = id.lastIndexOf("-");
 -      if (arr_idx == 0)
 -      {
 -        base = id.substring(0, id_idx);
 -      }
 -      String cur_id = id.substring(id_idx + 1);
 -      if (cur_id.equalsIgnoreCase(""))
 -      {
 -        cur_id = "0";
 -      }
 -
 -      join += "-" + cur_id;
 -    }
 -    String ids = base + "@" + join.substring(1);
 -    String final_ids = getSigIDprefixValueFromProfile() + ids;
 -    return final_ids;
 -  }
 -
 -  protected String getSigIDprefixValueFromProfile()
 -  {
 -    String key = getType() + ".sign.SIG_IDprefix";
 -    String value = settings_.getValueFromKey(key);
 -    if (value == null)
 -    {
 -      value = "";
 -    }
 -    return value;
 -  }
 -
 -  /**
 -   * This emthod extracts id-values from a text. The id is given by the name.
 -   * 
 -   * @param text
 -   *          the id-value that should extract from
 -   * @param name
 -   *          the id-key
 -   * @return the value of the given key in the text
 -   */
 -  private String extractId(String text, String name)
 -  {
 -    String id = null;
 -    int start_idx = text.indexOf(name) + name.length();
 -    int end_idx = text.indexOf("\"", start_idx);
 -
 -    final int quot_end_idx = end_idx;
 -    final int squot_end_idx = text.indexOf("'", start_idx);
 -    end_idx = Math.min(quot_end_idx, squot_end_idx);
 -    id = text.substring(start_idx, end_idx);
 -    logger_.info("extract id:" + name + id);
 -    if (logger_.isDebugEnabled())
 -    {
 -      logger_.debug("extract id:" + name + id);
 -    }
 -    return id;
 -  }
 -
 -  public String getVerifyTemplate(byte [] data,
 -      SignatureObject sigObject) throws SignatureException
 -  {
 -    // TODO Template selection depending on Sigid
 -    try
 -    {
 -      if (data == null)
 -      {
 -        SignatureException se = new SignatureException(311, "Document can not be verified because data is empty.");
 -        throw se;
 -      }
 -      if (sigObject == null)
 -      {
 -        SignatureException se = new SignatureException(312, "Document can not be verified because no signature object are set.");
 -        throw se;
 -      }
 -
 -      String verify_template = "./templates/BKUVerifyTemplateDetached.xml";//getVerifyTemplateFileName(sigObject.getSignationType());
 -      String sigmode = sigObject.getKZ().getType();
 -
 -      String sig_prop_filename = "./templates/BKUVerifyTemplateSP_neueBKU_text.xml"; //getSigPropFileName(sigObject.getSignationType(), sigmode);
 -      
 -      if (sigObject.getKZ().getType().equals("binaer"))
 -      {
 -        sig_prop_filename = "./templates/BKUVerifyTemplateSP_neueBKU_bin.xml";
 -      }
 -      
 -      
 -      logger_.info(" verify_template= " + verify_template);
 -      logger_.info("sig_prop_filename = " + sig_prop_filename);
 -      String ids_string = sigObject.getSignationIds();
 -      logger_.info("ids_string = " + ids_string);
 -      String[] ids = SignatureObject.parseSigIds(ids_string);
 -
 -      // TODO hotfix
 -      boolean neue_bku = true;
 -      if (ids[5] != null)
 -      {
 -        // Hash has to be made over an other part than in previous versions.
 -        // i dont know how this is in newer versions than 2.7.1
 -        // id[5] of Signature of 2.7.1 signed Pdfs is "etsi-bka-1.0@"
 -        if (ids[5].equals("etsi-bka-1.0@"))
 -        {
 -          neue_bku = true;
 -        }
 -      }
 -      logger_.info("verify ids[5] = " + ids[5]);
 -      logger_.info("verify neue_bku = " + neue_bku);
 -      if (neue_bku)
 -      {
 -        // verify_template =
 -        // getConnectorValueFromProfile(sigObject.getSignationType(),
 -        // "bku.verify.template2");
 -        // //"./templates/BKUVerifyTemplateB64_neueBKU.xml";
 -        // sig_prop_filename =
 -        // getConnectorValueFromProfile(sigObject.getSignationType(),
 -        // "bku.verify.template2.SP");
 -        // //"./templates/BKUVerifyTemplateSP_neueBKU.xml";
 -      }
 -
 -      String ver_temp_str = FileHelper.readFromFile(SettingsReader.relocateFile(verify_template));
 -      String sig_prop_str = FileHelper.readFromFile(SettingsReader.relocateFile(sig_prop_filename));
 -      if (logger_.isDebugEnabled())
 -      {
 -        // logger_.debug(verify_template);
 -        logger_.debug(sig_prop_filename);
 -      }
 -
 -      String x509_cert_string = sigObject.getX509CertificateString();
 -      if (x509_cert_string == null)
 -      {
 -        SignatureException se = new SignatureException(313, "Document certificate is not defined.");
 -        throw se;
 -      }
 -      String cert_alg = settings_.getValueFromKey("cert.alg.ecdsa");
 -      X509Cert x509_cert = sigObject.getX509Cert();
 -      if (x509_cert.isRSA())
 -      {
 -        cert_alg = settings_.getValueFromKey("cert.alg.rsa");
 -      }
 -
 -      sig_prop_str = sig_prop_str.replaceFirst("SigningTimeReplace", sigObject.getSignationDate());
 -
 -      String issuer_name = sigObject.getSignationIssuer();
 -      // The issuer is already unicode, so it mustn't be encoded again.
 -      // byte[] issuer_name =
 -      // CodingHelper.encodeUTF8(sigObject.getSignationIssuer());
 -      // new String(issuer_name); // this would double encode the String, not to
 -      // mention the missing encoding
 -      sig_prop_str = sig_prop_str.replaceFirst("X509IssuerNameReplace", issuer_name);
 -
 -      sig_prop_str = sig_prop_str.replaceFirst("X509SerialNumberReplace", sigObject.getSignationSerialNumber());
 -      sig_prop_str = sig_prop_str.replaceFirst("DigestValueX509CertificateReplace", sigObject.getX509CertificateDigest());
 -      sig_prop_str = sig_prop_str.replaceFirst("SigIdReplace", ids[0]);
 -      sig_prop_str = sig_prop_str.replaceFirst("SigDataRefReplace", ids[1]);
 -
 -      ver_temp_str = ver_temp_str.replaceFirst("CertAlgReplace", cert_alg);
 -      ver_temp_str = ver_temp_str.replaceFirst("TemplateQualifyingPropertiesReplace", sig_prop_str);
 -      byte[] sig_prop_code = CodingHelper.buildDigest(sig_prop_str.getBytes("UTF-8"));
 -
 -      String sig_prop_hash = CodingHelper.encodeBase64(sig_prop_code);
 -      logger_.info("XXXXXSignedPropertiesoldbase64bku sig_prop_hash=" + sig_prop_hash);
 -      // TODO hotfix
 -      // if (neue_bku)
 -      // {
 -      // BKU Version 2.7.1 builds hash over other than previous
 -      final String ETSI_SIGNED_PROPERTIES_START_TAG = "<etsi:SignedProperties"; // xml
 -      // name
 -      // spaces
 -      // follow,
 -      // so
 -      // this
 -      // is
 -      // not
 -      // a
 -      // complete
 -      // tag...
 -      final String ETSI_SIGNED_PROPERTIES_END_TAG = "</etsi:SignedProperties>";
 -
 -      final int hash_start = sig_prop_str.indexOf(ETSI_SIGNED_PROPERTIES_START_TAG);
 -      assert hash_start >= 0;
 -      final int hash_end = sig_prop_str.indexOf(ETSI_SIGNED_PROPERTIES_END_TAG, hash_start) + ETSI_SIGNED_PROPERTIES_END_TAG.length();
 -      assert hash_end - ETSI_SIGNED_PROPERTIES_END_TAG.length() >= 0;
 -      assert hash_end > hash_start;
 -
 -      final String string_to_be_hashed = sig_prop_str.substring(hash_start, hash_end);
 -      logger_.info("etsi:SignedProperties string to be hashed: " + string_to_be_hashed);
 -
 -      final byte[] bytes_to_be_hashed = string_to_be_hashed.getBytes("UTF-8");
 -      sig_prop_code = CodingHelper.buildDigest(bytes_to_be_hashed);
 -      sig_prop_hash = CodingHelper.encodeBase64(sig_prop_code);
 -      logger_.info("XXXXXSignedPropertiesnewbase64bku sig_prop_hash=" + sig_prop_hash);
 -      // }
 -
 -      ver_temp_str = ver_temp_str.replaceFirst("DigestValueSignedPropertiesReplace", sig_prop_hash);
 -      // logger_.info("DIGEST:" + sig_prop_hash);
 -      if (logger_.isDebugEnabled())
 -      {
 -        logger_.debug("build digest from QualifyingProperties:start");
 -        // logger_.debug("DATA :" + sig_prop_str);
 -        logger_.debug("DIGEST:" + sig_prop_hash);
 -        logger_.debug("build digest from QualifyingProperties:end");
 -      }
 -
 -      ver_temp_str = ver_temp_str.replaceFirst("SignatureValueReplace", sigObject.getSignationValue());
 -      ver_temp_str = ver_temp_str.replaceFirst("X509CertificateReplace", x509_cert_string);
 -      byte[] data_value = data; // normalizedText.getBytes("UTF-8");
 -      byte[] data_value_hash = CodingHelper.buildDigest(data_value);
 -      String object_data_hash = CodingHelper.encodeBase64(data_value_hash);
 -      // logger_.info("XXXXXXxbase64 object_data_hash="+object_data_hash);
 -      // String object_data = new String(data_value);
 -      if (logger_.isDebugEnabled())
 -      {
 -        logger_.debug("build digest from data object:start");
 -        // logger_.debug("DATA :" + normalizedText);
 -        logger_.debug("DIGEST:" + object_data_hash);
 -        logger_.debug("build digest from data object:end");
 -      }
 -
 -      // String raw_b64 = CodingHelper.encodeUTF8AsBase64(normalizedText);
 -      String raw_b64 = CodingHelper.encodeBase64(data_value);
 -
 -      ver_temp_str = ver_temp_str.replaceFirst("Base64ContentReplace", raw_b64);
 -      ver_temp_str = ver_temp_str.replaceFirst("DigestValueSignedDataReplace", object_data_hash);
 -
 -      ver_temp_str = ver_temp_str.replaceAll("SigIdReplace", ids[0]);
 -      ver_temp_str = ver_temp_str.replaceAll("SigDataRefReplace", ids[1]);
 -      ver_temp_str = ver_temp_str.replaceAll("SigDataObjURIReplace", ids[2]);
 -      ver_temp_str = ver_temp_str.replaceAll("EtsiDataRefReplace", ids[3]);
 -      ver_temp_str = ver_temp_str.replaceAll("EtsiDataObjURIReplace", ids[4]);
 -      if (logger_.isDebugEnabled())
 -      {
 -        // logger_.debug("VERIFY REQUEST:" + ver_temp_str);
 -      }
 -
 -      return ver_temp_str;
 -    }
 -    catch (UnsupportedEncodingException e)
 -    {
 -      throw new SignatureException(310, e);
 -    }
 -  }
 -
 -  /**
 -   * This method parses the verify response string and return a
 -   * SignatureResponse object. The SignatureResponse object is filled out by the
 -   * response values from the BKU-response.
 -   * 
 -   * @param xmlResponse
 -   *          the response values from the BKU-verify request
 -   * @return SignatureResponse object
 -   * @see SignatureResponse
 -   */
 -  private SignatureResponse parseVerifyXMLResponse(String xmlResponse)
 -  {
 -    if (logger_.isInfoEnabled())
 -    {
 -      logger_.info("Try parsing the verify response");
 -    }
 -
 -    Pattern sub_nam_p_s = Pattern.compile("<dsig:X509SubjectName>");
 -    Pattern sub_nam_p_e = Pattern.compile("</dsig:X509SubjectName>");
 -    Pattern iss_nam_p_s = Pattern.compile("<dsig:X509IssuerName>");
 -    Pattern iss_nam_p_e = Pattern.compile("</dsig:X509IssuerName>");
 -    Pattern ser_num_p_s = Pattern.compile("<dsig:X509SerialNumber>");
 -    Pattern ser_num_p_e = Pattern.compile("</dsig:X509SerialNumber>");
 -
 -    Pattern sig_chk_p_s = Pattern.compile("<sl:SignatureCheck>");
 -    Pattern sig_chk_p_e = Pattern.compile("</sl:SignatureCheck>");
 -    Pattern man_chk_p_s = Pattern.compile("<sl:SignatureManifestCheck>");
 -    Pattern man_chk_p_e = Pattern.compile("</sl:SignatureManifestCheck>");
 -    Pattern cer_chk_p_s = Pattern.compile("<sl:CertificateCheck>");
 -    Pattern cer_chk_p_e = Pattern.compile("</sl:CertificateCheck>");
 -
 -    // [tknall] start qualified certificate
 -    Pattern cert_qualified_p = Pattern.compile("<sl:QualifiedCertificate/>");
 -    Matcher cert_qualified_m = cert_qualified_p.matcher(xmlResponse);
 -    // [tknall] stop qualified certificate
 -
 -    Pattern code_p_s = Pattern.compile("<sl:Code>");
 -    Pattern code_p_e = Pattern.compile("</sl:Code>");
 -    Pattern info_p_s = Pattern.compile("<sl:Info>");
 -    Pattern info_p_e = Pattern.compile("</sl:Info>");
 -
 -    Pattern cert_p_s = Pattern.compile("<dsig:X509Certificate>");
 -    Pattern cert_p_e = Pattern.compile("</dsig:X509Certificate>");
 -
 -    Matcher sub_nam_m_s = sub_nam_p_s.matcher(xmlResponse);
 -    Matcher sub_nam_m_e = sub_nam_p_e.matcher(xmlResponse);
 -    Matcher iss_nam_m_s = iss_nam_p_s.matcher(xmlResponse);
 -    Matcher iss_nam_m_e = iss_nam_p_e.matcher(xmlResponse);
 -    Matcher ser_num_m_s = ser_num_p_s.matcher(xmlResponse);
 -    Matcher ser_num_m_e = ser_num_p_e.matcher(xmlResponse);
 -
 -    Matcher sig_chk_m_s = sig_chk_p_s.matcher(xmlResponse);
 -    Matcher sig_chk_m_e = sig_chk_p_e.matcher(xmlResponse);
 -    Matcher man_chk_m_s = man_chk_p_s.matcher(xmlResponse);
 -    Matcher man_chk_m_e = man_chk_p_e.matcher(xmlResponse);
 -    Matcher cer_chk_m_s = cer_chk_p_s.matcher(xmlResponse);
 -    Matcher cer_chk_m_e = cer_chk_p_e.matcher(xmlResponse);
 -
 -    Matcher cert_m_s = cert_p_s.matcher(xmlResponse);
 -    Matcher cert_m_e = cert_p_e.matcher(xmlResponse);
 -
 -    SignatureResponse sig_res = new SignatureResponse();
 -
 -    // [tknall] start qualified certificate
 -    sig_res.setQualifiedCertificate(cert_qualified_m.find());
 -    // [tknall] stop qualified certificate
 -
 -    if (sub_nam_m_s.find() && sub_nam_m_e.find())
 -    {
 -      String sub_nam = xmlResponse.substring(sub_nam_m_s.end(), sub_nam_m_e.start());
 -      sig_res.setX509SubjectName(sub_nam);
 -    }
 -    if (iss_nam_m_s.find() && iss_nam_m_e.find())
 -    {
 -      String iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
 -      sig_res.setX509IssuerName(iss_nam);
 -    }
 -    if (ser_num_m_s.find() && ser_num_m_e.find())
 -    {
 -      String ser_num = xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start());
 -      sig_res.setX509SerialNumber(ser_num);
 -    }
 -    if (sig_chk_m_s.find() && sig_chk_m_e.find())
 -    {
 -      String sig_chk = xmlResponse.substring(sig_chk_m_s.end(), sig_chk_m_e.start());
 -      Matcher code_m_s = code_p_s.matcher(sig_chk);
 -      Matcher code_m_e = code_p_e.matcher(sig_chk);
 -      Matcher info_m_s = info_p_s.matcher(sig_chk);
 -      Matcher info_m_e = info_p_e.matcher(sig_chk);
 -      if (code_m_s.find() && code_m_e.find())
 -      {
 -        String code = sig_chk.substring(code_m_s.end(), code_m_e.start());
 -        sig_res.setSignatureCheckCode(code);
 -      }
 -      if (info_m_s.find() && info_m_e.find())
 -      {
 -        String info = sig_chk.substring(info_m_s.end(), info_m_e.start());
 -        sig_res.setSignatureCheckInfo(info);
 -      }
 -    }
 -    if (man_chk_m_s.find() && man_chk_m_e.find())
 -    {
 -      String man_chk = xmlResponse.substring(man_chk_m_s.end(), man_chk_m_e.start());
 -      Matcher code_m_s = code_p_s.matcher(man_chk);
 -      Matcher code_m_e = code_p_e.matcher(man_chk);
 -      Matcher info_m_s = info_p_s.matcher(man_chk);
 -      Matcher info_m_e = info_p_e.matcher(man_chk);
 -      if (code_m_s.find() && code_m_e.find())
 -      {
 -        String code = man_chk.substring(code_m_s.end(), code_m_e.start());
 -        sig_res.setSignatureManifestCheckCode(code);
 -      }
 -      if (info_m_s.find() && info_m_e.find())
 -      {
 -        String info = man_chk.substring(info_m_s.end(), info_m_e.start());
 -        sig_res.setSignatureManifestCheckInfo(info);
 -      }
 -    }
 -    if (cer_chk_m_s.find() && cer_chk_m_e.find())
 -    {
 -      String cer_chk = xmlResponse.substring(cer_chk_m_s.end(), cer_chk_m_e.start());
 -      Matcher code_m_s = code_p_s.matcher(cer_chk);
 -      Matcher code_m_e = code_p_e.matcher(cer_chk);
 -      Matcher info_m_s = info_p_s.matcher(cer_chk);
 -      Matcher info_m_e = info_p_e.matcher(cer_chk);
 -      if (code_m_s.find() && code_m_e.find())
 -      {
 -        String code = cer_chk.substring(code_m_s.end(), code_m_e.start());
 -        sig_res.setCertificateCheckCode(code);
 -      }
 -      if (info_m_s.find() && info_m_e.find())
 -      {
 -        String info = cer_chk.substring(info_m_s.end(), info_m_e.start());
 -        sig_res.setCertificateCheckInfo(info);
 -      }
 -    }
 -    if (cert_m_s.find() && cert_m_e.find())
 -    {
 -      String cert_string = xmlResponse.substring(cert_m_s.end(), cert_m_e.start());
 -
 -      X509Cert resp_cert = X509Cert.initByString(cert_string);
 -      sig_res.setCertificate(resp_cert);
 -    }
 -
 -    return sig_res;
 -  }
 -
 -  public String prepareSignRequestDetached(String signType, String sigmode) throws SignatureException
 -  {
 -    logger_.info("Call " + getType() + " connector sigmode=" + sigmode);
 -
 -    String keybox_identifier = getSignKeyboxIdentifier(signType);
 -    String sign_request_filename = getSignRequestTemplateFileName(signType, sigmode);
 -    String sign_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(sign_request_filename));
 -
 -    if (sign_req_str == null)
 -    {
 -      throw new SignatureException(300, "Can not read the create xml request template");
 -    }
 -    sign_req_str = sign_req_str.replaceFirst("KeyboxIdentifierReplace", keybox_identifier);
 -    return sign_req_str;
 -  }
 -
 -  // decides if moasigned or BKU
 -  public String prepareVerifyRequestDetached(byte[] data,
 -      SignatureObject sigObject) throws SignatureException
 -  {
 -    // get templates
 -    String verify_request = "./templates/BKUVerifyRequestDetached.xml"; //getVerifyRequestTemplateFileName(sigObject.getSignationType());
 -    String verify_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(verify_request));
 -    logger_.info("prepareVerifyRequest TemplateFile=" + verify_request);
 -    
 -    String verify_template_str = null;
 -    // TODO implement MOA
 -//    if (sigObject.isMOASigned())
 -//    {
 -//      MOAConnector moa_conn = new MOAConnector();
 -//      // get the MOA-template
 -//      verify_template_str = moa_conn.getVerifyTemplate(normalizedText, sigObject);
 -//    }
 -//    else
 -//    {
 -      // get the BKU-template
 -      verify_template_str = getVerifyTemplate(data, sigObject);
 +//  /**
 +//   * ConnectorInformation that identifies this Connector to the system.
 +//   * 
 +//   * @see at.knowcenter.wag.egov.egiz.sig.ConnectorFactory
 +//   * @see ConnectorInformation
 +//   */
 +//  public static final ConnectorInformation CONNECTOR_INFORMATION = new ConnectorInformation("bku", "BKU");
 +//
 +//  /**
 +//   * The SettingsReader instance
 +//   */
 +//  private SettingsReader settings_ = null;
 +//
 +//  /**
 +//   * The logger definition.
 +//   */
 +//  private static final Logger logger_ = ConfigLogger.getLogger(BKUConnector.class);
 +//
 +//  /**
 +//   * The empty constructor
 +//   */
 +//  public BKUConnector() throws SignatureException
 +//  {
 +//    loadSettings();
 +//  }
 +//
 +//  /**
 +//   * load the inital signature settings
 +//   * 
 +//   * @see SettingsReader
 +//   */
 +//  private void loadSettings() throws SignatureException
 +//  {
 +//    if (settings_ == null)
 +//    {
 +//      try
 +//      {
 +//        settings_ = SettingsReader.getInstance();
 +//      }
 +//      catch (SettingsException e)
 +//      {
 +//        String log_message = "Can not load signature settings. Cause:\n" + e.getMessage();
 +//        logger_.error(log_message);
 +//        throw new SignatureException(101, log_message, e);
 +//      }
  //    }
 -
 -    verify_req_str = verify_req_str.replaceFirst("XMLContentReplace", verify_template_str);
 -    if (logger_.isDebugEnabled())
 -    {
 -      logger_.debug("verify_req_str.xml : " + verify_req_str);
 -    }
 -
 -    return verify_req_str;
 -  }
 -
 -  /**
 -   * Sends the request to the given URL.
 -   * 
 -   * @param url
 -   *          The URL.
 -   * @param request_string
 -   *          The request string.
 -   * @return Returns the response string.
 -   * @throws SignatureException
 -   *           F.e.
 -   */
 -  protected Properties sendRequest(String url, String request_string) throws SignatureException
 -  {
 -    try
 -    {
 -      Properties response_properties = BKUPostConnection.doPostRequest(url, request_string);
 -      return response_properties;
 -    }
 -    catch (Exception e)
 -    {
 -      SignatureException se = new SignatureException(320, e);
 -      throw se;
 -    }
 -  }
 -
 -  /**
 -   * 
 -   * @param url
 -   *          The URL.
 -   * @param request_string
 -   *          The request string.
 -   * @return Returns the response string.
 -   * @throws SignatureException
 -   *           F.e.
 -   */
 -  protected Properties sendRequest(String url, String request_string,
 -      byte[] signdata, String mimetype) throws SignatureException
 -  {
 -    try
 -    {
 -      // Properties response_properties =
 -      // BKUPostConnection.doPostRequest272(url, request_string, signdata,
 -      // mimetype);
 -      Properties response_properties = BKUPostConnection.doPostRequest272(url, request_string, signdata, mimetype);
 -      return response_properties;
 -    }
 -    catch (Exception e)
 -    {
 -      SignatureException se = new SignatureException(320, e);
 -      throw se;
 -    }
 -  }
 -
 -  public SignatureObject analyzeSignResponse(Properties response_properties,
 -      String sigType) throws SignatureException
 -  {
 -    // String sign_request_filename = getSignRequestTemplateFileName(sigType);
 -
 -    // TODO hotfix
 -    String response_string = response_properties.getProperty("response_string");
 -
 -    // TODO debug
 -    try
 -    {
 -      FileOutputStream fos = new FileOutputStream("C:\\wprinz\\Filer\\egiz2\\sign_response.utf8.xml");
 -      OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
 -      osw.write(response_string);
 -      osw.close();
 -    }
 -    catch (Exception e)
 -    {
 -      logger_.error(e);
 -    }
 -
 -    SignatureObject sig_obj = new SignatureObject();
 -    sig_obj.setRawSignatureResponse(response_string);
 -    try
 -    {
 -      sig_obj.setSigType(sigType);
 -      sig_obj.initByType();
 -    }
 -    catch (SignatureTypesException e)
 -    {
 -      SignatureException se = new SignatureException(300, "Cannot init signature object with type:" + sigType, e);
 -      throw se;
 -    }
 -    if (logger_.isDebugEnabled())
 -    {
 -      logger_.debug("Signature Type is:" + sig_obj.getSignationType());
 -    }
 -
 -    if (!response_string.equals(""))
 -    {
 -      Pattern erc_p_s = Pattern.compile("<[\\w]*:?ErrorCode>");
 -      Pattern erc_p_e = Pattern.compile("</[\\w]*:?ErrorCode>");
 -      Matcher erc_m_s = erc_p_s.matcher(response_string);
 -      Matcher erc_m_e = erc_p_e.matcher(response_string);
 -      // System.err.println(response_string);
 -
 -      if (erc_m_s.find() && erc_m_e.find())
 -      {
 -        if (logger_.isEnabledFor(Level.ERROR))
 -        {
 -          // logger_.debug(sign_request_filename + "_response.xml : " +
 -          // response_string);
 -          logger_.error("BKU Error response: " + response_string);
 -        }
 -        Pattern erm_p_s = Pattern.compile("<[\\w]*:?Info>");
 -        Pattern erm_p_e = Pattern.compile("</[\\w]*:?Info>");
 -        Matcher erm_m_s = erm_p_s.matcher(response_string);
 -        Matcher erm_m_e = erm_p_e.matcher(response_string);
 -        SignatureException se = new SignatureException(0, "BKUSigExc");
 -        String error_code = response_string.substring(erc_m_s.end(), erc_m_e.start());
 -        se.setExternalErrorCode(error_code);
 -        if (erm_m_s.find() && erm_m_e.find())
 -        {
 -          String error_mess = response_string.substring(erm_m_s.end(), erm_m_e.start());
 -          se.setExternalErrorMessage(error_mess);
 -        }
 -        throw se;
 -      }
 -      else
 -      {
 -        if (logger_.isDebugEnabled())
 -        {
 -          logger_.debug("signature_response_string: " + response_string);
 -        }
 -        parseCreateXMLResponse(response_properties, sig_obj);
 -      }
 -    }
 -    sig_obj.setSigResponse(response_string);
 -    return sig_obj;
 -  }
 -
 -  public SignatureResponse analyzeVerifyResponse(Properties response_properties) throws SignatureException
 -  {
 -    String response_string = response_properties.getProperty("response_string");
 -
 -    if (!response_string.equals(""))
 -    {
 -      Pattern erc_p_s = Pattern.compile("<[\\w]*:?ErrorCode>");
 -      Pattern erc_p_e = Pattern.compile("</[\\w]*:?ErrorCode>");
 -      Matcher erc_m_s = erc_p_s.matcher(response_string);
 -      Matcher erc_m_e = erc_p_e.matcher(response_string);
 -
 -      if (erc_m_s.find() && erc_m_e.find())
 -      {
 -        if (logger_.isEnabledFor(Level.ERROR))
 -        {
 -          // logger_.debug(getType() + "_response.xml : " + response_string);
 -          logger_.error(getType() + "_response.xml : " + response_string);
 -        }
 -        Pattern erm_p_s = Pattern.compile("<[\\w]*:?Info>");
 -        Pattern erm_p_e = Pattern.compile("</[\\w]*:?Info>");
 -        Matcher erm_m_s = erm_p_s.matcher(response_string);
 -        Matcher erm_m_e = erm_p_e.matcher(response_string);
 -        SignatureException se = new SignatureException(0, "BKUSigExc");
 -        if (erc_m_s.find() && erc_m_e.find())
 -        {
 -          String error_code = response_string.substring(erc_m_s.end(), erc_m_e.start());
 -          se.setExternalErrorCode(error_code);
 -        }
 -        if (erm_m_s.find() && erm_m_e.find())
 -        {
 -          String error_mess = response_string.substring(erm_m_s.end(), erm_m_e.start());
 -          se.setExternalErrorMessage(error_mess);
 -        }
 -        throw se;
 -      }
 -      else
 -      {
 -        if (logger_.isDebugEnabled())
 -        {
 -          // logger_.debug(getType() + "_response.xml : " + response_string);
 -        }
 -        return parseVerifyXMLResponse(response_string);
 -      }
 -    }
 -    return null;
 -  }
 -
 -  protected String getConnectorValueFromProfile(String profile, String key)
 -  {
 -    String value = settings_.getValueFromKey("sig_obj." + profile + "." + key);
 -    if (value == null)
 -    {
 -      value = settings_.getValueFromKey(key);
 -    }
 -    return value;
 -  }
 -
 -  public String getSignURL(String profile)
 -  {
 -    final String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".url";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getSignRequestTemplateFileName(String profile, String sigmode)
 -  {
 -    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".request" + "." + sigmode;
 -    logger_.info("getSignRequestTemplateFileName: profile=" + profile + "" + " key=" + key);
 -    String filename = getConnectorValueFromProfile(profile, key);
 -    logger_.info("getSignRequestTemplateFileName filename=" + filename);
 -    return filename;// getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getSignKeyboxIdentifier(String profile)
 -  {
 -    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".KeyboxIdentifier";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  public String getVerifyURL(String profile)
 -  {
 -    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".url";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getVerifyRequestTemplateFileName(String profile)
 -  {
 -    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".request";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getVerifyTemplateFileName(String profile)
 -  {
 -    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".template";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getSigPropFileName(String profile, String sigmode)
 -  {
 -    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".template.SP." + sigmode;
 -    logger_.info("getSigPropFileName: profile=" + profile + "" + " key=" + key);
 -    String filename = getConnectorValueFromProfile(profile, key);
 -    logger_.info("getSigPropFileName filename=" + filename);
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  /**
 -   * Returns the type of this BKU-like connector.
 -   * 
 -   * <p>
 -   * All settings keys will be prefixed by this type. So to reuse the BKU
 -   * connector, a deriving class has to implement this method specifying an own
 -   * type.
 -   * </p>
 -   * 
 -   * @return Returns the type of this BKU-like connector.
 -   */
 -  protected String getType()
 -  {
 -    return CONNECTOR_INFORMATION.getIdentifier();
 -  }
 +//  }
 +//
 +//  public SignatureObject doSign(String sigType, byte[] data, PdfASID algorithm) throws SignatureException
 +//  {
 +//    String sigmode = algorithm.getType();
 +//
 +//    String request_string = prepareSignRequestDetached(sigType, sigmode);
 +//
 +//    String sign_url = getSignURL(sigType);
 +//
 +//    String versionstring = algorithm.getVersion();
 +//    logger_.info("versionstring=" + versionstring);
 +//
 +//    String mimetype = "";
 +//    if (sigmode.equalsIgnoreCase(SignatorFactory.TYPE_TEXTUAL))
 +//    {
 +//      mimetype = "text/plain";
 +//    }
 +//    if (sigmode.equalsIgnoreCase(SignatorFactory.TYPE_BINARY))
 +//    {
 +//      mimetype = "application/pdf";
 +//    }
 +//
 +//    Properties response_properties = sendRequest(sign_url, request_string, data, mimetype);
 +//
 +//    return analyzeSignResponse(response_properties, sigType);
 +//  }
 +//
 +//  public SignatureResponse doVerify(byte[] data, SignatureObject sigObject) throws SignatureException
 +//  {
 +//    String sigmode = sigObject.getKZ().getType();
 +//    String sigversion = sigObject.getKZ().getVersion();
 +//
 +//    // decide which template should be used to verify
 +//    // use versionstring to decide if detached Signature
 +//    String request_string = prepareVerifyRequestDetached(data, sigObject);
 +//    // if (sigversion.equals(SignatorFactory.VERSION_1_1_0))
 +//    // {
 +//    // TODO support Sign v1.1.0 Remove base64 and write tempfile
 +//    // String sigversion=SignatorFactory.TYPE_TEXTUAL;
 +//
 +//    String mimetype = "";
 +//    if (sigmode.equalsIgnoreCase(SignatorFactory.TYPE_TEXTUAL))
 +//    {
 +//      mimetype = "text/plain";
 +//    }
 +//    if (sigmode.equalsIgnoreCase(SignatorFactory.TYPE_BINARY))
 +//    {
 +//      mimetype = "application/pdf";
 +//    }
 +//
 +//    String verify_url = getVerifyURL(sigObject.getSignationType());
 +//    Properties response_properties = sendRequest(verify_url, request_string, data, mimetype);
 +//
 +//    return analyzeVerifyResponse(response_properties);
 +//  }
 +//
 +//  /**
 +//   * This method parses the BKU-Response string. It separates the
 +//   * SignatureValue, X509IssuerName, SigningTime, X509SerialNumber,
 +//   * X509Certificate, CertDigest, DigestValue and the signation id-s. If the
 +//   * X509Certificate is extracted it would be stored in the certificates
 +//   * directory.
 +//   * 
 +//   * @param xmlResponse
 +//   *          the response string from the BKU sign-request
 +//   * @param sigObj
 +//   *          the SignatureObject that should be filled
 +//   * @throws SignatureException
 +//   *           ErrorCode (303, 304)
 +//   * @see SignatureObject
 +//   * @see CodingHelper
 +//   * @see X509Cert
 +//   */
 +//  private void parseCreateXMLResponse(Properties response_properties,
 +//      SignatureObject sigObj) throws SignatureException
 +//  {
 +//    String xmlResponse = response_properties.getProperty("response_string");
 +//
 +//    Pattern sig_val_p_s = Pattern.compile("<[\\w]*:?SignatureValue>");
 +//    Pattern sig_val_p_e = Pattern.compile("</[\\w]*:?SignatureValue>");
 +//    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_e = Pattern.compile("</[\\w]*:?X509SerialNumber>");
 +//    Pattern sig_cer_p_s = Pattern.compile("<[\\w]*:?X509Certificate>");
 +//    Pattern sig_cer_p_e = Pattern.compile("</[\\w]*:?X509Certificate>");
 +//
 +//    Pattern sig_cer_d_p_s = Pattern.compile("<[\\w]*:?CertDigest>");
 +//    Pattern sig_cer_d_p_e = Pattern.compile("</[\\w]*:?CertDigest>");
 +//    Pattern dig_val_p_s = Pattern.compile("<[\\w]*:?DigestValue>");
 +//    Pattern dig_val_p_e = Pattern.compile("</[\\w]*:?DigestValue>");
 +//
 +//    Matcher sig_val_m_s = sig_val_p_s.matcher(xmlResponse);
 +//    Matcher sig_val_m_e = sig_val_p_e.matcher(xmlResponse);
 +//    Matcher iss_nam_m_s = iss_nam_p_s.matcher(xmlResponse);
 +//    Matcher iss_nam_m_e = iss_nam_p_e.matcher(xmlResponse);
 +//    Matcher sig_tim_m_s = sig_tim_p_s.matcher(xmlResponse);
 +//    Matcher sig_tim_m_e = sig_tim_p_e.matcher(xmlResponse);
 +//    Matcher ser_num_m_s = ser_num_p_s.matcher(xmlResponse);
 +//    Matcher ser_num_m_e = ser_num_p_e.matcher(xmlResponse);
 +//    Matcher sig_cer_m_s = sig_cer_p_s.matcher(xmlResponse);
 +//    Matcher sig_cer_m_e = sig_cer_p_e.matcher(xmlResponse);
 +//
 +//    Matcher sig_cer_d_m_s = sig_cer_d_p_s.matcher(xmlResponse);
 +//    Matcher sig_cer_d_m_e = sig_cer_d_p_e.matcher(xmlResponse);
 +//
 +//    String sig_val = "";
 +//    String iss_nam = "";
 +//    String ser_num = "";
 +//    String sig_tim = "";
 +//    String sig_cer = "";
 +//    String sig_dig = "";
 +//
 +//    // SignatureValue
 +//    if (sig_val_m_s.find() && sig_val_m_e.find())
 +//    {
 +//      sig_val = xmlResponse.substring(sig_val_m_s.end(), sig_val_m_e.start());
 +//      sig_val = sig_val.replaceAll("\\s", "");
 +//      sigObj.setSignationValue(sig_val);
 +//    }
 +//    // X509IssuerName
 +//    if (iss_nam_m_s.find() && iss_nam_m_e.find())
 +//    {
 +//      iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
 +//      sigObj.setSignationIssuer(iss_nam);
 +//    }
 +//    // X509SerialNumber
 +//    if (ser_num_m_s.find() && ser_num_m_e.find())
 +//    {
 +//      ser_num = xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start());
 +//      sigObj.setSignationSerialNumber(ser_num);
 +//    }
 +//    // SigningTime
 +//    if (sig_tim_m_s.find() && sig_tim_m_e.find())
 +//    {
 +//      sig_tim = xmlResponse.substring(sig_tim_m_s.end(), sig_tim_m_e.start());
 +//      sigObj.setSignationDate(sig_tim);
 +//    }
 +//    // CertDigest
 +//    if (sig_cer_d_m_s.find() && sig_cer_d_m_e.find())
 +//    {
 +//      String cert_digest = xmlResponse.substring(sig_cer_d_m_s.end(), sig_cer_d_m_e.start());
 +//      Matcher dig_val_m_s = dig_val_p_s.matcher(cert_digest);
 +//      Matcher dig_val_m_e = dig_val_p_e.matcher(cert_digest);
 +//      if (dig_val_m_s.find() && dig_val_m_e.find())
 +//      {
 +//        sig_dig = cert_digest.substring(dig_val_m_s.end(), dig_val_m_e.start());
 +//        sigObj.setX509CertificateDigest(sig_dig);
 +//      }
 +//    }
 +//    // extract Subject Name from X509Certificate
 +//    if (sig_cer_m_s.find() && sig_cer_m_e.find())
 +//    {
 +//      sig_cer = xmlResponse.substring(sig_cer_m_s.end(), sig_cer_m_e.start());
 +//      sig_cer = sig_cer.replaceAll("\\s", "");
 +//      sigObj.setX509Certificate(sig_cer);
 +//      X509Cert cert = X509Cert.initByString(sig_cer);
 +//      if (cert.isX509Cert())
 +//      {
 +//        sigObj.setX509Certificate(cert.getCertString());
 +//        String serial_num = cert.getSerialNumber();
 +//        String subject_name = cert.getSubjectName();
 +//        if (!ser_num.equals(serial_num))
 +//        {
 +//          SignatureException se = new SignatureException(303, "Serialnumber of certificate and tag X509SerialNumber differs!");
 +//          throw se;
 +//        }
 +//        sigObj.setSignationName(subject_name);
 +//      }
 +//    }
 +//    // extract Signature Id's
 +//    String[] ids = new String[5];
 +//    ids[0] = extractId(xmlResponse, "signature-");
 +//    ids[1] = extractId(xmlResponse, "signed-data-reference-");
 +//    ids[2] = extractId(xmlResponse, "signed-data-object-");
 +//    ids[3] = extractId(xmlResponse, "etsi-data-reference-");
 +//    ids[4] = extractId(xmlResponse, "etsi-data-object-");
 +//    String final_ids = formatSigIds(ids);
 +//    sigObj.setSignationIDs(final_ids);
 +//  }
 +//
 +//  protected String formatSigIds(String[] sigIds) throws SignatureException
 +//  {
 +//    // ids algorithm:
 +//    String join = "";
 +//    String base = null;
 +//    for (int arr_idx = 0; arr_idx < sigIds.length; arr_idx++)
 +//    {
 +//      String id = sigIds[arr_idx];
 +//      if (logger_.isDebugEnabled())
 +//      {
 +//        logger_.debug("Set BKU id:" + id);
 +//      }
 +//      int id_idx = id.lastIndexOf("-");
 +//      if (arr_idx == 0)
 +//      {
 +//        base = id.substring(0, id_idx);
 +//      }
 +//      String cur_id = id.substring(id_idx + 1);
 +//      if (cur_id.equalsIgnoreCase(""))
 +//      {
 +//        cur_id = "0";
 +//      }
 +//
 +//      join += "-" + cur_id;
 +//    }
 +//    String ids = base + "@" + join.substring(1);
 +//    String final_ids = getSigIDprefixValueFromProfile() + ids;
 +//    return final_ids;
 +//  }
 +//
 +//  protected String getSigIDprefixValueFromProfile()
 +//  {
 +//    String key = getType() + ".sign.SIG_IDprefix";
 +//    String value = settings_.getValueFromKey(key);
 +//    if (value == null)
 +//    {
 +//      value = "";
 +//    }
 +//    return value;
 +//  }
 +//
 +//  /**
 +//   * This emthod extracts id-values from a text. The id is given by the name.
 +//   * 
 +//   * @param text
 +//   *          the id-value that should extract from
 +//   * @param name
 +//   *          the id-key
 +//   * @return the value of the given key in the text
 +//   */
 +//  private String extractId(String text, String name)
 +//  {
 +//    String id = null;
 +//    int start_idx = text.indexOf(name) + name.length();
 +//    int end_idx = text.indexOf("\"", start_idx);
 +//
 +//    final int quot_end_idx = end_idx;
 +//    final int squot_end_idx = text.indexOf("'", start_idx);
 +//    end_idx = Math.min(quot_end_idx, squot_end_idx);
 +//    id = text.substring(start_idx, end_idx);
 +//    logger_.info("extract id:" + name + id);
 +//    if (logger_.isDebugEnabled())
 +//    {
 +//      logger_.debug("extract id:" + name + id);
 +//    }
 +//    return id;
 +//  }
 +//
 +//  public String getVerifyTemplate(byte [] data,
 +//      SignatureObject sigObject) throws SignatureException
 +//  {
 +//    // TODO Template selection depending on Sigid
 +//    try
 +//    {
 +//      if (data == null)
 +//      {
 +//        SignatureException se = new SignatureException(311, "Document can not be verified because data is empty.");
 +//        throw se;
 +//      }
 +//      if (sigObject == null)
 +//      {
 +//        SignatureException se = new SignatureException(312, "Document can not be verified because no signature object are set.");
 +//        throw se;
 +//      }
 +//
 +//      String verify_template = "./templates/BKUVerifyTemplateDetached.xml";//getVerifyTemplateFileName(sigObject.getSignationType());
 +//      String sigmode = sigObject.getKZ().getType();
 +//
 +//      String sig_prop_filename = "./templates/BKUVerifyTemplateSP_neueBKU_text.xml"; //getSigPropFileName(sigObject.getSignationType(), sigmode);
 +//      
 +//      if (sigObject.getKZ().getType().equals("binaer"))
 +//      {
 +//        sig_prop_filename = "./templates/BKUVerifyTemplateSP_neueBKU_bin.xml";
 +//      }
 +//      
 +//      
 +//      logger_.info(" verify_template= " + verify_template);
 +//      logger_.info("sig_prop_filename = " + sig_prop_filename);
 +//      String ids_string = sigObject.getSignationIds();
 +//      logger_.info("ids_string = " + ids_string);
 +//      String[] ids = SignatureObject.parseSigIds(ids_string);
 +//
 +//      // TODO hotfix
 +//      boolean neue_bku = true;
 +//      if (ids[5] != null)
 +//      {
 +//        // Hash has to be made over an other part than in previous versions.
 +//        // i dont know how this is in newer versions than 2.7.1
 +//        // id[5] of Signature of 2.7.1 signed Pdfs is "etsi-bka-1.0@"
 +//        if (ids[5].equals("etsi-bka-1.0@"))
 +//        {
 +//          neue_bku = true;
 +//        }
 +//      }
 +//      logger_.info("verify ids[5] = " + ids[5]);
 +//      logger_.info("verify neue_bku = " + neue_bku);
 +//      if (neue_bku)
 +//      {
 +//        // verify_template =
 +//        // getConnectorValueFromProfile(sigObject.getSignationType(),
 +//        // "bku.verify.template2");
 +//        // //"./templates/BKUVerifyTemplateB64_neueBKU.xml";
 +//        // sig_prop_filename =
 +//        // getConnectorValueFromProfile(sigObject.getSignationType(),
 +//        // "bku.verify.template2.SP");
 +//        // //"./templates/BKUVerifyTemplateSP_neueBKU.xml";
 +//      }
 +//
 +//      String ver_temp_str = FileHelper.readFromFile(SettingsReader.relocateFile(verify_template));
 +//      String sig_prop_str = FileHelper.readFromFile(SettingsReader.relocateFile(sig_prop_filename));
 +//      if (logger_.isDebugEnabled())
 +//      {
 +//        // logger_.debug(verify_template);
 +//        logger_.debug(sig_prop_filename);
 +//      }
 +//
 +//      String x509_cert_string = sigObject.getX509CertificateString();
 +//      if (x509_cert_string == null)
 +//      {
 +//        SignatureException se = new SignatureException(313, "Document certificate is not defined.");
 +//        throw se;
 +//      }
 +//      String cert_alg = settings_.getValueFromKey("cert.alg.ecdsa");
 +//      X509Cert x509_cert = sigObject.getX509Cert();
 +//      if (x509_cert.isRSA())
 +//      {
 +//        cert_alg = settings_.getValueFromKey("cert.alg.rsa");
 +//      }
 +//
 +//      sig_prop_str = sig_prop_str.replaceFirst("SigningTimeReplace", sigObject.getSignationDate());
 +//
 +//      String issuer_name = sigObject.getSignationIssuer();
 +//      // The issuer is already unicode, so it mustn't be encoded again.
 +//      // byte[] issuer_name =
 +//      // CodingHelper.encodeUTF8(sigObject.getSignationIssuer());
 +//      // new String(issuer_name); // this would double encode the String, not to
 +//      // mention the missing encoding
 +//      sig_prop_str = sig_prop_str.replaceFirst("X509IssuerNameReplace", issuer_name);
 +//
 +//      sig_prop_str = sig_prop_str.replaceFirst("X509SerialNumberReplace", sigObject.getSignationSerialNumber());
 +//      sig_prop_str = sig_prop_str.replaceFirst("DigestValueX509CertificateReplace", sigObject.getX509CertificateDigest());
 +//      sig_prop_str = sig_prop_str.replaceFirst("SigIdReplace", ids[0]);
 +//      sig_prop_str = sig_prop_str.replaceFirst("SigDataRefReplace", ids[1]);
 +//
 +//      ver_temp_str = ver_temp_str.replaceFirst("CertAlgReplace", cert_alg);
 +//      ver_temp_str = ver_temp_str.replaceFirst("TemplateQualifyingPropertiesReplace", sig_prop_str);
 +//      byte[] sig_prop_code = CodingHelper.buildDigest(sig_prop_str.getBytes("UTF-8"));
 +//
 +//      String sig_prop_hash = CodingHelper.encodeBase64(sig_prop_code);
 +//      logger_.info("XXXXXSignedPropertiesoldbase64bku sig_prop_hash=" + sig_prop_hash);
 +//      // TODO hotfix
 +//      // if (neue_bku)
 +//      // {
 +//      // BKU Version 2.7.1 builds hash over other than previous
 +//      final String ETSI_SIGNED_PROPERTIES_START_TAG = "<etsi:SignedProperties"; // xml
 +//      // name
 +//      // spaces
 +//      // follow,
 +//      // so
 +//      // this
 +//      // is
 +//      // not
 +//      // a
 +//      // complete
 +//      // tag...
 +//      final String ETSI_SIGNED_PROPERTIES_END_TAG = "</etsi:SignedProperties>";
 +//
 +//      final int hash_start = sig_prop_str.indexOf(ETSI_SIGNED_PROPERTIES_START_TAG);
 +//      assert hash_start >= 0;
 +//      final int hash_end = sig_prop_str.indexOf(ETSI_SIGNED_PROPERTIES_END_TAG, hash_start) + ETSI_SIGNED_PROPERTIES_END_TAG.length();
 +//      assert hash_end - ETSI_SIGNED_PROPERTIES_END_TAG.length() >= 0;
 +//      assert hash_end > hash_start;
 +//
 +//      final String string_to_be_hashed = sig_prop_str.substring(hash_start, hash_end);
 +//      logger_.info("etsi:SignedProperties string to be hashed: " + string_to_be_hashed);
 +//
 +//      final byte[] bytes_to_be_hashed = string_to_be_hashed.getBytes("UTF-8");
 +//      sig_prop_code = CodingHelper.buildDigest(bytes_to_be_hashed);
 +//      sig_prop_hash = CodingHelper.encodeBase64(sig_prop_code);
 +//      logger_.info("XXXXXSignedPropertiesnewbase64bku sig_prop_hash=" + sig_prop_hash);
 +//      // }
 +//
 +//      ver_temp_str = ver_temp_str.replaceFirst("DigestValueSignedPropertiesReplace", sig_prop_hash);
 +//      // logger_.info("DIGEST:" + sig_prop_hash);
 +//      if (logger_.isDebugEnabled())
 +//      {
 +//        logger_.debug("build digest from QualifyingProperties:start");
 +//        // logger_.debug("DATA :" + sig_prop_str);
 +//        logger_.debug("DIGEST:" + sig_prop_hash);
 +//        logger_.debug("build digest from QualifyingProperties:end");
 +//      }
 +//
 +//      ver_temp_str = ver_temp_str.replaceFirst("SignatureValueReplace", sigObject.getSignationValue());
 +//      ver_temp_str = ver_temp_str.replaceFirst("X509CertificateReplace", x509_cert_string);
 +//      byte[] data_value = data; // normalizedText.getBytes("UTF-8");
 +//      byte[] data_value_hash = CodingHelper.buildDigest(data_value);
 +//      String object_data_hash = CodingHelper.encodeBase64(data_value_hash);
 +//      // logger_.info("XXXXXXxbase64 object_data_hash="+object_data_hash);
 +//      // String object_data = new String(data_value);
 +//      if (logger_.isDebugEnabled())
 +//      {
 +//        logger_.debug("build digest from data object:start");
 +//        // logger_.debug("DATA :" + normalizedText);
 +//        logger_.debug("DIGEST:" + object_data_hash);
 +//        logger_.debug("build digest from data object:end");
 +//      }
 +//
 +//      // String raw_b64 = CodingHelper.encodeUTF8AsBase64(normalizedText);
 +//      String raw_b64 = CodingHelper.encodeBase64(data_value);
 +//
 +//      ver_temp_str = ver_temp_str.replaceFirst("Base64ContentReplace", raw_b64);
 +//      ver_temp_str = ver_temp_str.replaceFirst("DigestValueSignedDataReplace", object_data_hash);
 +//
 +//      ver_temp_str = ver_temp_str.replaceAll("SigIdReplace", ids[0]);
 +//      ver_temp_str = ver_temp_str.replaceAll("SigDataRefReplace", ids[1]);
 +//      ver_temp_str = ver_temp_str.replaceAll("SigDataObjURIReplace", ids[2]);
 +//      ver_temp_str = ver_temp_str.replaceAll("EtsiDataRefReplace", ids[3]);
 +//      ver_temp_str = ver_temp_str.replaceAll("EtsiDataObjURIReplace", ids[4]);
 +//      if (logger_.isDebugEnabled())
 +//      {
 +//        // logger_.debug("VERIFY REQUEST:" + ver_temp_str);
 +//      }
 +//
 +//      return ver_temp_str;
 +//    }
 +//    catch (UnsupportedEncodingException e)
 +//    {
 +//      throw new SignatureException(310, e);
 +//    }
 +//  }
 +//
 +//  /**
 +//   * This method parses the verify response string and return a
 +//   * SignatureResponse object. The SignatureResponse object is filled out by the
 +//   * response values from the BKU-response.
 +//   * 
 +//   * @param xmlResponse
 +//   *          the response values from the BKU-verify request
 +//   * @return SignatureResponse object
 +//   * @see SignatureResponse
 +//   */
 +//  private SignatureResponse parseVerifyXMLResponse(String xmlResponse)
 +//  {
 +//    if (logger_.isInfoEnabled())
 +//    {
 +//      logger_.info("Try parsing the verify response");
 +//    }
 +//
 +//    Pattern sub_nam_p_s = Pattern.compile("<dsig:X509SubjectName>");
 +//    Pattern sub_nam_p_e = Pattern.compile("</dsig:X509SubjectName>");
 +//    Pattern iss_nam_p_s = Pattern.compile("<dsig:X509IssuerName>");
 +//    Pattern iss_nam_p_e = Pattern.compile("</dsig:X509IssuerName>");
 +//    Pattern ser_num_p_s = Pattern.compile("<dsig:X509SerialNumber>");
 +//    Pattern ser_num_p_e = Pattern.compile("</dsig:X509SerialNumber>");
 +//
 +//    Pattern sig_chk_p_s = Pattern.compile("<sl:SignatureCheck>");
 +//    Pattern sig_chk_p_e = Pattern.compile("</sl:SignatureCheck>");
 +//    Pattern man_chk_p_s = Pattern.compile("<sl:SignatureManifestCheck>");
 +//    Pattern man_chk_p_e = Pattern.compile("</sl:SignatureManifestCheck>");
 +//    Pattern cer_chk_p_s = Pattern.compile("<sl:CertificateCheck>");
 +//    Pattern cer_chk_p_e = Pattern.compile("</sl:CertificateCheck>");
 +//
 +//    // [tknall] start qualified certificate
 +//    Pattern cert_qualified_p = Pattern.compile("<sl:QualifiedCertificate/>");
 +//    Matcher cert_qualified_m = cert_qualified_p.matcher(xmlResponse);
 +//    // [tknall] stop qualified certificate
 +//
 +//    Pattern code_p_s = Pattern.compile("<sl:Code>");
 +//    Pattern code_p_e = Pattern.compile("</sl:Code>");
 +//    Pattern info_p_s = Pattern.compile("<sl:Info>");
 +//    Pattern info_p_e = Pattern.compile("</sl:Info>");
 +//
 +//    Pattern cert_p_s = Pattern.compile("<dsig:X509Certificate>");
 +//    Pattern cert_p_e = Pattern.compile("</dsig:X509Certificate>");
 +//
 +//    Matcher sub_nam_m_s = sub_nam_p_s.matcher(xmlResponse);
 +//    Matcher sub_nam_m_e = sub_nam_p_e.matcher(xmlResponse);
 +//    Matcher iss_nam_m_s = iss_nam_p_s.matcher(xmlResponse);
 +//    Matcher iss_nam_m_e = iss_nam_p_e.matcher(xmlResponse);
 +//    Matcher ser_num_m_s = ser_num_p_s.matcher(xmlResponse);
 +//    Matcher ser_num_m_e = ser_num_p_e.matcher(xmlResponse);
 +//
 +//    Matcher sig_chk_m_s = sig_chk_p_s.matcher(xmlResponse);
 +//    Matcher sig_chk_m_e = sig_chk_p_e.matcher(xmlResponse);
 +//    Matcher man_chk_m_s = man_chk_p_s.matcher(xmlResponse);
 +//    Matcher man_chk_m_e = man_chk_p_e.matcher(xmlResponse);
 +//    Matcher cer_chk_m_s = cer_chk_p_s.matcher(xmlResponse);
 +//    Matcher cer_chk_m_e = cer_chk_p_e.matcher(xmlResponse);
 +//
 +//    Matcher cert_m_s = cert_p_s.matcher(xmlResponse);
 +//    Matcher cert_m_e = cert_p_e.matcher(xmlResponse);
 +//
 +//    SignatureResponse sig_res = new SignatureResponse();
 +//
 +//    // [tknall] start qualified certificate
 +//    sig_res.setQualifiedCertificate(cert_qualified_m.find());
 +//    // [tknall] stop qualified certificate
 +//
 +//    if (sub_nam_m_s.find() && sub_nam_m_e.find())
 +//    {
 +//      String sub_nam = xmlResponse.substring(sub_nam_m_s.end(), sub_nam_m_e.start());
 +//      sig_res.setX509SubjectName(sub_nam);
 +//    }
 +//    if (iss_nam_m_s.find() && iss_nam_m_e.find())
 +//    {
 +//      String iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
 +//      sig_res.setX509IssuerName(iss_nam);
 +//    }
 +//    if (ser_num_m_s.find() && ser_num_m_e.find())
 +//    {
 +//      String ser_num = xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start());
 +//      sig_res.setX509SerialNumber(ser_num);
 +//    }
 +//    if (sig_chk_m_s.find() && sig_chk_m_e.find())
 +//    {
 +//      String sig_chk = xmlResponse.substring(sig_chk_m_s.end(), sig_chk_m_e.start());
 +//      Matcher code_m_s = code_p_s.matcher(sig_chk);
 +//      Matcher code_m_e = code_p_e.matcher(sig_chk);
 +//      Matcher info_m_s = info_p_s.matcher(sig_chk);
 +//      Matcher info_m_e = info_p_e.matcher(sig_chk);
 +//      if (code_m_s.find() && code_m_e.find())
 +//      {
 +//        String code = sig_chk.substring(code_m_s.end(), code_m_e.start());
 +//        sig_res.setSignatureCheckCode(code);
 +//      }
 +//      if (info_m_s.find() && info_m_e.find())
 +//      {
 +//        String info = sig_chk.substring(info_m_s.end(), info_m_e.start());
 +//        sig_res.setSignatureCheckInfo(info);
 +//      }
 +//    }
 +//    if (man_chk_m_s.find() && man_chk_m_e.find())
 +//    {
 +//      String man_chk = xmlResponse.substring(man_chk_m_s.end(), man_chk_m_e.start());
 +//      Matcher code_m_s = code_p_s.matcher(man_chk);
 +//      Matcher code_m_e = code_p_e.matcher(man_chk);
 +//      Matcher info_m_s = info_p_s.matcher(man_chk);
 +//      Matcher info_m_e = info_p_e.matcher(man_chk);
 +//      if (code_m_s.find() && code_m_e.find())
 +//      {
 +//        String code = man_chk.substring(code_m_s.end(), code_m_e.start());
 +//        sig_res.setSignatureManifestCheckCode(code);
 +//      }
 +//      if (info_m_s.find() && info_m_e.find())
 +//      {
 +//        String info = man_chk.substring(info_m_s.end(), info_m_e.start());
 +//        sig_res.setSignatureManifestCheckInfo(info);
 +//      }
 +//    }
 +//    if (cer_chk_m_s.find() && cer_chk_m_e.find())
 +//    {
 +//      String cer_chk = xmlResponse.substring(cer_chk_m_s.end(), cer_chk_m_e.start());
 +//      Matcher code_m_s = code_p_s.matcher(cer_chk);
 +//      Matcher code_m_e = code_p_e.matcher(cer_chk);
 +//      Matcher info_m_s = info_p_s.matcher(cer_chk);
 +//      Matcher info_m_e = info_p_e.matcher(cer_chk);
 +//      if (code_m_s.find() && code_m_e.find())
 +//      {
 +//        String code = cer_chk.substring(code_m_s.end(), code_m_e.start());
 +//        sig_res.setCertificateCheckCode(code);
 +//      }
 +//      if (info_m_s.find() && info_m_e.find())
 +//      {
 +//        String info = cer_chk.substring(info_m_s.end(), info_m_e.start());
 +//        sig_res.setCertificateCheckInfo(info);
 +//      }
 +//    }
 +//    if (cert_m_s.find() && cert_m_e.find())
 +//    {
 +//      String cert_string = xmlResponse.substring(cert_m_s.end(), cert_m_e.start());
 +//
 +//      X509Cert resp_cert = X509Cert.initByString(cert_string);
 +//      sig_res.setCertificate(resp_cert);
 +//    }
 +//
 +//    return sig_res;
 +//  }
 +//
 +//  public String prepareSignRequestDetached(String signType, String sigmode) throws SignatureException
 +//  {
 +//    logger_.info("Call " + getType() + " connector sigmode=" + sigmode);
 +//
 +//    String keybox_identifier = getSignKeyboxIdentifier(signType);
 +//    String sign_request_filename = getSignRequestTemplateFileName(signType, sigmode);
 +//    String sign_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(sign_request_filename));
 +//
 +//    if (sign_req_str == null)
 +//    {
 +//      throw new SignatureException(300, "Can not read the create xml request template");
 +//    }
 +//    sign_req_str = sign_req_str.replaceFirst("KeyboxIdentifierReplace", keybox_identifier);
 +//    return sign_req_str;
 +//  }
 +//
 +//  // decides if moasigned or BKU
 +//  public String prepareVerifyRequestDetached(byte[] data,
 +//      SignatureObject sigObject) throws SignatureException
 +//  {
 +//    // get templates
 +//    String verify_request = "./templates/BKUVerifyRequestDetached.xml"; //getVerifyRequestTemplateFileName(sigObject.getSignationType());
 +//    String verify_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(verify_request));
 +//    logger_.info("prepareVerifyRequest TemplateFile=" + verify_request);
 +//    
 +//    String verify_template_str = null;
 +//    // TODO implement MOA
 +////    if (sigObject.isMOASigned())
 +////    {
 +////      MOAConnector moa_conn = new MOAConnector();
 +////      // get the MOA-template
 +////      verify_template_str = moa_conn.getVerifyTemplate(normalizedText, sigObject);
 +////    }
 +////    else
 +////    {
 +//      // get the BKU-template
 +//      verify_template_str = getVerifyTemplate(data, sigObject);
 +////    }
 +//
 +//    verify_req_str = verify_req_str.replaceFirst("XMLContentReplace", verify_template_str);
 +//    if (logger_.isDebugEnabled())
 +//    {
 +//      logger_.debug("verify_req_str.xml : " + verify_req_str);
 +//    }
 +//
 +//    return verify_req_str;
 +//  }
 +//
 +//  /**
 +//   * Sends the request to the given URL.
 +//   * 
 +//   * @param url
 +//   *          The URL.
 +//   * @param request_string
 +//   *          The request string.
 +//   * @return Returns the response string.
 +//   * @throws SignatureException
 +//   *           F.e.
 +//   */
 +//  protected Properties sendRequest(String url, String request_string) throws SignatureException
 +//  {
 +//    try
 +//    {
 +//      Properties response_properties = BKUPostConnection.doPostRequest(url, request_string);
 +//      return response_properties;
 +//    }
 +//    catch (Exception e)
 +//    {
 +//      SignatureException se = new SignatureException(320, e);
 +//      throw se;
 +//    }
 +//  }
 +//
 +//  /**
 +//   * 
 +//   * @param url
 +//   *          The URL.
 +//   * @param request_string
 +//   *          The request string.
 +//   * @return Returns the response string.
 +//   * @throws SignatureException
 +//   *           F.e.
 +//   */
 +//  protected Properties sendRequest(String url, String request_string,
 +//      byte[] signdata, String mimetype) throws SignatureException
 +//  {
 +//    try
 +//    {
 +//      // Properties response_properties =
 +//      // BKUPostConnection.doPostRequest272(url, request_string, signdata,
 +//      // mimetype);
 +//      Properties response_properties = BKUPostConnection.doPostRequest272(url, request_string, signdata, mimetype);
 +//      return response_properties;
 +//    }
 +//    catch (Exception e)
 +//    {
 +//      SignatureException se = new SignatureException(320, e);
 +//      throw se;
 +//    }
 +//  }
 +//
 +//  public SignatureObject analyzeSignResponse(Properties response_properties,
 +//      String sigType) throws SignatureException
 +//  {
 +//    // String sign_request_filename = getSignRequestTemplateFileName(sigType);
 +//
 +//    // TODO hotfix
 +//    String response_string = response_properties.getProperty("response_string");
 +//
 +//    // TODO debug
 +//    try
 +//    {
 +//      FileOutputStream fos = new FileOutputStream("C:\\wprinz\\Filer\\egiz2\\sign_response.utf8.xml");
 +//      OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
 +//      osw.write(response_string);
 +//      osw.close();
 +//    }
 +//    catch (Exception e)
 +//    {
 +//      logger_.error(e);
 +//    }
 +//
 +//    SignatureObject sig_obj = new SignatureObject();
 +//    sig_obj.setRawSignatureResponse(response_string);
 +//    try
 +//    {
 +//      sig_obj.setSigType(sigType);
 +//      sig_obj.initByType();
 +//    }
 +//    catch (SignatureTypesException e)
 +//    {
 +//      SignatureException se = new SignatureException(300, "Cannot init signature object with type:" + sigType, e);
 +//      throw se;
 +//    }
 +//    if (logger_.isDebugEnabled())
 +//    {
 +//      logger_.debug("Signature Type is:" + sig_obj.getSignationType());
 +//    }
 +//
 +//    if (!response_string.equals(""))
 +//    {
 +//      Pattern erc_p_s = Pattern.compile("<[\\w]*:?ErrorCode>");
 +//      Pattern erc_p_e = Pattern.compile("</[\\w]*:?ErrorCode>");
 +//      Matcher erc_m_s = erc_p_s.matcher(response_string);
 +//      Matcher erc_m_e = erc_p_e.matcher(response_string);
 +//      // System.err.println(response_string);
 +//
 +//      if (erc_m_s.find() && erc_m_e.find())
 +//      {
 +//        if (logger_.isEnabledFor(Level.ERROR))
 +//        {
 +//          // logger_.debug(sign_request_filename + "_response.xml : " +
 +//          // response_string);
 +//          logger_.error("BKU Error response: " + response_string);
 +//        }
 +//        Pattern erm_p_s = Pattern.compile("<[\\w]*:?Info>");
 +//        Pattern erm_p_e = Pattern.compile("</[\\w]*:?Info>");
 +//        Matcher erm_m_s = erm_p_s.matcher(response_string);
 +//        Matcher erm_m_e = erm_p_e.matcher(response_string);
 +//        SignatureException se = new SignatureException(0, "BKUSigExc");
 +//        String error_code = response_string.substring(erc_m_s.end(), erc_m_e.start());
 +//        se.setExternalErrorCode(error_code);
 +//        if (erm_m_s.find() && erm_m_e.find())
 +//        {
 +//          String error_mess = response_string.substring(erm_m_s.end(), erm_m_e.start());
 +//          se.setExternalErrorMessage(error_mess);
 +//        }
 +//        throw se;
 +//      }
 +//      else
 +//      {
 +//        if (logger_.isDebugEnabled())
 +//        {
 +//          logger_.debug("signature_response_string: " + response_string);
 +//        }
 +//        parseCreateXMLResponse(response_properties, sig_obj);
 +//      }
 +//    }
 +//    sig_obj.setSigResponse(response_string);
 +//    return sig_obj;
 +//  }
 +//
 +//  public SignatureResponse analyzeVerifyResponse(Properties response_properties) throws SignatureException
 +//  {
 +//    String response_string = response_properties.getProperty("response_string");
 +//
 +//    if (!response_string.equals(""))
 +//    {
 +//      Pattern erc_p_s = Pattern.compile("<[\\w]*:?ErrorCode>");
 +//      Pattern erc_p_e = Pattern.compile("</[\\w]*:?ErrorCode>");
 +//      Matcher erc_m_s = erc_p_s.matcher(response_string);
 +//      Matcher erc_m_e = erc_p_e.matcher(response_string);
 +//
 +//      if (erc_m_s.find() && erc_m_e.find())
 +//      {
 +//        if (logger_.isEnabledFor(Level.ERROR))
 +//        {
 +//          // logger_.debug(getType() + "_response.xml : " + response_string);
 +//          logger_.error(getType() + "_response.xml : " + response_string);
 +//        }
 +//        Pattern erm_p_s = Pattern.compile("<[\\w]*:?Info>");
 +//        Pattern erm_p_e = Pattern.compile("</[\\w]*:?Info>");
 +//        Matcher erm_m_s = erm_p_s.matcher(response_string);
 +//        Matcher erm_m_e = erm_p_e.matcher(response_string);
 +//        SignatureException se = new SignatureException(0, "BKUSigExc");
 +//        if (erc_m_s.find() && erc_m_e.find())
 +//        {
 +//          String error_code = response_string.substring(erc_m_s.end(), erc_m_e.start());
 +//          se.setExternalErrorCode(error_code);
 +//        }
 +//        if (erm_m_s.find() && erm_m_e.find())
 +//        {
 +//          String error_mess = response_string.substring(erm_m_s.end(), erm_m_e.start());
 +//          se.setExternalErrorMessage(error_mess);
 +//        }
 +//        throw se;
 +//      }
 +//      else
 +//      {
 +//        if (logger_.isDebugEnabled())
 +//        {
 +//          // logger_.debug(getType() + "_response.xml : " + response_string);
 +//        }
 +//        return parseVerifyXMLResponse(response_string);
 +//      }
 +//    }
 +//    return null;
 +//  }
 +//
 +//  protected String getConnectorValueFromProfile(String profile, String key)
 +//  {
 +//    String value = settings_.getValueFromKey("sig_obj." + profile + "." + key);
 +//    if (value == null)
 +//    {
 +//      value = settings_.getValueFromKey(key);
 +//    }
 +//    return value;
 +//  }
 +//
 +//  public String getSignURL(String profile)
 +//  {
 +//    final String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".url";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getSignRequestTemplateFileName(String profile, String sigmode)
 +//  {
 +//    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".request" + "." + sigmode;
 +//    logger_.info("getSignRequestTemplateFileName: profile=" + profile + "" + " key=" + key);
 +//    String filename = getConnectorValueFromProfile(profile, key);
 +//    logger_.info("getSignRequestTemplateFileName filename=" + filename);
 +//    return filename;// getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getSignKeyboxIdentifier(String profile)
 +//  {
 +//    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".KeyboxIdentifier";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  public String getVerifyURL(String profile)
 +//  {
 +//    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".url";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getVerifyRequestTemplateFileName(String profile)
 +//  {
 +//    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".request";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getVerifyTemplateFileName(String profile)
 +//  {
 +//    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".template";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getSigPropFileName(String profile, String sigmode)
 +//  {
 +//    String key = getType() + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".template.SP." + sigmode;
 +//    logger_.info("getSigPropFileName: profile=" + profile + "" + " key=" + key);
 +//    String filename = getConnectorValueFromProfile(profile, key);
 +//    logger_.info("getSigPropFileName filename=" + filename);
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  /**
 +//   * Returns the type of this BKU-like connector.
 +//   * 
 +//   * <p>
 +//   * All settings keys will be prefixed by this type. So to reuse the BKU
 +//   * connector, a deriving class has to implement this method specifying an own
 +//   * type.
 +//   * </p>
 +//   * 
 +//   * @return Returns the type of this BKU-like connector.
 +//   */
 +//  protected String getType()
 +//  {
 +//    return CONNECTOR_INFORMATION.getIdentifier();
 +//  }
  }
\ No newline at end of file diff --git a/src/test/java/test/at/knowcenter/wag/egov/egiz/detached/MOAConnector.java b/src/test/java/test/at/knowcenter/wag/egov/egiz/detached/MOAConnector.java index e6df790..6c3f06b 100644 --- a/src/test/java/test/at/knowcenter/wag/egov/egiz/detached/MOAConnector.java +++ b/src/test/java/test/at/knowcenter/wag/egov/egiz/detached/MOAConnector.java @@ -17,518 +17,141 @@   */
  package test.at.knowcenter.wag.egov.egiz.detached;
 -import java.io.ByteArrayInputStream;
 -import java.io.ByteArrayOutputStream;
 -import java.io.UnsupportedEncodingException;
 -import java.util.Vector;
 -import java.util.regex.Matcher;
 -import java.util.regex.Pattern;
 -
 -import javax.xml.namespace.QName;
 -import javax.xml.parsers.DocumentBuilder;
 -import javax.xml.parsers.DocumentBuilderFactory;
 -import javax.xml.rpc.Call;
 -import javax.xml.rpc.Service;
 -import javax.xml.rpc.ServiceFactory;
 -
 -import org.apache.axis.message.SOAPBodyElement;
 -import org.apache.log4j.Level;
 -import org.apache.log4j.Logger;
 -import org.apache.xml.serialize.OutputFormat;
 -import org.apache.xml.serialize.XMLSerializer;
 -import org.w3c.dom.Document;
 -
 -import at.knowcenter.wag.egov.egiz.PdfASID;
 -import at.knowcenter.wag.egov.egiz.cfg.ConfigLogger;
 -import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
 -import at.knowcenter.wag.egov.egiz.exceptions.SettingsException;
 -import at.knowcenter.wag.egov.egiz.exceptions.SignatureException;
 -import at.knowcenter.wag.egov.egiz.exceptions.SignatureTypesException;
 -import at.knowcenter.wag.egov.egiz.exceptions.WebException;
 -import at.knowcenter.wag.egov.egiz.sig.Connector;
 -import at.knowcenter.wag.egov.egiz.sig.ConnectorInformation;
 -import at.knowcenter.wag.egov.egiz.sig.SignatureObject;
 -import at.knowcenter.wag.egov.egiz.sig.SignatureResponse;
 -import at.knowcenter.wag.egov.egiz.sig.X509Cert;
 -import at.knowcenter.wag.egov.egiz.sig.connectors.ConnectorConfigurationKeys;
 -import at.knowcenter.wag.egov.egiz.tools.CodingHelper;
 -import at.knowcenter.wag.egov.egiz.tools.FileHelper;
  /**
   * Connector to access the MOA service.
   * 
 + * @deprecated
 + * 
   * @author wlackner
   * @author wprinz
   */
  public class MOAConnector 
  {
 -  /**
 -   * ConnectorInformation that identifies this Connector to the system.
 -   * 
 -   * @see at.knowcenter.wag.egov.egiz.sig.ConnectorFactory
 -   * @see ConnectorInformation
 -   */
 -  public static final ConnectorInformation CONNECTOR_INFORMATION = new ConnectorInformation("moa", "MOA");
 -
 -  /**
 -   * The class type value.
 -   * 
 -   * <p>
 -   * Just for convenience.
 -   * </p>
 -   */
 -  private static final String TYPE = CONNECTOR_INFORMATION.getIdentifier();
 -
 -  /**
 -   * The connector description.
 -   */
 -  public static final String DESCRIPTION = "MOA";
 -
 -  /**
 -   * The SettingsReader instance
 -   */
 -  private SettingsReader settings_ = null;
 -
 -  /**
 -   * MOA siganture verification mode
 -   */
 -  public static final String SERVICE_VERIFY = "SignatureVerification";
 -
 -  /**
 -   * MOA siganture creation mode
 -   */
 -  public static final String SERVICE_SIGN = "SignatureCreation";
 -
 -  /**
 -   * The logger definition.
 -   */
 -  private static final Logger logger_ = ConfigLogger.getLogger(MOAConnector.class);
 -
 -  /**
 -   * The empty constructor
 -   */
 -  public MOAConnector() throws SignatureException
 -  {
 -    loadSettings();
 -  }
 -
 -  /**
 -   * load the inital signature settings
 -   * 
 -   * @see SettingsReader
 -   */
 -  private void loadSettings() throws SignatureException
 -  {
 -    if (settings_ == null)
 -    {
 -      try
 -      {
 -        settings_ = SettingsReader.getInstance();
 -      }
 -      catch (SettingsException e)
 -      {
 -        String log_message = "Can not load signature settings. Cause:\n" + e.getMessage();
 -        logger_.error(log_message);
 -        throw new SignatureException(101, log_message, e);
 -      }
 -    }
 -  }
 -
 -  public SignatureObject doSign(String sigType, byte [] data, PdfASID algorithm) throws SignatureException
 -  {
 -    SignatureObject sig_obj = new SignatureObject();
 -    try
 -    {
 -      sig_obj.setSigType(sigType);
 -      sig_obj.initByType();
 -    }
 -    catch (SignatureTypesException e)
 -    {
 -      SignatureException se = new SignatureException(300, "Can ot init signature object with type:" + sigType, e);
 -      throw se;
 -    }
 -    if (logger_.isDebugEnabled())
 -    {
 -      logger_.debug("Signature Type is:" + sig_obj.getSignationType());
 -    }
 -
 -    String url = getSignURL(sigType);
 -
 -    String sign_request_filename = "./templates/MOASignRequestDetached.xml";//getSignRequestTemplateFileName(sigType);
 -    String key_ident = getSignKeyIdentifier(sigType);
 -    String sign_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(sign_request_filename));
 -    if (sign_req_str == null)
 -    {
 -      SignatureException se = new SignatureException(300, "File not found:" + sign_request_filename);
 -      throw se;
 -    }
 -
 -    sign_req_str = sign_req_str.replaceFirst("KeyIdentifierReplace", key_ident);
 -    if (logger_.isDebugEnabled())
 -    {
 -      //logger_.debug("error_signature_response = " + sign_req_str);
 -      // FileHelper.writeToFile(sign_request_filename + "_signText.xml",
 -      // signText);
 -    }
 -    // sign_req_str = sign_req_str.replaceFirst("XMLContentReplace", signText);
 -    // now use the the base64 Template
 -//    signText = CodingHelper.encodeUTF8AsBase64(signText);
 -//    sign_req_str = sign_req_str.replaceFirst("Base64ContentReplace", signText);
 -//    if (logger_.isDebugEnabled())
 -//    {
 -//      //logger_.debug(sign_req_str);
 -//      // FileHelper.writeToFile(sign_request_filename + "_request.xml",
 -//      // sign_req_str);
 -//    }
 -
 -    String response_string = "";
 -    try
 -    {
 -      response_string = MOAConnector.connectMOA(sign_req_str, MOAConnector.SERVICE_SIGN, url);
 -      sig_obj.setRawSignatureResponse(response_string);
 -    }
 -    catch (WebException we)
 -    {
 -      if (logger_.isDebugEnabled())
 -      {
 -        we.printStackTrace();
 -      }
 -      SignatureException se = new SignatureException(we.getErrorCode(), we);
 -      throw se;
 -    }
 -
 -    if (!response_string.equals(""))
 -    {
 -      if (logger_.isInfoEnabled())
 -      {
 -        logger_.info("get MOA response");
 -      }
 -      Pattern erc_p_s = Pattern.compile("<ErrorCode>");
 -      Pattern erc_p_e = Pattern.compile("</ErrorCode>");
 -      Matcher erc_m_s = erc_p_s.matcher(response_string);
 -      Matcher erc_m_e = erc_p_e.matcher(response_string);
 -      // System.err.println(response_string);
 -
 -      if (erc_m_s.find() && erc_m_e.find())
 -      {
 -        if (logger_.isEnabledFor(Level.ERROR))
 -        {
 -          logger_.error("error_signature_response = " + response_string);
 -          // FileHelper.writeToFile(sign_request_filename + "_response.xml",
 -          // response_string);
 -          //logger_.error("Write error response to file:" + sign_request_filename + "_response.xml");
 -        }
 -        Pattern erm_p_s = Pattern.compile("<Info>");
 -        Pattern erm_p_e = Pattern.compile("</Info>");
 -        Matcher erm_m_s = erm_p_s.matcher(response_string);
 -        Matcher erm_m_e = erm_p_e.matcher(response_string);
 -
 -        String error_code = response_string.substring(erc_m_s.end(), erc_m_e.start());
 -        logger_.debug("error_code = " + error_code);
 -        String error_mess = "";
 -        if (erm_m_s.find() && erm_m_e.find())
 -        {
 -          error_mess = response_string.substring(erm_m_s.end(), erm_m_e.start());
 -          logger_.debug(error_mess);
 -        }
 -        SignatureException se = new SignatureException(0, "MOASigExc ext error code = " + error_code + ", err_mess = " + error_mess);
 -        se.setExternalErrorCode(error_code);
 -        se.setExternalErrorMessage(error_mess);
 -        throw se;
 -      }
 -      else
 -      {
 -        if (logger_.isDebugEnabled())
 -        {
 -          //logger_.debug("response_string = " + response_string);
 -          // FileHelper.writeToFile(sign_request_filename + "_response.xml",
 -          // response_string);
 -        }
 -        parseCreateXMLResponse(response_string, sig_obj);
 -      }
 -    }
 -    sig_obj.setSigResponse(response_string);
 -    return sig_obj;
 -  }
 -
 -  /**
 -   * This method parses the MOA-Response string. It separates the
 -   * SignatureValue, X509IssuerName, SigningTime, X509SerialNumber,
 -   * X509Certificate, CertDigest and DigestValues. If the X509Certificate is
 -   * extracted it would be stored in the certificates directory.
 -   * 
 -   * @param xmlResponse
 -   *          the response string from the MOA sign-request
 -   * @param sigObj
 -   *          the SignatureObject that should be filled
 -   * @throws SignatureException
 -   *           ErrorCode (303, 304)
 -   * @see SignatureObject
 -   * @see CodingHelper
 -   * @see X509Cert
 -   */
 -  private void parseCreateXMLResponse(String xmlResponse, SignatureObject sigObj) throws SignatureException
 -  {
 -    Pattern sig_val_p_s = Pattern.compile("<[\\w]*:?SignatureValue>");
 -    Pattern sig_val_p_e = Pattern.compile("</[\\w]*:?SignatureValue>");
 -    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_e = Pattern.compile("</[\\w]*:?X509SerialNumber>");
 -    Pattern sig_cer_p_s = Pattern.compile("<[\\w]*:?X509Certificate>");
 -    Pattern sig_cer_p_e = Pattern.compile("</[\\w]*:?X509Certificate>");
 -
 -    Pattern sig_cer_d_p_s = Pattern.compile("<[\\w]*:?CertDigest>");
 -    Pattern sig_cer_d_p_e = Pattern.compile("</[\\w]*:?CertDigest>");
 -    Pattern dig_val_p_s = Pattern.compile("<[\\w]*:?DigestValue>");
 -    Pattern dig_val_p_e = Pattern.compile("</[\\w]*:?DigestValue>");
 -
 -    Matcher sig_val_m_s = sig_val_p_s.matcher(xmlResponse);
 -    Matcher sig_val_m_e = sig_val_p_e.matcher(xmlResponse);
 -    Matcher iss_nam_m_s = iss_nam_p_s.matcher(xmlResponse);
 -    Matcher iss_nam_m_e = iss_nam_p_e.matcher(xmlResponse);
 -    Matcher sig_tim_m_s = sig_tim_p_s.matcher(xmlResponse);
 -    Matcher sig_tim_m_e = sig_tim_p_e.matcher(xmlResponse);
 -    Matcher ser_num_m_s = ser_num_p_s.matcher(xmlResponse);
 -    Matcher ser_num_m_e = ser_num_p_e.matcher(xmlResponse);
 -    Matcher sig_cer_m_s = sig_cer_p_s.matcher(xmlResponse);
 -    Matcher sig_cer_m_e = sig_cer_p_e.matcher(xmlResponse);
 -
 -    Matcher sig_cer_d_m_s = sig_cer_d_p_s.matcher(xmlResponse);
 -    Matcher sig_cer_d_m_e = sig_cer_d_p_e.matcher(xmlResponse);
 -
 -    String sig_val = "";
 -    String iss_nam = "";
 -    String ser_num = "";
 -    String sig_tim = "";
 -    String sig_cer = "";
 -    String sig_dig = "";
 -
 -    // SignatureValue
 -    if (sig_val_m_s.find() && sig_val_m_e.find())
 -    {
 -      sig_val = xmlResponse.substring(sig_val_m_s.end(), sig_val_m_e.start());
 -      sig_val = sig_val.replaceAll("\\s", "");
 -      sigObj.setSignationValue(sig_val);
 -    }
 -    // X509IssuerName
 -    if (iss_nam_m_s.find() && iss_nam_m_e.find())
 -    {
 -      iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
 -      sigObj.setSignationIssuer(iss_nam);
 -    }
 -    // X509SerialNumber
 -    if (ser_num_m_s.find() && ser_num_m_e.find())
 -    {
 -      ser_num = xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start());
 -      sigObj.setSignationSerialNumber(ser_num);
 -    }
 -    // SigningTime
 -    if (sig_tim_m_s.find() && sig_tim_m_e.find())
 -    {
 -      sig_tim = xmlResponse.substring(sig_tim_m_s.end(), sig_tim_m_e.start());
 -      sigObj.setSignationDate(sig_tim);
 -    }
 -    // CertDigest
 -    if (sig_cer_d_m_s.find() && sig_cer_d_m_e.find())
 -    {
 -      String cert_digest = xmlResponse.substring(sig_cer_d_m_s.end(), sig_cer_d_m_e.start());
 -      Matcher dig_val_m_s = dig_val_p_s.matcher(cert_digest);
 -      Matcher dig_val_m_e = dig_val_p_e.matcher(cert_digest);
 -      if (dig_val_m_s.find() && dig_val_m_e.find())
 -      {
 -        sig_dig = cert_digest.substring(dig_val_m_s.end(), dig_val_m_e.start());
 -        sigObj.setX509CertificateDigest(sig_dig);
 -      }
 -    }
 -    // extract Subject Name from X509Certificate
 -    if (sig_cer_m_s.find() && sig_cer_m_e.find())
 -    {
 -      sig_cer = xmlResponse.substring(sig_cer_m_s.end(), sig_cer_m_e.start());
 -      sig_cer = sig_cer.replaceAll("\\s", "");
 -      X509Cert cert = X509Cert.initByString(sig_cer);
 -      if (cert.isX509Cert())
 -      {
 -        sigObj.setX509Certificate(cert.getCertString());
 -        String serial_num = cert.getSerialNumber();
 -        String subject_name = cert.getSubjectName();
 -        if (!ser_num.equals(serial_num))
 -        {
 -          SignatureException se = new SignatureException(303, "Serialnumber of certificate and tag X509SerialNumber differs!");
 -          throw se;
 -        }
 -        sigObj.setSignationName(subject_name);
 -      }
 -    }
 -  }
 -
 -  /**
 -   * This method reads the verify template from the file system and fills out
 -   * the template with the SignatureObject values.
 -   * 
 -   * @param normalizedText
 -   *          the normalized text to veryfied
 -   * @param sigObject
 -   *          the SignatureObject holding the singature values
 -   * @return the filled verify template string
 -   * @throws SignatureException
 -   *           ErrorCode (311, 312, 313)
 -   * @see SignatureObject
 -   * @see CodingHelper
 -   */
 -  public String getVerifyTemplate(String normalizedText,
 -      SignatureObject sigObject) throws SignatureException
 -  {
 -    try
 -    {
 -      if (normalizedText == null || normalizedText.length() == 0)
 -      {
 -        SignatureException se = new SignatureException(311, "Document can not be verified because normalized text is empty.");
 -        throw se;
 -      }
 -      if (sigObject == null)
 -      {
 -        SignatureException se = new SignatureException(312, "Document can not be verified because no signature object are set.");
 -        throw se;
 -      }
 -      String verify_template = getVerifyTemplateFileName(sigObject.getSignationType());
 -      String sig_prop_template = getSigPropFileName(sigObject.getSignationType());
 -      String verify_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(verify_template));
 -      String sig_prop_str = FileHelper.readFromFile(SettingsReader.relocateFile(sig_prop_template));
 -
 -      if (logger_.isDebugEnabled())
 -      {
 -        //logger_.debug(verify_template);
 -        //logger_.debug(sig_prop_template);
 -      }
 -
 -      String x509Certificate = sigObject.getX509CertificateString();
 -      if (x509Certificate == null)
 -      {
 -        SignatureException se = new SignatureException(313, "Document certificate is not defined.");
 -        throw se;
 -      }
 -      String cert_alg = settings_.getValueFromKey("cert.alg.ecdsa");
 -      X509Cert x509_cert = sigObject.getX509Cert();
 -      if (x509_cert.isRSA())
 -      {
 -        cert_alg = settings_.getValueFromKey("cert.alg.rsa");
 -      }
 -
 -      sig_prop_str = sig_prop_str.replaceFirst("SigningTimeReplace", sigObject.getSignationDate());
 -      // The issuer is already a valid Unicode String.
 -      // No need to convert it - not to mention the missing encoding.
 -      // byte[] issuer_name =
 -      // CodingHelper.encodeUTF8(sigObject.getSignationIssuer());
 -      // new String(issuer_name)
 -      sig_prop_str = sig_prop_str.replaceFirst("X509IssuerNameReplace", sigObject.getSignationIssuer());
 -      sig_prop_str = sig_prop_str.replaceFirst("X509SerialNumberReplace", sigObject.getSignationSerialNumber());
 -      sig_prop_str = sig_prop_str.replaceFirst("DigestValueX509CertificateReplace", sigObject.getX509CertificateDigest());
 -
 -      verify_req_str = verify_req_str.replaceFirst("CertAlgReplace", cert_alg);
 -      verify_req_str = verify_req_str.replaceFirst("TemplateSignedPropertiesReplace", sig_prop_str);
 -      byte[] sig_prop_code = CodingHelper.buildDigest(sig_prop_str.getBytes("UTF-8")); // added
 -      // the
 -      // ("UTF-8")
 -      // encoding
 -      String sig_prop_hash = CodingHelper.encodeBase64(sig_prop_code);
 -      verify_req_str = verify_req_str.replaceFirst("DigestValueSignedPropertiesReplace", sig_prop_hash);
 -      if (logger_.isDebugEnabled())
 -      {
 -        logger_.debug("build digest from SignedProperties:start");
 -        //logger_.debug("DATA  :" + sig_prop_str);
 -        logger_.debug("DIGEST:" + sig_prop_hash);
 -        logger_.debug("build digest from SignedProperties:end");
 -      }
 -
 -      verify_req_str = verify_req_str.replaceFirst("SignatureValueReplace", sigObject.getSignationValue());
 -      verify_req_str = verify_req_str.replaceFirst("X509CertificateReplace", x509Certificate);
 -      byte[] data_value = normalizedText.getBytes("UTF-8");
 -      byte[] data_value_hash = CodingHelper.buildDigest(data_value);
 -      // byte[] data_value_hash =
 -      // CodingHelper.buildDigest(normalizedText.getBytes());
 -      String object_data_hash = CodingHelper.encodeBase64(data_value_hash);
 -      //String object_data = normalizedText; // new String(data_value);
 -      // System.err.println(object_data_hash);
 -      // very_req_str = very_req_str.replaceFirst("ObjectDataReplace",
 -      // object_data);
 -      String raw_b64 = CodingHelper.encodeBase64(data_value);
 -      verify_req_str = verify_req_str.replaceFirst("Base64ContentReplace", raw_b64);
 -
 -      verify_req_str = verify_req_str.replaceFirst("DigestValueSignedDataReplace", object_data_hash);
 -      if (logger_.isDebugEnabled())
 -      {
 -        // FileHelper.writeToFile(verify_template + "_verifyText.xml",
 -        // normalizedText);
 -        logger_.debug("build digest from data object:start");
 -        //logger_.debug("DATA  :" + object_data);
 -        logger_.debug("DIGEST:" + object_data_hash);
 -        logger_.debug("build digest from data object:end");
 -      }
 -      return verify_req_str;
 -    }
 -    catch (UnsupportedEncodingException e)
 -    {
 -      throw new SignatureException(310, e);
 -    }
 -  }
 -
  //  /**
 -//   * This method generates the MOA verify prozess. It checks if the given
 -//   * SignatureObject is signed by MOA or BKU. The verify template string is
 -//   * filled out by the corresponding method.
 +//   * ConnectorInformation that identifies this Connector to the system.
  //   * 
 -//   * @param normalizedText
 -//   *          the normalized text to verify
 -//   * @param sigObject
 -//   *          the SignatureObject holding the singature values
 -//   * @return a SignatureResponse object if the verify prozess does not fails
 -//   * @throws SignatureException
 -//   * @see SignatureResponse
 +//   * @see at.knowcenter.wag.egov.egiz.sig.ConnectorFactory
 +//   * @see ConnectorInformation
  //   */
 -//  public SignatureResponse doVerify(String normalizedText,
 -//      SignatureObject sigObject) throws SignatureException
 +//  public static final ConnectorInformation CONNECTOR_INFORMATION = new ConnectorInformation("moa", "MOA");
 +//
 +//  /**
 +//   * The class type value.
 +//   * 
 +//   * <p>
 +//   * Just for convenience.
 +//   * </p>
 +//   */
 +//  private static final String TYPE = CONNECTOR_INFORMATION.getIdentifier();
 +//
 +//  /**
 +//   * The connector description.
 +//   */
 +//  public static final String DESCRIPTION = "MOA";
 +//
 +//  /**
 +//   * The SettingsReader instance
 +//   */
 +//  private SettingsReader settings_ = null;
 +//
 +//  /**
 +//   * MOA siganture verification mode
 +//   */
 +//  public static final String SERVICE_VERIFY = "SignatureVerification";
 +//
 +//  /**
 +//   * MOA siganture creation mode
 +//   */
 +//  public static final String SERVICE_SIGN = "SignatureCreation";
 +//
 +//  /**
 +//   * The logger definition.
 +//   */
 +//  private static final Logger logger_ = ConfigLogger.getLogger(MOAConnector.class);
 +//
 +//  /**
 +//   * The empty constructor
 +//   */
 +//  public MOAConnector() throws SignatureException
 +//  {
 +//    loadSettings();
 +//  }
 +//
 +//  /**
 +//   * load the inital signature settings
 +//   * 
 +//   * @see SettingsReader
 +//   */
 +//  private void loadSettings() throws SignatureException
  //  {
 -//    String verify_url = getVerifyURL(sigObject.getSignationType()); // settings_.getValueFromKey(TYPE
 -//    // + "." +
 -//    // Signature.VALUE_MODE_VERIFY
 -//    // +
 -//    // ".url");
 -//    String verify_request = getVerifyRequestTemplateFileName(sigObject.getSignationType()); // settings_.getValueFromKey(TYPE
 -//    // +
 -//    // "."
 -//    // +
 -//    // Signature.VALUE_MODE_VERIFY
 -//    // +
 -//    // ".request");
 -//    String trust_profile = getVerifyTrustProfileID(sigObject.getSignationType());
 -//    String verify_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(verify_request));
 -//
 -//    String verify_template_str = null;
 -//    if (sigObject.isMOASigned())
 +//    if (settings_ == null)
 +//    {
 +//      try
 +//      {
 +//        settings_ = SettingsReader.getInstance();
 +//      }
 +//      catch (SettingsException e)
 +//      {
 +//        String log_message = "Can not load signature settings. Cause:\n" + e.getMessage();
 +//        logger_.error(log_message);
 +//        throw new SignatureException(101, log_message, e);
 +//      }
 +//    }
 +//  }
 +//
 +//  public SignatureObject doSign(String sigType, byte [] data, PdfASID algorithm) throws SignatureException
 +//  {
 +//    SignatureObject sig_obj = new SignatureObject();
 +//    try
 +//    {
 +//      sig_obj.setSigType(sigType);
 +//      sig_obj.initByType();
 +//    }
 +//    catch (SignatureTypesException e)
 +//    {
 +//      SignatureException se = new SignatureException(300, "Can ot init signature object with type:" + sigType, e);
 +//      throw se;
 +//    }
 +//    if (logger_.isDebugEnabled())
  //    {
 -//      verify_template_str = getVerifyTemplate(normalizedText, sigObject);
 +//      logger_.debug("Signature Type is:" + sig_obj.getSignationType());
  //    }
 -//    else
 +//
 +//    String url = getSignURL(sigType);
 +//
 +//    String sign_request_filename = "./templates/MOASignRequestDetached.xml";//getSignRequestTemplateFileName(sigType);
 +//    String key_ident = getSignKeyIdentifier(sigType);
 +//    String sign_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(sign_request_filename));
 +//    if (sign_req_str == null)
  //    {
 -//      BKUConnector bku_conn = new BKUConnector();
 -//      verify_template_str = bku_conn.getVerifyTemplate(normalizedText, sigObject);
 +//      SignatureException se = new SignatureException(300, "File not found:" + sign_request_filename);
 +//      throw se;
  //    }
 -//    verify_req_str = verify_req_str.replaceFirst("XMLContentReplace", verify_template_str);
 -//    verify_req_str = verify_req_str.replaceFirst("TrustProfileIDReplace", trust_profile);
  //
 +//    sign_req_str = sign_req_str.replaceFirst("KeyIdentifierReplace", key_ident);
  //    if (logger_.isDebugEnabled())
  //    {
 -//      //logger_.debug(verify_req_str);
 -//      // FileHelper.writeToFile(verify_request + "_request.xml",
 -//      // verify_req_str);
 +//      //logger_.debug("error_signature_response = " + sign_req_str);
 +//      // FileHelper.writeToFile(sign_request_filename + "_signText.xml",
 +//      // signText);
  //    }
 +//    // sign_req_str = sign_req_str.replaceFirst("XMLContentReplace", signText);
 +//    // now use the the base64 Template
 +////    signText = CodingHelper.encodeUTF8AsBase64(signText);
 +////    sign_req_str = sign_req_str.replaceFirst("Base64ContentReplace", signText);
 +////    if (logger_.isDebugEnabled())
 +////    {
 +////      //logger_.debug(sign_req_str);
 +////      // FileHelper.writeToFile(sign_request_filename + "_request.xml",
 +////      // sign_req_str);
 +////    }
 +//
  //    String response_string = "";
  //    try
  //    {
 -//      response_string = MOAConnector.connectMOA(verify_req_str, MOAConnector.SERVICE_VERIFY, verify_url);
 +//      response_string = MOAConnector.connectMOA(sign_req_str, MOAConnector.SERVICE_SIGN, url);
 +//      sig_obj.setRawSignatureResponse(response_string);
  //    }
  //    catch (WebException we)
  //    {
 @@ -542,328 +165,671 @@ public class MOAConnector  //
  //    if (!response_string.equals(""))
  //    {
 -//      Pattern erc_p_s = Pattern.compile("<[\\w]*:?ErrorCode>");
 -//      Pattern erc_p_e = Pattern.compile("</[\\w]*:?ErrorCode>");
 +//      if (logger_.isInfoEnabled())
 +//      {
 +//        logger_.info("get MOA response");
 +//      }
 +//      Pattern erc_p_s = Pattern.compile("<ErrorCode>");
 +//      Pattern erc_p_e = Pattern.compile("</ErrorCode>");
  //      Matcher erc_m_s = erc_p_s.matcher(response_string);
  //      Matcher erc_m_e = erc_p_e.matcher(response_string);
 +//      // System.err.println(response_string);
  //
  //      if (erc_m_s.find() && erc_m_e.find())
  //      {
  //        if (logger_.isEnabledFor(Level.ERROR))
  //        {
 -//          //logger_.debug(response_string);
 -//          // FileHelper.writeToFile(verify_request + "_response.xml",
 +//          logger_.error("error_signature_response = " + response_string);
 +//          // FileHelper.writeToFile(sign_request_filename + "_response.xml",
  //          // response_string);
 -//          logger_.error("Write error response to file:" + verify_request + "_response.xml");
 +//          //logger_.error("Write error response to file:" + sign_request_filename + "_response.xml");
  //        }
 -//        Pattern erm_p_s = Pattern.compile("<[\\w]*:?Info>");
 -//        Pattern erm_p_e = Pattern.compile("</[\\w]*:?Info>");
 +//        Pattern erm_p_s = Pattern.compile("<Info>");
 +//        Pattern erm_p_e = Pattern.compile("</Info>");
  //        Matcher erm_m_s = erm_p_s.matcher(response_string);
  //        Matcher erm_m_e = erm_p_e.matcher(response_string);
 -//        SignatureException se = new SignatureException(0, "MOASigExc2");
 +//
  //        String error_code = response_string.substring(erc_m_s.end(), erc_m_e.start());
 -//        se.setExternalErrorCode(error_code);
 +//        logger_.debug("error_code = " + error_code);
 +//        String error_mess = "";
  //        if (erm_m_s.find() && erm_m_e.find())
  //        {
 -//          String error_mess = response_string.substring(erm_m_s.end(), erm_m_e.start());
 -//          se.setExternalErrorMessage(error_mess);
 +//          error_mess = response_string.substring(erm_m_s.end(), erm_m_e.start());
 +//          logger_.debug(error_mess);
  //        }
 +//        SignatureException se = new SignatureException(0, "MOASigExc ext error code = " + error_code + ", err_mess = " + error_mess);
 +//        se.setExternalErrorCode(error_code);
 +//        se.setExternalErrorMessage(error_mess);
  //        throw se;
  //      }
  //      else
  //      {
  //        if (logger_.isDebugEnabled())
  //        {
 -//          //logger_.debug(verify_request + "_response.xml " + response_string);
 +//          //logger_.debug("response_string = " + response_string);
 +//          // FileHelper.writeToFile(sign_request_filename + "_response.xml",
 +//          // response_string);
  //        }
 -//        return parseVerifyXMLResponse(response_string);
 +//        parseCreateXMLResponse(response_string, sig_obj);
  //      }
  //    }
 -//    return null;
 +//    sig_obj.setSigResponse(response_string);
 +//    return sig_obj;
  //  }
 -
 +//
  //  /**
 -//   * This method parses the verify response string and return a
 -//   * SignatureResponse object. The SignatureResponse object is filled out by the
 -//   * response values from the BKU-response.
 +//   * This method parses the MOA-Response string. It separates the
 +//   * SignatureValue, X509IssuerName, SigningTime, X509SerialNumber,
 +//   * X509Certificate, CertDigest and DigestValues. If the X509Certificate is
 +//   * extracted it would be stored in the certificates directory.
  //   * 
  //   * @param xmlResponse
 -//   *          the response values from the MOA-verify request
 -//   * @return SignatureResponse object
 -//   * @see SignatureResponse
 +//   *          the response string from the MOA sign-request
 +//   * @param sigObj
 +//   *          the SignatureObject that should be filled
 +//   * @throws SignatureException
 +//   *           ErrorCode (303, 304)
 +//   * @see SignatureObject
 +//   * @see CodingHelper
 +//   * @see X509Cert
  //   */
 -//  private SignatureResponse parseVerifyXMLResponse(String xmlResponse)
 +//  private void parseCreateXMLResponse(String xmlResponse, SignatureObject sigObj) throws SignatureException
  //  {
 -//    if (logger_.isInfoEnabled())
 -//    {
 -//      logger_.info("Try parsing the verify response");
 -//    }
 -//    Pattern sub_nam_p_s = Pattern.compile("<dsig:X509SubjectName>");
 -//    Pattern sub_nam_p_e = Pattern.compile("</dsig:X509SubjectName>");
 -//    Pattern iss_nam_p_s = Pattern.compile("<dsig:X509IssuerName>");
 -//    Pattern iss_nam_p_e = Pattern.compile("</dsig:X509IssuerName>");
 -//    Pattern ser_num_p_s = Pattern.compile("<dsig:X509SerialNumber>");
 -//    Pattern ser_num_p_e = Pattern.compile("</dsig:X509SerialNumber>");
 -//
 -//    // [tknall] start qualified certificate
 -//    Pattern cert_qualified_p = Pattern.compile("<QualifiedCertificate/>");
 -//    Matcher cert_qualified_m = cert_qualified_p.matcher(xmlResponse);
 -//    // [tknall] stop qualified certificate
 -//    
 -//    Pattern sig_chk_p_s = Pattern.compile("<SignatureCheck>");
 -//    Pattern sig_chk_p_e = Pattern.compile("</SignatureCheck>");
 -//    Pattern man_chk_p_s = Pattern.compile("<SignatureManifestCheck>");
 -//    Pattern man_chk_p_e = Pattern.compile("</SignatureManifestCheck>");
 -//    Pattern cer_chk_p_s = Pattern.compile("<CertificateCheck>");
 -//    Pattern cer_chk_p_e = Pattern.compile("</CertificateCheck>");
 -//
 -//    Pattern code_p_s = Pattern.compile("<Code>");
 -//    Pattern code_p_e = Pattern.compile("</Code>");
 -//
 -//    Pattern cert_p_s = Pattern.compile("<dsig:X509Certificate>");
 -//    Pattern cert_p_e = Pattern.compile("</dsig:X509Certificate>");
 -//
 -//    Matcher sub_nam_m_s = sub_nam_p_s.matcher(xmlResponse);
 -//    Matcher sub_nam_m_e = sub_nam_p_e.matcher(xmlResponse);
 +//    Pattern sig_val_p_s = Pattern.compile("<[\\w]*:?SignatureValue>");
 +//    Pattern sig_val_p_e = Pattern.compile("</[\\w]*:?SignatureValue>");
 +//    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_e = Pattern.compile("</[\\w]*:?X509SerialNumber>");
 +//    Pattern sig_cer_p_s = Pattern.compile("<[\\w]*:?X509Certificate>");
 +//    Pattern sig_cer_p_e = Pattern.compile("</[\\w]*:?X509Certificate>");
 +//
 +//    Pattern sig_cer_d_p_s = Pattern.compile("<[\\w]*:?CertDigest>");
 +//    Pattern sig_cer_d_p_e = Pattern.compile("</[\\w]*:?CertDigest>");
 +//    Pattern dig_val_p_s = Pattern.compile("<[\\w]*:?DigestValue>");
 +//    Pattern dig_val_p_e = Pattern.compile("</[\\w]*:?DigestValue>");
 +//
 +//    Matcher sig_val_m_s = sig_val_p_s.matcher(xmlResponse);
 +//    Matcher sig_val_m_e = sig_val_p_e.matcher(xmlResponse);
  //    Matcher iss_nam_m_s = iss_nam_p_s.matcher(xmlResponse);
  //    Matcher iss_nam_m_e = iss_nam_p_e.matcher(xmlResponse);
 +//    Matcher sig_tim_m_s = sig_tim_p_s.matcher(xmlResponse);
 +//    Matcher sig_tim_m_e = sig_tim_p_e.matcher(xmlResponse);
  //    Matcher ser_num_m_s = ser_num_p_s.matcher(xmlResponse);
  //    Matcher ser_num_m_e = ser_num_p_e.matcher(xmlResponse);
 +//    Matcher sig_cer_m_s = sig_cer_p_s.matcher(xmlResponse);
 +//    Matcher sig_cer_m_e = sig_cer_p_e.matcher(xmlResponse);
  //
 -//    Matcher sig_chk_m_s = sig_chk_p_s.matcher(xmlResponse);
 -//    Matcher sig_chk_m_e = sig_chk_p_e.matcher(xmlResponse);
 -//    Matcher man_chk_m_s = man_chk_p_s.matcher(xmlResponse);
 -//    Matcher man_chk_m_e = man_chk_p_e.matcher(xmlResponse);
 -//    Matcher cer_chk_m_s = cer_chk_p_s.matcher(xmlResponse);
 -//    Matcher cer_chk_m_e = cer_chk_p_e.matcher(xmlResponse);
 -//
 -//    Matcher cert_m_s = cert_p_s.matcher(xmlResponse);
 -//    Matcher cert_m_e = cert_p_e.matcher(xmlResponse);
 +//    Matcher sig_cer_d_m_s = sig_cer_d_p_s.matcher(xmlResponse);
 +//    Matcher sig_cer_d_m_e = sig_cer_d_p_e.matcher(xmlResponse);
  //
 -//    SignatureResponse sig_res = new SignatureResponse();
 -//    
 -//    // [tknall] start qualified certificate
 -//    sig_res.setQualifiedCertificate(cert_qualified_m.find());
 -//    // [tknall] stop qualified certificate
 +//    String sig_val = "";
 +//    String iss_nam = "";
 +//    String ser_num = "";
 +//    String sig_tim = "";
 +//    String sig_cer = "";
 +//    String sig_dig = "";
  //
 -//    if (sub_nam_m_s.find() && sub_nam_m_e.find())
 +//    // SignatureValue
 +//    if (sig_val_m_s.find() && sig_val_m_e.find())
  //    {
 -//      String sub_nam = xmlResponse.substring(sub_nam_m_s.end(), sub_nam_m_e.start());
 -//      sig_res.setX509SubjectName(sub_nam);
 +//      sig_val = xmlResponse.substring(sig_val_m_s.end(), sig_val_m_e.start());
 +//      sig_val = sig_val.replaceAll("\\s", "");
 +//      sigObj.setSignationValue(sig_val);
  //    }
 +//    // X509IssuerName
  //    if (iss_nam_m_s.find() && iss_nam_m_e.find())
  //    {
 -//      String iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
 -//      sig_res.setX509IssuerName(iss_nam);
 +//      iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
 +//      sigObj.setSignationIssuer(iss_nam);
  //    }
 +//    // X509SerialNumber
  //    if (ser_num_m_s.find() && ser_num_m_e.find())
  //    {
 -//      String ser_num = xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start());
 -//      sig_res.setX509SerialNumber(ser_num);
 +//      ser_num = xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start());
 +//      sigObj.setSignationSerialNumber(ser_num);
 +//    }
 +//    // SigningTime
 +//    if (sig_tim_m_s.find() && sig_tim_m_e.find())
 +//    {
 +//      sig_tim = xmlResponse.substring(sig_tim_m_s.end(), sig_tim_m_e.start());
 +//      sigObj.setSignationDate(sig_tim);
  //    }
 -//    if (sig_chk_m_s.find() && sig_chk_m_e.find())
 +//    // CertDigest
 +//    if (sig_cer_d_m_s.find() && sig_cer_d_m_e.find())
  //    {
 -//      String sig_chk = xmlResponse.substring(sig_chk_m_s.end(), sig_chk_m_e.start());
 -//      Matcher code_m_s = code_p_s.matcher(sig_chk);
 -//      Matcher code_m_e = code_p_e.matcher(sig_chk);
 -//      if (code_m_s.find() && code_m_e.find())
 +//      String cert_digest = xmlResponse.substring(sig_cer_d_m_s.end(), sig_cer_d_m_e.start());
 +//      Matcher dig_val_m_s = dig_val_p_s.matcher(cert_digest);
 +//      Matcher dig_val_m_e = dig_val_p_e.matcher(cert_digest);
 +//      if (dig_val_m_s.find() && dig_val_m_e.find())
  //      {
 -//        String code = sig_chk.substring(code_m_s.end(), code_m_e.start());
 -//        sig_res.setSignatureCheckCode(code);
 +//        sig_dig = cert_digest.substring(dig_val_m_s.end(), dig_val_m_e.start());
 +//        sigObj.setX509CertificateDigest(sig_dig);
  //      }
  //    }
 -//    if (man_chk_m_s.find() && man_chk_m_e.find())
 +//    // extract Subject Name from X509Certificate
 +//    if (sig_cer_m_s.find() && sig_cer_m_e.find())
  //    {
 -//      String man_chk = xmlResponse.substring(man_chk_m_s.end(), man_chk_m_e.start());
 -//      Matcher code_m_s = code_p_s.matcher(man_chk);
 -//      Matcher code_m_e = code_p_e.matcher(man_chk);
 -//      if (code_m_s.find() && code_m_e.find())
 +//      sig_cer = xmlResponse.substring(sig_cer_m_s.end(), sig_cer_m_e.start());
 +//      sig_cer = sig_cer.replaceAll("\\s", "");
 +//      X509Cert cert = X509Cert.initByString(sig_cer);
 +//      if (cert.isX509Cert())
  //      {
 -//        String code = man_chk.substring(code_m_s.end(), code_m_e.start());
 -//        sig_res.setSignatureManifestCheckCode(code);
 +//        sigObj.setX509Certificate(cert.getCertString());
 +//        String serial_num = cert.getSerialNumber();
 +//        String subject_name = cert.getSubjectName();
 +//        if (!ser_num.equals(serial_num))
 +//        {
 +//          SignatureException se = new SignatureException(303, "Serialnumber of certificate and tag X509SerialNumber differs!");
 +//          throw se;
 +//        }
 +//        sigObj.setSignationName(subject_name);
  //      }
  //    }
 -//    if (cer_chk_m_s.find() && cer_chk_m_e.find())
 +//  }
 +//
 +//  /**
 +//   * This method reads the verify template from the file system and fills out
 +//   * the template with the SignatureObject values.
 +//   * 
 +//   * @param normalizedText
 +//   *          the normalized text to veryfied
 +//   * @param sigObject
 +//   *          the SignatureObject holding the singature values
 +//   * @return the filled verify template string
 +//   * @throws SignatureException
 +//   *           ErrorCode (311, 312, 313)
 +//   * @see SignatureObject
 +//   * @see CodingHelper
 +//   */
 +//  public String getVerifyTemplate(String normalizedText,
 +//      SignatureObject sigObject) throws SignatureException
 +//  {
 +//    try
  //    {
 -//      String cer_chk = xmlResponse.substring(cer_chk_m_s.end(), cer_chk_m_e.start());
 -//      Matcher code_m_s = code_p_s.matcher(cer_chk);
 -//      Matcher code_m_e = code_p_e.matcher(cer_chk);
 -//      if (code_m_s.find() && code_m_e.find())
 +//      if (normalizedText == null || normalizedText.length() == 0)
 +//      {
 +//        SignatureException se = new SignatureException(311, "Document can not be verified because normalized text is empty.");
 +//        throw se;
 +//      }
 +//      if (sigObject == null)
 +//      {
 +//        SignatureException se = new SignatureException(312, "Document can not be verified because no signature object are set.");
 +//        throw se;
 +//      }
 +//      String verify_template = getVerifyTemplateFileName(sigObject.getSignationType());
 +//      String sig_prop_template = getSigPropFileName(sigObject.getSignationType());
 +//      String verify_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(verify_template));
 +//      String sig_prop_str = FileHelper.readFromFile(SettingsReader.relocateFile(sig_prop_template));
 +//
 +//      if (logger_.isDebugEnabled())
 +//      {
 +//        //logger_.debug(verify_template);
 +//        //logger_.debug(sig_prop_template);
 +//      }
 +//
 +//      String x509Certificate = sigObject.getX509CertificateString();
 +//      if (x509Certificate == null)
 +//      {
 +//        SignatureException se = new SignatureException(313, "Document certificate is not defined.");
 +//        throw se;
 +//      }
 +//      String cert_alg = settings_.getValueFromKey("cert.alg.ecdsa");
 +//      X509Cert x509_cert = sigObject.getX509Cert();
 +//      if (x509_cert.isRSA())
 +//      {
 +//        cert_alg = settings_.getValueFromKey("cert.alg.rsa");
 +//      }
 +//
 +//      sig_prop_str = sig_prop_str.replaceFirst("SigningTimeReplace", sigObject.getSignationDate());
 +//      // The issuer is already a valid Unicode String.
 +//      // No need to convert it - not to mention the missing encoding.
 +//      // byte[] issuer_name =
 +//      // CodingHelper.encodeUTF8(sigObject.getSignationIssuer());
 +//      // new String(issuer_name)
 +//      sig_prop_str = sig_prop_str.replaceFirst("X509IssuerNameReplace", sigObject.getSignationIssuer());
 +//      sig_prop_str = sig_prop_str.replaceFirst("X509SerialNumberReplace", sigObject.getSignationSerialNumber());
 +//      sig_prop_str = sig_prop_str.replaceFirst("DigestValueX509CertificateReplace", sigObject.getX509CertificateDigest());
 +//
 +//      verify_req_str = verify_req_str.replaceFirst("CertAlgReplace", cert_alg);
 +//      verify_req_str = verify_req_str.replaceFirst("TemplateSignedPropertiesReplace", sig_prop_str);
 +//      byte[] sig_prop_code = CodingHelper.buildDigest(sig_prop_str.getBytes("UTF-8")); // added
 +//      // the
 +//      // ("UTF-8")
 +//      // encoding
 +//      String sig_prop_hash = CodingHelper.encodeBase64(sig_prop_code);
 +//      verify_req_str = verify_req_str.replaceFirst("DigestValueSignedPropertiesReplace", sig_prop_hash);
 +//      if (logger_.isDebugEnabled())
 +//      {
 +//        logger_.debug("build digest from SignedProperties:start");
 +//        //logger_.debug("DATA  :" + sig_prop_str);
 +//        logger_.debug("DIGEST:" + sig_prop_hash);
 +//        logger_.debug("build digest from SignedProperties:end");
 +//      }
 +//
 +//      verify_req_str = verify_req_str.replaceFirst("SignatureValueReplace", sigObject.getSignationValue());
 +//      verify_req_str = verify_req_str.replaceFirst("X509CertificateReplace", x509Certificate);
 +//      byte[] data_value = normalizedText.getBytes("UTF-8");
 +//      byte[] data_value_hash = CodingHelper.buildDigest(data_value);
 +//      // byte[] data_value_hash =
 +//      // CodingHelper.buildDigest(normalizedText.getBytes());
 +//      String object_data_hash = CodingHelper.encodeBase64(data_value_hash);
 +//      //String object_data = normalizedText; // new String(data_value);
 +//      // System.err.println(object_data_hash);
 +//      // very_req_str = very_req_str.replaceFirst("ObjectDataReplace",
 +//      // object_data);
 +//      String raw_b64 = CodingHelper.encodeBase64(data_value);
 +//      verify_req_str = verify_req_str.replaceFirst("Base64ContentReplace", raw_b64);
 +//
 +//      verify_req_str = verify_req_str.replaceFirst("DigestValueSignedDataReplace", object_data_hash);
 +//      if (logger_.isDebugEnabled())
  //      {
 -//        String code = cer_chk.substring(code_m_s.end(), code_m_e.start());
 -//        sig_res.setCertificateCheckCode(code);
 +//        // FileHelper.writeToFile(verify_template + "_verifyText.xml",
 +//        // normalizedText);
 +//        logger_.debug("build digest from data object:start");
 +//        //logger_.debug("DATA  :" + object_data);
 +//        logger_.debug("DIGEST:" + object_data_hash);
 +//        logger_.debug("build digest from data object:end");
  //      }
 +//      return verify_req_str;
  //    }
 -//    if (cert_m_s.find() && cert_m_e.find())
 +//    catch (UnsupportedEncodingException e)
  //    {
 -//      String cert_string = xmlResponse.substring(cert_m_s.end(), cert_m_e.start());
 +//      throw new SignatureException(310, e);
 +//    }
 +//  }
 +//
 +////  /**
 +////   * This method generates the MOA verify prozess. It checks if the given
 +////   * SignatureObject is signed by MOA or BKU. The verify template string is
 +////   * filled out by the corresponding method.
 +////   * 
 +////   * @param normalizedText
 +////   *          the normalized text to verify
 +////   * @param sigObject
 +////   *          the SignatureObject holding the singature values
 +////   * @return a SignatureResponse object if the verify prozess does not fails
 +////   * @throws SignatureException
 +////   * @see SignatureResponse
 +////   */
 +////  public SignatureResponse doVerify(String normalizedText,
 +////      SignatureObject sigObject) throws SignatureException
 +////  {
 +////    String verify_url = getVerifyURL(sigObject.getSignationType()); // settings_.getValueFromKey(TYPE
 +////    // + "." +
 +////    // Signature.VALUE_MODE_VERIFY
 +////    // +
 +////    // ".url");
 +////    String verify_request = getVerifyRequestTemplateFileName(sigObject.getSignationType()); // settings_.getValueFromKey(TYPE
 +////    // +
 +////    // "."
 +////    // +
 +////    // Signature.VALUE_MODE_VERIFY
 +////    // +
 +////    // ".request");
 +////    String trust_profile = getVerifyTrustProfileID(sigObject.getSignationType());
 +////    String verify_req_str = FileHelper.readFromFile(SettingsReader.relocateFile(verify_request));
 +////
 +////    String verify_template_str = null;
 +////    if (sigObject.isMOASigned())
 +////    {
 +////      verify_template_str = getVerifyTemplate(normalizedText, sigObject);
 +////    }
 +////    else
 +////    {
 +////      BKUConnector bku_conn = new BKUConnector();
 +////      verify_template_str = bku_conn.getVerifyTemplate(normalizedText, sigObject);
 +////    }
 +////    verify_req_str = verify_req_str.replaceFirst("XMLContentReplace", verify_template_str);
 +////    verify_req_str = verify_req_str.replaceFirst("TrustProfileIDReplace", trust_profile);
 +////
 +////    if (logger_.isDebugEnabled())
 +////    {
 +////      //logger_.debug(verify_req_str);
 +////      // FileHelper.writeToFile(verify_request + "_request.xml",
 +////      // verify_req_str);
 +////    }
 +////    String response_string = "";
 +////    try
 +////    {
 +////      response_string = MOAConnector.connectMOA(verify_req_str, MOAConnector.SERVICE_VERIFY, verify_url);
 +////    }
 +////    catch (WebException we)
 +////    {
 +////      if (logger_.isDebugEnabled())
 +////      {
 +////        we.printStackTrace();
 +////      }
 +////      SignatureException se = new SignatureException(we.getErrorCode(), we);
 +////      throw se;
 +////    }
 +////
 +////    if (!response_string.equals(""))
 +////    {
 +////      Pattern erc_p_s = Pattern.compile("<[\\w]*:?ErrorCode>");
 +////      Pattern erc_p_e = Pattern.compile("</[\\w]*:?ErrorCode>");
 +////      Matcher erc_m_s = erc_p_s.matcher(response_string);
 +////      Matcher erc_m_e = erc_p_e.matcher(response_string);
 +////
 +////      if (erc_m_s.find() && erc_m_e.find())
 +////      {
 +////        if (logger_.isEnabledFor(Level.ERROR))
 +////        {
 +////          //logger_.debug(response_string);
 +////          // FileHelper.writeToFile(verify_request + "_response.xml",
 +////          // response_string);
 +////          logger_.error("Write error response to file:" + verify_request + "_response.xml");
 +////        }
 +////        Pattern erm_p_s = Pattern.compile("<[\\w]*:?Info>");
 +////        Pattern erm_p_e = Pattern.compile("</[\\w]*:?Info>");
 +////        Matcher erm_m_s = erm_p_s.matcher(response_string);
 +////        Matcher erm_m_e = erm_p_e.matcher(response_string);
 +////        SignatureException se = new SignatureException(0, "MOASigExc2");
 +////        String error_code = response_string.substring(erc_m_s.end(), erc_m_e.start());
 +////        se.setExternalErrorCode(error_code);
 +////        if (erm_m_s.find() && erm_m_e.find())
 +////        {
 +////          String error_mess = response_string.substring(erm_m_s.end(), erm_m_e.start());
 +////          se.setExternalErrorMessage(error_mess);
 +////        }
 +////        throw se;
 +////      }
 +////      else
 +////      {
 +////        if (logger_.isDebugEnabled())
 +////        {
 +////          //logger_.debug(verify_request + "_response.xml " + response_string);
 +////        }
 +////        return parseVerifyXMLResponse(response_string);
 +////      }
 +////    }
 +////    return null;
 +////  }
  //
 -//      X509Cert resp_cert = X509Cert.initByString(cert_string);
 -//      sig_res.setCertificate(resp_cert);
 +////  /**
 +////   * This method parses the verify response string and return a
 +////   * SignatureResponse object. The SignatureResponse object is filled out by the
 +////   * response values from the BKU-response.
 +////   * 
 +////   * @param xmlResponse
 +////   *          the response values from the MOA-verify request
 +////   * @return SignatureResponse object
 +////   * @see SignatureResponse
 +////   */
 +////  private SignatureResponse parseVerifyXMLResponse(String xmlResponse)
 +////  {
 +////    if (logger_.isInfoEnabled())
 +////    {
 +////      logger_.info("Try parsing the verify response");
 +////    }
 +////    Pattern sub_nam_p_s = Pattern.compile("<dsig:X509SubjectName>");
 +////    Pattern sub_nam_p_e = Pattern.compile("</dsig:X509SubjectName>");
 +////    Pattern iss_nam_p_s = Pattern.compile("<dsig:X509IssuerName>");
 +////    Pattern iss_nam_p_e = Pattern.compile("</dsig:X509IssuerName>");
 +////    Pattern ser_num_p_s = Pattern.compile("<dsig:X509SerialNumber>");
 +////    Pattern ser_num_p_e = Pattern.compile("</dsig:X509SerialNumber>");
 +////
 +////    // [tknall] start qualified certificate
 +////    Pattern cert_qualified_p = Pattern.compile("<QualifiedCertificate/>");
 +////    Matcher cert_qualified_m = cert_qualified_p.matcher(xmlResponse);
 +////    // [tknall] stop qualified certificate
 +////    
 +////    Pattern sig_chk_p_s = Pattern.compile("<SignatureCheck>");
 +////    Pattern sig_chk_p_e = Pattern.compile("</SignatureCheck>");
 +////    Pattern man_chk_p_s = Pattern.compile("<SignatureManifestCheck>");
 +////    Pattern man_chk_p_e = Pattern.compile("</SignatureManifestCheck>");
 +////    Pattern cer_chk_p_s = Pattern.compile("<CertificateCheck>");
 +////    Pattern cer_chk_p_e = Pattern.compile("</CertificateCheck>");
 +////
 +////    Pattern code_p_s = Pattern.compile("<Code>");
 +////    Pattern code_p_e = Pattern.compile("</Code>");
 +////
 +////    Pattern cert_p_s = Pattern.compile("<dsig:X509Certificate>");
 +////    Pattern cert_p_e = Pattern.compile("</dsig:X509Certificate>");
 +////
 +////    Matcher sub_nam_m_s = sub_nam_p_s.matcher(xmlResponse);
 +////    Matcher sub_nam_m_e = sub_nam_p_e.matcher(xmlResponse);
 +////    Matcher iss_nam_m_s = iss_nam_p_s.matcher(xmlResponse);
 +////    Matcher iss_nam_m_e = iss_nam_p_e.matcher(xmlResponse);
 +////    Matcher ser_num_m_s = ser_num_p_s.matcher(xmlResponse);
 +////    Matcher ser_num_m_e = ser_num_p_e.matcher(xmlResponse);
 +////
 +////    Matcher sig_chk_m_s = sig_chk_p_s.matcher(xmlResponse);
 +////    Matcher sig_chk_m_e = sig_chk_p_e.matcher(xmlResponse);
 +////    Matcher man_chk_m_s = man_chk_p_s.matcher(xmlResponse);
 +////    Matcher man_chk_m_e = man_chk_p_e.matcher(xmlResponse);
 +////    Matcher cer_chk_m_s = cer_chk_p_s.matcher(xmlResponse);
 +////    Matcher cer_chk_m_e = cer_chk_p_e.matcher(xmlResponse);
 +////
 +////    Matcher cert_m_s = cert_p_s.matcher(xmlResponse);
 +////    Matcher cert_m_e = cert_p_e.matcher(xmlResponse);
 +////
 +////    SignatureResponse sig_res = new SignatureResponse();
 +////    
 +////    // [tknall] start qualified certificate
 +////    sig_res.setQualifiedCertificate(cert_qualified_m.find());
 +////    // [tknall] stop qualified certificate
 +////
 +////    if (sub_nam_m_s.find() && sub_nam_m_e.find())
 +////    {
 +////      String sub_nam = xmlResponse.substring(sub_nam_m_s.end(), sub_nam_m_e.start());
 +////      sig_res.setX509SubjectName(sub_nam);
 +////    }
 +////    if (iss_nam_m_s.find() && iss_nam_m_e.find())
 +////    {
 +////      String iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
 +////      sig_res.setX509IssuerName(iss_nam);
 +////    }
 +////    if (ser_num_m_s.find() && ser_num_m_e.find())
 +////    {
 +////      String ser_num = xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start());
 +////      sig_res.setX509SerialNumber(ser_num);
 +////    }
 +////    if (sig_chk_m_s.find() && sig_chk_m_e.find())
 +////    {
 +////      String sig_chk = xmlResponse.substring(sig_chk_m_s.end(), sig_chk_m_e.start());
 +////      Matcher code_m_s = code_p_s.matcher(sig_chk);
 +////      Matcher code_m_e = code_p_e.matcher(sig_chk);
 +////      if (code_m_s.find() && code_m_e.find())
 +////      {
 +////        String code = sig_chk.substring(code_m_s.end(), code_m_e.start());
 +////        sig_res.setSignatureCheckCode(code);
 +////      }
 +////    }
 +////    if (man_chk_m_s.find() && man_chk_m_e.find())
 +////    {
 +////      String man_chk = xmlResponse.substring(man_chk_m_s.end(), man_chk_m_e.start());
 +////      Matcher code_m_s = code_p_s.matcher(man_chk);
 +////      Matcher code_m_e = code_p_e.matcher(man_chk);
 +////      if (code_m_s.find() && code_m_e.find())
 +////      {
 +////        String code = man_chk.substring(code_m_s.end(), code_m_e.start());
 +////        sig_res.setSignatureManifestCheckCode(code);
 +////      }
 +////    }
 +////    if (cer_chk_m_s.find() && cer_chk_m_e.find())
 +////    {
 +////      String cer_chk = xmlResponse.substring(cer_chk_m_s.end(), cer_chk_m_e.start());
 +////      Matcher code_m_s = code_p_s.matcher(cer_chk);
 +////      Matcher code_m_e = code_p_e.matcher(cer_chk);
 +////      if (code_m_s.find() && code_m_e.find())
 +////      {
 +////        String code = cer_chk.substring(code_m_s.end(), code_m_e.start());
 +////        sig_res.setCertificateCheckCode(code);
 +////      }
 +////    }
 +////    if (cert_m_s.find() && cert_m_e.find())
 +////    {
 +////      String cert_string = xmlResponse.substring(cert_m_s.end(), cert_m_e.start());
 +////
 +////      X509Cert resp_cert = X509Cert.initByString(cert_string);
 +////      sig_res.setCertificate(resp_cert);
 +////    }
 +////
 +////    return sig_res;
 +////  }
 +//
 +//  protected String getConnectorValueFromProfile(String profile, String key)
 +//  {
 +//    String value = settings_.getValueFromKey("sig_obj." + profile + "." + key);
 +//    if (value == null)
 +//    {
 +//      value = settings_.getValueFromKey(key);
  //    }
 +//    return value;
 +//  }
 +//
 +//  public String getSignURL(String profile)
 +//  {
 +//    final String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".url";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getSignRequestTemplateFileName(String profile)
 +//  {
 +//    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".request";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getSignKeyIdentifier(String profile)
 +//  {
 +//    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".KeyIdentifier";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  public String getVerifyURL(String profile)
 +//  {
 +//    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".url";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getVerifyRequestTemplateFileName(String profile)
 +//  {
 +//    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".request";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getVerifyTemplateFileName(String profile)
 +//  {
 +//    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".template";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getSigPropFileName(String profile)
 +//  {
 +//    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".template.SP";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  protected String getVerifyTrustProfileID(String profile)
 +//  {
 +//    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".TrustProfileID";
 +//    return getConnectorValueFromProfile(profile, key);
 +//  }
 +//
 +//  /**
 +//   * This method connects the moa server getting the requestString, the given
 +//   * serviseMode and the endpointUrl. The requestString is the envelope of the
 +//   * SOAP Message send and recieve by the AXIS module. The Response SOAP message
 +//   * of the MOA server is parsed by AXIS and the message envelope is send back
 +//   * to the calling method.
 +//   * 
 +//   * @param requestString
 +//   *          the request string (XML) to send.
 +//   * @param serviceMode
 +//   *          the mode which connect to MOA
 +//   * @param endpointURL
 +//   *          the URL which the MOA server is running
 +//   * @return the response string (XML) of the MOA server
 +//   * @throws WebException
 +//   */
 +//  public static String connectMOA(String requestString, String serviceMode,
 +//      String endpointURL) throws WebException
 +//  {
 +//    try
 +//    {
 +//      if (logger_.isInfoEnabled())
 +//      {
 +//        logger_.info(serviceMode);
 +//        logger_.info(endpointURL);
 +//      }
 +//      // Parser/DOMBuilder instanzieren
 +//      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 +//      factory.setNamespaceAware(true);
 +//      DocumentBuilder builder = factory.newDocumentBuilder();
 +//
 +//      // XML Datei in einen DOM-Baum umwandeln
 +//      ByteArrayInputStream bais = new ByteArrayInputStream(requestString.getBytes("UTF-8"));
 +//      Document xmlRequest = builder.parse(bais);
 +//
 +//      // Call öffnen
 +//      Call call = null;
 +//
 +//      // Neues BodyElement anlegen und mit dem DOM-Baum füllen
 +//      SOAPBodyElement body = new SOAPBodyElement(xmlRequest.getDocumentElement());
 +//      SOAPBodyElement[] params = new SOAPBodyElement[] { body };
 +//
 +//      // AXIS-Server instanzieren
 +//      Service service = ServiceFactory.newInstance().createService(new QName(serviceMode));
 +//      call = service.createCall();
 +//      call.setTargetEndpointAddress(endpointURL);
 +//
 +//      // Call auslösen und die Antworten speichern
 +//      if (logger_.isInfoEnabled())
 +//      {
 +//        logger_.info("Calling MOA:" + endpointURL);
 +//      }
 +//      Vector responses = (Vector) call.invoke(params);
 +//
 +//      // Erstes Body Element auslesen
 +//      SOAPBodyElement response = (SOAPBodyElement) responses.get(0);
 +//
 +//      // Aus der Response den DOM-Baum lesen
 +//      Document root_response = response.getAsDocument();
 +//      if (logger_.isInfoEnabled())
 +//      {
 +//        logger_.info("Return from MOA:" + serviceMode);
 +//      }
 +//
 +//      // XML-Formatierung konfiguieren
 +//      OutputFormat format = new OutputFormat((Document) root_response);
 +//      format.setLineSeparator("\n");
 +//      format.setIndenting(false);
 +//      format.setPreserveSpace(true);
 +//      format.setOmitXMLDeclaration(false);
 +//      format.setEncoding("UTF-8");
 +//
 +//      // Ausgabe der Webservice-Antwort auf die Konsole
 +//      // XMLSerializer conSerializer = new XMLSerializer(System.out, format);
 +//      // conSerializer.serialize(root_response);
 +//
 +//      // Ausgabe der Webservice-Antwort in Datei
 +//      ByteArrayOutputStream baos = new ByteArrayOutputStream();
 +//      XMLSerializer response_serializer = new XMLSerializer(baos, format);
 +//      response_serializer.serialize(root_response);
 +//      return baos.toString("UTF-8");
 +//    }
 +//    catch (Exception e)
 +//    {
 +//      throw new WebException(330, e);
 +//    }
 +//    // serialize signature only
 +//
 +//    // if
 +//    // (root_response.getDocumentElement().getLocalName().equals("CreateXMLSignatureResponse"))
 +//    // {
 +//    // Element signature = (Element)
 +//    // root_response.getElementsByTagNameNS("http://www.w3.org/2000/09/xmldsig#",
 +//    // "Signature").item(0);
 +//    // String signatureFile = getProperty(mode + "Request").substring(0,
 +//    // getProperty(mode +
 +//    // "Request").lastIndexOf('.')) + ".Signature.xml";
 +//    // fileSerializer = new XMLSerializer(new FileOutputStream(signatureFile),
 +//    // format);
 +//    // fileSerializer.serialize(signature);
 +//    // }
  //
 -//    return sig_res;
  //  }
 -
 -  protected String getConnectorValueFromProfile(String profile, String key)
 -  {
 -    String value = settings_.getValueFromKey("sig_obj." + profile + "." + key);
 -    if (value == null)
 -    {
 -      value = settings_.getValueFromKey(key);
 -    }
 -    return value;
 -  }
 -
 -  public String getSignURL(String profile)
 -  {
 -    final String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".url";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getSignRequestTemplateFileName(String profile)
 -  {
 -    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".request";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getSignKeyIdentifier(String profile)
 -  {
 -    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_SIGN + ".KeyIdentifier";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  public String getVerifyURL(String profile)
 -  {
 -    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".url";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getVerifyRequestTemplateFileName(String profile)
 -  {
 -    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".request";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getVerifyTemplateFileName(String profile)
 -  {
 -    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".template";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getSigPropFileName(String profile)
 -  {
 -    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".template.SP";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  protected String getVerifyTrustProfileID(String profile)
 -  {
 -    String key = TYPE + "." + ConnectorConfigurationKeys.VALUE_MODE_VERIFY + ".TrustProfileID";
 -    return getConnectorValueFromProfile(profile, key);
 -  }
 -
 -  /**
 -   * This method connects the moa server getting the requestString, the given
 -   * serviseMode and the endpointUrl. The requestString is the envelope of the
 -   * SOAP Message send and recieve by the AXIS module. The Response SOAP message
 -   * of the MOA server is parsed by AXIS and the message envelope is send back
 -   * to the calling method.
 -   * 
 -   * @param requestString
 -   *          the request string (XML) to send.
 -   * @param serviceMode
 -   *          the mode which connect to MOA
 -   * @param endpointURL
 -   *          the URL which the MOA server is running
 -   * @return the response string (XML) of the MOA server
 -   * @throws WebException
 -   */
 -  public static String connectMOA(String requestString, String serviceMode,
 -      String endpointURL) throws WebException
 -  {
 -    try
 -    {
 -      if (logger_.isInfoEnabled())
 -      {
 -        logger_.info(serviceMode);
 -        logger_.info(endpointURL);
 -      }
 -      // Parser/DOMBuilder instanzieren
 -      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 -      factory.setNamespaceAware(true);
 -      DocumentBuilder builder = factory.newDocumentBuilder();
 -
 -      // XML Datei in einen DOM-Baum umwandeln
 -      ByteArrayInputStream bais = new ByteArrayInputStream(requestString.getBytes("UTF-8"));
 -      Document xmlRequest = builder.parse(bais);
 -
 -      // Call öffnen
 -      Call call = null;
 -
 -      // Neues BodyElement anlegen und mit dem DOM-Baum füllen
 -      SOAPBodyElement body = new SOAPBodyElement(xmlRequest.getDocumentElement());
 -      SOAPBodyElement[] params = new SOAPBodyElement[] { body };
 -
 -      // AXIS-Server instanzieren
 -      Service service = ServiceFactory.newInstance().createService(new QName(serviceMode));
 -      call = service.createCall();
 -      call.setTargetEndpointAddress(endpointURL);
 -
 -      // Call auslösen und die Antworten speichern
 -      if (logger_.isInfoEnabled())
 -      {
 -        logger_.info("Calling MOA:" + endpointURL);
 -      }
 -      Vector responses = (Vector) call.invoke(params);
 -
 -      // Erstes Body Element auslesen
 -      SOAPBodyElement response = (SOAPBodyElement) responses.get(0);
 -
 -      // Aus der Response den DOM-Baum lesen
 -      Document root_response = response.getAsDocument();
 -      if (logger_.isInfoEnabled())
 -      {
 -        logger_.info("Return from MOA:" + serviceMode);
 -      }
 -
 -      // XML-Formatierung konfiguieren
 -      OutputFormat format = new OutputFormat((Document) root_response);
 -      format.setLineSeparator("\n");
 -      format.setIndenting(false);
 -      format.setPreserveSpace(true);
 -      format.setOmitXMLDeclaration(false);
 -      format.setEncoding("UTF-8");
 -
 -      // Ausgabe der Webservice-Antwort auf die Konsole
 -      // XMLSerializer conSerializer = new XMLSerializer(System.out, format);
 -      // conSerializer.serialize(root_response);
 -
 -      // Ausgabe der Webservice-Antwort in Datei
 -      ByteArrayOutputStream baos = new ByteArrayOutputStream();
 -      XMLSerializer response_serializer = new XMLSerializer(baos, format);
 -      response_serializer.serialize(root_response);
 -      return baos.toString("UTF-8");
 -    }
 -    catch (Exception e)
 -    {
 -      throw new WebException(330, e);
 -    }
 -    // serialize signature only
 -
 -    // if
 -    // (root_response.getDocumentElement().getLocalName().equals("CreateXMLSignatureResponse"))
 -    // {
 -    // Element signature = (Element)
 -    // root_response.getElementsByTagNameNS("http://www.w3.org/2000/09/xmldsig#",
 -    // "Signature").item(0);
 -    // String signatureFile = getProperty(mode + "Request").substring(0,
 -    // getProperty(mode +
 -    // "Request").lastIndexOf('.')) + ".Signature.xml";
 -    // fileSerializer = new XMLSerializer(new FileOutputStream(signatureFile),
 -    // format);
 -    // fileSerializer.serialize(signature);
 -    // }
 -
 -  }
  }
\ No newline at end of file | 
