package testgenerator; import iaik.asn1.ASN1Object; import iaik.asn1.CodingException; import iaik.asn1.DerCoder; import iaik.asn1.ObjectID; import iaik.asn1.structures.AlgorithmID; import iaik.asn1.structures.Attribute; import iaik.asn1.structures.ChoiceOfTime; import iaik.asn1.structures.Name; import iaik.cms.CMSException; import iaik.cms.ContentInfoStream; import iaik.cms.SignedDataStream; import iaik.cms.SignerInfo; import iaik.security.random.SecRandom; import iaik.utils.StreamCopier; import iaik.x509.X509Certificate; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.security.PrivateKey; import java.security.Provider; import java.security.SecureRandom; import java.security.Security; import java.security.SignatureException; import sun.misc.BASE64Encoder; /** * @author Administrator * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ public class TestGeneratorVC0 extends TestCases { String datadirectory = "data/VC0/"; String datadirectory_l = "data/LVC"; public String defaultblock = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ "<VerifyCMSSignatureRequest xmlns=\"http://reference.e-government.gv.at/namespace/moa/20020822#\" xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\" Signatories=\"1\">"+ "<DateTime>2003-04-04T09:30:47-05:00</DateTime>"+ "<CMSSignature><!-- insert data --></CMSSignature>"+ "<DataObject>"+ "<MetaInfo>"+ "<MimeType>text/plain</MimeType>"+ "<Description>anyURI</Description>"+ "</MetaInfo>"+ "<Content>"+ "<Base64Content>RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=</Base64Content>"+ "</Content>"+ "</DataObject>"+ "<TrustProfileID>TrustProfile1</TrustProfileID>"+ "</VerifyCMSSignatureRequest>"; public String defaultresponse = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ "<VerifyCMSSignatureResponse xmlns=\"http://reference.e-government.gv.at/namespace/moa/20020822#\" >"+ "<SignerInfo>"+ "<dsig:X509Data xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\">"+ "<dsig:X509SubjectName><!-- subn --></dsig:X509SubjectName>"+ "<dsig:X509IssuerSerial>"+ "<dsig:X509IssuerName><!-- in --></dsig:X509IssuerName>"+ "<dsig:X509SerialNumber><!-- sn --></dsig:X509SerialNumber>"+ "</dsig:X509IssuerSerial>"+ "<dsig:X509Certificate><!-- cert --></dsig:X509Certificate>"+ "<!-- cert2 -->"+ "</dsig:X509Data>"+ "</SignerInfo>"+ "<SignatureCheck>"+ "<Code><!-- sc_code --></Code>"+ "</SignatureCheck>"+ "<CertificateCheck>"+ "<Code><!-- cc_code --></Code>"+ "</CertificateCheck>"+ "</VerifyCMSSignatureResponse>"; public String defaultresponse2 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ "<VerifyCMSSignatureResponse xmlns=\"http://reference.e-government.gv.at/namespace/moa/20020822#\" >"+ "<SignerInfo>"+ "<dsig:X509Data xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\">"+ "<dsig:X509SubjectName><!-- subn --></dsig:X509SubjectName>"+ "<dsig:X509IssuerSerial>"+ "<dsig:X509IssuerName><!-- in --></dsig:X509IssuerName>"+ "<dsig:X509SerialNumber><!-- sn --></dsig:X509SerialNumber>"+ "</dsig:X509IssuerSerial>"+ "<dsig:X509Certificate><!-- cert --></dsig:X509Certificate>"+ "</dsig:X509Data>"+ "</SignerInfo>"+ "<SignatureCheck>"+ "<Code><!-- sc_code --></Code>"+ "</SignatureCheck>"+ "<CertificateCheck>"+ "<Code><!-- cc_code --></Code>"+ "</CertificateCheck>"+ "<SignerInfo>"+ "<dsig:X509Data xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\">"+ "<dsig:X509SubjectName><!-- subn --></dsig:X509SubjectName>"+ "<dsig:X509IssuerSerial>"+ "<dsig:X509IssuerName><!-- in --></dsig:X509IssuerName>"+ "<dsig:X509SerialNumber><!-- sn --></dsig:X509SerialNumber>"+ "</dsig:X509IssuerSerial>"+ "<dsig:X509Certificate><!-- cert --></dsig:X509Certificate>"+ "</dsig:X509Data>"+ "</SignerInfo>"+ "<SignatureCheck>"+ "<Code><!-- sc_code --></Code>"+ "</SignatureCheck>"+ "<CertificateCheck>"+ "<Code><!-- cc_code --></Code>"+ "</CertificateCheck>"+ "</VerifyCMSSignatureResponse>"; /* <!-- in --> <!-- sn --> <!-- subn --> <!-- sc_code --> <!-- cc_code --> */ public String b64_der_data = null; public String b64_der_data_two = null; public String b64_der_data_exp = null; public String b64_der_data_exp_two = null; public String b64_der_data_max = null; public String b64_der_data_1kb = null; public String b64_der_data_10kb = null; public String b64_der_data_100kb = null; public String b64_der_data_1mb = null; public String b64_der_data_10mb = null; public String cert_file_data = null; public String cert_max_file_data = null; public String cert_root_file_data = null; public String fileprefix = null; public String filesuffix = null; // signing certificate of user 2 X509Certificate user2_sign; // signing private key of user 2 PrivateKey user2_sign_pk; // encryption certificate of user 2 X509Certificate user2_crypt; // encryption private key of user 2 PrivateKey user2_crypt_pk; // a certificate chain containing the user certs + CA X509Certificate[] certificates; // secure random number generator SecureRandom random; public TestGeneratorVC0() throws Exception { super(); // Set config properties configuration_.setProperty("TestClass", "TestGeneratorVC0"); configuration_.setProperty( "PKCS12file_maxmustermann", (configuration_.getProperty("baseDir") + "/resources/Max_Mustermann (max).p12")); configuration_.setProperty("PKCS12password_maxmustermann", "max"); configuration_.setProperty( "CERT_maxmustermann", (configuration_.getProperty("baseDir") + "resources/Max_Mustermann.cer")); configuration_.setProperty( "CERT_ROOT", (configuration_.getProperty("baseDir") + "resources/IAIKRootMusterbehoerde.cer")); Provider [] list = Security.getProviders(); for(int counter=0;counter<list.length;counter++) { System.out.println(list[counter].getName()); } iaik.security.provider.IAIK.addAsProvider(); iaik.security.ecc.provider.ECCProvider.addAsProvider(); X509Certificate[] certs = CMSKeyStore.getCertificateChain(CMSKeyStore.RSA, CMSKeyStore.SZ_1024_SIGN); user2_sign = CMSKeyStore.getCertificateChain(CMSKeyStore.RSA, CMSKeyStore.SZ_2048_SIGN)[0]; user2_sign_pk = CMSKeyStore.getPrivateKey(CMSKeyStore.RSA, CMSKeyStore.SZ_2048_SIGN); certificates = new X509Certificate[certs.length+1]; System.arraycopy(certs, 0, certificates, 0, certs.length); certificates[certs.length] = user2_sign; // encryption certs user2_crypt = CMSKeyStore.getCertificateChain(CMSKeyStore.RSA, CMSKeyStore.SZ_2048_CRYPT)[0]; user2_crypt_pk = CMSKeyStore.getPrivateKey(CMSKeyStore.RSA, CMSKeyStore.SZ_2048_CRYPT); random = SecRandom.getDefault(); byte[] received_message = null; ASN1Object obj = null; String m = readFile(configuration_.getProperty("baseDir")+"resources/testDaten.txt"); //String m = "This is a message"; System.out.println("*"+m+"*"); byte[] message = m.getBytes(); System.out.println("Implicit SignedData demo [create]:"); obj = createSignedCMSData(message, SignedDataStream.IMPLICIT,false); byte[] sig = DerCoder.encode(obj); writeFileBinary("testimpl.ber",sig); b64_der_data = (new BASE64Encoder()).encode(sig); obj = createSignedCMSData(message, SignedDataStream.IMPLICIT,true); sig = DerCoder.encode(obj); writeFileBinary("testimpl2.ber",sig); b64_der_data_two = (new BASE64Encoder()).encode(sig); obj = createSignedCMSData(message, SignedDataStream.EXPLICIT,false); sig = DerCoder.encode(obj); writeFileBinary("testexp.ber",sig); b64_der_data_exp = (new BASE64Encoder()).encode(sig); String output = getSignedDataStream(sig,message,false); System.out.println("Output:"+output); obj = createSignedCMSData(message, SignedDataStream.EXPLICIT,true); sig = DerCoder.encode(obj); writeFileBinary("testexp2.ber",sig); b64_der_data_exp_two = (new BASE64Encoder()).encode(sig); cert_file_data = readBinaryFileAsBase64_new(configuration_.getProperty("CERT")); cert_max_file_data = readBinaryFileAsBase64_new(configuration_.getProperty("CERT_maxmustermann")); cert_root_file_data = readBinaryFileAsBase64_new(configuration_.getProperty("CERT_ROOT")); // transmit data /*System.out.println("Implicit SignedData demo [parse]:"); received_message = getSignedData(obj, null,true); System.out.print("Signed content: "); System.out.println(new String(received_message));*/ //readBinaryFileAsBase64(configuration_.getProperty("baseDir")+"resources/testDaten.txt"); } public String getCMSData(String filename) throws Exception { ASN1Object obj = null; obj = createSignedCMSData(readFile(configuration_.getProperty("baseDir") + "resources/"+filename+".txt").getBytes(), SignedDataStream.EXPLICIT,true); byte[] sig = DerCoder.encode(obj); //writeFileBinary("testexp2.ber",sig); return (new BASE64Encoder()).encode(sig); } public String getSignedDataStream(byte[] signedData, byte[] message,boolean two_users) throws CMSException, IOException { // we are testing the stream interface ByteArrayInputStream is = new ByteArrayInputStream(signedData); // create the ContentInfo object ContentInfoStream cis = new ContentInfoStream(is); System.out.println("This ContentInfo holds content of type " + cis.getContentType().getName()); SignedDataStream signed_data = null; if (message == null) { // implicitly signed; get the content signed_data = (SignedDataStream)cis.getContent(); } else { // explicitly signed; set the data stream for digesting the message AlgorithmID[] algIDs = { AlgorithmID.sha1, AlgorithmID.md5 }; signed_data = new SignedDataStream(new ByteArrayInputStream(message), algIDs); } // get an InputStream for reading the signed content InputStream data = signed_data.getInputStream(); ByteArrayOutputStream os = new ByteArrayOutputStream(); StreamCopier sc = new StreamCopier(data, os); sc.copyStream(); if (message != null) { // if explicitly signed read now the DER encoded object // an explicit S/MIME signed message also consits of message|signature signed_data.decode(cis.getContentInputStream()); } System.out.println("SignedData contains the following signer information:"); SignerInfo[] signer_infos = signed_data.getSignerInfos(); for (int i=0; i<signer_infos.length; i++) { try { // verify the signed data using the SignerInfo at index i X509Certificate signer_cert = signed_data.verify(i); // if the signature is OK the certificate of the signer is returned System.out.println("Signature OK from signer: "+signer_cert.getSubjectDN()); Attribute signingTime = signer_infos[i].getSignedAttribute(ObjectID.signingTime); if (signingTime != null) { ChoiceOfTime cot = new ChoiceOfTime(signingTime.getValue()[0]); System.out.println("This message has been signed at " + cot.getDate()); } Attribute contentType = signer_infos[i].getSignedAttribute(ObjectID.contentType); if (contentType != null) { System.out.println("The content has CMS content type " + contentType.getValue()[0]); } } catch (SignatureException ex) { // if the signature is not OK a SignatureException is thrown System.out.println("Signature ERROR from signer: "+signed_data.getCertificate((signer_infos[i].getSignerIdentifier())).getSubjectDN()); } catch (CodingException ex) { System.out.println("Attribute decoding error: " + ex.getMessage()); } } // now check alternative signature verification System.out.println("Now check the signature assuming that no certs have been included:"); try { SignerInfo signer_info = signed_data.verify(user1_sign); // if the signature is OK the certificate of the signer is returned System.out.println("Signature OK from signer: "+signed_data.getCertificate(signer_info.getSignerIdentifier()).getSubjectDN()); } catch (SignatureException ex) { // if the signature is not OK a SignatureException is thrown System.out.println("Signature ERROR from signer: "+user1_sign.getSubjectDN()); } if(two_users) try { SignerInfo signer_info = signed_data.verify(user2_sign); // if the signature is OK the certificate of the signer is returned System.out.println("Signature OK from signer: "+signed_data.getCertificate(signer_info.getSignerIdentifier()).getSubjectDN()); } catch (SignatureException ex) { // if the signature is not OK a SignatureException is thrown System.out.println("Signature ERROR from signer: "+user2_sign.getSubjectDN()); } return os.toString(); } public void createConfig() throws Exception { String file = configuration_.getProperty("baseDir") + datadirectory + configuration_.getProperty("TestClass") + ".Config.xml"; String config = "<MOAConfiguration xmlns=\"http://reference.e-government.gv.at/namespace/moaconfig/20021122#\">"+ " <KeyGroup id=\"PKCS12RSAKey1\"> <Key id=\"resources/test-ee2003_normal(buergerkarte).p12\"/> </KeyGroup>"+ " <KeyGroup id=\"PKCS12RSAKeyExpired\"> <Key id=\"sicher-demo(buergerkarte).p12\"/> </KeyGroup>"+ " <KeyGroup id=\"PKCS12ECDSAKey1\"> <Key id=\"ecc.p12\"/> </KeyGroup> "+ " <KeyGroup id=\"HSMRSAKey1\"> <Key id=\"???\"/> </KeyGroup>"+ " <KeyGroup id=\"HSMECDSAKey1\"> <Key id=\"???\"/> </KeyGroup>"+ " <DigestMethodAlgorithm name=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>"+ " <SignatureAlgorithm name=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>"+ " <CanonicalizationAlgorithm name=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\"/>"+ " <CreateSignatureEnvironmentProfile id=\"CreateSignatureEnvironmentProfile1\" filename=\""+"file:/"+configuration_.getProperty("baseDir")+"resources/csep.xml\"/>"+ " <TrustProfile id=\"validTrustProfileID1\" uri=\""+"file:/"+configuration_.getProperty("baseDir")+"TrustProfile1/\"/>"+ "</MOAConfiguration>"; FileOutputStream fos = new FileOutputStream(file); fos.write(config.getBytes()); fos.flush(); fos.close(); fileprefix = configuration_.getProperty("baseDir")+ datadirectory + configuration_.getProperty("TestClass") + "."; filesuffix = ".xml"; } public static void main(String[] args) throws Exception { TestGeneratorVC0 testcase = new TestGeneratorVC0(); testcase.createConfig(); testcase.create001(); testcase.create002(); testcase.create003(); testcase.create004(); testcase.create005(); testcase.create006(); testcase.create007(); testcase.create008(); testcase.create009(); testcase.create010(); //testcase.create011(); testcase.create012(); testcase.create051(); testcase.create052(); //testcase.create053(); testcase.create054(); testcase.create055(); testcase.create056(); testcase.create057(); testcase.create058(); //testcase.createL00(); } public void createL00() throws Exception { createL001("1kb"); createL001("10kb"); createL001("20kb"); createL001("50kb"); createL001("100kb"); createL001("500kb"); createL001("1mb"); createL001("10mb"); } public void createL001(String filename) throws Exception { String TestNumber = "001"; String reqFile = configuration_.getProperty("baseDir")+ datadirectory_l+filename+"/" + configuration_.getProperty("TestClass") + "." + TestNumber + ".Req.xml"; String req = replaceString(defaultblock,"<!-- insert data -->",getCMSData(filename)); req = replaceString(req,"<Content>","<Content Reference=\"anyURI\">"); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/"+filename+".txt"); req = replaceString(req, "<Base64Content>RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=</Base64Content>", ""); writeFile(reqFile,req); String resFile = configuration_.getProperty("baseDir")+ datadirectory_l+filename+"/" + configuration_.getProperty("TestClass") + "." + TestNumber + ".Res.xml"; String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); //res = replaceString(res,"<dsig:X509Certificate><!-- cert --></dsig:X509Certificate>",""); writeFile(resFile,res); } public void create001() throws Exception { String TestNumber = "001"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; /*CreatePKCSSignature cpkcs = new CreatePKCSSignature(); cpkcs.init(); cpkcs.setCanoncialization(canAlgCanXML); cpkcs.createReference(false,"file:/"+configuration_.getProperty("baseDir")+"resources/testDaten.txt"); cpkcs.setKeyInformation(); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document xmlns:data=\"uri.data.org\">",readFile(configuration_.getProperty("baseDir")+"resources/testDaten.txt")+"</data:Document>"); writeFile(resFile, output);*/ String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); //res = replaceString(res,"<dsig:X509Certificate><!-- cert --></dsig:X509Certificate>",""); writeFile(resFile,res); } public void create002() throws Exception { String TestNumber = "002"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp_two); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "Signatories=\"1\"", "Signatories=\"1 2\""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceStringAll(defaultresponse2,"<!-- in -->",this.X509name); res = replaceStringAll(res,"<!-- sn -->",this.X509number.toString()); res = replaceStringAll(res,"<!-- subn -->",this.X509sub); res = replaceStringAll(res,"<!-- sc_code -->","0"); res = replaceStringAll(res,"<!-- cc_code -->","0"); res = replaceStringAll(res,"<!-- cert -->",cert_file_data); //res = replaceString(res,"<!-- cert2 -->",""); writeFile(resFile,res); } public void create003() throws Exception { String TestNumber = "003"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "Signatories=\"1\"", "Signatories=\"all\""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); writeFile(resFile,res); } public void create004() throws Exception { String TestNumber = "004"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<DateTime>2003-04-04T09:30:47-05:00</DateTime>", ""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); writeFile(resFile,res); } public void create005() throws Exception { String TestNumber = "005"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<DateTime>2003-04-04T09:30:47-05:00</DateTime>", "<DateTime>2003-04-04T09:30:47-05:00</DateTime>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); writeFile(resFile,res); } public void create006() throws Exception { String TestNumber = "006"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<DataObject>"+ "<MetaInfo>"+ "<MimeType>text/plain</MimeType>"+ "<Description>"+configuration_.getProperty("webbaseDir") + "resources/testDaten.txt</Description>"+ "</MetaInfo>"+ "<Content>"+ "<Base64Content>RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=</Base64Content>"+ "</Content>"+ "</DataObject>", ""); //req = replaceString(defaultblock, writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); writeFile(resFile,res); } public void create007() throws Exception { String TestNumber = "007"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<MetaInfo>"+ "<MimeType>text/plain</MimeType>"+ "<Description>"+configuration_.getProperty("webbaseDir") + "resources/testDaten.txt</Description>"+ "</MetaInfo>", ""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); writeFile(resFile,res); } public void create008() throws Exception { String TestNumber = "008"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); writeFile(resFile,res); } public void create009() throws Exception { String TestNumber = "009"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceString(req,"<Content>","<Content Reference=\"anyURI\">"); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<Base64Content>RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=</Base64Content>", ""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); writeFile(resFile,res); } public void create011() throws Exception { String TestNumber = "011"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",readFile(configuration_.getProperty("baseDir") + "resources/VC0.011.cms.ber.b64.txt")); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<DataObject>"+ "<MetaInfo>"+ "<MimeType>text/plain</MimeType>"+ "<Description>"+configuration_.getProperty("webbaseDir") + "resources/testDaten.txt</Description>"+ "</MetaInfo>"+ "<Content>"+ "<Base64Content>RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=</Base64Content>"+ "</Content>"+ "</DataObject>", ""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceString(defaultresponse,"<!-- in -->","CN=a-sign-TEST-Premium-Enc-01,OU=a-sign-TEST-Premium-Enc-01,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT"); res = replaceString(res,"<!-- sn -->","6455"); res = replaceString(res,"<!-- subn -->","Seriennummer=790187461633,G=Testperson MOA4,SN=BRZ,CN=Testperson MOA4 BRZ,C=AT"); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); res = replaceString(res, "</dsig:X509Data>", "<sl11:QualifiedCertificate xmlns:sl11=\"http://www.buergerkarte.at/namespaces/securitylayer/20020831#\"/>"+ "</dsig:X509Data>"); writeFile(resFile,res); } public void create012() throws Exception { String TestNumber = "012"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; BufferedInputStream bis = new BufferedInputStream(new FileInputStream(configuration_.getProperty("CERT_maxmustermann"))); iaik.x509.X509Certificate cert = new iaik.x509.X509Certificate(bis); X509name = ((Name)(cert.getIssuerDN())).getRFC2253String(); X509number = cert.getSerialNumber(); X509hash = new String(cert.getFingerprintSHA()); X509sub = ((Name)(cert.getSubjectDN())).getRFC2253String(); String m = "This is a message"; System.out.println("*"+m+"*"); byte[] message = m.getBytes(); ASN1Object obj = null; obj = createSignedCMSData(message, SignedDataStream.IMPLICIT,false,"PKCS12file_maxmustermann","PKCS12password_maxmustermann","CERT_maxmustermann"); byte[] sig = DerCoder.encode(obj); writeFileBinary("testimplmax.ber",sig); b64_der_data_max = (new BASE64Encoder()).encode(sig); String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_max); req = replaceString(req, "<DataObject>"+ "<MetaInfo>"+ "<MimeType>text/plain</MimeType>"+ "<Description>anyURI</Description>"+ "</MetaInfo>"+ "<Content>"+ "<Base64Content>RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=</Base64Content>"+ "</Content>"+ "</DataObject>", ""); //req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; /*CreatePKCSSignature cpkcs = new CreatePKCSSignature(); cpkcs.init(); cpkcs.setCanoncialization(canAlgCanXML); cpkcs.createReference(false,"file:/"+configuration_.getProperty("baseDir")+"resources/testDaten.txt"); cpkcs.setKeyInformation(); Document doc = cpkcs.returnSig(); String output = makeOutputFile(doc,"<data:Document xmlns:data=\"uri.data.org\">",readFile(configuration_.getProperty("baseDir")+"resources/testDaten.txt")+"</data:Document>"); writeFile(resFile, output);*/ String res = replaceString(defaultresponse,"<!-- in -->",X509name); res = replaceString(res,"<!-- sn -->",X509number.toString()); res = replaceString(res,"<!-- subn -->",X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_max_file_data); res = replaceString(res,"<!-- cert2 -->",""); res = replaceString(res, "</dsig:X509Data>", "<PublicAuthority>"+ "<Code>Musterbehörde</Code>"+ //"<Code>Musterbeh�rde</Code>"+ "</PublicAuthority>"+ "</dsig:X509Data>"); writeFile(resFile,res); } public void create051() throws Exception { String TestNumber = "051"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "Signatories=\"1\"", "Signatories=\"0\""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"1100"); } public void create052() throws Exception { String TestNumber = "052"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "Signatories=\"1\"", "Signatories=\"10\""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"2249"); } public void create053() throws Exception { String TestNumber = "053"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<DateTime>2003-04-04T09:30:47-05:00</DateTime>", "<DateTime>"+getDate(1*34*24)+"</DateTime>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"0000"); } public void create054() throws Exception { String TestNumber = "054"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock, "<CMSSignature><!-- insert data --></CMSSignature>", "<CMSSignature>this is no Base64 Data</CMSSignature>"); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"1100"); } public void create055() throws Exception { String TestNumber = "055"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<DataObject>"+ "<MetaInfo>"+ "<MimeType>text/plain</MimeType>"+ "<Description>"+configuration_.getProperty("webbaseDir") + "resources/testDaten.txt</Description>"+ "</MetaInfo>"+ "<Content>"+ "<Base64Content>RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=</Base64Content>"+ "</Content>"+ "</DataObject>", ""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"2248"); } public void create010() throws Exception { String TestNumber = "010"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceString(req,"<Content>","<Content Reference=\"anyURI\">"); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<Base64Content>RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=</Base64Content>", ""); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".Res"+filesuffix; String res = replaceString(defaultresponse,"<!-- in -->",this.X509name); res = replaceString(res,"<!-- sn -->",this.X509number.toString()); res = replaceString(res,"<!-- subn -->",this.X509sub); res = replaceString(res,"<!-- sc_code -->","0"); res = replaceString(res,"<!-- cc_code -->","0"); res = replaceString(res,"<!-- cert -->",cert_file_data); res = replaceString(res,"<!-- cert2 -->",""); writeFile(resFile,res); } public void create056() throws Exception { String TestNumber = "056"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req, "<TrustProfileID>TrustProfile1</TrustProfileID>", "<TrustProfileID>notvalidTrustProfileID</TrustProfileID>"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"2203"); } public void create057() throws Exception { String TestNumber = "057"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; configuration_.setProperty( "PKCS12file_maxmustermann", (configuration_.getProperty("baseDir") + "/resources/Max_Mustermann (max).p12")); configuration_.setProperty("PKCS12password_maxmustermann", "max"); configuration_.setProperty( "CERT_maxmustermann", (configuration_.getProperty("baseDir") + "resources/Max_Mustermann.cer")); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(configuration_.getProperty("CERT_maxmustermann"))); iaik.x509.X509Certificate cert = new iaik.x509.X509Certificate(bis); X509name = ((Name)(cert.getIssuerDN())).getRFC2253String(); X509number = cert.getSerialNumber(); X509hash = new String(cert.getFingerprintSHA()); X509sub = ((Name)(cert.getSubjectDN())).getRFC2253String(); String m = "This is a message"; System.out.println("*"+m+"*"); byte[] message = m.getBytes(); ASN1Object obj = null; obj = createSignedCMSData(message, SignedDataStream.IMPLICIT,false,"PKCS12file_maxmustermann","PKCS12password_maxmustermann","CERT_maxmustermann"); byte[] sig = DerCoder.encode(obj); writeFileBinary("testimplmax.ber",sig); b64_der_data_max = (new BASE64Encoder()).encode(sig); String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_max); /*req = replaceString(req, " <DataObject>"+ " <MetaInfo>"+ " <MimeType>text/plain</MimeType>"+ " <Description>anyURI</Description>"+ " </MetaInfo>"+ " <Content Reference=\"anyURI\">"+ " <Base64Content>RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=</Base64Content>"+ " </Content>"+ " </DataObject>", "");*/ //req = replaceString(req,"Reference=\"anyURI\"",""); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"2248"); } public void create058() throws Exception { String TestNumber = "058"; String reqFile = fileprefix + TestNumber + ".Req"+filesuffix; String req = replaceString(defaultblock,"<!-- insert data -->",b64_der_data_exp); req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"); req = replaceString(req,"RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=","RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=()"); writeFile(reqFile,req); String resFile = fileprefix + TestNumber + ".ErrRes"+filesuffix; writeFile(resFile,"1100"); } }