package testgenerator;
import iaik.ixsil.algorithms.Transform;
import iaik.ixsil.algorithms.TransformImplBase64Decode;
import iaik.ixsil.algorithms.TransformImplCanonicalXML;
import iaik.ixsil.algorithms.TransformImplCanonicalXMLWithComments;
import iaik.ixsil.algorithms.TransformImplEnvelopedSignature;
import iaik.ixsil.algorithms.TransformImplExclusiveCanonicalXML;
import iaik.ixsil.algorithms.TransformImplExclusiveCanonicalXMLWithComments;
import iaik.ixsil.algorithms.TransformImplXPath;
import iaik.ixsil.algorithms.TransformImplXPath2;
import iaik.ixsil.algorithms.TransformImplXSLT;
import iaik.ixsil.core.Position;
import iaik.ixsil.util.URI;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.xml.serialize.DOMWriterImpl;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import at.gv.egovernment.moa.util.Base64Utils;
import at.gv.egovernment.moa.util.Constants;
import at.gv.egovernment.moa.util.DOMUtils;
import at.gv.egovernment.moa.util.EntityResolverChain;
import at.gv.egovernment.moa.util.MOAEntityResolver;
import at.gv.egovernment.moa.util.MOAErrorHandler;
import at.gv.egovernment.moa.util.StreamEntityResolver;
/**
 * @author stephan
 */
public class TestGeneratorVX extends TestCases {
	
	private static final int canAlgCanXML = 1;
	private static final int canAlgCanXMLwithCom = 2;
	private static final int canAlgExcXML = 3;
	private static final int canAlgExcXMLwithCom = 4;
	private static VXResponseBean vxBean = null;
		public static void main(String[] args) throws Exception {
		vxBean = new VXResponseBean();
		TestGeneratorVX testcase = new TestGeneratorVX();
	 testcase.createVXConfig();    
  
    testcase.create001();
    testcase.create002();
		testcase.create003();
		testcase.create004();
    testcase.create005();
    testcase.create006();
    testcase.create007();
    testcase.create009();
    testcase.create008();
    		
		testcase.create101();
		testcase.create102();
		testcase.create103();
		testcase.create104();
		testcase.create105();
		testcase.create106();
					
		testcase.create301();
		testcase.create302();
		testcase.create303();
		testcase.create304();
		testcase.create305();
		
		testcase.create307();
		testcase.create308();
		
		testcase.create310();
		testcase.create311();
		testcase.create312();
		testcase.create313();
		testcase.create314();
		testcase.create314_2();
		testcase.create315();	
		testcase.create316();	
		testcase.create317();	
		testcase.create318();	
		testcase.create318_2();  
		testcase.create319();
		testcase.create320();
		testcase.create320_2();
		testcase.create321();
		testcase.create322();
		testcase.create323();
		testcase.create324(); 		
		testcase.create325();
		testcase.create326();
		testcase.create327();
		//testcase.createL00();
	
	} 
	/* ==================================================================================================== */
	public TestGeneratorVX() throws Exception {
		super();
		// Set config properties
		configuration_.setProperty("TestClass", "TestGeneratorVX");
		
		//		configuration_.setProperty("privateKeyFile", baseDir + "additionalFiles/keys/RSAPrivateKey.der");
		//		configuration_.setProperty("publicKeyFile",  baseDir + "additionalFiles/keys/RSAPublicKey.der");
		//		configuration_.setProperty("signatureFile",  baseDir + "additionalFiles/signatures/Signature.unit1.xml");
		iaik.security.provider.IAIK.addAsProvider();
		iaik.security.ecc.provider.ECCProvider.addAsProvider();
	}
	/* ==================================================================================================== */
	
