0N/A#
5415N/A# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
0N/A# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A#
0N/A# This code is free software; you can redistribute it and/or modify it
0N/A# under the terms of the GNU General Public License version 2 only, as
0N/A# published by the Free Software Foundation.
0N/A#
0N/A# This code is distributed in the hope that it will be useful, but WITHOUT
0N/A# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A# version 2 for more details (a copy is included in the LICENSE file that
0N/A# accompanied this code).
0N/A#
0N/A# You should have received a copy of the GNU General Public License version
0N/A# 2 along with this work; if not, write to the Free Software Foundation,
0N/A# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A#
2362N/A# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A# or visit www.oracle.com if you need additional information or have any
2362N/A# questions.
0N/A#
0N/A
0N/A# @test
5415N/A# @bug 5094028 6219522 7083664
0N/A# @summary test new jarsigner -sigalg and -digestalg options
0N/A# @author Sean Mullan
0N/A#
0N/A# @run shell AlgOptions.sh
0N/A#
0N/A
0N/A# set a few environment variables so that the shell-script can run stand-alone
0N/A# in the source directory
0N/Aif [ "${TESTSRC}" = "" ] ; then
0N/A TESTSRC="."
0N/Afi
0N/Aif [ "${TESTCLASSES}" = "" ] ; then
0N/A TESTCLASSES="."
0N/Afi
0N/Aif [ "${TESTJAVA}" = "" ] ; then
0N/A echo "TESTJAVA not set. Test cannot execute."
0N/A echo "FAILED!!!"
0N/A exit 1
0N/Afi
0N/A
0N/A# set platform-dependent variables
0N/AOS=`uname -s`
0N/Acase "$OS" in
4638N/A SunOS | Linux | Darwin )
0N/A NULL=/dev/null
0N/A PS=":"
0N/A FS="/"
0N/A CP="${FS}bin${FS}cp -f"
0N/A ;;
1486N/A CYGWIN* )
1486N/A NULL=/dev/null
1486N/A PS=";"
1486N/A FS="/"
1486N/A CP="cp -f"
1486N/A ;;
0N/A Windows_* )
0N/A NULL=NUL
0N/A PS=";"
0N/A FS="\\"
0N/A CP="cp -f"
0N/A ;;
0N/A * )
0N/A echo "Unrecognized operating system!"
0N/A exit 1;
0N/A ;;
0N/Aesac
0N/A
0N/A# copy jar file into writeable location
0N/A${CP} ${TESTSRC}${FS}AlgOptions.jar ${TESTCLASSES}${FS}AlgOptionsTmp.jar
0N/A
0N/Afailed=0
0N/A# test missing signature algorithm arg
0N/A${TESTJAVA}${FS}bin${FS}jarsigner \
0N/A -keystore ${TESTSRC}${FS}JarSigning.keystore \
0N/A -storepass bbbbbb \
0N/A -sigalg \
0N/A ${TESTCLASSES}${FS}AlgOptionsTmp.jar c
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 1 failed"
0N/A failed=1
4638N/Aelse
0N/A echo "test 1 passed"
0N/Afi
0N/A
0N/A# test missing digest algorithm arg
0N/A${TESTJAVA}${FS}bin${FS}jarsigner \
0N/A -keystore ${TESTSRC}${FS}JarSigning.keystore \
0N/A -storepass bbbbbb \
0N/A -digestalg \
0N/A ${TESTCLASSES}${FS}AlgOptionsTmp.jar c
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 2 failed"
0N/A failed=1
4638N/Aelse
0N/A echo "test 2 passed"
0N/Afi
0N/A
4638N/A# test BOGUS signature algorithm
0N/A${TESTJAVA}${FS}bin${FS}jarsigner \
0N/A -keystore ${TESTSRC}${FS}JarSigning.keystore \
0N/A -storepass bbbbbb \
0N/A -sigalg BOGUS \
0N/A ${TESTCLASSES}${FS}AlgOptionsTmp.jar c
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 3 failed"
0N/A failed=1
4638N/Aelse
0N/A echo "test 3 passed"
0N/Afi
0N/A
4638N/A# test BOGUS digest algorithm
0N/A${TESTJAVA}${FS}bin${FS}jarsigner \
0N/A -keystore ${TESTSRC}${FS}JarSigning.keystore \
0N/A -storepass bbbbbb \
0N/A -digestalg BOGUS \
0N/A ${TESTCLASSES}${FS}AlgOptionsTmp.jar c
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 4 failed"
0N/A failed=1
4638N/Aelse
0N/A echo "test 4 passed"
0N/Afi
0N/A
4638N/A# test incompatible signature algorithm
0N/A${TESTJAVA}${FS}bin${FS}jarsigner \
0N/A -keystore ${TESTSRC}${FS}JarSigning.keystore \
0N/A -storepass bbbbbb \
0N/A -sigalg SHA1withDSA \
0N/A ${TESTCLASSES}${FS}AlgOptionsTmp.jar c
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 5 failed"
0N/A failed=1
4638N/Aelse
0N/A echo "test 5 passed"
0N/Afi
0N/A
4638N/A# test compatible signature algorithm
0N/A${TESTJAVA}${FS}bin${FS}jarsigner \
0N/A -keystore ${TESTSRC}${FS}JarSigning.keystore \
0N/A -storepass bbbbbb \
0N/A -sigalg SHA512withRSA \
0N/A ${TESTCLASSES}${FS}AlgOptionsTmp.jar c
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 6 passed"
4638N/Aelse
0N/A echo "test 6 failed"
0N/A failed=1
0N/Afi
0N/A
4638N/A# verify it
0N/A${TESTJAVA}${FS}bin${FS}jarsigner -verify ${TESTCLASSES}${FS}AlgOptionsTmp.jar
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 7 passed"
4638N/Aelse
0N/A echo "test 7 failed"
0N/A failed=1
0N/Afi
0N/A
4638N/A# test non-default digest algorithm
0N/A${TESTJAVA}${FS}bin${FS}jarsigner \
0N/A -keystore ${TESTSRC}${FS}JarSigning.keystore \
0N/A -storepass bbbbbb \
0N/A -digestalg SHA-256 \
0N/A ${TESTCLASSES}${FS}AlgOptionsTmp.jar c
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 8 passed"
4638N/Aelse
0N/A echo "test 8 failed"
0N/A failed=1
0N/Afi
0N/A
4638N/A# verify it
0N/A${TESTJAVA}${FS}bin${FS}jarsigner -verify ${TESTCLASSES}${FS}AlgOptionsTmp.jar
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 9 passed"
4638N/Aelse
0N/A echo "test 9 failed"
0N/A failed=1
0N/Afi
0N/A
0N/A# test SHA-512 digest algorithm (creates long lines)
0N/A${TESTJAVA}${FS}bin${FS}jarsigner \
0N/A -keystore ${TESTSRC}${FS}JarSigning.keystore \
0N/A -storepass bbbbbb \
0N/A -digestalg SHA-512 \
0N/A -sigalg SHA512withRSA \
0N/A ${TESTCLASSES}${FS}AlgOptionsTmp.jar c
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 10 passed"
4638N/Aelse
0N/A echo "test 10 failed"
0N/A failed=1
0N/Afi
0N/A
4638N/A# verify it
0N/A${TESTJAVA}${FS}bin${FS}jarsigner -verify ${TESTCLASSES}${FS}AlgOptionsTmp.jar
0N/ARESULT=$?
0N/Aif [ $RESULT -eq 0 ]; then
0N/A echo "test 11 passed"
4638N/Aelse
0N/A echo "test 11 failed"
0N/A failed=1
0N/Afi
0N/A
0N/Aif [ $failed -eq 1 ]; then
0N/A exit 1
0N/Aelse
0N/A exit 0
0N/Afi