<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span><a id="line.1">/*</a>
<span class="sourceLineNo">002</span><a id="line.2"> * Licensed to the Apache Software Foundation (ASF) under one</a>
<span class="sourceLineNo">003</span><a id="line.3"> * or more contributor license agreements.  See the NOTICE file</a>
<span class="sourceLineNo">004</span><a id="line.4"> * distributed with this work for additional information</a>
<span class="sourceLineNo">005</span><a id="line.5"> * regarding copyright ownership.  The ASF licenses this file</a>
<span class="sourceLineNo">006</span><a id="line.6"> * to you under the Apache License, Version 2.0 (the</a>
<span class="sourceLineNo">007</span><a id="line.7"> * "License"); you may not use this file except in compliance</a>
<span class="sourceLineNo">008</span><a id="line.8"> * with the License.  You may obtain a copy of the License at</a>
<span class="sourceLineNo">009</span><a id="line.9"> *</a>
<span class="sourceLineNo">010</span><a id="line.10"> *     http://www.apache.org/licenses/LICENSE-2.0</a>
<span class="sourceLineNo">011</span><a id="line.11"> *</a>
<span class="sourceLineNo">012</span><a id="line.12"> * Unless required by applicable law or agreed to in writing,</a>
<span class="sourceLineNo">013</span><a id="line.13"> * software distributed under the License is distributed on an</a>
<span class="sourceLineNo">014</span><a id="line.14"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</a>
<span class="sourceLineNo">015</span><a id="line.15"> * KIND, either express or implied.  See the License for the</a>
<span class="sourceLineNo">016</span><a id="line.16"> * specific language governing permissions and limitations</a>
<span class="sourceLineNo">017</span><a id="line.17"> * under the License.</a>
<span class="sourceLineNo">018</span><a id="line.18"> */</a>
<span class="sourceLineNo">019</span><a id="line.19">package org.apache.shiro.tools.hasher;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import org.apache.commons.cli.CommandLine;</a>
<span class="sourceLineNo">022</span><a id="line.22">import org.apache.commons.cli.CommandLineParser;</a>
<span class="sourceLineNo">023</span><a id="line.23">import org.apache.commons.cli.HelpFormatter;</a>
<span class="sourceLineNo">024</span><a id="line.24">import org.apache.commons.cli.Option;</a>
<span class="sourceLineNo">025</span><a id="line.25">import org.apache.commons.cli.Options;</a>
<span class="sourceLineNo">026</span><a id="line.26">import org.apache.commons.cli.DefaultParser;</a>
<span class="sourceLineNo">027</span><a id="line.27">import org.apache.shiro.authc.credential.DefaultPasswordService;</a>
<span class="sourceLineNo">028</span><a id="line.28">import org.apache.shiro.codec.Base64;</a>
<span class="sourceLineNo">029</span><a id="line.29">import org.apache.shiro.codec.Hex;</a>
<span class="sourceLineNo">030</span><a id="line.30">import org.apache.shiro.crypto.SecureRandomNumberGenerator;</a>
<span class="sourceLineNo">031</span><a id="line.31">import org.apache.shiro.crypto.UnknownAlgorithmException;</a>
<span class="sourceLineNo">032</span><a id="line.32">import org.apache.shiro.crypto.hash.DefaultHashService;</a>
<span class="sourceLineNo">033</span><a id="line.33">import org.apache.shiro.crypto.hash.Hash;</a>
<span class="sourceLineNo">034</span><a id="line.34">import org.apache.shiro.crypto.hash.HashRequest;</a>
<span class="sourceLineNo">035</span><a id="line.35">import org.apache.shiro.crypto.hash.SimpleHashRequest;</a>
<span class="sourceLineNo">036</span><a id="line.36">import org.apache.shiro.crypto.hash.format.DefaultHashFormatFactory;</a>
<span class="sourceLineNo">037</span><a id="line.37">import org.apache.shiro.crypto.hash.format.HashFormat;</a>
<span class="sourceLineNo">038</span><a id="line.38">import org.apache.shiro.crypto.hash.format.HashFormatFactory;</a>
<span class="sourceLineNo">039</span><a id="line.39">import org.apache.shiro.crypto.hash.format.HexFormat;</a>
<span class="sourceLineNo">040</span><a id="line.40">import org.apache.shiro.crypto.hash.format.Shiro1CryptFormat;</a>
<span class="sourceLineNo">041</span><a id="line.41">import org.apache.shiro.io.ResourceUtils;</a>
<span class="sourceLineNo">042</span><a id="line.42">import org.apache.shiro.util.ByteSource;</a>
<span class="sourceLineNo">043</span><a id="line.43">import org.apache.shiro.util.StringUtils;</a>
<span class="sourceLineNo">044</span><a id="line.44"></a>
<span class="sourceLineNo">045</span><a id="line.45">import java.io.File;</a>
<span class="sourceLineNo">046</span><a id="line.46">import java.io.IOException;</a>
<span class="sourceLineNo">047</span><a id="line.47">import java.util.Arrays;</a>
<span class="sourceLineNo">048</span><a id="line.48"></a>
<span class="sourceLineNo">049</span><a id="line.49">/**</a>
<span class="sourceLineNo">050</span><a id="line.50"> * Commandline line utility to hash data such as strings, passwords, resources (files, urls, etc).</a>
<span class="sourceLineNo">051</span><a id="line.51"> * &lt;p/&gt;</a>
<span class="sourceLineNo">052</span><a id="line.52"> * Usage:</a>
<span class="sourceLineNo">053</span><a id="line.53"> * &lt;pre&gt;</a>
<span class="sourceLineNo">054</span><a id="line.54"> * java -jar shiro-tools-hasher&lt;em&gt;-version&lt;/em&gt;-cli.jar</a>
<span class="sourceLineNo">055</span><a id="line.55"> * &lt;/pre&gt;</a>
<span class="sourceLineNo">056</span><a id="line.56"> * This will print out all supported options with documentation.</a>
<span class="sourceLineNo">057</span><a id="line.57"> *</a>
<span class="sourceLineNo">058</span><a id="line.58"> * @since 1.2</a>
<span class="sourceLineNo">059</span><a id="line.59"> */</a>
<span class="sourceLineNo">060</span><a id="line.60">public final class Hasher {</a>
<span class="sourceLineNo">061</span><a id="line.61"></a>
<span class="sourceLineNo">062</span><a id="line.62">    private static final String HEX_PREFIX = "0x";</a>
<span class="sourceLineNo">063</span><a id="line.63">    private static final String DEFAULT_ALGORITHM_NAME = "MD5";</a>
<span class="sourceLineNo">064</span><a id="line.64">    private static final String DEFAULT_PASSWORD_ALGORITHM_NAME = DefaultPasswordService.DEFAULT_HASH_ALGORITHM;</a>
<span class="sourceLineNo">065</span><a id="line.65">    private static final int DEFAULT_GENERATED_SALT_SIZE = 128;</a>
<span class="sourceLineNo">066</span><a id="line.66">    private static final int DEFAULT_NUM_ITERATIONS = 1;</a>
<span class="sourceLineNo">067</span><a id="line.67">    private static final int DEFAULT_PASSWORD_NUM_ITERATIONS = DefaultPasswordService.DEFAULT_HASH_ITERATIONS;</a>
<span class="sourceLineNo">068</span><a id="line.68"></a>
<span class="sourceLineNo">069</span><a id="line.69">    private static final Option ALGORITHM = new Option("a", "algorithm", true, "hash algorithm name.  Defaults to SHA-256 when password hashing, MD5 otherwise.");</a>
<span class="sourceLineNo">070</span><a id="line.70">    private static final Option DEBUG = new Option("d", "debug", false, "show additional error (stack trace) information.");</a>
<span class="sourceLineNo">071</span><a id="line.71">    private static final Option FORMAT = new Option("f", "format", true, "hash output format.  Defaults to 'shiro1' when password hashing, 'hex' otherwise.  See below for more information.");</a>
<span class="sourceLineNo">072</span><a id="line.72">    private static final Option HELP = new Option("help", "help", false, "show this help message.");</a>
<span class="sourceLineNo">073</span><a id="line.73">    private static final Option ITERATIONS = new Option("i", "iterations", true, "number of hash iterations.  Defaults to " + DEFAULT_PASSWORD_NUM_ITERATIONS + " when password hashing, 1 otherwise.");</a>
<span class="sourceLineNo">074</span><a id="line.74">    private static final Option PASSWORD = new Option("p", "password", false, "hash a password (disable typing echo)");</a>
<span class="sourceLineNo">075</span><a id="line.75">    private static final Option PASSWORD_NC = new Option("pnc", "pnoconfirm", false, "hash a password (disable typing echo) but disable password confirmation prompt.");</a>
<span class="sourceLineNo">076</span><a id="line.76">    private static final Option RESOURCE = new Option("r", "resource", false, "read and hash the resource located at &lt;value&gt;.  See below for more information.");</a>
<span class="sourceLineNo">077</span><a id="line.77">    private static final Option SALT = new Option("s", "salt", true, "use the specified salt.  &lt;arg&gt; is plaintext.");</a>
<span class="sourceLineNo">078</span><a id="line.78">    private static final Option SALT_BYTES = new Option("sb", "saltbytes", true, "use the specified salt bytes.  &lt;arg&gt; is hex or base64 encoded text.");</a>
<span class="sourceLineNo">079</span><a id="line.79">    private static final Option SALT_GEN = new Option("gs", "gensalt", false, "generate and use a random salt. Defaults to true when password hashing, false otherwise.");</a>
<span class="sourceLineNo">080</span><a id="line.80">    private static final Option NO_SALT_GEN = new Option("ngs", "nogensalt", false, "do NOT generate and use a random salt (valid during password hashing).");</a>
<span class="sourceLineNo">081</span><a id="line.81">    private static final Option SALT_GEN_SIZE = new Option("gss", "gensaltsize", true, "the number of salt bits (not bytes!) to generate.  Defaults to 128.");</a>
<span class="sourceLineNo">082</span><a id="line.82">    private static final Option PRIVATE_SALT = new Option("ps", "privatesalt", true, "use the specified private salt.  &lt;arg&gt; is plaintext.");</a>
<span class="sourceLineNo">083</span><a id="line.83">    private static final Option PRIVATE_SALT_BYTES = new Option("psb", "privatesaltbytes", true, "use the specified private salt bytes.  &lt;arg&gt; is hex or base64 encoded text.");</a>
<span class="sourceLineNo">084</span><a id="line.84"></a>
<span class="sourceLineNo">085</span><a id="line.85">    private static final String SALT_MUTEX_MSG = createMutexMessage(SALT, SALT_BYTES);</a>
<span class="sourceLineNo">086</span><a id="line.86"></a>
<span class="sourceLineNo">087</span><a id="line.87">    private static final HashFormatFactory HASH_FORMAT_FACTORY = new DefaultHashFormatFactory();</a>
<span class="sourceLineNo">088</span><a id="line.88"></a>
<span class="sourceLineNo">089</span><a id="line.89">    static {</a>
<span class="sourceLineNo">090</span><a id="line.90">        ALGORITHM.setArgName("name");</a>
<span class="sourceLineNo">091</span><a id="line.91">        SALT_GEN_SIZE.setArgName("numBits");</a>
<span class="sourceLineNo">092</span><a id="line.92">        ITERATIONS.setArgName("num");</a>
<span class="sourceLineNo">093</span><a id="line.93">        SALT.setArgName("sval");</a>
<span class="sourceLineNo">094</span><a id="line.94">        SALT_BYTES.setArgName("encTxt");</a>
<span class="sourceLineNo">095</span><a id="line.95">    }</a>
<span class="sourceLineNo">096</span><a id="line.96"></a>
<span class="sourceLineNo">097</span><a id="line.97">    public static void main(String[] args) {</a>
<span class="sourceLineNo">098</span><a id="line.98"></a>
<span class="sourceLineNo">099</span><a id="line.99">        CommandLineParser parser = new DefaultParser();</a>
<span class="sourceLineNo">100</span><a id="line.100"></a>
<span class="sourceLineNo">101</span><a id="line.101">        Options options = new Options();</a>
<span class="sourceLineNo">102</span><a id="line.102">        options.addOption(HELP).addOption(DEBUG).addOption(ALGORITHM).addOption(ITERATIONS);</a>
<span class="sourceLineNo">103</span><a id="line.103">        options.addOption(RESOURCE).addOption(PASSWORD).addOption(PASSWORD_NC);</a>
<span class="sourceLineNo">104</span><a id="line.104">        options.addOption(SALT).addOption(SALT_BYTES).addOption(SALT_GEN).addOption(SALT_GEN_SIZE).addOption(NO_SALT_GEN);</a>
<span class="sourceLineNo">105</span><a id="line.105">        options.addOption(PRIVATE_SALT).addOption(PRIVATE_SALT_BYTES);</a>
<span class="sourceLineNo">106</span><a id="line.106">        options.addOption(FORMAT);</a>
<span class="sourceLineNo">107</span><a id="line.107"></a>
<span class="sourceLineNo">108</span><a id="line.108">        boolean debug = false;</a>
<span class="sourceLineNo">109</span><a id="line.109">        String algorithm = null; //user unspecified</a>
<span class="sourceLineNo">110</span><a id="line.110">        int iterations = 0; //0 means unspecified by the end-user</a>
<span class="sourceLineNo">111</span><a id="line.111">        boolean resource = false;</a>
<span class="sourceLineNo">112</span><a id="line.112">        boolean password = false;</a>
<span class="sourceLineNo">113</span><a id="line.113">        boolean passwordConfirm = true;</a>
<span class="sourceLineNo">114</span><a id="line.114">        String saltString = null;</a>
<span class="sourceLineNo">115</span><a id="line.115">        String saltBytesString = null;</a>
<span class="sourceLineNo">116</span><a id="line.116">        boolean generateSalt = false;</a>
<span class="sourceLineNo">117</span><a id="line.117">        int generatedSaltSize = DEFAULT_GENERATED_SALT_SIZE;</a>
<span class="sourceLineNo">118</span><a id="line.118">        String privateSaltString = null;</a>
<span class="sourceLineNo">119</span><a id="line.119">        String privateSaltBytesString = null;</a>
<span class="sourceLineNo">120</span><a id="line.120"></a>
<span class="sourceLineNo">121</span><a id="line.121">        String formatString = null;</a>
<span class="sourceLineNo">122</span><a id="line.122"></a>
<span class="sourceLineNo">123</span><a id="line.123">        char[] passwordChars = null;</a>
<span class="sourceLineNo">124</span><a id="line.124"></a>
<span class="sourceLineNo">125</span><a id="line.125">        try {</a>
<span class="sourceLineNo">126</span><a id="line.126">            CommandLine line = parser.parse(options, args);</a>
<span class="sourceLineNo">127</span><a id="line.127"></a>
<span class="sourceLineNo">128</span><a id="line.128">            if (line.hasOption(HELP.getOpt())) {</a>
<span class="sourceLineNo">129</span><a id="line.129">                printHelpAndExit(options, null, debug, 0);</a>
<span class="sourceLineNo">130</span><a id="line.130">            }</a>
<span class="sourceLineNo">131</span><a id="line.131">            if (line.hasOption(DEBUG.getOpt())) {</a>
<span class="sourceLineNo">132</span><a id="line.132">                debug = true;</a>
<span class="sourceLineNo">133</span><a id="line.133">            }</a>
<span class="sourceLineNo">134</span><a id="line.134">            if (line.hasOption(ALGORITHM.getOpt())) {</a>
<span class="sourceLineNo">135</span><a id="line.135">                algorithm = line.getOptionValue(ALGORITHM.getOpt());</a>
<span class="sourceLineNo">136</span><a id="line.136">            }</a>
<span class="sourceLineNo">137</span><a id="line.137">            if (line.hasOption(ITERATIONS.getOpt())) {</a>
<span class="sourceLineNo">138</span><a id="line.138">                iterations = getRequiredPositiveInt(line, ITERATIONS);</a>
<span class="sourceLineNo">139</span><a id="line.139">            }</a>
<span class="sourceLineNo">140</span><a id="line.140">            if (line.hasOption(PASSWORD.getOpt())) {</a>
<span class="sourceLineNo">141</span><a id="line.141">                password = true;</a>
<span class="sourceLineNo">142</span><a id="line.142">                generateSalt = true;</a>
<span class="sourceLineNo">143</span><a id="line.143">            }</a>
<span class="sourceLineNo">144</span><a id="line.144">            if (line.hasOption(RESOURCE.getOpt())) {</a>
<span class="sourceLineNo">145</span><a id="line.145">                resource = true;</a>
<span class="sourceLineNo">146</span><a id="line.146">            }</a>
<span class="sourceLineNo">147</span><a id="line.147">            if (line.hasOption(PASSWORD_NC.getOpt())) {</a>
<span class="sourceLineNo">148</span><a id="line.148">                password = true;</a>
<span class="sourceLineNo">149</span><a id="line.149">                generateSalt = true;</a>
<span class="sourceLineNo">150</span><a id="line.150">                passwordConfirm = false;</a>
<span class="sourceLineNo">151</span><a id="line.151">            }</a>
<span class="sourceLineNo">152</span><a id="line.152">            if (line.hasOption(SALT.getOpt())) {</a>
<span class="sourceLineNo">153</span><a id="line.153">                saltString = line.getOptionValue(SALT.getOpt());</a>
<span class="sourceLineNo">154</span><a id="line.154">            }</a>
<span class="sourceLineNo">155</span><a id="line.155">            if (line.hasOption(SALT_BYTES.getOpt())) {</a>
<span class="sourceLineNo">156</span><a id="line.156">                saltBytesString = line.getOptionValue(SALT_BYTES.getOpt());</a>
<span class="sourceLineNo">157</span><a id="line.157">            }</a>
<span class="sourceLineNo">158</span><a id="line.158">            if (line.hasOption(NO_SALT_GEN.getOpt())) {</a>
<span class="sourceLineNo">159</span><a id="line.159">                generateSalt = false;</a>
<span class="sourceLineNo">160</span><a id="line.160">            }</a>
<span class="sourceLineNo">161</span><a id="line.161">            if (line.hasOption(SALT_GEN.getOpt())) {</a>
<span class="sourceLineNo">162</span><a id="line.162">                generateSalt = true;</a>
<span class="sourceLineNo">163</span><a id="line.163">            }</a>
<span class="sourceLineNo">164</span><a id="line.164">            if (line.hasOption(SALT_GEN_SIZE.getOpt())) {</a>
<span class="sourceLineNo">165</span><a id="line.165">                generateSalt = true;</a>
<span class="sourceLineNo">166</span><a id="line.166">                generatedSaltSize = getRequiredPositiveInt(line, SALT_GEN_SIZE);</a>
<span class="sourceLineNo">167</span><a id="line.167">                if (generatedSaltSize % 8 != 0) {</a>
<span class="sourceLineNo">168</span><a id="line.168">                    throw new IllegalArgumentException("Generated salt size must be a multiple of 8 (e.g. 128, 192, 256, 512, etc).");</a>
<span class="sourceLineNo">169</span><a id="line.169">                }</a>
<span class="sourceLineNo">170</span><a id="line.170">            }</a>
<span class="sourceLineNo">171</span><a id="line.171">            if (line.hasOption(PRIVATE_SALT.getOpt())) {</a>
<span class="sourceLineNo">172</span><a id="line.172">                privateSaltString = line.getOptionValue(PRIVATE_SALT.getOpt());</a>
<span class="sourceLineNo">173</span><a id="line.173">            }</a>
<span class="sourceLineNo">174</span><a id="line.174">            if (line.hasOption(PRIVATE_SALT_BYTES.getOpt())) {</a>
<span class="sourceLineNo">175</span><a id="line.175">                privateSaltBytesString = line.getOptionValue(PRIVATE_SALT_BYTES.getOpt());</a>
<span class="sourceLineNo">176</span><a id="line.176">            }</a>
<span class="sourceLineNo">177</span><a id="line.177">            if (line.hasOption(FORMAT.getOpt())) {</a>
<span class="sourceLineNo">178</span><a id="line.178">                formatString = line.getOptionValue(FORMAT.getOpt());</a>
<span class="sourceLineNo">179</span><a id="line.179">            }</a>
<span class="sourceLineNo">180</span><a id="line.180"></a>
<span class="sourceLineNo">181</span><a id="line.181">            String sourceValue;</a>
<span class="sourceLineNo">182</span><a id="line.182"></a>
<span class="sourceLineNo">183</span><a id="line.183">            Object source;</a>
<span class="sourceLineNo">184</span><a id="line.184"></a>
<span class="sourceLineNo">185</span><a id="line.185">            if (password) {</a>
<span class="sourceLineNo">186</span><a id="line.186">                passwordChars = readPassword(passwordConfirm);</a>
<span class="sourceLineNo">187</span><a id="line.187">                source = passwordChars;</a>
<span class="sourceLineNo">188</span><a id="line.188">            } else {</a>
<span class="sourceLineNo">189</span><a id="line.189">                String[] remainingArgs = line.getArgs();</a>
<span class="sourceLineNo">190</span><a id="line.190">                if (remainingArgs == null || remainingArgs.length != 1) {</a>
<span class="sourceLineNo">191</span><a id="line.191">                    printHelpAndExit(options, null, debug, -1);</a>
<span class="sourceLineNo">192</span><a id="line.192">                }</a>
<span class="sourceLineNo">193</span><a id="line.193"></a>
<span class="sourceLineNo">194</span><a id="line.194">                assert remainingArgs != null;</a>
<span class="sourceLineNo">195</span><a id="line.195">                sourceValue = toString(remainingArgs);</a>
<span class="sourceLineNo">196</span><a id="line.196"></a>
<span class="sourceLineNo">197</span><a id="line.197">                if (resource) {</a>
<span class="sourceLineNo">198</span><a id="line.198">                    if (!ResourceUtils.hasResourcePrefix(sourceValue)) {</a>
<span class="sourceLineNo">199</span><a id="line.199">                        source = toFile(sourceValue);</a>
<span class="sourceLineNo">200</span><a id="line.200">                    } else {</a>
<span class="sourceLineNo">201</span><a id="line.201">                        source = ResourceUtils.getInputStreamForPath(sourceValue);</a>
<span class="sourceLineNo">202</span><a id="line.202">                    }</a>
<span class="sourceLineNo">203</span><a id="line.203">                } else {</a>
<span class="sourceLineNo">204</span><a id="line.204">                    source = sourceValue;</a>
<span class="sourceLineNo">205</span><a id="line.205">                }</a>
<span class="sourceLineNo">206</span><a id="line.206">            }</a>
<span class="sourceLineNo">207</span><a id="line.207"></a>
<span class="sourceLineNo">208</span><a id="line.208">            if (algorithm == null) {</a>
<span class="sourceLineNo">209</span><a id="line.209">                if (password) {</a>
<span class="sourceLineNo">210</span><a id="line.210">                    algorithm = DEFAULT_PASSWORD_ALGORITHM_NAME;</a>
<span class="sourceLineNo">211</span><a id="line.211">                } else {</a>
<span class="sourceLineNo">212</span><a id="line.212">                    algorithm = DEFAULT_ALGORITHM_NAME;</a>
<span class="sourceLineNo">213</span><a id="line.213">                }</a>
<span class="sourceLineNo">214</span><a id="line.214">            }</a>
<span class="sourceLineNo">215</span><a id="line.215"></a>
<span class="sourceLineNo">216</span><a id="line.216">            if (iterations &lt; DEFAULT_NUM_ITERATIONS) {</a>
<span class="sourceLineNo">217</span><a id="line.217">                //Iterations were not specified.  Default to 350,000 when password hashing, and 1 for everything else:</a>
<span class="sourceLineNo">218</span><a id="line.218">                if (password) {</a>
<span class="sourceLineNo">219</span><a id="line.219">                    iterations = DEFAULT_PASSWORD_NUM_ITERATIONS;</a>
<span class="sourceLineNo">220</span><a id="line.220">                } else {</a>
<span class="sourceLineNo">221</span><a id="line.221">                    iterations = DEFAULT_NUM_ITERATIONS;</a>
<span class="sourceLineNo">222</span><a id="line.222">                }</a>
<span class="sourceLineNo">223</span><a id="line.223">            }</a>
<span class="sourceLineNo">224</span><a id="line.224"></a>
<span class="sourceLineNo">225</span><a id="line.225">            ByteSource publicSalt = getSalt(saltString, saltBytesString, generateSalt, generatedSaltSize);</a>
<span class="sourceLineNo">226</span><a id="line.226">            ByteSource privateSalt = getSalt(privateSaltString, privateSaltBytesString, false, generatedSaltSize);</a>
<span class="sourceLineNo">227</span><a id="line.227">            HashRequest hashRequest = new SimpleHashRequest(algorithm, ByteSource.Util.bytes(source), publicSalt, iterations);</a>
<span class="sourceLineNo">228</span><a id="line.228"></a>
<span class="sourceLineNo">229</span><a id="line.229">            DefaultHashService hashService = new DefaultHashService();</a>
<span class="sourceLineNo">230</span><a id="line.230">            hashService.setPrivateSalt(privateSalt);</a>
<span class="sourceLineNo">231</span><a id="line.231">            Hash hash = hashService.computeHash(hashRequest);</a>
<span class="sourceLineNo">232</span><a id="line.232"></a>
<span class="sourceLineNo">233</span><a id="line.233">            if (formatString == null) {</a>
<span class="sourceLineNo">234</span><a id="line.234">                //Output format was not specified.  Default to 'shiro1' when password hashing, and 'hex' for</a>
<span class="sourceLineNo">235</span><a id="line.235">                //everything else:</a>
<span class="sourceLineNo">236</span><a id="line.236">                if (password) {</a>
<span class="sourceLineNo">237</span><a id="line.237">                    formatString = Shiro1CryptFormat.class.getName();</a>
<span class="sourceLineNo">238</span><a id="line.238">                } else {</a>
<span class="sourceLineNo">239</span><a id="line.239">                    formatString = HexFormat.class.getName();</a>
<span class="sourceLineNo">240</span><a id="line.240">                }</a>
<span class="sourceLineNo">241</span><a id="line.241">            }</a>
<span class="sourceLineNo">242</span><a id="line.242"></a>
<span class="sourceLineNo">243</span><a id="line.243">            HashFormat format = HASH_FORMAT_FACTORY.getInstance(formatString);</a>
<span class="sourceLineNo">244</span><a id="line.244"></a>
<span class="sourceLineNo">245</span><a id="line.245">            if (format == null) {</a>
<span class="sourceLineNo">246</span><a id="line.246">                throw new IllegalArgumentException("Unrecognized hash format '" + formatString + "'.");</a>
<span class="sourceLineNo">247</span><a id="line.247">            }</a>
<span class="sourceLineNo">248</span><a id="line.248"></a>
<span class="sourceLineNo">249</span><a id="line.249">            String output = format.format(hash);</a>
<span class="sourceLineNo">250</span><a id="line.250"></a>
<span class="sourceLineNo">251</span><a id="line.251">            System.out.println(output);</a>
<span class="sourceLineNo">252</span><a id="line.252"></a>
<span class="sourceLineNo">253</span><a id="line.253">        } catch (IllegalArgumentException iae) {</a>
<span class="sourceLineNo">254</span><a id="line.254">            exit(iae, debug);</a>
<span class="sourceLineNo">255</span><a id="line.255">        } catch (UnknownAlgorithmException uae) {</a>
<span class="sourceLineNo">256</span><a id="line.256">            exit(uae, debug);</a>
<span class="sourceLineNo">257</span><a id="line.257">        } catch (IOException ioe) {</a>
<span class="sourceLineNo">258</span><a id="line.258">            exit(ioe, debug);</a>
<span class="sourceLineNo">259</span><a id="line.259">        } catch (Exception e) {</a>
<span class="sourceLineNo">260</span><a id="line.260">            printHelpAndExit(options, e, debug, -1);</a>
<span class="sourceLineNo">261</span><a id="line.261">        } finally {</a>
<span class="sourceLineNo">262</span><a id="line.262">            if (passwordChars != null &amp;&amp; passwordChars.length &gt; 0) {</a>
<span class="sourceLineNo">263</span><a id="line.263">                for (int i = 0; i &lt; passwordChars.length; i++) {</a>
<span class="sourceLineNo">264</span><a id="line.264">                    passwordChars[i] = ' ';</a>
<span class="sourceLineNo">265</span><a id="line.265">                }</a>
<span class="sourceLineNo">266</span><a id="line.266">            }</a>
<span class="sourceLineNo">267</span><a id="line.267">        }</a>
<span class="sourceLineNo">268</span><a id="line.268">    }</a>
<span class="sourceLineNo">269</span><a id="line.269"></a>
<span class="sourceLineNo">270</span><a id="line.270">    private static String createMutexMessage(Option... options) {</a>
<span class="sourceLineNo">271</span><a id="line.271">        StringBuilder sb = new StringBuilder();</a>
<span class="sourceLineNo">272</span><a id="line.272">        sb.append("The ");</a>
<span class="sourceLineNo">273</span><a id="line.273"></a>
<span class="sourceLineNo">274</span><a id="line.274">        for (int i = 0; i &lt; options.length; i++) {</a>
<span class="sourceLineNo">275</span><a id="line.275">            if (i &gt; 0) {</a>
<span class="sourceLineNo">276</span><a id="line.276">                sb.append(", ");</a>
<span class="sourceLineNo">277</span><a id="line.277">            }</a>
<span class="sourceLineNo">278</span><a id="line.278">            Option o = options[0];</a>
<span class="sourceLineNo">279</span><a id="line.279">            sb.append("-").append(o.getOpt()).append("/--").append(o.getLongOpt());</a>
<span class="sourceLineNo">280</span><a id="line.280">        }</a>
<span class="sourceLineNo">281</span><a id="line.281">        sb.append(" and generated salt options are mutually exclusive.  Only one of them may be used at a time");</a>
<span class="sourceLineNo">282</span><a id="line.282">        return sb.toString();</a>
<span class="sourceLineNo">283</span><a id="line.283">    }</a>
<span class="sourceLineNo">284</span><a id="line.284"></a>
<span class="sourceLineNo">285</span><a id="line.285">    private static void exit(Exception e, boolean debug) {</a>
<span class="sourceLineNo">286</span><a id="line.286">        printException(e, debug);</a>
<span class="sourceLineNo">287</span><a id="line.287">        System.exit(-1);</a>
<span class="sourceLineNo">288</span><a id="line.288">    }</a>
<span class="sourceLineNo">289</span><a id="line.289"></a>
<span class="sourceLineNo">290</span><a id="line.290">    private static int getRequiredPositiveInt(CommandLine line, Option option) {</a>
<span class="sourceLineNo">291</span><a id="line.291">        String iterVal = line.getOptionValue(option.getOpt());</a>
<span class="sourceLineNo">292</span><a id="line.292">        try {</a>
<span class="sourceLineNo">293</span><a id="line.293">            return Integer.parseInt(iterVal);</a>
<span class="sourceLineNo">294</span><a id="line.294">        } catch (NumberFormatException e) {</a>
<span class="sourceLineNo">295</span><a id="line.295">            String msg = "'" + option.getLongOpt() + "' value must be a positive integer.";</a>
<span class="sourceLineNo">296</span><a id="line.296">            throw new IllegalArgumentException(msg, e);</a>
<span class="sourceLineNo">297</span><a id="line.297">        }</a>
<span class="sourceLineNo">298</span><a id="line.298">    }</a>
<span class="sourceLineNo">299</span><a id="line.299"></a>
<span class="sourceLineNo">300</span><a id="line.300">    private static ByteSource getSalt(String saltString, String saltBytesString, boolean generateSalt, int generatedSaltSize) {</a>
<span class="sourceLineNo">301</span><a id="line.301"></a>
<span class="sourceLineNo">302</span><a id="line.302">        if (saltString != null) {</a>
<span class="sourceLineNo">303</span><a id="line.303">            if (generateSalt || (saltBytesString != null)) {</a>
<span class="sourceLineNo">304</span><a id="line.304">                throw new IllegalArgumentException(SALT_MUTEX_MSG);</a>
<span class="sourceLineNo">305</span><a id="line.305">            }</a>
<span class="sourceLineNo">306</span><a id="line.306">            return ByteSource.Util.bytes(saltString);</a>
<span class="sourceLineNo">307</span><a id="line.307">        }</a>
<span class="sourceLineNo">308</span><a id="line.308"></a>
<span class="sourceLineNo">309</span><a id="line.309">        if (saltBytesString != null) {</a>
<span class="sourceLineNo">310</span><a id="line.310">            if (generateSalt) {</a>
<span class="sourceLineNo">311</span><a id="line.311">                throw new IllegalArgumentException(SALT_MUTEX_MSG);</a>
<span class="sourceLineNo">312</span><a id="line.312">            }</a>
<span class="sourceLineNo">313</span><a id="line.313"></a>
<span class="sourceLineNo">314</span><a id="line.314">            String value = saltBytesString;</a>
<span class="sourceLineNo">315</span><a id="line.315">            boolean base64 = true;</a>
<span class="sourceLineNo">316</span><a id="line.316">            if (saltBytesString.startsWith(HEX_PREFIX)) {</a>
<span class="sourceLineNo">317</span><a id="line.317">                //hex:</a>
<span class="sourceLineNo">318</span><a id="line.318">                base64 = false;</a>
<span class="sourceLineNo">319</span><a id="line.319">                value = value.substring(HEX_PREFIX.length());</a>
<span class="sourceLineNo">320</span><a id="line.320">            }</a>
<span class="sourceLineNo">321</span><a id="line.321">            byte[] bytes;</a>
<span class="sourceLineNo">322</span><a id="line.322">            if (base64) {</a>
<span class="sourceLineNo">323</span><a id="line.323">                bytes = Base64.decode(value);</a>
<span class="sourceLineNo">324</span><a id="line.324">            } else {</a>
<span class="sourceLineNo">325</span><a id="line.325">                bytes = Hex.decode(value);</a>
<span class="sourceLineNo">326</span><a id="line.326">            }</a>
<span class="sourceLineNo">327</span><a id="line.327">            return ByteSource.Util.bytes(bytes);</a>
<span class="sourceLineNo">328</span><a id="line.328">        }</a>
<span class="sourceLineNo">329</span><a id="line.329"></a>
<span class="sourceLineNo">330</span><a id="line.330">        if (generateSalt) {</a>
<span class="sourceLineNo">331</span><a id="line.331">            SecureRandomNumberGenerator generator = new SecureRandomNumberGenerator();</a>
<span class="sourceLineNo">332</span><a id="line.332">            int byteSize = generatedSaltSize / 8; //generatedSaltSize is in *bits* - convert to byte size:</a>
<span class="sourceLineNo">333</span><a id="line.333">            return generator.nextBytes(byteSize);</a>
<span class="sourceLineNo">334</span><a id="line.334">        }</a>
<span class="sourceLineNo">335</span><a id="line.335"></a>
<span class="sourceLineNo">336</span><a id="line.336">        //no salt used:</a>
<span class="sourceLineNo">337</span><a id="line.337">        return null;</a>
<span class="sourceLineNo">338</span><a id="line.338">    }</a>
<span class="sourceLineNo">339</span><a id="line.339"></a>
<span class="sourceLineNo">340</span><a id="line.340">    private static void printException(Exception e, boolean debug) {</a>
<span class="sourceLineNo">341</span><a id="line.341">        if (e != null) {</a>
<span class="sourceLineNo">342</span><a id="line.342">            System.out.println();</a>
<span class="sourceLineNo">343</span><a id="line.343">            if (debug) {</a>
<span class="sourceLineNo">344</span><a id="line.344">                System.out.println("Error: ");</a>
<span class="sourceLineNo">345</span><a id="line.345">                e.printStackTrace(System.out);</a>
<span class="sourceLineNo">346</span><a id="line.346">                System.out.println(e.getMessage());</a>
<span class="sourceLineNo">347</span><a id="line.347"></a>
<span class="sourceLineNo">348</span><a id="line.348">            } else {</a>
<span class="sourceLineNo">349</span><a id="line.349">                System.out.println("Error: " + e.getMessage());</a>
<span class="sourceLineNo">350</span><a id="line.350">                System.out.println();</a>
<span class="sourceLineNo">351</span><a id="line.351">                System.out.println("Specify -d or --debug for more information.");</a>
<span class="sourceLineNo">352</span><a id="line.352">            }</a>
<span class="sourceLineNo">353</span><a id="line.353">        }</a>
<span class="sourceLineNo">354</span><a id="line.354">    }</a>
<span class="sourceLineNo">355</span><a id="line.355"></a>
<span class="sourceLineNo">356</span><a id="line.356">    private static void printHelp(Options options, Exception e, boolean debug) {</a>
<span class="sourceLineNo">357</span><a id="line.357">        HelpFormatter help = new HelpFormatter();</a>
<span class="sourceLineNo">358</span><a id="line.358">        String command = "java -jar shiro-tools-hasher-&lt;version&gt;.jar [options] [&lt;value&gt;]";</a>
<span class="sourceLineNo">359</span><a id="line.359">        String header = "\nPrint a cryptographic hash (aka message digest) of the specified &lt;value&gt;.\n--\nOptions:";</a>
<span class="sourceLineNo">360</span><a id="line.360">        String footer = "\n" +</a>
<span class="sourceLineNo">361</span><a id="line.361">                "&lt;value&gt; is optional only when hashing passwords (see below).  It is\n" +</a>
<span class="sourceLineNo">362</span><a id="line.362">                "required all other times." +</a>
<span class="sourceLineNo">363</span><a id="line.363">                "\n\n" +</a>
<span class="sourceLineNo">364</span><a id="line.364">                "Password Hashing:\n" +</a>
<span class="sourceLineNo">365</span><a id="line.365">                "---------------------------------\n" +</a>
<span class="sourceLineNo">366</span><a id="line.366">                "Specify the -p/--password option and DO NOT enter a &lt;value&gt;.  You will\n" +</a>
<span class="sourceLineNo">367</span><a id="line.367">                "be prompted for a password and characters will not echo as you type." +</a>
<span class="sourceLineNo">368</span><a id="line.368">                "\n\n" +</a>
<span class="sourceLineNo">369</span><a id="line.369">                "Salting:\n" +</a>
<span class="sourceLineNo">370</span><a id="line.370">                "---------------------------------\n" +</a>
<span class="sourceLineNo">371</span><a id="line.371">                "Specifying a salt:" +</a>
<span class="sourceLineNo">372</span><a id="line.372">                "\n\n" +</a>
<span class="sourceLineNo">373</span><a id="line.373">                "You may specify a salt using the -s/--salt option followed by the salt\n" +</a>
<span class="sourceLineNo">374</span><a id="line.374">                "value.  If the salt value is a base64 or hex string representing a\n" +</a>
<span class="sourceLineNo">375</span><a id="line.375">                "byte array, you must specify the -sb/--saltbytes option to indicate this,\n" +</a>
<span class="sourceLineNo">376</span><a id="line.376">                "otherwise the text value bytes will be used directly." +</a>
<span class="sourceLineNo">377</span><a id="line.377">                "\n\n" +</a>
<span class="sourceLineNo">378</span><a id="line.378">                "When using -sb/--saltbytes, the -s/--salt value is expected to be a\n" +</a>
<span class="sourceLineNo">379</span><a id="line.379">                "base64-encoded string by default.  If the value is a hex-encoded string,\n" +</a>
<span class="sourceLineNo">380</span><a id="line.380">                "you must prefix the string with 0x (zero x) to indicate a hex value." +</a>
<span class="sourceLineNo">381</span><a id="line.381">                "\n\n" +</a>
<span class="sourceLineNo">382</span><a id="line.382">                "Generating a salt:" +</a>
<span class="sourceLineNo">383</span><a id="line.383">                "\n\n" +</a>
<span class="sourceLineNo">384</span><a id="line.384">                "Use the -gs/--gensalt option if you don't want to specify a salt,\n" +</a>
<span class="sourceLineNo">385</span><a id="line.385">                "but want a strong random salt to be generated and used during hashing.\n" +</a>
<span class="sourceLineNo">386</span><a id="line.386">                "The generated salt size defaults to 128 bits.  You may specify\n" +</a>
<span class="sourceLineNo">387</span><a id="line.387">                "a different size by using the -gss/--gensaltsize option followed by\n" +</a>
<span class="sourceLineNo">388</span><a id="line.388">                "a positive integer (size is in bits, not bytes)." +</a>
<span class="sourceLineNo">389</span><a id="line.389">                "\n\n" +</a>
<span class="sourceLineNo">390</span><a id="line.390">                "Because a salt must be specified if computing the hash later,\n" +</a>
<span class="sourceLineNo">391</span><a id="line.391">                "generated salts are only useful with the shiro1 output format;\n" +</a>
<span class="sourceLineNo">392</span><a id="line.392">                "the other formats do not include the generated salt." +</a>
<span class="sourceLineNo">393</span><a id="line.393">                "\n\n" +</a>
<span class="sourceLineNo">394</span><a id="line.394">                "Specifying a private salt:" +</a>
<span class="sourceLineNo">395</span><a id="line.395">                "\n\n" +</a>
<span class="sourceLineNo">396</span><a id="line.396">                "You may specify a private salt using the -ps/--privatesalt option followed\n" +</a>
<span class="sourceLineNo">397</span><a id="line.397">                "by the private salt value.  If the private salt value is a base64 or hex \n" +</a>
<span class="sourceLineNo">398</span><a id="line.398">                "string representing a byte array, you must specify the -psb/--privatesaltbytes\n" +</a>
<span class="sourceLineNo">399</span><a id="line.399">                "option to indicate this, otherwise the text value bytes will be used directly." +</a>
<span class="sourceLineNo">400</span><a id="line.400">                "\n\n" +</a>
<span class="sourceLineNo">401</span><a id="line.401">                "When using -psb/--privatesaltbytes, the -ps/--privatesalt value is expected to\n" +</a>
<span class="sourceLineNo">402</span><a id="line.402">                "be a base64-encoded string by default.  If the value is a hex-encoded string,\n" +</a>
<span class="sourceLineNo">403</span><a id="line.403">                "you must prefix the string with 0x (zero x) to indicate a hex value." +</a>
<span class="sourceLineNo">404</span><a id="line.404">                "\n\n" +</a>
<span class="sourceLineNo">405</span><a id="line.405">                "Files, URLs and classpath resources:\n" +</a>
<span class="sourceLineNo">406</span><a id="line.406">                "---------------------------------\n" +</a>
<span class="sourceLineNo">407</span><a id="line.407">                "If using the -r/--resource option, the &lt;value&gt; represents a resource path.\n" +</a>
<span class="sourceLineNo">408</span><a id="line.408">                "By default this is expected to be a file path, but you may specify\n" +</a>
<span class="sourceLineNo">409</span><a id="line.409">                "classpath or URL resources by using the classpath: or url: prefix\n" +</a>
<span class="sourceLineNo">410</span><a id="line.410">                "respectively." +</a>
<span class="sourceLineNo">411</span><a id="line.411">                "\n\n" +</a>
<span class="sourceLineNo">412</span><a id="line.412">                "Some examples:" +</a>
<span class="sourceLineNo">413</span><a id="line.413">                "\n\n" +</a>
<span class="sourceLineNo">414</span><a id="line.414">                "&lt;command&gt; -r fileInCurrentDirectory.txt\n" +</a>
<span class="sourceLineNo">415</span><a id="line.415">                "&lt;command&gt; -r ../../relativePathFile.xml\n" +</a>
<span class="sourceLineNo">416</span><a id="line.416">                "&lt;command&gt; -r ~/documents/myfile.pdf\n" +</a>
<span class="sourceLineNo">417</span><a id="line.417">                "&lt;command&gt; -r /usr/local/logs/absolutePathFile.log\n" +</a>
<span class="sourceLineNo">418</span><a id="line.418">                "&lt;command&gt; -r url:http://foo.com/page.html\n" +</a>
<span class="sourceLineNo">419</span><a id="line.419">                "&lt;command&gt; -r classpath:/WEB-INF/lib/something.jar" +</a>
<span class="sourceLineNo">420</span><a id="line.420">                "\n\n" +</a>
<span class="sourceLineNo">421</span><a id="line.421">                "Output Format:\n" +</a>
<span class="sourceLineNo">422</span><a id="line.422">                "---------------------------------\n" +</a>
<span class="sourceLineNo">423</span><a id="line.423">                "Specify the -f/--format option followed by either 1) the format ID (as defined\n" +</a>
<span class="sourceLineNo">424</span><a id="line.424">                "by the " + DefaultHashFormatFactory.class.getName() + "\n" +</a>
<span class="sourceLineNo">425</span><a id="line.425">                "JavaDoc) or 2) the fully qualified " + HashFormat.class.getName() + "\n" +</a>
<span class="sourceLineNo">426</span><a id="line.426">                "implementation class name to instantiate and use for formatting.\n\n" +</a>
<span class="sourceLineNo">427</span><a id="line.427">                "The default output format is 'shiro1' which is a Modular Crypt Format (MCF)\n" +</a>
<span class="sourceLineNo">428</span><a id="line.428">                "that shows all relevant information as a dollar-sign ($) delimited string.\n" +</a>
<span class="sourceLineNo">429</span><a id="line.429">                "This format is ideal for use in Shiro's text-based user configuration (e.g.\n" +</a>
<span class="sourceLineNo">430</span><a id="line.430">                "shiro.ini or a properties file).";</a>
<span class="sourceLineNo">431</span><a id="line.431"></a>
<span class="sourceLineNo">432</span><a id="line.432">        printException(e, debug);</a>
<span class="sourceLineNo">433</span><a id="line.433"></a>
<span class="sourceLineNo">434</span><a id="line.434">        System.out.println();</a>
<span class="sourceLineNo">435</span><a id="line.435">        help.printHelp(command, header, options, null);</a>
<span class="sourceLineNo">436</span><a id="line.436">        System.out.println(footer);</a>
<span class="sourceLineNo">437</span><a id="line.437">    }</a>
<span class="sourceLineNo">438</span><a id="line.438"></a>
<span class="sourceLineNo">439</span><a id="line.439">    private static void printHelpAndExit(Options options, Exception e, boolean debug, int exitCode) {</a>
<span class="sourceLineNo">440</span><a id="line.440">        printHelp(options, e, debug);</a>
<span class="sourceLineNo">441</span><a id="line.441">        System.exit(exitCode);</a>
<span class="sourceLineNo">442</span><a id="line.442">    }</a>
<span class="sourceLineNo">443</span><a id="line.443"></a>
<span class="sourceLineNo">444</span><a id="line.444">    private static char[] readPassword(boolean confirm) {</a>
<span class="sourceLineNo">445</span><a id="line.445">        java.io.Console console = System.console();</a>
<span class="sourceLineNo">446</span><a id="line.446">        if (console == null) {</a>
<span class="sourceLineNo">447</span><a id="line.447">            throw new IllegalStateException("java.io.Console is not available on the current JVM.  Cannot read passwords.");</a>
<span class="sourceLineNo">448</span><a id="line.448">        }</a>
<span class="sourceLineNo">449</span><a id="line.449">        char[] first = console.readPassword("%s", "Password to hash: ");</a>
<span class="sourceLineNo">450</span><a id="line.450">        if (first == null || first.length == 0) {</a>
<span class="sourceLineNo">451</span><a id="line.451">            throw new IllegalArgumentException("No password specified.");</a>
<span class="sourceLineNo">452</span><a id="line.452">        }</a>
<span class="sourceLineNo">453</span><a id="line.453">        if (confirm) {</a>
<span class="sourceLineNo">454</span><a id="line.454">            char[] second = console.readPassword("%s", "Password to hash (confirm): ");</a>
<span class="sourceLineNo">455</span><a id="line.455">            if (!Arrays.equals(first, second)) {</a>
<span class="sourceLineNo">456</span><a id="line.456">                String msg = "Password entries do not match.";</a>
<span class="sourceLineNo">457</span><a id="line.457">                throw new IllegalArgumentException(msg);</a>
<span class="sourceLineNo">458</span><a id="line.458">            }</a>
<span class="sourceLineNo">459</span><a id="line.459">        }</a>
<span class="sourceLineNo">460</span><a id="line.460">        return first;</a>
<span class="sourceLineNo">461</span><a id="line.461">    }</a>
<span class="sourceLineNo">462</span><a id="line.462"></a>
<span class="sourceLineNo">463</span><a id="line.463">    private static File toFile(String path) {</a>
<span class="sourceLineNo">464</span><a id="line.464">        String resolved = path;</a>
<span class="sourceLineNo">465</span><a id="line.465">        if (path.startsWith("~/") || path.startsWith(("~\\"))) {</a>
<span class="sourceLineNo">466</span><a id="line.466">            resolved = path.replaceFirst("\\~", System.getProperty("user.home"));</a>
<span class="sourceLineNo">467</span><a id="line.467">        }</a>
<span class="sourceLineNo">468</span><a id="line.468">        return new File(resolved);</a>
<span class="sourceLineNo">469</span><a id="line.469">    }</a>
<span class="sourceLineNo">470</span><a id="line.470"></a>
<span class="sourceLineNo">471</span><a id="line.471">    private static String toString(String[] strings) {</a>
<span class="sourceLineNo">472</span><a id="line.472">        int len = strings != null ? strings.length : 0;</a>
<span class="sourceLineNo">473</span><a id="line.473">        if (len == 0) {</a>
<span class="sourceLineNo">474</span><a id="line.474">            return null;</a>
<span class="sourceLineNo">475</span><a id="line.475">        }</a>
<span class="sourceLineNo">476</span><a id="line.476">        return StringUtils.toDelimitedString(strings, " ");</a>
<span class="sourceLineNo">477</span><a id="line.477">    }</a>
<span class="sourceLineNo">478</span><a id="line.478">}</a>




























































</pre>
</div>
</main>
</body>
</html>
