浏览代码

Bundle a keystore instead of using Sun APIs.

pull/807/head
Chris Smith 7 年前
父节点
当前提交
489a8c9572
共有 2 个文件被更改,包括 22 次插入13 次删除
  1. 22
    13
      src/test/java/com/dmdirc/tls/CertificateExceptionManagerTest.java
  2. 二进制
      src/test/resources/com/dmdirc/tls/keystore.ks

+ 22
- 13
src/test/java/com/dmdirc/tls/CertificateExceptionManagerTest.java 查看文件

1
 package com.dmdirc.tls;
1
 package com.dmdirc.tls;
2
 
2
 
3
 import java.io.IOException;
3
 import java.io.IOException;
4
+import java.io.InputStream;
4
 import java.nio.file.Files;
5
 import java.nio.file.Files;
5
 import java.nio.file.Path;
6
 import java.nio.file.Path;
6
 import java.security.GeneralSecurityException;
7
 import java.security.GeneralSecurityException;
8
+import java.security.KeyStore;
7
 import java.security.cert.X509Certificate;
9
 import java.security.cert.X509Certificate;
8
 import java.util.Set;
10
 import java.util.Set;
9
 import org.junit.Before;
11
 import org.junit.Before;
10
 import org.junit.Rule;
12
 import org.junit.Rule;
11
 import org.junit.Test;
13
 import org.junit.Test;
12
 import org.junit.rules.TemporaryFolder;
14
 import org.junit.rules.TemporaryFolder;
13
-import sun.security.tools.keytool.CertAndKeyGen;
14
-import sun.security.x509.X500Name;
15
 
15
 
16
 import static org.junit.Assert.assertEquals;
16
 import static org.junit.Assert.assertEquals;
17
 import static org.junit.Assert.assertFalse;
17
 import static org.junit.Assert.assertFalse;
19
 
19
 
20
 /**
20
 /**
21
  * Tests for {@link CertificateExceptionManager}.
21
  * Tests for {@link CertificateExceptionManager}.
22
+ *
23
+ * <p>These test use two certificates stored in a keystore. They were generated using:
24
+ *
25
+ * <pre>
26
+ * keytool -genkey -validity 18250 -keystore "keystore.ks" -storepass "dmdirc" -keypass "dmdirc" -alias "test1" -dname "CN=Test1, O=DMDirc, C=GB"
27
+ * keytool -genkey -validity 18250 -keystore "keystore.ks" -storepass "dmdirc" -keypass "dmdirc" -alias "test2" -dname "CN=Test2, O=DMDirc, C=GB"
28
+ * </pre>
22
  */
29
  */
23
 public class CertificateExceptionManagerTest {
30
 public class CertificateExceptionManagerTest {
24
 
31
 
41
 
48
 
42
     @Test
49
     @Test
43
     public void testAddCert() throws GeneralSecurityException, IOException {
50
     public void testAddCert() throws GeneralSecurityException, IOException {
44
-        X509Certificate cert = generateCertificate();
51
+        final X509Certificate cert = getCertificate(1);
45
         assertTrue(manager.addExceptedCertificate(cert));
52
         assertTrue(manager.addExceptedCertificate(cert));
46
         assertTrue(Files.exists(keyStorePath));
53
         assertTrue(Files.exists(keyStorePath));
47
-        Set<X509Certificate> certs = manager.getExceptedCertificates();
54
+        final Set<X509Certificate> certs = manager.getExceptedCertificates();
48
         assertEquals(1, certs.size());
55
         assertEquals(1, certs.size());
49
         assertTrue(certs.contains(cert));
56
         assertTrue(certs.contains(cert));
50
     }
57
     }
51
 
58
 
52
     @Test
59
     @Test
53
     public void testRemoveUnknownCert() throws GeneralSecurityException, IOException {
60
     public void testRemoveUnknownCert() throws GeneralSecurityException, IOException {
54
-        X509Certificate cert = generateCertificate();
61
+        final X509Certificate cert = getCertificate(1);
55
         assertFalse(manager.removeExceptedCertificate(cert));
62
         assertFalse(manager.removeExceptedCertificate(cert));
56
     }
63
     }
57
 
64
 
58
     @Test
65
     @Test
59
     public void testRemoveCert() throws GeneralSecurityException, IOException {
66
     public void testRemoveCert() throws GeneralSecurityException, IOException {
60
-        X509Certificate cert = generateCertificate();
67
+        final X509Certificate cert = getCertificate(1);
61
         manager.addExceptedCertificate(cert);
68
         manager.addExceptedCertificate(cert);
62
         assertTrue(manager.removeExceptedCertificate(cert));
69
         assertTrue(manager.removeExceptedCertificate(cert));
63
         assertTrue(manager.getExceptedCertificates().isEmpty());
70
         assertTrue(manager.getExceptedCertificates().isEmpty());
65
 
72
 
66
     @Test
73
     @Test
67
     public void testRemoveCertLeavesExisting() throws GeneralSecurityException, IOException {
74
     public void testRemoveCertLeavesExisting() throws GeneralSecurityException, IOException {
68
-        X509Certificate cert1 = generateCertificate();
69
-        X509Certificate cert2 = generateCertificate();
75
+        final X509Certificate cert1 = getCertificate(1);
76
+        final X509Certificate cert2 = getCertificate(2);
70
         manager.addExceptedCertificate(cert1);
77
         manager.addExceptedCertificate(cert1);
71
         manager.addExceptedCertificate(cert2);
78
         manager.addExceptedCertificate(cert2);
72
         assertTrue(manager.removeExceptedCertificate(cert1));
79
         assertTrue(manager.removeExceptedCertificate(cert1));
73
-        Set<X509Certificate> certs = manager.getExceptedCertificates();
80
+        final Set<X509Certificate> certs = manager.getExceptedCertificates();
74
         assertEquals(1, certs.size());
81
         assertEquals(1, certs.size());
75
         assertTrue(certs.contains(cert2));
82
         assertTrue(certs.contains(cert2));
76
     }
83
     }
77
 
84
 
78
-    private X509Certificate generateCertificate() throws GeneralSecurityException, IOException {
79
-        CertAndKeyGen certGen = new CertAndKeyGen("RSA", "SHA256WithRSA", null);
80
-        certGen.generate(2048);
81
-        return certGen.getSelfCertificate(new X500Name("CN=Test,O=DMDirc,C=GB"), 120);
85
+    private X509Certificate getCertificate(final int num) throws GeneralSecurityException, IOException {
86
+        try (InputStream is = getClass().getResourceAsStream("keystore.ks")) {
87
+            final KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
88
+            keyStore.load(is, "dmdirc".toCharArray());
89
+            return (X509Certificate) keyStore.getCertificate("test" + num);
90
+        }
82
     }
91
     }
83
 
92
 
84
 }
93
 }

二进制
src/test/resources/com/dmdirc/tls/keystore.ks 查看文件


正在加载...
取消
保存