| package org.apache.xml.security.test.utils; | |
| import java.io.IOException; | |
| import java.security.PublicKey; | |
| import java.security.cert.X509Certificate; | |
| import javax.crypto.SecretKey; | |
| import javax.xml.parsers.DocumentBuilderFactory; | |
| import javax.xml.parsers.ParserConfigurationException; | |
| import junit.framework.TestCase; | |
| import org.apache.xml.security.Init; | |
| import org.apache.xml.security.c14n.CanonicalizationException; | |
| import org.apache.xml.security.c14n.InvalidCanonicalizerException; | |
| import org.apache.xml.security.keys.KeyInfo; | |
| import org.apache.xml.security.keys.keyresolver.KeyResolver; | |
| import org.apache.xml.security.keys.keyresolver.KeyResolverException; | |
| import org.apache.xml.security.keys.keyresolver.KeyResolverSpi; | |
| import org.apache.xml.security.keys.storage.StorageResolver; | |
| import org.apache.xml.security.signature.XMLSignatureInput; | |
| import org.apache.xml.security.transforms.Transform; | |
| import org.apache.xml.security.transforms.TransformSpi; | |
| import org.apache.xml.security.transforms.TransformationException; | |
| import org.apache.xml.security.utils.resolver.ResourceResolver; | |
| import org.apache.xml.security.utils.resolver.ResourceResolverException; | |
| import org.apache.xml.security.utils.resolver.ResourceResolverSpi; | |
| import org.w3c.dom.Attr; | |
| import org.w3c.dom.Document; | |
| import org.w3c.dom.Element; | |
| import org.xml.sax.SAXException; | |
| public class OldApiTest extends TestCase { | |
| public static class OldTransform extends TransformSpi { | |
| static Transform compare; | |
| protected XMLSignatureInput enginePerformTransform( | |
| XMLSignatureInput input) | |
| throws IOException, | |
| CanonicalizationException, InvalidCanonicalizerException, | |
| TransformationException, ParserConfigurationException, | |
| SAXException { | |
| assertEquals(compare,_transformObject); | |
| return null ; | |
| } | |
| protected String engineGetURI() { | |
| // TODO Auto-generated method stub | |
| return null; | |
| }; | |
| }; | |
| public void testOldTransformSpiApi() throws Exception { | |
| Init.init(); | |
| Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); | |
| Transform.register("old", OldTransform.class.getName()); | |
| Transform a=new Transform(doc,"old",null); | |
| OldTransform.compare=a; | |
| a.performTransform(null); | |
| }; | |
| public static class OldResourceResolverSpi extends ResourceResolverSpi { | |
| Attr uriCompare; | |
| String baseCompare; | |
| public boolean engineCanResolve(Attr uri, String BaseURI) { | |
| if (uri.getValue().indexOf("!!!test=")!=0) { | |
| return false; | |
| } | |
| uriCompare=uri; | |
| baseCompare=BaseURI; | |
| return true; | |
| } | |
| public XMLSignatureInput engineResolve(Attr uri, String BaseURI) throws ResourceResolverException { | |
| assertEquals(uriCompare, uri); | |
| assertEquals(baseCompare,BaseURI); | |
| return null; | |
| } | |
| }; | |
| public void testOldResourceResolverSpi() throws Exception { | |
| Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); | |
| Attr uri=doc.createAttribute("id"); | |
| uri.setNodeValue("!!!test=1"); | |
| ((Element)doc.createElement("test")).setAttributeNode(uri); | |
| Attr uri1=doc.createAttribute("id"); | |
| uri1.setNodeValue("!!!test=2"); | |
| doc.createElement("test1").setAttributeNode(uri1); | |
| ResourceResolver.registerAtStart(OldResourceResolverSpi.class.getName()); | |
| ResourceResolver resolver=ResourceResolver.getInstance(uri, "test"); | |
| ResourceResolver resolver1=ResourceResolver.getInstance(uri1, "test1"); | |
| ResourceResolver resolver2=ResourceResolver.getInstance(uri1, "test2"); | |
| resolver2.resolve(uri1, "test2"); | |
| resolver.resolve(uri, "test"); | |
| resolver1.resolve(uri1, "test1"); | |
| }; | |
| static class PublicKeyMock implements PublicKey { | |
| public String getAlgorithm() { | |
| // TODO Auto-generated method stub | |
| return null; | |
| } | |
| public byte[] getEncoded() { | |
| // TODO Auto-generated method stub | |
| return null; | |
| } | |
| public String getFormat() { | |
| // TODO Auto-generated method stub | |
| return null; | |
| } | |
| }; | |
| static public class OldKeyResolverSpi extends KeyResolverSpi { | |
| static int number=0; | |
| PublicKey pk=null; | |
| public OldKeyResolverSpi() { | |
| number++; | |
| }; | |
| public boolean engineCanResolve(Element element, String BaseURI, | |
| StorageResolver storage) { | |
| if ("!!!testUri".equals(BaseURI)) | |
| return true; | |
| return false; | |
| } | |
| public PublicKey engineResolvePublicKey( | |
| Element element, String BaseURI, StorageResolver storage) | |
| throws KeyResolverException { | |
| if (pk==null) | |
| pk=new PublicKeyMock(); | |
| return pk; | |
| }; | |
| public X509Certificate engineResolveX509Certificate( | |
| Element element, String BaseURI, StorageResolver storage) | |
| throws KeyResolverException{ | |
| return null; | |
| }; | |
| public SecretKey engineResolveSecretKey( | |
| Element element, String BaseURI, StorageResolver storage) | |
| throws KeyResolverException{ | |
| return null; | |
| }; | |
| }; | |
| public void testOldKeyResolverSpi() throws Exception{ | |
| KeyResolver.register(OldKeyResolverSpi.class.getName()); | |
| Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); | |
| Element el=((Element)doc.createElement("test")); | |
| PublicKey pk=KeyResolver.getPublicKey(el, "!!!testUri", null); | |
| assertNotNull(pk); | |
| assertTrue(pk instanceof PublicKeyMock); | |
| assertEquals(2, OldKeyResolverSpi.number); | |
| PublicKey pk1=KeyResolver.getPublicKey(el, "!!!testUri", null); | |
| assertNotSame(pk,pk1); | |
| assertEquals(3, OldKeyResolverSpi.number); | |
| } | |
| static public class OldKeyResolverNoPublicConsSpi extends OldKeyResolverSpi { | |
| protected OldKeyResolverNoPublicConsSpi() { | |
| }; | |
| public OldKeyResolverNoPublicConsSpi(PublicKey pk) { | |
| this.pk=pk; | |
| } | |
| }; | |
| public void testOldKeyResolverSpiInKeyInfo() throws Exception{ | |
| Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); | |
| Element el=(Element)doc.createElementNS("http://www.w3.org/2000/09/xmldsig#","KeyInfo"); | |
| el.appendChild((Element)doc.createElementNS("http://www.w3.org/2000/09/xmldsig#","KeyInfo")); | |
| KeyInfo ki=new KeyInfo(el,"!!!testUri"); | |
| PublicKey pk=new PublicKeyMock(); | |
| ki.registerInternalKeyResolver(new OldKeyResolverNoPublicConsSpi(pk)); | |
| assertNotNull(ki.getPublicKey()); | |
| } | |
| } |