Author: schultz Date: Mon Oct 9 21:55:29 2017 New Revision: 1811614 URL: http://svn.apache.org/viewvc?rev=1811614&view=rev Log: Add main method to OpenSSLCipherConfigurationParser and wrapper script to mimic "openssl ciphers" command.
Added: tomcat/trunk/bin/ciphers.sh (with props) Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/ciphers/OpenSSLCipherConfigurationParser.java Added: tomcat/trunk/bin/ciphers.sh URL: http://svn.apache.org/viewvc/tomcat/trunk/bin/ciphers.sh?rev=1811614&view=auto ============================================================================== --- tomcat/trunk/bin/ciphers.sh (added) +++ tomcat/trunk/bin/ciphers.sh Mon Oct 9 21:55:29 2017 @@ -0,0 +1,60 @@ +#!/bin/sh + +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# ----------------------------------------------------------------------------- +# Script to digest password using the algorithm specified +# ----------------------------------------------------------------------------- + +# Better OS/400 detection: see Bugzilla 31132 +os400=false +case "`uname`" in +OS400*) os400=true;; +esac + +# resolve links - $0 may be a softlink +PRG="$0" + +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`/"$link" + fi +done + +PRGDIR=`dirname "$PRG"` +EXECUTABLE=tool-wrapper.sh + +# Check that target executable exists +if $os400; then + # -x will Only work on the os400 if the files are: + # 1. owned by the user + # 2. owned by the PRIMARY group of the user + # this will not work if the user belongs in secondary groups + eval +else + if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then + echo "Cannot find $PRGDIR/$EXECUTABLE" + echo "The file is absent or does not have execute permission" + echo "This file is needed to run this program" + exit 1 + fi +fi + +exec "$PRGDIR"/"$EXECUTABLE" org.apache.tomcat.util.net.openssl.ciphers.OpenSSLCipherConfigurationParser "$@" Propchange: tomcat/trunk/bin/ciphers.sh ------------------------------------------------------------------------------ svn:executable = * Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/ciphers/OpenSSLCipherConfigurationParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/openssl/ciphers/OpenSSLCipherConfigurationParser.java?rev=1811614&r1=1811613&r2=1811614&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/openssl/ciphers/OpenSSLCipherConfigurationParser.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/openssl/ciphers/OpenSSLCipherConfigurationParser.java Mon Oct 9 21:55:29 2017 @@ -824,4 +824,77 @@ public class OpenSSLCipherConfigurationP } return builder.toString().substring(0, builder.length() - 1); } + + public static void usage() { + System.out.println("Usage: java " + OpenSSLCipherConfigurationParser.class.getName() + " [options] cipherspec"); + System.out.println(); + System.out.println("Displays the TLS cipher suites matching the cipherspec."); + System.out.println(); + System.out.println(" --help,"); + System.out.println(" -h Print this help message"); + System.out.println(" --openssl Show OpenSSL cipher suite names instead of IANA cipher suite names."); + System.out.println(" --verbose,"); + System.out.println(" -v Provide detailed cipher listing"); + } + + public static void main(String[] args) throws Exception + { + boolean verbose = false; + boolean useOpenSSLNames = false; + int argindex; + for(argindex = 0; argindex < args.length; ++argindex) + { + String arg = args[argindex]; + if("--verbose".equals(arg) || "-v".equals(arg)) + verbose = true; + else if("--openssl".equals(arg)) + useOpenSSLNames = true; + else if("--help".equals(arg) || "-h".equals(arg)) { + usage(); + System.exit(0); + } + else if("--".equals(arg)) { + ++argindex; + break; + } else if(arg.startsWith("-")) { + System.out.println("Unknown option: " + arg); + usage(); + System.exit(1); + } else { + // Non-switch argument... probably the cipher spec + break; + } + } + + String cipherSpec; + if(argindex < args.length) { + cipherSpec = args[argindex]; + } else { + cipherSpec = "DEFAULT"; + } + Set<Cipher> ciphers = parse(cipherSpec); + boolean first = true; + if(null != ciphers && 0 < ciphers.size()) { + for(Cipher cipher : ciphers) + { + if(first) { + first = false; + } else { + if(verbose) { + System.out.println("\t" + cipher.getProtocol() + "\tKx=" + cipher.getKx() + "\tAu=" + cipher.getAu() + "\tEnc=" + cipher.getEnc() + "\tMac=" + cipher.getMac()); + } + else + System.out.print(','); + } + if(useOpenSSLNames) + System.out.print(cipher.getOpenSSLAlias()); + else + System.out.print(cipher.name()); + } + if(verbose) + System.out.println(); + } else { + System.out.println("No ciphers match '" + cipherSpec + "'"); + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org