1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.james.jdkim;
21
22 import org.apache.james.jdkim.exceptions.PermFailException;
23 import org.apache.james.mime4j.parser.MimeTokenStream;
24
25 import java.io.File;
26 import java.io.FileInputStream;
27 import java.io.IOException;
28 import java.io.InputStream;
29
30 import junit.framework.Test;
31 import junit.framework.TestCase;
32 import junit.framework.TestSuite;
33
34
35
36
37
38 public class FileBasedTest extends TestCase {
39
40 private File file;
41
42 public FileBasedTest(String testName) {
43 this(testName, FileBasedTestSuite.getFile(testName));
44 }
45
46 public FileBasedTest(String name, File testFile) {
47 super(name);
48 this.file = testFile;
49 }
50
51 protected void runTest() throws Throwable {
52 MimeTokenStream stream = new MimeTokenStream();
53 stream.setRecursionMode(MimeTokenStream.M_FLAT);
54
55 InputStream is = new FileInputStream(file);
56
57
58
59 MockPublicKeyRecordRetriever pkr = new MockPublicKeyRecordRetriever();
60 pkr
61 .addRecord(
62 "domk",
63 "brainlounge.de",
64 "t=y; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMxdtsTy8K7yEHt+7DB4XH70Rd6v7rp2qai7gM1meDzlrwDlMzUi0mQC+dMY+AzmCE1jLNXAr3JL6kT8vD7KQai8avwGQzmlU3d0Z7etqTj1ttJQZxUTPM18bM3wVqc6h3Dppqx7kY91Td50r9MXBbu+DkhL1+RCfcPQxEvEf74QIDAQAB");
65 pkr
66 .addRecord(
67 "dkim",
68 "paypal.it",
69 "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD3j+gKW1qBM+psRHXAdR7tI9QcKW0Ii723AzyTO4nrVmuJoKWHLoEEQw/Nc4XF7iyhfadorjqZZ9f+qDXQiKPyLJyVXs0qLrnJQ9BWlQP0xIiz7CTcoHwEhJ1XwgUI/2V6bNghMrnK2yiR/Vqt5lV5kx4+n1656EefGuOTuNmIWwIDAQAB");
70 pkr
71 .addRecord(
72 "default",
73 "gfkresearch.com",
74 "t=y; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAM26TUEN/IatWRhSiguj8RyDmeFRQJG8gaNjdaOOJ3AZuGeCG1W9NwlkgDv7UxUUx3AIkFbU/wsDFMe/RGItcK5vKEkUP0roJ1fCTtYsfTHhmnhXyJsmj0eDvbwDg6BzfwIDAQAB");
75 pkr
76 .addRecord(
77 "2007-00",
78 "kitterman.com",
79 "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp9+s7hHTlMje842UBfd8nBYvX0I1CJzltQJ9bLGAKHbyCBTKei/dYuuDICKArbcVZ+05UbJzxU6cstPOaEoPM+FMD/lUiGpJYLYUuzRP7Pd82YHKoAZbYflGYTck2e7x8vB7l8WeEgRJ0cJdHm871HbQmv67LZiN+9donmjl93wIDAQAB;");
80 pkr
81 .addRecord(
82 "beta",
83 "gmail.com",
84 "t=y; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC69TURXN3oNfz+G/m3g5rt4P6nsKmVgU1D6cw2X6BnxKJNlQKm10f8tMx6P6bN7juTR1BeD8ubaGqtzm2rWK4LiMJqhoQcwQziGbK1zp/MkdXZEWMCflLY6oUITrivK7JNOLXtZbdxJG2y/RAHGswKKyVhSP9niRsZF/IBr5p8uQIDAQAB");
85 pkr
86 .addRecord(
87 "gamma",
88 "gmail.com",
89 "k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
90 pkr
91 .addRecord(
92 "beta",
93 "google.com",
94 "k=rsa; t=y; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMs93oc95ObA7OEQEbqjIy6YvRj1u3yVGTzQ3wkwRQTWx1fhvNQenPNFklaL+Tw9XFYUc3f8eY0hs3WUNQ+t+I0CAwEAAQ==");
95 pkr
96 .addRecord(
97 "beta",
98 "googlegroups.com",
99 "t=y; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDs66DgKyXSlBvNCbi158TgsBzqh/n7GqCa2QwIORpNbndjlK8qaR9mb8gH9KG1S3ahZybrZT1N268dgF2VDWV14h1fpPMIj6KKoX6uzGomzIVdeGPmjZ7o3ZUaxHUWvwIEGlNv400xzBToSU44sXqQIwH5l08anWYw3sq9xBrI5wIDAQAB");
100 pkr
101 .addRecord(
102 "gamma",
103 "googlemail.com",
104 "k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
105 pkr
106 .addRecord(
107 "s768",
108 "t.contactlab.it",
109 "k=rsa; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAMUUS6qlVpzbGQ3SCsGwpuVlC6gtw+BXMkFhm+jd57GXPtwpbOgr+UaHlbq6OnFAgrHxVx55RrSsTxixw0t0ePGkdBHjE7fURGphf+Mr1gzhvvLO6j1f1/60zvQPyay5UQIDAQAB");
110 pkr
111 .addRecord(
112 "s768",
113 "contactlab.it",
114 "k=rsa; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAMUUS6qlVpzbGQ3SCsGwpuVlC6gtw+BXMkFhm+jd57GXPtwpbOgr+UaHlbq6OnFAgrHxVx55RrSsTxixw0t0ePGkdBHjE7fURGphf+Mr1gzhvvLO6j1f1/60zvQPyay5UQIDAQAB");
115 pkr
116 .addRecord(
117 "emailroi",
118 "mediapost.com",
119 "g=; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC61RrUNTIcNbf/+f5Co2V37GMvPQdbUVyjgvLXrUKAXeJDwYVumAtE9BovuDZNYxcgG2oy7mkcZX/3rBF2SJX9Cp5yw0axuMpzkuzPQq26h+2+MLuvtJtfDIaHgNeEJOjMeq7s9RFQHRr9g26lkZQTRAob8YevaA9KHiNNyIaZuQIDAQAB;");
120 pkr
121 .addRecord(
122 "dkim_s1024",
123 "aweber.com",
124 "v=DKIM1; k=rsa; h=sha1; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRAeDcyfWZQQ9sv+qRMQVTda/9yyYMo9qdI+h3i4U68+rrEruEoxLaa0JJw6OwFXzQ9x9raHZjroHsySzzQbIiZLj9o4IoCqpt5v0xd45+ABhQM6DyzHZDgIFcMtYIzEjaKLzkVpNeS9qr8Cra7CLtSqCbdAjGyUgVLveHrxNP9wIDAQAB");
125 pkr
126 .addRecord(
127 "itunes",
128 "new-music.itunes.com",
129 "v=DKIM1; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMTdhQ9CBNvwYGPkggikcMqT90O4JAzPfxtPaeJ1CgfTlXk0GL3OTz1nfeN3w2ybTpIKYRLrW23Qppaunpb/3dMCAwEAAQ==;");
130 pkr
131 .addRecord(
132 "lima",
133 "yahoogroups.com",
134 "k=rsa; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAL10WHRWMSb9Tnl+k4Kzpc18rDCTpDT1pbK0xwkdZIZkaP8NB75qa/S57xccZlIwbI22Ooy/IY+8WxQtvE2z4WLLNOf9hkMeicUH48TGkEoCAcaSjJz/b3NMrOy9l1U7gQIDAP//");
135 pkr
136 .addRecord(
137 "s1024",
138 "yahoo.co.in",
139 "k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2FAZVGE3kL23bzeoULYv4PeleB3gfmJiDJOKU3Ns5L4KJAUUHjFwDebt0NP+sBK0VKeTATL2Yr/S3bT/xhy+1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj/+XcwIDAQAB; n=A 1024 bit key;");
140 pkr
141 .addRecord(
142 "k1",
143 "adidasnewsletter.com",
144 "t=y; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3VqSTEgEkHtfDiMCzoYtY1wjcArcmb+efQJfzX4zJA60IEA/NmOaHP8Gu02vscLbJWT/mwGlZwr2Q53g9VMQOyoODD5ju1EwJwlioVQ1W7xSjogMTz8yzmWhcMUzXQOu/iD+7sdJP0+k7pCumPMbxEeN33At7HxoYVCSkNdUB9QIDAQAB");
145 pkr
146 .addRecord(
147 "200505",
148 "yahoo-email.com",
149 "t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaMFcW5fNoye1Xo7BT/lKCHThjn1QaVdcxoAy7Y1m2tXnR3X+qUxFRaoyReTVlxfO8vaIPSbJ2Pm6+sZkC0lH/6Ok+i0RDhtd7bq9oLFKclfMGQlphBB185c1zDKNTs7GyAyjSM7pEzx5Dai+YTE9/+GYhdbEWmGBS9TsXnTCKPQIDAQAB");
150 pkr
151 .addRecord(
152 "v1",
153 "alerts.hp.com",
154 "k=rsa; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAPSCrSVhxHa6F3EpDjnw6xdpfTv8sNz5Plbl3b3Zqq9WVVg2j5+748EkwtvzQlA6TQuZIOrpSHJkP0nEyCR5GatNasOKPWFO47VSLFO9AJbsc34eGUUTF49bBIACiE4b9wIDAQAB");
155 pkr
156 .addRecord(
157 "v1",
158 "rodale.delivery.net",
159 "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWWvSsm60Wx178Y7pET3m/UZaof+qtRxZa8RXfyTIiGYMXJFwHgd3VrTLF6xmoCyRC1kfv3k7nPujkGFydBCoRK/vCN/1e4yHAsSwh/ElTO5dqylvP77PJyiaME582m4wXf095NBXJZlHUlXb7SWDdmCeU5uXfcR0EJU0eRewflQIDAQAB");
160 pkr
161 .addRecord(
162 "domk",
163 "brainlounge.de",
164 "t=y; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMxdtsTy8K7yEHt+7DB4XH70Rd6v7rp2qai7gM1meDzlrwDlMzUi0mQC+dMY+AzmCE1jLNXAr3JL6kT8vD7KQai8avwGQzmlU3d0Z7etqTj1ttJQZxUTPM18bM3wVqc6h3Dppqx7kY91Td50r9MXBbu+DkhL1+RCfcPQxEvEf74QIDAQAB");
165 pkr
166 .addRecord(
167 "spop",
168 "newsletters.play.com",
169 "g=; k=rsa; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOaOtP9KfyxvWET0yXoL2ugcas2SjoBZ+40oZ6/twAEtW224fcuvOFiNS+XpPq5LNW96NYAuxJPBlwLoYlHRUQkCAwEAAQ==");
170 pkr
171 .addRecord(
172 "ironport-dkim",
173 "ironport.com",
174 "p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJqzyi+tkPHw4hrcTSJBXTh3m2koCKP0+J6/r+yVVg7VoRKPz/tguE+M6fF0oqLk5Fci+tE8HFS3HLkl0au17CcCAwEAAQ==;");
175 pkr
176 .addRecord(
177 "smtp-out",
178 "abv.bg",
179 "g=*; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPShtI1XjhVGpVrKyBuFP5K0jqFqy5gC8GujqF9lTCN/Epg/kObBOORSVAZ0DRawBHyRWDcscPwK8MhzQb2ZjRKGGK1L6OqaDQL5y9o0f2dqtuwMzGqJyaIL4Wrs3v0YbqD1w4G6pq/5NxfPpKyKqAbiCTGrutCo/dQaRF/YjPnQIDAQAB");
180 pkr
181 .addRecord(
182 "rte02",
183 "amazon.co.uk",
184 "p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ8ZPV/qBm64HtL09YSynw1kPGlSPb0ZGiqcKuXfMh36SZhzj0ejzl4gktXsaA7P1G59gsxtl47q58aFkDV/sfMCAwEAAQ==;");
185 pkr
186 .addRecord(
187 "bnpparibas.com",
188 "bnpparibas.com",
189 "t=y; k=rsa; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhANNNDEMXsk1tiHUpJyNQjjRvO2FtxvD0+JcRiugSUpHysjlKpU8mghN7U12veeN8msqyIen4XExVIIQiJ8xNM3RSaqijRdfvP/8BKHB8jvMyeK6WXJa/epUXvEbc1LDbqQIDAQAB;");
190 pkr
191 .addRecord(
192 "dkim",
193 "paypal.it",
194 "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD3j+gKW1qBM+psRHXAdR7tI9QcKW0Ii723AzyTO4nrVmuJoKWHLoEEQw/Nc4XF7iyhfadorjqZZ9f+qDXQiKPyLJyVXs0qLrnJQ9BWlQP0xIiz7CTcoHwEhJ1XwgUI/2V6bNghMrnK2yiR/Vqt5lV5kx4+n1656EefGuOTuNmIWwIDAQAB");
195 pkr
196 .addRecord(
197 "emarsys2007",
198 "reply.ebay.it",
199 "t=y; k=rsa; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAN0+C5B9PA1ZtdxRvF5hmETzHwQ2NvEmpHILm4afsY16Gw2JVEmwGuXUmyAmbAdQjERKbll1mFQ+9oPcmpr4uwcPHRfE6b2s8V4YK7vofxKJjZ+3PK6jtP4FMHXso/C1+wIDAQAB;");
200 pkr
201 .addRecord(
202 "q1-2009b",
203 "facebookmail.com",
204 "k=rsa; t=s; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKrBYvYESXSgiYzKNufh9WG8cktn2yrmdqGs9uz8VL6Mz44GuX8xJAQjpmPObe6p2vfTMWeztKEudwY6ei7UcZMCAwEAAQ==");
205 pkr
206 .addRecord(
207 "spop",
208 "em.fileplanet.com",
209 "g=; k=rsa; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALsyVo5aJtEzBm5p3+7N/7d0HfczMgJnsqapraAgMe+K2ng9gWsXvAugwh1/OlhzkA69ZCFck47qSN/wGFDwEFUCAwEAAQ==");
210 pkr
211 .addRecord(
212 "default",
213 "bouncemanager.it",
214 "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUekin7hdVzGRw3k0iKRyg0MSj1PeC94A7wzOT0L9cQW0fIEeIM07bmAwbc4MgXnScPGiZnhPDVNxO40YUNbR9JOc+EoESSErWUCHeNYm7dyPG1aVEvfUT+OKprEwFldAdSv9c/C92otFdlWd8lSTuYiE1qNHhQim+7kzdV7SEUQIDAQAB");
215 pkr
216 .addRecord(
217 "default",
218 "gfkresearch.com",
219 "t=y; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAM26TUEN/IatWRhSiguj8RyDmeFRQJG8gaNjdaOOJ3AZuGeCG1W9NwlkgDv7UxUUx3AIkFbU/wsDFMe/RGItcK5vKEkUP0roJ1fCTtYsfTHhmnhXyJsmj0eDvbwDg6BzfwIDAQAB");
220 pkr
221 .addRecord(
222 "key1",
223 "listrak.com",
224 "k=rsa; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAPM8yO1kwQBzUUq6PP0epEshX1Vm7ThUrCddHgCn3b0llq8NRvGw5eOQBKySYngTkYyd5M0fImghDxxDsAnC9DsCAwEAAQ==");
225 pkr
226 .addRecord(
227 "mail",
228 "emailsadvertiser.com",
229 "k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrf8/zzjRv85obYOx6GQjjNba/ m9uNLWKA53vHJNm/y69jM8+3rJr5eAAEJWpt7czNVkrWzwztfYRvai5Bs2Yvv5hS WbKl6Zr93s7I1HBn7MjCFZFW/MWeqlIydj+D8Zyy6ASqb9dYjD8qcLnncUse72du 6fEdEo/CR++P9x6sxwIDAQAB");
230 pkr
231 .addRecord(
232 "proddkim",
233 "linkedin.com",
234 "v=DKIM1; t=y:s; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAM+u1MLWZz+wOnU/C53PqLT4ITdkq+TC1xkWcoRMXq2FVH1kvXRxtqfbL4k5vYh7JVQ6nPrS+ldEpIbJzVaxhP5Kggi4SNfdf8GdbpGXcJj6SHKRFb8Mryp0ilk2XecLcQIDAQAB;");
235 pkr
236 .addRecord(
237 "s1024",
238 "yahoo.com",
239 "k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrEee0Ri4Juz+QfiWYui/E9UGSXau/2P8LjnTD8V4Unn+2FAZVGE3kL23bzeoULYv4PeleB3gfmJiDJOKU3Ns5L4KJAUUHjFwDebt0NP+sBK0VKeTATL2Yr/S3bT/xhy+1xtj4RkdV7fVxTn56Lb4udUnwuxK4V5b5PdOKj/+XcwIDAQAB; n=A 1024 bit key;");
240 pkr
241 .addRecord(
242 "pmta",
243 "myspace.com",
244 "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChRebhcm4h8BkIYHRxg1GlKLsDkwdrqkFJ8f88xHQ5Gf3NH4I4e06M3XQ+B4tWWK/rX0srwXFgrJPzKZK+x7gN89nmqyM+NNaM+Wm2C0GjTpx6639zK3bAAGYCm0L9lGD7PgDxpWok+YogH0Ml4acEwDw/cnhErAWAnX8doPliawIDAQAB");
245
246 try {
247 new DKIMVerifier(pkr).verify(is);
248 if (getName().startsWith("FAIL_"))
249 fail("Expected failure");
250 } catch (PermFailException e) {
251 e.printStackTrace();
252 if (!getName().startsWith("FAIL_"))
253 fail(e.getMessage());
254 }
255 }
256
257 public static Test suite() throws IOException {
258 return new FileBasedTestSuite();
259 }
260
261 static class FileBasedTestSuite extends TestSuite {
262
263 private static final File TESTS_FOLDER = new File(
264 "main\\src\\test\\resources\\org\\apache\\james\\jdkim\\corpus");
265
266 public FileBasedTestSuite() throws IOException {
267 super();
268 File dir = TESTS_FOLDER;
269 File[] files = dir.listFiles();
270
271 if (files != null)
272 for (int i = 0; i < files.length; i++) {
273 File f = files[i];
274 if (f.getName().toLowerCase().endsWith(".eml")) {
275 addTest(new FileBasedTest(f.getName().substring(0,
276 f.getName().length() - 4), f));
277 }
278 }
279 }
280
281 public static File getFile(String name) {
282 return new File(TESTS_FOLDER.getAbsolutePath() + File.separator
283 + name + ".eml");
284 }
285
286 }
287 }