Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

CertificateHostCheckerTest.java 4.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package com.dmdirc.tls;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.security.GeneralSecurityException;
  5. import java.security.KeyStore;
  6. import java.security.cert.X509Certificate;
  7. import org.junit.Before;
  8. import org.junit.Test;
  9. import static org.junit.Assert.assertFalse;
  10. import static org.junit.Assert.assertTrue;
  11. /**
  12. * Tests for {@link CertificateHostChecker}.
  13. *
  14. * <p>These tests use several certificates stored in a keystore. They were generated using:
  15. *
  16. * <pre>
  17. * keytool -genkey -validity 18250 -keystore "keystore.ks" -storepass "dmdirc" -keypass "dmdirc" -alias "name_cn_only" -dname "CN=test.example.com, O=DMDirc, C=GB"
  18. * keytool -genkey -validity 18250 -keystore "keystore.ks" -storepass "dmdirc" -keypass "dmdirc" -alias "name_cn_wildcard" -dname "CN=*.example.com, O=DMDirc, C=GB"
  19. * keytool -genkey -validity 18250 -keystore "keystore.ks" -storepass "dmdirc" -keypass "dmdirc" -alias "name_san_dns" -dname "CN=other.example.com, O=DMDirc, C=GB" -ext SAN=dns:test.example.com
  20. * keytool -genkey -validity 18250 -keystore "keystore.ks" -storepass "dmdirc" -keypass "dmdirc" -alias "name_san_dns_multiple" -dname "CN=other.example.com, O=DMDirc, C=GB" -ext SAN=dns:foo.example.com,dns:test.example.com
  21. * </pre>
  22. */
  23. public class CertificateHostCheckerTest {
  24. private CertificateHostChecker checker;
  25. @Before
  26. public void setup() {
  27. checker = new CertificateHostChecker();
  28. }
  29. @Test
  30. public void testBasicCn() throws GeneralSecurityException, IOException {
  31. final X509Certificate certificate = getCertificate("name_cn_only");
  32. assertTrue(checker.isValidFor(certificate, "test.example.com"));
  33. assertTrue(checker.isValidFor(certificate, "TEsT.example.com"));
  34. assertFalse(checker.isValidFor(certificate, "foo.example.com"));
  35. assertFalse(checker.isValidFor(certificate, "test.example.org"));
  36. assertFalse(checker.isValidFor(certificate, "foo.test.example.com"));
  37. }
  38. @Test
  39. public void testWildcardCn() throws GeneralSecurityException, IOException {
  40. final X509Certificate certificate = getCertificate("name_cn_wildcard");
  41. assertTrue(checker.isValidFor(certificate, "test.example.com"));
  42. assertTrue(checker.isValidFor(certificate, "TEsT.example.com"));
  43. assertTrue(checker.isValidFor(certificate, "foo.example.com"));
  44. assertFalse(checker.isValidFor(certificate, "test.example.org"));
  45. assertFalse(checker.isValidFor(certificate, "foo.test.example.com"));
  46. }
  47. @Test
  48. public void testSanDns() throws GeneralSecurityException, IOException {
  49. final X509Certificate certificate = getCertificate("name_san_dns");
  50. assertTrue(checker.isValidFor(certificate, "test.example.com"));
  51. assertTrue(checker.isValidFor(certificate, "TEsT.example.com"));
  52. assertTrue(checker.isValidFor(certificate, "other.example.com"));
  53. assertFalse(checker.isValidFor(certificate, "foo.example.com"));
  54. assertFalse(checker.isValidFor(certificate, "test.example.org"));
  55. assertFalse(checker.isValidFor(certificate, "foo.test.example.com"));
  56. }
  57. @Test
  58. public void testSanDnsMultiple() throws GeneralSecurityException, IOException {
  59. final X509Certificate certificate = getCertificate("name_san_dns_multiple");
  60. assertTrue(checker.isValidFor(certificate, "test.example.com"));
  61. assertTrue(checker.isValidFor(certificate, "TEsT.example.com"));
  62. assertTrue(checker.isValidFor(certificate, "other.example.com"));
  63. assertTrue(checker.isValidFor(certificate, "foo.example.com"));
  64. assertFalse(checker.isValidFor(certificate, "test.foo.example.org"));
  65. assertFalse(checker.isValidFor(certificate, "test.example.org"));
  66. assertFalse(checker.isValidFor(certificate, "foo.test.example.com"));
  67. }
  68. private X509Certificate getCertificate(final String name) throws GeneralSecurityException, IOException {
  69. try (InputStream is = getClass().getResourceAsStream("keystore.ks")) {
  70. final KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
  71. keyStore.load(is, "dmdirc".toCharArray());
  72. return (X509Certificate) keyStore.getCertificate(name);
  73. }
  74. }
  75. }