# HG changeset patch # User amurillo # Date 1448997147 28800 # Node ID 129633be5db243842f30ec3c541e29c167dccf85 # Parent 88b91bf5db895d0b9a40f89c2bbd98eb08508403# Parent 231fdaed751a4ea5916b593bd321e36534038b5c Merge diff -r 88b91bf5db89 -r 129633be5db2 jdk/src/java.base/share/classes/java/io/ObjectStreamClass.java --- 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, diff -r 88b91bf5db89 -r 129633be5db2 jdk/src/java.base/share/classes/java/io/ObjectStreamField.java --- 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(); } /** diff -r 88b91bf5db89 -r 129633be5db2 jdk/src/java.base/share/classes/sun/security/ssl/ServerHandshaker.java --- 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(); diff -r 88b91bf5db89 -r 129633be5db2 jdk/test/TEST.groups --- 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 \ diff -r 88b91bf5db89 -r 129633be5db2 jdk/test/jdk/security/jarsigner/Function.java --- 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");