--- a/jdk/make/CopyFiles.gmk Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/make/CopyFiles.gmk Mon Aug 11 11:00:20 2014 -0700
@@ -335,30 +335,6 @@
##########################################################################################
-PROPS_SRC := $(JDK_TOPDIR)/src/share/lib/security/java.security-$(OPENJDK_TARGET_OS)
-PROPS_DST := $(JDK_OUTPUTDIR)/lib/security/java.security
-
-ifndef OPENJDK
-
-RESTRICTED_PKGS_SRC := $(JDK_TOPDIR)/src/closed/share/lib/security/restricted.pkgs
-RESTRICTED_PKGS := $(shell $(CAT) $(RESTRICTED_PKGS_SRC) | $(TR) "\n" " ")
-
-$(PROPS_DST): $(PROPS_SRC)
- $(MKDIR) -p $(@D)
- $(TOOL_ADDTORESTRICTEDPKGS) $^ $@.tmp $(RESTRICTED_PKGS)
- $(MV) $@.tmp $@
-
-else
-
-$(PROPS_DST): $(PROPS_SRC)
- $(call install-file)
-
-endif
-
-COPY_FILES += $(PROPS_DST)
-
-##########################################################################################
-
POLICY_SRC := $(JDK_TOPDIR)/src/share/lib/security/java.policy
POLICY_DST := $(JDK_OUTPUTDIR)/lib/security/java.policy
--- a/jdk/make/GenerateData.gmk Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/make/GenerateData.gmk Mon Aug 11 11:00:20 2014 -0700
@@ -53,6 +53,9 @@
include gendata/GendataBlacklistedCerts.gmk
GENDATA += $(GENDATA_BLACKLISTED_CERTS)
+include gendata/GendataJavaSecurity.gmk
+GENDATA += $(GENDATA_JAVA_SECURITY)
+
##########################################################################################
GENDATA_UNINAME := $(JDK_OUTPUTDIR)/classes/java/lang/uniName.dat
--- a/jdk/make/Tools.gmk Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/make/Tools.gmk Mon Aug 11 11:00:20 2014 -0700
@@ -90,6 +90,9 @@
TOOL_BLACKLISTED_CERTS = $(JAVA_SMALL) -cp $(JDK_OUTPUTDIR)/btclasses \
build.tools.blacklistedcertsconverter.BlacklistedCertsConverter
+TOOL_MAKEJAVASECURITY = $(JAVA_SMALL) -cp $(JDK_OUTPUTDIR)/btclasses \
+ build.tools.makejavasecurity.MakeJavaSecurity
+
# TODO: There are references to the jdwpgen.jar in jdk/make/netbeans/jdwpgen/build.xml
# and nbproject/project.properties in the same dir. Needs to be looked at.
@@ -121,9 +124,6 @@
-cp $(JDK_OUTPUTDIR)/btclasses:$(JDK_OUTPUTDIR) \
build.tools.deps.CheckDeps
-TOOL_ADDTORESTRICTEDPKGS = $(JAVA_SMALL) -cp $(JDK_OUTPUTDIR)/btclasses \
- build.tools.addtorestrictedpkgs.AddToRestrictedPkgs
-
##########################################################################################
# Tools needed on solaris because OBJCOPY is broken.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/gendata/GendataJavaSecurity.gmk Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,38 @@
+ #
+# Copyright (c) 2014, 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. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# 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.
+#
+
+GENDATA_JAVA_SECURITY_SRC := $(JDK_TOPDIR)/src/share/lib/security/java.security
+GENDATA_JAVA_SECURITY := $(JDK_OUTPUTDIR)/lib/security/java.security
+
+ifndef OPENJDK
+ RESTRICTED_PKGS_SRC := $(JDK_TOPDIR)/src/closed/share/lib/security/restricted.pkgs
+else
+ RESTRICTED_PKGS_SRC :=
+endif
+
+$(GENDATA_JAVA_SECURITY): $(BUILD_TOOLS) $(GENDATA_JAVA_SECURITY_SRC) $(RESTRICTED_PKGS_SRC)
+ $(ECHO) "Generating java.security"
+ $(MKDIR) -p $(@D)
+ $(TOOL_MAKEJAVASECURITY) $(GENDATA_JAVA_SECURITY_SRC) $@ $(OPENJDK_TARGET_OS) $(RESTRICTED_PKGS_SRC) || exit 1
--- a/jdk/make/src/classes/build/tools/addtorestrictedpkgs/AddToRestrictedPkgs.java Sun Aug 10 19:39:01 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2013, 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. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-package build.tools.addtorestrictedpkgs;
-
-import java.io.*;
-
-/**
- * Adds additional packages to the package.access and package.definition
- * security properties.
- */
-public class AddToRestrictedPkgs {
-
- private static final String PKG_ACC = "package.access";
- private static final String PKG_DEF = "package.definition";
- private static final int PKG_ACC_INDENT = 15;
- private static final int PKG_DEF_INDENT = 19;
-
- public static void main(String[] args) throws Exception {
-
- if (args.length < 3) {
- System.err.println("Usage: java AddToRestrictedPkgs " +
- "[input java.security file name] " +
- "[output java.security file name] " +
- "[packages ...]");
- System.exit(1);
- }
-
- try (FileReader fr = new FileReader(args[0]);
- BufferedReader br = new BufferedReader(fr);
- FileWriter fw = new FileWriter(args[1]);
- BufferedWriter bw = new BufferedWriter(fw))
- {
- // parse the file line-by-line, looking for pkg access properties
- String line = br.readLine();
- while (line != null) {
- if (line.startsWith(PKG_ACC)) {
- writePackages(br, bw, line, PKG_ACC_INDENT, args);
- } else if (line.startsWith(PKG_DEF)) {
- writePackages(br, bw, line, PKG_DEF_INDENT, args);
- } else {
- writeLine(bw, line);
- }
- line = br.readLine();
- }
- bw.flush();
- }
- }
-
- private static void writePackages(BufferedReader br, BufferedWriter bw,
- String line, int numSpaces,
- String[] args) throws IOException {
- // parse property until EOL, not including line breaks
- while (line.endsWith("\\")) {
- writeLine(bw, line);
- line = br.readLine();
- }
- // append comma and line-break to last package
- writeLine(bw, line + ",\\");
- // add new packages, one per line
- for (int i = 2; i < args.length - 1; i++) {
- indent(bw, numSpaces);
- writeLine(bw, args[i] + ",\\");
- }
- indent(bw, numSpaces);
- writeLine(bw, args[args.length - 1]);
- }
-
- private static void writeLine(BufferedWriter bw, String line)
- throws IOException
- {
- bw.write(line);
- bw.newLine();
- }
-
- private static void indent(BufferedWriter bw, int numSpaces)
- throws IOException
- {
- for (int i = 0; i < numSpaces; i++) {
- bw.append(' ');
- }
- }
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/make/src/classes/build/tools/makejavasecurity/MakeJavaSecurity.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2013, 2014, 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+
+package build.tools.makejavasecurity;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.*;
+
+/**
+ * Builds the java.security file, including
+ *
+ * 1. Adds additional packages to the package.access and
+ * package.definition security properties.
+ * 2. Filter out platform-unrelated parts
+ *
+ * In order to easily maintain platform-related entries, every item
+ * (including the last line) in package.access and package.definition
+ * MUST end with ',\'. A blank line MUST exist after the last line.
+ */
+public class MakeJavaSecurity {
+
+ private static final String PKG_ACC = "package.access";
+ private static final String PKG_DEF = "package.definition";
+ private static final int PKG_ACC_INDENT = 15;
+ private static final int PKG_DEF_INDENT = 19;
+
+ public static void main(String[] args) throws Exception {
+
+ if (args.length < 3) {
+ System.err.println("Usage: java MakeJavaSecurity " +
+ "[input java.security file name] " +
+ "[output java.security file name] " +
+ "[openjdk target os] " +
+ "[more restricted packages file name?]");
+ System.exit(1);
+ }
+
+ // more restricted packages
+ List<String> extraLines;
+ if (args.length == 4) {
+ extraLines = Files.readAllLines(Paths.get(args[3]));
+ } else {
+ extraLines = Collections.emptyList();
+ }
+
+ List<String> lines = new ArrayList<>();
+
+ // read raw java.security and add more restricted packages
+ try (FileReader fr = new FileReader(args[0]);
+ BufferedReader br = new BufferedReader(fr)) {
+ // looking for pkg access properties
+ String line = br.readLine();
+ while (line != null) {
+ if (line.startsWith(PKG_ACC)) {
+ addPackages(br, lines, line, PKG_ACC_INDENT, extraLines);
+ } else if (line.startsWith(PKG_DEF)) {
+ addPackages(br, lines, line, PKG_DEF_INDENT, extraLines);
+ } else {
+ lines.add(line);
+ }
+ line = br.readLine();
+ }
+ }
+
+ // Filter out platform-unrelated ones. We only support
+ // #ifdef, #ifndef, and #endif.
+ int mode = 0; // 0: out of block, 1: in match, 2: in non-match
+ Iterator<String> iter = lines.iterator();
+ while (iter.hasNext()) {
+ String line = iter.next();
+ if (line.startsWith("#endif")) {
+ mode = 0;
+ iter.remove();
+ } else if (line.startsWith("#ifdef ")) {
+ mode = line.endsWith(args[2])?1:2;
+ iter.remove();
+ } else if (line.startsWith("#ifndef ")) {
+ mode = line.endsWith(args[2])?2:1;
+ iter.remove();
+ } else {
+ if (mode == 2) iter.remove();
+ }
+ }
+
+ // Update .tbd to .1, .2, etc.
+ Map<String,Integer> count = new HashMap<>();
+ for (int i=0; i<lines.size(); i++) {
+ String line = lines.get(i);
+ int index = line.indexOf(".tbd");
+ if (index >= 0) {
+ String prefix = line.substring(0, index);
+ int n = count.getOrDefault(prefix, 1);
+ count.put(prefix, n+1);
+ lines.set(i, prefix + "." + n + line.substring(index+4));
+ }
+ }
+
+ // Clean up the last line of PKG_ACC and PKG_DEF blocks.
+ // Not really necessary since a blank line follows.
+ boolean inBlock = false;
+ for (int i=0; i<lines.size(); i++) {
+ String line = lines.get(i);
+ if (line.startsWith(PKG_ACC) || line.startsWith(PKG_DEF)) {
+ inBlock = true;
+ }
+ if (inBlock) {
+ if (line.isEmpty()) {
+ String lastLine = lines.get(i-1);
+ lines.set(i-1, lastLine.substring(0, lastLine.length()-2));
+ inBlock = false;
+ }
+ }
+ }
+
+ Files.write(Paths.get(args[1]), lines);
+ }
+
+ private static void addPackages(BufferedReader br, List<String> lines,
+ String line, int numSpaces,
+ List<String> args) throws IOException {
+ // parse property until EOL, not including line breaks
+ boolean first = true;
+ while (!line.isEmpty()) {
+ if (!line.startsWith("#")) {
+ if (!line.endsWith(",\\") ||
+ (!first && line.contains("="))) {
+ throw new IOException("Invalid line: " + line);
+ }
+ }
+ lines.add(line);
+ line = br.readLine();
+ first = false;
+ }
+ // add new packages, one per line
+ for (String arg: args) {
+ if (arg.startsWith("#")) {
+ lines.add(arg);
+ } else {
+ lines.add(String.format("%"+numSpaces+"s", "") + arg + ",\\");
+ }
+ }
+ lines.add(line);
+ }
+}
--- a/jdk/src/macosx/native/java/util/prefs/MacOSXPreferencesFile.m Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/src/macosx/native/java/util/prefs/MacOSXPreferencesFile.m Mon Aug 11 11:00:20 2014 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, 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
@@ -71,6 +71,8 @@
static jclass exceptionClass = NULL;
jclass c;
+ (*env)->ExceptionClear(env); // If an exception is pending, clear it before
+ // calling FindClass() and/or ThrowNew().
if (exceptionClass) {
c = exceptionClass;
} else {
@@ -534,8 +536,13 @@
(JNIEnv *env, jobject klass, jobject jpath,
jobject jname, jlong juser, jlong jhost)
{
- CFStringRef path = toCF(env, jpath);
- CFStringRef name = toCF(env, jname);
+ CFStringRef path = NULL;
+ CFStringRef name = NULL;
+
+ path = toCF(env, jpath);
+ if (path != NULL) {
+ name = toCF(env, jname);
+ }
CFStringRef user = (CFStringRef)jlong_to_ptr(juser);
CFStringRef host = (CFStringRef)jlong_to_ptr(jhost);
CFDictionaryRef node = NULL;
@@ -579,8 +586,13 @@
(JNIEnv *env, jobject klass, jobject jpath,
jobject jname, jlong juser, jlong jhost)
{
- CFStringRef path = toCF(env, jpath);
- CFStringRef name = toCF(env, jname);
+ CFStringRef path = NULL;
+ CFStringRef name = NULL;
+
+ path = toCF(env, jpath);
+ if (path != NULL) {
+ name = toCF(env, jname);
+ }
CFStringRef user = (CFStringRef)jlong_to_ptr(juser);
CFStringRef host = (CFStringRef)jlong_to_ptr(jhost);
CFStringRef parentName;
@@ -647,9 +659,17 @@
jobject jname, jlong juser, jlong jhost)
{
// like addNode, but can put a three-level-deep dict into the root file
- CFStringRef path = toCF(env, jpath);
- CFStringRef child = toCF(env, jchild);
- CFStringRef name = toCF(env, jname);
+ CFStringRef path = NULL;
+ CFStringRef child = NULL;
+ CFStringRef name = NULL;
+
+ path = toCF(env, jpath);
+ if (path != NULL) {
+ child = toCF(env, jchild);
+ }
+ if (child != NULL) {
+ name = toCF(env, jname);
+ }
CFStringRef user = (CFStringRef)jlong_to_ptr(juser);
CFStringRef host = (CFStringRef)jlong_to_ptr(jhost);
CFMutableDictionaryRef parent;
@@ -693,9 +713,17 @@
(JNIEnv *env, jobject klass, jobject jpath, jobject jchild,
jobject jname, jlong juser, jlong jhost)
{
- CFStringRef path = toCF(env, jpath);
- CFStringRef child = toCF(env, jchild);
- CFStringRef name = toCF(env, jname);
+ CFStringRef path = NULL;
+ CFStringRef child = NULL;
+ CFStringRef name = NULL;
+
+ path = toCF(env, jpath);
+ if (path != NULL) {
+ child = toCF(env, jchild);
+ }
+ if (child != NULL) {
+ name = toCF(env, jname);
+ }
CFStringRef user = (CFStringRef)jlong_to_ptr(juser);
CFStringRef host = (CFStringRef)jlong_to_ptr(jhost);
CFDictionaryRef constParent;
@@ -734,10 +762,21 @@
(JNIEnv *env, jobject klass, jobject jpath, jobject jkey, jobject jvalue,
jobject jname, jlong juser, jlong jhost)
{
- CFStringRef path = toCF(env, jpath);
- CFStringRef key = toCF(env, jkey);
- CFStringRef value = toCF(env, jvalue);
- CFStringRef name = toCF(env, jname);
+ CFStringRef path = NULL;
+ CFStringRef key = NULL;
+ CFStringRef value = NULL;
+ CFStringRef name = NULL;
+
+ path = toCF(env, jpath);
+ if (path != NULL) {
+ key = toCF(env, jkey);
+ }
+ if (key != NULL) {
+ value = toCF(env, jvalue);
+ }
+ if (value != NULL) {
+ name = toCF(env, jname);
+ }
CFStringRef user = (CFStringRef)jlong_to_ptr(juser);
CFStringRef host = (CFStringRef)jlong_to_ptr(jhost);
CFMutableDictionaryRef node = NULL;
@@ -771,9 +810,17 @@
(JNIEnv *env, jobject klass, jobject jpath, jobject jkey,
jobject jname, jlong juser, jlong jhost)
{
- CFStringRef path = toCF(env, jpath);
- CFStringRef key = toCF(env, jkey);
- CFStringRef name = toCF(env, jname);
+ CFStringRef path = NULL;
+ CFStringRef key = NULL;
+ CFStringRef name = NULL;
+
+ path = toCF(env, jpath);
+ if (path != NULL) {
+ key = toCF(env, jkey);
+ }
+ if (key != NULL) {
+ name = toCF(env, jname);
+ }
CFStringRef user = (CFStringRef)jlong_to_ptr(juser);
CFStringRef host = (CFStringRef)jlong_to_ptr(jhost);
CFDictionaryRef constNode;
@@ -812,9 +859,17 @@
(JNIEnv *env, jobject klass, jobject jpath, jobject jkey,
jobject jname, jlong juser, jlong jhost)
{
- CFStringRef path = toCF(env, jpath);
- CFStringRef key = toCF(env, jkey);
- CFStringRef name = toCF(env, jname);
+ CFStringRef path = NULL;
+ CFStringRef key = NULL;
+ CFStringRef name = NULL;
+
+ path = toCF(env, jpath);
+ if (path != NULL) {
+ key = toCF(env, jkey);
+ }
+ if (key != NULL) {
+ name = toCF(env, jname);
+ }
CFStringRef user = (CFStringRef)jlong_to_ptr(juser);
CFStringRef host = (CFStringRef)jlong_to_ptr(jhost);
CFPropertyListRef value;
@@ -914,8 +969,13 @@
jobject jname, jlong juser, jlong jhost,
Boolean allowSlash)
{
- CFStringRef path = toCF(env, jpath);
- CFStringRef name = toCF(env, jname);
+ CFStringRef path = NULL;
+ CFStringRef name = NULL;
+
+ path = toCF(env, jpath);
+ if (path != NULL) {
+ name = toCF(env, jname);
+ }
CFStringRef user = (CFStringRef)jlong_to_ptr(juser);
CFStringRef host = (CFStringRef)jlong_to_ptr(jhost);
CFDictionaryRef node;
--- a/jdk/src/share/classes/java/security/SecureRandom.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/src/share/classes/java/security/SecureRandom.java Mon Aug 11 11:00:20 2014 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2014, 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
@@ -39,15 +39,16 @@
*
* <p>A cryptographically strong random number
* minimally complies with the statistical random number generator tests
- * specified in <a href="http://csrc.nist.gov/cryptval/140-2.htm">
+ * specified in
+ * <a href="http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf">
* <i>FIPS 140-2, Security Requirements for Cryptographic Modules</i></a>,
* section 4.9.1.
* Additionally, SecureRandom must produce non-deterministic output.
* Therefore any seed material passed to a SecureRandom object must be
* unpredictable, and all SecureRandom output sequences must be
* cryptographically strong, as described in
- * <a href="http://www.ietf.org/rfc/rfc1750.txt">
- * <i>RFC 1750: Randomness Recommendations for Security</i></a>.
+ * <a href="http://tools.ietf.org/html/rfc4086">
+ * <i>RFC 4086: Randomness Requirements for Security</i></a>.
*
* <p>A caller obtains a SecureRandom instance via the
* no-argument constructor or one of the {@code getInstance} methods:
--- a/jdk/src/share/classes/java/util/JapaneseImperialCalendar.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/src/share/classes/java/util/JapaneseImperialCalendar.java Mon Aug 11 11:00:20 2014 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, 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
@@ -38,20 +38,20 @@
import sun.util.calendar.ZoneInfo;
/**
- * <code>JapaneseImperialCalendar</code> implements a Japanese
+ * {@code JapaneseImperialCalendar} implements a Japanese
* calendar system in which the imperial era-based year numbering is
* supported from the Meiji era. The following are the eras supported
* by this calendar system.
- * <pre><tt>
+ * <pre>{@code
* ERA value Era name Since (in Gregorian)
* ------------------------------------------------------
* 0 N/A N/A
- * 1 Meiji 1868-01-01 midnight local time
- * 2 Taisho 1912-07-30 midnight local time
- * 3 Showa 1926-12-25 midnight local time
- * 4 Heisei 1989-01-08 midnight local time
+ * 1 Meiji 1868-01-01T00:00:00 local time
+ * 2 Taisho 1912-07-30T00:00:00 local time
+ * 3 Showa 1926-12-25T00:00:00 local time
+ * 4 Heisei 1989-01-08T00:00:00 local time
* ------------------------------------------------------
- * </tt></pre>
+ * }</pre>
*
* <p><code>ERA</code> value 0 specifies the years before Meiji and
* the Gregorian year values are used. Unlike {@link
@@ -63,6 +63,31 @@
* with time differences for applying the era transitions. This
* calendar implementation assumes local time for all transitions.
*
+ * <p>A new era can be specified using property
+ * jdk.calendar.japanese.supplemental.era. The new era is added to the
+ * predefined eras. The syntax of the property is as follows.
+ * <p><pre>
+ * {@code name=<name>,abbr=<abbr>,since=<time['u']>}
+ * </pre>
+ * where
+ * <dl>
+ * <dt>{@code <name>:}<dd>the full name of the new era (non-ASCII characters allowed)
+ * <dt>{@code <abbr>:}<dd>the abbreviation of the new era (non-ASCII characters allowed)
+ * <dt>{@code <time['u']>:}<dd>the start time of the new era represented by
+ * milliseconds from 1970-01-01T00:00:00 local time or UTC if {@code 'u'} is
+ * appended to the milliseconds value. (ASCII digits only)
+ * </dl>
+ *
+ * <p>If the given era is invalid, such as the since value before the
+ * beginning of the last predefined era, the given era will be
+ * ignored.
+ *
+ * <p>The following is an example of the property usage.
+ * <p><pre>
+ * java -Djdk.calendar.japanese.supplemental.era="name=NewEra,abbr=N,since=253374307200000"
+ * </pre>
+ * The property specifies an era change to NewEra at 9999-02-11T00:00:00 local time.
+ *
* @author Masayoshi Okutsu
* @since 1.6
*/
@@ -102,7 +127,6 @@
public static final int HEISEI = 4;
private static final int EPOCH_OFFSET = 719163; // Fixed date of January 1, 1970 (Gregorian)
- private static final int EPOCH_YEAR = 1970;
// Useful millisecond constants. Although ONE_DAY and ONE_WEEK can fit
// into ints, they must be longs in order to prevent arithmetic overflow
@@ -111,7 +135,6 @@
private static final int ONE_MINUTE = 60*ONE_SECOND;
private static final int ONE_HOUR = 60*ONE_MINUTE;
private static final long ONE_DAY = 24*ONE_HOUR;
- private static final long ONE_WEEK = 7*ONE_DAY;
// Reference to the sun.util.calendar.LocalGregorianCalendar instance (singleton).
private static final LocalGregorianCalendar jcal
@@ -217,6 +240,7 @@
};
// Proclaim serialization compatibility with JDK 1.6
+ @SuppressWarnings("FieldNameHidesFieldInSuperclass")
private static final long serialVersionUID = -3364572813905467929L;
static {
@@ -340,6 +364,7 @@
* <code>false</code> otherwise.
* @see Calendar#compareTo(Calendar)
*/
+ @Override
public boolean equals(Object obj) {
return obj instanceof JapaneseImperialCalendar &&
super.equals(obj);
@@ -349,6 +374,7 @@
* Generates the hash code for this
* <code>JapaneseImperialCalendar</code> object.
*/
+ @Override
public int hashCode() {
return super.hashCode() ^ jdate.hashCode();
}
@@ -381,6 +407,7 @@
* or if any calendar fields have out-of-range values in
* non-lenient mode.
*/
+ @Override
public void add(int field, int amount) {
// If amount == 0, do nothing even the given field is out of
// range. This is tested by JCK.
@@ -509,6 +536,7 @@
}
}
+ @Override
public void roll(int field, boolean up) {
roll(field, up ? +1 : -1);
}
@@ -533,6 +561,7 @@
* @see #add(int,int)
* @see #set(int,int)
*/
+ @Override
public void roll(int field, int amount) {
// If amount == 0, do nothing even the given field is out of
// range. This is tested by JCK.
--- a/jdk/src/share/classes/java/util/StringJoiner.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/src/share/classes/java/util/StringJoiner.java Mon Aug 11 11:00:20 2014 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, 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
@@ -24,6 +24,9 @@
*/
package java.util;
+import sun.misc.JavaLangAccess;
+import sun.misc.SharedSecrets;
+
/**
* {@code StringJoiner} is used to construct a sequence of characters separated
* by a delimiter and optionally starting with a supplied prefix
@@ -67,22 +70,24 @@
private final String delimiter;
private final String suffix;
- /*
- * StringBuilder value -- at any time, the characters constructed from the
- * prefix, the added element separated by the delimiter, but without the
- * suffix, so that we can more easily add elements without having to jigger
- * the suffix each time.
- */
- private StringBuilder value;
+ /** Contains all the string components added so far. */
+ private String[] elts;
+
+ /** The number of string components added so far. */
+ private int size;
- /*
- * By default, the string consisting of prefix+suffix, returned by
- * toString(), or properties of value, when no elements have yet been added,
- * i.e. when it is empty. This may be overridden by the user to be some
- * other value including the empty String.
+ /** Total length in chars so far, excluding prefix and suffix. */
+ private int len;
+
+ /**
+ * When overriden by the user to be non-null via {@link setEmptyValue}, the
+ * string returned by toString() when no elements have yet been added.
+ * When null, prefix + suffix is used as the empty value.
*/
private String emptyValue;
+ private static final JavaLangAccess jla = SharedSecrets.getJavaLangAccess();
+
/**
* Constructs a {@code StringJoiner} with no characters in it, with no
* {@code prefix} or {@code suffix}, and a copy of the supplied
@@ -125,7 +130,6 @@
this.prefix = prefix.toString();
this.delimiter = delimiter.toString();
this.suffix = suffix.toString();
- this.emptyValue = this.prefix + this.suffix;
}
/**
@@ -148,29 +152,44 @@
return this;
}
+ private static int getChars(String s, char[] chars, int start) {
+ int len = s.length();
+ s.getChars(0, len, chars, start);
+ return len;
+ }
+
/**
* Returns the current value, consisting of the {@code prefix}, the values
* added so far separated by the {@code delimiter}, and the {@code suffix},
* unless no elements have been added in which case, the
- * {@code prefix + suffix} or the {@code emptyValue} characters are returned
+ * {@code prefix + suffix} or the {@code emptyValue} characters are returned.
*
* @return the string representation of this {@code StringJoiner}
*/
@Override
public String toString() {
- if (value == null) {
+ final String[] elts = this.elts;
+ if (elts == null && emptyValue != null) {
return emptyValue;
- } else {
- if (suffix.equals("")) {
- return value.toString();
- } else {
- int initialLength = value.length();
- String result = value.append(suffix).toString();
- // reset value to pre-append initialLength
- value.setLength(initialLength);
- return result;
+ }
+ final int size = this.size;
+ final int addLen = prefix.length() + suffix.length();
+ if (addLen == 0) {
+ compactElts();
+ return size == 0 ? "" : elts[0];
+ }
+ final String delimiter = this.delimiter;
+ final char[] chars = new char[len + addLen];
+ int k = getChars(prefix, chars, 0);
+ if (size > 0) {
+ k += getChars(elts[0], chars, k);
+ for (int i = 1; i < size; i++) {
+ k += getChars(delimiter, chars, k);
+ k += getChars(elts[i], chars, k);
}
}
+ k += getChars(suffix, chars, k);
+ return jla.newStringUnsafe(chars);
}
/**
@@ -182,7 +201,16 @@
* @return a reference to this {@code StringJoiner}
*/
public StringJoiner add(CharSequence newElement) {
- prepareBuilder().append(newElement);
+ final String elt = String.valueOf(newElement);
+ if (elts == null) {
+ elts = new String[8];
+ } else {
+ if (size == elts.length)
+ elts = Arrays.copyOf(elts, 2 * size);
+ len += delimiter.length();
+ }
+ len += elt.length();
+ elts[size++] = elt;
return this;
}
@@ -207,24 +235,25 @@
*/
public StringJoiner merge(StringJoiner other) {
Objects.requireNonNull(other);
- if (other.value != null) {
- final int length = other.value.length();
- // lock the length so that we can seize the data to be appended
- // before initiate copying to avoid interference, especially when
- // merge 'this'
- StringBuilder builder = prepareBuilder();
- builder.append(other.value, other.prefix.length(), length);
+ if (other.elts == null) {
+ return this;
}
- return this;
+ other.compactElts();
+ return add(other.elts[0]);
}
- private StringBuilder prepareBuilder() {
- if (value != null) {
- value.append(delimiter);
- } else {
- value = new StringBuilder().append(prefix);
+ private void compactElts() {
+ if (size > 1) {
+ final char[] chars = new char[len];
+ int i = 1, k = getChars(elts[0], chars, 0);
+ do {
+ k += getChars(delimiter, chars, k);
+ k += getChars(elts[i], chars, k);
+ elts[i] = null;
+ } while (++i < size);
+ size = 1;
+ elts[0] = jla.newStringUnsafe(chars);
}
- return value;
}
/**
@@ -238,10 +267,7 @@
* @return the length of the current value of {@code StringJoiner}
*/
public int length() {
- // Remember that we never actually append the suffix unless we return
- // the full (present) value or some sub-string or length of it, so that
- // we can add on more if we need to.
- return (value != null ? value.length() + suffix.length() :
- emptyValue.length());
+ return (size == 0 && emptyValue != null) ? emptyValue.length() :
+ len + prefix.length() + suffix.length();
}
}
--- a/jdk/src/share/classes/sun/security/smartcardio/CardImpl.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/src/share/classes/sun/security/smartcardio/CardImpl.java Mon Aug 11 11:00:20 2014 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, 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
@@ -26,9 +26,9 @@
package sun.security.smartcardio;
import java.nio.ByteBuffer;
-
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import javax.smartcardio.*;
-
import static sun.security.smartcardio.PCSC.*;
/**
@@ -62,6 +62,15 @@
// thread holding exclusive access to the card, or null
private volatile Thread exclusiveThread;
+ // used for platform specific logic
+ private static final boolean isWindows;
+
+ static {
+ final String osName = AccessController.doPrivileged(
+ (PrivilegedAction<String>) () -> System.getProperty("os.name"));
+ isWindows = osName.startsWith("Windows");
+ }
+
CardImpl(TerminalImpl terminal, String protocol) throws PCSCException {
this.terminal = terminal;
int sharingMode = SCARD_SHARE_SHARED;
@@ -74,7 +83,12 @@
connectProtocol = SCARD_PROTOCOL_T1;
} else if (protocol.equalsIgnoreCase("direct")) {
// testing
- connectProtocol = 0;
+
+ // MSDN states that the preferred protocol can be zero, but doesn't
+ // specify whether other values are allowed.
+ // pcsc-lite implementation expects the preferred protocol to be non zero.
+ connectProtocol = isWindows ? 0 : SCARD_PROTOCOL_RAW;
+
sharingMode = SCARD_SHARE_DIRECT;
} else {
throw new IllegalArgumentException("Unsupported protocol " + protocol);
--- a/jdk/src/share/classes/sun/util/calendar/Era.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/src/share/classes/sun/util/calendar/Era.java Mon Aug 11 11:00:20 2014 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2014, 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
@@ -41,20 +41,15 @@
* <code>CalendarDate</code>.
*
* <p>The following era names are defined in this release.
- * <!-- TODO: use HTML table -->
- * <pre><tt>
+ * <pre>{@code
* Calendar system Era name Since (in Gregorian)
* -----------------------------------------------------------------------
- * Japanese calendar Meiji 1868-01-01 midnight local time
- * Taisho 1912-07-30 midnight local time
- * Showa 1926-12-26 midnight local time
- * Heisei 1989-01-08 midnight local time
- * Julian calendar BeforeCommonEra -292275055-05-16T16:47:04.192Z
- * CommonEra 0000-12-30 midnight local time
- * Taiwanese calendar MinGuo 1911-01-01 midnight local time
- * Thai Buddhist calendar BuddhistEra -543-01-01 midnight local time
+ * Japanese calendar Meiji 1868-01-01T00:00:00 local time
+ * Taisho 1912-07-30T00:00:00 local time
+ * Showa 1926-12-25T00:00:00 local time
+ * Heisei 1989-01-08T00:00:00 local time
* -----------------------------------------------------------------------
- * </tt></pre>
+ * }</pre>
*
* @author Masayoshi Okutsu
* @since 1.5
--- a/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/src/share/classes/sun/util/calendar/LocalGregorianCalendar.java Mon Aug 11 11:00:20 2014 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, 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
@@ -25,11 +25,7 @@
package sun.util.calendar;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.StringTokenizer;
+import java.security.AccessController;
import java.util.TimeZone;
/**
@@ -39,6 +35,28 @@
*/
public class LocalGregorianCalendar extends BaseCalendar {
+ private static final Era[] JAPANESE_ERAS = {
+ new Era("Meiji", "M", -3218832000000L, true),
+ new Era("Taisho", "T", -1812153600000L, true),
+ new Era("Showa", "S", -1357603200000L, true),
+ new Era("Heisei", "H", 600220800000L, true),
+ };
+
+ private static boolean isValidEra(Era newEra, Era[] eras) {
+ Era last = eras[eras.length - 1];
+ if (last.getSinceDate().getYear() >= newEra.getSinceDate().getYear()) {
+ return false;
+ }
+ // The new era name should be unique. Its abbr may not.
+ String newName = newEra.getName();
+ for (Era era : eras) {
+ if (era.getName().equals(newName)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
private String name;
private Era[] eras;
@@ -118,58 +136,70 @@
}
static LocalGregorianCalendar getLocalGregorianCalendar(String name) {
- Properties calendarProps;
- try {
- calendarProps = CalendarSystem.getCalendarProperties();
- } catch (IOException | IllegalArgumentException e) {
- throw new InternalError(e);
- }
- // Parse calendar.*.eras
- String props = calendarProps.getProperty("calendar." + name + ".eras");
- if (props == null) {
+ // Only the Japanese calendar is supported.
+ if (!"japanese".equals(name)) {
return null;
}
- List<Era> eras = new ArrayList<>();
- StringTokenizer eraTokens = new StringTokenizer(props, ";");
- while (eraTokens.hasMoreTokens()) {
- String items = eraTokens.nextToken().trim();
- StringTokenizer itemTokens = new StringTokenizer(items, ",");
- String eraName = null;
- boolean localTime = true;
- long since = 0;
- String abbr = null;
+
+ // Append an era to the predefined eras if it's given by the property.
+ String prop = AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction("jdk.calendar.japanese.supplemental.era"));
+ if (prop != null) {
+ Era era = parseEraEntry(prop);
+ if (era != null) {
+ if (isValidEra(era, JAPANESE_ERAS)) {
+ int length = JAPANESE_ERAS.length;
+ Era[] eras = new Era[length + 1];
+ System.arraycopy(JAPANESE_ERAS, 0, eras, 0, length);
+ eras[length] = era;
+ return new LocalGregorianCalendar(name, eras);
+ }
+ }
+ }
+ return new LocalGregorianCalendar(name, JAPANESE_ERAS);
+ }
- while (itemTokens.hasMoreTokens()) {
- String item = itemTokens.nextToken();
- int index = item.indexOf('=');
- // it must be in the key=value form.
- if (index == -1) {
+ private static Era parseEraEntry(String entry) {
+ String[] keyValuePairs = entry.split(",");
+ String eraName = null;
+ boolean localTime = true;
+ long since = 0;
+ String abbr = null;
+
+ for (String item : keyValuePairs) {
+ String[] keyvalue = item.split("=");
+ if (keyvalue.length != 2) {
+ return null;
+ }
+ String key = keyvalue[0].trim();
+ String value = keyvalue[1].trim();
+ switch (key) {
+ case "name":
+ eraName = value;
+ break;
+ case "since":
+ if (value.endsWith("u")) {
+ localTime = false;
+ value = value.substring(0, value.length() - 1);
+ }
+ try {
+ since = Long.parseLong(value);
+ } catch (NumberFormatException e) {
return null;
}
- String key = item.substring(0, index);
- String value = item.substring(index + 1);
- if ("name".equals(key)) {
- eraName = value;
- } else if ("since".equals(key)) {
- if (value.endsWith("u")) {
- localTime = false;
- since = Long.parseLong(value.substring(0, value.length() - 1));
- } else {
- since = Long.parseLong(value);
- }
- } else if ("abbr".equals(key)) {
- abbr = value;
- } else {
- throw new RuntimeException("Unknown key word: " + key);
- }
+ break;
+ case "abbr":
+ abbr = value;
+ break;
+ default:
+ return null;
}
- Era era = new Era(eraName, abbr, since, localTime);
- eras.add(era);
}
- Era[] eraArray = new Era[eras.size()];
- eras.toArray(eraArray);
-
- return new LocalGregorianCalendar(name, eraArray);
+ if (eraName == null || eraName.isEmpty()
+ || abbr == null || abbr.isEmpty()) {
+ return null;
+ }
+ return new Era(eraName, abbr, since, localTime);
}
private LocalGregorianCalendar(String name, Era[] eras) {
@@ -262,9 +292,8 @@
}
private boolean validateEra(Era era) {
- // Validate the era
- for (int i = 0; i < eras.length; i++) {
- if (era == eras[i]) {
+ for (Era era1 : eras) {
+ if (era == era1) {
return true;
}
}
@@ -333,6 +362,7 @@
}
if (i >= 0) {
ldate.setLocalEra(era);
+ @SuppressWarnings("null")
int y = ldate.getNormalizedYear() - era.getSinceDate().getYear() + 1;
ldate.setLocalYear(y);
} else {
--- a/jdk/src/share/lib/calendars.properties Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/src/share/lib/calendars.properties Mon Aug 11 11:00:20 2014 -0700
@@ -1,4 +1,4 @@
-# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2014, 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
@@ -23,37 +23,6 @@
#
#
-# Japanese imperial calendar
-#
-# Meiji since 1868-01-01 00:00:00 local time (Gregorian)
-# Taisho since 1912-07-30 00:00:00 local time (Gregorian)
-# Showa since 1926-12-25 00:00:00 local time (Gregorian)
-# Heisei since 1989-01-08 00:00:00 local time (Gregorian)
-calendar.japanese.type: LocalGregorianCalendar
-calendar.japanese.eras: \
- name=Meiji,abbr=M,since=-3218832000000; \
- name=Taisho,abbr=T,since=-1812153600000; \
- name=Showa,abbr=S,since=-1357603200000; \
- name=Heisei,abbr=H,since=600220800000
-
-#
-# Taiwanese calendar
-# Minguo since 1911-01-01 00:00:00 local time (Gregorian)
-calendar.taiwanese.type: LocalGregorianCalendar
-calendar.taiwanese.eras: \
- name=MinGuo,since=-1830384000000
-
-#
-# Thai Buddhist calendar
-# Buddhist Era since -542-01-01 00:00:00 local time (Gregorian)
-calendar.thai-buddhist.type: LocalGregorianCalendar
-calendar.thai-buddhist.eras: \
- name=BuddhistEra,abbr=B.E.,since=-79302585600000
-calendar.thai-buddhist.year-boundary: \
- day1=4-1,since=-79302585600000; \
- day1=1-1,since=-915148800000
-
-#
# Hijrah calendars
#
calendar.hijrah.Hijrah-umalqura: hijrah-config-umalqura.properties
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/lib/security/java.security Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,517 @@
+#
+# This is the "master security properties file".
+#
+# An alternate java.security properties file may be specified
+# from the command line via the system property
+#
+# -Djava.security.properties=<URL>
+#
+# This properties file appends to the master security properties file.
+# If both properties files specify values for the same key, the value
+# from the command-line properties file is selected, as it is the last
+# one loaded.
+#
+# Also, if you specify
+#
+# -Djava.security.properties==<URL> (2 equals),
+#
+# then that properties file completely overrides the master security
+# properties file.
+#
+# To disable the ability to specify an additional properties file from
+# the command line, set the key security.overridePropertiesFile
+# to false in the master security properties file. It is set to true
+# by default.
+
+# In this file, various security properties are set for use by
+# java.security classes. This is where users can statically register
+# Cryptography Package Providers ("providers" for short). The term
+# "provider" refers to a package or set of packages that supply a
+# concrete implementation of a subset of the cryptography aspects of
+# the Java Security API. A provider may, for example, implement one or
+# more digital signature algorithms or message digest algorithms.
+#
+# Each provider must implement a subclass of the Provider class.
+# To register a provider in this master security properties file,
+# specify the Provider subclass name and priority in the format
+#
+# security.provider.<n>=<className>
+#
+# This declares a provider, and specifies its preference
+# order n. The preference order is the order in which providers are
+# searched for requested algorithms (when no specific provider is
+# requested). The order is 1-based; 1 is the most preferred, followed
+# by 2, and so on.
+#
+# <className> must specify the subclass of the Provider class whose
+# constructor sets the values of various properties that are required
+# for the Java Security API to look up the algorithms or other
+# facilities implemented by the provider.
+#
+# There must be at least one provider specification in java.security.
+# There is a default provider that comes standard with the JDK. It
+# is called the "SUN" provider, and its Provider subclass
+# named Sun appears in the sun.security.provider package. Thus, the
+# "SUN" provider is registered via the following:
+#
+# security.provider.1=sun.security.provider.Sun
+#
+# (The number 1 is used for the default provider.)
+#
+# Note: Providers can be dynamically registered instead by calls to
+# either the addProvider or insertProviderAt method in the Security
+# class.
+
+#
+# List of providers and their preference orders (see above):
+#
+#ifdef solaris
+security.provider.tbd=com.oracle.security.ucrypto.UcryptoProvider ${java.home}/lib/security/ucrypto-solaris.cfg
+security.provider.tbd=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/sunpkcs11-solaris.cfg
+#endif
+security.provider.tbd=sun.security.provider.Sun
+security.provider.tbd=sun.security.rsa.SunRsaSign
+security.provider.tbd=sun.security.ec.SunEC
+security.provider.tbd=com.sun.net.ssl.internal.ssl.Provider
+security.provider.tbd=com.sun.crypto.provider.SunJCE
+security.provider.tbd=sun.security.jgss.SunProvider
+security.provider.tbd=com.sun.security.sasl.Provider
+security.provider.tbd=org.jcp.xml.dsig.internal.dom.XMLDSigRI
+security.provider.tbd=sun.security.smartcardio.SunPCSC
+#ifdef windows
+security.provider.tbd=sun.security.mscapi.SunMSCAPI
+#endif
+#ifdef macosx
+security.provider.tbd=apple.security.AppleProvider
+#endif
+
+#
+# Sun Provider SecureRandom seed source.
+#
+# Select the primary source of seed data for the "SHA1PRNG" and
+# "NativePRNG" SecureRandom implementations in the "Sun" provider.
+# (Other SecureRandom implementations might also use this property.)
+#
+# On Unix-like systems (for example, Solaris/Linux/MacOS), the
+# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
+# special device files such as file:/dev/random.
+#
+# On Windows systems, specifying the URLs "file:/dev/random" or
+# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
+# mechanism for SHA1PRNG.
+#
+# By default, an attempt is made to use the entropy gathering device
+# specified by the "securerandom.source" Security property. If an
+# exception occurs while accessing the specified URL:
+#
+# SHA1PRNG:
+# the traditional system/thread activity algorithm will be used.
+#
+# NativePRNG:
+# a default value of /dev/random will be used. If neither
+# are available, the implementation will be disabled.
+# "file" is the only currently supported protocol type.
+#
+# The entropy gathering device can also be specified with the System
+# property "java.security.egd". For example:
+#
+# % java -Djava.security.egd=file:/dev/random MainClass
+#
+# Specifying this System property will override the
+# "securerandom.source" Security property.
+#
+# In addition, if "file:/dev/random" or "file:/dev/urandom" is
+# specified, the "NativePRNG" implementation will be more preferred than
+# SHA1PRNG in the Sun provider.
+#
+securerandom.source=file:/dev/random
+
+#
+# A list of known strong SecureRandom implementations.
+#
+# To help guide applications in selecting a suitable strong
+# java.security.SecureRandom implementation, Java distributions should
+# indicate a list of known strong implementations using the property.
+#
+# This is a comma-separated list of algorithm and/or algorithm:provider
+# entries.
+#
+#ifdef windows
+securerandom.strongAlgorithms=Windows-PRNG:SunMSCAPI,SHA1PRNG:SUN
+#endif
+#ifndef windows
+securerandom.strongAlgorithms=NativePRNGBlocking:SUN
+#endif
+
+#
+# Class to instantiate as the javax.security.auth.login.Configuration
+# provider.
+#
+login.configuration.provider=sun.security.provider.ConfigFile
+
+#
+# Default login configuration file
+#
+#login.config.url.1=file:${user.home}/.java.login.config
+
+#
+# Class to instantiate as the system Policy. This is the name of the class
+# that will be used as the Policy object.
+#
+policy.provider=sun.security.provider.PolicyFile
+
+# The default is to have a single system-wide policy file,
+# and a policy file in the user's home directory.
+policy.url.1=file:${java.home}/lib/security/java.policy
+policy.url.2=file:${user.home}/.java.policy
+
+# whether or not we expand properties in the policy file
+# if this is set to false, properties (${...}) will not be expanded in policy
+# files.
+policy.expandProperties=true
+
+# whether or not we allow an extra policy to be passed on the command line
+# with -Djava.security.policy=somefile. Comment out this line to disable
+# this feature.
+policy.allowSystemProperty=true
+
+# whether or not we look into the IdentityScope for trusted Identities
+# when encountering a 1.1 signed JAR file. If the identity is found
+# and is trusted, we grant it AllPermission.
+policy.ignoreIdentityScope=false
+
+#
+# Default keystore type.
+#
+keystore.type=jks
+
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageAccess unless the
+# corresponding RuntimePermission ("accessClassInPackage."+package) has
+# been granted.
+package.access=sun.,\
+ com.sun.xml.internal.,\
+ com.sun.imageio.,\
+ com.sun.istack.internal.,\
+ com.sun.jmx.,\
+ com.sun.media.sound.,\
+ com.sun.naming.internal.,\
+ com.sun.proxy.,\
+ com.sun.corba.se.,\
+ com.sun.org.apache.bcel.internal.,\
+ com.sun.org.apache.regexp.internal.,\
+ com.sun.org.apache.xerces.internal.,\
+ com.sun.org.apache.xpath.internal.,\
+ com.sun.org.apache.xalan.internal.extensions.,\
+ com.sun.org.apache.xalan.internal.lib.,\
+ com.sun.org.apache.xalan.internal.res.,\
+ com.sun.org.apache.xalan.internal.templates.,\
+ com.sun.org.apache.xalan.internal.utils.,\
+ com.sun.org.apache.xalan.internal.xslt.,\
+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
+ com.sun.org.apache.xalan.internal.xsltc.util.,\
+ com.sun.org.apache.xml.internal.res.,\
+ com.sun.org.apache.xml.internal.security.,\
+ com.sun.org.apache.xml.internal.serializer.utils.,\
+ com.sun.org.apache.xml.internal.utils.,\
+ com.sun.org.glassfish.,\
+ com.oracle.xmlns.internal.,\
+ com.oracle.webservices.internal.,\
+ org.jcp.xml.dsig.internal.,\
+ jdk.internal.,\
+ jdk.nashorn.internal.,\
+ jdk.nashorn.tools.,\
+ com.sun.activation.registries.,\
+#ifdef macosx
+ apple.,\
+#endif
+
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageDefinition unless the
+# corresponding RuntimePermission ("defineClassInPackage."+package) has
+# been granted.
+#
+# by default, none of the class loaders supplied with the JDK call
+# checkPackageDefinition.
+#
+package.definition=sun.,\
+ com.sun.xml.internal.,\
+ com.sun.imageio.,\
+ com.sun.istack.internal.,\
+ com.sun.jmx.,\
+ com.sun.media.sound.,\
+ com.sun.naming.internal.,\
+ com.sun.proxy.,\
+ com.sun.corba.se.,\
+ com.sun.org.apache.bcel.internal.,\
+ com.sun.org.apache.regexp.internal.,\
+ com.sun.org.apache.xerces.internal.,\
+ com.sun.org.apache.xpath.internal.,\
+ com.sun.org.apache.xalan.internal.extensions.,\
+ com.sun.org.apache.xalan.internal.lib.,\
+ com.sun.org.apache.xalan.internal.res.,\
+ com.sun.org.apache.xalan.internal.templates.,\
+ com.sun.org.apache.xalan.internal.utils.,\
+ com.sun.org.apache.xalan.internal.xslt.,\
+ com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
+ com.sun.org.apache.xalan.internal.xsltc.compiler.,\
+ com.sun.org.apache.xalan.internal.xsltc.trax.,\
+ com.sun.org.apache.xalan.internal.xsltc.util.,\
+ com.sun.org.apache.xml.internal.res.,\
+ com.sun.org.apache.xml.internal.security.,\
+ com.sun.org.apache.xml.internal.serializer.utils.,\
+ com.sun.org.apache.xml.internal.utils.,\
+ com.sun.org.glassfish.,\
+ com.oracle.xmlns.internal.,\
+ com.oracle.webservices.internal.,\
+ org.jcp.xml.dsig.internal.,\
+ jdk.internal.,\
+ jdk.nashorn.internal.,\
+ jdk.nashorn.tools.,\
+ com.sun.activation.registries.,\
+#ifdef macosx
+ apple.,\
+#endif
+
+#
+# Determines whether this properties file can be appended to
+# or overridden on the command line via -Djava.security.properties
+#
+security.overridePropertiesFile=true
+
+#
+# Determines the default key and trust manager factory algorithms for
+# the javax.net.ssl package.
+#
+ssl.KeyManagerFactory.algorithm=SunX509
+ssl.TrustManagerFactory.algorithm=PKIX
+
+#
+# The Java-level namelookup cache policy for successful lookups:
+#
+# any negative value: caching forever
+# any positive value: the number of seconds to cache an address for
+# zero: do not cache
+#
+# default value is forever (FOREVER). For security reasons, this
+# caching is made forever when a security manager is set. When a security
+# manager is not set, the default behavior in this implementation
+# is to cache for 30 seconds.
+#
+# NOTE: setting this to anything other than the default value can have
+# serious security implications. Do not set it unless
+# you are sure you are not exposed to DNS spoofing attack.
+#
+#networkaddress.cache.ttl=-1
+
+# The Java-level namelookup cache policy for failed lookups:
+#
+# any negative value: cache forever
+# any positive value: the number of seconds to cache negative lookup results
+# zero: do not cache
+#
+# In some Microsoft Windows networking environments that employ
+# the WINS name service in addition to DNS, name service lookups
+# that fail may take a noticeably long time to return (approx. 5 seconds).
+# For this reason the default caching policy is to maintain these
+# results for 10 seconds.
+#
+#
+networkaddress.cache.negative.ttl=10
+
+#
+# Properties to configure OCSP for certificate revocation checking
+#
+
+# Enable OCSP
+#
+# By default, OCSP is not used for certificate revocation checking.
+# This property enables the use of OCSP when set to the value "true".
+#
+# NOTE: SocketPermission is required to connect to an OCSP responder.
+#
+# Example,
+# ocsp.enable=true
+
+#
+# Location of the OCSP responder
+#
+# By default, the location of the OCSP responder is determined implicitly
+# from the certificate being validated. This property explicitly specifies
+# the location of the OCSP responder. The property is used when the
+# Authority Information Access extension (defined in RFC 3280) is absent
+# from the certificate or when it requires overriding.
+#
+# Example,
+# ocsp.responderURL=http://ocsp.example.net:80
+
+#
+# Subject name of the OCSP responder's certificate
+#
+# By default, the certificate of the OCSP responder is that of the issuer
+# of the certificate being validated. This property identifies the certificate
+# of the OCSP responder when the default does not apply. Its value is a string
+# distinguished name (defined in RFC 2253) which identifies a certificate in
+# the set of certificates supplied during cert path validation. In cases where
+# the subject name alone is not sufficient to uniquely identify the certificate
+# then both the "ocsp.responderCertIssuerName" and
+# "ocsp.responderCertSerialNumber" properties must be used instead. When this
+# property is set then those two properties are ignored.
+#
+# Example,
+# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"
+
+#
+# Issuer name of the OCSP responder's certificate
+#
+# By default, the certificate of the OCSP responder is that of the issuer
+# of the certificate being validated. This property identifies the certificate
+# of the OCSP responder when the default does not apply. Its value is a string
+# distinguished name (defined in RFC 2253) which identifies a certificate in
+# the set of certificates supplied during cert path validation. When this
+# property is set then the "ocsp.responderCertSerialNumber" property must also
+# be set. When the "ocsp.responderCertSubjectName" property is set then this
+# property is ignored.
+#
+# Example,
+# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
+
+#
+# Serial number of the OCSP responder's certificate
+#
+# By default, the certificate of the OCSP responder is that of the issuer
+# of the certificate being validated. This property identifies the certificate
+# of the OCSP responder when the default does not apply. Its value is a string
+# of hexadecimal digits (colon or space separators may be present) which
+# identifies a certificate in the set of certificates supplied during cert path
+# validation. When this property is set then the "ocsp.responderCertIssuerName"
+# property must also be set. When the "ocsp.responderCertSubjectName" property
+# is set then this property is ignored.
+#
+# Example,
+# ocsp.responderCertSerialNumber=2A:FF:00
+
+#
+# Policy for failed Kerberos KDC lookups:
+#
+# When a KDC is unavailable (network error, service failure, etc), it is
+# put inside a blacklist and accessed less often for future requests. The
+# value (case-insensitive) for this policy can be:
+#
+# tryLast
+# KDCs in the blacklist are always tried after those not on the list.
+#
+# tryLess[:max_retries,timeout]
+# KDCs in the blacklist are still tried by their order in the configuration,
+# but with smaller max_retries and timeout values. max_retries and timeout
+# are optional numerical parameters (default 1 and 5000, which means once
+# and 5 seconds). Please notes that if any of the values defined here is
+# more than what is defined in krb5.conf, it will be ignored.
+#
+# Whenever a KDC is detected as available, it is removed from the blacklist.
+# The blacklist is reset when krb5.conf is reloaded. You can add
+# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is
+# reloaded whenever a JAAS authentication is attempted.
+#
+# Example,
+# krb5.kdc.bad.policy = tryLast
+# krb5.kdc.bad.policy = tryLess:2,2000
+krb5.kdc.bad.policy = tryLast
+
+# Algorithm restrictions for certification path (CertPath) processing
+#
+# In some environments, certain algorithms or key lengths may be undesirable
+# for certification path building and validation. For example, "MD2" is
+# generally no longer considered to be a secure hash algorithm. This section
+# describes the mechanism for disabling algorithms based on algorithm name
+# and/or key length. This includes algorithms used in certificates, as well
+# as revocation information such as CRLs and signed OCSP Responses.
+#
+# The syntax of the disabled algorithm string is described as this Java
+# BNF-style:
+# DisabledAlgorithms:
+# " DisabledAlgorithm { , DisabledAlgorithm } "
+#
+# DisabledAlgorithm:
+# AlgorithmName [Constraint]
+#
+# AlgorithmName:
+# (see below)
+#
+# Constraint:
+# KeySizeConstraint
+#
+# KeySizeConstraint:
+# keySize Operator DecimalInteger
+#
+# Operator:
+# <= | < | == | != | >= | >
+#
+# DecimalInteger:
+# DecimalDigits
+#
+# DecimalDigits:
+# DecimalDigit {DecimalDigit}
+#
+# DecimalDigit: one of
+# 1 2 3 4 5 6 7 8 9 0
+#
+# The "AlgorithmName" is the standard algorithm name of the disabled
+# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
+# Documentation" for information about Standard Algorithm Names. Matching
+# is performed using a case-insensitive sub-element matching rule. (For
+# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
+# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a
+# sub-element of the certificate algorithm name, the algorithm will be
+# rejected during certification path building and validation. For example,
+# the assertion algorithm name "DSA" will disable all certificate algorithms
+# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion
+# will not disable algorithms related to "ECDSA".
+#
+# A "Constraint" provides further guidance for the algorithm being specified.
+# The "KeySizeConstraint" requires a key of a valid size range if the
+# "AlgorithmName" is of a key algorithm. The "DecimalInteger" indicates the
+# key size specified in number of bits. For example, "RSA keySize <= 1024"
+# indicates that any RSA key with key size less than or equal to 1024 bits
+# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
+# that any RSA key with key size less than 1024 or greater than 2048 should
+# be disabled. Note that the "KeySizeConstraint" only makes sense to key
+# algorithms.
+#
+# Note: This property is currently used by Oracle's PKIX implementation. It
+# is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
+#
+#
+jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
+
+# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
+# (SSL/TLS) processing
+#
+# In some environments, certain algorithms or key lengths may be undesirable
+# when using SSL/TLS. This section describes the mechanism for disabling
+# algorithms during SSL/TLS security parameters negotiation, including cipher
+# suites selection, peer authentication and key exchange mechanisms.
+#
+# For PKI-based peer authentication and key exchange mechanisms, this list
+# of disabled algorithms will also be checked during certification path
+# building and validation, including algorithms used in certificates, as
+# well as revocation information such as CRLs and signed OCSP Responses.
+# This is in addition to the jdk.certpath.disabledAlgorithms property above.
+#
+# See the specification of "jdk.certpath.disabledAlgorithms" for the
+# syntax of the disabled algorithm string.
+#
+# Note: This property is currently used by Oracle's JSSE implementation.
+# It is not guaranteed to be examined and used by other implementations.
+#
+# Example:
+# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
--- a/jdk/src/share/lib/security/java.security-aix Sun Aug 10 19:39:01 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,496 +0,0 @@
-#
-# This is the "master security properties file".
-#
-# An alternate java.security properties file may be specified
-# from the command line via the system property
-#
-# -Djava.security.properties=<URL>
-#
-# This properties file appends to the master security properties file.
-# If both properties files specify values for the same key, the value
-# from the command-line properties file is selected, as it is the last
-# one loaded.
-#
-# Also, if you specify
-#
-# -Djava.security.properties==<URL> (2 equals),
-#
-# then that properties file completely overrides the master security
-# properties file.
-#
-# To disable the ability to specify an additional properties file from
-# the command line, set the key security.overridePropertiesFile
-# to false in the master security properties file. It is set to true
-# by default.
-
-# In this file, various security properties are set for use by
-# java.security classes. This is where users can statically register
-# Cryptography Package Providers ("providers" for short). The term
-# "provider" refers to a package or set of packages that supply a
-# concrete implementation of a subset of the cryptography aspects of
-# the Java Security API. A provider may, for example, implement one or
-# more digital signature algorithms or message digest algorithms.
-#
-# Each provider must implement a subclass of the Provider class.
-# To register a provider in this master security properties file,
-# specify the Provider subclass name and priority in the format
-#
-# security.provider.<n>=<className>
-#
-# This declares a provider, and specifies its preference
-# order n. The preference order is the order in which providers are
-# searched for requested algorithms (when no specific provider is
-# requested). The order is 1-based; 1 is the most preferred, followed
-# by 2, and so on.
-#
-# <className> must specify the subclass of the Provider class whose
-# constructor sets the values of various properties that are required
-# for the Java Security API to look up the algorithms or other
-# facilities implemented by the provider.
-#
-# There must be at least one provider specification in java.security.
-# There is a default provider that comes standard with the JDK. It
-# is called the "SUN" provider, and its Provider subclass
-# named Sun appears in the sun.security.provider package. Thus, the
-# "SUN" provider is registered via the following:
-#
-# security.provider.1=sun.security.provider.Sun
-#
-# (The number 1 is used for the default provider.)
-#
-# Note: Providers can be dynamically registered instead by calls to
-# either the addProvider or insertProviderAt method in the Security
-# class.
-
-#
-# List of providers and their preference orders (see above):
-#
-security.provider.1=sun.security.provider.Sun
-security.provider.2=sun.security.rsa.SunRsaSign
-security.provider.3=sun.security.ec.SunEC
-security.provider.4=com.sun.net.ssl.internal.ssl.Provider
-security.provider.5=com.sun.crypto.provider.SunJCE
-security.provider.6=sun.security.jgss.SunProvider
-security.provider.7=com.sun.security.sasl.Provider
-security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
-security.provider.9=sun.security.smartcardio.SunPCSC
-
-#
-# Sun Provider SecureRandom seed source.
-#
-# Select the primary source of seed data for the "SHA1PRNG" and
-# "NativePRNG" SecureRandom implementations in the "Sun" provider.
-# (Other SecureRandom implementations might also use this property.)
-#
-# On Unix-like systems (for example, Solaris/Linux/MacOS), the
-# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
-# special device files such as file:/dev/random.
-#
-# On Windows systems, specifying the URLs "file:/dev/random" or
-# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
-# mechanism for SHA1PRNG.
-#
-# By default, an attempt is made to use the entropy gathering device
-# specified by the "securerandom.source" Security property. If an
-# exception occurs while accessing the specified URL:
-#
-# SHA1PRNG:
-# the traditional system/thread activity algorithm will be used.
-#
-# NativePRNG:
-# a default value of /dev/random will be used. If neither
-# are available, the implementation will be disabled.
-# "file" is the only currently supported protocol type.
-#
-# The entropy gathering device can also be specified with the System
-# property "java.security.egd". For example:
-#
-# % java -Djava.security.egd=file:/dev/random MainClass
-#
-# Specifying this System property will override the
-# "securerandom.source" Security property.
-#
-# In addition, if "file:/dev/random" or "file:/dev/urandom" is
-# specified, the "NativePRNG" implementation will be more preferred than
-# SHA1PRNG in the Sun provider.
-#
-securerandom.source=file:/dev/random
-
-#
-# A list of known strong SecureRandom implementations.
-#
-# To help guide applications in selecting a suitable strong
-# java.security.SecureRandom implementation, Java distributions should
-# indicate a list of known strong implementations using the property.
-#
-# This is a comma-separated list of algorithm and/or algorithm:provider
-# entries.
-#
-securerandom.strongAlgorithms=NativePRNGBlocking:SUN
-
-#
-# Class to instantiate as the javax.security.auth.login.Configuration
-# provider.
-#
-login.configuration.provider=sun.security.provider.ConfigFile
-
-#
-# Default login configuration file
-#
-#login.config.url.1=file:${user.home}/.java.login.config
-
-#
-# Class to instantiate as the system Policy. This is the name of the class
-# that will be used as the Policy object.
-#
-policy.provider=sun.security.provider.PolicyFile
-
-# The default is to have a single system-wide policy file,
-# and a policy file in the user's home directory.
-policy.url.1=file:${java.home}/lib/security/java.policy
-policy.url.2=file:${user.home}/.java.policy
-
-# whether or not we expand properties in the policy file
-# if this is set to false, properties (${...}) will not be expanded in policy
-# files.
-policy.expandProperties=true
-
-# whether or not we allow an extra policy to be passed on the command line
-# with -Djava.security.policy=somefile. Comment out this line to disable
-# this feature.
-policy.allowSystemProperty=true
-
-# whether or not we look into the IdentityScope for trusted Identities
-# when encountering a 1.1 signed JAR file. If the identity is found
-# and is trusted, we grant it AllPermission.
-policy.ignoreIdentityScope=false
-
-#
-# Default keystore type.
-#
-keystore.type=jks
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageAccess unless the
-# corresponding RuntimePermission ("accessClassInPackage."+package) has
-# been granted.
-package.access=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.
-
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageDefinition unless the
-# corresponding RuntimePermission ("defineClassInPackage."+package) has
-# been granted.
-#
-# by default, none of the class loaders supplied with the JDK call
-# checkPackageDefinition.
-#
-package.definition=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.
-
-
-#
-# Determines whether this properties file can be appended to
-# or overridden on the command line via -Djava.security.properties
-#
-security.overridePropertiesFile=true
-
-#
-# Determines the default key and trust manager factory algorithms for
-# the javax.net.ssl package.
-#
-ssl.KeyManagerFactory.algorithm=SunX509
-ssl.TrustManagerFactory.algorithm=PKIX
-
-#
-# The Java-level namelookup cache policy for successful lookups:
-#
-# any negative value: caching forever
-# any positive value: the number of seconds to cache an address for
-# zero: do not cache
-#
-# default value is forever (FOREVER). For security reasons, this
-# caching is made forever when a security manager is set. When a security
-# manager is not set, the default behavior in this implementation
-# is to cache for 30 seconds.
-#
-# NOTE: setting this to anything other than the default value can have
-# serious security implications. Do not set it unless
-# you are sure you are not exposed to DNS spoofing attack.
-#
-#networkaddress.cache.ttl=-1
-
-# The Java-level namelookup cache policy for failed lookups:
-#
-# any negative value: cache forever
-# any positive value: the number of seconds to cache negative lookup results
-# zero: do not cache
-#
-# In some Microsoft Windows networking environments that employ
-# the WINS name service in addition to DNS, name service lookups
-# that fail may take a noticeably long time to return (approx. 5 seconds).
-# For this reason the default caching policy is to maintain these
-# results for 10 seconds.
-#
-#
-networkaddress.cache.negative.ttl=10
-
-#
-# Properties to configure OCSP for certificate revocation checking
-#
-
-# Enable OCSP
-#
-# By default, OCSP is not used for certificate revocation checking.
-# This property enables the use of OCSP when set to the value "true".
-#
-# NOTE: SocketPermission is required to connect to an OCSP responder.
-#
-# Example,
-# ocsp.enable=true
-
-#
-# Location of the OCSP responder
-#
-# By default, the location of the OCSP responder is determined implicitly
-# from the certificate being validated. This property explicitly specifies
-# the location of the OCSP responder. The property is used when the
-# Authority Information Access extension (defined in RFC 3280) is absent
-# from the certificate or when it requires overriding.
-#
-# Example,
-# ocsp.responderURL=http://ocsp.example.net:80
-
-#
-# Subject name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. In cases where
-# the subject name alone is not sufficient to uniquely identify the certificate
-# then both the "ocsp.responderCertIssuerName" and
-# "ocsp.responderCertSerialNumber" properties must be used instead. When this
-# property is set then those two properties are ignored.
-#
-# Example,
-# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"
-
-#
-# Issuer name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. When this
-# property is set then the "ocsp.responderCertSerialNumber" property must also
-# be set. When the "ocsp.responderCertSubjectName" property is set then this
-# property is ignored.
-#
-# Example,
-# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
-
-#
-# Serial number of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# of hexadecimal digits (colon or space separators may be present) which
-# identifies a certificate in the set of certificates supplied during cert path
-# validation. When this property is set then the "ocsp.responderCertIssuerName"
-# property must also be set. When the "ocsp.responderCertSubjectName" property
-# is set then this property is ignored.
-#
-# Example,
-# ocsp.responderCertSerialNumber=2A:FF:00
-
-#
-# Policy for failed Kerberos KDC lookups:
-#
-# When a KDC is unavailable (network error, service failure, etc), it is
-# put inside a blacklist and accessed less often for future requests. The
-# value (case-insensitive) for this policy can be:
-#
-# tryLast
-# KDCs in the blacklist are always tried after those not on the list.
-#
-# tryLess[:max_retries,timeout]
-# KDCs in the blacklist are still tried by their order in the configuration,
-# but with smaller max_retries and timeout values. max_retries and timeout
-# are optional numerical parameters (default 1 and 5000, which means once
-# and 5 seconds). Please notes that if any of the values defined here is
-# more than what is defined in krb5.conf, it will be ignored.
-#
-# Whenever a KDC is detected as available, it is removed from the blacklist.
-# The blacklist is reset when krb5.conf is reloaded. You can add
-# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is
-# reloaded whenever a JAAS authentication is attempted.
-#
-# Example,
-# krb5.kdc.bad.policy = tryLast
-# krb5.kdc.bad.policy = tryLess:2,2000
-krb5.kdc.bad.policy = tryLast
-
-# Algorithm restrictions for certification path (CertPath) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# for certification path building and validation. For example, "MD2" is
-# generally no longer considered to be a secure hash algorithm. This section
-# describes the mechanism for disabling algorithms based on algorithm name
-# and/or key length. This includes algorithms used in certificates, as well
-# as revocation information such as CRLs and signed OCSP Responses.
-#
-# The syntax of the disabled algorithm string is described as this Java
-# BNF-style:
-# DisabledAlgorithms:
-# " DisabledAlgorithm { , DisabledAlgorithm } "
-#
-# DisabledAlgorithm:
-# AlgorithmName [Constraint]
-#
-# AlgorithmName:
-# (see below)
-#
-# Constraint:
-# KeySizeConstraint
-#
-# KeySizeConstraint:
-# keySize Operator DecimalInteger
-#
-# Operator:
-# <= | < | == | != | >= | >
-#
-# DecimalInteger:
-# DecimalDigits
-#
-# DecimalDigits:
-# DecimalDigit {DecimalDigit}
-#
-# DecimalDigit: one of
-# 1 2 3 4 5 6 7 8 9 0
-#
-# The "AlgorithmName" is the standard algorithm name of the disabled
-# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
-# Documentation" for information about Standard Algorithm Names. Matching
-# is performed using a case-insensitive sub-element matching rule. (For
-# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
-# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a
-# sub-element of the certificate algorithm name, the algorithm will be
-# rejected during certification path building and validation. For example,
-# the assertion algorithm name "DSA" will disable all certificate algorithms
-# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion
-# will not disable algorithms related to "ECDSA".
-#
-# A "Constraint" provides further guidance for the algorithm being specified.
-# The "KeySizeConstraint" requires a key of a valid size range if the
-# "AlgorithmName" is of a key algorithm. The "DecimalInteger" indicates the
-# key size specified in number of bits. For example, "RSA keySize <= 1024"
-# indicates that any RSA key with key size less than or equal to 1024 bits
-# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
-# that any RSA key with key size less than 1024 or greater than 2048 should
-# be disabled. Note that the "KeySizeConstraint" only makes sense to key
-# algorithms.
-#
-# Note: This property is currently used by Oracle's PKIX implementation. It
-# is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
-#
-#
-jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
-
-# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
-# (SSL/TLS) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# when using SSL/TLS. This section describes the mechanism for disabling
-# algorithms during SSL/TLS security parameters negotiation, including cipher
-# suites selection, peer authentication and key exchange mechanisms.
-#
-# For PKI-based peer authentication and key exchange mechanisms, this list
-# of disabled algorithms will also be checked during certification path
-# building and validation, including algorithms used in certificates, as
-# well as revocation information such as CRLs and signed OCSP Responses.
-# This is in addition to the jdk.certpath.disabledAlgorithms property above.
-#
-# See the specification of "jdk.certpath.disabledAlgorithms" for the
-# syntax of the disabled algorithm string.
-#
-# Note: This property is currently used by Oracle's JSSE implementation.
-# It is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
--- a/jdk/src/share/lib/security/java.security-linux Sun Aug 10 19:39:01 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,496 +0,0 @@
-#
-# This is the "master security properties file".
-#
-# An alternate java.security properties file may be specified
-# from the command line via the system property
-#
-# -Djava.security.properties=<URL>
-#
-# This properties file appends to the master security properties file.
-# If both properties files specify values for the same key, the value
-# from the command-line properties file is selected, as it is the last
-# one loaded.
-#
-# Also, if you specify
-#
-# -Djava.security.properties==<URL> (2 equals),
-#
-# then that properties file completely overrides the master security
-# properties file.
-#
-# To disable the ability to specify an additional properties file from
-# the command line, set the key security.overridePropertiesFile
-# to false in the master security properties file. It is set to true
-# by default.
-
-# In this file, various security properties are set for use by
-# java.security classes. This is where users can statically register
-# Cryptography Package Providers ("providers" for short). The term
-# "provider" refers to a package or set of packages that supply a
-# concrete implementation of a subset of the cryptography aspects of
-# the Java Security API. A provider may, for example, implement one or
-# more digital signature algorithms or message digest algorithms.
-#
-# Each provider must implement a subclass of the Provider class.
-# To register a provider in this master security properties file,
-# specify the Provider subclass name and priority in the format
-#
-# security.provider.<n>=<className>
-#
-# This declares a provider, and specifies its preference
-# order n. The preference order is the order in which providers are
-# searched for requested algorithms (when no specific provider is
-# requested). The order is 1-based; 1 is the most preferred, followed
-# by 2, and so on.
-#
-# <className> must specify the subclass of the Provider class whose
-# constructor sets the values of various properties that are required
-# for the Java Security API to look up the algorithms or other
-# facilities implemented by the provider.
-#
-# There must be at least one provider specification in java.security.
-# There is a default provider that comes standard with the JDK. It
-# is called the "SUN" provider, and its Provider subclass
-# named Sun appears in the sun.security.provider package. Thus, the
-# "SUN" provider is registered via the following:
-#
-# security.provider.1=sun.security.provider.Sun
-#
-# (The number 1 is used for the default provider.)
-#
-# Note: Providers can be dynamically registered instead by calls to
-# either the addProvider or insertProviderAt method in the Security
-# class.
-
-#
-# List of providers and their preference orders (see above):
-#
-security.provider.1=sun.security.provider.Sun
-security.provider.2=sun.security.rsa.SunRsaSign
-security.provider.3=sun.security.ec.SunEC
-security.provider.4=com.sun.net.ssl.internal.ssl.Provider
-security.provider.5=com.sun.crypto.provider.SunJCE
-security.provider.6=sun.security.jgss.SunProvider
-security.provider.7=com.sun.security.sasl.Provider
-security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
-security.provider.9=sun.security.smartcardio.SunPCSC
-
-#
-# Sun Provider SecureRandom seed source.
-#
-# Select the primary source of seed data for the "SHA1PRNG" and
-# "NativePRNG" SecureRandom implementations in the "Sun" provider.
-# (Other SecureRandom implementations might also use this property.)
-#
-# On Unix-like systems (for example, Solaris/Linux/MacOS), the
-# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
-# special device files such as file:/dev/random.
-#
-# On Windows systems, specifying the URLs "file:/dev/random" or
-# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
-# mechanism for SHA1PRNG.
-#
-# By default, an attempt is made to use the entropy gathering device
-# specified by the "securerandom.source" Security property. If an
-# exception occurs while accessing the specified URL:
-#
-# SHA1PRNG:
-# the traditional system/thread activity algorithm will be used.
-#
-# NativePRNG:
-# a default value of /dev/random will be used. If neither
-# are available, the implementation will be disabled.
-# "file" is the only currently supported protocol type.
-#
-# The entropy gathering device can also be specified with the System
-# property "java.security.egd". For example:
-#
-# % java -Djava.security.egd=file:/dev/random MainClass
-#
-# Specifying this System property will override the
-# "securerandom.source" Security property.
-#
-# In addition, if "file:/dev/random" or "file:/dev/urandom" is
-# specified, the "NativePRNG" implementation will be more preferred than
-# SHA1PRNG in the Sun provider.
-#
-securerandom.source=file:/dev/random
-
-#
-# A list of known strong SecureRandom implementations.
-#
-# To help guide applications in selecting a suitable strong
-# java.security.SecureRandom implementation, Java distributions should
-# indicate a list of known strong implementations using the property.
-#
-# This is a comma-separated list of algorithm and/or algorithm:provider
-# entries.
-#
-securerandom.strongAlgorithms=NativePRNGBlocking:SUN
-
-#
-# Class to instantiate as the javax.security.auth.login.Configuration
-# provider.
-#
-login.configuration.provider=sun.security.provider.ConfigFile
-
-#
-# Default login configuration file
-#
-#login.config.url.1=file:${user.home}/.java.login.config
-
-#
-# Class to instantiate as the system Policy. This is the name of the class
-# that will be used as the Policy object.
-#
-policy.provider=sun.security.provider.PolicyFile
-
-# The default is to have a single system-wide policy file,
-# and a policy file in the user's home directory.
-policy.url.1=file:${java.home}/lib/security/java.policy
-policy.url.2=file:${user.home}/.java.policy
-
-# whether or not we expand properties in the policy file
-# if this is set to false, properties (${...}) will not be expanded in policy
-# files.
-policy.expandProperties=true
-
-# whether or not we allow an extra policy to be passed on the command line
-# with -Djava.security.policy=somefile. Comment out this line to disable
-# this feature.
-policy.allowSystemProperty=true
-
-# whether or not we look into the IdentityScope for trusted Identities
-# when encountering a 1.1 signed JAR file. If the identity is found
-# and is trusted, we grant it AllPermission.
-policy.ignoreIdentityScope=false
-
-#
-# Default keystore type.
-#
-keystore.type=jks
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageAccess unless the
-# corresponding RuntimePermission ("accessClassInPackage."+package) has
-# been granted.
-package.access=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.,\
- com.sun.activation.registries.
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageDefinition unless the
-# corresponding RuntimePermission ("defineClassInPackage."+package) has
-# been granted.
-#
-# by default, none of the class loaders supplied with the JDK call
-# checkPackageDefinition.
-#
-package.definition=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.,\
- com.sun.activation.registries.
-
-#
-# Determines whether this properties file can be appended to
-# or overridden on the command line via -Djava.security.properties
-#
-security.overridePropertiesFile=true
-
-#
-# Determines the default key and trust manager factory algorithms for
-# the javax.net.ssl package.
-#
-ssl.KeyManagerFactory.algorithm=SunX509
-ssl.TrustManagerFactory.algorithm=PKIX
-
-#
-# The Java-level namelookup cache policy for successful lookups:
-#
-# any negative value: caching forever
-# any positive value: the number of seconds to cache an address for
-# zero: do not cache
-#
-# default value is forever (FOREVER). For security reasons, this
-# caching is made forever when a security manager is set. When a security
-# manager is not set, the default behavior in this implementation
-# is to cache for 30 seconds.
-#
-# NOTE: setting this to anything other than the default value can have
-# serious security implications. Do not set it unless
-# you are sure you are not exposed to DNS spoofing attack.
-#
-#networkaddress.cache.ttl=-1
-
-# The Java-level namelookup cache policy for failed lookups:
-#
-# any negative value: cache forever
-# any positive value: the number of seconds to cache negative lookup results
-# zero: do not cache
-#
-# In some Microsoft Windows networking environments that employ
-# the WINS name service in addition to DNS, name service lookups
-# that fail may take a noticeably long time to return (approx. 5 seconds).
-# For this reason the default caching policy is to maintain these
-# results for 10 seconds.
-#
-#
-networkaddress.cache.negative.ttl=10
-
-#
-# Properties to configure OCSP for certificate revocation checking
-#
-
-# Enable OCSP
-#
-# By default, OCSP is not used for certificate revocation checking.
-# This property enables the use of OCSP when set to the value "true".
-#
-# NOTE: SocketPermission is required to connect to an OCSP responder.
-#
-# Example,
-# ocsp.enable=true
-
-#
-# Location of the OCSP responder
-#
-# By default, the location of the OCSP responder is determined implicitly
-# from the certificate being validated. This property explicitly specifies
-# the location of the OCSP responder. The property is used when the
-# Authority Information Access extension (defined in RFC 3280) is absent
-# from the certificate or when it requires overriding.
-#
-# Example,
-# ocsp.responderURL=http://ocsp.example.net:80
-
-#
-# Subject name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. In cases where
-# the subject name alone is not sufficient to uniquely identify the certificate
-# then both the "ocsp.responderCertIssuerName" and
-# "ocsp.responderCertSerialNumber" properties must be used instead. When this
-# property is set then those two properties are ignored.
-#
-# Example,
-# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"
-
-#
-# Issuer name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. When this
-# property is set then the "ocsp.responderCertSerialNumber" property must also
-# be set. When the "ocsp.responderCertSubjectName" property is set then this
-# property is ignored.
-#
-# Example,
-# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
-
-#
-# Serial number of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# of hexadecimal digits (colon or space separators may be present) which
-# identifies a certificate in the set of certificates supplied during cert path
-# validation. When this property is set then the "ocsp.responderCertIssuerName"
-# property must also be set. When the "ocsp.responderCertSubjectName" property
-# is set then this property is ignored.
-#
-# Example,
-# ocsp.responderCertSerialNumber=2A:FF:00
-
-#
-# Policy for failed Kerberos KDC lookups:
-#
-# When a KDC is unavailable (network error, service failure, etc), it is
-# put inside a blacklist and accessed less often for future requests. The
-# value (case-insensitive) for this policy can be:
-#
-# tryLast
-# KDCs in the blacklist are always tried after those not on the list.
-#
-# tryLess[:max_retries,timeout]
-# KDCs in the blacklist are still tried by their order in the configuration,
-# but with smaller max_retries and timeout values. max_retries and timeout
-# are optional numerical parameters (default 1 and 5000, which means once
-# and 5 seconds). Please notes that if any of the values defined here is
-# more than what is defined in krb5.conf, it will be ignored.
-#
-# Whenever a KDC is detected as available, it is removed from the blacklist.
-# The blacklist is reset when krb5.conf is reloaded. You can add
-# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is
-# reloaded whenever a JAAS authentication is attempted.
-#
-# Example,
-# krb5.kdc.bad.policy = tryLast
-# krb5.kdc.bad.policy = tryLess:2,2000
-krb5.kdc.bad.policy = tryLast
-
-# Algorithm restrictions for certification path (CertPath) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# for certification path building and validation. For example, "MD2" is
-# generally no longer considered to be a secure hash algorithm. This section
-# describes the mechanism for disabling algorithms based on algorithm name
-# and/or key length. This includes algorithms used in certificates, as well
-# as revocation information such as CRLs and signed OCSP Responses.
-#
-# The syntax of the disabled algorithm string is described as this Java
-# BNF-style:
-# DisabledAlgorithms:
-# " DisabledAlgorithm { , DisabledAlgorithm } "
-#
-# DisabledAlgorithm:
-# AlgorithmName [Constraint]
-#
-# AlgorithmName:
-# (see below)
-#
-# Constraint:
-# KeySizeConstraint
-#
-# KeySizeConstraint:
-# keySize Operator DecimalInteger
-#
-# Operator:
-# <= | < | == | != | >= | >
-#
-# DecimalInteger:
-# DecimalDigits
-#
-# DecimalDigits:
-# DecimalDigit {DecimalDigit}
-#
-# DecimalDigit: one of
-# 1 2 3 4 5 6 7 8 9 0
-#
-# The "AlgorithmName" is the standard algorithm name of the disabled
-# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
-# Documentation" for information about Standard Algorithm Names. Matching
-# is performed using a case-insensitive sub-element matching rule. (For
-# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
-# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a
-# sub-element of the certificate algorithm name, the algorithm will be
-# rejected during certification path building and validation. For example,
-# the assertion algorithm name "DSA" will disable all certificate algorithms
-# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion
-# will not disable algorithms related to "ECDSA".
-#
-# A "Constraint" provides further guidance for the algorithm being specified.
-# The "KeySizeConstraint" requires a key of a valid size range if the
-# "AlgorithmName" is of a key algorithm. The "DecimalInteger" indicates the
-# key size specified in number of bits. For example, "RSA keySize <= 1024"
-# indicates that any RSA key with key size less than or equal to 1024 bits
-# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
-# that any RSA key with key size less than 1024 or greater than 2048 should
-# be disabled. Note that the "KeySizeConstraint" only makes sense to key
-# algorithms.
-#
-# Note: This property is currently used by Oracle's PKIX implementation. It
-# is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
-#
-#
-jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
-
-# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
-# (SSL/TLS) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# when using SSL/TLS. This section describes the mechanism for disabling
-# algorithms during SSL/TLS security parameters negotiation, including cipher
-# suites selection, peer authentication and key exchange mechanisms.
-#
-# For PKI-based peer authentication and key exchange mechanisms, this list
-# of disabled algorithms will also be checked during certification path
-# building and validation, including algorithms used in certificates, as
-# well as revocation information such as CRLs and signed OCSP Responses.
-# This is in addition to the jdk.certpath.disabledAlgorithms property above.
-#
-# See the specification of "jdk.certpath.disabledAlgorithms" for the
-# syntax of the disabled algorithm string.
-#
-# Note: This property is currently used by Oracle's JSSE implementation.
-# It is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
--- a/jdk/src/share/lib/security/java.security-macosx Sun Aug 10 19:39:01 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,499 +0,0 @@
-#
-# This is the "master security properties file".
-#
-# An alternate java.security properties file may be specified
-# from the command line via the system property
-#
-# -Djava.security.properties=<URL>
-#
-# This properties file appends to the master security properties file.
-# If both properties files specify values for the same key, the value
-# from the command-line properties file is selected, as it is the last
-# one loaded.
-#
-# Also, if you specify
-#
-# -Djava.security.properties==<URL> (2 equals),
-#
-# then that properties file completely overrides the master security
-# properties file.
-#
-# To disable the ability to specify an additional properties file from
-# the command line, set the key security.overridePropertiesFile
-# to false in the master security properties file. It is set to true
-# by default.
-
-# In this file, various security properties are set for use by
-# java.security classes. This is where users can statically register
-# Cryptography Package Providers ("providers" for short). The term
-# "provider" refers to a package or set of packages that supply a
-# concrete implementation of a subset of the cryptography aspects of
-# the Java Security API. A provider may, for example, implement one or
-# more digital signature algorithms or message digest algorithms.
-#
-# Each provider must implement a subclass of the Provider class.
-# To register a provider in this master security properties file,
-# specify the Provider subclass name and priority in the format
-#
-# security.provider.<n>=<className>
-#
-# This declares a provider, and specifies its preference
-# order n. The preference order is the order in which providers are
-# searched for requested algorithms (when no specific provider is
-# requested). The order is 1-based; 1 is the most preferred, followed
-# by 2, and so on.
-#
-# <className> must specify the subclass of the Provider class whose
-# constructor sets the values of various properties that are required
-# for the Java Security API to look up the algorithms or other
-# facilities implemented by the provider.
-#
-# There must be at least one provider specification in java.security.
-# There is a default provider that comes standard with the JDK. It
-# is called the "SUN" provider, and its Provider subclass
-# named Sun appears in the sun.security.provider package. Thus, the
-# "SUN" provider is registered via the following:
-#
-# security.provider.1=sun.security.provider.Sun
-#
-# (The number 1 is used for the default provider.)
-#
-# Note: Providers can be dynamically registered instead by calls to
-# either the addProvider or insertProviderAt method in the Security
-# class.
-
-#
-# List of providers and their preference orders (see above):
-#
-security.provider.1=sun.security.provider.Sun
-security.provider.2=sun.security.rsa.SunRsaSign
-security.provider.3=sun.security.ec.SunEC
-security.provider.4=com.sun.net.ssl.internal.ssl.Provider
-security.provider.5=com.sun.crypto.provider.SunJCE
-security.provider.6=sun.security.jgss.SunProvider
-security.provider.7=com.sun.security.sasl.Provider
-security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
-security.provider.9=sun.security.smartcardio.SunPCSC
-security.provider.10=apple.security.AppleProvider
-
-#
-# Sun Provider SecureRandom seed source.
-#
-# Select the primary source of seed data for the "SHA1PRNG" and
-# "NativePRNG" SecureRandom implementations in the "Sun" provider.
-# (Other SecureRandom implementations might also use this property.)
-#
-# On Unix-like systems (for example, Solaris/Linux/MacOS), the
-# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
-# special device files such as file:/dev/random.
-#
-# On Windows systems, specifying the URLs "file:/dev/random" or
-# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
-# mechanism for SHA1PRNG.
-#
-# By default, an attempt is made to use the entropy gathering device
-# specified by the "securerandom.source" Security property. If an
-# exception occurs while accessing the specified URL:
-#
-# SHA1PRNG:
-# the traditional system/thread activity algorithm will be used.
-#
-# NativePRNG:
-# a default value of /dev/random will be used. If neither
-# are available, the implementation will be disabled.
-# "file" is the only currently supported protocol type.
-#
-# The entropy gathering device can also be specified with the System
-# property "java.security.egd". For example:
-#
-# % java -Djava.security.egd=file:/dev/random MainClass
-#
-# Specifying this System property will override the
-# "securerandom.source" Security property.
-#
-# In addition, if "file:/dev/random" or "file:/dev/urandom" is
-# specified, the "NativePRNG" implementation will be more preferred than
-# SHA1PRNG in the Sun provider.
-#
-securerandom.source=file:/dev/random
-
-#
-# A list of known strong SecureRandom implementations.
-#
-# To help guide applications in selecting a suitable strong
-# java.security.SecureRandom implementation, Java distributions should
-# indicate a list of known strong implementations using the property.
-#
-# This is a comma-separated list of algorithm and/or algorithm:provider
-# entries.
-#
-securerandom.strongAlgorithms=NativePRNGBlocking:SUN
-
-#
-# Class to instantiate as the javax.security.auth.login.Configuration
-# provider.
-#
-login.configuration.provider=sun.security.provider.ConfigFile
-
-#
-# Default login configuration file
-#
-#login.config.url.1=file:${user.home}/.java.login.config
-
-#
-# Class to instantiate as the system Policy. This is the name of the class
-# that will be used as the Policy object.
-#
-policy.provider=sun.security.provider.PolicyFile
-
-# The default is to have a single system-wide policy file,
-# and a policy file in the user's home directory.
-policy.url.1=file:${java.home}/lib/security/java.policy
-policy.url.2=file:${user.home}/.java.policy
-
-# whether or not we expand properties in the policy file
-# if this is set to false, properties (${...}) will not be expanded in policy
-# files.
-policy.expandProperties=true
-
-# whether or not we allow an extra policy to be passed on the command line
-# with -Djava.security.policy=somefile. Comment out this line to disable
-# this feature.
-policy.allowSystemProperty=true
-
-# whether or not we look into the IdentityScope for trusted Identities
-# when encountering a 1.1 signed JAR file. If the identity is found
-# and is trusted, we grant it AllPermission.
-policy.ignoreIdentityScope=false
-
-#
-# Default keystore type.
-#
-keystore.type=jks
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageAccess unless the
-# corresponding RuntimePermission ("accessClassInPackage."+package) has
-# been granted.
-package.access=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.,\
- com.sun.activation.registries.,\
- apple.
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageDefinition unless the
-# corresponding RuntimePermission ("defineClassInPackage."+package) has
-# been granted.
-#
-# by default, none of the class loaders supplied with the JDK call
-# checkPackageDefinition.
-#
-package.definition=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.,\
- com.sun.activation.registries.,\
- apple.
-
-#
-# Determines whether this properties file can be appended to
-# or overridden on the command line via -Djava.security.properties
-#
-security.overridePropertiesFile=true
-
-#
-# Determines the default key and trust manager factory algorithms for
-# the javax.net.ssl package.
-#
-ssl.KeyManagerFactory.algorithm=SunX509
-ssl.TrustManagerFactory.algorithm=PKIX
-
-#
-# The Java-level namelookup cache policy for successful lookups:
-#
-# any negative value: caching forever
-# any positive value: the number of seconds to cache an address for
-# zero: do not cache
-#
-# default value is forever (FOREVER). For security reasons, this
-# caching is made forever when a security manager is set. When a security
-# manager is not set, the default behavior in this implementation
-# is to cache for 30 seconds.
-#
-# NOTE: setting this to anything other than the default value can have
-# serious security implications. Do not set it unless
-# you are sure you are not exposed to DNS spoofing attack.
-#
-#networkaddress.cache.ttl=-1
-
-# The Java-level namelookup cache policy for failed lookups:
-#
-# any negative value: cache forever
-# any positive value: the number of seconds to cache negative lookup results
-# zero: do not cache
-#
-# In some Microsoft Windows networking environments that employ
-# the WINS name service in addition to DNS, name service lookups
-# that fail may take a noticeably long time to return (approx. 5 seconds).
-# For this reason the default caching policy is to maintain these
-# results for 10 seconds.
-#
-#
-networkaddress.cache.negative.ttl=10
-
-#
-# Properties to configure OCSP for certificate revocation checking
-#
-
-# Enable OCSP
-#
-# By default, OCSP is not used for certificate revocation checking.
-# This property enables the use of OCSP when set to the value "true".
-#
-# NOTE: SocketPermission is required to connect to an OCSP responder.
-#
-# Example,
-# ocsp.enable=true
-
-#
-# Location of the OCSP responder
-#
-# By default, the location of the OCSP responder is determined implicitly
-# from the certificate being validated. This property explicitly specifies
-# the location of the OCSP responder. The property is used when the
-# Authority Information Access extension (defined in RFC 3280) is absent
-# from the certificate or when it requires overriding.
-#
-# Example,
-# ocsp.responderURL=http://ocsp.example.net:80
-
-#
-# Subject name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. In cases where
-# the subject name alone is not sufficient to uniquely identify the certificate
-# then both the "ocsp.responderCertIssuerName" and
-# "ocsp.responderCertSerialNumber" properties must be used instead. When this
-# property is set then those two properties are ignored.
-#
-# Example,
-# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"
-
-#
-# Issuer name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. When this
-# property is set then the "ocsp.responderCertSerialNumber" property must also
-# be set. When the "ocsp.responderCertSubjectName" property is set then this
-# property is ignored.
-#
-# Example,
-# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
-
-#
-# Serial number of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# of hexadecimal digits (colon or space separators may be present) which
-# identifies a certificate in the set of certificates supplied during cert path
-# validation. When this property is set then the "ocsp.responderCertIssuerName"
-# property must also be set. When the "ocsp.responderCertSubjectName" property
-# is set then this property is ignored.
-#
-# Example,
-# ocsp.responderCertSerialNumber=2A:FF:00
-
-#
-# Policy for failed Kerberos KDC lookups:
-#
-# When a KDC is unavailable (network error, service failure, etc), it is
-# put inside a blacklist and accessed less often for future requests. The
-# value (case-insensitive) for this policy can be:
-#
-# tryLast
-# KDCs in the blacklist are always tried after those not on the list.
-#
-# tryLess[:max_retries,timeout]
-# KDCs in the blacklist are still tried by their order in the configuration,
-# but with smaller max_retries and timeout values. max_retries and timeout
-# are optional numerical parameters (default 1 and 5000, which means once
-# and 5 seconds). Please notes that if any of the values defined here is
-# more than what is defined in krb5.conf, it will be ignored.
-#
-# Whenever a KDC is detected as available, it is removed from the blacklist.
-# The blacklist is reset when krb5.conf is reloaded. You can add
-# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is
-# reloaded whenever a JAAS authentication is attempted.
-#
-# Example,
-# krb5.kdc.bad.policy = tryLast
-# krb5.kdc.bad.policy = tryLess:2,2000
-krb5.kdc.bad.policy = tryLast
-
-# Algorithm restrictions for certification path (CertPath) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# for certification path building and validation. For example, "MD2" is
-# generally no longer considered to be a secure hash algorithm. This section
-# describes the mechanism for disabling algorithms based on algorithm name
-# and/or key length. This includes algorithms used in certificates, as well
-# as revocation information such as CRLs and signed OCSP Responses.
-#
-# The syntax of the disabled algorithm string is described as this Java
-# BNF-style:
-# DisabledAlgorithms:
-# " DisabledAlgorithm { , DisabledAlgorithm } "
-#
-# DisabledAlgorithm:
-# AlgorithmName [Constraint]
-#
-# AlgorithmName:
-# (see below)
-#
-# Constraint:
-# KeySizeConstraint
-#
-# KeySizeConstraint:
-# keySize Operator DecimalInteger
-#
-# Operator:
-# <= | < | == | != | >= | >
-#
-# DecimalInteger:
-# DecimalDigits
-#
-# DecimalDigits:
-# DecimalDigit {DecimalDigit}
-#
-# DecimalDigit: one of
-# 1 2 3 4 5 6 7 8 9 0
-#
-# The "AlgorithmName" is the standard algorithm name of the disabled
-# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
-# Documentation" for information about Standard Algorithm Names. Matching
-# is performed using a case-insensitive sub-element matching rule. (For
-# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
-# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a
-# sub-element of the certificate algorithm name, the algorithm will be
-# rejected during certification path building and validation. For example,
-# the assertion algorithm name "DSA" will disable all certificate algorithms
-# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion
-# will not disable algorithms related to "ECDSA".
-#
-# A "Constraint" provides further guidance for the algorithm being specified.
-# The "KeySizeConstraint" requires a key of a valid size range if the
-# "AlgorithmName" is of a key algorithm. The "DecimalInteger" indicates the
-# key size specified in number of bits. For example, "RSA keySize <= 1024"
-# indicates that any RSA key with key size less than or equal to 1024 bits
-# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
-# that any RSA key with key size less than 1024 or greater than 2048 should
-# be disabled. Note that the "KeySizeConstraint" only makes sense to key
-# algorithms.
-#
-# Note: This property is currently used by Oracle's PKIX implementation. It
-# is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
-#
-#
-jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
-
-# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
-# (SSL/TLS) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# when using SSL/TLS. This section describes the mechanism for disabling
-# algorithms during SSL/TLS security parameters negotiation, including cipher
-# suites selection, peer authentication and key exchange mechanisms.
-#
-# For PKI-based peer authentication and key exchange mechanisms, this list
-# of disabled algorithms will also be checked during certification path
-# building and validation, including algorithms used in certificates, as
-# well as revocation information such as CRLs and signed OCSP Responses.
-# This is in addition to the jdk.certpath.disabledAlgorithms property above.
-#
-# See the specification of "jdk.certpath.disabledAlgorithms" for the
-# syntax of the disabled algorithm string.
-#
-# Note: This property is currently used by Oracle's JSSE implementation.
-# It is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
--- a/jdk/src/share/lib/security/java.security-solaris Sun Aug 10 19:39:01 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,498 +0,0 @@
-#
-# This is the "master security properties file".
-#
-# An alternate java.security properties file may be specified
-# from the command line via the system property
-#
-# -Djava.security.properties=<URL>
-#
-# This properties file appends to the master security properties file.
-# If both properties files specify values for the same key, the value
-# from the command-line properties file is selected, as it is the last
-# one loaded.
-#
-# Also, if you specify
-#
-# -Djava.security.properties==<URL> (2 equals),
-#
-# then that properties file completely overrides the master security
-# properties file.
-#
-# To disable the ability to specify an additional properties file from
-# the command line, set the key security.overridePropertiesFile
-# to false in the master security properties file. It is set to true
-# by default.
-
-# In this file, various security properties are set for use by
-# java.security classes. This is where users can statically register
-# Cryptography Package Providers ("providers" for short). The term
-# "provider" refers to a package or set of packages that supply a
-# concrete implementation of a subset of the cryptography aspects of
-# the Java Security API. A provider may, for example, implement one or
-# more digital signature algorithms or message digest algorithms.
-#
-# Each provider must implement a subclass of the Provider class.
-# To register a provider in this master security properties file,
-# specify the Provider subclass name and priority in the format
-#
-# security.provider.<n>=<className>
-#
-# This declares a provider, and specifies its preference
-# order n. The preference order is the order in which providers are
-# searched for requested algorithms (when no specific provider is
-# requested). The order is 1-based; 1 is the most preferred, followed
-# by 2, and so on.
-#
-# <className> must specify the subclass of the Provider class whose
-# constructor sets the values of various properties that are required
-# for the Java Security API to look up the algorithms or other
-# facilities implemented by the provider.
-#
-# There must be at least one provider specification in java.security.
-# There is a default provider that comes standard with the JDK. It
-# is called the "SUN" provider, and its Provider subclass
-# named Sun appears in the sun.security.provider package. Thus, the
-# "SUN" provider is registered via the following:
-#
-# security.provider.1=sun.security.provider.Sun
-#
-# (The number 1 is used for the default provider.)
-#
-# Note: Providers can be dynamically registered instead by calls to
-# either the addProvider or insertProviderAt method in the Security
-# class.
-
-#
-# List of providers and their preference orders (see above):
-#
-security.provider.1=com.oracle.security.ucrypto.UcryptoProvider ${java.home}/lib/security/ucrypto-solaris.cfg
-security.provider.2=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/sunpkcs11-solaris.cfg
-security.provider.3=sun.security.provider.Sun
-security.provider.4=sun.security.rsa.SunRsaSign
-security.provider.5=sun.security.ec.SunEC
-security.provider.6=com.sun.net.ssl.internal.ssl.Provider
-security.provider.7=com.sun.crypto.provider.SunJCE
-security.provider.8=sun.security.jgss.SunProvider
-security.provider.9=com.sun.security.sasl.Provider
-security.provider.10=org.jcp.xml.dsig.internal.dom.XMLDSigRI
-security.provider.11=sun.security.smartcardio.SunPCSC
-
-#
-# Sun Provider SecureRandom seed source.
-#
-# Select the primary source of seed data for the "SHA1PRNG" and
-# "NativePRNG" SecureRandom implementations in the "Sun" provider.
-# (Other SecureRandom implementations might also use this property.)
-#
-# On Unix-like systems (for example, Solaris/Linux/MacOS), the
-# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
-# special device files such as file:/dev/random.
-#
-# On Windows systems, specifying the URLs "file:/dev/random" or
-# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
-# mechanism for SHA1PRNG.
-#
-# By default, an attempt is made to use the entropy gathering device
-# specified by the "securerandom.source" Security property. If an
-# exception occurs while accessing the specified URL:
-#
-# SHA1PRNG:
-# the traditional system/thread activity algorithm will be used.
-#
-# NativePRNG:
-# a default value of /dev/random will be used. If neither
-# are available, the implementation will be disabled.
-# "file" is the only currently supported protocol type.
-#
-# The entropy gathering device can also be specified with the System
-# property "java.security.egd". For example:
-#
-# % java -Djava.security.egd=file:/dev/random MainClass
-#
-# Specifying this System property will override the
-# "securerandom.source" Security property.
-#
-# In addition, if "file:/dev/random" or "file:/dev/urandom" is
-# specified, the "NativePRNG" implementation will be more preferred than
-# SHA1PRNG in the Sun provider.
-#
-securerandom.source=file:/dev/random
-
-#
-# A list of known strong SecureRandom implementations.
-#
-# To help guide applications in selecting a suitable strong
-# java.security.SecureRandom implementation, Java distributions should
-# indicate a list of known strong implementations using the property.
-#
-# This is a comma-separated list of algorithm and/or algorithm:provider
-# entries.
-#
-securerandom.strongAlgorithms=NativePRNGBlocking:SUN
-
-#
-# Class to instantiate as the javax.security.auth.login.Configuration
-# provider.
-#
-login.configuration.provider=sun.security.provider.ConfigFile
-
-#
-# Default login configuration file
-#
-#login.config.url.1=file:${user.home}/.java.login.config
-
-#
-# Class to instantiate as the system Policy. This is the name of the class
-# that will be used as the Policy object.
-#
-policy.provider=sun.security.provider.PolicyFile
-
-# The default is to have a single system-wide policy file,
-# and a policy file in the user's home directory.
-policy.url.1=file:${java.home}/lib/security/java.policy
-policy.url.2=file:${user.home}/.java.policy
-
-# whether or not we expand properties in the policy file
-# if this is set to false, properties (${...}) will not be expanded in policy
-# files.
-policy.expandProperties=true
-
-# whether or not we allow an extra policy to be passed on the command line
-# with -Djava.security.policy=somefile. Comment out this line to disable
-# this feature.
-policy.allowSystemProperty=true
-
-# whether or not we look into the IdentityScope for trusted Identities
-# when encountering a 1.1 signed JAR file. If the identity is found
-# and is trusted, we grant it AllPermission.
-policy.ignoreIdentityScope=false
-
-#
-# Default keystore type.
-#
-keystore.type=jks
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageAccess unless the
-# corresponding RuntimePermission ("accessClassInPackage."+package) has
-# been granted.
-package.access=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.,\
- com.sun.activation.registries.
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageDefinition unless the
-# corresponding RuntimePermission ("defineClassInPackage."+package) has
-# been granted.
-#
-# by default, none of the class loaders supplied with the JDK call
-# checkPackageDefinition.
-#
-package.definition=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.,\
- com.sun.activation.registries.
-
-#
-# Determines whether this properties file can be appended to
-# or overridden on the command line via -Djava.security.properties
-#
-security.overridePropertiesFile=true
-
-#
-# Determines the default key and trust manager factory algorithms for
-# the javax.net.ssl package.
-#
-ssl.KeyManagerFactory.algorithm=SunX509
-ssl.TrustManagerFactory.algorithm=PKIX
-
-#
-# The Java-level namelookup cache policy for successful lookups:
-#
-# any negative value: caching forever
-# any positive value: the number of seconds to cache an address for
-# zero: do not cache
-#
-# default value is forever (FOREVER). For security reasons, this
-# caching is made forever when a security manager is set. When a security
-# manager is not set, the default behavior in this implementation
-# is to cache for 30 seconds.
-#
-# NOTE: setting this to anything other than the default value can have
-# serious security implications. Do not set it unless
-# you are sure you are not exposed to DNS spoofing attack.
-#
-#networkaddress.cache.ttl=-1
-
-# The Java-level namelookup cache policy for failed lookups:
-#
-# any negative value: cache forever
-# any positive value: the number of seconds to cache negative lookup results
-# zero: do not cache
-#
-# In some Microsoft Windows networking environments that employ
-# the WINS name service in addition to DNS, name service lookups
-# that fail may take a noticeably long time to return (approx. 5 seconds).
-# For this reason the default caching policy is to maintain these
-# results for 10 seconds.
-#
-#
-networkaddress.cache.negative.ttl=10
-
-#
-# Properties to configure OCSP for certificate revocation checking
-#
-
-# Enable OCSP
-#
-# By default, OCSP is not used for certificate revocation checking.
-# This property enables the use of OCSP when set to the value "true".
-#
-# NOTE: SocketPermission is required to connect to an OCSP responder.
-#
-# Example,
-# ocsp.enable=true
-
-#
-# Location of the OCSP responder
-#
-# By default, the location of the OCSP responder is determined implicitly
-# from the certificate being validated. This property explicitly specifies
-# the location of the OCSP responder. The property is used when the
-# Authority Information Access extension (defined in RFC 3280) is absent
-# from the certificate or when it requires overriding.
-#
-# Example,
-# ocsp.responderURL=http://ocsp.example.net:80
-
-#
-# Subject name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. In cases where
-# the subject name alone is not sufficient to uniquely identify the certificate
-# then both the "ocsp.responderCertIssuerName" and
-# "ocsp.responderCertSerialNumber" properties must be used instead. When this
-# property is set then those two properties are ignored.
-#
-# Example,
-# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"
-
-#
-# Issuer name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. When this
-# property is set then the "ocsp.responderCertSerialNumber" property must also
-# be set. When the "ocsp.responderCertSubjectName" property is set then this
-# property is ignored.
-#
-# Example,
-# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
-
-#
-# Serial number of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# of hexadecimal digits (colon or space separators may be present) which
-# identifies a certificate in the set of certificates supplied during cert path
-# validation. When this property is set then the "ocsp.responderCertIssuerName"
-# property must also be set. When the "ocsp.responderCertSubjectName" property
-# is set then this property is ignored.
-#
-# Example,
-# ocsp.responderCertSerialNumber=2A:FF:00
-
-#
-# Policy for failed Kerberos KDC lookups:
-#
-# When a KDC is unavailable (network error, service failure, etc), it is
-# put inside a blacklist and accessed less often for future requests. The
-# value (case-insensitive) for this policy can be:
-#
-# tryLast
-# KDCs in the blacklist are always tried after those not on the list.
-#
-# tryLess[:max_retries,timeout]
-# KDCs in the blacklist are still tried by their order in the configuration,
-# but with smaller max_retries and timeout values. max_retries and timeout
-# are optional numerical parameters (default 1 and 5000, which means once
-# and 5 seconds). Please notes that if any of the values defined here is
-# more than what is defined in krb5.conf, it will be ignored.
-#
-# Whenever a KDC is detected as available, it is removed from the blacklist.
-# The blacklist is reset when krb5.conf is reloaded. You can add
-# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is
-# reloaded whenever a JAAS authentication is attempted.
-#
-# Example,
-# krb5.kdc.bad.policy = tryLast
-# krb5.kdc.bad.policy = tryLess:2,2000
-krb5.kdc.bad.policy = tryLast
-
-# Algorithm restrictions for certification path (CertPath) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# for certification path building and validation. For example, "MD2" is
-# generally no longer considered to be a secure hash algorithm. This section
-# describes the mechanism for disabling algorithms based on algorithm name
-# and/or key length. This includes algorithms used in certificates, as well
-# as revocation information such as CRLs and signed OCSP Responses.
-#
-# The syntax of the disabled algorithm string is described as this Java
-# BNF-style:
-# DisabledAlgorithms:
-# " DisabledAlgorithm { , DisabledAlgorithm } "
-#
-# DisabledAlgorithm:
-# AlgorithmName [Constraint]
-#
-# AlgorithmName:
-# (see below)
-#
-# Constraint:
-# KeySizeConstraint
-#
-# KeySizeConstraint:
-# keySize Operator DecimalInteger
-#
-# Operator:
-# <= | < | == | != | >= | >
-#
-# DecimalInteger:
-# DecimalDigits
-#
-# DecimalDigits:
-# DecimalDigit {DecimalDigit}
-#
-# DecimalDigit: one of
-# 1 2 3 4 5 6 7 8 9 0
-#
-# The "AlgorithmName" is the standard algorithm name of the disabled
-# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
-# Documentation" for information about Standard Algorithm Names. Matching
-# is performed using a case-insensitive sub-element matching rule. (For
-# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
-# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a
-# sub-element of the certificate algorithm name, the algorithm will be
-# rejected during certification path building and validation. For example,
-# the assertion algorithm name "DSA" will disable all certificate algorithms
-# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion
-# will not disable algorithms related to "ECDSA".
-#
-# A "Constraint" provides further guidance for the algorithm being specified.
-# The "KeySizeConstraint" requires a key of a valid size range if the
-# "AlgorithmName" is of a key algorithm. The "DecimalInteger" indicates the
-# key size specified in number of bits. For example, "RSA keySize <= 1024"
-# indicates that any RSA key with key size less than or equal to 1024 bits
-# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
-# that any RSA key with key size less than 1024 or greater than 2048 should
-# be disabled. Note that the "KeySizeConstraint" only makes sense to key
-# algorithms.
-#
-# Note: This property is currently used by Oracle's PKIX implementation. It
-# is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
-#
-#
-jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
-
-# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
-# (SSL/TLS) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# when using SSL/TLS. This section describes the mechanism for disabling
-# algorithms during SSL/TLS security parameters negotiation, including cipher
-# suites selection, peer authentication and key exchange mechanisms.
-#
-# For PKI-based peer authentication and key exchange mechanisms, this list
-# of disabled algorithms will also be checked during certification path
-# building and validation, including algorithms used in certificates, as
-# well as revocation information such as CRLs and signed OCSP Responses.
-# This is in addition to the jdk.certpath.disabledAlgorithms property above.
-#
-# See the specification of "jdk.certpath.disabledAlgorithms" for the
-# syntax of the disabled algorithm string.
-#
-# Note: This property is currently used by Oracle's JSSE implementation.
-# It is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
--- a/jdk/src/share/lib/security/java.security-windows Sun Aug 10 19:39:01 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,499 +0,0 @@
-#
-# This is the "master security properties file".
-#
-# An alternate java.security properties file may be specified
-# from the command line via the system property
-#
-# -Djava.security.properties=<URL>
-#
-# This properties file appends to the master security properties file.
-# If both properties files specify values for the same key, the value
-# from the command-line properties file is selected, as it is the last
-# one loaded.
-#
-# Also, if you specify
-#
-# -Djava.security.properties==<URL> (2 equals),
-#
-# then that properties file completely overrides the master security
-# properties file.
-#
-# To disable the ability to specify an additional properties file from
-# the command line, set the key security.overridePropertiesFile
-# to false in the master security properties file. It is set to true
-# by default.
-
-# In this file, various security properties are set for use by
-# java.security classes. This is where users can statically register
-# Cryptography Package Providers ("providers" for short). The term
-# "provider" refers to a package or set of packages that supply a
-# concrete implementation of a subset of the cryptography aspects of
-# the Java Security API. A provider may, for example, implement one or
-# more digital signature algorithms or message digest algorithms.
-#
-# Each provider must implement a subclass of the Provider class.
-# To register a provider in this master security properties file,
-# specify the Provider subclass name and priority in the format
-#
-# security.provider.<n>=<className>
-#
-# This declares a provider, and specifies its preference
-# order n. The preference order is the order in which providers are
-# searched for requested algorithms (when no specific provider is
-# requested). The order is 1-based; 1 is the most preferred, followed
-# by 2, and so on.
-#
-# <className> must specify the subclass of the Provider class whose
-# constructor sets the values of various properties that are required
-# for the Java Security API to look up the algorithms or other
-# facilities implemented by the provider.
-#
-# There must be at least one provider specification in java.security.
-# There is a default provider that comes standard with the JDK. It
-# is called the "SUN" provider, and its Provider subclass
-# named Sun appears in the sun.security.provider package. Thus, the
-# "SUN" provider is registered via the following:
-#
-# security.provider.1=sun.security.provider.Sun
-#
-# (The number 1 is used for the default provider.)
-#
-# Note: Providers can be dynamically registered instead by calls to
-# either the addProvider or insertProviderAt method in the Security
-# class.
-
-#
-# List of providers and their preference orders (see above):
-#
-security.provider.1=sun.security.provider.Sun
-security.provider.2=sun.security.rsa.SunRsaSign
-security.provider.3=sun.security.ec.SunEC
-security.provider.4=com.sun.net.ssl.internal.ssl.Provider
-security.provider.5=com.sun.crypto.provider.SunJCE
-security.provider.6=sun.security.jgss.SunProvider
-security.provider.7=com.sun.security.sasl.Provider
-security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
-security.provider.9=sun.security.smartcardio.SunPCSC
-security.provider.10=sun.security.mscapi.SunMSCAPI
-
-#
-# Sun Provider SecureRandom seed source.
-#
-# Select the primary source of seed data for the "SHA1PRNG" and
-# "NativePRNG" SecureRandom implementations in the "Sun" provider.
-# (Other SecureRandom implementations might also use this property.)
-#
-# On Unix-like systems (for example, Solaris/Linux/MacOS), the
-# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
-# special device files such as file:/dev/random.
-#
-# On Windows systems, specifying the URLs "file:/dev/random" or
-# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
-# mechanism for SHA1PRNG.
-#
-# By default, an attempt is made to use the entropy gathering device
-# specified by the "securerandom.source" Security property. If an
-# exception occurs while accessing the specified URL:
-#
-# SHA1PRNG:
-# the traditional system/thread activity algorithm will be used.
-#
-# NativePRNG:
-# a default value of /dev/random will be used. If neither
-# are available, the implementation will be disabled.
-# "file" is the only currently supported protocol type.
-#
-# The entropy gathering device can also be specified with the System
-# property "java.security.egd". For example:
-#
-# % java -Djava.security.egd=file:/dev/random MainClass
-#
-# Specifying this System property will override the
-# "securerandom.source" Security property.
-#
-# In addition, if "file:/dev/random" or "file:/dev/urandom" is
-# specified, the "NativePRNG" implementation will be more preferred than
-# SHA1PRNG in the Sun provider.
-#
-securerandom.source=file:/dev/random
-
-#
-# A list of known strong SecureRandom implementations.
-#
-# To help guide applications in selecting a suitable strong
-# java.security.SecureRandom implementation, Java distributions should
-# indicate a list of known strong implementations using the property.
-#
-# This is a comma-separated list of algorithm and/or algorithm:provider
-# entries.
-#
-securerandom.strongAlgorithms=Windows-PRNG:SunMSCAPI,SHA1PRNG:SUN
-
-#
-# Class to instantiate as the javax.security.auth.login.Configuration
-# provider.
-#
-login.configuration.provider=sun.security.provider.ConfigFile
-
-#
-# Default login configuration file
-#
-#login.config.url.1=file:${user.home}/.java.login.config
-
-#
-# Class to instantiate as the system Policy. This is the name of the class
-# that will be used as the Policy object.
-#
-policy.provider=sun.security.provider.PolicyFile
-
-# The default is to have a single system-wide policy file,
-# and a policy file in the user's home directory.
-policy.url.1=file:${java.home}/lib/security/java.policy
-policy.url.2=file:${user.home}/.java.policy
-
-# whether or not we expand properties in the policy file
-# if this is set to false, properties (${...}) will not be expanded in policy
-# files.
-policy.expandProperties=true
-
-# whether or not we allow an extra policy to be passed on the command line
-# with -Djava.security.policy=somefile. Comment out this line to disable
-# this feature.
-policy.allowSystemProperty=true
-
-# whether or not we look into the IdentityScope for trusted Identities
-# when encountering a 1.1 signed JAR file. If the identity is found
-# and is trusted, we grant it AllPermission.
-policy.ignoreIdentityScope=false
-
-#
-# Default keystore type.
-#
-keystore.type=jks
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageAccess unless the
-# corresponding RuntimePermission ("accessClassInPackage."+package) has
-# been granted.
-package.access=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.,\
- com.sun.activation.registries.,\
- com.sun.java.accessibility.
-
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageDefinition unless the
-# corresponding RuntimePermission ("defineClassInPackage."+package) has
-# been granted.
-#
-# by default, none of the class loaders supplied with the JDK call
-# checkPackageDefinition.
-#
-package.definition=sun.,\
- com.sun.xml.internal.,\
- com.sun.imageio.,\
- com.sun.istack.internal.,\
- com.sun.jmx.,\
- com.sun.media.sound.,\
- com.sun.naming.internal.,\
- com.sun.proxy.,\
- com.sun.corba.se.,\
- com.sun.org.apache.bcel.internal.,\
- com.sun.org.apache.regexp.internal.,\
- com.sun.org.apache.xerces.internal.,\
- com.sun.org.apache.xpath.internal.,\
- com.sun.org.apache.xalan.internal.extensions.,\
- com.sun.org.apache.xalan.internal.lib.,\
- com.sun.org.apache.xalan.internal.res.,\
- com.sun.org.apache.xalan.internal.templates.,\
- com.sun.org.apache.xalan.internal.utils.,\
- com.sun.org.apache.xalan.internal.xslt.,\
- com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
- com.sun.org.apache.xalan.internal.xsltc.compiler.,\
- com.sun.org.apache.xalan.internal.xsltc.trax.,\
- com.sun.org.apache.xalan.internal.xsltc.util.,\
- com.sun.org.apache.xml.internal.res.,\
- com.sun.org.apache.xml.internal.security.,\
- com.sun.org.apache.xml.internal.serializer.utils.,\
- com.sun.org.apache.xml.internal.utils.,\
- com.sun.org.glassfish.,\
- com.oracle.xmlns.internal.,\
- com.oracle.webservices.internal.,\
- org.jcp.xml.dsig.internal.,\
- jdk.internal.,\
- jdk.nashorn.internal.,\
- jdk.nashorn.tools.,\
- com.sun.activation.registries.,\
- com.sun.java.accessibility.
-
-#
-# Determines whether this properties file can be appended to
-# or overridden on the command line via -Djava.security.properties
-#
-security.overridePropertiesFile=true
-
-#
-# Determines the default key and trust manager factory algorithms for
-# the javax.net.ssl package.
-#
-ssl.KeyManagerFactory.algorithm=SunX509
-ssl.TrustManagerFactory.algorithm=PKIX
-
-#
-# The Java-level namelookup cache policy for successful lookups:
-#
-# any negative value: caching forever
-# any positive value: the number of seconds to cache an address for
-# zero: do not cache
-#
-# default value is forever (FOREVER). For security reasons, this
-# caching is made forever when a security manager is set. When a security
-# manager is not set, the default behavior in this implementation
-# is to cache for 30 seconds.
-#
-# NOTE: setting this to anything other than the default value can have
-# serious security implications. Do not set it unless
-# you are sure you are not exposed to DNS spoofing attack.
-#
-#networkaddress.cache.ttl=-1
-
-# The Java-level namelookup cache policy for failed lookups:
-#
-# any negative value: cache forever
-# any positive value: the number of seconds to cache negative lookup results
-# zero: do not cache
-#
-# In some Microsoft Windows networking environments that employ
-# the WINS name service in addition to DNS, name service lookups
-# that fail may take a noticeably long time to return (approx. 5 seconds).
-# For this reason the default caching policy is to maintain these
-# results for 10 seconds.
-#
-#
-networkaddress.cache.negative.ttl=10
-
-#
-# Properties to configure OCSP for certificate revocation checking
-#
-
-# Enable OCSP
-#
-# By default, OCSP is not used for certificate revocation checking.
-# This property enables the use of OCSP when set to the value "true".
-#
-# NOTE: SocketPermission is required to connect to an OCSP responder.
-#
-# Example,
-# ocsp.enable=true
-
-#
-# Location of the OCSP responder
-#
-# By default, the location of the OCSP responder is determined implicitly
-# from the certificate being validated. This property explicitly specifies
-# the location of the OCSP responder. The property is used when the
-# Authority Information Access extension (defined in RFC 3280) is absent
-# from the certificate or when it requires overriding.
-#
-# Example,
-# ocsp.responderURL=http://ocsp.example.net:80
-
-#
-# Subject name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. In cases where
-# the subject name alone is not sufficient to uniquely identify the certificate
-# then both the "ocsp.responderCertIssuerName" and
-# "ocsp.responderCertSerialNumber" properties must be used instead. When this
-# property is set then those two properties are ignored.
-#
-# Example,
-# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"
-
-#
-# Issuer name of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# distinguished name (defined in RFC 2253) which identifies a certificate in
-# the set of certificates supplied during cert path validation. When this
-# property is set then the "ocsp.responderCertSerialNumber" property must also
-# be set. When the "ocsp.responderCertSubjectName" property is set then this
-# property is ignored.
-#
-# Example,
-# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
-
-#
-# Serial number of the OCSP responder's certificate
-#
-# By default, the certificate of the OCSP responder is that of the issuer
-# of the certificate being validated. This property identifies the certificate
-# of the OCSP responder when the default does not apply. Its value is a string
-# of hexadecimal digits (colon or space separators may be present) which
-# identifies a certificate in the set of certificates supplied during cert path
-# validation. When this property is set then the "ocsp.responderCertIssuerName"
-# property must also be set. When the "ocsp.responderCertSubjectName" property
-# is set then this property is ignored.
-#
-# Example,
-# ocsp.responderCertSerialNumber=2A:FF:00
-
-#
-# Policy for failed Kerberos KDC lookups:
-#
-# When a KDC is unavailable (network error, service failure, etc), it is
-# put inside a blacklist and accessed less often for future requests. The
-# value (case-insensitive) for this policy can be:
-#
-# tryLast
-# KDCs in the blacklist are always tried after those not on the list.
-#
-# tryLess[:max_retries,timeout]
-# KDCs in the blacklist are still tried by their order in the configuration,
-# but with smaller max_retries and timeout values. max_retries and timeout
-# are optional numerical parameters (default 1 and 5000, which means once
-# and 5 seconds). Please notes that if any of the values defined here is
-# more than what is defined in krb5.conf, it will be ignored.
-#
-# Whenever a KDC is detected as available, it is removed from the blacklist.
-# The blacklist is reset when krb5.conf is reloaded. You can add
-# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is
-# reloaded whenever a JAAS authentication is attempted.
-#
-# Example,
-# krb5.kdc.bad.policy = tryLast
-# krb5.kdc.bad.policy = tryLess:2,2000
-krb5.kdc.bad.policy = tryLast
-
-# Algorithm restrictions for certification path (CertPath) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# for certification path building and validation. For example, "MD2" is
-# generally no longer considered to be a secure hash algorithm. This section
-# describes the mechanism for disabling algorithms based on algorithm name
-# and/or key length. This includes algorithms used in certificates, as well
-# as revocation information such as CRLs and signed OCSP Responses.
-#
-# The syntax of the disabled algorithm string is described as this Java
-# BNF-style:
-# DisabledAlgorithms:
-# " DisabledAlgorithm { , DisabledAlgorithm } "
-#
-# DisabledAlgorithm:
-# AlgorithmName [Constraint]
-#
-# AlgorithmName:
-# (see below)
-#
-# Constraint:
-# KeySizeConstraint
-#
-# KeySizeConstraint:
-# keySize Operator DecimalInteger
-#
-# Operator:
-# <= | < | == | != | >= | >
-#
-# DecimalInteger:
-# DecimalDigits
-#
-# DecimalDigits:
-# DecimalDigit {DecimalDigit}
-#
-# DecimalDigit: one of
-# 1 2 3 4 5 6 7 8 9 0
-#
-# The "AlgorithmName" is the standard algorithm name of the disabled
-# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
-# Documentation" for information about Standard Algorithm Names. Matching
-# is performed using a case-insensitive sub-element matching rule. (For
-# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
-# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a
-# sub-element of the certificate algorithm name, the algorithm will be
-# rejected during certification path building and validation. For example,
-# the assertion algorithm name "DSA" will disable all certificate algorithms
-# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion
-# will not disable algorithms related to "ECDSA".
-#
-# A "Constraint" provides further guidance for the algorithm being specified.
-# The "KeySizeConstraint" requires a key of a valid size range if the
-# "AlgorithmName" is of a key algorithm. The "DecimalInteger" indicates the
-# key size specified in number of bits. For example, "RSA keySize <= 1024"
-# indicates that any RSA key with key size less than or equal to 1024 bits
-# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
-# that any RSA key with key size less than 1024 or greater than 2048 should
-# be disabled. Note that the "KeySizeConstraint" only makes sense to key
-# algorithms.
-#
-# Note: This property is currently used by Oracle's PKIX implementation. It
-# is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
-#
-#
-jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
-
-# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
-# (SSL/TLS) processing
-#
-# In some environments, certain algorithms or key lengths may be undesirable
-# when using SSL/TLS. This section describes the mechanism for disabling
-# algorithms during SSL/TLS security parameters negotiation, including cipher
-# suites selection, peer authentication and key exchange mechanisms.
-#
-# For PKI-based peer authentication and key exchange mechanisms, this list
-# of disabled algorithms will also be checked during certification path
-# building and validation, including algorithms used in certificates, as
-# well as revocation information such as CRLs and signed OCSP Responses.
-# This is in addition to the jdk.certpath.disabledAlgorithms property above.
-#
-# See the specification of "jdk.certpath.disabledAlgorithms" for the
-# syntax of the disabled algorithm string.
-#
-# Note: This property is currently used by Oracle's JSSE implementation.
-# It is not guaranteed to be examined and used by other implementations.
-#
-# Example:
-# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
--- a/jdk/test/ProblemList.txt Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/test/ProblemList.txt Mon Aug 11 11:00:20 2014 -0700
@@ -217,6 +217,9 @@
java/security/KeyPairGenerator/SolarisShortDSA.java solaris-all
sun/security/tools/keytool/standard.sh solaris-all
+# 8049312
+com/sun/crypto/provider/Cipher/AES/CICO.java generic-all
+
############################################################################
# jdk_sound
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/CICO.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Random;
+import javax.crypto.Cipher;
+import javax.crypto.CipherInputStream;
+import javax.crypto.CipherOutputStream;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.IvParameterSpec;
+
+/**
+ * @test
+ * @bug 8043836
+ * @summary Test AES ciphers with different modes and padding schemes (ECB mode
+ * doesn't use IV). The test tries 3 different read methods of
+ * CipherInputStream.
+ */
+public class CICO {
+ private static final String ALGORITHM = "aEs";
+ private static final String[] MODES = { "PCBC", "ECb", "cbC", "cFB",
+ "cFB24", "cFB32", "Cfb40", "CFB72", "OfB", "OfB20", "OfB48",
+ "OfB56", "OFB64", "OFB112", "CFB112", "pCbC" };
+ private static final String[] PADDING = { "noPadding", "pkcs5padding" };
+ private static final String PROVIDER = "SunJCE";
+ private static final int NREADS = 3;
+ private static final int KEY_LENGTH = 128;
+
+ private final byte[] plainText = new byte[1600000];
+
+
+ public static void main(String argv[]) throws Exception {
+ CICO test = new CICO();
+ for (String mode : MODES) {
+ for (String pad : PADDING) {
+ for (int m = 0; m < NREADS; m++) {
+ test.runTest(ALGORITHM, mode, pad, m);
+ }
+ }
+ }
+ }
+
+ public void runTest(String algo, String mo, String pad, int whichRead) throws Exception {
+ Cipher ci1 = null;
+ Cipher ci2 = null;
+ byte[] iv = null;
+ AlgorithmParameterSpec aps = null;
+ SecretKey key = null;
+
+ try {
+ // Do initialization
+ Random rdm = new Random();
+ rdm.nextBytes(plainText);
+ KeyGenerator kg = KeyGenerator.getInstance(algo, PROVIDER);
+ if (!kg.getAlgorithm().equals(algo)) {
+ throw new RuntimeException("Unexpected algorithm <"
+ + kg.getAlgorithm() + ">, expected value is <" + algo
+ + ">");
+ }
+
+ kg.init(KEY_LENGTH);
+ key = kg.generateKey();
+
+ ci1 = Cipher.getInstance(algo + "/" + mo + "/" + pad, PROVIDER);
+
+ if (mo.equalsIgnoreCase("ECB")) {
+ ci1.init(Cipher.ENCRYPT_MODE, key);
+ } else {
+ ci1.init(Cipher.ENCRYPT_MODE, key, aps);
+ }
+
+ if (!mo.equalsIgnoreCase("ECB")) {
+ iv = ci1.getIV();
+ aps = new IvParameterSpec(iv);
+ } else {
+ aps = null;
+ }
+
+ ci2 = Cipher.getInstance(algo + "/" + mo + "/" + pad, PROVIDER);
+ if (mo.equalsIgnoreCase("ECB")) {
+ ci2.init(Cipher.DECRYPT_MODE, key);
+ } else {
+ ci2.init(Cipher.DECRYPT_MODE, key, aps);
+ }
+
+ ByteArrayInputStream baInput = new ByteArrayInputStream(plainText);
+ ByteArrayOutputStream baOutput = new ByteArrayOutputStream();
+ try (CipherInputStream ciInput = new CipherInputStream(baInput, ci1);
+ CipherOutputStream ciOutput = new CipherOutputStream(
+ baOutput, ci2)) {
+ // According to specification, CipherInputStream does not support the
+ // mark and reset methods
+ if (ciInput.markSupported()) {
+ throw new RuntimeException(
+ "CipherInputStream unexpectedly supports the mark and reset methods");
+ }
+
+ // Read from the input and write to the output using 2 types
+ // of buffering : byte[] and int
+ switch (whichRead) {
+ case 0:
+ int buffer0 = ciInput.read();
+ while (buffer0 != -1) {
+ ciOutput.write(buffer0);
+ buffer0 = ciInput.read();
+ }
+ break;
+ case 1:
+ byte[] buffer1 = new byte[20];
+ int len1 = ciInput.read(buffer1);
+ while (len1 != -1) {
+ ciOutput.write(buffer1, 0, len1);
+ len1 = ciInput.read(buffer1);
+ }
+ break;
+ case NREADS - 1:
+ byte[] buffer2 = new byte[ci1
+ .getOutputSize(plainText.length)];
+ int offset2 = 0;
+ int len2 = 0;
+ while (len2 != -1) {
+ len2 = ciInput.read(buffer2, offset2, buffer2.length
+ - offset2);
+ offset2 += len2;
+ }
+ ciOutput.write(buffer2, 0, buffer2.length);
+ break;
+ }
+ }
+
+ // Get the output
+ byte[] recoveredText = new byte[baOutput.size()];
+ recoveredText = baOutput.toByteArray();
+ if (!java.util.Arrays.equals(plainText, recoveredText)) {
+ throw new RuntimeException(
+ "Original text is not equal with recovered text, with "
+ + algo + "/" + mo + "/" + pad + "/" + whichRead);
+ }
+
+ // Compare input and output
+
+ } catch (NoSuchAlgorithmException e) {
+ //OFB20 is for negative testing
+ if (!mo.equalsIgnoreCase("OFB20")) {
+ System.out.println("Unexpected NoSuchAlgorithmException with "
+ + algo + "/" + mo + "/" + pad + "/" + whichRead);
+ throw new RuntimeException("Test failed!");
+ }
+ } catch (IOException | NoSuchProviderException | NoSuchPaddingException
+ | InvalidKeyException | InvalidAlgorithmParameterException e) {
+ System.out.println("Unexpected Exception with "
+ + algo + "/" + mo + "/" + pad + "/" + whichRead);
+ System.out.println("Test failed!");
+ throw e;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/CTR.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,145 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Arrays;
+import java.util.Random;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.ShortBufferException;
+import javax.crypto.spec.IvParameterSpec;
+
+
+/**
+ * @test
+ * @bug 8043836
+ * @summary Test AES ciphers with 4 different modes with NoPadding. Check if
+ * data before encryption and after decryption is the same.
+ */
+
+public class CTR {
+
+ private static final String ALGORITHM = "AES";
+
+ private static final String PROVIDER = "SunJCE";
+
+ private static final String[] MODES = {"CTR","CFB24","OFB32","GCM"};
+
+ private static final String PADDING = "NoPadding";
+
+
+ private static final int KEY_LENGTH = 128;
+
+ public static void main(String argv[]) throws Exception {
+ CTR test = new CTR();
+ for (String mode : MODES) {
+ test.runTest(ALGORITHM, mode, PADDING);
+ }
+ }
+
+
+ public void runTest(String algo, String mo, String pad) throws Exception {
+ Cipher ci = null;
+ byte[] iv = null;
+ AlgorithmParameterSpec aps = null;
+ SecretKey key = null;
+
+ try {
+ Random rdm = new Random();
+ byte[] plainText;
+
+ ci = Cipher.getInstance(algo + "/" + mo + "/" + pad, PROVIDER);
+ KeyGenerator kg = KeyGenerator.getInstance(algo, PROVIDER);
+ kg.init(KEY_LENGTH);
+ key = kg.generateKey();
+
+ for (int i = 0; i < 15; i++) {
+ plainText = new byte[1600 + i + 1];
+ rdm.nextBytes(plainText);
+
+ if (!mo.equalsIgnoreCase("GCM")) {
+ ci.init(Cipher.ENCRYPT_MODE, key, aps);
+ } else {
+ ci.init(Cipher.ENCRYPT_MODE, key);
+ }
+
+ byte[] cipherText = new byte[ci.getOutputSize(plainText.length)];
+ int offset = ci.update(plainText, 0, plainText.length,
+ cipherText, 0);
+
+ ci.doFinal(cipherText, offset);
+
+ if (!mo.equalsIgnoreCase("ECB")) {
+ iv = ci.getIV();
+ aps = new IvParameterSpec(iv);
+ } else {
+ aps = null;
+ }
+
+ if (!mo.equalsIgnoreCase("GCM")) {
+ ci.init(Cipher.DECRYPT_MODE, key, aps);
+ } else {
+ ci.init(Cipher.DECRYPT_MODE, key, ci.getParameters());
+ }
+
+ byte[] recoveredText = new byte[ci.getOutputSize(cipherText.length)];
+ int len = ci.doFinal(cipherText, 0, cipherText.length,
+ recoveredText);
+ byte[] tmp = new byte[len];
+
+ for (int j = 0; j < len; j++) {
+ tmp[j] = recoveredText[j];
+ }
+ Arrays.toString(plainText);
+ if (!java.util.Arrays.equals(plainText, tmp)) {
+ System.out.println("Original: ");
+ dumpBytes(plainText);
+ System.out.println("Recovered: ");
+ dumpBytes(tmp);
+ throw new RuntimeException("Original text is not equal with recovered text, with mode:" + mo);
+ }
+ }
+ } catch (NoSuchAlgorithmException | NoSuchProviderException | NoSuchPaddingException
+ | InvalidKeyException | InvalidAlgorithmParameterException
+ | ShortBufferException | IllegalBlockSizeException
+ | BadPaddingException e) {
+ System.out.println("Test failed!");
+ throw e;
+ }
+ }
+
+ private void dumpBytes(byte[] bytes){
+ for (byte b : bytes){
+ System.out.print(Integer.toHexString(b));
+ }
+ System.out.println();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/Padding.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Random;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.ShortBufferException;
+import javax.crypto.spec.IvParameterSpec;
+
+/**
+ * @test
+ * @bug 8043836
+ * @summary Test AES ciphers with different modes and padding schemes (ECB mode
+ * doesn't use IV). The test tries 3 different read methods of
+ * CipherInputStream.
+ */
+public class Padding {
+
+ private static final String ALGORITHM = "AES";
+ private static final String PROVIDER = "SunJCE";
+ private static final String[] MODES = { "ECb", "CbC", "PCBC", "OFB",
+ "OFB150", "cFB", "CFB7", "cFB8", "cFB16", "cFB24", "cFB32",
+ "Cfb40", "cfB48", "cfB56", "cfB64", "cfB72", "cfB80", "cfB88",
+ "cfB96", "cfb104", "cfB112", "cfB120", "OFB8", "OFB16", "OFB24",
+ "OFB32", "OFB40", "OFB48", "OFB56", "OFB64", "OFB72", "OFB80",
+ "OFB88", "OFB96", "OFB104", "OFB112", "OFB120", "GCM" };
+ private static final String PADDING = "PKCS5Padding";
+ private static final int KEY_LENGTH = 128;
+
+ public static void main(String argv[]) throws Exception {
+ Padding test = new Padding();
+ for (String mode : MODES) {
+ test.runTest(ALGORITHM, mode, PADDING);
+ }
+ }
+
+ public void runTest(String algo, String mo, String pad) throws Exception {
+ Cipher ci = null;
+ byte[] iv = null;
+ AlgorithmParameterSpec aps = null;
+ SecretKey key = null;
+ try {
+ Random rdm = new Random();
+ byte[] plainText;
+
+ ci = Cipher.getInstance(algo + "/" + mo + "/" + pad, PROVIDER);
+ KeyGenerator kg = KeyGenerator.getInstance(algo, PROVIDER);
+ kg.init(KEY_LENGTH);
+ key = kg.generateKey();
+
+ for (int i = 0; i < 15; i++) {
+ plainText = new byte[1600 + i + 1];
+ rdm.nextBytes(plainText);
+
+ if (!mo.equalsIgnoreCase("GCM")) {
+ ci.init(Cipher.ENCRYPT_MODE, key, aps);
+ } else {
+ ci.init(Cipher.ENCRYPT_MODE, key);
+ }
+
+ byte[] cipherText = new byte[ci.getOutputSize(plainText.length)];
+ int offset = ci.update(plainText, 0, plainText.length,
+ cipherText, 0);
+ ci.doFinal(cipherText, offset);
+
+ if (!mo.equalsIgnoreCase("ECB")) {
+ iv = ci.getIV();
+ aps = new IvParameterSpec(iv);
+ } else {
+ aps = null;
+ }
+
+ if (!mo.equalsIgnoreCase("GCM")) {
+ ci.init(Cipher.DECRYPT_MODE, key, aps);
+ } else {
+ ci.init(Cipher.DECRYPT_MODE, key, ci.getParameters());
+ }
+
+ byte[] recoveredText = new byte[ci.getOutputSize(cipherText.length)];
+ int len = ci.doFinal(cipherText, 0, cipherText.length,
+ recoveredText);
+ byte[] tmp = new byte[len];
+
+ for (int j = 0; j < len; j++) {
+ tmp[j] = recoveredText[j];
+ }
+
+ if (!java.util.Arrays.equals(plainText, tmp)) {
+ System.out.println("Original: ");
+ dumpBytes(plainText);
+ System.out.println("Recovered: ");
+ dumpBytes(tmp);
+ throw new RuntimeException(
+ "Original text is not equal with recovered text, with mode:"
+ + mo);
+ }
+ }
+ } catch (NoSuchAlgorithmException e) {
+ //CFB7 and OFB150 are for negative testing
+ if (!mo.equalsIgnoreCase("CFB7") && !mo.equalsIgnoreCase("OFB150")) {
+ System.out
+ .println("Unexpected NoSuchAlgorithmException with mode: "
+ + mo);
+ throw new RuntimeException("Test failed!");
+ }
+ } catch ( NoSuchProviderException | NoSuchPaddingException
+ | InvalidKeyException | InvalidAlgorithmParameterException
+ | ShortBufferException | IllegalBlockSizeException
+ | BadPaddingException e) {
+ System.out.println("Test failed!");
+ throw e;
+ }
+ }
+
+ private void dumpBytes(byte[] bytes) {
+ for (byte b : bytes) {
+ System.out.print(Integer.toHexString(b));
+ }
+
+ System.out.println();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestAESCipher.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Random;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.ShortBufferException;
+import javax.crypto.spec.IvParameterSpec;
+
+/**
+ * @test
+ * @bug 8043836
+ * @summary Test AES ciphers with different modes and padding schemes (ECB mode
+ * doesn't use IV).
+ * @author Liwen Wang
+ * @author Parag Salvi
+ */
+public class TestAESCipher {
+
+ private static final String ALGORITHM = "AES";
+ private static final String PROVIDER = "SunJCE";
+ private static final String[] MODES = { "ECb", "CbC", "CTR", "PCBC", "OFB",
+ "OFB150", "cFB", "CFB7", "cFB8", "cFB16", "cFB24", "cFB32",
+ "Cfb40", "cfB48", "cfB56", "cfB64", "cfB72", "cfB80", "cfB88",
+ "cfB96", "cfb104", "cfB112", "cfB120", "OFB8", "OFB16", "OFB24",
+ "OFB32", "OFB40", "OFB48", "OFB56", "OFB64", "OFB72", "OFB80",
+ "OFB88", "OFB96", "OFB104", "OFB112", "OFB120", "GCM" };
+ private static final String[] PADDING = { "NoPadding", "PKCS5Padding" };
+ private static final int KEY_LENGTH = 128;
+
+ public static void main(String argv[]) throws Exception {
+ TestAESCipher test = new TestAESCipher();
+ for (String mode : MODES) {
+ int padKinds = 1;
+ if (mode.equalsIgnoreCase("ECB") || mode.equalsIgnoreCase("PCBC")
+ || mode.equalsIgnoreCase("CBC")) {
+ padKinds = PADDING.length;
+ }
+
+ for (int k = 0; k < padKinds; k++) {
+ test.runTest(ALGORITHM, mode, PADDING[k]);
+ }
+ }
+ }
+
+ public void runTest(String algo, String mo, String pad) throws Exception {
+ Cipher ci = null;
+ byte[] iv = null;
+ AlgorithmParameterSpec aps = null;
+ SecretKey key = null;
+ try {
+ // Initialization
+ Random rdm = new Random();
+ byte[] plainText = new byte[128];
+ rdm.nextBytes(plainText);
+
+ ci = Cipher.getInstance(algo + "/" + mo + "/" + pad, PROVIDER);
+ KeyGenerator kg = KeyGenerator.getInstance(algo, PROVIDER);
+ kg.init(KEY_LENGTH);
+ key = kg.generateKey();
+
+ // encrypt
+ if (!mo.equalsIgnoreCase("GCM")) {
+ ci.init(Cipher.ENCRYPT_MODE, key, aps);
+ } else {
+ ci.init(Cipher.ENCRYPT_MODE, key);
+ }
+
+ byte[] cipherText = new byte[ci.getOutputSize(plainText.length)];
+ int offset = ci.update(plainText, 0, plainText.length, cipherText,
+ 0);
+ ci.doFinal(cipherText, offset);
+
+ if (!mo.equalsIgnoreCase("ECB")) {
+ iv = ci.getIV();
+ aps = new IvParameterSpec(iv);
+ } else {
+ aps = null;
+ }
+
+ if (!mo.equalsIgnoreCase("GCM")) {
+ ci.init(Cipher.DECRYPT_MODE, key, aps);
+ } else {
+ ci.init(Cipher.DECRYPT_MODE, key, ci.getParameters());
+ }
+
+ byte[] recoveredText = new byte[ci.getOutputSize(cipherText.length)];
+ int len = ci.doFinal(cipherText, 0, cipherText.length,
+ recoveredText);
+ byte[] tmp = new byte[len];
+ System.arraycopy(recoveredText, 0, tmp, 0, len);
+
+ // Comparison
+ if (!java.util.Arrays.equals(plainText, tmp)) {
+ System.out.println("Original: ");
+ dumpBytes(plainText);
+ System.out.println("Recovered: ");
+ dumpBytes(tmp);
+ throw new RuntimeException(
+ "Original text is not equal with recovered text, with mode:"
+ + mo);
+ }
+
+ } catch (NoSuchAlgorithmException e) {
+ //CFB7 and OFB150 are for negative testing
+ if (!mo.equalsIgnoreCase("CFB7") && !mo.equalsIgnoreCase("OFB150")) {
+ System.out.println("Unexpected NoSuchAlgorithmException with mode: "
+ + mo);
+ throw new RuntimeException("Test failed!");
+ }
+ } catch ( NoSuchProviderException | NoSuchPaddingException
+ | InvalidKeyException | InvalidAlgorithmParameterException
+ | ShortBufferException | IllegalBlockSizeException
+ | BadPaddingException e) {
+ System.out.println("Test failed!");
+ throw e;
+ }
+ }
+
+ private void dumpBytes(byte[] bytes) {
+ for (byte b : bytes) {
+ System.out.print(Integer.toHexString(b));
+ }
+
+ System.out.println();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestNonexpanding.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.spec.InvalidParameterSpecException;
+import java.util.Random;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.ShortBufferException;
+import javax.crypto.spec.GCMParameterSpec;
+
+/**
+ * @test
+ * @bug 8043836
+ * @summary Test AES encryption with no padding. Expect the original data length
+ * is the same as the encrypted data.
+ */
+public class TestNonexpanding {
+
+ private static final String ALGORITHM = "AES";
+ private static final String PROVIDER = "SunJCE";
+ private static final String[] MODES = { "ECb", "CbC", "OFB", "OFB150",
+ "cFB", "CFB7", "cFB8", "cFB16", "cFB24", "cFB32", "Cfb40", "cfB48",
+ "cfB56", "cfB64", "cfB72", "cfB80", "cfB88", "cfB96", "cfb104",
+ "cfB112", "cfB120", "GCM" };
+ private static final String PADDING = "NoPadding";
+ private static final int KEY_LENGTH = 128;
+
+ public static void main(String argv[]) throws Exception {
+ TestNonexpanding test = new TestNonexpanding();
+ for (String mode : MODES) {
+ test.runTest(ALGORITHM, mode, PADDING);
+ }
+ }
+
+ public void runTest(String algo, String mo, String pad) throws Exception {
+ Cipher ci = null;
+ SecretKey key = null;
+ try {
+ // Initialization
+ Random rdm = new Random();
+ byte[] plainText = new byte[128];
+ rdm.nextBytes(plainText);
+
+ ci = Cipher.getInstance(algo + "/" + mo + "/" + pad, PROVIDER);
+
+ KeyGenerator kg = KeyGenerator.getInstance(algo, PROVIDER);
+ kg.init(KEY_LENGTH);
+ key = kg.generateKey();
+
+ // encrypt
+ ci.init(Cipher.ENCRYPT_MODE, key);
+ byte[] cipherText = new byte[ci.getOutputSize(plainText.length)];
+ int offset = ci.update(plainText, 0, plainText.length, cipherText,
+ 0);
+ ci.doFinal(cipherText, offset);
+
+ // Comparison
+ if (!(plainText.length == cipherText.length)) {
+ // The result of encryption in GCM is a combination of an
+ // authentication tag and cipher text.
+ if (mo.equalsIgnoreCase("GCM")) {
+ GCMParameterSpec spec = ci.getParameters().getParameterSpec(GCMParameterSpec.class);
+ int cipherTextLength = cipherText.length - spec.getTLen()
+ / 8;
+ if (plainText.length == cipherTextLength) {
+ return;
+ }
+ }
+ System.out.println("Original length: " + plainText.length);
+ System.out.println("Cipher text length: " + cipherText.length);
+ throw new RuntimeException("Test failed!");
+ }
+ } catch (NoSuchAlgorithmException e) {
+ //CFB7 and OFB150 are for negative testing
+ if (!mo.equalsIgnoreCase("CFB7") && !mo.equalsIgnoreCase("OFB150")) {
+ System.out.println("Unexpected NoSuchAlgorithmException with mode: "
+ + mo);
+ throw new RuntimeException("Test failed!");
+ }
+ } catch ( NoSuchProviderException | NoSuchPaddingException
+ | InvalidKeyException | InvalidParameterSpecException
+ | ShortBufferException | IllegalBlockSizeException
+ | BadPaddingException e) {
+ System.out.println("Test failed!");
+ throw e;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestSameBuffer.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Random;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.ShortBufferException;
+import javax.crypto.spec.IvParameterSpec;
+
+/**
+ * @test
+ * @bug 8043836
+ * @summary Test AES ciphers with different modes and padding schemes (ECB mode
+ * doesn't use IV). The test tries 3 different read methods of
+ * CipherInputStream.
+ */
+public class TestSameBuffer {
+
+ private static final String ALGORITHM = "Rijndael";
+ private static final String PROVIDER = "SunJCE";
+ private static final String[] MODES = { "ECb", "CbC", "OFB", "CFB150",
+ "cFB", "CFB7", " cFB8", "cFB16", "cFB24", "cFB32", "Cfb40",
+ "cfB48", " cfB56", "cfB64", "cfB72", "cfB80", "cfB88", "cfB96",
+ "cfb104", "cfB112", "cfB120" };
+ private static final String PADDING = "NoPadding";
+ private static final int KEY_LENGTH = 128;
+
+ public static void main(String argv[]) throws Exception {
+ TestSameBuffer test = new TestSameBuffer();
+ for (String mode : MODES) {
+ test.runTest(ALGORITHM, mode, PADDING);
+ }
+ }
+
+ public void runTest(String algo, String mo, String pad) throws Exception {
+ Cipher ci = null;
+ byte[] iv = null;
+ AlgorithmParameterSpec aps = null;
+ SecretKey key = null;
+ try {
+ // Initialization
+ Random rdm = new Random();
+ byte[] plainText = new byte[128];
+ rdm.nextBytes(plainText);
+
+ // keep the plain text
+ byte[] tmpText = new byte[plainText.length];
+ for (int i = 0; i < plainText.length; i++) {
+ tmpText[i] = plainText[i];
+ }
+
+ ci = Cipher.getInstance(algo + "/" + mo + "/" + pad, PROVIDER);
+
+ KeyGenerator kg = KeyGenerator.getInstance(algo, PROVIDER);
+ kg.init(KEY_LENGTH);
+ key = kg.generateKey();
+
+ // encrypt
+ ci.init(Cipher.ENCRYPT_MODE, key);
+ int offset = ci
+ .update(plainText, 0, plainText.length, plainText, 0);
+ ci.doFinal(plainText, offset);
+
+ if (!mo.equalsIgnoreCase("ECB")) {
+ iv = ci.getIV();
+ aps = new IvParameterSpec(iv);
+ } else {
+ aps = null;
+ }
+
+ ci.init(Cipher.DECRYPT_MODE, key, aps);
+ byte[] recoveredText = new byte[ci.getOutputSize(plainText.length)];
+ ci.doFinal(plainText, 0, plainText.length, recoveredText);
+
+ // Comparison
+ if (!java.util.Arrays.equals(tmpText, recoveredText)) {
+ System.out.println("Original: ");
+ dumpBytes(plainText);
+ System.out.println("Recovered: ");
+ dumpBytes(recoveredText);
+ throw new RuntimeException(
+ "Original text is not equal with recovered text, with mode:"
+ + mo);
+ }
+
+ } catch (NoSuchAlgorithmException e) {
+ //CFB7 and CFB150 are for negative testing
+ if (!mo.equalsIgnoreCase("CFB7") && !mo.equalsIgnoreCase("CFB150")) {
+ System.out.println("Unexpected NoSuchAlgorithmException with mode: "
+ + mo);
+ throw new RuntimeException("Test failed!");
+ }
+ } catch (NoSuchProviderException | NoSuchPaddingException
+ | InvalidKeyException | InvalidAlgorithmParameterException
+ | ShortBufferException | IllegalBlockSizeException
+ | BadPaddingException e) {
+ System.out.println("Test failed!");
+ throw e;
+ }
+ }
+
+ private void dumpBytes(byte[] bytes) {
+ for (byte b : bytes) {
+ System.out.print(Integer.toHexString(b));
+ }
+
+ System.out.println();
+ }
+}
--- a/jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/test/java/lang/SecurityManager/CheckPackageAccess.java Mon Aug 11 11:00:20 2014 -0700
@@ -92,8 +92,6 @@
String osName = System.getProperty("os.name");
if (osName.contains("OS X")) {
pkgs.add("apple."); // add apple package for OS X
- } else if (osName.startsWith("Windows")) {
- pkgs.add("com.sun.java.accessibility.");
}
List<String> jspkgs =
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/SecurityManager/CheckSecurityProvider.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2014, 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 6997010
+ * @summary Consolidate java.security files into one file with modifications
+ */
+
+import java.security.Provider;
+import java.security.Security;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/*
+ * The main benefit of this test is to catch merge errors or other types
+ * of issues where one or more of the security providers are accidentally
+ * removed. This is why the known security providers have to
+ * be explicitly listed below.
+ */
+public class CheckSecurityProvider {
+ public static void main(String[] args) throws Exception {
+
+ String os = System.getProperty("os.name");
+
+ /*
+ * This array should be updated whenever new security providers
+ * are added to the the java.security file.
+ * NOTE: it should be in the same order as the java.security file
+ */
+
+ List<String> expected = new ArrayList<>();
+
+ if (os.equals("SunOS")) {
+ if (!isOpenJDKOnly()) {
+ expected.add("com.oracle.security.ucrypto.UcryptoProvider");
+ }
+ expected.add("sun.security.pkcs11.SunPKCS11");
+ }
+ expected.add("sun.security.provider.Sun");
+ expected.add("sun.security.rsa.SunRsaSign");
+ expected.add("sun.security.ec.SunEC");
+ expected.add("com.sun.net.ssl.internal.ssl.Provider");
+ expected.add("com.sun.crypto.provider.SunJCE");
+ expected.add("sun.security.jgss.SunProvider");
+ expected.add("com.sun.security.sasl.Provider");
+ expected.add("org.jcp.xml.dsig.internal.dom.XMLDSigRI");
+ expected.add("sun.security.smartcardio.SunPCSC");
+ if (os.startsWith("Windows")) {
+ expected.add("sun.security.mscapi.SunMSCAPI");
+ }
+ if (os.contains("OS X")) {
+ expected.add("apple.security.AppleProvider");
+ }
+
+ Iterator<String> iter = expected.iterator();
+ for (Provider p: Security.getProviders()) {
+ if (!iter.hasNext()) {
+ throw new Exception("Less expected");
+ }
+ String n1 = iter.next();
+ String n2 = p.getClass().getName();
+ if (!n1.equals(n2)) {
+ throw new Exception("Expected " + n1 + ", actual " + n2);
+ }
+ }
+ if (iter.hasNext()) {
+ throw new Exception("More expected");
+ }
+ }
+
+ // Copied from CheckPackageAccess.java in the same directory
+ private static boolean isOpenJDKOnly() {
+ String prop = System.getProperty("java.runtime.name");
+ return prop != null && prop.startsWith("OpenJDK");
+ }
+}
--- a/jdk/test/java/net/ipv6tests/Tests.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/test/java/net/ipv6tests/Tests.java Mon Aug 11 11:00:20 2014 -0700
@@ -26,6 +26,9 @@
import java.util.*;
public class Tests {
+
+ static boolean isWindows = System.getProperty("os.name").startsWith("Windows");
+
/**
* performs a simple exchange of data between the two sockets
* and throws an exception if there is any problem.
@@ -264,6 +267,12 @@
if (ifs != null) {
while (ifs.hasMoreElements()) {
NetworkInterface nic = (NetworkInterface)ifs.nextElement();
+ // Skip (Windows)Teredo Tunneling Pseudo-Interface
+ if (isWindows) {
+ String dName = nic.getDisplayName();
+ if (dName != null && dName.contains("Teredo"))
+ continue;
+ }
try {
if (nic.isUp() && !nic.isLoopback())
return nic;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/Calendar/SupplementalJapaneseEraTest.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014, 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.
+ */
+
+import java.text.SimpleDateFormat;
+import java.time.chrono.JapaneseDate;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import static java.util.GregorianCalendar.*;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/*
+ * Usage:
+ * java SupplementalJapaneseEraTest <flag>
+ * <flag>
+ * -s prints start time for a test era
+ * -e prints the English name of the last predefined era
+ *
+ * java -Djdk.calendar.japanese.supplemental.era=... SupplementalJapaneseEraTest <flag>
+ * -t executes tests with a valid property value
+ * -b <eraname>
+ * executes tests with an invalid property value
+ * <eraname> must be the output with -e
+ */
+
+public class SupplementalJapaneseEraTest {
+ private static final Locale WAREKI_LOCALE = Locale.forLanguageTag("ja-JP-u-ca-japanese");
+ private static final String NEW_ERA_NAME = "NewEra";
+ private static final String NEW_ERA_ABBR = "N.E.";
+ private static int errors = 0;
+
+ public static void main(String[] args) {
+ // args[0] is a flag.
+ switch (args[0]) {
+ case "-s":
+ // print the start time of the new era for testing
+ Calendar cal = new Calendar.Builder()
+ .setCalendarType("japanese")
+ .setTimeZone(TimeZone.getTimeZone("GMT"))
+ .setDate(200, FEBRUARY, 11)
+ .build();
+ System.out.println(cal.getTimeInMillis());
+ break;
+
+ case "-e":
+ // print the current era name in English
+ Calendar jcal = new Calendar.Builder()
+ .setCalendarType("japanese")
+ .setFields(YEAR, 1, DAY_OF_YEAR, 1)
+ .build();
+ System.out.println(jcal.getDisplayName(ERA, LONG, Locale.US));
+ break;
+
+ case "-t":
+ // test with a valid property value
+ testProperty();
+ break;
+
+ case "-b":
+ // test with an invalid property value
+ // args[1] is the current era name given by -e.
+ testValidation(args[1].replace("\r", "")); // remove any CR for Cygwin
+ break;
+ }
+ if (errors != 0) {
+ throw new RuntimeException("test failed");
+ }
+ }
+
+ private static void testProperty() {
+ Calendar jcal = new Calendar.Builder()
+ .setCalendarType("japanese")
+ .setFields(YEAR, 1, DAY_OF_YEAR, 1)
+ .build();
+ Date firstDayOfEra = jcal.getTime();
+
+ jcal.set(ERA, jcal.get(ERA) - 1); // previous era
+ jcal.set(YEAR, 1);
+ jcal.set(DAY_OF_YEAR, 1);
+ Calendar cal = new GregorianCalendar();
+ cal.setTimeInMillis(jcal.getTimeInMillis());
+ cal.add(YEAR, 199);
+ int year = cal.get(YEAR);
+
+ SimpleDateFormat sdf;
+ String expected, got;
+
+ // test long era name
+ sdf = new SimpleDateFormat("GGGG y-MM-dd", WAREKI_LOCALE);
+ got = sdf.format(firstDayOfEra);
+ expected = NEW_ERA_NAME + " 1-02-11";
+ if (!expected.equals(got)) {
+ System.err.printf("GGGG y-MM-dd: got=\"%s\", expected=\"%s\"%n", got, expected);
+ errors++;
+ }
+
+ // test era abbreviation
+ sdf = new SimpleDateFormat("G y-MM-dd", WAREKI_LOCALE);
+ got = sdf.format(firstDayOfEra);
+ expected = NEW_ERA_ABBR+" 1-02-11";
+ if (!expected.equals(got)) {
+ System.err.printf("GGGG y-MM-dd: got=\"%s\", expected=\"%s\"%n", got, expected);
+ errors++;
+ }
+
+ // confirm the gregorian year
+ sdf = new SimpleDateFormat("y", Locale.US);
+ int y = Integer.parseInt(sdf.format(firstDayOfEra));
+ if (y != year) {
+ System.err.printf("Gregorian year: got=%d, expected=%d%n", y, year);
+ errors++;
+ }
+
+ // test java.time.chrono.JapaneseEra
+ JapaneseDate jdate = JapaneseDate.of(year, 2, 11);
+ got = jdate.toString();
+ expected = "Japanese " + NEW_ERA_NAME + " 1-02-11";
+ if (!expected.equals(got)) {
+ System.err.printf("JapaneseDate: got=\"%s\", expected=\"%s\"%n", got, expected);
+ errors++;
+ }
+ }
+
+ private static void testValidation(String eraName) {
+ Calendar jcal = new Calendar.Builder()
+ .setCalendarType("japanese")
+ .setFields(YEAR, 1, DAY_OF_YEAR, 1)
+ .build();
+ if (!jcal.getDisplayName(ERA, LONG, Locale.US).equals(eraName)) {
+ errors++;
+ String prop = System.getProperty("jdk.calendar.japanese.supplemental.era");
+ System.err.println("Era changed with invalid property: " + prop);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/Calendar/SupplementalJapaneseEraTest.sh Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,74 @@
+#
+# Copyright (c) 2014, 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 8048123
+# @summary Test for jdk.calendar.japanese.supplemental.era support
+# @build SupplementalJapaneseEraTest
+# @run shell SupplementalJapaneseEraTest.sh
+
+PROPERTY=jdk.calendar.japanese.supplemental.era
+STATUS=0
+
+# get the start time of the fictional next era
+SINCE=`${TESTJAVA}/bin/java -cp "${TESTCLASSES}" SupplementalJapaneseEraTest -s`
+
+echo "Tests with valid property values..."
+for P in "name=NewEra,abbr=N.E.,since=$SINCE" \
+ "name = NewEra, abbr = N.E., since = $SINCE"
+do
+ if ${TESTJAVA}/bin/java ${TESTVMOPTS} -cp "${TESTCLASSES}" \
+ -D$PROPERTY="$P" SupplementalJapaneseEraTest -t; then
+ echo "$P: passed"
+ else
+ echo "$P: failed"
+ STATUS=1
+ fi
+done
+
+# get the name of the current era to be used to confirm that
+# invalid property values are ignored.
+ERA=`${TESTJAVA}/bin/java -cp "${TESTCLASSES}" SupplementalJapaneseEraTest -e`
+
+echo "Tests with invalid property values..."
+for P in "foo=Bar,name=NewEra,abbr=N.E.,since=$SINCE" \
+ "=NewEra,abbr=N.E.,since=$SINCE" \
+ "=,abbr=N.E.,since=$SINCE" \
+ "name,abbr=N.E.,since=$SINCE" \
+ "abbr=N.E.,since=$SINCE" \
+ "name=NewEra,since=$SINCE" \
+ "name=,abbr=N.E.,since=$SINCE" \
+ "name=NewEra,abbr=,since=$SINCE" \
+ "name=NewEra,abbr=N.E." \
+ "name=NewEra,abbr=N.E.,since=0" \
+ "name=NewEra,abbr=N.E.,since=9223372036854775808" # Long.MAX_VALUE+1
+do
+ if ${TESTJAVA}/bin/java ${TESTVMOPTS} -cp "${TESTCLASSES}" \
+ -D$PROPERTY="$P" SupplementalJapaneseEraTest -b "$ERA"; then
+ echo "$P: passed"
+ else
+ echo "$P: failed"
+ STATUS=1
+ fi
+done
+exit $STATUS
--- a/jdk/test/java/util/StringJoiner/MergeTest.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/test/java/util/StringJoiner/MergeTest.java Mon Aug 11 11:00:20 2014 -0700
@@ -23,7 +23,7 @@
/**
* @test
- * @bug 8017231 8020977
+ * @bug 8017231 8020977 8054221
* @summary test StringJoiner::merge
* @run testng MergeTest
*/
@@ -36,98 +36,135 @@
@Test
public class MergeTest {
- public void testNull() {
- StringJoiner sj = new StringJoiner(",", "{", "}");
- try {
- sj.merge(null);
- fail("Should throw NullPointerException!");
- } catch (NullPointerException npe) {
- // expected
+ private final static String[] PREFIXES = {"", "{", "@#$%"};
+ private final static String[] SUFFIXES = {"", "}", "*&%$"};
+
+ private static class Fixes {
+ public String pre0, suf0;
+ public String pre1, suf1;
+ public Fixes(String prefix0, String suffix0,
+ String prefix1, String suffix1) {
+ this.pre0 = prefix0;
+ this.suf0 = suffix0;
+ this.pre1 = prefix1;
+ this.suf1 = suffix1;
}
}
- public void testSimple() {
+ private static Stream<Fixes> fixesStream() {
+ Stream.Builder<Fixes> builder = Stream.builder();
+ for (final String prefix0 : PREFIXES) {
+ for (final String suffix0 : SUFFIXES) {
+ for (final String prefix1 : PREFIXES) {
+ for (final String suffix1 : SUFFIXES) {
+ builder.accept(new Fixes(prefix0, suffix0,
+ prefix1, suffix1));
+ }
+ }
+ }
+ }
+ return builder.build();
+ }
+
+ @Test(expectedExceptions = {NullPointerException.class})
+ public void testNull() {
StringJoiner sj = new StringJoiner(",", "{", "}");
- StringJoiner other = new StringJoiner(",", "[", "]");
- Stream.of("a", "b", "c").forEachOrdered(sj::add);
- Stream.of("d", "e", "f").forEachOrdered(other::add);
+ sj.merge(null);
+ }
- sj.merge(other);
- assertEquals(sj.toString(), "{a,b,c,d,e,f}");
+ public void testSimple() {
+ fixesStream().forEach(fixes -> {
+ StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0);
+ StringJoiner other = new StringJoiner(",", fixes.pre1, fixes.suf1);
+ Stream.of("a", "b", "c").forEachOrdered(sj::add);
+ Stream.of("d", "e", "f").forEachOrdered(other::add);
+
+ sj.merge(other);
+ assertEquals(sj.toString(), fixes.pre0 + "a,b,c,d,e,f" + fixes.suf0);
+ });
}
public void testEmptyOther() {
- StringJoiner sj = new StringJoiner(",", "{", "}");
- StringJoiner other = new StringJoiner(",", "[", "]");
- Stream.of("a", "b", "c").forEachOrdered(sj::add);
+ fixesStream().forEach(fixes -> {
+ StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0);
+ StringJoiner other = new StringJoiner(",", fixes.pre1, fixes.suf1);
+ Stream.of("a", "b", "c").forEachOrdered(sj::add);
- sj.merge(other);
- assertEquals(sj.toString(), "{a,b,c}");
+ sj.merge(other);
+ assertEquals(sj.toString(), fixes.pre0 + "a,b,c" + fixes.suf0);
- other.setEmptyValue("EMPTY");
- sj.merge(other);
- assertEquals(sj.toString(), "{a,b,c}");
+ other.setEmptyValue("EMPTY");
+ sj.merge(other);
+ assertEquals(sj.toString(), fixes.pre0 + "a,b,c" + fixes.suf0);
+ });
}
public void testEmptyThis() {
- StringJoiner sj = new StringJoiner(",", "{", "}");
- StringJoiner other = new StringJoiner(":", "[", "]");
- Stream.of("d", "e", "f").forEachOrdered(other::add);
+ fixesStream().forEach(fixes -> {
+ StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0);
+ StringJoiner other = new StringJoiner(":", fixes.pre1, fixes.suf1);
+ Stream.of("d", "e", "f").forEachOrdered(other::add);
- sj.merge(other);
- assertEquals(sj.toString(), "{d:e:f}");
+ sj.merge(other);
+ assertEquals(sj.toString(), fixes.pre0 + "d:e:f" + fixes.suf0);
- sj = new StringJoiner(",", "{", "}").setEmptyValue("EMPTY");
- assertEquals(sj.toString(), "EMPTY");
- sj.merge(other);
- assertEquals(sj.toString(), "{d:e:f}");
+ sj = new StringJoiner(",", fixes.pre0, fixes.suf0).setEmptyValue("EMPTY");
+ assertEquals(sj.toString(), "EMPTY");
+ sj.merge(other);
+ assertEquals(sj.toString(), fixes.pre0 + "d:e:f" + fixes.suf0);
+ });
}
public void testEmptyBoth() {
- StringJoiner sj = new StringJoiner(",", "{", "}");
- StringJoiner other = new StringJoiner(":", "[", "]");
+ fixesStream().forEach(fixes -> {
+ StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0);
+ StringJoiner other = new StringJoiner(":", fixes.pre1, fixes.suf1);
- sj.merge(other);
- assertEquals(sj.toString(), "{}");
+ sj.merge(other);
+ assertEquals(sj.toString(), fixes.pre0 + fixes.suf0);
- other.setEmptyValue("NOTHING");
- sj.merge(other);
- assertEquals(sj.toString(), "{}");
+ other.setEmptyValue("NOTHING");
+ sj.merge(other);
+ assertEquals(sj.toString(), fixes.pre0 + fixes.suf0);
- sj = new StringJoiner(",", "{", "}").setEmptyValue("EMPTY");
- assertEquals(sj.toString(), "EMPTY");
- sj.merge(other);
- assertEquals(sj.toString(), "EMPTY");
+ sj = new StringJoiner(",", fixes.pre0, fixes.suf0).setEmptyValue("EMPTY");
+ assertEquals(sj.toString(), "EMPTY");
+ sj.merge(other);
+ assertEquals(sj.toString(), "EMPTY");
+ });
}
public void testCascadeEmpty() {
- StringJoiner sj = new StringJoiner(",", "{", "}");
- StringJoiner o1 = new StringJoiner(":", "[", "]").setEmptyValue("Empty1");
- StringJoiner o2 = new StringJoiner(",", "<", ">").setEmptyValue("Empty2");
+ fixesStream().forEach(fixes -> {
+ StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0);
+ StringJoiner o1 = new StringJoiner(":", fixes.pre1, fixes.suf1).setEmptyValue("Empty1");
+ StringJoiner o2 = new StringJoiner(",", "<", ">").setEmptyValue("Empty2");
- o1.merge(o2);
- assertEquals(o1.toString(), "Empty1");
+ o1.merge(o2);
+ assertEquals(o1.toString(), "Empty1");
- sj.merge(o1);
- assertEquals(sj.toString(), "{}");
+ sj.merge(o1);
+ assertEquals(sj.toString(), fixes.pre0 + fixes.suf0);
+ });
}
public void testDelimiter() {
- StringJoiner sj = new StringJoiner(",", "{", "}");
- StringJoiner other = new StringJoiner(":", "[", "]");
- Stream.of("a", "b", "c").forEachOrdered(sj::add);
- Stream.of("d", "e", "f").forEachOrdered(other::add);
+ fixesStream().forEach(fixes -> {
+ StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0);
+ StringJoiner other = new StringJoiner(":", fixes.pre1, fixes.suf1);
+ Stream.of("a", "b", "c").forEachOrdered(sj::add);
+ Stream.of("d", "e", "f").forEachOrdered(other::add);
- sj.merge(other);
- assertEquals(sj.toString(), "{a,b,c,d:e:f}");
+ sj.merge(other);
+ assertEquals(sj.toString(), fixes.pre0 + "a,b,c,d:e:f" + fixes.suf0);
+ });
}
public void testMergeSelf() {
- final StringJoiner sj = new StringJoiner(",", "[", "]").add("a").add("b");
- assertEquals(sj.merge(sj).toString(), "[a,b,a,b]");
- assertEquals(sj.merge(sj).toString(), "[a,b,a,b,a,b,a,b]");
-
- final StringJoiner sj2 = new StringJoiner(",").add("c").add("d");
- assertEquals(sj2.merge(sj2).toString(), "c,d,c,d");
+ fixesStream().forEach(fixes -> {
+ final StringJoiner sj = new StringJoiner(",", fixes.pre0, fixes.suf0).add("a").add("b");
+ assertEquals(sj.merge(sj).toString(), fixes.pre0 + "a,b,a,b" + fixes.suf0);
+ assertEquals(sj.merge(sj).toString(), fixes.pre0 + "a,b,a,b,a,b,a,b" + fixes.suf0);
+ });
}
}
--- a/jdk/test/java/util/StringJoiner/StringJoinerTest.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/test/java/util/StringJoiner/StringJoinerTest.java Mon Aug 11 11:00:20 2014 -0700
@@ -305,9 +305,9 @@
sj.add("2");
assertEquals(sj.toString(), prefix + "1" + infix + "2" + suffix);
sj.add("");
- assertEquals(sj.toString(), prefix + "1" + infix + "2" +infix + suffix);
+ assertEquals(sj.toString(), prefix + "1" + infix + "2" + infix + suffix);
sj.add("3");
- assertEquals(sj.toString(), prefix + "1" + infix + "2" +infix + infix + "3" + suffix);
+ assertEquals(sj.toString(), prefix + "1" + infix + "2" + infix + infix + "3" + suffix);
}
public void testDelimiterCombinations() {
--- a/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java Mon Aug 11 11:00:20 2014 -0700
@@ -73,7 +73,6 @@
public final class MonitorVmStartTerminate {
private static final int PROCESS_COUNT = 10;
- private static final long PROCESS_TIMEOUT_IN_NS = 1000*1000_000_000L;
public static void main(String... args) throws Exception {
@@ -223,13 +222,12 @@
private static void createFile(Path path) throws IOException {
Files.write(path, new byte[0], StandardOpenOption.CREATE);
- if (!Files.exists(path)) {
- throw new Error("Newly created file " + path
- + " does not exist!");
- }
}
private static void waitForRemoval(Path path) {
+ String timeoutFactorText = System.getProperty("test.timeout.factor", "1.0");
+ double timeoutFactor = Double.parseDouble(timeoutFactorText);
+ long timeoutNanos = 1000_000_000L*(long)(1000*timeoutFactor);
long start = System.nanoTime();
while (true) {
long now = System.nanoTime();
@@ -238,10 +236,10 @@
if (!Files.exists(path)) {
return;
}
- if (waited > PROCESS_TIMEOUT_IN_NS) {
+ if (waited > timeoutNanos) {
System.out.println("Start: " + start);
System.out.println("Now: " + now);
- System.out.print("Process timed out after " + waited + " ns. Abort.");
+ System.out.println("Process timed out after " + waited + " ns. Abort.");
System.exit(1);
}
takeNap();
@@ -293,7 +291,14 @@
public void terminate() {
try {
System.out.println("Terminating " + mainArgsIdentifier);
- Files.delete(Paths.get(mainArgsIdentifier));
+ // File must be created before proceeding,
+ // otherwise Java process may loop forever
+ // waiting for file to be removed.
+ Path path = Paths.get(mainArgsIdentifier);
+ while (!Files.exists(path)) {
+ takeNap();
+ }
+ Files.delete(path);
} catch (IOException e) {
e.printStackTrace();
}
@@ -303,10 +308,11 @@
private void executeJava() throws Exception, IOException {
String className = JavaProcess.class.getName();
String classPath = System.getProperty("test.classes");
- ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-cp",
- classPath, className, mainArgsIdentifier);
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+ "-Dtest.timeout.factor=" + System.getProperty("test.timeout.factor", "1.0"),
+ "-cp", classPath, className, mainArgsIdentifier);
OutputBuffer ob = ProcessTools.getOutput(pb.start());
- System.out.println("Java Process " + getMainArgsIdentifier() + " stder:"
+ System.out.println("Java Process " + getMainArgsIdentifier() + " stderr:"
+ ob.getStderr());
System.err.println("Java Process " + getMainArgsIdentifier() + " stdout:"
+ ob.getStdout());
--- a/jdk/test/sun/security/smartcardio/TestAll.java Sun Aug 10 19:39:01 2014 -0700
+++ b/jdk/test/sun/security/smartcardio/TestAll.java Mon Aug 11 11:00:20 2014 -0700
@@ -40,6 +40,7 @@
TestMultiplePresent.class,
TestPresent.class,
TestTransmit.class,
+ TestDirect.class,
};
public static void main(String[] args) throws Exception {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/smartcardio/TestDirect.java Mon Aug 11 11:00:20 2014 -0700
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2014, 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 8046343
+ * @summary Make sure that direct protocol is available
+ * @run main/manual TestDirect
+ */
+
+// This test requires special hardware.
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardTerminal;
+import javax.smartcardio.CardTerminals;
+import javax.smartcardio.TerminalFactory;
+
+public class TestDirect {
+ public static void main(String[] args) throws Exception {
+ TerminalFactory terminalFactory = TerminalFactory.getDefault();
+ CardTerminals cardTerminals = terminalFactory.terminals();
+ CardTerminal cardTerminal = cardTerminals.list().get(0);
+ Card card = cardTerminal.connect("DIRECT");
+ card.disconnect(true);
+
+ System.out.println("OK.");
+ }
+}