	public void testEcc() throws Exception
	{
		Date d = new Date();		
		long start = d.getTime();
		long initEcc = 0;
		long timeEcc = 0;
		long initRSA = 0;
		long timeRSA = 0;
		
		
		TestGeneratorVX testcase = new TestGeneratorVX();
		testcase.ecccreate319();
		initEcc = (new Date()).getTime() - start;
		testcase.ecccreate320();
		testcase.ecccreate321();
		testcase.ecccreate322();
		testcase.ecccreate323();
		testcase.ecccreate324();
				 
		timeEcc = (new Date()).getTime() - start;
		
		start = (new Date()).getTime();
		
		testcase = new TestGeneratorVX();
		testcase.create319();
		initRSA = (new Date()).getTime() - start;
		testcase.create320();
		testcase.create321();
		testcase.create322();
		testcase.create323();
		testcase.create324(); 
		timeRSA =(new Date()).getTime() - start;
		
		System.out.println("=========================================================");
		System.out.println("=========================================================");
		
		System.out.println("Init ECC (inkl. 1st Test): "+ (initEcc)+ "ms" );	
		System.out.println("ECC-Tests gesamt: "+ (timeEcc)+ "ms" );	
		System.out.println("ECC-Tests 2-5: "+ (timeEcc-initEcc)+ "ms" );	
		System.out.println("=========================================================");
		System.out.println("Init RSA (inkl. 1st Test): "+ (initRSA)+ "ms" );	
		System.out.println("RSA-Tests gesamt: "+ (timeRSA)+ "ms" );	
		System.out.println("RSA-Tests 2-5: "+ (timeRSA-initRSA)+ "ms" );	
		System.out.println("=========================================================");
	}
	
public void ecccreate319() throws Exception {
		String testNumber = "ecc319";
		
		
    //     Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();  // Create from whole cloth
//
  //        Element root =  (Element) document.createElement("Data");
    //      root.appendChild(document.createTextNode(readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")) );
//          Element root2 =  (Element) document.createElement("Element2");
  //        root2.appendChild(document.createTextNode("Some other text") );
			
	//		root.appendChild(root2);
			
		  
         	
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		//cpkcs.init();
		long start = (new Date()).getTime();
		cpkcs.initECDSA();
		System.out.println("Init-Dauer für " +testNumber + ":" + ((new Date()).getTime()-start));
		cpkcs.setCanoncialization(canAlgCanXML);		
		cpkcs.createReference(true,"Dies sind Testdaten");		
		//cpkcs.createReferenceEnvElement(root);		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt");
		cpkcs.setKeyInformation();
    	
		start = (new Date()).getTime();    	
    	Document sign = cpkcs.returnSig();
    	System.out.println("Sign-Dauer für " +testNumber + ":" + ((new Date()).getTime()-start));
    
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
	
	/**
	 * Method create320:
	 * The element KeyInfo does NOT contain the X509-certificate but
	 *  an URI pointing to an external xml-encoded X509-file
	 * @throws Exception
	 */
	public void ecccreate320() throws Exception {
		String testNumber = "ecc320";
		
		//RetrievalMethdos instead of the integratede Keys
		
		//URI fileURI = new URI(configuration_.getProperty("baseDir") + "resources/test-ee2003_normal.der");
		URI fileURI = new URI("file:/"+configuration_.getProperty("baseDir") + "resources/X509Data.xml");
		URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data");
		//URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#rawX509Certificate");
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
//		cpkcs.init();
		cpkcs.initECDSA();
		cpkcs.setCanoncialization(canAlgCanXML);
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation(false, fileURI, typeURI, null);
    	
		long start = (new Date()).getTime();
    	Document sign = cpkcs.returnSig();
    	System.out.println("Sign-Dauer für " +testNumber + ":" + ((new Date()).getTime()-start));
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
		
		public void ecccreate321() throws Exception {
		String testNumber = "ecc321";
		
		//RetrievalMethdos instead of the integratede Keys
		
		URI fileURI = new URI("file:/"+configuration_.getProperty("baseDir") + "resources/test-ee2003_normal.der");
		URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#rawX509Certificate");
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		//		cpkcs.init();
		cpkcs.initECDSA();
		cpkcs.setCanoncialization(canAlgCanXML);
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation(false, fileURI, typeURI, null);
    	long start = (new Date()).getTime();    	
    	Document sign = cpkcs.returnSig();
    	System.out.println("Sign-Dauer für " +testNumber + ":" + ((new Date()).getTime()-start));
    
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
	/**
	 * Method create322.
	 * The reference in the signature points with an xpointer 
	 * to the ID of an embedded valid manifest dsig:object 
	 * @throws Exception
	 */
	public void ecccreate322() throws Exception {
		String testNumber = "ecc322";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		//		cpkcs.init();
		cpkcs.initECDSA();
		cpkcs.setCanoncialization(canAlgCanXML);
		URI fileURI1 = new URI(configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
		cpkcs.createReferenceWithManifest(fileURI1,"manifestObject");
		
		cpkcs.setKeyInformation();
    	 	long start = (new Date()).getTime();    	
    	Document sign = cpkcs.returnSig();
    	System.out.println("Sign-Dauer für " +testNumber + ":" + ((new Date()).getTime()-start));
    
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		
		
	}
	/**
	 * Method create323: 
	 * There are two references in the signature pointing 
	 * with xpointer to two embedded valid manifest dsig:objects
	 * @throws Exception
	 */
	public void ecccreate323() throws Exception {
		String testNumber = "ecc323";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		//		cpkcs.init();
		cpkcs.initECDSA();
		cpkcs.setCanoncialization(canAlgCanXML);
		URI fileURI1 = new URI(configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
		URI fileURI2 = new URI(configuration_.getProperty("webbaseDir") + "resources/testXML.txt");		
		cpkcs.createReferenceWithManifest(fileURI1,"manifestObject");
		
		//HINWEIS: Durch das 2malige Aufrufen wird ein WEITERES dsig:Object ELEMENT erzeugt... darf das so sein...???
		
		cpkcs.createReferenceWithManifest(fileURI2,"manifestObject2");
		cpkcs.setKeyInformation();
    	 	long start = (new Date()).getTime();    	
    	Document sign = cpkcs.returnSig();
    	System.out.println("Sign-Dauer für " +testNumber + ":" + ((new Date()).getTime()-start));
    
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		
		
	}
	public void ecccreate324() throws Exception {
		String testNumber = "ecc324";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
	//		cpkcs.init();
		cpkcs.initECDSA();
		cpkcs.setCanoncialization(canAlgCanXML);
		URI fileURI1 = new URI(configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
		URI fileURI2 = new URI(configuration_.getProperty("webbaseDir") + "resources/testXML.txt");		
		cpkcs.createReferencesWithManifest(fileURI1,"manifestObject",fileURI2);
		
		//HINWEIS: Durch das 2malige Aufrufen wird ein WEITERES dsig:Object ELEMENT erzeugt... darf das so sein...???				
		cpkcs.setKeyInformation();
    		 	long start = (new Date()).getTime();    	
    	Document sign = cpkcs.returnSig();
    	System.out.println("Sign-Dauer für " +testNumber + ":" + ((new Date()).getTime()-start));
    
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		
		
	}
	
	public void createL00() throws Exception {
		createL001("1kb");
		createL001("10kb");
		createL001("20kb");
		createL001("50kb");
		createL001("100kb");
		createL001("500kb");
		createL001("1mb");
		createL001("10mb");
	}
	
	public void createL001(String filename) throws Exception {
		String testNumber = "001";
		//Create a Request with number 001, the current Time (+0 hours)
		// and with the Date and ReturnHashInputDate Elements present
				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/"+filename+".txt");		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(false,false,null));
		
		writeFile(vxReqFileL(testNumber,filename),request);
				
	
		writeFile(vxResFileL(testNumber,filename), createResponseL(cpkcs.getX509CertString(), testNumber,"0",filename));
	}
	/**
	 * Method create001.
	 * @throws Exception
	 */
	/* ===================================================================================================================== */
	/* ===================================================================================================================== */
	/* ===================================================================================================================== */
	
	public void create001() throws Exception {
		String testNumber = "001";
		//Create a Request with number 001, the current Time (+0 hours)
		// and with the Date and ReturnHashInputDate Elements present
				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
				
	
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
	/**
	 * Method create002.
	 * @throws Exception
	 */
	public void create002() throws Exception {
		String testNumber = "002";
		//Create a Request with number 002, the current Time (+0 hours)
		// and without the Date and with ReturnHashInputDate Elements present
						
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,false,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
	/**
	 * Method create003.
	 * @throws Exception
	 */
	public void create003() throws Exception {
		String testNumber = "003";
		//Create a Request with number 003, the Time one Day in the past (-24 hours)
		// and with the Date and with ReturnHashInputDate Elements present
				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,-24),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
	/**
	 * Method create004.
	 * @throws Exception
	 */
	public void create004() throws Exception {
		String testNumber = "004";
		//Create a Request with number 004, the current Time (+0 hours)
		// and with the Date and without ReturnHashInputDate Elements present
						
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(false,false,null));
		
		writeFile(vxReqFile(testNumber),request);
				
		writeFile(vxResFile(testNumber), createResponseWithoutHashInputData(cpkcs.getX509CertString(), testNumber,"0"));
	}
	public void create005() throws Exception {
		String testNumber = "005";
		
		String request = 
				createRequestStart(testNumber,true,0, "Reference=\"" + configuration_.getProperty("webbaseDir") + "resources/SignatureVX005.xml\" ")+
				createRequestEnd(false,false,null);
		
		request = replaceString(request,"","");
		request = replaceString(request,"","");				
		writeFile(vxReqFile(testNumber),request);
		
    String response = createResponsePart(readFileCR(configuration_.getProperty("webbaseDir") + "resources/SignatureVX005Cert.xml")) +
				  		vxBean.createSignatureCheck("0")+
				  		vxBean.createXMLDSIGManifestCheck("1","1","1")+	
				  		vxBean.createCertificateCheck("0")+
				  		 "";
						
		writeFile(vxResFile(testNumber), response);
	}
	/**
	 * Method create051.
	 * @throws Exception
	 */
public void create006() throws Exception {
		String testNumber = "006";
  // ERST MAL DAS DOKUMENT ALS STRING AUFBAUEN
   Supplement supp = new Supplement();
      supp.addXMLContent("http://MyServer.com/resources/something.xsd", 
          "");     
      supp.closeSupplement();
      
    String requestEnd = createSignatureInfoEnd()+
              supp.getSupplement() +  createRequestShortEnd(false);
 
 	String requestStart = createRequestStart(testNumber,true,0);
 
   String reqDocString =  
        ""
        +    "daten" ;
    
    InputStream bis = new ByteArrayInputStream(reqDocString.getBytes());
    //Document-Builder holen
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    factory.setValidating(true);
    //factory.setValidating(true);
    DocumentBuilder builder = factory.newDocumentBuilder();
    
    Map m = new HashMap();
    m.put("http://MyServer.com/resources/something.xsd",new ByteArrayInputStream(("").getBytes()));
    
	EntityResolverChain chain = new EntityResolverChain();
    chain.addEntityResolver(new StreamEntityResolver(m));
    chain.addEntityResolver(new MOAEntityResolver());
    builder.setEntityResolver(chain);
    
    
    //Dokument Parsen
    System.out.println(reqDocString);
    //Document reqDoc = builder.parse(bis);
    Document reqDoc = DOMUtils.parseDocument(bis,true,Constants.ALL_SCHEMA_LOCATIONS, null,chain,new MOAErrorHandler());
    //Position für die Signatur angeben
    //String xPath_Pos = "/moa:VerifyXMLSignatureRequest/moa:VerifySignatureInfo/moa:VerifySignatureEnvironment/moa:XMLContent
    String xPath_Pos = "//daten:Document";
    //XPAth-Prefixe deklarieren
    String xPath_Prefix = "daten http://uri2.data.org";
    Position pos = new Position(xPath_Pos, xPath_Prefix,0);   
    	
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
    //Signer erzeugen, der das obige Doc als Basis nimmt, und die Signatur an der besagten stelle einfügt
    System.out.println("REQDOC:"+DOMUtils.serializeNode(reqDoc));
		cpkcs.init(reqDoc,pos);
		cpkcs.setCanoncialization(canAlgCanXML);
	   
    cpkcs.setKeyInformation();    
    /*cpkcs.createEnvelopedDataObject("envelopedData",readFileCR(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"));
		cpkcs.createReferenceWithManifest(new URI("#xpointer(id('envelopedData')/node())"),"manifestObject");*/
	
    Transform[] tr = new Transform[1];
    TransformImplEnvelopedSignature trans = new TransformImplEnvelopedSignature();  
    tr[0] = trans;
    //Enveloped Transformation
    cpkcs.createReferenceWithTransforms(new URI("#myDocument"),tr);   
//Signieren
    cpkcs.returnSig();
    //Serialisieren
  	String request =  requestStart + replaceString(Node2String(reqDoc.getDocumentElement()),"","") + requestEnd;
	
		writeFile(vxReqFile(testNumber),request);
    String response = createResponsePart(cpkcs.getX509CertString()) +
              vxBean.createSignatureCheck("0")+
              vxBean.createCertificateCheck("0")+
               "";
            
    writeFile(vxResFile(testNumber), response);
	}
	public void create007() throws Exception {
    String testNumber = "007";
   
    String dtdLocation = configuration_.getProperty("webbaseDir") + "resources/VX.007DTD.dtd";
    
   // ERST MAL DAS DOKUMENT ALS STRING AUFBAUEN
   Supplement supp = new Supplement();
      supp.addBase64Content(dtdLocation, 
          readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/VX.007DTD.dtd"));     
      supp.closeSupplement();
      
    String requestEnd = createSignatureInfoEnd()+
               createRequestShortEnd(false);
 
   //String reqDocString =  createRequestStart(testNumber,true,0,"","") + 
   String reqDocString =  /*createRequestStart(testNumber,true,0) +*/ 
        ""
        +    "\ndaten\n" /*+ requestEnd*/;
    
    InputStream bis = new ByteArrayInputStream(reqDocString.getBytes());
    //Document-Builder holen
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    factory.setValidating(false);
    
    System.out.println(reqDocString);
    DocumentBuilder builder = factory.newDocumentBuilder();      
    //Dokument Parsen
    Document reqDoc = builder.parse(bis);
    //Position für die Signatur angeben
    String xPath_Pos = "/Document";
    //XPAth-Prefixe deklarieren
    String xPath_Prefix = "";//"data http://uri2.data.org";
    Position pos = new Position(xPath_Pos, xPath_Prefix,0);   
      
    CreatePKCSSignature cpkcs = new CreatePKCSSignature();
    //Signer erzeugen, der das obige Doc als Basis nimmt, und die Signatur an der besagten stelle einfügt
    cpkcs.init(reqDoc,pos);
    cpkcs.setCanoncialization(canAlgCanXML);
     
    cpkcs.setKeyInformation();    
    /*cpkcs.createEnvelopedDataObject("envelopedData",readFileCR(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"));
    cpkcs.createReferenceWithManifest(new URI("#xpointer(id('envelopedData')/node())"),"manifestObject");*/
  
    Transform[] tr = new Transform[1];
    TransformImplEnvelopedSignature trans = new TransformImplEnvelopedSignature();  
    tr[0] = trans;
    //Enveloped Transformation
    cpkcs.createReferenceWithTransforms(new URI("#myDocument"),tr);   
//Signieren
    cpkcs.returnSig();
    //Serialisieren
    String request =  Node2String(reqDoc.getDocumentElement());
    
    int i_pos = request.indexOf("");
    request = request.substring("".length());
	request = ""+request;
    
    System.out.println("DOC:"+request);
    
    request =""+Base64Utils.encode(request.getBytes())+"//dsig:Signature"+supp.getSupplement()+"TrustProfile1";
    
    
    
    /*int i_pos = request.indexOf("\n" +request.substring(i_pos);*/
    
    /*i_pos = request.indexOf(""+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		"id('signed-data')/node()"+
		""+
		""+
		""+
		"4lngV1x/OvR8iFWEBenH4fDihwA="+
		""+
		""+
		""+
		""+
		"id('refetsi')/etsi:QualifyingProperties/etsi:SignedProperties"+
		""+
		""+
		""+
		"1j0DWguieuw2cGA06gFjoSNXr+w="+
		""+
		""+
		"Yb6fsPNbKyYW+u7cU1EqF9n5QrwLXHqdGD4tJNT5+sA7kQR3Ztqz965vlBH+1pJE"+
		"nGxehxXsesZboVvkJa/jhuI0goCTW9KkdGOP71B7o7/vlyBbxaYKpnVNtBU4/qtT"+
		"xba7M0E32X+tm/x9O6foXIM0AoP3oQBZmjo9rEJ9kfk="+
		""+
		""+
		"MIIFJTCCBA2gAwIBAgICGTcwDQYJKoZIhvcNAQEFBQAwgaExCzAJBgNVBAYTAkFU"+
		"MUgwRgYDVQQKEz9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGlt"+
		"IGVsZWt0ci4gRGF0ZW52ZXJrZWhyIEdtYkgxIzAhBgNVBAsTGmEtc2lnbi1URVNU"+
		"LVByZW1pdW0tRW5jLTAxMSMwIQYDVQQDExphLXNpZ24tVEVTVC1QcmVtaXVtLUVu"+
		"Yy0wMTAeFw0wMzAyMTAxMzIwNThaFw0wNjAyMTAxMzIwNThaMGoxCzAJBgNVBAYT"+
		"AkFUMRwwGgYDVQQDExNUZXN0cGVyc29uIE1PQTQgQlJaMQwwCgYDVQQEEwNCUlox"+
		"GDAWBgNVBCoTD1Rlc3RwZXJzb24gTU9BNDEVMBMGA1UEBRMMNzkwMTg3NDYxNjMz"+
		"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDS/UW1/tZeCh7HHQmj8auUTEc4"+
		"edAgRDkUVKOm0tF3kE3WZlhGDZL0p84xsdIKyI+bwDCMATATkQwDo/Xxn9jJMi4/"+
		"t80bNyRsHk9giA0wcvz9NgmEcDwKNqawGsR9gNeK8TyIC8AuDkj1EwtkAObMvtp/"+
		"Z1phi47x3JxDDfGDpQIDAQABo4ICHzCCAhswEwYDVR0jBAwwCoAIS7OAw3GTPNgw"+
		"JwYIKwYBBQUHAQMBAf8EGDAWMAgGBgQAjkYBATAKBggrBgEFBQcLATCBggYIKwYB"+
		"BQUHAQEEdjB0MCkGCCsGAQUFBzABhh1odHRwOi8vd3d3LmEtdHJ1c3QuYXQ6ODIv"+
		"b2NzcDBHBggrBgEFBQcwAoY7aHR0cDovL3d3dy5hLXRydXN0LmF0L2NlcnRzL2Et"+
		"c2lnbi1URVNULVByZW1pdW0tU2lnLTAxYS5jcnQwgZQGA1UdIASBjDCBiTB9BgYq"+
		"KAARAQQwczA1BggrBgEFBQcCARYpaHR0cDovL3d3dy5hLXRydXN0LmF0L2RvY3Mv"+
		"Y3AvYS1zaWduLVRFU1QwOgYIKwYBBQUHAgIwLhosRGllc2VzIFplcnRpZmlrYXQg"+
		"ZGllbnQgbnVyIHp1IFRlc3R6d2Vja2VuICEwCAYGBACLMAEBMG8GA1UdHwRoMGYw"+
		"ZKBioGCGXmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQvb3U9YS1zaWduLVRFU1QtUHJl"+
		"bWl1bS1FbmMtMDEsbz1BLVRydXN0LGM9QVQ/Y2VydGlmaWNhdGVyZXZvY2F0aW9u"+
		"bGlzdD8wEQYDVR0OBAoECE4DxL9ky4M+MA4GA1UdDwEB/wQEAwIGwDAgBgNVHREE"+
		"GTAXgRV0ZXN0cGVyc29uNEBicnouZ3YuYXQwCQYDVR0TBAIwADANBgkqhkiG9w0B"+
		"AQUFAAOCAQEAioVvsZN+NnQxXMTGdjKveTBMRTYzHflkSC8lI9XXltP5+mjIuoB2"+
		"Tn6voovA8dXz9jTsnQt8f8ye0CL2bSS9UVD1jv8So3bavquW+HlkZBAZvL39APNL"+
		"PjUUnWn0QOnrQAJ6W47UwGAUgEw3KcBcJaEa4Xb/8kUj618xGzWl6X0mKsVpxkrf"+
		"+5Cj+nmwDqChll08/90MmhSY4M5FrvmQ9GjAN5FHVsk0FPp02tKCRzoBJtzpB1DW"+
		"KHlgiDHUAXy5eD0XI7PXebPNZ4InvY/jC/IH8PRLdJT249YQmUxZ4neTtFDvb8C1"+
		"Qh6k725fh3hVxqX8ZwwWj9+iGQVk53K3CA=="+
		/*""+
		readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/IAIKRootMusterbehoerde.cer")+
		""+*/
		""+
		""+
		""+
		""+
		"IdentityLink"+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		"2003-03-04T12:32:54Z"+
		""+
		""+
		""+
		""+
		"Frhu1o4mL4gQHdJcU0xSA/h4COE="+
		""+
		""+
		"CN=a-sign-TEST-Premium-Enc-01,OU=a-sign-TEST-Premium-Enc-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT"+
		"6455"+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		"text/xml"+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		""+
		"//dsig:Signature"+
		""+
		"TrustProfile1"+
		"";
		
	    String response = 
	    ""+
		""+
		"	"+
		"		"+
		"			serialNumber=790187461633,givenName=Testperson MOA4,SN=BRZ,CN=Testperson MOA4 BRZ,C=AT"+
		"			"+
		"				CN=a-sign-TEST-Premium-Enc-01,OU=a-sign-TEST-Premium-Enc-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT"+
		"				6455"+
		"			"+
		"MIIFJTCCBA2gAwIBAgICGTcwDQYJKoZIhvcNAQEFBQAwgaExCzAJBgNVBAYTAkFU"+
		"MUgwRgYDVQQKEz9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGlt"+
		"IGVsZWt0ci4gRGF0ZW52ZXJrZWhyIEdtYkgxIzAhBgNVBAsTGmEtc2lnbi1URVNU"+
		"LVByZW1pdW0tRW5jLTAxMSMwIQYDVQQDExphLXNpZ24tVEVTVC1QcmVtaXVtLUVu"+
		"Yy0wMTAeFw0wMzAyMTAxMzIwNThaFw0wNjAyMTAxMzIwNThaMGoxCzAJBgNVBAYT"+
		"AkFUMRwwGgYDVQQDExNUZXN0cGVyc29uIE1PQTQgQlJaMQwwCgYDVQQEEwNCUlox"+
		"GDAWBgNVBCoTD1Rlc3RwZXJzb24gTU9BNDEVMBMGA1UEBRMMNzkwMTg3NDYxNjMz"+
		"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDS/UW1/tZeCh7HHQmj8auUTEc4"+
		"edAgRDkUVKOm0tF3kE3WZlhGDZL0p84xsdIKyI+bwDCMATATkQwDo/Xxn9jJMi4/"+
		"t80bNyRsHk9giA0wcvz9NgmEcDwKNqawGsR9gNeK8TyIC8AuDkj1EwtkAObMvtp/"+
		"Z1phi47x3JxDDfGDpQIDAQABo4ICHzCCAhswEwYDVR0jBAwwCoAIS7OAw3GTPNgw"+
		"JwYIKwYBBQUHAQMBAf8EGDAWMAgGBgQAjkYBATAKBggrBgEFBQcLATCBggYIKwYB"+
		"BQUHAQEEdjB0MCkGCCsGAQUFBzABhh1odHRwOi8vd3d3LmEtdHJ1c3QuYXQ6ODIv"+
		"b2NzcDBHBggrBgEFBQcwAoY7aHR0cDovL3d3dy5hLXRydXN0LmF0L2NlcnRzL2Et"+
		"c2lnbi1URVNULVByZW1pdW0tU2lnLTAxYS5jcnQwgZQGA1UdIASBjDCBiTB9BgYq"+
		"KAARAQQwczA1BggrBgEFBQcCARYpaHR0cDovL3d3dy5hLXRydXN0LmF0L2RvY3Mv"+
		"Y3AvYS1zaWduLVRFU1QwOgYIKwYBBQUHAgIwLhosRGllc2VzIFplcnRpZmlrYXQg"+
		"ZGllbnQgbnVyIHp1IFRlc3R6d2Vja2VuICEwCAYGBACLMAEBMG8GA1UdHwRoMGYw"+
		"ZKBioGCGXmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQvb3U9YS1zaWduLVRFU1QtUHJl"+
		"bWl1bS1FbmMtMDEsbz1BLVRydXN0LGM9QVQ/Y2VydGlmaWNhdGVyZXZvY2F0aW9u"+
		"bGlzdD8wEQYDVR0OBAoECE4DxL9ky4M+MA4GA1UdDwEB/wQEAwIGwDAgBgNVHREE"+
		"GTAXgRV0ZXN0cGVyc29uNEBicnouZ3YuYXQwCQYDVR0TBAIwADANBgkqhkiG9w0B"+
		"AQUFAAOCAQEAioVvsZN+NnQxXMTGdjKveTBMRTYzHflkSC8lI9XXltP5+mjIuoB2"+
		"Tn6voovA8dXz9jTsnQt8f8ye0CL2bSS9UVD1jv8So3bavquW+HlkZBAZvL39APNL"+
		"PjUUnWn0QOnrQAJ6W47UwGAUgEw3KcBcJaEa4Xb/8kUj618xGzWl6X0mKsVpxkrf"+
		"+5Cj+nmwDqChll08/90MmhSY4M5FrvmQ9GjAN5FHVsk0FPp02tKCRzoBJtzpB1DW"+
		"KHlgiDHUAXy5eD0XI7PXebPNZ4InvY/jC/IH8PRLdJT249YQmUxZ4neTtFDvb8C1"+
		"Qh6k725fh3hVxqX8ZwwWj9+iGQVk53K3CA=="+
		"			"+
		"		"+
		"	"+
		"	"+
		"		0"+
		"	"+
		"	"+
		"		0"+
		"	"+
		"";
	  
	    writeFile(vxReqFile(testNumber),request);
	    
	    writeFile(vxResFile(testNumber),response);
  	}
  	
  	public void create009() throws Exception {
		String testNumber = "009";
  // ERST MAL DAS DOKUMENT ALS STRING AUFBAUEN
   Supplement supp = new Supplement();
      supp.addXMLContent("http://MyServer.com/resources/something.xsd", 
          "");     
      supp.closeSupplement();
      
    String requestEnd = createSignatureInfoEnd()+
              supp.getSupplement() +  createRequestShortEnd(false);
 
 	String requestStart = createRequestStart(testNumber,true,0);
 
   String reqDocString =  
        ""
        +    "daten" ;
    
    InputStream bis = new ByteArrayInputStream(reqDocString.getBytes());
    //Document-Builder holen
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    factory.setValidating(true);
    //factory.setValidating(true);
    DocumentBuilder builder = factory.newDocumentBuilder();
    
    Map m = new HashMap();
    m.put("http://MyServer.com/resources/something.xsd",new ByteArrayInputStream(("").getBytes()));
    
	EntityResolverChain chain = new EntityResolverChain();
    chain.addEntityResolver(new StreamEntityResolver(m));
    chain.addEntityResolver(new MOAEntityResolver());
    builder.setEntityResolver(chain);
    
    
    //Dokument Parsen
    System.out.println(reqDocString);
    //Document reqDoc = builder.parse(bis);
    Document reqDoc = DOMUtils.parseDocument(bis,true,Constants.ALL_SCHEMA_LOCATIONS, null,chain,new MOAErrorHandler());
    //Position für die Signatur angeben
    //String xPath_Pos = "/moa:VerifyXMLSignatureRequest/moa:VerifySignatureInfo/moa:VerifySignatureEnvironment/moa:XMLContent
    String xPath_Pos = "//daten:Document";
    //XPAth-Prefixe deklarieren
    String xPath_Prefix = "daten http://uri2.data.org";
    Position pos = new Position(xPath_Pos, xPath_Prefix,0);   
    	
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
    //Signer erzeugen, der das obige Doc als Basis nimmt, und die Signatur an der besagten stelle einfügt
    System.out.println("REQDOC:"+DOMUtils.serializeNode(reqDoc));
		cpkcs.init(reqDoc,pos);
		cpkcs.setCanoncialization(canAlgCanXML);
	   
    cpkcs.setKeyInformation();    
    /*cpkcs.createEnvelopedDataObject("envelopedData",readFileCR(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"));
		cpkcs.createReferenceWithManifest(new URI("#xpointer(id('envelopedData')/node())"),"manifestObject");*/
	
    Transform[] tr = new Transform[1];
    TransformImplEnvelopedSignature trans = new TransformImplEnvelopedSignature();  
    tr[0] = trans;
    //Enveloped Transformation
    cpkcs.createReferenceWithTransforms(new URI("#xpointer(id(myDocument))"),tr);   
//Signieren
    cpkcs.returnSig();
    //Serialisieren
  	String request =  requestStart + replaceString(Node2String(reqDoc.getDocumentElement()),"","") + requestEnd;
	
		writeFile(vxReqFile(testNumber),request);
    String response = createResponsePart(cpkcs.getX509CertString()) +
              vxBean.createSignatureCheck("0")+
              vxBean.createCertificateCheck("0")+
               "";
            
    writeFile(vxResFile(testNumber), response);
	}
	public void create101() throws Exception {
		String testNumber = "101";
				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
   
   		Supplement supp = new Supplement();
    	supp.addMetaInfo("text/plain","http://www.buergerkarte.at");
    	supp.addBase64Content(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt", 
    			readBinaryFileAsBase64(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));   	
    	supp.closeSupplement();
   		//supp.addProfileID("Some ID");
   		
		String requestEnd = createSignatureInfoEnd()+
							supp.getSupplement() +	createRequestShortEnd(false);
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				requestEnd);
		
		writeFile(vxReqFile(testNumber),request);
    
    String response = createResponsePart(cpkcs.getX509CertString()) +
              vxBean.createSignatureCheck("0")+
              /*vxBean.createXMLDSIGManifestCheck("0","","1")+  */
              vxBean.createCertificateCheck("0")+
               "";
            
    writeFile(vxResFile(testNumber), response);	
  }
	public void create102() throws Exception {
		String testNumber = "102";
				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
   
   		Supplement supp = new Supplement();
    	supp.addMetaInfo("text/plain",null);
    	supp.addBase64Content(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt", 
    			readBinaryFileAsBase64(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));   	
    	supp.closeSupplement();
   		//supp.addProfileID("Some ID");
   		
		String requestEnd = createSignatureInfoEnd()+
							supp.getSupplement() +	""+createRequestShortEnd(false);
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				requestEnd);
		
		writeFile(vxReqFile(testNumber),request);
				
	
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
		public void create103() throws Exception {
		String testNumber = "103";
				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
   
   		Supplement supp = new Supplement();
    	//supp.addMetaInfo("text/plain",null);
    	supp.addXMLContent(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));
    	//supp.addBase64Content(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt", 
    	//		readBinaryFileAsBase64(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"));   	
    	supp.closeSupplement();
   		//supp.addProfileID("Some ID");
   		
		String requestEnd = createSignatureInfoEnd()+
							supp.getSupplement() +	""+createRequestShortEnd(false);
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				requestEnd);
		
		writeFile(vxReqFile(testNumber),request);
				
	
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
public void create104() throws Exception {
		String testNumber = "104";
				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
    
		Supplement supp = new Supplement();
    	supp.addXMLContent(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt", readFileCR(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));
    	supp.closeSupplement();
   		
		String requestEnd = 
				createSignatureInfoEnd()+ 
				supp.getSupplement()+""+
				createRequestShortEnd(false);
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber+"	- Supplement/Content/XMLContent instead of Supplement/Content/Base64Content",true,0),
				cpkcs.returnSig(),
				requestEnd);
	
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
	
		public void create105() throws Exception {
		String testNumber = "105";
				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testXML.txt");		
		cpkcs.setKeyInformation();
    
		Supplement supp = new Supplement();
    	supp.addXMLContent(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt", readFileCR(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));
    	supp.closeSupplement();
   		
   		Supplement supp2 = new Supplement();
    	supp2.addBase64Content(configuration_.getProperty("webbaseDir")+"resources/testXML.txt", readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/testXML.txt"));
    	supp2.closeSupplement();
   		
		String requestEnd = 
				createSignatureInfoEnd()+ 
				supp.getSupplement()+
				supp2.getSupplement() +
				createRequestShortEnd(true);
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber + " - 2 Supplement elements",true,0),
				cpkcs.returnSig(),
				requestEnd);
		String response = createResponsePart(cpkcs.getX509CertString()) +
						""+
						readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/testSimple.txt") + 
						""+
						""+
						readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/testXML.txt") + 
						""+
				  		vxBean.createSignatureCheck("0")+
				  		vxBean.createCertificateCheck("0")+
				  		 "";
	
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), response);
	}
public void create106() throws Exception {
		String testNumber = "106";
				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
    	   		
		String requestEnd = 
				createSignatureInfoEnd()+ 
				"SupplementProfile2" +
				"" +
        "SupplementProfile1" +
				createRequestShortEnd(false);
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber +" - 2 SupplementProfileID elements" ,true,0),
				cpkcs.returnSig(),
				requestEnd);
	
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
	
	public void create301() throws Exception {
		
		String testNumber = "301";
		
		//Testcast with another canoicalization algorithm				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXMLwithCom);
		//cpkcs.createReference(true,"Dies sind testdaten");
		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
	/**
	 * Method create302.
	 * @throws Exception
	 */
	public void create302() throws Exception {
		String testNumber = "302";
		
			//Testcast with another canoicalization algorithm				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgExcXML);
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0"));
	}
	/**
	 * Method create303.
	 * @throws Exception
	 */
	public void create303() throws Exception {
		String testNumber = "303";
		
		//Testcast with another canoicalization algorithm				
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgExcXMLwithCom);
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0"));
	}
	
	public void create304() throws Exception {
		
		String testNumber = "304";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.initECDSA();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		
		//cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		//cpkcs.createEnvelopedDataObject("envelopedData",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));
		
		cpkcs.createReference(true,readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt"),"envelopedData");
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0","CN=IAIK ECDSA Test,OU=JavaSecurity,O=IAIK,C=AT","CN=IAIK ECDSA Test,OU=JavaSecurity,O=IAIK,C=AT","68172"));
	}
	/**
	 * Method create305.
	 * @throws Exception
	 */
	public void create305() throws Exception {
		String testNumber = "305";
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		
		String refData = "Dies sind Testdaten";
		
		cpkcs.createReference(true,refData);		
		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0",refData));
	}
	
	/**
	 * Method create307.
	 * @throws Exception
	 */
	public void create307() throws Exception {
		String testNumber = "307";
	CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
		cpkcs.setKeyInformation();
    	
    	Supplement supp = new Supplement();
    	supp.addXMLContent(configuration_.getProperty("baseDir")+"resources/testSimple.txt", readFileCR(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));
    	supp.closeSupplement();
    
    	String requestEnd = createSignatureInfoEnd()+
							supp.getSupplement() +
							createRequestShortEnd(true);
        	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				requestEnd);
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0"));
	}
		
	/**
	 * Method create308.
	 * @throws Exception
	 */
	public void create308() throws Exception {
		String testNumber = "308";
	CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
		cpkcs.setKeyInformation();
    	
   	Supplement supp = new Supplement();
    	supp.addXMLContent(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt", readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));
    	supp.closeSupplement();
   
    	
		String requestEnd = createSignatureInfoEnd()+ supp.getSupplement() + 
								createRequestShortEnd(false);
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				requestEnd);
		
		//request = replaceString(request,"","VERAENDERTE DATEN und die Ursprungsdaten: ");
		request = replaceString(request,"Dies sind Testdaten","VERAENDERTE DATEN und die Ursprungsdaten: Dies sind Testdaten");
		//request = replaceString(request,Base64Utils.encode("Dies sind Testdaten".getBytes()),Base64Utils.encode("VERAENDERTE DATEN und die Ursprungsdaten: Dies sind Testdaten".getBytes()));
		//request = replaceString(request,"","");
		/*request = replaceString(request,"Reference=\""+configuration_.getProperty("baseDir")+"resources/testSimple.txt\"","Reference=\"\"");
		request = replaceString(request,"URI=\""+configuration_.getProperty("webbaseDir")+"resources/testSimple.txt\"","URI=\"\"");*/
		writeFile(vxReqFile(testNumber),request);
		String response = createResponse(cpkcs.getX509CertString(),testNumber,"1",1);
		writeFile(vxResFile(testNumber), response);
	}
	public void create310() throws Exception {
		String testNumber = "310";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		
		//Erzeugen der Base64-Daten				
		//String tmp = readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/testSimple.txt");
		
		URI target = new URI(configuration_.getProperty("webbaseDir") + "resources/testSimple.txtbase64.enc");
		
		Transform[] tr = new Transform[1];
		tr[0] = new TransformImplBase64Decode();
		InputStream s = getHttpInputStream(target.toString());
		tr[0].setInput(s,null);			
		
		cpkcs.createReferenceWithTransforms(target,tr);		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
				
	
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0"));
	}
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------311 scheint die XPAth - Transformation nicht richtig auszuführen-	
// (Siehe Output in der Konsole.....)
	public void create311() throws Exception {
		String testNumber = "311";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
		
		Transform[] tr = new Transform[1];
		TransformImplXPath trans = new TransformImplXPath();	
//		TransformImplXSLT trans = new TransformImplXSLT();
			
	
		InputStream s = getHttpInputStream(configuration_.getProperty("webbaseDir")+"resources/BookData.xml");
//		InputStream s2 = new FileInputStream(configuration_.getProperty("baseDir")+"resources/transform.xsl");
		trans.setInput(s,null);	
//		trans.setStyleSheet(s2,null);
		trans.addNSDeclaration("data",new URI("http://uri.data.org"));   //new URI("file:/"+configuration_.getProperty("baseDir")+"resources/BookData.xml"));
  //  trans.setXPath("ancestor-or-self::data:first-name");
	 trans.setXPath("ancestor-or-self::text()/ancestor-or-self::data:first-name");
		tr[0] = trans;
		cpkcs.createReferenceWithTransforms(new URI(configuration_.getProperty("webbaseDir") + "resources/BookData.xml"),tr);		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
				
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0",1,"text:Ellipse"));
	}
public void create312() throws Exception 
	{	String testNumber = "312";
	
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init("signature");
		cpkcs.setCanoncialization(canAlgCanXML);						
		
		Transform[] tr = new Transform[1];
		TransformImplXPath2 trans = new TransformImplXPath2();	
		InputStream s = getHttpInputStream(configuration_.getProperty("webbaseDir")+"resources/CX1_book.xsl");
		trans.setInput(s,null);									
		HashMap temp = new HashMap();
		temp.put("data",new URI("http://uri.data.org"));
		trans.addXPathFilter("/data:book/data:first-name",TransformImplXPath2.FILTER_MODE_SUBTRACT_,temp);
		tr[0] = trans;
		//System.out.println(getTransformsResult(tr));
		cpkcs.createReferenceWithTransforms(new URI(configuration_.getProperty("webbaseDir") + "resources/BookData.xml"),tr,"reference-1");		
		cpkcs.setKeyInformation();
		
		String request = 
		makeOutputFile(
				createRequestStart("312",true,0),
				cpkcs.returnSig(),
				createSignatureInfoEnd()
				+ createRequestShortEnd(false));
		
		writeFile(vxReqFile(testNumber),request);	
		
		String response = createResponsePart(cpkcs.getX509CertString()) +
				  		vxBean.createSignatureCheck("0")+
				  		vxBean.createCertificateCheck("0")+
				  		 "";
						
		writeFile(vxResFile(testNumber), response);
	}
public void create313() throws Exception 
	{	String testNumber = "313";
  // ERST MAL DAS DOKUMENT ALS STRING AUFBAUEN
      
    String requestEnd = createRequestEnd(true,false,null);
 
   String reqDocString =  createRequestStart(testNumber,true,0) + 
        ""
        +    "" + requestEnd;
    
    InputStream bis = new ByteArrayInputStream((""
        +    "").getBytes());
    //Document-Builder holen
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    DocumentBuilder builder = factory.newDocumentBuilder();      
    //Dokument Parsen
   Document reqDoc = builder.parse(bis);
   
   System.out.println(DOMUtils.serializeNode(reqDoc.getDocumentElement()));
    //Position für die Signatur angeben
    //String xPath_Pos = "/moa:VerifyXMLSignatureRequest/moa:VerifySignatureInfo/moa:VerifySignatureEnvironment/moa:XMLContent/data:Document";
    String xPath_Pos = "/node()";
    //XPAth-Prefixe deklarieren
    String xPath_Prefix = "data xmlns:data=\"http://uri.data.org\"";
    Position pos = new Position(xPath_Pos, xPath_Prefix,0);   
        
    CreatePKCSSignature cpkcs = new CreatePKCSSignature();
    //Signer erzeugen, der das obige Doc als Basis nimmt, und die Signatur an der besagten stelle einfügt
    cpkcs.init(reqDoc,pos);
    cpkcs.setCanoncialization(canAlgCanXML);
     
    cpkcs.setKeyInformation(1);    
    //cpkcs.createEnvelopedDataObject("envelopedData",readFileCR(configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"));
    //cpkcs.createReferenceWithManifest(new URI("#xpointer(id('envelopedData')/node())"),"manifestObject");
  
    Transform[] tr = new Transform[1];
    TransformImplEnvelopedSignature trans = new TransformImplEnvelopedSignature();  
    tr[0] = trans;
    //Enveloped Transformation
    cpkcs.createReferenceWithTransforms(new URI(""),tr);   
//Signieren
    cpkcs.returnSig();
    //Serialisieren
    String request =  Node2String(reqDoc.getDocumentElement());
  
    writeFile(vxReqFile(testNumber),createRequestStart(testNumber,true,0).trim() +cutXML(request).trim()+requestEnd.trim());
    writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0",1,"text:"+""));
	}
	
	public void create314() throws Exception 
	{	String testNumber = "314";
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init("signature");
		cpkcs.setCanoncialization(canAlgCanXML);						
		
		Transform[] tr = new Transform[1];
		TransformImplXSLT trans = new TransformImplXSLT();	
		InputStream s = getHttpInputStream(configuration_.getProperty("webbaseDir")+"resources/CX1_bookref.xsl");
		trans.setStyleSheet(s,new URI("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/CX1_bookref.xsl"));
		tr[0] = trans;	
		cpkcs.createReferenceWithTransforms(new URI(configuration_.getProperty("webbaseDir") + "resources/BookData.xml"),tr,"reference-1");		
		cpkcs.setKeyInformation();
		
		String request = 
		makeOutputFile(
				createRequestStart("314",true,0),
				cpkcs.returnSig(),
				createSignatureInfoEnd()
				+ createRequestShortEnd(false));
		
		writeFile(vxReqFile(testNumber),request);	
		
		String response = createResponsePart(cpkcs.getX509CertString()) +
				  		vxBean.createSignatureCheck("0")+
				  		vxBean.createCertificateCheck("0")+
				  		 "";
						
		writeFile(vxResFile(testNumber), response);
	}
	
public void create314_2() throws Exception 
	{	String testNumber = "314_2";
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init("signature");
		cpkcs.setCanoncialization(canAlgCanXML);						
		
		Transform[] tr = new Transform[1];
		TransformImplXSLT trans = new TransformImplXSLT();	
		InputStream s = getHttpInputStream(configuration_.getProperty("webbaseDir")+"resources/CX1_bookref.xsl");
		trans.setStyleSheet(s,new URI("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/CX1_bookref.xsl"));
		tr[0] = trans;	
		cpkcs.createReferenceWithTransforms(new URI(configuration_.getProperty("webbaseDir") + "resources/BookData.xml"),tr,"reference-1");		
		cpkcs.setKeyInformation();
		
		Supplement supp = new Supplement();
		String suppContent = readFileCR(configuration_.getProperty("baseDir")+"resources/CX1_book.xsl");
		suppContent = replaceString(suppContent, "","");
    	supp.addXMLContent("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/CX1_book.xsl", suppContent );
    	supp.closeSupplement();
		
      	String request = 
		makeOutputFile(
				createRequestStart("314_2",true,0),
				cpkcs.returnSig(),
				createSignatureInfoEnd() +
				supp.getSupplement()  
				+ createRequestShortEnd(false));
		
/*		request = replaceString(request, "http://moa-test.brz.intra.gv.at", "http://MyServer.com");
    request = replaceString(request, "http://moa-test.brz.intra.gv.at", "http://MyServer.com");
    request = replaceString(request, "http://moa-test.brz.intra.gv.at", "http://MyServer.com");
    //Hinweis: ich nehmen an, die URI in DSIG:REFERENCE sollte schon stimmen.... 
    request = replaceString(request, "http://MyServer.com", "http://moa-test.brz.intra.gv.at");				*/
		writeFile(vxReqFile(testNumber),request);	
		
		String response = createResponsePart(cpkcs.getX509CertString()) +
				  		vxBean.createSignatureCheck("0")+
				  		vxBean.createCertificateCheck("0")+
				  		 "";						
		writeFile(vxResFile(testNumber), response);
	}
	
	
	public void create315() throws Exception {
		String testNumber = "315";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		//cpkcs.createReference(true,"Dies sind testdaten");
				URI target = new URI(configuration_.getProperty("webbaseDir") + "resources/test_wo_canonicalisation.XML");
		
		Transform[] tr = new Transform[1];
		tr[0] = new TransformImplCanonicalXML();	
		InputStream s = getHttpInputStream(target.toString());
		tr[0].setInput(s,null);									
		
		String erg = getTransformsResult(tr);
		
		cpkcs.createReferenceWithTransforms(target,tr);				
		//cpkcs.createReference(false, "file:/"+ configuration_.getProperty("baseDir")+"resources/test_wo_canonicalisation.XML");
		//cpkcs.createReference(false, "file:/"+ configuration_.getProperty("baseDir")+"resources/test_w_canonicalisation.XML");
//		cpkcs.createReferenceWithManifest(new URI("file:/"+ configuration_.getProperty("baseDir")+"resources/test_w_canonicalisation.XML"),"canonicalizedData");
		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		
		
		writeFile(vxReqFile(testNumber),request);
				
	
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0",erg));
	}
	
	public void create316() throws Exception {
		String testNumber = "316";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		URI target = new URI(configuration_.getProperty("webbaseDir") + "resources/test_wo_canonicalisation.XML");
		
		Transform[] tr = new Transform[1];
		tr[0] = new TransformImplCanonicalXMLWithComments();	
		InputStream s = getHttpInputStream(target.toString());
		tr[0].setInput(s,null);									
		
		String erg = getTransformsResult(tr);
		
		cpkcs.createReferenceWithTransforms(target,tr);				
	
		cpkcs.setKeyInformation();  	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
	
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0",erg));
	}
		public void create317() throws Exception {
		String testNumber = "317";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		URI target = new URI(configuration_.getProperty("webbaseDir") + "resources/test_wo_canonicalisation.XML");
		Transform[] tr = new Transform[1];
		tr[0] = new TransformImplExclusiveCanonicalXML();	
		InputStream s = getHttpInputStream(target.toString());
		tr[0].setInput(s,null);
		String erg = getTransformsResult(tr);
		cpkcs.createReferenceWithTransforms(target,tr);				
	
		cpkcs.setKeyInformation();  	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
	
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0",erg));
	}
	public void create318() throws Exception {
		String testNumber = "318";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
				URI target = new URI(configuration_.getProperty("webbaseDir") + "resources/test_wo_canonicalisation.XML");
		Transform[] tr = new Transform[1];
		tr[0] = new TransformImplExclusiveCanonicalXMLWithComments();	
		InputStream s = getHttpInputStream(target.toString());
		tr[0].setInput(s,null);
											
		String erg = getTransformsResult(tr);				
		cpkcs.createReferenceWithTransforms(target,tr);				
	
		cpkcs.setKeyInformation();  	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
	
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0",erg));
	}
	
	public void create318_2() throws Exception {
		String testNumber = "318_2";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		
		//Create a base64-encoded version of the xml file
		
		//String tmp = readBinaryFileAsBase64(configuration_.getProperty("baseDir")+"resources/test_wo_canonicalisation.XML");
		
		URI target = new URI(configuration_.getProperty("webbaseDir") + "resources/test_wo_canonicalisation.XMLbase64.enc");
				
		Transform[] tr = new Transform[3];
		tr[0] = new TransformImplBase64Decode();
		InputStream s = getHttpInputStream(target.toString());
		tr[0].setInput(s,null);						
		tr[1] = new TransformImplCanonicalXMLWithComments();	
		tr[1].setInput(s,null);									
		tr[2] = new TransformImplExclusiveCanonicalXML();	
		tr[2].setInput(s,null);									
		String erg = getTransformsResult(tr);				
		cpkcs.createReferenceWithTransforms(target,tr);				
	
		cpkcs.setKeyInformation();  	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
	
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0",erg));
	}
	
	/**
	 * Method create319: 
	 * SignedInfo/Reference appears two times:
	 * the first reference points to an enveloped dsig:Object,
	 * the seconde reference points to an external File
	 * @throws Exception
	 */
	public void create319() throws Exception {
		String testNumber = "319";
		
		
       // Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();  // Create from whole cloth
//        Element root =  (Element) document.createElement("Data");
  //      root.appendChild(document.createTextNode(readFileCR(configuration_.getProperty("baseDir")+"resources/test-ee2003_normal.derbase64.enc.bak")) );    		
        //root.appendChild(document.createTextNode("Hallo\nHallo\nHallo"));    		
        
        
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);		
		cpkcs.createReference(true,"Dies sind Testdaten");		
		//cpkcs.createReferenceEnvElement(root);		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
		cpkcs.setKeyInformation();
    	
    	Document sign = cpkcs.returnSig();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		/*String erg = "Dies sind Testdaten" +
					 "\n" +
					 "		\n" +
					 "		\n" +
					 "" +
					 readFileCR(configuration_.getProperty("baseDir")+"resources/testSimple.txt");					*/
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(),testNumber,"0","Dies sind Testdaten",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")));
	}
	
	/**
	 * Method create320:
	 * The element KeyInfo does NOT contain the X509-certificate but
	 *  an URI pointing to an external xml-encoded X509-file
	 * @throws Exception
	 */
	public void create320() throws Exception {
		String testNumber = "320";
		
		//RetrievalMethdos instead of the integratede Keys
		
		//URI fileURI = new URI(configuration_.getProperty("baseDir") + "resources/test-ee2003_normal.der");
		URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml");
		URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data");
		//URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#rawX509Certificate");
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation(false, fileURI, typeURI, null);
    	Document sign = cpkcs.returnSig();	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(readFileCR(configuration_.getProperty("webbaseDir") + "resources/SignatureVX005Cert.xml"),testNumber,"0"));
	}
public void create320_2() throws Exception {
		String testNumber = "320_2";
		
		//RetrievalMethdos instead of the integratede Keys
		
		//URI fileURI = new URI(configuration_.getProperty("baseDir") + "resources/test-ee2003_normal.der");
		URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/TEMPX509Data.xml");
		URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data");
		//URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#rawX509Certificate");
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation(false, fileURI, typeURI, null);
//		Supplement supp = new Supplement();
//		supp.addXMLContent(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml",readFileCR(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml"));
//		supp.closeSupplement();
    	Document sign = cpkcs.returnSig();	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,true,configuration_.getProperty("webbaseDir") + "resources/TEMPX509Data.xml"));
	    
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(readFileCR(configuration_.getProperty("webbaseDir") + "resources/SignatureVX005Cert.xml"),testNumber,"0"));
	}
		/**
		 * Method create321.
		 * The element KeyInfo does NOT contain the X509-certificate but
		 * an URI pointing to an external raw X509-file
		 * @throws Exception
		 */
		public void create321() throws Exception {
		String testNumber = "321";
		
		//RetrievalMethdos instead of the integratede Keys
		
		URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/test-ee2003_normal.der");
		URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#rawX509Certificate");
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
	cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");		
		cpkcs.setKeyInformation(false, fileURI, typeURI, null);
   	Document sign = cpkcs.returnSig();	String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		writeFile(vxResFile(testNumber), createResponse(readFileCR(configuration_.getProperty("webbaseDir") + "resources/SignatureVX005Cert.xml"),testNumber,"0"));
	}
	/**
	 * Method create322.
	 * The reference in the signature points with an xpointer 
	 * to the ID of an embedded valid manifest dsig:object 
	 * @throws Exception
	 */
