diff options
Diffstat (limited to 'spss.test/src/testgenerator/TestGeneratorVXErrors.java')
-rw-r--r-- | spss.test/src/testgenerator/TestGeneratorVXErrors.java | 1775 |
1 files changed, 1775 insertions, 0 deletions
diff --git a/spss.test/src/testgenerator/TestGeneratorVXErrors.java b/spss.test/src/testgenerator/TestGeneratorVXErrors.java new file mode 100644 index 000000000..3c9db0dad --- /dev/null +++ b/spss.test/src/testgenerator/TestGeneratorVXErrors.java @@ -0,0 +1,1775 @@ +package testgenerator; +import iaik.ixsil.algorithms.DigestAlgorithmImplSHA1; +import iaik.ixsil.algorithms.Transform; +import iaik.ixsil.algorithms.TransformImplBase64Decode; +import iaik.ixsil.algorithms.TransformImplXSLT; +import iaik.ixsil.util.URI; +import iaik.utils.Base64OutputStream; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +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 org.w3c.dom.Document; +import org.w3c.dom.Node; + +/** + * @author stephan + */ +public class TestGeneratorVXErrors 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; + private static String etsiPropertyName = "ETSIProperties"; + private static URI etsiURI; + + + public static void main(String[] args) throws Exception { + + etsiURI = new URI("http://uri.etsi.org/01903/v1.1.1#SignedProperties"); + + vxBean = new VXResponseBean(); + + TestGeneratorVXErrors testcase = new TestGeneratorVXErrors(); + testcase.createVXConfig(); + + + //testcase.create051(); + testcase.create052(); + testcase.create053(); + testcase.create054(); + testcase.create055(); + + testcase.create151(); + //testcase.create152(); + testcase.create153(); + testcase.create154(); +//N.A.: testcase.create155(); + + testcase.create251(); + //testcase.create252(); + //testcase.create252_2(); + testcase.create253(); + //testcase.create254(); + //testcase.create255(); + //testcase.create256(); + + testcase.create351(); + testcase.create352(); + //testcase.create353(); + testcase.create354(); + //testcase.create355(); + testcase.create356(); + testcase.create357(); + //testcase.create358(); + testcase.create359(); + testcase.create360(); + testcase.create360_2(); + //testcase.create361(); + testcase.create362(); + testcase.create363(); + testcase.create364(); + testcase.create365(); + testcase.create366(); + testcase.create367(); + //testcase.create368(); + testcase.create369(); + testcase.create370(); + + + } + + /* ==================================================================================================== */ + + public TestGeneratorVXErrors() 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 create051() throws Exception { + String testNumber = "051"; + //Create a Request with number 051, Time in the future (+24 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/testDaten.txt"); + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,24), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"0000"); + + } + /** + * Method create052. + * @throws Exception + */ + public void create052() throws Exception { + String testNumber = "052"; + //Create a Request with number 052, with current Time (+0 hours) + // and with the Date and ReturnHashInputDate Elements present + + // BUT there is in invalid Element to crash validation against XMLDsig + // </dsig:SignedInfo> is replaces by </dsig:NoValidDSigSignedInfo> + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = + replaceString( + request, + "<dsig:SignedInfo>", + "<dsig:NoValidDSigSignedInfo>"); + request = + replaceString( + request, + "</dsig:SignedInfo>", + "</dsig:NoValidDSigSignedInfo>"); + + writeFile(vxReqFile(testNumber), request); + writeFile(vxResErrFile(testNumber),"1100"); + } + + /** + * Method create053. + * @throws Exception + */ + public void create053() throws Exception { + String testNumber = "053"; + //Create a Request with number 053, with current Time (+0 hours) + // and with the Date and ReturnHashInputDate Elements present + + // BUT with an invalid XPath expression + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = + replaceString( + request, + "<VerifySignatureLocation>//dsig:Signature</VerifySignatureLocation>", + "<VerifySignatureLocation>//invalid XPath Expression</VerifySignatureLocation>"); + + writeFile(vxReqFile(testNumber), request); + writeFile(vxResErrFile(testNumber),"2212"); + } + /** + * Method create054. + * @throws Exception + */ + public void create054() throws Exception { + String testNumber = "054"; + + //Create a Request with number 053, with current Time (+0 hours) + // and with the Date and ReturnHashInputDate Elements present + + // BUT with an valid XPath expression not referencing a valid element + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = + replaceString(request, "//dsig:Signature", "//dsig:NoValidElement"); + writeFile(vxReqFile(testNumber), request); + writeFile(vxResErrFile(testNumber),"2212"); + } + public void create055() throws Exception { + + String testNumber = "055"; + + //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/testDaten.txt"); + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = + replaceString(request, + "TrustProfile1", "InvalidProfile"); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2203"); + + + // writeFile(vxResFile(testNumber), createResponse(testNumber,"0")); + } + public void create151() throws Exception { + + String testNumber = "151"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + + + String requestEnd = createSignatureInfoEnd()+ + createRequestShortEnd(false); + + String request = + makeOutputFile( + createRequestStart(testNumber + " an URI referenced in dsig:Signature does not resolve and no SupplementProfile is available",true,0), + cpkcs.returnSig(), + requestEnd); + + request = replaceString(request, configuration_.getProperty("webbaseDir")+"resources/testDaten.txt","http://no.uritoresolve.com" ); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2264"); + + } + public void create152() throws Exception { + + String testNumber = "152"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + + Supplement supp = new Supplement(); + supp.addMetaInfo("text/plain","http://www.buergerkarte.at"); + supp.addBase64Content(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt", + readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/testDaten.txt")); + supp.closeSupplement(); + //supp.addProfileID("Some ID"); + + String requestEnd = createSignatureInfoEnd()+ + supp.getSupplement() + createRequestShortEnd(false); + + String request = + makeOutputFile( + createRequestStart(testNumber + "- MimeType",true,0), + cpkcs.returnSig(), + requestEnd); + + request = replaceString(request, "text/plain","no valid MIME-Type" ); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"1100"); + } + + public void create153() throws Exception { + + String testNumber = "153"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + + String requestEnd = + createSignatureInfoEnd()+ + "<SupplementProfileID>NO VALID SUPPLEMENT PROFILE ID</SupplementProfileID>" + + createRequestShortEnd(false); + + String request = + makeOutputFile( + createRequestStart(testNumber + " - invalid SupplementProfileID",true,0), + cpkcs.returnSig(), + requestEnd); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2267"); + } + + public void create154() throws Exception { + + String testNumber = "154"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + + Supplement supp = new Supplement(); + supp.addMetaInfo("text/plain","http://www.buergerkarte.at"); + supp.addBase64Content(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt", + readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/testDaten.txt")); + supp.closeSupplement(); + //supp.addProfileID("Some ID"); + + String requestEnd = createSignatureInfoEnd()+ + supp.getSupplement() + createRequestShortEnd(false); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + requestEnd); + request = replaceString(request,"<Base64Content>","<Base64Content>AAAAAAAAAAAAAAAAAA"); + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"1100"); + } + +public void create155() throws Exception { + String testNumber = "155"; +/* CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + + Supplement supp = new Supplement(); + supp.addXMLContent(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt", readFileCR(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt")); + supp.closeSupplement(); + + String requestEnd = + createSignatureInfoEnd()+ + supp.getSupplement()+ + createRequestShortEnd(false); + + String request = + makeOutputFile( + createRequestStart(testNumber+" - Supplement/Content/XMLContent does not match to the signature",true,0), + cpkcs.returnSig(), + requestEnd); +*/ +// request = replaceString(request,"<XMLContent>","<XMLContent><OPEN_ELEMENT>"); + + writeFile(vxReqFile(testNumber),"N.A."); + writeFile(vxResErrFile(testNumber),"0000"); + } + + + +public void create251() throws Exception + { String testNumber = "251"; + + String filepath = configuration_.getProperty("webbaseDir")+"resources/"; + String filename = "CX1_book.xsl"; + + 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.createReferenceWithManifest( + new URI("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/" + filename), + "Manifest","http://www.buergerkarte.at/specifications/Securitylayer/20020225#SignatureManifest"); + + EtsiProperties ets = new EtsiProperties(); + ets.addDataObjectFormat("#reference-1"); + cpkcs.createEnvelopedDataObject(etsiPropertyName, + ets.getQualProp()); + + cpkcs.createReference(new URI("#xpointer(id('" + etsiPropertyName + "'))/*/*"), + etsiURI); + + cpkcs.setKeyInformation(); + + SignatureManifestCheckParams smcp = new SignatureManifestCheckParams("true"); + + smcp.addTransformsProfileID("InvalidTransformsProfile"); + + String request = + makeOutputFile( + createRequestStart("251 - VerifyTransformsInfoID: invalidID",true,0), + cpkcs.returnSig(), + createSignatureInfoEnd() + smcp.returnDoc() + + createRequestShortEnd(false)); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2268"); + } + + + public void create252() throws Exception + { String testNumber = "252"; + + String filepath = configuration_.getProperty("webbaseDir")+"resources/"; + String filename = "CX1_book.xsl"; + + 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; + //Reference 1 + cpkcs.createReferenceWithTransforms(new URI(configuration_.getProperty("webbaseDir")+"resources/BookData.xml"),tr,"reference-1"); + + cpkcs.createReferenceWithManifest( + new URI("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/" + filename), + "Manifest","http://www.buergerkarte.at/specifications/Securitylayer/20020225#SignatureManifest"); + EtsiProperties ets = new EtsiProperties(); + ets.addDataObjectFormat("#reference-1"); + //ets.addDataObjectFormat("#reference-2"); + cpkcs.createEnvelopedDataObject( + etsiPropertyName,ets.getQualProp()); + + cpkcs.createReference(new URI("#xpointer(id('" + etsiPropertyName + "')/*/*)"),etsiURI); + cpkcs.setKeyInformation(); + SignatureManifestCheckParams smcp = new SignatureManifestCheckParams("true"); + for (int trNr=0; trNr < tr.length; trNr++) + smcp.addDisgTransform(tr[trNr].toElement(smcp.getDoc())); + smcp.addTransPara("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/"+ filename); + smcp.addTransParaElement("Base64Content",readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/"+ filename)); + + SignatureManifestCheckParams smcp2 = new SignatureManifestCheckParams(null); + for (int trNr=0; trNr < tr.length; trNr++) + smcp2.addDisgTransform(tr[trNr].toElement(smcp2.getDoc())); + smcp2.addTransPara("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/"+ filename); + smcp2.addTransParaElement("Base64Content",readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/"+ filename)); + + String signManiDoc = replaceString(smcp.returnDoc(),"</SignatureManifestCheckParams>","") + + replaceString(smcp2.returnDoc(),"<SignatureManifestCheckParams>",""); + + String request = + makeOutputFile( + createRequestStart("252 number of ReferenceInfo is different from number of dsig:Reference in the signature",true,0), + cpkcs.returnSig(), + createSignatureInfoEnd() + signManiDoc + + createRequestShortEnd(false)); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2271"); + } + +public void create252_2() throws Exception + { String testNumber = "252_2"; + + String filepath = configuration_.getProperty("webbaseDir")+"resources/"; + String filename = "CX1_book.xsl"; + + 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; + //Reference 1 + cpkcs.createReferenceWithTransforms(new URI(configuration_.getProperty("webbaseDir")+"resources/BookData.xml"),tr,"reference-1"); + + cpkcs.createReferenceWithTransforms(new URI(configuration_.getProperty("webbaseDir")+"resources/BookData.xml"),tr,"reference-2"); + + + cpkcs.createReferenceWithManifest( + new URI("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/" + filename), + "Manifest","http://www.buergerkarte.at/specifications/Securitylayer/20020225#SignatureManifest"); + EtsiProperties ets = new EtsiProperties(); + ets.addDataObjectFormat("#reference-1"); + ets.addDataObjectFormat("#reference-2"); + cpkcs.createEnvelopedDataObject( + etsiPropertyName,ets.getQualProp()); + + cpkcs.createReference(new URI("#xpointer(id('" + etsiPropertyName + "')/*/*)"),etsiURI); + cpkcs.setKeyInformation(); + SignatureManifestCheckParams smcp = new SignatureManifestCheckParams("true"); + for (int trNr=0; trNr < tr.length; trNr++) + smcp.addDisgTransform(tr[trNr].toElement(smcp.getDoc())); + smcp.addTransPara("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/"+ filename); + smcp.addTransParaElement("Base64Content",readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/"+ filename)); + + String request = + makeOutputFile( + createRequestStart("252_2 number of References id bigger then number of ReferenceInfos",true,0), + cpkcs.returnSig(), + createSignatureInfoEnd() + smcp.returnDoc() + + createRequestShortEnd(false)); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2271"); + } + +public void create253() throws Exception + { String testNumber = "253"; + + String filepath = configuration_.getProperty("webbaseDir")+"resources/"; + String filename = "CX1_book.xsl"; + + 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.createReferenceWithManifest( + new URI("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/" + filename), + "Manifest","http://www.buergerkarte.at/specifications/Securitylayer/20020225#SignatureManifest"); + + EtsiProperties ets = new EtsiProperties(); + ets.addDataObjectFormat("#reference-1"); + cpkcs.createEnvelopedDataObject(etsiPropertyName, + ets.getQualProp()); + + cpkcs.createReference(new URI("#xpointer(id('" + etsiPropertyName + "'))/*/*"), + etsiURI); + + cpkcs.setKeyInformation(); + + SignatureManifestCheckParams smcp = new SignatureManifestCheckParams("true"); + for (int trNr=0; trNr < tr.length; trNr++) + smcp.addDisgTransform(tr[trNr].toElement(smcp.getDoc())); + smcp.addTransPara("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/"+ filename); + smcp.addTransParaElement("Base64Content",readBinaryFileAsBase64_new(configuration_.getProperty("baseDir")+"resources/"+ filename)); + + String request = + makeOutputFile( + createRequestStart("253 mismatching dsig:Transform/@Algorithm and dsig:Transform content",true,0), + cpkcs.returnSig(), + createSignatureInfoEnd() + smcp.returnDoc() + + createRequestShortEnd(false)); + + request = replaceString(request, + "http://www.w3.org/TR/1999/REC-xslt-19991116","MismatchingTransformAlgorithm"); + request = replaceString(request, + "http://www.w3.org/TR/1999/REC-xslt-19991116","http://www.w3.org/TR/1999/REC-xpath-19991116"); + request = replaceString(request,"MismatchingTransformAlgorithm", + "http://www.w3.org/TR/1999/REC-xslt-19991116"); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2202"); + } +public void create254() throws Exception + { String testNumber = "254"; + + String filepath = configuration_.getProperty("webbaseDir")+"resources/"; + String filename = "CX1_book.xsl"; + + 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.createReferenceWithManifest( + new URI("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/" + filename), + "Manifest","http://www.buergerkarte.at/specifications/Securitylayer/20020225#SignatureManifest"); + + EtsiProperties ets = new EtsiProperties(); + ets.addDataObjectFormat("#reference-1"); + cpkcs.createEnvelopedDataObject(etsiPropertyName, ets.getQualProp()); + cpkcs.createReference(new URI("#xpointer(id('" + etsiPropertyName + "'))/*/*"), etsiURI); + cpkcs.setKeyInformation(); + + SignatureManifestCheckParams smcp = new SignatureManifestCheckParams("true"); + for (int trNr=0; trNr < tr.length; trNr++) + smcp.addDisgTransform(tr[trNr].toElement(smcp.getDoc())); + smcp.addTransPara("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/"+ filename); + smcp.addTransParaElement("Hash",getBase64Hash(configuration_.getProperty("webbaseDir")+"resources/" + filename)); + + String request = + makeOutputFile( + createRequestStart("254 - TransformParameter/@URI resolves but Hash does not match - which hashing algorithm?",true,0), + cpkcs.returnSig(), + createSignatureInfoEnd() + smcp.returnDoc() + + createRequestShortEnd(false)); + + request = replaceString(request,"<Hash><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><dsig:DigestValue>", + "<Hash><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><dsig:DigestValue>abcd"); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2205"); + } + +public void create255() throws Exception + { String testNumber = "255"; + + String filepath = configuration_.getProperty("webbaseDir")+"resources/"; + String filename = "CX1_book.xsl"; + + 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.createReferenceWithManifest( + new URI("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/" + filename), + "Manifest","http://www.buergerkarte.at/specifications/Securitylayer/20020225#SignatureManifest"); + + EtsiProperties ets = new EtsiProperties(); + ets.addDataObjectFormat("#reference-1"); + cpkcs.createEnvelopedDataObject(etsiPropertyName, + ets.getQualProp()); + + cpkcs.createReference(new URI("#xpointer(id('" + etsiPropertyName + "'))/*/*"), + etsiURI); + + cpkcs.setKeyInformation(); + + SignatureManifestCheckParams smcp = new SignatureManifestCheckParams("true"); + for (int trNr=0; trNr < tr.length; trNr++) + smcp.addDisgTransform(tr[trNr].toElement(smcp.getDoc())); + + String request = + makeOutputFile( + createRequestStart("255 kein TransformParameter element obwohl in Transforms URIs referenziert werden",true,0), + cpkcs.returnSig(), + createSignatureInfoEnd() + smcp.returnDoc() + + createRequestShortEnd(false)); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2204"); + } + +public void create256() throws Exception + { String testNumber = "256"; + + String filepath = configuration_.getProperty("webbaseDir")+"resources/"; + String filename = "CX1_book.xsl"; + + 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.createReferenceWithManifest( + new URI("http://moa-test.brz.intra.gv.at/TestDatenGenerator/resources/" + filename), + "Manifest","http://www.buergerkarte.at/specifications/Securitylayer/20020225#SignatureManifest"); + + EtsiProperties ets = new EtsiProperties(); + ets.addDataObjectFormat("#reference-1"); + cpkcs.createEnvelopedDataObject(etsiPropertyName, + ets.getQualProp()); + + cpkcs.createReference(new URI("#xpointer(id('" + etsiPropertyName + "'))/*/*"), + etsiURI); + + cpkcs.setKeyInformation(); + + SignatureManifestCheckParams smcp = new SignatureManifestCheckParams("true"); + + smcp.addTransformsProfileID("TransformsInfoProfile2"); + + String request = + makeOutputFile( + createRequestStart("256 1 VerifyTransformsInfoID ==> Passt aber nicht zur Transformation (XSLT <==> Canonisiserung)",true,0), + cpkcs.returnSig(), + createSignatureInfoEnd() + smcp.returnDoc() + + createRequestShortEnd(false)); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2204"); + } + +public void create351() throws Exception { + + String testNumber = "351"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + String request = + makeOutputFile( createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + request = replaceString( request, + "http://www.w3.org/TR/2001/REC-xml-c14n-20010315", + "http://www.w3.org/TR/2001/unknownCanonicalzationMethod"); + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2240"); + } + + +public void create352() throws Exception { + + String testNumber = "352"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + String request = + makeOutputFile( createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + request = replaceString( request, + "http://www.w3.org/2000/09/xmldsig#rsa-sha1", + "http://www.w3.org/TR/2001/unknownSignatureMethod"); + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2240"); + } +public void create353()throws Exception { + + String testNumber = "353"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(false,"#xpointer(id('envelopedData'))"); + cpkcs.createEnvelopedDataObject("envelopedData",readFileCR(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt")); + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = + replaceString( + request, + "#xpointer(id('envelopedData'))", + "#xpointer(id('unknownURITarget'))"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2264"); + } + public void create354() throws Exception { + + String testNumber = "354"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(false,configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.setKeyInformation(); + String request = + makeOutputFile( createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + request = replaceString( request, + "http://www.w3.org/2000/09/xmldsig#sha1", + "http://www.w3.org/TR/2001/unknownDigestMethod"); + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2240"); + } + public void create355() throws Exception { + + String testNumber = "355"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(true,readFileCR(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt")); + cpkcs.setKeyInformation(); + String request = + makeOutputFile( createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + request = replaceString( request, + "<dsig:DigestValue>", + "<dsig:DigestValue>WrongData and the original:"); + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"0000"); + } + public void create356() throws Exception { + + String testNumber = "356"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + + //Erzeugen der Base64-Daten +// String tmp = readBinaryFileAsBase64(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + + URI target = new URI(configuration_.getProperty("webbaseDir")+"resources/testDaten.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)); + request = replaceString( request, + "http://www.w3.org/2000/09/xmldsig#base64", + "http://www.w3.org/TR/2001/unknownTransformsMethod"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + public void create357() throws Exception { + + String testNumber = "357"; + + String filepath = configuration_.getProperty("webbaseDir")+"resources/"; + String filename = "CX1_book.xsl"; + + 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("357 nicht zu Reference/Transforms/Transform/@Algorithm passender Inha",true,0), + cpkcs.returnSig(), + createSignatureInfoEnd() + + createRequestShortEnd(false)); + + request = replaceString(request, "http://www.w3.org/TR/1999/REC-xslt-19991116", + "http://www.w3.org/TR/1999/REC-xpath-19991116"); + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + + public void create358() throws Exception { + + String testNumber = "358"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + //cpkcs.createReference(true,"Dies sind testdaten"); + + URI target = new URI(configuration_.getProperty("webbaseDir")+"resources/testDaten.txtBase64.enc"); + + // cpkcs.createEnvelopedDataObject("envelopedData",readBinaryFileAsBase64(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt")); + + Transform[] tr = new Transform[1]; + tr[0] = new TransformImplBase64Decode(); + InputStream s = getHttpInputStream(target.toString()); + tr[0].setInput(s,null); + + cpkcs.createReferenceWithTransforms(target,tr); + //cpkcs.createReference(false, "file:/"+ configuration_.getProperty("webbaseDir")+"resources/test_wo_canonicalisation.XML"); + //cpkcs.createReference(false, "file:/"+ configuration_.getProperty("webbaseDir")+"resources/test_w_canonicalisation.XML"); +// cpkcs.createReferenceWithManifest(new URI("file:/"+ configuration_.getProperty("webbaseDir")+"resources/test_w_canonicalisation.XML"),"canonicalizedData"); + + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request, + "<dsig:SignatureValue>","<dsig:SignatureValue>abcd"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + + public void create359() throws Exception { + + String testNumber = "359"; + + URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml"); + URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data"); + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(true,readFileCR(configuration_.getProperty("webbaseDir") + "resources/testDaten.txt")); + cpkcs.setKeyInformation(false, fileURI, typeURI, null); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request,"<dsig:KeyInfo>",""); + request = replaceString(request,"<dsig:RetrievalMethod Type=\"http://www.w3.org/2000/09/xmldsig#X509Data\" URI=\""+configuration_.getProperty("webbaseDir") + "resources/X509Data.xml\"/>",""); + request = replaceString(request,"</dsig:KeyInfo>",""); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2243"); + } + public void create360() throws Exception { + + String testNumber = "360"; + + URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml"); + URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data"); + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(true,readFileCR(configuration_.getProperty("webbaseDir") + "resources/testDaten.txt")); + cpkcs.setKeyInformation(false, fileURI, typeURI, null); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request,"<dsig:RetrievalMethod Type=\"http://www.w3.org/2000/09/xmldsig#X509Data\" URI=\""+configuration_.getProperty("webbaseDir") + "resources/X509Data.xml\"/>", + "<dsig:X509Data><dsig:X509SubjectName>Some kind of Subject</dsig:X509SubjectName></dsig:X509Data>"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + + public void create360_2() throws Exception { + + String testNumber = "360_2"; + + URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml"); + URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data"); + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(true,readFileCR(configuration_.getProperty("webbaseDir") + "resources/testDaten.txt")); + cpkcs.setKeyInformation(false, fileURI, typeURI, null); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request,"<dsig:RetrievalMethod Type=\"http://www.w3.org/2000/09/xmldsig#X509Data\" URI=\""+configuration_.getProperty("webbaseDir") + "resources/X509Data.xml\"/>", + "<dsig:KeyName>Some kind of string as KeyName</dsig:KeyName>"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + + public void create361() throws Exception { + + String testNumber = "361"; + + URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml"); + URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data"); + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(true,readFileCR(configuration_.getProperty("webbaseDir") + "resources/testDaten.txt")); + cpkcs.setKeyInformation(false, fileURI, typeURI, null); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request,"<dsig:RetrievalMethod Type=\"http://www.w3.org/2000/09/xmldsig#X509Data\" URI=\""+configuration_.getProperty("webbaseDir") + "resources/X509Data.xml\"/>", + " <dsig:X509Data>\n"+ + " <dsig:X509Certificate>"+ + readFileCR(configuration_.getProperty("webbaseDir") + "resources/tests.cer.b64") + + "</dsig:X509Certificate>\n"+ + " </dsig:X509Data>\n"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2243"); + } + + public void create362() throws Exception { + + String testNumber = "362"; + + URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml"); + URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data"); + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(true,readFileCR(configuration_.getProperty("webbaseDir") + "resources/testDaten.txt")); + cpkcs.setKeyInformation(false, fileURI, typeURI, null); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request,"<dsig:RetrievalMethod Type=\"http://www.w3.org/2000/09/xmldsig#X509Data\" URI=\""+configuration_.getProperty("webbaseDir") + "resources/X509Data.xml\"/>", + " <dsig:X509Data>\n"+ + " <dsig:X509Certificate>"+ + readFileCR(configuration_.getProperty("webbaseDir")+"resources/testDaten.txtbase64.enc") + + "</dsig:X509Certificate>\n"+ + " </dsig:X509Data>\n"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + public void create363() throws Exception { + + String testNumber = "363"; + + URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml"); + URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data"); + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(true,readFileCR(configuration_.getProperty("webbaseDir") + "resources/testDaten.txt")); + cpkcs.setKeyInformation(false, fileURI, typeURI, null); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request,"<dsig:RetrievalMethod Type=\"http://www.w3.org/2000/09/xmldsig#X509Data\" URI=\""+configuration_.getProperty("webbaseDir") + "resources/X509Data.xml\"/>", + " <dsig:X509Data>\n"+ + " <dsig:X509Certificate>"+ + "( no BASE64 data )" + + "</dsig:X509Certificate>\n"+ + " </dsig:X509Data>\n"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"1100"); + } + + public void create364() throws Exception { + + String testNumber = "364"; + + URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml"); + URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data"); + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(true,readFileCR(configuration_.getProperty("webbaseDir") + "resources/testDaten.txt")); + cpkcs.setKeyInformation(false, fileURI, typeURI, null); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request, + "http://www.w3.org/2000/09/xmldsig#X509Data", + "http://www.w3.org/2000/09/noValidRetrievalMethodType"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + public void create365() throws Exception { + + String testNumber = "365"; + + URI fileURI = new URI(configuration_.getProperty("webbaseDir") + "resources/X509Data.xml"); + URI typeURI = new URI("http://www.w3.org/2000/09/xmldsig#X509Data"); + + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + cpkcs.createReference(true,readFileCR(configuration_.getProperty("webbaseDir") + "resources/testDaten.txt")); + cpkcs.setKeyInformation(false, fileURI, typeURI, null); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request, + configuration_.getProperty("webbaseDir") + "resources/X509Data.xml", + configuration_.getProperty("webbaseDir") + "resources/test-ee2003_normal.der"); + + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + + public void create366() throws Exception { + + String testNumber = "366"; + + 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/testDaten.txt"); + + //DER-encoded RAW-Zertifikat zu Binary64 konvertieren + // String tmp = readBinaryFileAsBase64(fileURI.getPath()); + //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)); + + request = replaceString(request, "http://www.w3.org/2000/09/xmldsig#base64", + "http://Invalid.URI.com"); + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + public void create367() throws Exception { + + String testNumber = "367"; + + 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/testDaten.txt"); + + //DER-encoded RAW-Zertifikat zu Binary64 konvertieren + // String tmp = readBinaryFileAsBase64(fileURI.getPath()); + //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)); + + request = replaceString(request, "http://www.w3.org/2000/09/xmldsig#rawX509Certificate", + "http://www.w3.org/2000/09/xmldsig#X509Data"); + writeFile(vxReqFile(testNumber),request); + + writeFile(vxResErrFile(testNumber),"2240"); + } + + public void create368() throws Exception { + String testNumber = "368"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + URI fileURI1 = new URI(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.createReferenceWithManifest(fileURI1,"manifestObject"); + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request, "http://www.w3.org/2000/09/xmldsig#Manifest", + "http://No.valid_manifest_URI.com"); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2240"); + } + + public void create369() throws Exception { + String testNumber = "369"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + URI fileURI1 = new URI(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.createReferenceWithManifest(fileURI1,"manifestObject"); + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + request = replaceString(request, "#xpointer(id('manifestObject'))", + "#xpointer(id('NoValidManifestObject'))"); + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2262"); + } + public void create370() throws Exception { + String testNumber = "370"; + + CreatePKCSSignature cpkcs = new CreatePKCSSignature(); + cpkcs.init(); + cpkcs.setCanoncialization(canAlgCanXML); + URI fileURI1 = new URI(configuration_.getProperty("webbaseDir")+"resources/testDaten.txt"); + cpkcs.createReferenceWithManifest(fileURI1,"manifestObject"); + cpkcs.setKeyInformation(); + + String request = + makeOutputFile( + createRequestStart(testNumber,true,0), + cpkcs.returnSig(), + createRequestEnd(true,false,null)); + + //Hier wird der DigestAlg vom Reference-Objekt im SignedInfo verändert + request = replaceString(request, + "http://www.w3.org/2000/09/xmldsig#sha1", + "noValidDigestAlg"); + //Hier wird der DigestAlg vom Reference-Objekt im Manifset verändert + request = replaceString(request, + "http://www.w3.org/2000/09/xmldsig#sha1", + "noValidDigestAlg"); + //Hier wird der DigestAlg vom Reference-Objekt im SignedInfo zurück geändert + request = replaceString(request, + "noValidDigestAlg", + "http://www.w3.org/2000/09/xmldsig#sha1"); + + + writeFile(vxReqFile(testNumber),request); + writeFile(vxResErrFile(testNumber),"2262"); } + + + /** + * 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 <?xml ?> Prologue + int pos = erg.indexOf("<dsig"); + erg = erg.substring(pos); + + // insert the dsig:signature element in a MOA Response Message + erg = start + erg + end; + + return erg; + } + + /** + * Method createRequestStart. + * @param testNumber + * @param useDate + * @param changeHours + * @return String + */ + private String createRequestStart(String testNumber, boolean useDate, int changeHours) + {String reqStart = null; + System.out.println("======================================================"); + System.out.println("================== TEST-NUMBER "+ testNumber + " ==================="); + System.out.println("======================================================"); + + reqStart = + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + + "<!-- Testnumber: " + + testNumber + + "-->\n" + + "<VerifyXMLSignatureRequest\n" + + " xmlns=\"http://reference.e-government.gv.at/namespace/moa/20020822#\"\n" + + " xmlns:xml=\"http://www.w3.org/XML/1998/namespace\"" + + " xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\">\n"; + + if (useDate) { + reqStart += " <DateTime>" + + getDate(changeHours) + + "</DateTime>\n"; + } + + reqStart += " <VerifySignatureInfo>\n" + + " <VerifySignatureEnvironment>\n" + + " <XMLContent xml:space=\"preserve\">" ; + 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<tr.length-1; t++) + { + myTransforms[t+1].setInput((InputStream)myTransforms[t].transform(),null); + } + + ByteArrayInputStream is = (ByteArrayInputStream)myTransforms[tr.length-1].transform(); + + + byte[] b = new byte[1]; + is.read(b); + while (is.available() > 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 = + "</VerifySignatureEnvironment>\n" + + " <VerifySignatureLocation>#xpointer(/VerifyXMLSignatureRequest/VerifySignatureInfo/VerifySignatureEnvironment/dsig:Signature)</VerifySignatureLocation>\n" + + " </VerifySignatureInfo>\n"; +*/ + reqEnd ="</XMLContent>"+ + "</VerifySignatureEnvironment>\n" + + " <VerifySignatureLocation>//dsig:Signature</VerifySignatureLocation>\n" + + " </VerifySignatureInfo>\n"; + + + + if (useSupplement) + { + reqEnd += " <Supplement>\n" + + " <Content Reference=\"file:/" + supplementReference.toString() + "\">\n" + + " <XMLContent>"+readFileCR(supplementReference.toString())+"</XMLContent>\n" + + " </Content>\n" + + " </Supplement>\n"; + } + + if (useReturnHashInputData) { + reqEnd += " <ReturnHashInputData/>\n"; + } + reqEnd += " <TrustProfileID>TrustProfile1</TrustProfileID>\n" + + "</VerifyXMLSignatureRequest>\n"; + return reqEnd; + + } + + private String createSignatureInfoEnd() + throws Exception { + + return "</XMLContent>"+"</VerifySignatureEnvironment>\n" + + " <VerifySignatureLocation>//dsig:Signature</VerifySignatureLocation>\n" + + " </VerifySignatureInfo>\n"; + + } + + private String createRequestShortEnd(boolean useReturnHashInputData) + throws Exception { + + String reqEnd = ""; + + if (useReturnHashInputData) + reqEnd = " <ReturnHashInputData/>\n"; + + reqEnd += " <TrustProfileID>TrustProfile1</TrustProfileID>\n" + + "</VerifyXMLSignatureRequest>\n"; + return reqEnd; + + } + /** + * Method createResponse. + * @param testNumber + * @param signatureCheckCode + * @return String + * @throws Exception + */ + private String createResponse(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 += " <dsig:X509IssuerSerial>\n"; + res += vxBean.getIssuerDN(); + res += vxBean.getSerialNumber(); + res += " </dsig:X509IssuerSerial>\n" + + " </dsig:X509Data>\n" + + " </SignerInfo>\n"; + res += " <HashInputData>\n" + " <XMLContent xml:space=\"preserve\">"; + res += readFileCR( + configuration_.getProperty("webbaseDir") + + "resources/testDaten.txt")+ + "</XMLContent>"; + + res += vxBean.getFooterSignatureCheck(signatureCheckCode, "0"); + + return res; + } + + private String createResponse(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 += " <dsig:X509IssuerSerial>\n"; + res += vxBean.getIssuerDN(); + res += vxBean.getSerialNumber(); + res += " </dsig:X509IssuerSerial>\n" + + " </dsig:X509Data>\n" + + " </SignerInfo>\n"; + res += " <HashInputData>\n" + + " <XMLContent xml:space=\"preserve\">"+ + hashData + + "</XMLContent>\n"; + res += vxBean.getFooterSignatureCheck(signatureCheckCode, "0"); + + return res; + } + + + private String createResponseWithoutHashInputData(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 += " <dsig:X509IssuerSerial>\n"; + res += vxBean.getIssuerDN(); + res += vxBean.getSerialNumber(); + res += " </dsig:X509IssuerSerial>\n" + + " </dsig:X509Data>\n" + + " </SignerInfo>\n" + + " <SignatureCheck>\n" + + " <Code>" + signatureCheckCode + "</Code>\n" + + " </SignatureCheck>\n" + + " <CertificateCheck>\n" + + " <Code>0</Code>\n" + + " </CertificateCheck>\n" + + "</VerifyXMLSignatureResponse>"; + + return res; + } +/* private String createResponseXMLDsigCheck(String testNumber, String xmlDSIGManifestCheckCode) throws Exception { + + // + vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/" + "test-ee2003_normal.der"); + + String res = null; + + res = vxBean.getHeader(); + res += vxBean.getSubjectDN(); + res += " <dsig:X509IssuerSerial>\n"; + res += vxBean.getIssuerDN(); + res += vxBean.getSerialNumber(); + res += " </dsig:X509IssuerSerial>\n" + + " </dsig:X509Data>\n" + + " </SignerInfo>\n"; + res += " <HashInputData>\n" + " <XMLContent>"; + res += readFile( + configuration_.getProperty("webbaseDir") + + "resources/testDaten.txt"); + + res += vxBean.getFooterXMLDSIGManifestCheck(xmlDSIGManifestCheckCode,"0"); + + return res; + }*/ + + private String createResponsePart() throws Exception { + + // + vxBean.init(configuration_.getProperty("webbaseDir")+ "resources/" + "test-ee2003_normal.der"); + + String res = null; + + res = vxBean.getHeader(); + res += vxBean.getSubjectDN(); + res += " <dsig:X509IssuerSerial>\n"; + res += vxBean.getIssuerDN(); + res += vxBean.getSerialNumber(); + res += " </dsig:X509IssuerSerial>\n" + + " </dsig:X509Data>\n" + + " </SignerInfo>\n"; + 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<result.length; t++) + { + temp[s] = result[t]; + s++; + if (temp[s-1]==10) + { + if (temp[s-2]==13) + { + temp[s-2]=10; + s--; + } + } + } + byte[] res = new byte[s]; + result = null; + + System.arraycopy(temp,0,res,0,s); + + + response = new String(res); + + try { + response = replaceString(response,"<?xml version=\"1.0\" encoding=\"utf-8\"?>",""); + } + 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(); + } + +public String vxResErrFile(String testNumber) + { + return configuration_.getProperty("baseDir") + + "/data/VX0/"+ + configuration_.getProperty("TestClass") + + "." + + testNumber + + ".ErrRes.xml"; + } +private String getBase64Hash(String filename) throws Exception + { + DigestAlgorithmImplSHA1 dig = new DigestAlgorithmImplSHA1(); + InputStream s = getHttpInputStream(filename); + + dig.setInput(s); + + InputStream erg = dig.digest(); + String result = ""; + + byte[] b = new byte[1]; + erg.read(b); + while (erg.available() > 0) + { + result += new String(b); + erg.read(b); + } + result += new String(b); + + ByteArrayOutputStream fos = new ByteArrayOutputStream(); + Base64OutputStream base64os = new Base64OutputStream(fos); + base64os.write(result.getBytes()); + base64os.flush(); + + return fos.toString(); + } +} |