package testgenerator; import iaik.ixsil.algorithms.Transform; import iaik.ixsil.algorithms.TransformImplEnvelopedSignature; import iaik.ixsil.core.Position; import iaik.ixsil.util.URI; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; 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 Administrator * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ public class TestGeneratorCX2 extends TestCases { String datadirectory = "data/CX2/"; String defaultblock = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ "<CreateXMLSignatureRequest xmlns=\"http://reference.e-government.gv.at/namespace/moa/20020822#\" xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\">"+ "<KeyIdentifier>PKCS12RSAKey1</KeyIdentifier>"+ "<SingleSignatureInfo SecurityLayerConformity=\"false\">"+ "<DataObjectInfo Structure=\"detached\" ChildOfManifest=\"false\">"+ "<DataObject Reference=\""+configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"+"\">"+ "<XMLContent xml:space=\"preserve\">Dies sind Testdaten</XMLContent>"+ "</DataObject>"+ "<CreateTransformsInfoProfile>"+ "<CreateTransformsInfo>"+ "<FinalDataMetaInfo>"+ "<MimeType>text/plain</MimeType>"+ "</FinalDataMetaInfo>"+ "</CreateTransformsInfo>"+ "</CreateTransformsInfoProfile>"+ "</DataObjectInfo>"+ "<CreateSignatureInfo xmlns:data=\"http://uri.data.org\">"+ "<!-- insert create -->"+ "<CreateSignatureEnvironmentProfile>"+ "<CreateSignatureLocation Index=\"0\">//data:Document</CreateSignatureLocation>"+ "<!-- insert supp -->"+ "</CreateSignatureEnvironmentProfile>"+ "</CreateSignatureInfo>"+ "</SingleSignatureInfo>"+ "</CreateXMLSignatureRequest>"; public String fileprefix = null; public String filesuffix = null; private static final int canAlgCanXML = 1; private static final int canAlgCanXMLwithCom = 2; private static final int canAlgExcXML = 3; private static final int canAlgExcXMLwithCom = 4; public TestGeneratorCX2() throws Exception { super(); // Set config properties configuration_.setProperty("TestClass", "TestGeneratorCX2"); // 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 static void main(String[] args) throws Exception { TestGeneratorCX2 testcase = new TestGeneratorCX2(); testcase.createConfig(); testcase.create001(); testcase.create002(); testcase.create003(); testcase.create004(); testcase.create005(); testcase.create006(); testcase.create007(); testcase.create008(); testcase.create009(); testcase.create051(); testcase.create052(); testcase.create053(); testcase.create054(); testcase.create055(); testcase.create056(); testcase.create057(); } public void createConfig() throws Exception { String file = configuration_.getProperty("baseDir") + datadirectory + configuration_.getProperty("TestClass") + ".Config.xml"; String config = "<MOAConfiguration xmlns=\"http://reference.e-government.gv.at/namespace/moaconfig/20021122#\">"+ " <KeyGroup id=\"PKCS12RSAKey1\"> <Key id=\"resources/test-ee2003_normal(buergerkarte).p12\"/> </KeyGroup>"+ " <KeyGroup id=\"PKCS12RSAKeyExpired\"> <Key id=\"sicher-demo(buergerkarte).p12\"/> </KeyGroup>"+ " <KeyGroup id=\"PKCS12ECDSAKey1\"> <Key id=\"ecc.p12\"/> </KeyGroup> "+ " <KeyGroup id=\"HSMRSAKey1\"> <Key id=\"???\"/> </KeyGroup>"+ " <KeyGroup id=\"HSMECDSAKey1\"> <Key id=\"???\"/> </KeyGroup>"+ " <DigestMethodAlgorithm name=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>"+ " <SignatureAlgorithm name=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>"+ " <CanonicalizationAlgorithm name=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\"/>"+ " <CreateSignatureEnvironmentProfile id=\"CreateSignatureEnvironmentProfile1\" filename=\""+"file:/"+configuration_.getProperty("webbaseDir")+"resources/CSEP.xml\"/>"+ "</MOAConfiguration>"; FileOutputStream fos = new FileOutputStream(file); fos.write(config.getBytes()); fos.flush(); fos.close(); fileprefix = configuration_.getProperty("baseDir")+ datadirectory + configuration_.getProperty("TestClass") + "."; filesuffix = ".xml"; } public void create001() throws Exception { String TestNumber = "001"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\">"+ "<data:Document xmlns:data=\"http://uri.data.org\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>"+ //readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+ "</XMLContent>"+ "</CreateSignatureEnvironment>"); writeFile(reqFile,req); InputStream bis = new ByteArrayInputStream(("<data:Document xmlns:data=\"http://uri.data.org\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>").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 = "/node()"; //XPAth-Prefixe deklarieren String xPath_Prefix = "data xmlns:data=\"http://uri.data.org\""; Position pos = new Position(xPath_Pos, xPath_Prefix,0); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; 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,"signature-1-1"); cpkcs.setCanoncialization(canAlgCanXML); cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt","reference-1-1"); cpkcs.setKeyInformation(1); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document xmlns:data=\"http://uri.data.org\">",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>"); writeFile(resFile, output); } public void create002() throws Exception { String TestNumber = "002"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment Reference=\""+configuration_.getProperty("webbaseDir")+"resources/testDocument.xml"+"\"/>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; InputStream bis = new ByteArrayInputStream(("<data:Document xmlns:data=\"http://uri.data.org\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>").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 = "/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,"signature-1-1"); cpkcs.setCanoncialization(canAlgCanXML); cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt","reference-1-1"); cpkcs.setKeyInformation(1); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document xmlns:data=\"http://uri.data.org\">",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>"); writeFile(resFile, output); } public void create003() throws Exception { String TestNumber = "003"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<Base64Content>"+readBinaryFileAsBase64(configuration_.getProperty("baseDir")+"resources/testDocument.xml")+"</Base64Content>"+ "</CreateSignatureEnvironment>"); //req = replaceString(req,"Index=\"0\">//data:Document","Index=\"0\">//Hugo"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; InputStream bis = new ByteArrayInputStream(("<data:Document xmlns:data=\"http://uri.data.org\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>").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 = "/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,"signature-1-1"); cpkcs.setCanoncialization(canAlgCanXML); cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt","reference-1-1"); cpkcs.setKeyInformation(1); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document xmlns:data=\"http://uri.data.org\">",cutXML(readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt"))+"</data:Document>"); writeFile(resFile, output); } public void create004() throws Exception { String TestNumber = "004"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\">"+ "<data:Document xmlns:data=\"http://uri.data.org\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>"+ "</XMLContent>"+ "</CreateSignatureEnvironment>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; InputStream bis = new ByteArrayInputStream(("<data:Document xmlns:data=\"http://uri.data.org\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>").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 = "/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,"signature-1-1"); cpkcs.setCanoncialization(canAlgCanXML); cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt","reference-1-1"); cpkcs.setKeyInformation(1); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document xmlns:data=\"http://uri.data.org\">",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>"); writeFile(resFile, output); } public void create005() throws Exception { String TestNumber = "005"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\">"+ "<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org/test.xsd\">Dies sind Testdaten</data:Document>"+ "</XMLContent>"+ "</CreateSignatureEnvironment>"); req = replaceString(req,"<!-- insert supp -->", "<Supplement>"+ "<Content Reference=\"http://tollesSchema.org/test.xsd\">"+ "<XMLContent xml:space=\"preserve\">"+ "<xsd:schema targetNamespace=\"http://uri.data.org\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://uri.data.org\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" id=\"tollesSchema\">"+ "<xsd:element name=\"Document\">"+ "<xsd:complexType mixed=\"true\">"+ "<xsd:sequence maxOccurs=\"unbounded\" minOccurs=\"0\">"+ "<xsd:any namespace=\"##any\" processContents=\"lax\"/>"+ "</xsd:sequence>"+ "<xsd:attribute name=\"attr\" type=\"xsd:ID\" use=\"required\"/>"+ "</xsd:complexType>"+ "</xsd:element>"+ "</xsd:schema>"+ "</XMLContent>"+ "</Content>"+ "</Supplement>"); req = replaceString(req,"<FinalDataMetaInfo>", "<dsig:Transforms><dsig:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/></dsig:Transforms>"+ "<FinalDataMetaInfo>"); //req = replaceString(req,"Index=\"0\">//data:Document","Index=\"0\">//data:Document"); System.out.println("!!!"); System.out.println(req); req = replaceString(req, "<DataObject Reference=\""+configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"+"\">"+ "<XMLContent xml:space=\"preserve\">Dies sind Testdaten</XMLContent>"+ "</DataObject>", "<DataObject Reference=\"#document\">"+ "</DataObject>" ); System.out.println(req); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; //InputStream bis = new ByteArrayInputStream(("<data:Document attr=\"document\" xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org\">Dies sind Testdaten</data:Document>").getBytes()); InputStream bis = new ByteArrayInputStream(("<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org/test.xsd\">Dies sind Testdaten</data:Document>").getBytes()); //Document-Builder holen DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); factory.setValidating(true); DocumentBuilder builder = factory.newDocumentBuilder(); Map m = new HashMap(); m.put("http://tollesSchema.org/test.xsd",new ByteArrayInputStream(( "<xsd:schema targetNamespace=\"http://uri.data.org\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://uri.data.org\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" id=\"tollesSchema\">"+ "<xsd:element name=\"Document\">"+ "<xsd:complexType mixed=\"true\">"+ "<xsd:sequence maxOccurs=\"unbounded\" minOccurs=\"0\">"+ "<xsd:any namespace=\"##any\" processContents=\"lax\"/>"+ "</xsd:sequence>"+ "<xsd:attribute name=\"attr\" type=\"xsd:ID\" use=\"required\"/>"+ "</xsd:complexType>"+ "</xsd:element></xsd:schema>").getBytes())); EntityResolverChain chain = new EntityResolverChain(); chain.addEntityResolver(new StreamEntityResolver(m)); chain.addEntityResolver(new MOAEntityResolver()); builder.setEntityResolver(chain); //Dokument Parsen Document reqDoc = DOMUtils.parseDocument(bis,true,Constants.ALL_SCHEMA_LOCATIONS, null,chain,new MOAErrorHandler()); System.out.println(DOMUtils.serializeNode(reqDoc.getDocumentElement())); //Position f�r die Signatur angeben //String xPath_Pos = "/node()"; String xPath_Pos = "//data:Document"; //XPAth-Prefixe deklarieren //String xPath_Prefix = "data xmlns:data=\"http://uri.data.org\""; String xPath_Prefix = "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,"signature-1-1"); cpkcs.setCanoncialization(canAlgCanXML); //cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt","reference-1-1"); Transform[] tr = new Transform[1]; TransformImplEnvelopedSignature trans = new TransformImplEnvelopedSignature(); tr[0] = trans; //Enveloped Transformation cpkcs.createReferenceWithTransforms(new URI("#document"),tr,"reference-1-1"); cpkcs.setKeyInformation(1); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org/test.xsd\">",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>"); writeFile(resFile, output); } public void create006() throws Exception { String TestNumber = "006"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\">"+ "<data:Document xmlns:data=\"http://uri.data.org\">Dies sind Testdaten</data:Document>"+ "</XMLContent>"+ "</CreateSignatureEnvironment>"); req = replaceString(req, "<CreateSignatureEnvironmentProfile>"+ "<CreateSignatureLocation Index=\"0\">//data:Document</CreateSignatureLocation>"+ "<!-- insert supp -->"+ "</CreateSignatureEnvironmentProfile>", "<CreateSignatureEnvironmentProfileID>CreateSignatureEnvironmentProfile1</CreateSignatureEnvironmentProfileID>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; InputStream bis = new ByteArrayInputStream(("<data:Document xmlns:data=\"http://uri.data.org\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>").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 = "/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,"signature-1-1"); cpkcs.setCanoncialization(canAlgCanXML); cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt","reference-1-1"); cpkcs.setKeyInformation(1); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document xmlns:data=\"http://uri.data.org\">",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>"); writeFile(resFile, output); } public void create007() throws Exception { String TestNumber = "007"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<Base64Content>"+ ""+Base64Utils.encode(("<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE Document SYSTEM \"http://dtd.org/tollesDTD.dtd\"><Document attr=\"document\">Dies sind Testdaten</Document>").getBytes())+""+ "</Base64Content>"+ "</CreateSignatureEnvironment>"); req = replaceString(req, "<DataObject Reference=\""+configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"+"\">"+ "<XMLContent xml:space=\"preserve\">Dies sind Testdaten</XMLContent>"+ "</DataObject>", "<DataObject Reference=\"#document\">"+ "</DataObject>" ); req = replaceString(req,"<!-- insert supp -->", "<Supplement>"+ "<Content Reference=\"http://dtd.org/tollesDTD.dtd\">"+ "<Base64Content>"+ ""+Base64Utils.encode(("<?xml version=\"1.0\" encoding=\"UTF-8\"?><!ELEMENT Document (#PCDATA | ANY)*><!ATTLIST Document attr ID #REQUIRED>").getBytes())+""+ "</Base64Content>"+ "</Content>"+ "</Supplement>"); req = replaceString(req," xmlns:data=\"http://uri.data.org\"",""); req = replaceString(req,"//data:Document","//Document"); req = replaceString(req,"<FinalDataMetaInfo>", "<dsig:Transforms><dsig:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/></dsig:Transforms>"+ "<FinalDataMetaInfo>"); //req = replaceString(req,"Index=\"0\">//data:Document","Index=\"0\">//Hugo"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; InputStream bis = new ByteArrayInputStream(("<!DOCTYPE Document SYSTEM \"http://dtd.org/tollesDTD.dtd\"><Document attr=\"document\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</Document>").getBytes()); //Document-Builder holen DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); factory.setValidating(true); DocumentBuilder builder = factory.newDocumentBuilder(); //Dokument Parsen Map m = new HashMap(); m.put("http://dtd.org/tollesDTD.dtd",new ByteArrayInputStream(( "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!ELEMENT Document (#PCDATA | ANY)*><!ATTLIST Document attr ID #REQUIRED>").getBytes())); EntityResolverChain chain = new EntityResolverChain(); chain.addEntityResolver(new StreamEntityResolver(m)); chain.addEntityResolver(new MOAEntityResolver()); builder.setEntityResolver(chain); Document reqDoc = DOMUtils.parseDocument(bis,true,Constants.ALL_SCHEMA_LOCATIONS, null,chain,new MOAErrorHandler()); System.out.println(DOMUtils.serializeNode(reqDoc.getDocumentElement())); //Position f�r die Signatur angeben String xPath_Pos = "/Document"; //XPAth-Prefixe deklarieren String xPath_Prefix = ""; 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,"signature-1-1"); cpkcs.setCanoncialization(canAlgCanXML); //cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt","reference-1-1"); Transform[] tr = new Transform[1]; TransformImplEnvelopedSignature trans = new TransformImplEnvelopedSignature(); tr[0] = trans; //Enveloped Transformation cpkcs.createReferenceWithTransforms(new URI("#document"),tr,"reference-1-1"); cpkcs.setKeyInformation(1); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<Document attr=\"document\" xmlns=\"\">",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</Document>"); writeFile(resFile, output); } public void create008() throws Exception { String TestNumber = "008"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\">"+ "<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org/test.xsd\">Dies sind Testdaten</data:Document>"+ "</XMLContent>"+ "</CreateSignatureEnvironment>"); req = replaceString(req,"<!-- insert supp -->", "<Supplement>"+ "<Content Reference=\"http://tollesSchema.org/test.xsd\">"+ "<Base64Content>"+ Base64Utils.encode(("<xsd:schema targetNamespace=\"http://uri.data.org\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://uri.data.org\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" id=\"tollesSchema\">"+ "<xsd:element name=\"Document\">"+ "<xsd:complexType mixed=\"true\">"+ "<xsd:sequence maxOccurs=\"unbounded\" minOccurs=\"0\">"+ "<xsd:any namespace=\"##any\" processContents=\"lax\"/>"+ "</xsd:sequence>"+ "<xsd:attribute name=\"attr\" type=\"xsd:ID\" use=\"required\"/>"+ "</xsd:complexType>"+ "</xsd:element>"+ "</xsd:schema>").getBytes())+ "</Base64Content>"+ "</Content>"+ "</Supplement>"); req = replaceString(req,"<FinalDataMetaInfo>", "<dsig:Transforms><dsig:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/></dsig:Transforms>"+ "<FinalDataMetaInfo>"); //req = replaceString(req,"Index=\"0\">//data:Document","Index=\"0\">//data:Document"); System.out.println("!!!"); System.out.println(req); req = replaceString(req, "<DataObject Reference=\""+configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"+"\">"+ "<XMLContent xml:space=\"preserve\">Dies sind Testdaten</XMLContent>"+ "</DataObject>", "<DataObject Reference=\"#document\">"+ "</DataObject>" ); System.out.println(req); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; InputStream bis = new ByteArrayInputStream(("<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org/test.xsd\">Dies sind Testdaten</data:Document>").getBytes()); //Document-Builder holen //Document-Builder holen DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); factory.setValidating(true); DocumentBuilder builder = factory.newDocumentBuilder(); Map m = new HashMap(); m.put("http://tollesSchema.org/test.xsd",new ByteArrayInputStream(( "<xsd:schema targetNamespace=\"http://uri.data.org\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://uri.data.org\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" id=\"tollesSchema\">"+ "<xsd:element name=\"Document\">"+ "<xsd:complexType mixed=\"true\">"+ "<xsd:sequence maxOccurs=\"unbounded\" minOccurs=\"0\">"+ "<xsd:any namespace=\"##any\" processContents=\"lax\"/>"+ "</xsd:sequence>"+ "<xsd:attribute name=\"attr\" type=\"xsd:ID\" use=\"required\"/>"+ "</xsd:complexType>"+ "</xsd:element>"+ "</xsd:schema>").getBytes())); EntityResolverChain chain = new EntityResolverChain(); chain.addEntityResolver(new StreamEntityResolver(m)); chain.addEntityResolver(new MOAEntityResolver()); builder.setEntityResolver(chain); //Dokument Parsen Document reqDoc = DOMUtils.parseDocument(bis,true,Constants.ALL_SCHEMA_LOCATIONS, null,chain,new MOAErrorHandler()); System.out.println(DOMUtils.serializeNode(reqDoc.getDocumentElement())); //Position f�r die Signatur angeben String xPath_Pos = "//data:Document"; //XPAth-Prefixe deklarieren //String xPath_Prefix = "data xmlns:data=\"http://uri.data.org\""; String xPath_Prefix = "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,"signature-1-1"); cpkcs.setCanoncialization(canAlgCanXML); //cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt","reference-1-1"); Transform[] tr = new Transform[1]; TransformImplEnvelopedSignature trans = new TransformImplEnvelopedSignature(); tr[0] = trans; //Enveloped Transformation cpkcs.createReferenceWithTransforms(new URI("#document"),tr,"reference-1-1"); cpkcs.setKeyInformation(1); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document attr=\"document\" xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org/test.xsd\">",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>"); writeFile(resFile, output); } public void create009() throws Exception { String TestNumber = "009"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\">"+ "<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org/test.xsd\">Dies sind Testdaten</data:Document>"+ "</XMLContent>"+ "</CreateSignatureEnvironment>"); req = replaceString(req,"<!-- insert supp -->", "<Supplement>"+ "<Content Reference=\"http://tollesSchema.org/test.xsd\">"+ "<XMLContent xml:space=\"preserve\">"+ "<xsd:schema targetNamespace=\"http://uri.data.org\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://uri.data.org\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" id=\"tollesSchema\">"+ "<xsd:element name=\"Document\">"+ "<xsd:complexType mixed=\"true\">"+ "<xsd:sequence maxOccurs=\"unbounded\" minOccurs=\"0\">"+ "<xsd:any namespace=\"##any\" processContents=\"lax\"/>"+ "</xsd:sequence>"+ "<xsd:attribute name=\"attr\" type=\"xsd:ID\" use=\"required\"/>"+ "</xsd:complexType>"+ "</xsd:element>"+ "</xsd:schema>"+ "</XMLContent>"+ "</Content>"+ "</Supplement>"); req = replaceString(req,"<FinalDataMetaInfo>", "<dsig:Transforms><dsig:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/></dsig:Transforms>"+ "<FinalDataMetaInfo>"); //req = replaceString(req,"Index=\"0\">//data:Document","Index=\"0\">//data:Document"); System.out.println("!!!"); System.out.println(req); req = replaceString(req, "<DataObject Reference=\""+configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"+"\">"+ "<XMLContent xml:space=\"preserve\">Dies sind Testdaten</XMLContent>"+ "</DataObject>", "<DataObject Reference=\"#xpointer(id(document))\">"+ "</DataObject>" ); System.out.println(req); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; //InputStream bis = new ByteArrayInputStream(("<data:Document attr=\"document\" xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org\">Dies sind Testdaten</data:Document>").getBytes()); InputStream bis = new ByteArrayInputStream(("<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org/test.xsd\">Dies sind Testdaten</data:Document>").getBytes()); //Document-Builder holen DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); factory.setValidating(true); DocumentBuilder builder = factory.newDocumentBuilder(); Map m = new HashMap(); m.put("http://tollesSchema.org/test.xsd",new ByteArrayInputStream(( "<xsd:schema targetNamespace=\"http://uri.data.org\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://uri.data.org\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" id=\"tollesSchema\">"+ "<xsd:element name=\"Document\">"+ "<xsd:complexType mixed=\"true\">"+ "<xsd:sequence maxOccurs=\"unbounded\" minOccurs=\"0\">"+ "<xsd:any namespace=\"##any\" processContents=\"lax\"/>"+ "</xsd:sequence>"+ "<xsd:attribute name=\"attr\" type=\"xsd:ID\" use=\"required\"/>"+ "</xsd:complexType>"+ "</xsd:element></xsd:schema>").getBytes())); EntityResolverChain chain = new EntityResolverChain(); chain.addEntityResolver(new StreamEntityResolver(m)); chain.addEntityResolver(new MOAEntityResolver()); builder.setEntityResolver(chain); //Dokument Parsen Document reqDoc = DOMUtils.parseDocument(bis,true,Constants.ALL_SCHEMA_LOCATIONS, null,chain,new MOAErrorHandler()); System.out.println(DOMUtils.serializeNode(reqDoc.getDocumentElement())); //Position f�r die Signatur angeben //String xPath_Pos = "/node()"; String xPath_Pos = "//data:Document"; //XPAth-Prefixe deklarieren //String xPath_Prefix = "data xmlns:data=\"http://uri.data.org\""; String xPath_Prefix = "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,"signature-1-1"); cpkcs.setCanoncialization(canAlgCanXML); //cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testSimple.txt","reference-1-1"); Transform[] tr = new Transform[1]; TransformImplEnvelopedSignature trans = new TransformImplEnvelopedSignature(); tr[0] = trans; //Enveloped Transformation cpkcs.createReferenceWithTransforms(new URI("#xpointer(id(document))"),tr,"reference-1-1"); cpkcs.setKeyInformation(1); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document xmlns:data=\"http://uri.data.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" attr=\"document\" xsi:schemaLocation=\"http://uri.data.org http://tollesSchema.org/test.xsd\">",readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</data:Document>"); writeFile(resFile, output); } public void create051() throws Exception { String TestNumber = "051"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<CreateSignatureInfo xmlns:data=\"http://uri.data.org\">","<CreateSignatureInfo>"); req = replaceString(req,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\">"+ "<data:Document xmlns:data=\"http://uri.data.org\">daten</data:Document><Text>toller Text</Text>"+ "</XMLContent>"+ "</CreateSignatureEnvironment>"); req = replaceString(req,"<CreateSignatureLocation Index=\"0\">","<CreateSignatureLocation Index=\"0\" xmlns:data=\"http://uri.data.org\">"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"1109"); } public void create052() throws Exception { String TestNumber = "052"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<Base64Content>PFRhZzE+PC9UYWcxPjxUYWcyPjwvVGFnMj4NCg0K</Base64Content><!-- Inhalt: <Tag1></Tag1><Tag2></Tag2> -->"+ "</CreateSignatureEnvironment>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"2218"); } public void create053() throws Exception { String TestNumber = "053"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment/>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"1110"); } public void create054() throws Exception { String TestNumber = "054"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\"><data:Document xmlns:data=\"http://uri.data.org\">Dies sind Testdaten</data:Document></XMLContent>"+ "</CreateSignatureEnvironment>"); req = replaceString(req, "<CreateTransformsInfo>"+ "<FinalDataMetaInfo>"+ "<MimeType>text/plain</MimeType>"+ "</FinalDataMetaInfo>"+ "</CreateTransformsInfo>", "<CreateTransformsInfo>"+ "<dsig:Transforms>"+ "<dsig:Transform Algorithm=\"http://www.w3.org/TR/1999/REC-xpath-19991116\">"+ "<dsig:XPath>/data:book/data:first-name/node()</dsig:XPath>"+ "</dsig:Transform>"+ "</dsig:Transforms>"+ "<FinalDataMetaInfo>"+ "<MimeType>text/xml</MimeType>"+ "</FinalDataMetaInfo>"+ "</CreateTransformsInfo>"); req = replaceString(req, "<CreateSignatureLocation Index=\"0\">//data:Document</CreateSignatureLocation>", "<CreateSignatureLocation Index=\"0\">//data:Document1</CreateSignatureLocation>"); req = replaceString(req, "<DataObject Reference=\""+configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"+"\">"+ "<XMLContent xml:space=\"preserve\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</XMLContent>"+ "</DataObject>", "<DataObject Reference=\""+configuration_.getProperty("webbaseDir")+"resources/BookData.xml"+"\"/>"); //req = replaceString(req,"/data:Document","/data:nonExistingElement"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"2212"); } public void create056() throws Exception { String TestNumber = "056"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\">"+ "<data:Document>andereDaten als in "+configuration_.getProperty("webbaseDir")+"resources/CSEP.xml</data:Document>"+ "</XMLContent>"+ "</CreateSignatureEnvironment>"); req = replaceString(req, "<CreateSignatureEnvironmentProfile>"+ "<CreateSignatureLocation Index=\"0\">//data:Document</CreateSignatureLocation>"+ "<!-- insert supp -->"+ "</CreateSignatureEnvironmentProfile>", "<CreateSignatureEnvironmentProfileID>wrongCreateSignatureEnvironmentProfile</CreateSignatureEnvironmentProfileID>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"2236"); } public void create057() throws Exception { String TestNumber = "057"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment>"+ "<XMLContent xml:space=\"preserve\"><data:Document xmlns:data=\"http://uri.data.org\">Dies sind Testdaten</data:Document></XMLContent>"+ "</CreateSignatureEnvironment>"); req = replaceString(req, "<CreateTransformsInfo>"+ "<FinalDataMetaInfo>"+ "<MimeType>text/plain</MimeType>"+ "</FinalDataMetaInfo>"+ "</CreateTransformsInfo>", "<CreateTransformsInfo>"+ "<dsig:Transforms>"+ "<dsig:Transform Algorithm=\"http://www.w3.org/TR/1999/REC-xpath-19991116\">"+ "<dsig:XPath>/data:book/data:first-name/node()</dsig:XPath>"+ "</dsig:Transform>"+ "</dsig:Transforms>"+ "<FinalDataMetaInfo>"+ "<MimeType>text/xml</MimeType>"+ "</FinalDataMetaInfo>"+ "</CreateTransformsInfo>"); req = replaceString(req, "<CreateSignatureLocation Index=\"0\">//data:Document</CreateSignatureLocation>", "<CreateSignatureLocation Index=\"0\">]]'_'[[//data:Document</CreateSignatureLocation>"); req = replaceString(req, "<DataObject Reference=\""+configuration_.getProperty("webbaseDir")+"resources/testSimple.txt"+"\">"+ "<XMLContent xml:space=\"preserve\">"+readFile(configuration_.getProperty("baseDir")+"resources/testSimple.txt")+"</XMLContent>"+ "</DataObject>", "<DataObject Reference=\""+configuration_.getProperty("webbaseDir")+"resources/BookData.xml"+"\"/>"); //req = replaceString(req,"/data:Document","/data:nonExistingElement"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"2212"); } public void create055() throws Exception { String TestNumber = "055"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert create -->", "<CreateSignatureEnvironment Reference=\""+configuration_.getProperty("webbaseDir")+"resources/CSEP.xml\">"+ "<XMLContent xml:space=\"preserve\">"+ "<data:Document>andereDaten als in "+configuration_.getProperty("webbaseDir")+"resources/CSEP.xml</data:Document>"+ "</XMLContent>"+ "</CreateSignatureEnvironment>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"1110"); } public void writeFile(String filename,String data) throws Exception { BufferedWriter bw = new BufferedWriter(new FileWriter(filename)); bw.write(data); bw.close(); } public String makeOutputFile(Document signatureDoc,String prefix,String suffix) 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 <?xml ?> Prologue int pos = erg.indexOf("<dsig"); erg = erg.substring(pos); // insert the dsig:signature element in a MOA Response Message erg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+ "<CreateXMLSignatureResponse" + " xmlns=\"http://reference.e-government.gv.at/namespace/moa/20020822#\""+ " >"+ //" xmlns:etsi=\"http://uri.etsi.org/01903/v1.1.1#\">"+ "<SignatureEnvironment>" +prefix+ erg +suffix+ "</SignatureEnvironment> </CreateXMLSignatureResponse>"; return erg; } public String makeOutputFile(Document signatureDoc) throws Exception { return this.makeOutputFile(signatureDoc,"",""); } }