public void create322() throws Exception {
		String testNumber = "322";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		URI fileURI1 = new URI(configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
		Element elem = cpkcs.createReferenceWithManifest(fileURI1,"manifestObject");
		
		cpkcs.setKeyInformation();
    	Document sign = cpkcs.returnSig();	String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		
		
		String response = createResponsePart(cpkcs.getX509CertString()) +
						""+
						Base64Utils.encode(stripNLCR(convertManifestToString(elem)).getBytes()) + 
						""+
				  		vxBean.createSignatureCheck("0")+
				  		vxBean.createXMLDSIGManifestCheck("0","","1")+
				  		vxBean.createCertificateCheck("0")+
				  		 "";
						
		writeFile(vxResFile(testNumber), response);
	}
	/**
	 * Method create323: 
	 * There are two references in the signature pointing 
	 * with xpointer to two embedded valid manifest dsig:objects
	 * @throws Exception
	 */
	public void create323() throws Exception {
		String testNumber = "323";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		URI fileURI1 = new URI(configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
		URI fileURI2 = new URI(configuration_.getProperty("webbaseDir") + "resources/testXML.txt");		
		Element man1 = cpkcs.createReferenceWithManifest(fileURI1,"manifestObject");
		
		//HINWEIS: Durch das 2malige Aufrufen wird ein WEITERES dsig:Object ELEMENT erzeugt... darf das so sein...???
		
		Element man2 = cpkcs.createReferenceWithManifest(fileURI2,"manifestObject2");
		cpkcs.setKeyInformation();
	  	Document sign = cpkcs.returnSig();
  		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		
		String response = createResponsePart(cpkcs.getX509CertString()) +
						""+
						Base64Utils.encode(stripNLCR(convertManifestToString(man1)).getBytes()) + 
						""+
						""+
						Base64Utils.encode(stripNLCR(convertManifestToString(man2)).getBytes()) + 
						""+
				  		vxBean.createSignatureCheck("0")+
				  		vxBean.createXMLDSIGManifestCheck("0","","1")+
				  		vxBean.createXMLDSIGManifestCheck("0","","2")+
				  		vxBean.createCertificateCheck("0")+
				  		 "";
						
		writeFile(vxResFile(testNumber), response);
		
	}
	public void create324() throws Exception {
		String testNumber = "324";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		URI fileURI1 = new URI(configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
		URI fileURI2 = new URI(configuration_.getProperty("webbaseDir") + "resources/testXML.txt");		
		Element man = cpkcs.createReferencesWithManifest(fileURI1,"manifestObject",fileURI2);
		
		//HINWEIS: Durch das 2malige Aufrufen wird ein WEITERES dsig:Object ELEMENT erzeugt... darf das so sein...???				
		cpkcs.setKeyInformation();
    	Document sign = cpkcs.returnSig();
    	String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				sign,
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		
		String response = createResponsePart(cpkcs.getX509CertString()) +
						""+
						Base64Utils.encode(stripNLCR(convertManifestToString(man)).getBytes()) + 
						""+
				  		vxBean.createSignatureCheck("0")+
				  		vxBean.createXMLDSIGManifestCheck("0","","1")+
				  		vxBean.createCertificateCheck("0")+
				  		 "";
						
		writeFile(vxResFile(testNumber), response);
		
	}
	/**
	 * Method create325.
	 * @throws Exception
	 */
	public void create325() throws Exception {
		String testNumber = "325";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
				
		Element mani = cpkcs.createReferenceWithManifest(new URI("#xpointer(id('envelopedData')/node())"),"manifestObject");
		cpkcs.createEnvelopedDataObject("envelopedData",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));
		
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		String response = createResponsePart(cpkcs.getX509CertString()) +
						""+
						Base64Utils.encode(stripNLCR(convertManifestToString(mani)).getBytes()) + 
						""+
				  		vxBean.createSignatureCheck("0")+
				  		vxBean.createXMLDSIGManifestCheck("1","1","1")+	
				  		vxBean.createCertificateCheck("0")+
				  		 "";
						
		writeFile(vxResFile(testNumber), response);
	}
	
	public void create326() throws Exception {
		String testNumber = "326";
		
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
				
		Element mani = cpkcs.createReferenceWithManifest(new URI("#xpointer(id('envelopedData')/node())"),"manifestObject");
		cpkcs.createEnvelopedDataObject("envelopedData",readFileCR(configuration_.getProperty("baseDir")+"resources/testSimple.txt"));
					
		cpkcs.setKeyInformation();
    	
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(false,false,null));
		
		request = replaceString(request,"","Dies sind veraenderte Daten und die Ursprungsdaten: \n");
		
		writeFile(vxReqFile(testNumber),request);
		String response = createResponsePart(cpkcs.getX509CertString()) +
						vxBean.createSignatureCheck("0")+
				  		vxBean.createXMLDSIGManifestCheck("1","1","1")+				  		
				  		vxBean.createCertificateCheck("0")+
				  		 "";
						
		writeFile(vxResFile(testNumber), response);
	}
	/**
		 * Method create327: The certificate comes as raw data and is converted to a dsig:object with
		 * base64-data, the KeyInfo has a retrievalMethod pointing to that object and transforming the
		 * data back to raw-data for using that to create the signature
		 * @throws Exception
		 */
		public void create327() throws Exception {
		String testNumber = "327";
		
		URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/test-ee2003_normal.der");
		URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#rawX509Certificate");
		
	
		CreatePKCSSignature cpkcs = new CreatePKCSSignature();
		cpkcs.init();
		cpkcs.setCanoncialization(canAlgCanXML);
		
		cpkcs.createReference(false,configuration_.getProperty("webbaseDir") + "resources/testSimple.txt");
	
		//DER-encoded RAW-Zertifikat zu Binary64 konvertieren
		
		//String tmp = readBinaryFileAsBase64(fileURI.getPath()); : Funktioniert nicht mehr wegen http-addi
		
		//dsig:Object mit den Binary64-Daten erzeugen (==> CRs weglassen!!!!!)
		cpkcs.createEnvelopedDataObject("rawCertAsBase64",readFileCR(fileURI.toString()+"base64.enc"));
		
		//Neue Transformation erzeugen, um die Base64-Daten zurückzuwandeln		
		Transform[] tr = new Transform[1];
		tr[0] = new TransformImplBase64Decode();
		InputStream s = getHttpInputStream(fileURI.toString() + "base64.enc");
		tr[0].setInput(s,null);			
		//Neues KeyInfo-Objekt erzeugen, wobei nicht die Zertifikate sondern 
		//nur eine RetrievalMethod angegeben wird, die auf das oben erzeugte Base64-dsig:Object verweist
		cpkcs.setKeyInformation(true, new URI("#xpointer(id('rawCertAsBase64')/node())") , typeURI, tr);
		
		String request = 
		makeOutputFile(
				createRequestStart(testNumber,true,0),
				cpkcs.returnSig(),
				createRequestEnd(true,false,null));
		
		writeFile(vxReqFile(testNumber),request);
		
		cpkcs.setKeyInformation(1);
		writeFile(vxResFile(testNumber), createResponse(cpkcs.getX509CertString(), testNumber,"0"));
	}
	/**
	 * Method makeOutputFile.
	 * @param start
	 * @param signatureDoc
	 * @param end
	 * @return String
	 * @throws Exception
	 */
	public String makeOutputFile(
		String start,
		Document signatureDoc,
		String end)
		throws Exception {
		ArrayList foundNodes = new ArrayList();
		findNode(
			signatureDoc.getDocumentElement(),
			"dsig:Signature",
			foundNodes);
		Node outputNode = null;
		if (foundNodes.size() > 0) {
			outputNode = (Node) foundNodes.get(0);
		}
		String erg = Node2String(outputNode);
		// remove the  Prologue
		int pos = erg.indexOf(""
				+ "\n";
				
		if(dtd!=null && !dtd.trim().equals(""))
			reqStart += dtd;
				
		reqStart+= "\n";
		if (useDate) {
			reqStart += "   "
				+ getDate(changeHours)
				+ "\n";
		}
			reqStart += "		\n"
			+ "		\n" 
			+ "		" ;
		return reqStart;
	}
	
	/**
	 * Method getTransformsResult:the input transforms array will 
	 * be calculated to return a string-representation of the result
	 * @param tr
	 * @return String
	 * @throws Exception
	 */
	private String getTransformsResult(Transform[] tr) throws Exception
	{	
		Transform[] myTransforms = tr;
		String result = "";
		for (int t=0; t 0)
		{		
			result += new String(b);	
			is.read(b);
		}
		result += new String(b);
		
		return result;
	}
		
		
	/**
	 * Method createRequestEnd.
	 * @param useReturnHashInputData
	 * @param useSupplement
	 * @param supplementReference
	 * @return String
	 * @throws Exception
	 */
	private String createRequestEnd(
		boolean useReturnHashInputData, 
		boolean useSupplement,
		String supplementReference)
		throws Exception {
	
		String reqEnd = null;
	
/*		reqEnd =
			"\n"
				+ "		#xpointer(/VerifyXMLSignatureRequest/VerifySignatureInfo/VerifySignatureEnvironment/dsig:Signature)\n"
				+ "		\n";
*/
		reqEnd =""+
			"\n"
				+ "		//dsig:Signature\n"
				+ "		\n";
		
		if (useSupplement) 
		{
		reqEnd += "		\n" +
				  "			\n" +
				  "				"+readFileCR(supplementReference.toString())+"\n" +
				  "			\n" +
				  "		\n";
		}
				
		if (useReturnHashInputData) {
			reqEnd += "		\n";
		}
		reqEnd += "		TrustProfile1\n"
			+ "\n";
		return reqEnd;		
	}
	
	private String createSignatureInfoEnd()
		throws Exception {
	
	return	""+"\n"
				+ "		//dsig:Signature\n"
				+ "		\n";
		
	}
		
	private String createRequestShortEnd(boolean useReturnHashInputData)
		throws Exception {
	
		String reqEnd = "";
		
		if (useReturnHashInputData)
		reqEnd = "		\n";
		reqEnd += "		TrustProfile1\n"
			+ "\n";
		return reqEnd;		
	}
	/**
	 * Method createResponse.
	 * @param testNumber
	 * @param signatureCheckCode
	 * @return String
	 * @throws Exception
	 */
	private String createResponse(String x509cert, String testNumber, String signatureCheckCode) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal_extract.cer");
		String res = null;
		res = vxBean.getHeader();
		res += vxBean.getSubjectDN();
		res += "				\n";
		res += vxBean.getIssuerDN();
		res += vxBean.getSerialNumber();
		res += "				\n"
      + x509cert 
			+ "			\n"
			+ " 		\n";
		res += "		\n" + "			";
		/*res	+= ""+readFileCR(
				configuration_.getProperty("baseDir")
					+ "resources/testSimple.txt")+
					"";*/
		res += ""+readBinaryFileAsBase64_new((configuration_.getProperty("baseDir")+ "resources/testSimple.txt"))+"";
					    
		res += vxBean.getFooterSignatureCheck(signatureCheckCode, "0");
		return res;
	}
	
	private String createResponseL(String x509cert, String testNumber, String signatureCheckCode,String filename) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal_extract.cer");
		String res = null;
		res = vxBean.getHeader();
		res += vxBean.getSubjectDN();
		res += "				\n";
		res += vxBean.getIssuerDN();
		res += vxBean.getSerialNumber();
		res += "				\n"
      + x509cert 
			+ "			\n"
			+ " 		\n";
					    
		res += replaceString(vxBean.getFooterSignatureCheck(signatureCheckCode, "0"),"","");
		return res;
	}
	private String createResponse(String x509cert, String testNumber, String signatureCheckCode,int code) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal_extract.cer");
		String res = null;
		res = vxBean.getHeader();
		res += vxBean.getSubjectDN();
		res += "				\n";
		res += vxBean.getIssuerDN();
		res += vxBean.getSerialNumber();
		res += "				\n"
      + x509cert 
			+ "			\n"
			+ " 		\n";
		res += "     \n" +
		  "     	11\n" +		  
 		  "		\n" +
 		  "     \n" +
 		  "     	0\n" +
 		  "     \n" +
 		  "";;
		return res;
	}
	/**
	 * Method createResponse.
	 * @param testNumber
	 * @param signatureCheckCode
	 * @return String
	 * @throws Exception
	 */
	private String createResponse(String x509cert, String testNumber, String signatureCheckCode,int code,String filename) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal_extract.cer");
		String res = null;
		res = vxBean.getHeader();
		res += vxBean.getSubjectDN();
		res += "				\n";
		res += vxBean.getIssuerDN();
		res += vxBean.getSerialNumber();
		res += "				\n"
      + x509cert 
			+ "			\n"
			+ " 		\n";
		res += "		\n" + "			";
		/*res	+= ""+readFileCR(
				configuration_.getProperty("baseDir")
					+ "resources/testSimple.txt")+
					"";*/
		if(filename.startsWith("text:"))
			res += ""+Base64Utils.encode(filename.substring(5).getBytes())+"";
		else
			res += ""+readBinaryFileAsBase64_new((configuration_.getProperty("baseDir")+ filename))+"";
					    
		res += vxBean.getFooterSignatureCheck(signatureCheckCode, "0");
		return res;
	}
