--- a/jdk/test/sun/security/krb5/ConfPlusProp.java Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*
- * Copyright (c) 2009, 2012, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * @test
- * @bug 6857795
- * @bug 6858589
- * @bug 6972005
- * @compile -XDignore.symbol.file ConfPlusProp.java
- * @run main/othervm ConfPlusProp
- * @summary krb5.conf ignored if system properties on realm and kdc are provided
- */
-
-import sun.security.krb5.Config;
-
-public class ConfPlusProp {
- Config config;
- public static void main(String[] args) throws Exception {
- new ConfPlusProp().run();
- }
-
- void refresh() throws Exception {
- Config.refresh();
- config = Config.getInstance();
- }
-
- void checkDefaultRealm(String r) throws Exception {
- try {
- if (!config.getDefaultRealm().equals(r)) {
- throw new AssertionError("Default realm error");
- }
- } catch (Exception e) {
- if (r != null) throw e;
- }
- }
-
- void check(String r, String k) throws Exception {
- try {
- if (!config.getKDCList(r).equals(k)) {
- throw new AssertionError(r + " kdc not " + k);
- }
- } catch (Exception e) {
- if (k != null) throw e;
- }
- }
-
- void run() throws Exception {
-
- // No prop, only conf
-
- // Point to a file with existing default_realm
- System.setProperty("java.security.krb5.conf",
- System.getProperty("test.src", ".") +"/confplusprop.conf");
- refresh();
-
- checkDefaultRealm("R1");
- check("R1", "k1");
- check("R2", "old");
- check("R3", null);
- if (!config.get("libdefaults", "forwardable").equals("well")) {
- throw new Exception("Extra config error");
- }
-
- // Point to a file with no libdefaults
- System.setProperty("java.security.krb5.conf",
- System.getProperty("test.src", ".") +"/confplusprop2.conf");
- refresh();
-
- checkDefaultRealm(null);
- check("R1", "k12");
- check("R2", "old");
- check("R3", null);
-
- int version = System.getProperty("java.version").charAt(2) - '0';
- System.out.println("JDK version is " + version);
-
- // Zero-config is supported since 1.7
- if (version >= 7) {
- // Point to a non-existing file
- System.setProperty("java.security.krb5.conf", "i-am-not-a file");
- refresh();
-
- // Default realm might come from DNS
- //checkDefaultRealm(null);
- check("R1", null);
- check("R2", null);
- check("R3", null);
- if (config.get("libdefaults", "forwardable") != null) {
- throw new Exception("Extra config error");
- }
- }
-
- // Add prop
- System.setProperty("java.security.krb5.realm", "R2");
- System.setProperty("java.security.krb5.kdc", "k2");
-
- // Point to a file with existing default_realm
- System.setProperty("java.security.krb5.conf",
- System.getProperty("test.src", ".") +"/confplusprop.conf");
- refresh();
-
- checkDefaultRealm("R2");
- check("R1", "k1");
- check("R2", "k2");
- check("R3", "k2");
- if (!config.get("libdefaults", "forwardable").equals("well")) {
- throw new Exception("Extra config error");
- }
-
- // Point to a file with no libdefaults
- System.setProperty("java.security.krb5.conf",
- System.getProperty("test.src", ".") +"/confplusprop2.conf");
- refresh();
-
- checkDefaultRealm("R2");
- check("R1", "k12");
- check("R2", "k2");
- check("R3", "k2");
-
- // Point to a non-existing file
- System.setProperty("java.security.krb5.conf", "i-am-not-a file");
- refresh();
-
- checkDefaultRealm("R2");
- check("R1", "k2");
- check("R2", "k2");
- check("R3", "k2");
- if (config.get("libdefaults", "forwardable") != null) {
- throw new Exception("Extra config error");
- }
- }
-}
--- a/jdk/test/sun/security/krb5/ConfigWithQuotations.java Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2009, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * @test
- * @bug 6714845
- * @run main/othervm ConfigWithQuotations
- * @summary Quotes in Kerberos configuration file are included in the values
- */
-
-import sun.security.krb5.Config;
-
-public class ConfigWithQuotations {
- public static void main(String[] args) throws Exception {
- // This config file is generated using Kerberos.app on a Mac
- System.setProperty("java.security.krb5.conf",
- System.getProperty("test.src", ".") +"/edu.mit.Kerberos");
- Config config = Config.getInstance();
-
- System.out.println(config);
-
- if (!config.getDefaultRealm().equals("MAC.LOCAL")) {
- throw new Exception("Realm error");
- }
- if (!config.getKDCList("MAC.LOCAL").equals("kdc.mac.local:88")) {
- throw new Exception("KDC error");
- }
- }
-}
--- a/jdk/test/sun/security/krb5/DnsFallback.java Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2008, 2012, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * @test
- * @bug 6673164
- * @bug 6552334
- * @run main/othervm DnsFallback
- * @summary fix dns_fallback parse error, and use dns by default
- */
-
-import java.io.*;
-import java.lang.reflect.Method;
-import sun.security.krb5.Config;
-
-public class DnsFallback {
-
- static Method useDNS_Realm;
-
- public static void main(String[] args) throws Exception {
-
- useDNS_Realm = Config.class.getDeclaredMethod("useDNS_Realm");
- useDNS_Realm.setAccessible(true);
-
-
- // for 6673164
- check("true", "true", true);
- check("false", "true", false);
- check("true", "false", true);
- check("false", "false", false);
- check("true", null, true);
- check("false", null, false);
- check(null, "true", true);
- check(null, "false", false);
-
- // for 6552334
- check(null, null, true);
- }
-
- static void check(String realm, String fallback, boolean output)
- throws Exception {
-
- try (PrintStream ps =
- new PrintStream(new FileOutputStream("dnsfallback.conf"))) {
- ps.println("[libdefaults]\n");
- if (realm != null) {
- ps.println("dns_lookup_realm=" + realm);
- }
- if (fallback != null) {
- ps.println("dns_fallback=" + fallback);
- }
- }
-
- System.setProperty("java.security.krb5.conf", "dnsfallback.conf");
- Config.refresh();
- System.out.println("Testing " + realm + ", " + fallback + ", " + output);
-
- if (!useDNS_Realm.invoke(Config.getInstance()).equals(output)) {
- throw new Exception("Fail");
- }
- }
-}
-
--- a/jdk/test/sun/security/krb5/ParseCAPaths.java Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/*
- * Copyright (c) 2009, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * @test
- * @bug 6789935 8012615
- * @run main/othervm ParseCAPaths
- * @summary cross-realm capath search error
- */
-
-import java.util.Arrays;
-import sun.security.krb5.Realm;
-
-public class ParseCAPaths {
- static Exception failed = null;
- public static void main(String[] args) throws Exception {
- System.setProperty("java.security.krb5.conf",
- System.getProperty("test.src", ".") +"/krb5-capaths.conf");
-
- // MIT
- check("ANL.GOV", "TEST.ANL.GOV", "ANL.GOV");
- check("ANL.GOV", "ES.NET", "ANL.GOV");
- check("ANL.GOV", "PNL.GOV", "ANL.GOV", "ES.NET");
- check("ANL.GOV", "NERSC.GOV", "ANL.GOV", "ES.NET");
- check("NERSC.GOV", "TEST.ANL.GOV", "NERSC.GOV", "ES.NET", "ANL.GOV");
-
- // RedHat
- // 3.6.2.1. Configuring a Shared Hierarchy of Names
- check("AA.EXAMPLE.COM", "BB.EXAMPLE.COM",
- "AA.EXAMPLE.COM", "EXAMPLE.COM");
- check("SITE1.SALES.EXAMPLE.COM", "EVERYWHERE.EXAMPLE.COM",
- "SITE1.SALES.EXAMPLE.COM", "SALES.EXAMPLE.COM",
- "EXAMPLE.COM");
- check("DEVEL.EXAMPLE.COM", "PROD.EXAMPLE.ORG",
- "DEVEL.EXAMPLE.COM", "EXAMPLE.COM", "COM",
- "ORG", "EXAMPLE.ORG");
- // 3.6.2.2. Configuring Paths in krb5.conf
- check("A.EXAMPLE.COM", "B.EXAMPLE.COM", "A.EXAMPLE.COM");
- check("A.EXAMPLE.COM", "C.EXAMPLE.COM",
- "A.EXAMPLE.COM", "B.EXAMPLE.COM");
- check("A.EXAMPLE.COM", "D.EXAMPLE.COM",
- "A.EXAMPLE.COM", "B.EXAMPLE.COM", "C.EXAMPLE.COM");
-
- // The original JDK example
- check("TIVOLI.COM", "IBM.COM", "TIVOLI.COM", "LDAPCENTRAL.NET",
- "IBM_LDAPCENTRAL.COM", "MOONLITE.ORG");
-
- // Hierachical
- check("N1.N.COM", "N2.N.COM", "N1.N.COM", "N.COM");
- check("N1.N.COM", "N2.N3.COM", "N1.N.COM", "N.COM",
- "COM", "N3.COM");
- check("N1.COM", "N2.COM", "N1.COM", "COM");
- check("N1", "N2", "N1");
- check("N1.COM", "N2.ORG", "N1.COM", "COM", "ORG");
- check("N1.N.COM", "N.COM", "N1.N.COM");
- check("X.N1.N.COM", "N.COM", "X.N1.N.COM", "N1.N.COM");
- check("N.COM", "N1.N.COM", "N.COM");
- check("N.COM", "X.N1.N.COM", "N.COM", "N1.N.COM");
- check("A.B.C", "D.E.F", "A.B.C", "B.C", "C", "F", "E.F");
-
- // Full path
- check("A1.COM", "A2.COM", "A1.COM");
- check("A1.COM", "A3.COM", "A1.COM", "A2.COM");
- check("A1.COM", "A4.COM", "A1.COM", "A2.COM", "A3.COM");
-
- // Shortest path
- check("B1.COM", "B2.COM", "B1.COM");
- check("B1.COM", "B3.COM", "B1.COM", "B2.COM");
- check("B1.COM", "B4.COM", "B1.COM", "B2.COM", "B3.COM");
-
- // Missing is "."
- check("C1.COM", "C2.COM", "C1.COM", "COM");
- check("C1.COM", "C3.COM", "C1.COM", "C2.COM");
-
- // cRealm = .
- check("D1.COM", "D2.COM", "D1.COM");
-
- // Bad cases
- check("E1.COM", "E2.COM", "E1.COM");
- check("E1.COM", "E3.COM", "E1.COM", "E4.COM");
- check("G1.COM", "G3.COM", "G1.COM", "G2.COM");
- check("I1.COM", "I4.COM", "I1.COM", "I5.COM");
-
- // 7019384
- check("A9.PRAGUE.XXX.CZ", "SERVIS.XXX.CZ",
- "A9.PRAGUE.XXX.CZ", "PRAGUE.XXX.CZ", "ROOT.XXX.CZ");
-
- if (failed != null) {
- throw failed;
- }
- }
-
- static void check(String from, String to, String... paths) {
- try {
- check2(from, to, paths);
- } catch (Exception e) {
- System.out.println(" " + e.getMessage());
- failed = e;
- }
- }
-
- static void check2(String from, String to, String... paths)
- throws Exception {
- System.out.println(from + " -> " + to);
- System.out.println(" expected: " + Arrays.toString(paths));
- String[] result = Realm.getRealmsList(from, to);
- if (result == null || result.length == 0) {
- throw new Exception("There is always a valid path.");
- } else if(result.length != paths.length) {
- throw new Exception("Length of path not correct");
- } else {
- for (int i=0; i<result.length; i++) {
- if (!result[i].equals(paths[i])) {
- System.out.println(" result: " + Arrays.toString(result));
- throw new Exception("Path not same");
- }
- }
- }
- }
-}
--- a/jdk/test/sun/security/krb5/ParseConfig.java Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2007, 2012, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-/*
- * @test
- * @bug 6319046
- * @compile -XDignore.symbol.file ParseConfig.java
- * @run main/othervm ParseConfig
- * @summary Problem with parsing krb5.conf
- */
-
-import sun.security.krb5.Config;
-
-public class ParseConfig {
- public static void main(String[] args) throws Exception {
- System.setProperty("java.security.krb5.conf", System.getProperty("test.src", ".") +"/krb5.conf");
- Config config = Config.getInstance();
- config.listTable();
-
- String sample = "kdc.example.com kdc2.example.com";
- for ( int i = 0; i < 4; i++ ) {
- String expected = config.getAll("realms", "EXAMPLE_" + i + ".COM", "kdc");
- if (!sample.equals(expected)) {
- throw new Exception("krb5.conf: unexpected kdc value \"" +
- expected + "\"");
- }
- }
- }
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/ConfPlusProp.java Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2009, 2012, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 6857795
+ * @bug 6858589
+ * @bug 6972005
+ * @compile -XDignore.symbol.file ConfPlusProp.java
+ * @run main/othervm ConfPlusProp
+ * @summary krb5.conf ignored if system properties on realm and kdc are provided
+ */
+
+import sun.security.krb5.Config;
+
+public class ConfPlusProp {
+ Config config;
+ public static void main(String[] args) throws Exception {
+ new ConfPlusProp().run();
+ }
+
+ void refresh() throws Exception {
+ Config.refresh();
+ config = Config.getInstance();
+ }
+
+ void checkDefaultRealm(String r) throws Exception {
+ try {
+ if (!config.getDefaultRealm().equals(r)) {
+ throw new AssertionError("Default realm error");
+ }
+ } catch (Exception e) {
+ if (r != null) throw e;
+ }
+ }
+
+ void check(String r, String k) throws Exception {
+ try {
+ if (!config.getKDCList(r).equals(k)) {
+ throw new AssertionError(r + " kdc not " + k);
+ }
+ } catch (Exception e) {
+ if (k != null) throw e;
+ }
+ }
+
+ void run() throws Exception {
+
+ // No prop, only conf
+
+ // Point to a file with existing default_realm
+ System.setProperty("java.security.krb5.conf",
+ System.getProperty("test.src", ".") +"/confplusprop.conf");
+ refresh();
+
+ checkDefaultRealm("R1");
+ check("R1", "k1");
+ check("R2", "old");
+ check("R3", null);
+ if (!config.get("libdefaults", "forwardable").equals("well")) {
+ throw new Exception("Extra config error");
+ }
+
+ // Point to a file with no libdefaults
+ System.setProperty("java.security.krb5.conf",
+ System.getProperty("test.src", ".") +"/confplusprop2.conf");
+ refresh();
+
+ checkDefaultRealm(null);
+ check("R1", "k12");
+ check("R2", "old");
+ check("R3", null);
+
+ int version = System.getProperty("java.version").charAt(2) - '0';
+ System.out.println("JDK version is " + version);
+
+ // Zero-config is supported since 1.7
+ if (version >= 7) {
+ // Point to a non-existing file
+ System.setProperty("java.security.krb5.conf", "i-am-not-a file");
+ refresh();
+
+ // Default realm might come from DNS
+ //checkDefaultRealm(null);
+ check("R1", null);
+ check("R2", null);
+ check("R3", null);
+ if (config.get("libdefaults", "forwardable") != null) {
+ throw new Exception("Extra config error");
+ }
+ }
+
+ // Add prop
+ System.setProperty("java.security.krb5.realm", "R2");
+ System.setProperty("java.security.krb5.kdc", "k2");
+
+ // Point to a file with existing default_realm
+ System.setProperty("java.security.krb5.conf",
+ System.getProperty("test.src", ".") +"/confplusprop.conf");
+ refresh();
+
+ checkDefaultRealm("R2");
+ check("R1", "k1");
+ check("R2", "k2");
+ check("R3", "k2");
+ if (!config.get("libdefaults", "forwardable").equals("well")) {
+ throw new Exception("Extra config error");
+ }
+
+ // Point to a file with no libdefaults
+ System.setProperty("java.security.krb5.conf",
+ System.getProperty("test.src", ".") +"/confplusprop2.conf");
+ refresh();
+
+ checkDefaultRealm("R2");
+ check("R1", "k12");
+ check("R2", "k2");
+ check("R3", "k2");
+
+ // Point to a non-existing file
+ System.setProperty("java.security.krb5.conf", "i-am-not-a file");
+ refresh();
+
+ checkDefaultRealm("R2");
+ check("R1", "k2");
+ check("R2", "k2");
+ check("R3", "k2");
+ if (config.get("libdefaults", "forwardable") != null) {
+ throw new Exception("Extra config error");
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/ConfigWithQuotations.java Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2009, 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 6714845
+ * @run main/othervm ConfigWithQuotations
+ * @summary Quotes in Kerberos configuration file are included in the values
+ */
+
+import sun.security.krb5.Config;
+
+public class ConfigWithQuotations {
+ public static void main(String[] args) throws Exception {
+ // This config file is generated using Kerberos.app on a Mac
+ System.setProperty("java.security.krb5.conf",
+ System.getProperty("test.src", ".") +"/edu.mit.Kerberos");
+ Config config = Config.getInstance();
+
+ System.out.println(config);
+
+ if (!config.getDefaultRealm().equals("MAC.LOCAL")) {
+ throw new Exception("Realm error");
+ }
+ if (!config.getKDCList("MAC.LOCAL").equals("kdc.mac.local:88")) {
+ throw new Exception("KDC error");
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/DnsFallback.java Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2008, 2012, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 6673164
+ * @bug 6552334
+ * @run main/othervm DnsFallback
+ * @summary fix dns_fallback parse error, and use dns by default
+ */
+
+import java.io.*;
+import java.lang.reflect.Method;
+import sun.security.krb5.Config;
+
+public class DnsFallback {
+
+ static Method useDNS_Realm;
+
+ public static void main(String[] args) throws Exception {
+
+ useDNS_Realm = Config.class.getDeclaredMethod("useDNS_Realm");
+ useDNS_Realm.setAccessible(true);
+
+
+ // for 6673164
+ check("true", "true", true);
+ check("false", "true", false);
+ check("true", "false", true);
+ check("false", "false", false);
+ check("true", null, true);
+ check("false", null, false);
+ check(null, "true", true);
+ check(null, "false", false);
+
+ // for 6552334
+ check(null, null, true);
+ }
+
+ static void check(String realm, String fallback, boolean output)
+ throws Exception {
+
+ try (PrintStream ps =
+ new PrintStream(new FileOutputStream("dnsfallback.conf"))) {
+ ps.println("[libdefaults]\n");
+ if (realm != null) {
+ ps.println("dns_lookup_realm=" + realm);
+ }
+ if (fallback != null) {
+ ps.println("dns_fallback=" + fallback);
+ }
+ }
+
+ System.setProperty("java.security.krb5.conf", "dnsfallback.conf");
+ Config.refresh();
+ System.out.println("Testing " + realm + ", " + fallback + ", " + output);
+
+ if (!useDNS_Realm.invoke(Config.getInstance()).equals(output)) {
+ throw new Exception("Fail");
+ }
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/ParseCAPaths.java Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2009, 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 6789935 8012615
+ * @run main/othervm ParseCAPaths
+ * @summary cross-realm capath search error
+ */
+
+import java.util.Arrays;
+import sun.security.krb5.Realm;
+
+public class ParseCAPaths {
+ static Exception failed = null;
+ public static void main(String[] args) throws Exception {
+ System.setProperty("java.security.krb5.conf",
+ System.getProperty("test.src", ".") +"/krb5-capaths.conf");
+
+ // MIT
+ check("ANL.GOV", "TEST.ANL.GOV", "ANL.GOV");
+ check("ANL.GOV", "ES.NET", "ANL.GOV");
+ check("ANL.GOV", "PNL.GOV", "ANL.GOV", "ES.NET");
+ check("ANL.GOV", "NERSC.GOV", "ANL.GOV", "ES.NET");
+ check("NERSC.GOV", "TEST.ANL.GOV", "NERSC.GOV", "ES.NET", "ANL.GOV");
+
+ // RedHat
+ // 3.6.2.1. Configuring a Shared Hierarchy of Names
+ check("AA.EXAMPLE.COM", "BB.EXAMPLE.COM",
+ "AA.EXAMPLE.COM", "EXAMPLE.COM");
+ check("SITE1.SALES.EXAMPLE.COM", "EVERYWHERE.EXAMPLE.COM",
+ "SITE1.SALES.EXAMPLE.COM", "SALES.EXAMPLE.COM",
+ "EXAMPLE.COM");
+ check("DEVEL.EXAMPLE.COM", "PROD.EXAMPLE.ORG",
+ "DEVEL.EXAMPLE.COM", "EXAMPLE.COM", "COM",
+ "ORG", "EXAMPLE.ORG");
+ // 3.6.2.2. Configuring Paths in krb5.conf
+ check("A.EXAMPLE.COM", "B.EXAMPLE.COM", "A.EXAMPLE.COM");
+ check("A.EXAMPLE.COM", "C.EXAMPLE.COM",
+ "A.EXAMPLE.COM", "B.EXAMPLE.COM");
+ check("A.EXAMPLE.COM", "D.EXAMPLE.COM",
+ "A.EXAMPLE.COM", "B.EXAMPLE.COM", "C.EXAMPLE.COM");
+
+ // The original JDK example
+ check("TIVOLI.COM", "IBM.COM", "TIVOLI.COM", "LDAPCENTRAL.NET",
+ "IBM_LDAPCENTRAL.COM", "MOONLITE.ORG");
+
+ // Hierachical
+ check("N1.N.COM", "N2.N.COM", "N1.N.COM", "N.COM");
+ check("N1.N.COM", "N2.N3.COM", "N1.N.COM", "N.COM",
+ "COM", "N3.COM");
+ check("N1.COM", "N2.COM", "N1.COM", "COM");
+ check("N1", "N2", "N1");
+ check("N1.COM", "N2.ORG", "N1.COM", "COM", "ORG");
+ check("N1.N.COM", "N.COM", "N1.N.COM");
+ check("X.N1.N.COM", "N.COM", "X.N1.N.COM", "N1.N.COM");
+ check("N.COM", "N1.N.COM", "N.COM");
+ check("N.COM", "X.N1.N.COM", "N.COM", "N1.N.COM");
+ check("A.B.C", "D.E.F", "A.B.C", "B.C", "C", "F", "E.F");
+
+ // Full path
+ check("A1.COM", "A2.COM", "A1.COM");
+ check("A1.COM", "A3.COM", "A1.COM", "A2.COM");
+ check("A1.COM", "A4.COM", "A1.COM", "A2.COM", "A3.COM");
+
+ // Shortest path
+ check("B1.COM", "B2.COM", "B1.COM");
+ check("B1.COM", "B3.COM", "B1.COM", "B2.COM");
+ check("B1.COM", "B4.COM", "B1.COM", "B2.COM", "B3.COM");
+
+ // Missing is "."
+ check("C1.COM", "C2.COM", "C1.COM", "COM");
+ check("C1.COM", "C3.COM", "C1.COM", "C2.COM");
+
+ // cRealm = .
+ check("D1.COM", "D2.COM", "D1.COM");
+
+ // Bad cases
+ check("E1.COM", "E2.COM", "E1.COM");
+ check("E1.COM", "E3.COM", "E1.COM", "E4.COM");
+ check("G1.COM", "G3.COM", "G1.COM", "G2.COM");
+ check("I1.COM", "I4.COM", "I1.COM", "I5.COM");
+
+ // 7019384
+ check("A9.PRAGUE.XXX.CZ", "SERVIS.XXX.CZ",
+ "A9.PRAGUE.XXX.CZ", "PRAGUE.XXX.CZ", "ROOT.XXX.CZ");
+
+ if (failed != null) {
+ throw failed;
+ }
+ }
+
+ static void check(String from, String to, String... paths) {
+ try {
+ check2(from, to, paths);
+ } catch (Exception e) {
+ System.out.println(" " + e.getMessage());
+ failed = e;
+ }
+ }
+
+ static void check2(String from, String to, String... paths)
+ throws Exception {
+ System.out.println(from + " -> " + to);
+ System.out.println(" expected: " + Arrays.toString(paths));
+ String[] result = Realm.getRealmsList(from, to);
+ if (result == null || result.length == 0) {
+ throw new Exception("There is always a valid path.");
+ } else if(result.length != paths.length) {
+ throw new Exception("Length of path not correct");
+ } else {
+ for (int i=0; i<result.length; i++) {
+ if (!result[i].equals(paths[i])) {
+ System.out.println(" result: " + Arrays.toString(result));
+ throw new Exception("Path not same");
+ }
+ }
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/ParseConfig.java Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2007, 2012, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 6319046
+ * @compile -XDignore.symbol.file ParseConfig.java
+ * @run main/othervm ParseConfig
+ * @summary Problem with parsing krb5.conf
+ */
+
+import sun.security.krb5.Config;
+
+public class ParseConfig {
+ public static void main(String[] args) throws Exception {
+ System.setProperty("java.security.krb5.conf", System.getProperty("test.src", ".") +"/krb5.conf");
+ Config config = Config.getInstance();
+ config.listTable();
+
+ String sample = "kdc.example.com kdc2.example.com";
+ for ( int i = 0; i < 4; i++ ) {
+ String expected = config.getAll("realms", "EXAMPLE_" + i + ".COM", "kdc");
+ if (!sample.equals(expected)) {
+ throw new Exception("krb5.conf: unexpected kdc value \"" +
+ expected + "\"");
+ }
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/confplusprop.conf Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,12 @@
+[libdefaults]
+default_realm = R1
+forwardable = well
+dns_lookup_realm = false
+
+[realms]
+R1 = {
+ kdc = k1
+}
+R2 = {
+ kdc = old
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/confplusprop2.conf Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,10 @@
+[libdefaults]
+dns_lookup_realm = false
+
+[realms]
+R1 = {
+ kdc = k12
+}
+R2 = {
+ kdc = old
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/edu.mit.Kerberos Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,15 @@
+[domain_realm]
+
+[libdefaults]
+ default_realm = "MAC.LOCAL"
+ dns_fallback = "no"
+
+[logging]
+ admin_server = "FILE:/var/log/krb5kdc/kadmin.log"
+ kdc = "FILE:/var/log/krb5kdc/kdc.log"
+
+[realms]
+ MAC.LOCAL = {
+ kdc = "kdc.mac.local:88"
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/krb5-capaths.conf Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,102 @@
+[capaths]
+
+# http://web.mit.edu/kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-admin/capaths.html
+
+ANL.GOV = {
+ TEST.ANL.GOV = .
+ PNL.GOV = ES.NET
+ NERSC.GOV = ES.NET
+ ES.NET = .
+}
+TEST.ANL.GOV = {
+ ANL.GOV = .
+}
+PNL.GOV = {
+ ANL.GOV = ES.NET
+}
+#NERSC.GOV = {
+# ANL.GOV = ES.NET
+#}
+ES.NET = {
+ ANL.GOV = .
+}
+NERSC.GOV = {
+ ANL.GOV = ES.NET
+ TEST.ANL.GOV = ES.NET
+ TEST.ANL.GOV = ANL.GOV
+ PNL.GOV = ES.NET
+ ES.NET = .
+}
+
+# The original JDK example
+
+TIVOLI.COM = {
+ IBM.COM = IBM_LDAPCENTRAL.COM MOONLITE.ORG
+ IBM_LDAPCENTRAL.COM = LDAPCENTRAL.NET
+ LDAPCENTRAL.NET = .
+}
+
+# https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Smart_Cards/Setting_Up_Cross_Realm_Authentication.html
+
+A.EXAMPLE.COM = {
+ B.EXAMPLE.COM = .
+ C.EXAMPLE.COM = B.EXAMPLE.COM
+ D.EXAMPLE.COM = B.EXAMPLE.COM
+ D.EXAMPLE.COM = C.EXAMPLE.COM
+}
+
+# Full path
+
+A1.COM = {
+ A2.COM = .
+ A3.COM = A2.COM
+ A4.COM = A2.COM
+ A4.COM = A3.COM
+}
+
+# Shortest path
+
+B1.COM = {
+ B2.COM = .
+ B3.COM = B2.COM
+ B4.COM = B3.COM
+}
+
+# If no sRealm key, fallback to hierarchy
+
+C1.COM = {
+ C3.COM = C2.COM
+}
+
+# cRealm is "."
+
+D1.COM = {
+ D2.COM=D1.COM
+}
+
+# Bad cases
+
+E1.COM = {
+ E2.COM = E2.COM
+ E3.COM = E4.COM
+ E3.COM = .
+}
+
+G1.COM = {
+ G2.COM = G3.COM
+ G3.COM = G2.COM
+}
+
+I1.COM = {
+ I2.COM = I3.COM
+ I3.COM = I2.COM
+ I4.COM = I5.COM
+}
+
+# 7019384
+
+A9.PRAGUE.XXX.CZ = {
+ PRAGUE.XXX.CZ = .
+ ROOT.XXX.CZ = PRAGUE.XXX.CZ
+ SERVIS.XXX.CZ = ROOT.XXX.CZ
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/config/krb5.conf Wed Feb 12 19:20:43 2014 +0800
@@ -0,0 +1,29 @@
+[realms]
+ EXAMPLE_0.COM = {
+ kdc = kdc.example.com
+ kdc = kdc2.example.com
+ }
+
+ EXAMPLE_1.COM =
+ {
+ kdc = kdc.example.com
+ kdc = kdc2.example.com
+ }
+
+ EXAMPLE_2.COM = {
+ kdc = kdc.example.com
+ kdc = kdc2.example.com
+ inner = {
+ aaa = nnn
+ }
+ }
+
+ EXAMPLE_3.COM = {
+ kdc = kdc.example.com
+ kdc = kdc2.example.com
+ inner =
+ {
+ aaa = nnn
+ }
+ }
+
--- a/jdk/test/sun/security/krb5/confplusprop.conf Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-[libdefaults]
-default_realm = R1
-forwardable = well
-dns_lookup_realm = false
-
-[realms]
-R1 = {
- kdc = k1
-}
-R2 = {
- kdc = old
-}
--- a/jdk/test/sun/security/krb5/confplusprop2.conf Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-[libdefaults]
-dns_lookup_realm = false
-
-[realms]
-R1 = {
- kdc = k12
-}
-R2 = {
- kdc = old
-}
--- a/jdk/test/sun/security/krb5/edu.mit.Kerberos Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-[domain_realm]
-
-[libdefaults]
- default_realm = "MAC.LOCAL"
- dns_fallback = "no"
-
-[logging]
- admin_server = "FILE:/var/log/krb5kdc/kadmin.log"
- kdc = "FILE:/var/log/krb5kdc/kdc.log"
-
-[realms]
- MAC.LOCAL = {
- kdc = "kdc.mac.local:88"
- }
-
--- a/jdk/test/sun/security/krb5/krb5-capaths.conf Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-[capaths]
-
-# http://web.mit.edu/kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-admin/capaths.html
-
-ANL.GOV = {
- TEST.ANL.GOV = .
- PNL.GOV = ES.NET
- NERSC.GOV = ES.NET
- ES.NET = .
-}
-TEST.ANL.GOV = {
- ANL.GOV = .
-}
-PNL.GOV = {
- ANL.GOV = ES.NET
-}
-#NERSC.GOV = {
-# ANL.GOV = ES.NET
-#}
-ES.NET = {
- ANL.GOV = .
-}
-NERSC.GOV = {
- ANL.GOV = ES.NET
- TEST.ANL.GOV = ES.NET
- TEST.ANL.GOV = ANL.GOV
- PNL.GOV = ES.NET
- ES.NET = .
-}
-
-# The original JDK example
-
-TIVOLI.COM = {
- IBM.COM = IBM_LDAPCENTRAL.COM MOONLITE.ORG
- IBM_LDAPCENTRAL.COM = LDAPCENTRAL.NET
- LDAPCENTRAL.NET = .
-}
-
-# https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Smart_Cards/Setting_Up_Cross_Realm_Authentication.html
-
-A.EXAMPLE.COM = {
- B.EXAMPLE.COM = .
- C.EXAMPLE.COM = B.EXAMPLE.COM
- D.EXAMPLE.COM = B.EXAMPLE.COM
- D.EXAMPLE.COM = C.EXAMPLE.COM
-}
-
-# Full path
-
-A1.COM = {
- A2.COM = .
- A3.COM = A2.COM
- A4.COM = A2.COM
- A4.COM = A3.COM
-}
-
-# Shortest path
-
-B1.COM = {
- B2.COM = .
- B3.COM = B2.COM
- B4.COM = B3.COM
-}
-
-# If no sRealm key, fallback to hierarchy
-
-C1.COM = {
- C3.COM = C2.COM
-}
-
-# cRealm is "."
-
-D1.COM = {
- D2.COM=D1.COM
-}
-
-# Bad cases
-
-E1.COM = {
- E2.COM = E2.COM
- E3.COM = E4.COM
- E3.COM = .
-}
-
-G1.COM = {
- G2.COM = G3.COM
- G3.COM = G2.COM
-}
-
-I1.COM = {
- I2.COM = I3.COM
- I3.COM = I2.COM
- I4.COM = I5.COM
-}
-
-# 7019384
-
-A9.PRAGUE.XXX.CZ = {
- PRAGUE.XXX.CZ = .
- ROOT.XXX.CZ = PRAGUE.XXX.CZ
- SERVIS.XXX.CZ = ROOT.XXX.CZ
-}
--- a/jdk/test/sun/security/krb5/krb5.conf Wed Feb 12 11:02:47 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-[realms]
- EXAMPLE_0.COM = {
- kdc = kdc.example.com
- kdc = kdc2.example.com
- }
-
- EXAMPLE_1.COM =
- {
- kdc = kdc.example.com
- kdc = kdc2.example.com
- }
-
- EXAMPLE_2.COM = {
- kdc = kdc.example.com
- kdc = kdc2.example.com
- inner = {
- aaa = nnn
- }
- }
-
- EXAMPLE_3.COM = {
- kdc = kdc.example.com
- kdc = kdc2.example.com
- inner =
- {
- aaa = nnn
- }
- }
-