summaryrefslogtreecommitdiffstats
path: root/luni/src/test/java/libcore/javax/net/ssl/DefaultHostnameVerifierTest.java
diff options
context:
space:
mode:
authorAlex Klyubin <klyubin@google.com>2014-09-17 10:54:21 -0700
committerAlex Klyubin <klyubin@google.com>2014-09-17 11:10:52 -0700
commit9be69a95272f93d7daa19053c61fae7c3d8ff30d (patch)
tree99369bbae9146e20a8060f47c2023a6d016c9906 /luni/src/test/java/libcore/javax/net/ssl/DefaultHostnameVerifierTest.java
parent737ea55f0a003a07b90f88338da12b11b7d2859a (diff)
downloadlibcore-9be69a95272f93d7daa19053c61fae7c3d8ff30d.zip
libcore-9be69a95272f93d7daa19053c61fae7c3d8ff30d.tar.gz
libcore-9be69a95272f93d7daa19053c61fae7c3d8ff30d.tar.bz2
Enable hostname verification for absolute hostnames.
This makes the DefaultHostnameVerifier (the platform default HostnameVerifier) match relative hostname patterns from CN and DNS SubjectAltNames fields of TLS/SSL server certificates against absolute hostnames. Absolute hostname patterns will still never match relative hostnames because it is not known to what absolute name a relative name was resolved by DNS. For example, if hostname is "www.android.com." and server certificate is for "www.android.com", hostname verification will now pass. Whereas, if hostname is "www.android.com" and server certificate is for "www.android.com.", hostname verification will still fail. All of this is needed because server certificates do not normally contain absolute hostnames or hostname patterns. At the same time, connections via absolute hostnames should be supported and even preferred in most cases, to avoid DNS search suffixes being added. Bug: 17482685 Change-Id: I3f2006fa1110004b18ce627675334d2a54805c7a
Diffstat (limited to 'luni/src/test/java/libcore/javax/net/ssl/DefaultHostnameVerifierTest.java')
-rw-r--r--luni/src/test/java/libcore/javax/net/ssl/DefaultHostnameVerifierTest.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/luni/src/test/java/libcore/javax/net/ssl/DefaultHostnameVerifierTest.java b/luni/src/test/java/libcore/javax/net/ssl/DefaultHostnameVerifierTest.java
index e1c9fe3..6ad9ac2 100644
--- a/luni/src/test/java/libcore/javax/net/ssl/DefaultHostnameVerifierTest.java
+++ b/luni/src/test/java/libcore/javax/net/ssl/DefaultHostnameVerifierTest.java
@@ -142,6 +142,33 @@ public final class DefaultHostnameVerifierTest extends TestCase {
assertFalse(verifier.verifyHostName("imap.google.com", "a*.google.com"));
assertFalse(verifier.verifyHostName("imap.google.com", "ix*.google.com"));
assertTrue(verifier.verifyHostName("imap.google.com", "iMap.Google.Com"));
+ assertTrue(verifier.verifyHostName("weird", "weird"));
+ assertFalse(verifier.verifyHostName("weird", "weird*"));
+ assertFalse(verifier.verifyHostName("weird", "*weird"));
+ assertFalse(verifier.verifyHostName("weird", "weird."));
+ assertFalse(verifier.verifyHostName("weird", "weird*."));
+ assertFalse(verifier.verifyHostName("weird", "weird.*"));
+ }
+
+ public void testVerifyAbsoluteHostName() {
+ assertTrue(verifier.verifyHostName("a.b.c.d.", "a.b.c.d"));
+ assertTrue(verifier.verifyHostName("a.b.c.d.", "*.b.c.d"));
+ assertFalse(verifier.verifyHostName("a.b.c.d.", "*.*.c.d"));
+ assertTrue(verifier.verifyHostName("imap.google.com.", "imap.google.com"));
+ assertFalse(verifier.verifyHostName("imap2.google.com.", "imap.google.com"));
+ assertTrue(verifier.verifyHostName("imap.google.com.", "*.google.com"));
+ assertTrue(verifier.verifyHostName("imap2.google.com.", "*.google.com"));
+ assertFalse(verifier.verifyHostName("imap.google.com.", "*.googl.com"));
+ assertFalse(verifier.verifyHostName("imap2.google2.com.", "*.google3.com"));
+ assertFalse(verifier.verifyHostName("imap.google.com.", "a*.google.com"));
+ assertFalse(verifier.verifyHostName("imap.google.com.", "ix*.google.com"));
+ assertTrue(verifier.verifyHostName("imap.google.com.", "iMap.Google.Com"));
+ assertTrue(verifier.verifyHostName("weird.", "weird"));
+ assertTrue(verifier.verifyHostName("weird.", "weird*"));
+ assertTrue(verifier.verifyHostName("weird.", "*weird"));
+ assertTrue(verifier.verifyHostName("weird.", "weird."));
+ assertTrue(verifier.verifyHostName("weird.", "weird*."));
+ assertFalse(verifier.verifyHostName("weird.", "weird.*"));
}
public void testSubjectOnlyCert() throws Exception {