<!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.crypto.hash;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import org.apache.shiro.util.ByteSource;</a>
<span class="sourceLineNo">022</span><a id="line.22"></a>
<span class="sourceLineNo">023</span><a id="line.23">/**</a>
<span class="sourceLineNo">024</span><a id="line.24"> * A {@code HashRequest} is composed of data that will be used by a {@link HashService} to compute a hash (aka</a>
<span class="sourceLineNo">025</span><a id="line.25"> * 'digest').  While you can instantiate a concrete {@code HashRequest} class directly, most will find using the</a>
<span class="sourceLineNo">026</span><a id="line.26"> * {@link HashRequest.Builder} more convenient.</a>
<span class="sourceLineNo">027</span><a id="line.27"> *</a>
<span class="sourceLineNo">028</span><a id="line.28"> * @see HashRequest.Builder</a>
<span class="sourceLineNo">029</span><a id="line.29"> * @since 1.2</a>
<span class="sourceLineNo">030</span><a id="line.30"> */</a>
<span class="sourceLineNo">031</span><a id="line.31">public interface HashRequest {</a>
<span class="sourceLineNo">032</span><a id="line.32"></a>
<span class="sourceLineNo">033</span><a id="line.33">    /**</a>
<span class="sourceLineNo">034</span><a id="line.34">     * Returns the source data that will be hashed by a {@link HashService}. For example, this might be a</a>
<span class="sourceLineNo">035</span><a id="line.35">     * {@code ByteSource} representation of a password, or file, etc.</a>
<span class="sourceLineNo">036</span><a id="line.36">     *</a>
<span class="sourceLineNo">037</span><a id="line.37">     * @return the source data that will be hashed by a {@link HashService}.</a>
<span class="sourceLineNo">038</span><a id="line.38">     */</a>
<span class="sourceLineNo">039</span><a id="line.39">    ByteSource getSource();</a>
<span class="sourceLineNo">040</span><a id="line.40"></a>
<span class="sourceLineNo">041</span><a id="line.41">    /**</a>
<span class="sourceLineNo">042</span><a id="line.42">     * Returns a salt to be used by the {@link HashService} during hash computation, or {@code null} if no salt is</a>
<span class="sourceLineNo">043</span><a id="line.43">     * provided as part of the request.</a>
<span class="sourceLineNo">044</span><a id="line.44">     * &lt;p/&gt;</a>
<span class="sourceLineNo">045</span><a id="line.45">     * Note that a {@code null} value does not necessarily mean a salt won't be used at all - it just</a>
<span class="sourceLineNo">046</span><a id="line.46">     * means that the request didn't include one.  The servicing {@link HashService} is free to provide a salting</a>
<span class="sourceLineNo">047</span><a id="line.47">     * strategy for a request, even if the request did not specify one.</a>
<span class="sourceLineNo">048</span><a id="line.48">     *</a>
<span class="sourceLineNo">049</span><a id="line.49">     * @return a salt to be used by the {@link HashService} during hash computation, or {@code null} if no salt is</a>
<span class="sourceLineNo">050</span><a id="line.50">     *         provided as part of the request.</a>
<span class="sourceLineNo">051</span><a id="line.51">     */</a>
<span class="sourceLineNo">052</span><a id="line.52">    ByteSource getSalt();</a>
<span class="sourceLineNo">053</span><a id="line.53"></a>
<span class="sourceLineNo">054</span><a id="line.54">    /**</a>
<span class="sourceLineNo">055</span><a id="line.55">     * Returns the number of requested hash iterations to be performed when computing the final {@code Hash} result.</a>
<span class="sourceLineNo">056</span><a id="line.56">     * A non-positive (0 or less) indicates that the {@code HashService}'s default iteration configuration should</a>
<span class="sourceLineNo">057</span><a id="line.57">     * be used.  A positive value overrides the {@code HashService}'s configuration for a single request.</a>
<span class="sourceLineNo">058</span><a id="line.58">     * &lt;p/&gt;</a>
<span class="sourceLineNo">059</span><a id="line.59">     * Note that a {@code HashService} is free to ignore this number if it determines the number is not sufficient</a>
<span class="sourceLineNo">060</span><a id="line.60">     * to meet a desired level of security.</a>
<span class="sourceLineNo">061</span><a id="line.61">     *</a>
<span class="sourceLineNo">062</span><a id="line.62">     * @return the number of requested hash iterations to be performed when computing the final {@code Hash} result.</a>
<span class="sourceLineNo">063</span><a id="line.63">     */</a>
<span class="sourceLineNo">064</span><a id="line.64">    int getIterations();</a>
<span class="sourceLineNo">065</span><a id="line.65"></a>
<span class="sourceLineNo">066</span><a id="line.66">    /**</a>
<span class="sourceLineNo">067</span><a id="line.67">     * Returns the name of the hash algorithm the {@code HashService} should use when computing the {@link Hash}, or</a>
<span class="sourceLineNo">068</span><a id="line.68">     * {@code null} if the default algorithm configuration of the {@code HashService} should be used.  A non-null value</a>
<span class="sourceLineNo">069</span><a id="line.69">     * overrides the {@code HashService}'s configuration for a single request.</a>
<span class="sourceLineNo">070</span><a id="line.70">     * &lt;p/&gt;</a>
<span class="sourceLineNo">071</span><a id="line.71">     * Note that a {@code HashService} is free to ignore this value if it determines that the algorithm is not</a>
<span class="sourceLineNo">072</span><a id="line.72">     * sufficient to meet a desired level of security.</a>
<span class="sourceLineNo">073</span><a id="line.73">     *</a>
<span class="sourceLineNo">074</span><a id="line.74">     * @return the name of the hash algorithm the {@code HashService} should use when computing the {@link Hash}, or</a>
<span class="sourceLineNo">075</span><a id="line.75">     *         {@code null} if the default algorithm configuration of the {@code HashService} should be used.</a>
<span class="sourceLineNo">076</span><a id="line.76">     */</a>
<span class="sourceLineNo">077</span><a id="line.77">    String getAlgorithmName();</a>
<span class="sourceLineNo">078</span><a id="line.78"></a>
<span class="sourceLineNo">079</span><a id="line.79">    /**</a>
<span class="sourceLineNo">080</span><a id="line.80">     * A Builder class representing the Builder design pattern for constructing {@link HashRequest} instances.</a>
<span class="sourceLineNo">081</span><a id="line.81">     *</a>
<span class="sourceLineNo">082</span><a id="line.82">     * @see SimpleHashRequest</a>
<span class="sourceLineNo">083</span><a id="line.83">     * @since 1.2</a>
<span class="sourceLineNo">084</span><a id="line.84">     */</a>
<span class="sourceLineNo">085</span><a id="line.85">    public static class Builder {</a>
<span class="sourceLineNo">086</span><a id="line.86"></a>
<span class="sourceLineNo">087</span><a id="line.87">        private ByteSource source;</a>
<span class="sourceLineNo">088</span><a id="line.88">        private ByteSource salt;</a>
<span class="sourceLineNo">089</span><a id="line.89">        private int iterations;</a>
<span class="sourceLineNo">090</span><a id="line.90">        private String algorithmName;</a>
<span class="sourceLineNo">091</span><a id="line.91"></a>
<span class="sourceLineNo">092</span><a id="line.92">        /**</a>
<span class="sourceLineNo">093</span><a id="line.93">         * Default no-arg constructor.</a>
<span class="sourceLineNo">094</span><a id="line.94">         */</a>
<span class="sourceLineNo">095</span><a id="line.95">        public Builder() {</a>
<span class="sourceLineNo">096</span><a id="line.96">            this.iterations = 0;</a>
<span class="sourceLineNo">097</span><a id="line.97">        }</a>
<span class="sourceLineNo">098</span><a id="line.98"></a>
<span class="sourceLineNo">099</span><a id="line.99">        /**</a>
<span class="sourceLineNo">100</span><a id="line.100">         * Sets the source data that will be hashed by a {@link HashService}. For example, this might be a</a>
<span class="sourceLineNo">101</span><a id="line.101">         * {@code ByteSource} representation of a password, or file, etc.</a>
<span class="sourceLineNo">102</span><a id="line.102">         *</a>
<span class="sourceLineNo">103</span><a id="line.103">         * @param source the source data that will be hashed by a {@link HashService}.</a>
<span class="sourceLineNo">104</span><a id="line.104">         * @return this {@code Builder} instance for method chaining.</a>
<span class="sourceLineNo">105</span><a id="line.105">         * @see HashRequest#getSource()</a>
<span class="sourceLineNo">106</span><a id="line.106">         * @see #setSource(Object)</a>
<span class="sourceLineNo">107</span><a id="line.107">         */</a>
<span class="sourceLineNo">108</span><a id="line.108">        public Builder setSource(ByteSource source) {</a>
<span class="sourceLineNo">109</span><a id="line.109">            this.source = source;</a>
<span class="sourceLineNo">110</span><a id="line.110">            return this;</a>
<span class="sourceLineNo">111</span><a id="line.111">        }</a>
<span class="sourceLineNo">112</span><a id="line.112"></a>
<span class="sourceLineNo">113</span><a id="line.113">        /**</a>
<span class="sourceLineNo">114</span><a id="line.114">         * Sets the source data that will be hashed by a {@link HashService}.</a>
<span class="sourceLineNo">115</span><a id="line.115">         * &lt;p/&gt;</a>
<span class="sourceLineNo">116</span><a id="line.116">         * This is a convenience alternative to {@link #setSource(ByteSource)}: it will attempt to convert the</a>
<span class="sourceLineNo">117</span><a id="line.117">         * argument into a {@link ByteSource} instance using Shiro's default conversion heuristics</a>
<span class="sourceLineNo">118</span><a id="line.118">         * (as defined by {@link ByteSource.Util#isCompatible(Object) ByteSource.Util.isCompatible}.  If the object</a>
<span class="sourceLineNo">119</span><a id="line.119">         * cannot be heuristically converted to a {@code ByteSource}, an {@code IllegalArgumentException} will be</a>
<span class="sourceLineNo">120</span><a id="line.120">         * thrown.</a>
<span class="sourceLineNo">121</span><a id="line.121">         *</a>
<span class="sourceLineNo">122</span><a id="line.122">         * @param source the byte-backed source data that will be hashed by a {@link HashService}.</a>
<span class="sourceLineNo">123</span><a id="line.123">         * @return this {@code Builder} instance for method chaining.</a>
<span class="sourceLineNo">124</span><a id="line.124">         * @throws IllegalArgumentException if the argument cannot be heuristically converted to a {@link ByteSource}</a>
<span class="sourceLineNo">125</span><a id="line.125">         *                                  instance.</a>
<span class="sourceLineNo">126</span><a id="line.126">         * @see HashRequest#getSource()</a>
<span class="sourceLineNo">127</span><a id="line.127">         * @see #setSource(ByteSource)</a>
<span class="sourceLineNo">128</span><a id="line.128">         */</a>
<span class="sourceLineNo">129</span><a id="line.129">        public Builder setSource(Object source) throws IllegalArgumentException {</a>
<span class="sourceLineNo">130</span><a id="line.130">            this.source = ByteSource.Util.bytes(source);</a>
<span class="sourceLineNo">131</span><a id="line.131">            return this;</a>
<span class="sourceLineNo">132</span><a id="line.132">        }</a>
<span class="sourceLineNo">133</span><a id="line.133"></a>
<span class="sourceLineNo">134</span><a id="line.134">        /**</a>
<span class="sourceLineNo">135</span><a id="line.135">         * Sets a salt to be used by the {@link HashService} during hash computation.</a>
<span class="sourceLineNo">136</span><a id="line.136">         * &lt;p/&gt;</a>
<span class="sourceLineNo">137</span><a id="line.137">         * &lt;b&gt;NOTE&lt;/b&gt;: not calling this method does not necessarily mean a salt won't be used at all - it just</a>
<span class="sourceLineNo">138</span><a id="line.138">         * means that the request didn't include a salt.  The servicing {@link HashService} is free to provide a salting</a>
<span class="sourceLineNo">139</span><a id="line.139">         * strategy for a request, even if the request did not specify one.  You can always check the result</a>
<span class="sourceLineNo">140</span><a id="line.140">         * {@code Hash} {@link Hash#getSalt() getSalt()} method to see what the actual</a>
<span class="sourceLineNo">141</span><a id="line.141">         * salt was (if any), which may or may not match this request salt.</a>
<span class="sourceLineNo">142</span><a id="line.142">         *</a>
<span class="sourceLineNo">143</span><a id="line.143">         * @param salt a salt to be used by the {@link HashService} during hash computation</a>
<span class="sourceLineNo">144</span><a id="line.144">         * @return this {@code Builder} instance for method chaining.</a>
<span class="sourceLineNo">145</span><a id="line.145">         * @see HashRequest#getSalt()</a>
<span class="sourceLineNo">146</span><a id="line.146">         */</a>
<span class="sourceLineNo">147</span><a id="line.147">        public Builder setSalt(ByteSource salt) {</a>
<span class="sourceLineNo">148</span><a id="line.148">            this.salt = salt;</a>
<span class="sourceLineNo">149</span><a id="line.149">            return this;</a>
<span class="sourceLineNo">150</span><a id="line.150">        }</a>
<span class="sourceLineNo">151</span><a id="line.151"></a>
<span class="sourceLineNo">152</span><a id="line.152">        /**</a>
<span class="sourceLineNo">153</span><a id="line.153">         * Sets a salt to be used by the {@link HashService} during hash computation.</a>
<span class="sourceLineNo">154</span><a id="line.154">         * &lt;p/&gt;</a>
<span class="sourceLineNo">155</span><a id="line.155">         * This is a convenience alternative to {@link #setSalt(ByteSource)}: it will attempt to convert the</a>
<span class="sourceLineNo">156</span><a id="line.156">         * argument into a {@link ByteSource} instance using Shiro's default conversion heuristics</a>
<span class="sourceLineNo">157</span><a id="line.157">         * (as defined by {@link ByteSource.Util#isCompatible(Object) ByteSource.Util.isCompatible}.  If the object</a>
<span class="sourceLineNo">158</span><a id="line.158">         * cannot be heuristically converted to a {@code ByteSource}, an {@code IllegalArgumentException} will be</a>
<span class="sourceLineNo">159</span><a id="line.159">         * thrown.</a>
<span class="sourceLineNo">160</span><a id="line.160">         *</a>
<span class="sourceLineNo">161</span><a id="line.161">         * @param salt a salt to be used by the {@link HashService} during hash computation.</a>
<span class="sourceLineNo">162</span><a id="line.162">         * @return this {@code Builder} instance for method chaining.</a>
<span class="sourceLineNo">163</span><a id="line.163">         * @throws IllegalArgumentException if the argument cannot be heuristically converted to a {@link ByteSource}</a>
<span class="sourceLineNo">164</span><a id="line.164">         *                                  instance.</a>
<span class="sourceLineNo">165</span><a id="line.165">         * @see #setSalt(ByteSource)</a>
<span class="sourceLineNo">166</span><a id="line.166">         * @see HashRequest#getSalt()</a>
<span class="sourceLineNo">167</span><a id="line.167">         */</a>
<span class="sourceLineNo">168</span><a id="line.168">        public Builder setSalt(Object salt) throws IllegalArgumentException {</a>
<span class="sourceLineNo">169</span><a id="line.169">            this.salt = ByteSource.Util.bytes(salt);</a>
<span class="sourceLineNo">170</span><a id="line.170">            return this;</a>
<span class="sourceLineNo">171</span><a id="line.171">        }</a>
<span class="sourceLineNo">172</span><a id="line.172"></a>
<span class="sourceLineNo">173</span><a id="line.173">        /**</a>
<span class="sourceLineNo">174</span><a id="line.174">         * Sets the number of requested hash iterations to be performed when computing the final {@code Hash} result.</a>
<span class="sourceLineNo">175</span><a id="line.175">         * Not calling this method or setting a non-positive value (0 or less) indicates that the {@code HashService}'s</a>
<span class="sourceLineNo">176</span><a id="line.176">         * default iteration configuration should be used.  A positive value overrides the {@code HashService}'s</a>
<span class="sourceLineNo">177</span><a id="line.177">         * configuration for a single request.</a>
<span class="sourceLineNo">178</span><a id="line.178">         * &lt;p/&gt;</a>
<span class="sourceLineNo">179</span><a id="line.179">         * Note that a {@code HashService} is free to ignore this number if it determines the number is not sufficient</a>
<span class="sourceLineNo">180</span><a id="line.180">         * to meet a desired level of security. You can always check the result</a>
<span class="sourceLineNo">181</span><a id="line.181">         * {@code Hash} {@link Hash#getIterations() getIterations()} method to see what the actual</a>
<span class="sourceLineNo">182</span><a id="line.182">         * number of iterations was, which may or may not match this request salt.</a>
<span class="sourceLineNo">183</span><a id="line.183">         *</a>
<span class="sourceLineNo">184</span><a id="line.184">         * @param iterations the number of requested hash iterations to be performed when computing the final</a>
<span class="sourceLineNo">185</span><a id="line.185">         *                   {@code Hash} result.</a>
<span class="sourceLineNo">186</span><a id="line.186">         * @return this {@code Builder} instance for method chaining.</a>
<span class="sourceLineNo">187</span><a id="line.187">         * @see HashRequest#getIterations()</a>
<span class="sourceLineNo">188</span><a id="line.188">         */</a>
<span class="sourceLineNo">189</span><a id="line.189">        public Builder setIterations(int iterations) {</a>
<span class="sourceLineNo">190</span><a id="line.190">            this.iterations = iterations;</a>
<span class="sourceLineNo">191</span><a id="line.191">            return this;</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">        /**</a>
<span class="sourceLineNo">195</span><a id="line.195">         * Sets the name of the hash algorithm the {@code HashService} should use when computing the {@link Hash}.</a>
<span class="sourceLineNo">196</span><a id="line.196">         * Not calling this method or setting it to {@code null} indicates the the default algorithm configuration of</a>
<span class="sourceLineNo">197</span><a id="line.197">         * the {@code HashService} should be used.  A non-null value</a>
<span class="sourceLineNo">198</span><a id="line.198">         * overrides the {@code HashService}'s configuration for a single request.</a>
<span class="sourceLineNo">199</span><a id="line.199">         * &lt;p/&gt;</a>
<span class="sourceLineNo">200</span><a id="line.200">         * Note that a {@code HashService} is free to ignore this value if it determines that the algorithm is not</a>
<span class="sourceLineNo">201</span><a id="line.201">         * sufficient to meet a desired level of security. You can always check the result</a>
<span class="sourceLineNo">202</span><a id="line.202">         * {@code Hash} {@link Hash#getAlgorithmName() getAlgorithmName()} method to see what the actual</a>
<span class="sourceLineNo">203</span><a id="line.203">         * algorithm was, which may or may not match this request salt.</a>
<span class="sourceLineNo">204</span><a id="line.204">         *</a>
<span class="sourceLineNo">205</span><a id="line.205">         * @param algorithmName the name of the hash algorithm the {@code HashService} should use when computing the</a>
<span class="sourceLineNo">206</span><a id="line.206">         *                      {@link Hash}, or {@code null} if the default algorithm configuration of the</a>
<span class="sourceLineNo">207</span><a id="line.207">         *                      {@code HashService} should be used.</a>
<span class="sourceLineNo">208</span><a id="line.208">         * @return this {@code Builder} instance for method chaining.</a>
<span class="sourceLineNo">209</span><a id="line.209">         * @see HashRequest#getAlgorithmName()</a>
<span class="sourceLineNo">210</span><a id="line.210">         */</a>
<span class="sourceLineNo">211</span><a id="line.211">        public Builder setAlgorithmName(String algorithmName) {</a>
<span class="sourceLineNo">212</span><a id="line.212">            this.algorithmName = algorithmName;</a>
<span class="sourceLineNo">213</span><a id="line.213">            return this;</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">        /**</a>
<span class="sourceLineNo">217</span><a id="line.217">         * Builds a {@link HashRequest} instance reflecting the specified configuration.</a>
<span class="sourceLineNo">218</span><a id="line.218">         *</a>
<span class="sourceLineNo">219</span><a id="line.219">         * @return a {@link HashRequest} instance reflecting the specified configuration.</a>
<span class="sourceLineNo">220</span><a id="line.220">         */</a>
<span class="sourceLineNo">221</span><a id="line.221">        public HashRequest build() {</a>
<span class="sourceLineNo">222</span><a id="line.222">            return new SimpleHashRequest(this.algorithmName, this.source, this.salt, this.iterations);</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">}</a>




























































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