<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>HashRequest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/shiro/crypto/hash/HashRequest.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> * <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> */</em>
<a name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.shiro.crypto.hash;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.shiro.util.ByteSource;
<a name="22" href="#22">22</a>  
<a name="23" href="#23">23</a>  <em class="jxr_javadoccomment">/**</em>
<a name="24" href="#24">24</a>  <em class="jxr_javadoccomment"> * A {@code HashRequest} is composed of data that will be used by a {@link HashService} to compute a hash (aka</em>
<a name="25" href="#25">25</a>  <em class="jxr_javadoccomment"> * 'digest').  While you can instantiate a concrete {@code HashRequest} class directly, most will find using the</em>
<a name="26" href="#26">26</a>  <em class="jxr_javadoccomment"> * {@link HashRequest.Builder} more convenient.</em>
<a name="27" href="#27">27</a>  <em class="jxr_javadoccomment"> *</em>
<a name="28" href="#28">28</a>  <em class="jxr_javadoccomment"> * @see HashRequest.Builder</em>
<a name="29" href="#29">29</a>  <em class="jxr_javadoccomment"> * @since 1.2</em>
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment"> */</em>
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">interface</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">HashRequest</a> {
<a name="32" href="#32">32</a>  
<a name="33" href="#33">33</a>      <em class="jxr_javadoccomment">/**</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment">     * Returns the source data that will be hashed by a {@link HashService}. For example, this might be a</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment">     * {@code ByteSource} representation of a password, or file, etc.</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment">     *</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment">     * @return the source data that will be hashed by a {@link HashService}.</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment">     */</em>
<a name="39" href="#39">39</a>      <a href="../../../../../org/apache/shiro/util/ByteSource.html">ByteSource</a> getSource();
<a name="40" href="#40">40</a>  
<a name="41" href="#41">41</a>      <em class="jxr_javadoccomment">/**</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment">     * Returns a salt to be used by the {@link HashService} during hash computation, or {@code null} if no salt is</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment">     * provided as part of the request.</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment">     * Note that a {@code null} value does not necessarily mean a salt won't be used at all - it just</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment">     * means that the request didn't include one.  The servicing {@link HashService} is free to provide a salting</em>
<a name="47" href="#47">47</a>  <em class="jxr_javadoccomment">     * strategy for a request, even if the request did not specify one.</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment">     *</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment">     * @return a salt to be used by the {@link HashService} during hash computation, or {@code null} if no salt is</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     *         provided as part of the request.</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     */</em>
<a name="52" href="#52">52</a>      <a href="../../../../../org/apache/shiro/util/ByteSource.html">ByteSource</a> getSalt();
<a name="53" href="#53">53</a>  
<a name="54" href="#54">54</a>      <em class="jxr_javadoccomment">/**</em>
<a name="55" href="#55">55</a>  <em class="jxr_javadoccomment">     * Returns the number of requested hash iterations to be performed when computing the final {@code Hash} result.</em>
<a name="56" href="#56">56</a>  <em class="jxr_javadoccomment">     * A non-positive (0 or less) indicates that the {@code HashService}'s default iteration configuration should</em>
<a name="57" href="#57">57</a>  <em class="jxr_javadoccomment">     * be used.  A positive value overrides the {@code HashService}'s configuration for a single request.</em>
<a name="58" href="#58">58</a>  <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="59" href="#59">59</a>  <em class="jxr_javadoccomment">     * Note that a {@code HashService} is free to ignore this number if it determines the number is not sufficient</em>
<a name="60" href="#60">60</a>  <em class="jxr_javadoccomment">     * to meet a desired level of security.</em>
<a name="61" href="#61">61</a>  <em class="jxr_javadoccomment">     *</em>
<a name="62" href="#62">62</a>  <em class="jxr_javadoccomment">     * @return the number of requested hash iterations to be performed when computing the final {@code Hash} result.</em>
<a name="63" href="#63">63</a>  <em class="jxr_javadoccomment">     */</em>
<a name="64" href="#64">64</a>      <strong class="jxr_keyword">int</strong> getIterations();
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>      <em class="jxr_javadoccomment">/**</em>
<a name="67" href="#67">67</a>  <em class="jxr_javadoccomment">     * Returns the name of the hash algorithm the {@code HashService} should use when computing the {@link Hash}, or</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     * {@code null} if the default algorithm configuration of the {@code HashService} should be used.  A non-null value</em>
<a name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     * overrides the {@code HashService}'s configuration for a single request.</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * &lt;p/&gt;</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     * Note that a {@code HashService} is free to ignore this value if it determines that the algorithm is not</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     * sufficient to meet a desired level of security.</em>
<a name="73" href="#73">73</a>  <em class="jxr_javadoccomment">     *</em>
<a name="74" href="#74">74</a>  <em class="jxr_javadoccomment">     * @return the name of the hash algorithm the {@code HashService} should use when computing the {@link Hash}, or</em>
<a name="75" href="#75">75</a>  <em class="jxr_javadoccomment">     *         {@code null} if the default algorithm configuration of the {@code HashService} should be used.</em>
<a name="76" href="#76">76</a>  <em class="jxr_javadoccomment">     */</em>
<a name="77" href="#77">77</a>      String getAlgorithmName();
<a name="78" href="#78">78</a>  
<a name="79" href="#79">79</a>      <em class="jxr_javadoccomment">/**</em>
<a name="80" href="#80">80</a>  <em class="jxr_javadoccomment">     * A Builder class representing the Builder design pattern for constructing {@link HashRequest} instances.</em>
<a name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     *</em>
<a name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     * @see SimpleHashRequest</em>
<a name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * @since 1.2</em>
<a name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     */</em>
<a name="85" href="#85">85</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">Builder</a> {
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>          <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/shiro/util/ByteSource.html">ByteSource</a> source;
<a name="88" href="#88">88</a>          <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/shiro/util/ByteSource.html">ByteSource</a> salt;
<a name="89" href="#89">89</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> iterations;
<a name="90" href="#90">90</a>          <strong class="jxr_keyword">private</strong> String algorithmName;
<a name="91" href="#91">91</a>  
<a name="92" href="#92">92</a>          <em class="jxr_javadoccomment">/**</em>
<a name="93" href="#93">93</a>  <em class="jxr_javadoccomment">         * Default no-arg constructor.</em>
<a name="94" href="#94">94</a>  <em class="jxr_javadoccomment">         */</em>
<a name="95" href="#95">95</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">Builder</a>() {
<a name="96" href="#96">96</a>              <strong class="jxr_keyword">this</strong>.iterations = 0;
<a name="97" href="#97">97</a>          }
<a name="98" href="#98">98</a>  
<a name="99" href="#99">99</a>          <em class="jxr_javadoccomment">/**</em>
<a name="100" href="#100">100</a> <em class="jxr_javadoccomment">         * Sets the source data that will be hashed by a {@link HashService}. For example, this might be a</em>
<a name="101" href="#101">101</a> <em class="jxr_javadoccomment">         * {@code ByteSource} representation of a password, or file, etc.</em>
<a name="102" href="#102">102</a> <em class="jxr_javadoccomment">         *</em>
<a name="103" href="#103">103</a> <em class="jxr_javadoccomment">         * @param source the source data that will be hashed by a {@link HashService}.</em>
<a name="104" href="#104">104</a> <em class="jxr_javadoccomment">         * @return this {@code Builder} instance for method chaining.</em>
<a name="105" href="#105">105</a> <em class="jxr_javadoccomment">         * @see HashRequest#getSource()</em>
<a name="106" href="#106">106</a> <em class="jxr_javadoccomment">         * @see #setSource(Object)</em>
<a name="107" href="#107">107</a> <em class="jxr_javadoccomment">         */</em>
<a name="108" href="#108">108</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">Builder</a> setSource(<a href="../../../../../org/apache/shiro/util/ByteSource.html">ByteSource</a> source) {
<a name="109" href="#109">109</a>             <strong class="jxr_keyword">this</strong>.source = source;
<a name="110" href="#110">110</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
<a name="111" href="#111">111</a>         }
<a name="112" href="#112">112</a> 
<a name="113" href="#113">113</a>         <em class="jxr_javadoccomment">/**</em>
<a name="114" href="#114">114</a> <em class="jxr_javadoccomment">         * Sets the source data that will be hashed by a {@link HashService}.</em>
<a name="115" href="#115">115</a> <em class="jxr_javadoccomment">         * &lt;p/&gt;</em>
<a name="116" href="#116">116</a> <em class="jxr_javadoccomment">         * This is a convenience alternative to {@link #setSource(ByteSource)}: it will attempt to convert the</em>
<a name="117" href="#117">117</a> <em class="jxr_javadoccomment">         * argument into a {@link ByteSource} instance using Shiro's default conversion heuristics</em>
<a name="118" href="#118">118</a> <em class="jxr_javadoccomment">         * (as defined by {@link ByteSource.Util#isCompatible(Object) ByteSource.Util.isCompatible}.  If the object</em>
<a name="119" href="#119">119</a> <em class="jxr_javadoccomment">         * cannot be heuristically converted to a {@code ByteSource}, an {@code IllegalArgumentException} will be</em>
<a name="120" href="#120">120</a> <em class="jxr_javadoccomment">         * thrown.</em>
<a name="121" href="#121">121</a> <em class="jxr_javadoccomment">         *</em>
<a name="122" href="#122">122</a> <em class="jxr_javadoccomment">         * @param source the byte-backed source data that will be hashed by a {@link HashService}.</em>
<a name="123" href="#123">123</a> <em class="jxr_javadoccomment">         * @return this {@code Builder} instance for method chaining.</em>
<a name="124" href="#124">124</a> <em class="jxr_javadoccomment">         * @throws IllegalArgumentException if the argument cannot be heuristically converted to a {@link ByteSource}</em>
<a name="125" href="#125">125</a> <em class="jxr_javadoccomment">         *                                  instance.</em>
<a name="126" href="#126">126</a> <em class="jxr_javadoccomment">         * @see HashRequest#getSource()</em>
<a name="127" href="#127">127</a> <em class="jxr_javadoccomment">         * @see #setSource(ByteSource)</em>
<a name="128" href="#128">128</a> <em class="jxr_javadoccomment">         */</em>
<a name="129" href="#129">129</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">Builder</a> setSource(Object source) <strong class="jxr_keyword">throws</strong> IllegalArgumentException {
<a name="130" href="#130">130</a>             <strong class="jxr_keyword">this</strong>.source = ByteSource.Util.bytes(source);
<a name="131" href="#131">131</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
<a name="132" href="#132">132</a>         }
<a name="133" href="#133">133</a> 
<a name="134" href="#134">134</a>         <em class="jxr_javadoccomment">/**</em>
<a name="135" href="#135">135</a> <em class="jxr_javadoccomment">         * Sets a salt to be used by the {@link HashService} during hash computation.</em>
<a name="136" href="#136">136</a> <em class="jxr_javadoccomment">         * &lt;p/&gt;</em>
<a name="137" href="#137">137</a> <em class="jxr_javadoccomment">         * &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</em>
<a name="138" href="#138">138</a> <em class="jxr_javadoccomment">         * means that the request didn't include a salt.  The servicing {@link HashService} is free to provide a salting</em>
<a name="139" href="#139">139</a> <em class="jxr_javadoccomment">         * strategy for a request, even if the request did not specify one.  You can always check the result</em>
<a name="140" href="#140">140</a> <em class="jxr_javadoccomment">         * {@code Hash} {@link Hash#getSalt() getSalt()} method to see what the actual</em>
<a name="141" href="#141">141</a> <em class="jxr_javadoccomment">         * salt was (if any), which may or may not match this request salt.</em>
<a name="142" href="#142">142</a> <em class="jxr_javadoccomment">         *</em>
<a name="143" href="#143">143</a> <em class="jxr_javadoccomment">         * @param salt a salt to be used by the {@link HashService} during hash computation</em>
<a name="144" href="#144">144</a> <em class="jxr_javadoccomment">         * @return this {@code Builder} instance for method chaining.</em>
<a name="145" href="#145">145</a> <em class="jxr_javadoccomment">         * @see HashRequest#getSalt()</em>
<a name="146" href="#146">146</a> <em class="jxr_javadoccomment">         */</em>
<a name="147" href="#147">147</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">Builder</a> setSalt(<a href="../../../../../org/apache/shiro/util/ByteSource.html">ByteSource</a> salt) {
<a name="148" href="#148">148</a>             <strong class="jxr_keyword">this</strong>.salt = salt;
<a name="149" href="#149">149</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
<a name="150" href="#150">150</a>         }
<a name="151" href="#151">151</a> 
<a name="152" href="#152">152</a>         <em class="jxr_javadoccomment">/**</em>
<a name="153" href="#153">153</a> <em class="jxr_javadoccomment">         * Sets a salt to be used by the {@link HashService} during hash computation.</em>
<a name="154" href="#154">154</a> <em class="jxr_javadoccomment">         * &lt;p/&gt;</em>
<a name="155" href="#155">155</a> <em class="jxr_javadoccomment">         * This is a convenience alternative to {@link #setSalt(ByteSource)}: it will attempt to convert the</em>
<a name="156" href="#156">156</a> <em class="jxr_javadoccomment">         * argument into a {@link ByteSource} instance using Shiro's default conversion heuristics</em>
<a name="157" href="#157">157</a> <em class="jxr_javadoccomment">         * (as defined by {@link ByteSource.Util#isCompatible(Object) ByteSource.Util.isCompatible}.  If the object</em>
<a name="158" href="#158">158</a> <em class="jxr_javadoccomment">         * cannot be heuristically converted to a {@code ByteSource}, an {@code IllegalArgumentException} will be</em>
<a name="159" href="#159">159</a> <em class="jxr_javadoccomment">         * thrown.</em>
<a name="160" href="#160">160</a> <em class="jxr_javadoccomment">         *</em>
<a name="161" href="#161">161</a> <em class="jxr_javadoccomment">         * @param salt a salt to be used by the {@link HashService} during hash computation.</em>
<a name="162" href="#162">162</a> <em class="jxr_javadoccomment">         * @return this {@code Builder} instance for method chaining.</em>
<a name="163" href="#163">163</a> <em class="jxr_javadoccomment">         * @throws IllegalArgumentException if the argument cannot be heuristically converted to a {@link ByteSource}</em>
<a name="164" href="#164">164</a> <em class="jxr_javadoccomment">         *                                  instance.</em>
<a name="165" href="#165">165</a> <em class="jxr_javadoccomment">         * @see #setSalt(ByteSource)</em>
<a name="166" href="#166">166</a> <em class="jxr_javadoccomment">         * @see HashRequest#getSalt()</em>
<a name="167" href="#167">167</a> <em class="jxr_javadoccomment">         */</em>
<a name="168" href="#168">168</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">Builder</a> setSalt(Object salt) <strong class="jxr_keyword">throws</strong> IllegalArgumentException {
<a name="169" href="#169">169</a>             <strong class="jxr_keyword">this</strong>.salt = ByteSource.Util.bytes(salt);
<a name="170" href="#170">170</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
<a name="171" href="#171">171</a>         }
<a name="172" href="#172">172</a> 
<a name="173" href="#173">173</a>         <em class="jxr_javadoccomment">/**</em>
<a name="174" href="#174">174</a> <em class="jxr_javadoccomment">         * Sets the number of requested hash iterations to be performed when computing the final {@code Hash} result.</em>
<a name="175" href="#175">175</a> <em class="jxr_javadoccomment">         * Not calling this method or setting a non-positive value (0 or less) indicates that the {@code HashService}'s</em>
<a name="176" href="#176">176</a> <em class="jxr_javadoccomment">         * default iteration configuration should be used.  A positive value overrides the {@code HashService}'s</em>
<a name="177" href="#177">177</a> <em class="jxr_javadoccomment">         * configuration for a single request.</em>
<a name="178" href="#178">178</a> <em class="jxr_javadoccomment">         * &lt;p/&gt;</em>
<a name="179" href="#179">179</a> <em class="jxr_javadoccomment">         * Note that a {@code HashService} is free to ignore this number if it determines the number is not sufficient</em>
<a name="180" href="#180">180</a> <em class="jxr_javadoccomment">         * to meet a desired level of security. You can always check the result</em>
<a name="181" href="#181">181</a> <em class="jxr_javadoccomment">         * {@code Hash} {@link Hash#getIterations() getIterations()} method to see what the actual</em>
<a name="182" href="#182">182</a> <em class="jxr_javadoccomment">         * number of iterations was, which may or may not match this request salt.</em>
<a name="183" href="#183">183</a> <em class="jxr_javadoccomment">         *</em>
<a name="184" href="#184">184</a> <em class="jxr_javadoccomment">         * @param iterations the number of requested hash iterations to be performed when computing the final</em>
<a name="185" href="#185">185</a> <em class="jxr_javadoccomment">         *                   {@code Hash} result.</em>
<a name="186" href="#186">186</a> <em class="jxr_javadoccomment">         * @return this {@code Builder} instance for method chaining.</em>
<a name="187" href="#187">187</a> <em class="jxr_javadoccomment">         * @see HashRequest#getIterations()</em>
<a name="188" href="#188">188</a> <em class="jxr_javadoccomment">         */</em>
<a name="189" href="#189">189</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">Builder</a> setIterations(<strong class="jxr_keyword">int</strong> iterations) {
<a name="190" href="#190">190</a>             <strong class="jxr_keyword">this</strong>.iterations = iterations;
<a name="191" href="#191">191</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
<a name="192" href="#192">192</a>         }
<a name="193" href="#193">193</a> 
<a name="194" href="#194">194</a>         <em class="jxr_javadoccomment">/**</em>
<a name="195" href="#195">195</a> <em class="jxr_javadoccomment">         * Sets the name of the hash algorithm the {@code HashService} should use when computing the {@link Hash}.</em>
<a name="196" href="#196">196</a> <em class="jxr_javadoccomment">         * Not calling this method or setting it to {@code null} indicates the the default algorithm configuration of</em>
<a name="197" href="#197">197</a> <em class="jxr_javadoccomment">         * the {@code HashService} should be used.  A non-null value</em>
<a name="198" href="#198">198</a> <em class="jxr_javadoccomment">         * overrides the {@code HashService}'s configuration for a single request.</em>
<a name="199" href="#199">199</a> <em class="jxr_javadoccomment">         * &lt;p/&gt;</em>
<a name="200" href="#200">200</a> <em class="jxr_javadoccomment">         * Note that a {@code HashService} is free to ignore this value if it determines that the algorithm is not</em>
<a name="201" href="#201">201</a> <em class="jxr_javadoccomment">         * sufficient to meet a desired level of security. You can always check the result</em>
<a name="202" href="#202">202</a> <em class="jxr_javadoccomment">         * {@code Hash} {@link Hash#getAlgorithmName() getAlgorithmName()} method to see what the actual</em>
<a name="203" href="#203">203</a> <em class="jxr_javadoccomment">         * algorithm was, which may or may not match this request salt.</em>
<a name="204" href="#204">204</a> <em class="jxr_javadoccomment">         *</em>
<a name="205" href="#205">205</a> <em class="jxr_javadoccomment">         * @param algorithmName the name of the hash algorithm the {@code HashService} should use when computing the</em>
<a name="206" href="#206">206</a> <em class="jxr_javadoccomment">         *                      {@link Hash}, or {@code null} if the default algorithm configuration of the</em>
<a name="207" href="#207">207</a> <em class="jxr_javadoccomment">         *                      {@code HashService} should be used.</em>
<a name="208" href="#208">208</a> <em class="jxr_javadoccomment">         * @return this {@code Builder} instance for method chaining.</em>
<a name="209" href="#209">209</a> <em class="jxr_javadoccomment">         * @see HashRequest#getAlgorithmName()</em>
<a name="210" href="#210">210</a> <em class="jxr_javadoccomment">         */</em>
<a name="211" href="#211">211</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">Builder</a> setAlgorithmName(String algorithmName) {
<a name="212" href="#212">212</a>             <strong class="jxr_keyword">this</strong>.algorithmName = algorithmName;
<a name="213" href="#213">213</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
<a name="214" href="#214">214</a>         }
<a name="215" href="#215">215</a> 
<a name="216" href="#216">216</a>         <em class="jxr_javadoccomment">/**</em>
<a name="217" href="#217">217</a> <em class="jxr_javadoccomment">         * Builds a {@link HashRequest} instance reflecting the specified configuration.</em>
<a name="218" href="#218">218</a> <em class="jxr_javadoccomment">         *</em>
<a name="219" href="#219">219</a> <em class="jxr_javadoccomment">         * @return a {@link HashRequest} instance reflecting the specified configuration.</em>
<a name="220" href="#220">220</a> <em class="jxr_javadoccomment">         */</em>
<a name="221" href="#221">221</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/shiro/crypto/hash/HashRequest.html">HashRequest</a> build() {
<a name="222" href="#222">222</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/shiro/crypto/hash/SimpleHashRequest.html">SimpleHashRequest</a>(<strong class="jxr_keyword">this</strong>.algorithmName, <strong class="jxr_keyword">this</strong>.source, <strong class="jxr_keyword">this</strong>.salt, <strong class="jxr_keyword">this</strong>.iterations);
<a name="223" href="#223">223</a>         }
<a name="224" href="#224">224</a>     }
<a name="225" href="#225">225</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>
