SecurityTools.java revision 2437:905aa8122624
1184989Srafan/* 266963Speter * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved. 3176187Srafan * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 466963Speter * 566963Speter * This code is free software; you can redistribute it and/or modify it 666963Speter * under the terms of the GNU General Public License version 2 only, as 766963Speter * published by the Free Software Foundation. 866963Speter * 966963Speter * This code is distributed in the hope that it will be useful, but WITHOUT 1066963Speter * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1166963Speter * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1266963Speter * version 2 for more details (a copy is included in the LICENSE file that 1366963Speter * accompanied this code). 1466963Speter * 1566963Speter * You should have received a copy of the GNU General Public License version 1666963Speter * 2 along with this work; if not, write to the Free Software Foundation, 1766963Speter * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1866963Speter * 1966963Speter * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2066963Speter * or visit www.oracle.com if you need additional information or have any 2166963Speter * questions. 2266963Speter */ 2366963Speter 2466963Speterpackage jdk.test.lib; 2566963Speter 2666963Speterimport java.util.ArrayList; 2766963Speterimport java.util.Collections; 2866963Speterimport java.util.List; 2966963Speterimport jdk.test.lib.process.OutputAnalyzer; 3066963Speterimport jdk.test.lib.process.ProcessTools; 3166963Speter 3266963Speterpublic class SecurityTools { 3366963Speter 3466963Speter public static final String NO_ALIAS = null; 3566963Speter 3666963Speter // keytool 3766963Speter 3897049Speter public static OutputAnalyzer keytool(List<String> options) 3997049Speter throws Throwable { 4066963Speter 4166963Speter JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("keytool") 4266963Speter .addVMArg("-Duser.language=en") 4366963Speter .addVMArg("-Duser.country=US"); 4466963Speter for (String option : options) { 4566963Speter if (option.startsWith("-J")) { 46166124Srafan launcher.addVMArg(option.substring(2)); 47166124Srafan } else { 4866963Speter launcher.addToolArg(option); 49176187Srafan } 50176187Srafan } 5166963Speter return ProcessTools.executeCommand(launcher.getCommand()); 5266963Speter } 5366963Speter 54166124Srafan public static OutputAnalyzer keytool(String options) throws Throwable { 5566963Speter return keytool(options.split("\\s+")); 56166124Srafan } 57166124Srafan 5866963Speter public static OutputAnalyzer keytool(String... options) throws Throwable { 5966963Speter return keytool(List.of(options)); 6066963Speter } 61166124Srafan 6297049Speter // jarsigner 63184989Srafan 64176187Srafan public static OutputAnalyzer jarsigner(String jar, String alias, 6566963Speter List<String> options) throws Throwable { 6666963Speter JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jarsigner") 67166124Srafan .addVMArg("-Duser.language=en") 68166124Srafan .addVMArg("-Duser.country=US"); 6966963Speter for (String option : options) { 7066963Speter if (option.startsWith("-J")) { 7166963Speter launcher.addVMArg(option.substring(2)); 72174993Srafan } else { 7366963Speter launcher.addToolArg(option); 7466963Speter } 75166124Srafan } 76166124Srafan launcher.addToolArg(jar); 7766963Speter if (alias != null) { 7866963Speter launcher.addToolArg(alias); 7966963Speter } 8066963Speter return ProcessTools.executeCommand(launcher.getCommand()); 8166963Speter } 82166124Srafan 8366963Speter public static OutputAnalyzer jarsigner(String jar, String alias, 8466963Speter String options) throws Throwable { 8566963Speter 8666963Speter return jarsigner(jar, alias, options.split("\\s+")); 8766963Speter } 88166124Srafan 89166124Srafan public static OutputAnalyzer jarsigner(String jar, String alias, 90166124Srafan String... options) throws Throwable { 91184989Srafan 92184989Srafan return jarsigner(jar, alias, List.of(options)); 93166124Srafan } 9466963Speter 9566963Speter public static OutputAnalyzer sign(String jar, String alias, String... options) 96166124Srafan throws Throwable { 97166124Srafan 9866963Speter return jarsigner(jar, alias, 9966963Speter mergeOptions("-J-Djava.security.egd=file:/dev/./urandom", options)); 10066963Speter } 10166963Speter 10266963Speter public static OutputAnalyzer verify(String jar, String... options) 103166124Srafan throws Throwable { 104166124Srafan 105166124Srafan return jarsigner(jar, NO_ALIAS, mergeOptions("-verify", options)); 10666963Speter } 10766963Speter 10866963Speter // helper methods 10966963Speter 11066963Speter private static List<String> mergeOptions( 111166124Srafan String firstOption, String... secondPart) { 112166124Srafan 11366963Speter return mergeOptions(List.of(firstOption), secondPart); 11466963Speter } 11566963Speter 116166124Srafan private static List<String> mergeOptions( 11766963Speter List<String> firstPart, String... secondPart) { 11866963Speter 11966963Speter List<String> options = new ArrayList<>(firstPart); 12066963Speter Collections.addAll(options, secondPart); 121166124Srafan return options; 122166124Srafan } 12366963Speter} 12466963Speter 12566963Speter