aboutsummaryrefslogtreecommitdiff
path: root/spss.test/src/testgenerator/TestGeneratorVXErrors.java
diff options
context:
space:
mode:
Diffstat (limited to 'spss.test/src/testgenerator/TestGeneratorVXErrors.java')
-rw-r--r--spss.test/src/testgenerator/TestGeneratorVXErrors.java1775
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();
+ }
+}