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 = 
	""+
	""+
	"2003-04-04T09:30:47-05:00"+
	""+
	""+
	""+
	"text/plain"+
	"anyURI"+
	""+
	""+
	"RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM="+
	""+
	""+
	"TrustProfile1"+
	"";
	
	public String defaultresponse = 
	""+
	""+
	""+
	""+
	""+
	""+
	""+
	""+
	""+
	""+
	""+
	""+
	""+
	""+
	"Musterbehörde"+
		//"Musterbehörde"+
		""+
		"");
    	
    	writeFile(resFile,res);
    	
		
	}
	
	public void create051() throws Exception
	{
		String TestNumber = "051";
	    String reqFile = fileprefix + TestNumber + ".Req"+filesuffix;
	    
	    String req = replaceString(defaultblock,"",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,"",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,"",b64_der_data_exp);
	    req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt");
	    req = replaceString(req,
	    "2003-04-04T09:30:47-05:00",
	    ""+getDate(1*34*24)+"");
		
		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,
	    "",
	    "this is no Base64 Data");
	    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,"",b64_der_data_exp);
	    req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt");
	    req = replaceString(req,
	    ""+
		""+
		"text/plain"+
		""+configuration_.getProperty("webbaseDir") + "resources/testDaten.txt"+
		""+
		""+
		"RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM="+
		""+
		"",
	    "");
		
		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,"",b64_der_data_exp);
	    req = replaceString(req,"","");
	    req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt");
	    req = replaceString(req,
	    "RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM=",
	    "");
		writeFile(reqFile,req);
	
		String resFile = fileprefix + TestNumber + ".Res"+filesuffix;
		
		String res = replaceString(defaultresponse,"",this.X509name);
    	res = replaceString(res,"",this.X509number.toString());
    	res = replaceString(res,"",this.X509sub);
    	res = replaceString(res,"","0");
    	res = replaceString(res,"","0");
    	res = replaceString(res,"",cert_file_data);
    	res = replaceString(res,"","");
    	
    	writeFile(resFile,res);
		
	}
	
	public void create056() throws Exception
	{
		String TestNumber = "056";
	    String reqFile = fileprefix + TestNumber + ".Req"+filesuffix;
	    
	    String req = replaceString(defaultblock,"",b64_der_data_exp);
	    req = replaceStringAll(req,"anyURI",configuration_.getProperty("webbaseDir") + "resources/testDaten.txt");
	    req = replaceString(req,
	    "TrustProfile1",
	    "notvalidTrustProfileID");
		
		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,"",b64_der_data_max);
	    
	    /*req = replaceString(req,
	    "	"+
		"		"+
		"			text/plain"+
		"			anyURI"+
		"		"+
		"		"+
		"			RGllcyBzaW5kIFRlc3RkYXRlbg0KMi4gWmVpbGUNCjMuIFplaWxlDQphdXM="+
		"		"+
		"	",
		"");*/
		
		//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,"",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");
		
	}
	
	
	
	
  
}