1 /** 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 /* 20 * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 21 */ 22 package javax.xml.crypto.test.dsig; 23 24 import java.io.File; 25 import java.io.FileInputStream; 26 import java.security.KeyStore; 27 import java.security.Security; 28 import javax.xml.crypto.KeySelector; 29 import javax.xml.crypto.URIDereferencer; 30 import javax.xml.crypto.dsig.XMLSignatureException; 31 32 import javax.xml.crypto.test.KeySelectors; 33 34 /** 35 * This is a testcase to validate all "merlin-xmldsig-twenty-three" 36 * testcases from Baltimore 37 * 38 * @author Sean Mullan 39 */ 40 public class Baltimore23Test extends org.junit.Assert { 41 42 private SignatureValidator validator; 43 private File dir; 44 private final URIDereferencer ud; 45 46 static { Security.insertProviderAt(new org.apache.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1)47 Security.insertProviderAt 48 (new org.apache.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1); 49 } 50 Baltimore23Test()51 public Baltimore23Test() { 52 String fs = System.getProperty("file.separator"); 53 String base = System.getProperty("basedir") == null ? "./": System.getProperty("basedir"); 54 55 dir = new File(base + fs + "src/test/resources" + fs 56 + "ie" + fs + "baltimore" + fs + "merlin-examples", 57 "merlin-xmldsig-twenty-three"); 58 validator = new SignatureValidator(dir); 59 ud = new LocalHttpCacheURIDereferencer(); 60 } 61 62 @org.junit.Test test_signature_enveloped_dsa()63 public void test_signature_enveloped_dsa() throws Exception { 64 String file = "signature-enveloped-dsa.xml"; 65 66 boolean coreValidity = validator.validate 67 (file, new KeySelectors.KeyValueKeySelector()); 68 assertTrue("Signature failed core validation", coreValidity); 69 } 70 71 @org.junit.Test test_signature_enveloping_b64_dsa()72 public void test_signature_enveloping_b64_dsa() throws Exception { 73 String file = "signature-enveloping-b64-dsa.xml"; 74 75 boolean coreValidity = validator.validate 76 (file, new KeySelectors.KeyValueKeySelector()); 77 assertTrue("Signature failed core validation", coreValidity); 78 } 79 80 @org.junit.Test test_signature_enveloping_dsa()81 public void test_signature_enveloping_dsa() throws Exception { 82 String file = "signature-enveloping-dsa.xml"; 83 84 boolean coreValidity = validator.validate 85 (file, new KeySelectors.KeyValueKeySelector()); 86 assertTrue("Signature failed core validation", coreValidity); 87 } 88 89 @org.junit.Test test_signature_external_b64_dsa()90 public void test_signature_external_b64_dsa() throws Exception { 91 String file = "signature-external-b64-dsa.xml"; 92 93 boolean coreValidity = validator.validate 94 (file, new KeySelectors.KeyValueKeySelector(), ud); 95 assertTrue("Signature failed core validation", coreValidity); 96 } 97 98 @org.junit.Test test_signature_external_dsa()99 public void test_signature_external_dsa() throws Exception { 100 String file = "signature-external-dsa.xml"; 101 102 boolean coreValidity = validator.validate 103 (file, new KeySelectors.KeyValueKeySelector(), ud); 104 assertTrue("Signature failed core validation", coreValidity); 105 } 106 107 @org.junit.Test test_signature_enveloping_rsa()108 public void test_signature_enveloping_rsa() throws Exception { 109 String file = "signature-enveloping-rsa.xml"; 110 111 boolean coreValidity = validator.validate 112 (file, new KeySelectors.KeyValueKeySelector()); 113 assertTrue("Signature failed core validation", coreValidity); 114 } 115 116 @org.junit.Test test_signature_enveloping_hmac_sha1()117 public void test_signature_enveloping_hmac_sha1() throws Exception { 118 String file = "signature-enveloping-hmac-sha1.xml"; 119 120 KeySelector ks = new KeySelectors.SecretKeySelector 121 ("secret".getBytes("ASCII") ); 122 boolean coreValidity = validator.validate(file, ks); 123 assertTrue("Signature failed core validation", coreValidity); 124 } 125 126 @org.junit.Test test_signature_enveloping_hmac_sha1_40()127 public void test_signature_enveloping_hmac_sha1_40() throws Exception { 128 String file = "signature-enveloping-hmac-sha1-40.xml"; 129 130 KeySelector ks = new KeySelectors.SecretKeySelector 131 ("secret".getBytes("ASCII") ); 132 try { 133 validator.validate(file, ks); 134 fail("Expected HMACOutputLength exception"); 135 } catch (XMLSignatureException xse) { 136 System.out.println(xse.getMessage()); 137 // pass 138 } 139 } 140 141 @org.junit.Test test_signature_keyname()142 public void test_signature_keyname() throws Exception { 143 String file = "signature-keyname.xml"; 144 145 boolean coreValidity = validator.validate 146 (file, new KeySelectors.CollectionKeySelector(dir), ud); 147 assertTrue("Signature failed core validation", coreValidity); 148 } 149 150 @org.junit.Test test_signature_retrievalmethod_rawx509crt()151 public void test_signature_retrievalmethod_rawx509crt() throws Exception { 152 String file = "signature-retrievalmethod-rawx509crt.xml"; 153 154 boolean coreValidity = validator.validate 155 (file, new KeySelectors.CollectionKeySelector(dir), ud); 156 assertTrue("Signature failed core validation", coreValidity); 157 } 158 159 @org.junit.Test test_signature_x509_crt_crl()160 public void test_signature_x509_crt_crl() throws Exception { 161 String file = "signature-x509-crt-crl.xml"; 162 163 boolean coreValidity = validator.validate 164 (file, new KeySelectors.RawX509KeySelector(), ud); 165 assertTrue("Signature failed core validation", coreValidity); 166 } 167 168 @org.junit.Test test_signature_x509_crt()169 public void test_signature_x509_crt() throws Exception { 170 String file = "signature-x509-crt.xml"; 171 172 boolean coreValidity = validator.validate 173 (file, new KeySelectors.RawX509KeySelector(), ud); 174 assertTrue("Signature failed core validation", coreValidity); 175 } 176 177 @org.junit.Test test_signature_x509_is()178 public void test_signature_x509_is() throws Exception { 179 String file = "signature-x509-is.xml"; 180 181 boolean coreValidity = validator.validate 182 (file, new KeySelectors.CollectionKeySelector(dir), ud); 183 assertTrue("Signature failed core validation", coreValidity); 184 } 185 186 @org.junit.Test test_signature_x509_ski()187 public void test_signature_x509_ski() throws Exception { 188 String file = "signature-x509-ski.xml"; 189 190 boolean coreValidity = validator.validate 191 (file, new KeySelectors.CollectionKeySelector(dir), ud); 192 assertTrue("Signature failed core validation", coreValidity); 193 } 194 195 @org.junit.Test test_signature_x509_sn()196 public void test_signature_x509_sn() throws Exception { 197 String file = "signature-x509-sn.xml"; 198 199 boolean coreValidity = validator.validate 200 (file, new KeySelectors.CollectionKeySelector(dir), ud); 201 assertTrue("Signature failed core validation", coreValidity); 202 } 203 204 @org.junit.Test test_signature()205 public void test_signature() throws Exception { 206 String file = "signature.xml"; 207 String fs = System.getProperty("file.separator"); 208 String base = System.getProperty("basedir") == null ? "./": System.getProperty("basedir"); 209 210 String keystore = base + fs + "src/test/resources" + fs + 211 "ie" + fs + "baltimore" + fs + "merlin-examples" + fs + 212 "merlin-xmldsig-twenty-three" + fs + "certs" + fs + "xmldsig.jks"; 213 KeyStore ks = KeyStore.getInstance("JKS"); 214 ks.load(new FileInputStream(keystore), "changeit".toCharArray()); 215 216 boolean cv = validator.validate(file, new X509KeySelector(ks, false), ud); 217 assertTrue("Signature failed core validation", cv); 218 } 219 220 } 221