package test.at.gv.egovernment.moa.id.auth.invoke; import java.io.RandomAccessFile; import org.w3c.dom.Element; import at.gv.egovernment.moa.id.auth.builder.VerifyXMLSignatureRequestBuilder; import at.gv.egovernment.moa.id.auth.data.CreateXMLSignatureResponse; import at.gv.egovernment.moa.id.auth.data.IdentityLink; import at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse; import at.gv.egovernment.moa.id.auth.parser.CreateXMLSignatureResponseParser; import at.gv.egovernment.moa.id.auth.parser.InfoboxReadResponseParser; import at.gv.egovernment.moa.id.auth.parser.VerifyXMLSignatureResponseParser; import at.gv.egovernment.moa.id.auth.invoke.SignatureVerificationInvoker; import at.gv.egovernment.moa.id.auth.validator.VerifyXMLSignatureResponseValidator; import at.gv.egovernment.moa.id.config.ConfigurationProvider; import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider; import at.gv.egovernment.moa.util.DOMUtils; /** * Test case for the signature verification web service. * * This test requires a running SignatureVerification web service. * * @author Patrick Peck * @author Fatemeh Philippi * @version $Id$ */ public class SignatureVerificationTest extends MOASPSSTestCase { private SignatureVerificationInvoker caller; public SignatureVerificationTest(String name) { super(name); } public void setUp() { System.setProperty( ConfigurationProvider.CONFIG_PROPERTY_NAME, "data/test/conf/ConfigurationTest.xml"); caller = new SignatureVerificationInvoker(); } /* public void testVerifyCMSSignature() throws Exception { Element request = parseXml("data/test/xml/VCSQ000.xml").getDocumentElement(); Element result; // call the service result = caller.verifyXMLSignature(request); // check the result assertEquals("VerifyCMSSignatureResponse", result.getTagName()); }*/ public void testVerifyXMLSignature1() throws Exception { //Momentan zeigt die Konfiguration als Endpunkt aus localhost:8081 zum //Protokollieren per TCPMon... der ECHT Endpunkt ist 10.16.46.108:8080 RandomAccessFile s = new RandomAccessFile( "data/test/xmldata/testperson1/InfoboxReadResponse.xml","r"); byte[] b = new byte[(int) s.length()]; s.read(b); String xmlInfoboxReadResponse =new String(b,"UTF8"); InfoboxReadResponseParser irrp = new InfoboxReadResponseParser(xmlInfoboxReadResponse); IdentityLink idl = irrp.parseIdentityLink(); VerifyXMLSignatureRequestBuilder vsrb = new VerifyXMLSignatureRequestBuilder(); AuthConfigurationProvider authConf = AuthConfigurationProvider.getInstance(); Element request = vsrb.build(idl, authConf.getMoaSpIdentityLinkTrustProfileID()); s =new RandomAccessFile("D://PatricksVerifyXMLSignatureRequestWithInfoboxReadResponse.xml","rw"); s.write(DOMUtils.serializeNode(request).getBytes("UTF-8")); s.close(); // Element request = DOMUtils.parseDocument(vsrb.build(xmlInfoboxReadResponse,"TrustProfile1"),false,null,null).getDocumentElement(); // Element request = DOMUtils.parseDocument(xmlInfoboxReadResponse,false,null,null).getDocumentElement(); // call the service Element response = caller.verifyXMLSignature(request); VerifyXMLSignatureResponseParser vParser = new VerifyXMLSignatureResponseParser(response); VerifyXMLSignatureResponse vData = vParser.parseData(); VerifyXMLSignatureResponseValidator vValidate = VerifyXMLSignatureResponseValidator.getInstance(); vValidate.validate(vData, authConf.getIdentityLinkX509SubjectNames(), VerifyXMLSignatureResponseValidator.CHECK_IDENTITY_LINK); vValidate.validateCertificate(vData,idl); // check the result assertXmlEquals(response, request); } public void testVerifyXMLSignature2() throws Exception { // Prüft den 2. Aufruf mit dem CreateXMLSIgnatureResponse als Parameter //Momentan zeigt die Konfiguration als Endpunkt aus localhost:8081 zum //Protokollieren per TCPMon... der ECHT Endpunkt ist 10.16.46.108:8080 RandomAccessFile s = new RandomAccessFile( "data/test/xmldata/standard/CreateXMLSignatureResponse.xml","r"); byte[] b = new byte[(int) s.length()]; s.read(b); String xmlCreateXMLSignatureResponse = new String(b, "UTF8"); CreateXMLSignatureResponseParser cXMLsrp = new CreateXMLSignatureResponseParser(xmlCreateXMLSignatureResponse); // CreateXMLSignatureResponseParser cXMLsrp = new CreateXMLSignatureResponseParser(xmlCreateXMLSignatureResponse); CreateXMLSignatureResponse csr = cXMLsrp.parseResponse(); VerifyXMLSignatureRequestBuilder vsrb = new VerifyXMLSignatureRequestBuilder(); AuthConfigurationProvider authConf = AuthConfigurationProvider.getInstance(); Element request = vsrb.build(csr, authConf.getMoaSpAuthBlockVerifyTransformsInfoIDs(), authConf.getMoaSpIdentityLinkTrustProfileID()); // Element request = DOMUtils.parseDocument(vsrb.build(xmlInfoboxReadResponse,"TrustProfile1"),false,null,null).getDocumentElement(); // Element request = DOMUtils.parseDocument(xmlInfoboxReadResponse,false,null,null).getDocumentElement(); Element result; /*s =new RandomAccessFile("D://PatricksVerifyXMLSignatureRequestWithAuthBlock.xml","rw"); s.write(DOMUtils.serializeNode(request).getBytes("UTF-8")); s.close();*/ // call the service result = caller.verifyXMLSignature(request); // check the result assertEquals("VerifyXMLSignatureResponse", result.getTagName()); } public void testParseCreateXMLSignatureResponse() throws Exception { //Später soll die Datei direkt vom Server geholt werden... RandomAccessFile s = new RandomAccessFile( "data/test/xmldata/standard/CreateXMLSignatureResponse.xml", "r"); byte[] b = new byte[(int) s.length()]; s.read(b); String xmlCreateXMLSignatureResponse = new String(b, "UTF-8"); CreateXMLSignatureResponseParser cXMLsrp = new CreateXMLSignatureResponseParser(xmlCreateXMLSignatureResponse); CreateXMLSignatureResponse csr = cXMLsrp.parseResponse(); } public void testParseVerifyXMLSignatureResponse() throws Exception { //Später soll die Datei direkt vom Server geholt werden... RandomAccessFile s = new RandomAccessFile( "data/test/xmldata/standard/VerifyXMLSignaterResponse.xml", "r"); byte[] b = new byte[(int) s.length()]; s.read(b); String xmlVerifyXMLSignatureResponse = new String(b, "UTF-8"); VerifyXMLSignatureResponseParser vXMLsrp = new VerifyXMLSignatureResponseParser(xmlVerifyXMLSignatureResponse); VerifyXMLSignatureResponse vsr = vXMLsrp.parseData(); } }