--- old/test/jdk/sun/security/ssl/SSLContextImpl/NoOldVersionContext.java 2018-05-11 15:08:13.632076200 -0700 +++ new/test/jdk/sun/security/ssl/SSLContextImpl/NoOldVersionContext.java 2018-05-11 15:08:13.148512500 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,10 +32,20 @@ * NoOldVersionContext */ -import javax.net.*; -import javax.net.ssl.*; -import java.util.Arrays; import java.security.Security; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +import javax.net.SocketFactory; +import javax.net.ssl.KeyManager; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLEngine; +import javax.net.ssl.SSLParameters; +import javax.net.ssl.SSLServerSocket; +import javax.net.ssl.SSLServerSocketFactory; +import javax.net.ssl.SSLSocket; +import javax.net.ssl.TrustManager; public class NoOldVersionContext { static enum ContextVersion { @@ -51,13 +61,15 @@ new String[] {"SSLv3", "TLSv1", "TLSv1.1"}), TLS_CV_06("TLSv1.2", new String[] {"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}), - TLS_CV_07("Default", + TLS_CV_07("TLSv1.3", + new String[] {"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"}), + TLS_CV_08("Default", new String[] {"TLSv1", "TLSv1.1", "TLSv1.2"}); final String contextVersion; final String[] enabledProtocols; final static String[] supportedProtocols = new String[] { - "SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}; + "SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"}; ContextVersion(String contextVersion, String[] enabledProtocols) { this.contextVersion = contextVersion; @@ -72,7 +84,7 @@ success = false; } - if (!Arrays.equals(target, expected)) { + if (!protocolEquals(target, expected)) { System.out.println("\tError: Expected to get protocols " + Arrays.toString(expected)); System.out.println("\tError: The actual protocols " + @@ -83,6 +95,23 @@ return success; } + private static boolean protocolEquals( + String[] actualProtocols, + String[] expectedProtocols) { + if (actualProtocols.length != expectedProtocols.length) { + return false; + } + + Set set = new HashSet<>(Arrays.asList(expectedProtocols)); + for (String actual : actualProtocols) { + if (set.add(actual)) { + return false; + } + } + + return true; + } + private static boolean checkCipherSuites(String[] target) { boolean success = true; if (target.length == 0) {