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.api.SignatureRecord;
23 import org.apache.james.jdkim.tagvalue.SignatureRecordImpl;
24
25 import junit.framework.TestCase;
26
27 public class SignatureRecordTest extends TestCase {
28
29 public void testBasic() {
30 SignatureRecord sign = new SignatureRecordImpl(
31 "v=1; a=rsa-sha256; c=relaxed/relaxed;\r\n"
32 + " d=gmail.com; s=beta;\r\n"
33 + " h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
34 + " bh=9sd6eO/xnGLInYGPFN86r9q27iClGpwfkl4PBc5XEuQ=;\r\n"
35 + " b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
36 sign.validate();
37 }
38
39 public void testWrongOrMissingVersion() {
40 try {
41 SignatureRecord sign = new SignatureRecordImpl(
42 "a=rsa-sha1; c=relaxed/relaxed;\r\n"
43 + " d=gmail.com; s=beta;\r\n"
44 + " h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
45 + " b=Kw/TqnjB4L5ZC7DX1ibiNkuIw630uHZvzuozn/e6yTm3U8ObWEz/rJK5GO8RSrF56JrCA/xo8W2CGmyNmpQYbEpLl5P9/NcJSYUmln/O6GSa4Usyv4FdEU4FVjkyW0ToGFHNkw9Mm0urveA4Lcfk9gClJczXnvGBdiv/bkVBEJk=");
46 sign.validate();
47 fail("expected error on missing v=");
48 } catch (IllegalStateException e) {
49 }
50 try {
51 SignatureRecord sign = new SignatureRecordImpl(
52 "v=2; a=rsa-sha256; c=relaxed/relaxed;\r\n"
53 + " d=gmail.com; s=beta;\r\n"
54 + " h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
55 + " bh=9sd6eO/xnGLInYGPFN86r9q27iClGpwfkl4PBc5XEuQ=;\r\n"
56 + " b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
57 sign.validate();
58 fail("expected error on wrong v=");
59 } catch (IllegalStateException e) {
60 }
61 }
62
63 public void testMissingRequired() {
64 try {
65 SignatureRecord sign = new SignatureRecordImpl(
66 "v=1; a=rsa-sha256; c=relaxed/relaxed;\r\n"
67 + " d=gmail.com; s=beta;\r\n"
68 + " h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
69 + " b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
70 sign.validate();
71 fail("expected error on missing bh=");
72 } catch (IllegalStateException e) {
73 }
74 }
75
76 public void testDomainMismatch() {
77 try {
78 SignatureRecord sign = new SignatureRecordImpl(
79 "v=1; a=rsa-sha256; c=relaxed/relaxed;\r\n"
80 + " d=gmail.com; s=beta; i=@agmail.com;\r\n"
81 + " h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
82 + " bh=9sd6eO/xnGLInYGPFN86r9q27iClGpwfkl4PBc5XEuQ=;\r\n"
83 + " b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
84 sign.validate();
85 fail("expected error on domain mismatch");
86 } catch (IllegalStateException e) {
87 }
88 }
89
90 public void testMissingFrom() {
91 try {
92 SignatureRecord sign = new SignatureRecordImpl(
93 "v=1; a=rsa-sha256; c=relaxed/relaxed;\r\n"
94 + " d=gmail.com; s=beta; i=@subdomain.gmail.com;\r\n"
95 + " h=domainkey-signature:received:received:message-id:date:fram:to:subject:mime-version:content-type;\r\n"
96 + " bh=9sd6eO/xnGLInYGPFN86r9q27iClGpwfkl4PBc5XEuQ=;\r\n"
97 + " b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
98 sign.validate();
99 fail("expected error on missing 'from' header");
100 } catch (IllegalStateException e) {
101 }
102 }
103
104 }