Merge
authoramurillo
Tue, 01 Dec 2015 11:12:27 -0800
changeset 34378 129633be5db2
parent 34377 88b91bf5db89 (current diff)
parent 34357 231fdaed751a (diff)
child 34379 e9e364c8c44e
Merge
--- 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");