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