1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
/*
* Copyright 2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
*/
package javax.xml.crypto.test.dsig;
import java.io.File;
import java.io.FileInputStream;
import java.security.Security;
import javax.xml.crypto.*;
import junit.framework.*;
import javax.xml.crypto.dsig.XMLSignatureFactory;
import javax.xml.crypto.test.KeySelectors;
/**
* This is a testcase to validate all "coreFeatures"
* testcases from IAIK
*
* @author Sean Mullan
*/
public class IaikCoreFeaturesTest extends TestCase {
private SignatureValidator validator;
private String base;
static {
Security.insertProviderAt
(new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
}
public IaikCoreFeaturesTest(String name) {
super(name);
String fs = System.getProperty("file.separator");
base = System.getProperty("basedir") == null ? "./": System.getProperty("basedir");
base = base + fs + "data" + fs +
"at" + fs + "iaik" + fs + "ixsil";
validator = new SignatureValidator(new File
(base, "coreFeatures/signatures"));
}
public void test_anonymousReferenceSignature() throws Exception {
String file = "anonymousReferenceSignature.xml";
boolean coreValidity = validator.validate
(file, new KeySelectors.KeyValueKeySelector(),
new NullURIDereferencer(base));
assertTrue("Signature failed core validation", coreValidity);
}
public void test_manifestSignature() throws Exception {
String file = "manifestSignature.xml";
boolean coreValidity = validator.validate
(file, new KeySelectors.KeyValueKeySelector());
assertTrue("Signature failed core validation", coreValidity);
}
public void test_signatureTypesSignature() throws Exception {
String file = "signatureTypesSignature.xml";
boolean coreValidity = validator.validate
(file, new KeySelectors.KeyValueKeySelector(),
new OfflineDereferencer());
assertTrue("Signature failed core validation", coreValidity);
}
public static void main(String[] args) throws Exception {
IaikCoreFeaturesTest it = new IaikCoreFeaturesTest("");
it.test_anonymousReferenceSignature();
it.test_manifestSignature();
it.test_signatureTypesSignature();
}
private static class NullURIDereferencer implements URIDereferencer {
private OctetStreamData osd;
NullURIDereferencer(String base) throws Exception {
File content = new File
(base, "coreFeatures/samples/anonymousReferenceContent.xml");
osd = new OctetStreamData(new FileInputStream(content));
}
public Data dereference(URIReference uriReference,
XMLCryptoContext context) throws URIReferenceException {
if (uriReference.getURI() != null) {
throw new URIReferenceException("must be a null URI");
}
return osd;
}
}
private static class OfflineDereferencer implements URIDereferencer {
private String w3cRec;
private URIDereferencer defaultDereferencer;
OfflineDereferencer() throws Exception {
String fs = System.getProperty("file.separator");
String base = System.getProperty("basedir") == null ? "./" :
System.getProperty("basedir");
w3cRec = base + fs + "data" + fs + "org" + fs + "w3c" + fs + "www" +
fs + "TR" + fs + "2000";
defaultDereferencer =
XMLSignatureFactory.getInstance().getURIDereferencer();
}
public Data dereference(URIReference uriReference,
XMLCryptoContext context) throws URIReferenceException {
try {
if ("http://www.w3.org/TR/2000/REC-xml-20001006".equals(uriReference.getURI())) {
File content = new File(w3cRec, "REC-xml-20001006");
return new OctetStreamData(new FileInputStream(content));
} else {
return defaultDereferencer.dereference(uriReference, context);
}
} catch (java.io.FileNotFoundException ex) {
throw new URIReferenceException(ex.getMessage(), ex);
}
}
}
}
|