--- a/jdk/src/java.base/share/classes/java/io/ObjectStreamClass.java Mon Nov 30 13:55:09 2015 -0800
+++ b/jdk/src/java.base/share/classes/java/io/ObjectStreamClass.java Tue Dec 01 11:12:27 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -54,6 +54,8 @@
import sun.reflect.ReflectionFactory;
import sun.reflect.misc.ReflectUtil;
+import static java.io.ObjectStreamField.*;
+
/**
* Serialization's descriptor for classes. It contains the name and
* serialVersionUID of the class. The ObjectStreamClass for a specific class
@@ -1519,62 +1521,15 @@
* if class names equal, false otherwise.
*/
private static boolean classNamesEqual(String name1, String name2) {
- name1 = name1.substring(name1.lastIndexOf('.') + 1);
- name2 = name2.substring(name2.lastIndexOf('.') + 1);
- return name1.equals(name2);
+ int idx1 = name1.lastIndexOf('.') + 1;
+ int idx2 = name2.lastIndexOf('.') + 1;
+ int len1 = name1.length() - idx1;
+ int len2 = name2.length() - idx2;
+ return len1 == len2 &&
+ name1.regionMatches(idx1, name2, idx2, len1);
}
/**
- * Returns JVM type signature for given primitive.
- */
- private static String getPrimitiveSignature(Class<?> cl) {
- if (cl == Integer.TYPE)
- return "I";
- else if (cl == Byte.TYPE)
- return "B";
- else if (cl == Long.TYPE)
- return "J";
- else if (cl == Float.TYPE)
- return "F";
- else if (cl == Double.TYPE)
- return "D";
- else if (cl == Short.TYPE)
- return "S";
- else if (cl == Character.TYPE)
- return "C";
- else if (cl == Boolean.TYPE)
- return "Z";
- else if (cl == Void.TYPE)
- return "V";
- else
- throw new InternalError();
- }
-
- /**
- * Returns JVM type signature for given class.
- */
- static String getClassSignature(Class<?> cl) {
- if (cl.isPrimitive())
- return getPrimitiveSignature(cl);
- else
- return appendClassSignature(new StringBuilder(), cl).toString();
- }
-
- private static StringBuilder appendClassSignature(StringBuilder sbuf, Class<?> cl) {
- while (cl.isArray()) {
- sbuf.append('[');
- cl = cl.getComponentType();
- }
-
- if (cl.isPrimitive())
- sbuf.append(getPrimitiveSignature(cl));
- else
- sbuf.append('L').append(cl.getName().replace('.', '/')).append(';');
-
- return sbuf;
- }
-
- /**
* Returns JVM type signature for given list of parameters and return type.
*/
private static String getMethodSignature(Class<?>[] paramTypes,
--- a/jdk/src/java.base/share/classes/java/io/ObjectStreamField.java Mon Nov 30 13:55:09 2015 -0800
+++ b/jdk/src/java.base/share/classes/java/io/ObjectStreamField.java Tue Dec 01 11:12:27 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, 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
@@ -91,7 +91,7 @@
this.name = name;
this.type = type;
this.unshared = unshared;
- signature = ObjectStreamClass.getClassSignature(type).intern();
+ signature = getClassSignature(type).intern();
field = null;
}
@@ -124,6 +124,58 @@
}
/**
+ * Returns JVM type signature for given primitive.
+ */
+ private static String getPrimitiveSignature(Class<?> cl) {
+ if (cl == Integer.TYPE)
+ return "I";
+ else if (cl == Byte.TYPE)
+ return "B";
+ else if (cl == Long.TYPE)
+ return "J";
+ else if (cl == Float.TYPE)
+ return "F";
+ else if (cl == Double.TYPE)
+ return "D";
+ else if (cl == Short.TYPE)
+ return "S";
+ else if (cl == Character.TYPE)
+ return "C";
+ else if (cl == Boolean.TYPE)
+ return "Z";
+ else if (cl == Void.TYPE)
+ return "V";
+ else
+ throw new InternalError();
+ }
+
+ /**
+ * Returns JVM type signature for given class.
+ */
+ static String getClassSignature(Class<?> cl) {
+ if (cl.isPrimitive()) {
+ return getPrimitiveSignature(cl);
+ } else {
+ return appendClassSignature(new StringBuilder(), cl).toString();
+ }
+ }
+
+ static StringBuilder appendClassSignature(StringBuilder sbuf, Class<?> cl) {
+ while (cl.isArray()) {
+ sbuf.append('[');
+ cl = cl.getComponentType();
+ }
+
+ if (cl.isPrimitive()) {
+ sbuf.append(getPrimitiveSignature(cl));
+ } else {
+ sbuf.append('L').append(cl.getName().replace('.', '/')).append(';');
+ }
+
+ return sbuf;
+ }
+
+ /**
* Creates an ObjectStreamField representing the given field with the
* specified unshared setting. For compatibility with the behavior of
* earlier serialization implementations, a "showType" parameter is
@@ -137,7 +189,7 @@
name = field.getName();
Class<?> ftype = field.getType();
type = (showType || ftype.isPrimitive()) ? ftype : Object.class;
- signature = ObjectStreamClass.getClassSignature(ftype).intern();
+ signature = getClassSignature(ftype).intern();
}
/**
--- a/jdk/src/java.base/share/classes/sun/security/ssl/ServerHandshaker.java Mon Nov 30 13:55:09 2015 -0800
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/ServerHandshaker.java Tue Dec 01 11:12:27 2015 -0800
@@ -1415,8 +1415,8 @@
}
}
- // need EC cert signed using EC
- if (setupPrivateKeyAndChain("EC_EC") == false) {
+ // need EC cert
+ if (setupPrivateKeyAndChain("EC") == false) {
return false;
}
if (setupEphemeralECDHKeys() == false) {
@@ -1424,15 +1424,15 @@
}
break;
case K_ECDH_RSA:
- // need EC cert signed using RSA
- if (setupPrivateKeyAndChain("EC_RSA") == false) {
+ // need EC cert
+ if (setupPrivateKeyAndChain("EC") == false) {
return false;
}
setupStaticECDHKeys();
break;
case K_ECDH_ECDSA:
- // need EC cert signed using EC
- if (setupPrivateKeyAndChain("EC_EC") == false) {
+ // need EC cert
+ if (setupPrivateKeyAndChain("EC") == false) {
return false;
}
setupStaticECDHKeys();
--- a/jdk/test/TEST.groups Mon Nov 30 13:55:09 2015 -0800
+++ b/jdk/test/TEST.groups Tue Dec 01 11:12:27 2015 -0800
@@ -173,6 +173,7 @@
com/sun/security \
-com/sun/security/jgss \
com/sun/org/apache/xml/internal/security \
+ jdk/security \
sun/security \
-sun/security/krb5 \
-sun/security/jgss \
@@ -453,6 +454,7 @@
:jdk_jdi \
com/sun/tools \
demo \
+ jdk/security/jarsigner \
sun/security/tools/jarsigner \
sun/security/tools/policytool \
sun/rmi/rmic \
--- a/jdk/test/jdk/security/jarsigner/Function.java Mon Nov 30 13:55:09 2015 -0800
+++ b/jdk/test/jdk/security/jarsigner/Function.java Tue Dec 01 11:12:27 2015 -0800
@@ -71,13 +71,17 @@
" -keypass changeit -dname" +
" CN=RSA -alias r -genkeypair -keyalg rsa").split(" "));
- KeyStore ks = KeyStore.getInstance("JKS");
- ks.load(new FileInputStream("ks"), "changeit".toCharArray());
- PrivateKey key = (PrivateKey)ks.getKey("r", "changeit".toCharArray());
- Certificate cert = ks.getCertificate("r");
- JarSigner.Builder jsb = new JarSigner.Builder(key,
- CertificateFactory.getInstance("X.509").generateCertPath(
- Collections.singletonList(cert)));
+ JarSigner.Builder jsb;
+
+ try (FileInputStream fis = new FileInputStream("ks")) {
+ KeyStore ks = KeyStore.getInstance("JKS");
+ ks.load(fis, "changeit".toCharArray());
+ PrivateKey key = (PrivateKey)ks.getKey("r", "changeit".toCharArray());
+ Certificate cert = ks.getCertificate("r");
+ jsb = new JarSigner.Builder(key,
+ CertificateFactory.getInstance("X.509").generateCertPath(
+ Collections.singletonList(cert)));
+ }
jsb.digestAlgorithm("SHA1");
jsb.signatureAlgorithm("SHA1withRSA");