6819272: keytool -importcert should read the whole input
Reviewed-by: xuelei
This commit is contained in:
parent
e85a4d8536
commit
827d425560
@ -875,6 +875,18 @@ public final class KeyTool {
|
||||
if (filename != null) {
|
||||
inStream = new FileInputStream(filename);
|
||||
}
|
||||
// Read the full stream before feeding to X509Factory,
|
||||
// otherwise, keytool -gencert | keytool -importcert
|
||||
// might not work properly, since -gencert is slow
|
||||
// and there's no data in the pipe at the beginning.
|
||||
ByteArrayOutputStream bout = new ByteArrayOutputStream();
|
||||
byte[] b = new byte[4096];
|
||||
while (true) {
|
||||
int len = inStream.read(b);
|
||||
if (len < 0) break;
|
||||
bout.write(b, 0, len);
|
||||
}
|
||||
inStream = new ByteArrayInputStream(bout.toByteArray());
|
||||
try {
|
||||
String importAlias = (alias!=null)?alias:keyAlias;
|
||||
if (keyStore.entryInstanceOf(importAlias, KeyStore.PrivateKeyEntry.class)) {
|
||||
|
62
jdk/test/sun/security/tools/keytool/importreadall.sh
Normal file
62
jdk/test/sun/security/tools/keytool/importreadall.sh
Normal file
@ -0,0 +1,62 @@
|
||||
#
|
||||
# Copyright 2009 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
|
||||
# @test
|
||||
# @bug 6819272
|
||||
# @summary keytool -importcert should read the whole input
|
||||
#
|
||||
# @run shell importreadall.sh
|
||||
|
||||
# set a few environment variables so that the shell-script can run stand-alone
|
||||
# in the source directory
|
||||
if [ "${TESTSRC}" = "" ] ; then
|
||||
TESTSRC="."
|
||||
fi
|
||||
|
||||
if [ "${TESTJAVA}" = "" ] ; then
|
||||
JAVA_CMD=`which java`
|
||||
TESTJAVA=`dirname $JAVA_CMD`/..
|
||||
fi
|
||||
|
||||
# set platform-dependent variables
|
||||
OS=`uname -s`
|
||||
case "$OS" in
|
||||
Windows_* )
|
||||
FS="\\"
|
||||
;;
|
||||
* )
|
||||
FS="/"
|
||||
;;
|
||||
esac
|
||||
|
||||
KEYTOOL="${TESTJAVA}${FS}bin${FS}keytool -keystore importreadall.jks -storepass changeit -keypass changeit"
|
||||
|
||||
# In case the test is run twice in the same directory
|
||||
|
||||
$KEYTOOL -delete -alias a
|
||||
$KEYTOOL -delete -alias ca
|
||||
$KEYTOOL -genkeypair -alias a -dname CN=a || exit 1
|
||||
$KEYTOOL -genkeypair -alias ca -dname CN=ca || exit 2
|
||||
$KEYTOOL -certreq -alias a | $KEYTOOL -gencert -alias ca | $KEYTOOL -importcert -alias a
|
||||
|
||||
exit $?
|
Loading…
Reference in New Issue
Block a user