/**
	 * Method createResponse.
	 * @param testNumber
	 * @param signatureCheckCode
	 * @return String
	 * @throws Exception
	 */
	private String createResponse(String x509cert, String testNumber, String signatureCheckCode,String iss,String subject,String serial) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal_extract.cer");
		String res = null;
		res = vxBean.getHeader();
		res += subject;
		res += "				\n";
		res += iss;
		res += serial;
		res += "				\n"
      + x509cert 
			+ "			\n"
			+ " 		\n";
		res += "		\n" + "			";
		/*res	+= ""+readFileCR(
				configuration_.getProperty("baseDir")
					+ "resources/testSimple.txt")+
					"";*/
		res += ""+readBinaryFileAsBase64_new((configuration_.getProperty("baseDir")+ "resources/testSimple.txt"))+"";
					    
		res += vxBean.getFooterSignatureCheck(signatureCheckCode, "0");
		return res;
	}
	
		private String createResponse(String x509cert, String testNumber, String signatureCheckCode, String hashData) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal.der");
		String res = null;
		res = vxBean.getHeader();
		res += vxBean.getSubjectDN();
		res += "				\n";
		res += vxBean.getIssuerDN();
		res += vxBean.getSerialNumber();
		res += "				\n"
			   + x509cert 
      + "			\n"
			+ " 		\n";
		res += "	\n";
		/*	   "		"+ 
			   hashData +
			   "\n";*/
		res += ""+Base64Utils.encode(hashData.getBytes())+"";
		System.out.println(res);
		res += vxBean.getFooterSignatureCheck(signatureCheckCode, "0");
		System.out.println(res);
		return res;
	}
	
	private String createResponse(String x509cert, String testNumber, String signatureCheckCode, String hashData,String hashData2) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal.der");
		String res = null;
		res = vxBean.getHeader();
		res += vxBean.getSubjectDN();
		res += "				\n";
		res += vxBean.getIssuerDN();
		res += vxBean.getSerialNumber();
		res += "				\n"
			   + x509cert 
      + "			\n"
			+ " 		\n";
		res += "	\n";
		/*	   "		"+ 
			   hashData +
			   "\n";*/
		res += ""+Base64Utils.encode(hashData.getBytes())+"";
		res += "";
		res += ""+Base64Utils.encode(hashData2.getBytes())+"";
		res += vxBean.getFooterSignatureCheck(signatureCheckCode, "0");
		return res;
	}
	
	private String createResponseWithoutHashInputData(String x509cert, String testNumber, String signatureCheckCode,boolean dsig) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal.der");
		String res = null;
		res = vxBean.getHeader();
		res += vxBean.getSubjectDN();
		res += "				\n";
		res += vxBean.getIssuerDN();
		res += vxBean.getSerialNumber();
		res += "				\n"
			   + x509cert 
      + "			\n"
			+ " 		\n"
			+ "     \n" +
			  "     	" + signatureCheckCode + "\n" +		  
 			  "		\n";
 			  
 			  if(dsig) res+=vxBean.createXMLDSIGManifestCheck("0","","1");
 		res+= "     \n" +
	 		  "     	0\n" +
	 		  "     \n" +
 			  "";
			return res;
	}
	
	private String createResponseWithoutHashInputData(String x509cert, String testNumber, String signatureCheckCode) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal.der");
		String res = null;
		res = vxBean.getHeader();
		res += vxBean.getSubjectDN();
		res += "				\n";
		res += vxBean.getIssuerDN();
		res += vxBean.getSerialNumber();
		res += "				\n"
			   + x509cert 
      + "			\n"
			+ " 		\n"
			+ "     \n" +
			  "     	" + signatureCheckCode + "\n" +		  
 			  "		\n" +
 			  "     \n" +
	 		  "     	0\n" +
	 		  "     \n" +
 			  "";
			return res;
	}
		
	private String createResponsePart(String x509cert) throws Exception {
		// 
		vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/"	+ "test-ee2003_normal.der");
		String res = null;
		res = vxBean.getHeader();
		res += vxBean.getSubjectDN();
		res += "				\n";
		res += vxBean.getIssuerDN();
		res += vxBean.getSerialNumber();
    res += "				\n";
    res +=x509cert;
     res += "			\n"
			+ " 		\n";
		/*res += "		\n" + "			";
		res	+= readFile(
				configuration_.getProperty("baseDir")
					+ "resources/testSimple.txt");
		*/
		//res += vxBean.getFooterXMLDSIGManifestCheck(xmlDSIGManifestCheckCode,"0");
		return res;
	}
	
	public String readFileCR(String filename) throws Exception {
		/*StringBuffer data = new StringBuffer();
		String line = null;
		BufferedReader br = new BufferedReader(new FileReader(filename));
		while ((line = br.readLine()) != null) {
			data.append(line);
			data.append("\n");
		}
		*/
		String response="";
		byte[] result;
		if (filename.substring(0,4).toLowerCase().equals("http"))
		{	
			
			URL targetUrl = new URL(filename);
			HttpURLConnection h = (HttpURLConnection)targetUrl.openConnection();			
			InputStream is =  h.getInputStream();
					
			int size = 0;
			
			result = new byte[h.getContentLength()];
			for (int i = 0; i < result.length; i++) {
				byte[] b = new byte[1];
				is.read(b);
				result[i]=b[0];
			}
			is.close();			
		}
		else
		{
			RandomAccessFile raf = new RandomAccessFile(filename, "r");
			if (raf.length() > Integer.MAX_VALUE)
				throw new IOException("file too big to fit in byte array.");
			
			result = new byte[(int) raf.length()];		
			raf.read(result);
			raf.close();
		
		}	
		
			byte[] temp = new byte[result.length];
			int s = 0;	
			for (int t=0; t","");						
		}
		catch (Exception e) {}
		return response;
		}										
private InputStream getHttpInputStream(String url) throws Exception
	{
		URL targetUrl = new URL(url);
		HttpURLConnection h = (HttpURLConnection)targetUrl.openConnection();			
		return  h.getInputStream();		
	}
private String convertManifestToString(Element e) throws Exception
	{
	    String result =(new DOMWriterImpl(true)).writeToString(e);      
	    result = replaceString(result,"","");
	    result = replaceStringAll(result,"'","'");
	    result = replaceStringAll(result,"#sha1\"/>