You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2013/04/06 18:40:29 UTC
svn commit: r857520 [14/35] - in
/websites/production/commons/content/proper/commons-codec: ./
apidocs/org/apache/commons/codec/binary/
apidocs/org/apache/commons/codec/digest/
apidocs/src-html/org/apache/commons/codec/binary/
apidocs/src-html/org/apac...
Modified: websites/production/commons/content/proper/commons-codec/cobertura/org.apache.commons.codec.digest.Sha2Crypt.html
==============================================================================
--- websites/production/commons/content/proper/commons-codec/cobertura/org.apache.commons.codec.digest.Sha2Crypt.html (original)
+++ websites/production/commons/content/proper/commons-codec/cobertura/org.apache.commons.codec.digest.Sha2Crypt.html Sat Apr 6 16:40:25 2013
@@ -12,7 +12,7 @@
<div class="separator"> </div>
<table class="report">
<thead><tr> <td class="heading">Classes in this File</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
- <tr><td><a href="org.apache.commons.codec.digest.Sha2Crypt.html">Sha2Crypt</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">97%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:97px"><span class="text">129/132</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">95%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:95px"><span class="text">38/40</span></div></div></td></tr></table></td><td class="value"><span class="hidden">5.4;</span>5.4</td></tr>
+ <tr><td><a href="org.apache.commons.codec.digest.Sha2Crypt.html">Sha2Crypt</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">97%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:97px"><span class="text">124/127</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">92%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:92px"><span class="text">37/40</span></div></div></td></tr></table></td><td class="value"><span class="hidden">5.4;</span>5.4</td></tr>
</table>
<div class="separator"> </div>
@@ -97,7 +97,7 @@
<td class="src"><pre class="src"> <span class="comment"> * @since 1.7</span></pre></td></tr>
<tr> <td class="numLine"> 40</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 41</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> Sha2Crypt {</pre></td></tr>
+<tr> <td class="numLineCover"> 41</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> Sha2Crypt {</pre></td></tr>
<tr> <td class="numLine"> 42</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 43</td> <td class="nbHits"> </td>
@@ -150,8 +150,9 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 67</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/** The pattern to match valid salt values. */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 68</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Pattern SALT_PATTERN = Pattern</pre></td></tr>
-<tr> <td class="numLineCover"> 69</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> .compile(<span class="string">"^\\$([56])\\$(rounds=(\\d+)\\$)?([\\.\\/a-zA-Z0-9]{1,16}).*"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 68</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Pattern SALT_PATTERN = Pattern</pre></td></tr>
+<tr> <td class="numLine"> 69</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> .compile(<span class="string">"^\\$([56])\\$(rounds=(\\d+)\\$)?([\\.\\/a-zA-Z0-9]{1,16}).*"</span>);</pre></td></tr>
<tr> <td class="numLine"> 70</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 71</td> <td class="nbHits"> </td>
@@ -172,7 +173,7 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 79</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String sha256Crypt(<span class="keyword">final</span> <span class="keyword">byte</span>[] keyBytes) {</pre></td></tr>
-<tr> <td class="numLineCover"> 80</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">return</span> sha256Crypt(keyBytes, <span class="keyword">null</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 80</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> sha256Crypt(keyBytes, <span class="keyword">null</span>);</pre></td></tr>
<tr> <td class="numLine"> 81</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 82</td> <td class="nbHits"> </td>
@@ -199,11 +200,11 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 93</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String sha256Crypt(<span class="keyword">final</span> <span class="keyword">byte</span>[] keyBytes, String salt) {</pre></td></tr>
-<tr> <td class="numLineCover"> 94</td> <td class="nbHitsCovered"><a title="Line 94: Conditional coverage 100% (2/2)."> 80</a></td> <td class="src"><pre class="src"> <a title="Line 94: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (salt == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 95</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> salt = SHA256_PREFIX + B64.getRandomSalt(8);</pre></td></tr>
+<tr> <td class="numLineCover"> 94</td> <td class="nbHitsCovered"><a title="Line 94: Conditional coverage 100% (2/2)."> 60</a></td> <td class="src"><pre class="src"> <a title="Line 94: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (salt == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 95</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> salt = SHA256_PREFIX + B64.getRandomSalt(8);</pre></td></tr>
<tr> <td class="numLine"> 96</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 80</td> <td class="src"><pre class="src"> <span class="keyword">return</span> sha2Crypt(keyBytes, salt, SHA256_PREFIX, SHA256_BLOCKSIZE, MessageDigestAlgorithms.SHA_256);</pre></td></tr>
+<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 60</td> <td class="src"><pre class="src"> <span class="keyword">return</span> sha2Crypt(keyBytes, salt, SHA256_PREFIX, SHA256_BLOCKSIZE, MessageDigestAlgorithms.SHA_256);</pre></td></tr>
<tr> <td class="numLine"> 98</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 99</td> <td class="nbHits"> </td>
@@ -264,40 +265,40 @@
<td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> blocksize, <span class="keyword">final</span> String algorithm) {</pre></td></tr>
<tr> <td class="numLine"> 127</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 128</td> <td class="nbHitsCovered"> 156</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> keyLen = keyBytes.length;</pre></td></tr>
+<tr> <td class="numLineCover"> 128</td> <td class="nbHitsCovered"> 117</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> keyLen = keyBytes.length;</pre></td></tr>
<tr> <td class="numLine"> 129</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 130</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Extracts effective salt and the number of rounds from the given salt.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 131</td> <td class="nbHitsCovered"> 148</td> <td class="src"><pre class="src"> <span class="keyword">int</span> rounds = ROUNDS_DEFAULT;</pre></td></tr>
-<tr> <td class="numLineCover"> 132</td> <td class="nbHitsCovered"> 148</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> roundsCustom = <span class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 133</td> <td class="nbHitsUncovered"><a title="Line 133: Conditional coverage 50% (1/2)."> 148</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 133: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (salt == <span class="keyword">null</span>) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 131</td> <td class="nbHitsCovered"> 111</td> <td class="src"><pre class="src"> <span class="keyword">int</span> rounds = ROUNDS_DEFAULT;</pre></td></tr>
+<tr> <td class="numLineCover"> 132</td> <td class="nbHitsCovered"> 111</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> roundsCustom = <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 133</td> <td class="nbHitsUncovered"><a title="Line 133: Conditional coverage 50% (1/2)."> 111</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 133: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (salt == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 134</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Salt must not be null"</span>);</span></pre></td></tr>
<tr> <td class="numLine"> 135</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 136</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 137</td> <td class="nbHitsCovered"> 148</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Matcher m = SALT_PATTERN.matcher(salt);</pre></td></tr>
-<tr> <td class="numLineCover"> 138</td> <td class="nbHitsUncovered"><a title="Line 138: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 148</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 138: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (m == <span class="keyword">null</span> || !m.find()) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 139</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Invalid salt value: "</span> + salt);</pre></td></tr>
+<tr> <td class="numLineCover"> 137</td> <td class="nbHitsCovered"> 111</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Matcher m = SALT_PATTERN.matcher(salt);</pre></td></tr>
+<tr> <td class="numLineCover"> 138</td> <td class="nbHitsUncovered"><a title="Line 138: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 111</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 138: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (m == <span class="keyword">null</span> || !m.find()) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 139</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Invalid salt value: "</span> + salt);</pre></td></tr>
<tr> <td class="numLine"> 140</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 141</td> <td class="nbHitsCovered"><a title="Line 141: Conditional coverage 100% (2/2)."> 136</a></td> <td class="src"><pre class="src"> <a title="Line 141: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (m.group(3) != <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 142</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> rounds = Integer.parseInt(m.group(3));</pre></td></tr>
-<tr> <td class="numLineCover"> 143</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> rounds = Math.max(ROUNDS_MIN, Math.min(ROUNDS_MAX, rounds));</pre></td></tr>
-<tr> <td class="numLineCover"> 144</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> roundsCustom = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 141</td> <td class="nbHitsCovered"><a title="Line 141: Conditional coverage 100% (2/2)."> 102</a></td> <td class="src"><pre class="src"> <a title="Line 141: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (m.group(3) != <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 142</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> rounds = Integer.parseInt(m.group(3));</pre></td></tr>
+<tr> <td class="numLineCover"> 143</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> rounds = Math.max(ROUNDS_MIN, Math.min(ROUNDS_MAX, rounds));</pre></td></tr>
+<tr> <td class="numLineCover"> 144</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> roundsCustom = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 145</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 146</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String saltString = m.group(4);</pre></td></tr>
-<tr> <td class="numLineCover"> 147</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">byte</span>[] saltBytes = saltString.getBytes(Charsets.UTF_8);</pre></td></tr>
-<tr> <td class="numLineCover"> 148</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> saltLen = saltBytes.length;</pre></td></tr>
+<tr> <td class="numLineCover"> 146</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String saltString = m.group(4);</pre></td></tr>
+<tr> <td class="numLineCover"> 147</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">byte</span>[] saltBytes = saltString.getBytes(Charsets.UTF_8);</pre></td></tr>
+<tr> <td class="numLineCover"> 148</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> saltLen = saltBytes.length;</pre></td></tr>
<tr> <td class="numLine"> 149</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 150</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// 1. start digest A</span></pre></td></tr>
<tr> <td class="numLine"> 151</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Prepare for the real work.</span></pre></td></tr>
-<tr> <td class="numLineCover"> 152</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> MessageDigest ctx = DigestUtils.getDigest(algorithm);</pre></td></tr>
+<tr> <td class="numLineCover"> 152</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> MessageDigest ctx = DigestUtils.getDigest(algorithm);</pre></td></tr>
<tr> <td class="numLine"> 153</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 154</td> <td class="nbHits"> </td>
@@ -308,7 +309,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Add the key string.</span></pre></td></tr>
<tr> <td class="numLine"> 157</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 158</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> ctx.update(keyBytes);</pre></td></tr>
+<tr> <td class="numLineCover"> 158</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> ctx.update(keyBytes);</pre></td></tr>
<tr> <td class="numLine"> 159</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 160</td> <td class="nbHits"> </td>
@@ -337,7 +338,7 @@
<td class="src"><pre class="src"> <span class="comment"> * (for compatibility with existing implementations).</span></pre></td></tr>
<tr> <td class="numLine"> 172</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 173</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> ctx.update(saltBytes);</pre></td></tr>
+<tr> <td class="numLineCover"> 173</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> ctx.update(saltBytes);</pre></td></tr>
<tr> <td class="numLine"> 174</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 175</td> <td class="nbHits"> </td>
@@ -350,7 +351,7 @@
<td class="src"><pre class="src"> <span class="comment"> * context.</span></pre></td></tr>
<tr> <td class="numLine"> 179</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> MessageDigest altCtx = DigestUtils.getDigest(algorithm);</pre></td></tr>
+<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> MessageDigest altCtx = DigestUtils.getDigest(algorithm);</pre></td></tr>
<tr> <td class="numLine"> 181</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 182</td> <td class="nbHits"> </td>
@@ -361,7 +362,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Add key.</span></pre></td></tr>
<tr> <td class="numLine"> 185</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 186</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> altCtx.update(keyBytes);</pre></td></tr>
+<tr> <td class="numLineCover"> 186</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> altCtx.update(keyBytes);</pre></td></tr>
<tr> <td class="numLine"> 187</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 188</td> <td class="nbHits"> </td>
@@ -372,7 +373,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Add salt.</span></pre></td></tr>
<tr> <td class="numLine"> 191</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 192</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> altCtx.update(saltBytes);</pre></td></tr>
+<tr> <td class="numLineCover"> 192</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> altCtx.update(saltBytes);</pre></td></tr>
<tr> <td class="numLine"> 193</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 194</td> <td class="nbHits"> </td>
@@ -383,7 +384,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Add key again.</span></pre></td></tr>
<tr> <td class="numLine"> 197</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 198</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> altCtx.update(keyBytes);</pre></td></tr>
+<tr> <td class="numLineCover"> 198</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> altCtx.update(keyBytes);</pre></td></tr>
<tr> <td class="numLine"> 199</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 200</td> <td class="nbHits"> </td>
@@ -394,7 +395,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Now get result of this (32 bytes) and add it to the other context.</span></pre></td></tr>
<tr> <td class="numLine"> 203</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 204</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] altResult = altCtx.digest();</pre></td></tr>
+<tr> <td class="numLineCover"> 204</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] altResult = altCtx.digest();</pre></td></tr>
<tr> <td class="numLine"> 205</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 206</td> <td class="nbHits"> </td>
@@ -413,10 +414,10 @@
<td class="src"><pre class="src"> <span class="comment"> * (Remark: the C code comment seems wrong for key length > 32!)</span></pre></td></tr>
<tr> <td class="numLine"> 213</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 214</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cnt = keyBytes.length;</pre></td></tr>
-<tr> <td class="numLineCover"> 215</td> <td class="nbHitsCovered"><a title="Line 215: Conditional coverage 100% (2/2)."> 240</a></td> <td class="src"><pre class="src"> <a title="Line 215: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (cnt > blocksize) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 216</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, blocksize);</pre></td></tr>
-<tr> <td class="numLineCover"> 217</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> cnt -= blocksize;</pre></td></tr>
+<tr> <td class="numLineCover"> 214</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cnt = keyBytes.length;</pre></td></tr>
+<tr> <td class="numLineCover"> 215</td> <td class="nbHitsCovered"><a title="Line 215: Conditional coverage 100% (2/2)."> 129</a></td> <td class="src"><pre class="src"> <a title="Line 215: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (cnt > blocksize) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 216</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, blocksize);</pre></td></tr>
+<tr> <td class="numLineCover"> 217</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> cnt -= blocksize;</pre></td></tr>
<tr> <td class="numLine"> 218</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 219</td> <td class="nbHits"> </td>
@@ -425,7 +426,7 @@
<td class="src"><pre class="src"> <span class="comment">// 10. For the remaining N bytes of the password string add the first</span></pre></td></tr>
<tr> <td class="numLine"> 221</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// N bytes of digest B to digest A</span></pre></td></tr>
-<tr> <td class="numLineCover"> 222</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, cnt);</pre></td></tr>
+<tr> <td class="numLineCover"> 222</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, cnt);</pre></td></tr>
<tr> <td class="numLine"> 223</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 224</td> <td class="nbHits"> </td>
@@ -456,15 +457,16 @@
<td class="src"><pre class="src"> <span class="comment"> * the key.</span></pre></td></tr>
<tr> <td class="numLine"> 237</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 238</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> cnt = keyBytes.length;</pre></td></tr>
-<tr> <td class="numLineCover"> 239</td> <td class="nbHitsCovered"><a title="Line 239: Conditional coverage 100% (2/2)."> 604</a></td> <td class="src"><pre class="src"> <a title="Line 239: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (cnt > 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 240</td> <td class="nbHitsCovered"><a title="Line 240: Conditional coverage 100% (2/2)."> 400</a></td> <td class="src"><pre class="src"> <a title="Line 240: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> ((cnt & 1) != 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 241</td> <td class="nbHitsCovered"> 232</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, blocksize);</pre></td></tr>
-<tr> <td class="numLineCover"> 242</td> <td class="nbHitsCovered"> 116</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 243</td> <td class="nbHitsCovered"> 168</td> <td class="src"><pre class="src"> ctx.update(keyBytes);</pre></td></tr>
+<tr> <td class="numLineCover"> 238</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> cnt = keyBytes.length;</pre></td></tr>
+<tr> <td class="numLineCover"> 239</td> <td class="nbHitsCovered"><a title="Line 239: Conditional coverage 100% (2/2)."> 402</a></td> <td class="src"><pre class="src"> <a title="Line 239: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (cnt > 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 240</td> <td class="nbHitsCovered"><a title="Line 240: Conditional coverage 100% (2/2)."> 300</a></td> <td class="src"><pre class="src"> <a title="Line 240: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> ((cnt & 1) != 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 241</td> <td class="nbHitsCovered"> 174</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, blocksize);</pre></td></tr>
+<tr> <td class="numLine"> 242</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
+<tr> <td class="numLineCover"> 243</td> <td class="nbHitsCovered"> 126</td> <td class="src"><pre class="src"> ctx.update(keyBytes);</pre></td></tr>
<tr> <td class="numLine"> 244</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 245</td> <td class="nbHitsCovered"> 400</td> <td class="src"><pre class="src"> cnt >>= 1;</pre></td></tr>
+<tr> <td class="numLineCover"> 245</td> <td class="nbHitsCovered"> 300</td> <td class="src"><pre class="src"> cnt >>= 1;</pre></td></tr>
<tr> <td class="numLine"> 246</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 247</td> <td class="nbHits"> </td>
@@ -477,7 +479,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Create intermediate result.</span></pre></td></tr>
<tr> <td class="numLine"> 251</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 252</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> altResult = ctx.digest();</pre></td></tr>
+<tr> <td class="numLineCover"> 252</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> altResult = ctx.digest();</pre></td></tr>
<tr> <td class="numLine"> 253</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 254</td> <td class="nbHits"> </td>
@@ -488,7 +490,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Start computation of P byte sequence.</span></pre></td></tr>
<tr> <td class="numLine"> 257</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 258</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> altCtx = DigestUtils.getDigest(algorithm);</pre></td></tr>
+<tr> <td class="numLineCover"> 258</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> altCtx = DigestUtils.getDigest(algorithm);</pre></td></tr>
<tr> <td class="numLine"> 259</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 260</td> <td class="nbHits"> </td>
@@ -505,8 +507,8 @@
<td class="src"><pre class="src"> <span class="comment"> * For every character in the password add the entire password.</span></pre></td></tr>
<tr> <td class="numLine"> 266</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 267</td> <td class="nbHitsCovered"><a title="Line 267: Conditional coverage 100% (2/2)."> 2368</a></td> <td class="src"><pre class="src"> <a title="Line 267: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 1; i <= keyLen; i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 268</td> <td class="nbHitsCovered"> 2232</td> <td class="src"><pre class="src"> altCtx.update(keyBytes);</pre></td></tr>
+<tr> <td class="numLineCover"> 267</td> <td class="nbHitsCovered"><a title="Line 267: Conditional coverage 100% (2/2)."> 1776</a></td> <td class="src"><pre class="src"> <a title="Line 267: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 1; i <= keyLen; i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 268</td> <td class="nbHitsCovered"> 1674</td> <td class="src"><pre class="src"> altCtx.update(keyBytes);</pre></td></tr>
<tr> <td class="numLine"> 269</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 270</td> <td class="nbHits"> </td>
@@ -519,7 +521,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Finish the digest.</span></pre></td></tr>
<tr> <td class="numLine"> 274</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 275</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] tempResult = altCtx.digest();</pre></td></tr>
+<tr> <td class="numLineCover"> 275</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] tempResult = altCtx.digest();</pre></td></tr>
<tr> <td class="numLine"> 276</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 277</td> <td class="nbHits"> </td>
@@ -542,14 +544,14 @@
<td class="src"><pre class="src"> <span class="comment"> * Create byte sequence P.</span></pre></td></tr>
<tr> <td class="numLine"> 286</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 287</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">byte</span>[] pBytes = <span class="keyword">new</span> <span class="keyword">byte</span>[keyLen];</pre></td></tr>
-<tr> <td class="numLineCover"> 288</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cp = 0;</pre></td></tr>
-<tr> <td class="numLineCover"> 289</td> <td class="nbHitsCovered"><a title="Line 289: Conditional coverage 100% (2/2)."> 240</a></td> <td class="src"><pre class="src"> <a title="Line 289: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (cp < keyLen - blocksize) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 290</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> System.arraycopy(tempResult, 0, pBytes, cp, blocksize);</pre></td></tr>
-<tr> <td class="numLineCover"> 291</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> cp += blocksize;</pre></td></tr>
+<tr> <td class="numLineCover"> 287</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">byte</span>[] pBytes = <span class="keyword">new</span> <span class="keyword">byte</span>[keyLen];</pre></td></tr>
+<tr> <td class="numLineCover"> 288</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">int</span> cp = 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 289</td> <td class="nbHitsCovered"><a title="Line 289: Conditional coverage 100% (2/2)."> 129</a></td> <td class="src"><pre class="src"> <a title="Line 289: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (cp < keyLen - blocksize) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 290</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> System.arraycopy(tempResult, 0, pBytes, cp, blocksize);</pre></td></tr>
+<tr> <td class="numLineCover"> 291</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> cp += blocksize;</pre></td></tr>
<tr> <td class="numLine"> 292</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 293</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> System.arraycopy(tempResult, 0, pBytes, cp, keyLen - cp);</pre></td></tr>
+<tr> <td class="numLineCover"> 293</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> System.arraycopy(tempResult, 0, pBytes, cp, keyLen - cp);</pre></td></tr>
<tr> <td class="numLine"> 294</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 295</td> <td class="nbHits"> </td>
@@ -560,7 +562,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Start computation of S byte sequence.</span></pre></td></tr>
<tr> <td class="numLine"> 298</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 299</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> altCtx = DigestUtils.getDigest(algorithm);</pre></td></tr>
+<tr> <td class="numLineCover"> 299</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> altCtx = DigestUtils.getDigest(algorithm);</pre></td></tr>
<tr> <td class="numLine"> 300</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 301</td> <td class="nbHits"> </td>
@@ -577,8 +579,8 @@
<td class="src"><pre class="src"> <span class="comment"> * For every character in the password add the entire password.</span></pre></td></tr>
<tr> <td class="numLine"> 307</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 308</td> <td class="nbHitsCovered"><a title="Line 308: Conditional coverage 100% (2/2)."> 22506</a></td> <td class="src"><pre class="src"> <a title="Line 308: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 1; i <= 16 + (altResult[0] & 0xff); i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 309</td> <td class="nbHitsCovered"> 22370</td> <td class="src"><pre class="src"> altCtx.update(saltBytes);</pre></td></tr>
+<tr> <td class="numLineCover"> 308</td> <td class="nbHitsCovered"><a title="Line 308: Conditional coverage 100% (2/2)."> 17022</a></td> <td class="src"><pre class="src"> <a title="Line 308: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 1; i <= 16 + (altResult[0] & 0xff); i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 309</td> <td class="nbHitsCovered"> 16920</td> <td class="src"><pre class="src"> altCtx.update(saltBytes);</pre></td></tr>
<tr> <td class="numLine"> 310</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 311</td> <td class="nbHits"> </td>
@@ -591,7 +593,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Finish the digest.</span></pre></td></tr>
<tr> <td class="numLine"> 315</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 316</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> tempResult = altCtx.digest();</pre></td></tr>
+<tr> <td class="numLineCover"> 316</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> tempResult = altCtx.digest();</pre></td></tr>
<tr> <td class="numLine"> 317</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 318</td> <td class="nbHits"> </td>
@@ -616,14 +618,14 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 328</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Remark: The salt is limited to 16 chars, how does this make sense?</span></pre></td></tr>
-<tr> <td class="numLineCover"> 329</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">byte</span>[] sBytes = <span class="keyword">new</span> <span class="keyword">byte</span>[saltLen];</pre></td></tr>
-<tr> <td class="numLineCover"> 330</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> cp = 0;</pre></td></tr>
-<tr> <td class="numLineCover"> 331</td> <td class="nbHitsCovered"><a title="Line 331: Conditional coverage 100% (2/2)."> 204</a></td> <td class="src"><pre class="src"> <a title="Line 331: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (cp < saltLen - blocksize) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 329</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">byte</span>[] sBytes = <span class="keyword">new</span> <span class="keyword">byte</span>[saltLen];</pre></td></tr>
+<tr> <td class="numLineCover"> 330</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> cp = 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 331</td> <td class="nbHitsUncovered"><a title="Line 331: Conditional coverage 50% (1/2)."> 102</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 331: Conditional coverage 50% (1/2)."> <span class="keyword">while</span> (cp < saltLen - blocksize) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 332</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> System.arraycopy(tempResult, 0, sBytes, cp, blocksize);</span></pre></td></tr>
<tr> <td class="numLineCover"> 333</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cp += blocksize;</span></pre></td></tr>
<tr> <td class="numLine"> 334</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 335</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> System.arraycopy(tempResult, 0, sBytes, cp, saltLen - cp);</pre></td></tr>
+<tr> <td class="numLineCover"> 335</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> System.arraycopy(tempResult, 0, sBytes, cp, saltLen - cp);</pre></td></tr>
<tr> <td class="numLine"> 336</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 337</td> <td class="nbHits"> </td>
@@ -648,7 +650,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Repeatedly run the collected hash value through sha512 to burn CPU cycles.</span></pre></td></tr>
<tr> <td class="numLine"> 347</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 348</td> <td class="nbHitsCovered"><a title="Line 348: Conditional coverage 100% (2/2)."> 656136</a></td> <td class="src"><pre class="src"> <a title="Line 348: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i <= rounds - 1; i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 348</td> <td class="nbHitsCovered"><a title="Line 348: Conditional coverage 100% (2/2)."> 492102</a></td> <td class="src"><pre class="src"> <a title="Line 348: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i <= rounds - 1; i++) {</a></pre></td></tr>
<tr> <td class="numLine"> 349</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// a) start digest C</span></pre></td></tr>
<tr> <td class="numLine"> 350</td> <td class="nbHits"> </td>
@@ -657,7 +659,7 @@
<td class="src"><pre class="src"> <span class="comment"> * New context.</span></pre></td></tr>
<tr> <td class="numLine"> 352</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"> 656000</td> <td class="src"><pre class="src"> ctx = DigestUtils.getDigest(algorithm);</pre></td></tr>
+<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"> 492000</td> <td class="src"><pre class="src"> ctx = DigestUtils.getDigest(algorithm);</pre></td></tr>
<tr> <td class="numLine"> 354</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 355</td> <td class="nbHits"> </td>
@@ -670,10 +672,11 @@
<td class="src"><pre class="src"> <span class="comment"> * Add key or last result.</span></pre></td></tr>
<tr> <td class="numLine"> 359</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 360</td> <td class="nbHitsCovered"><a title="Line 360: Conditional coverage 100% (2/2)."> 656000</a></td> <td class="src"><pre class="src"> <a title="Line 360: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> ((i & 1) != 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 361</td> <td class="nbHitsCovered"> 327992</td> <td class="src"><pre class="src"> ctx.update(pBytes, 0, keyLen);</pre></td></tr>
-<tr> <td class="numLineCover"> 362</td> <td class="nbHitsCovered"> 163996</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 363</td> <td class="nbHitsCovered"> 328008</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, blocksize);</pre></td></tr>
+<tr> <td class="numLineCover"> 360</td> <td class="nbHitsCovered"><a title="Line 360: Conditional coverage 100% (2/2)."> 492000</a></td> <td class="src"><pre class="src"> <a title="Line 360: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> ((i & 1) != 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 361</td> <td class="nbHitsCovered"> 245994</td> <td class="src"><pre class="src"> ctx.update(pBytes, 0, keyLen);</pre></td></tr>
+<tr> <td class="numLine"> 362</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
+<tr> <td class="numLineCover"> 363</td> <td class="nbHitsCovered"> 246006</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, blocksize);</pre></td></tr>
<tr> <td class="numLine"> 364</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 365</td> <td class="nbHits"> </td>
@@ -686,8 +689,8 @@
<td class="src"><pre class="src"> <span class="comment"> * Add salt for numbers not divisible by 3.</span></pre></td></tr>
<tr> <td class="numLine"> 369</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 370</td> <td class="nbHitsCovered"><a title="Line 370: Conditional coverage 100% (2/2)."> 656000</a></td> <td class="src"><pre class="src"> <a title="Line 370: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i % 3 != 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 371</td> <td class="nbHitsCovered"> 437288</td> <td class="src"><pre class="src"> ctx.update(sBytes, 0, saltLen);</pre></td></tr>
+<tr> <td class="numLineCover"> 370</td> <td class="nbHitsCovered"><a title="Line 370: Conditional coverage 100% (2/2)."> 492000</a></td> <td class="src"><pre class="src"> <a title="Line 370: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i % 3 != 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 371</td> <td class="nbHitsCovered"> 327966</td> <td class="src"><pre class="src"> ctx.update(sBytes, 0, saltLen);</pre></td></tr>
<tr> <td class="numLine"> 372</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 373</td> <td class="nbHits"> </td>
@@ -700,8 +703,8 @@
<td class="src"><pre class="src"> <span class="comment"> * Add key for numbers not divisible by 7.</span></pre></td></tr>
<tr> <td class="numLine"> 377</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 378</td> <td class="nbHitsCovered"><a title="Line 378: Conditional coverage 100% (2/2)."> 656000</a></td> <td class="src"><pre class="src"> <a title="Line 378: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i % 7 != 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 379</td> <td class="nbHitsCovered"> 562200</td> <td class="src"><pre class="src"> ctx.update(pBytes, 0, keyLen);</pre></td></tr>
+<tr> <td class="numLineCover"> 378</td> <td class="nbHitsCovered"><a title="Line 378: Conditional coverage 100% (2/2)."> 492000</a></td> <td class="src"><pre class="src"> <a title="Line 378: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i % 7 != 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 379</td> <td class="nbHitsCovered"> 421650</td> <td class="src"><pre class="src"> ctx.update(pBytes, 0, keyLen);</pre></td></tr>
<tr> <td class="numLine"> 380</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 381</td> <td class="nbHits"> </td>
@@ -716,10 +719,11 @@
<td class="src"><pre class="src"> <span class="comment"> * Add key or last result.</span></pre></td></tr>
<tr> <td class="numLine"> 386</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 387</td> <td class="nbHitsCovered"><a title="Line 387: Conditional coverage 100% (2/2)."> 656000</a></td> <td class="src"><pre class="src"> <a title="Line 387: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> ((i & 1) != 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"> 327992</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, blocksize);</pre></td></tr>
-<tr> <td class="numLineCover"> 389</td> <td class="nbHitsCovered"> 163996</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 390</td> <td class="nbHitsCovered"> 328008</td> <td class="src"><pre class="src"> ctx.update(pBytes, 0, keyLen);</pre></td></tr>
+<tr> <td class="numLineCover"> 387</td> <td class="nbHitsCovered"><a title="Line 387: Conditional coverage 100% (2/2)."> 492000</a></td> <td class="src"><pre class="src"> <a title="Line 387: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> ((i & 1) != 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"> 245994</td> <td class="src"><pre class="src"> ctx.update(altResult, 0, blocksize);</pre></td></tr>
+<tr> <td class="numLine"> 389</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
+<tr> <td class="numLineCover"> 390</td> <td class="nbHitsCovered"> 246006</td> <td class="src"><pre class="src"> ctx.update(pBytes, 0, keyLen);</pre></td></tr>
<tr> <td class="numLine"> 391</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 392</td> <td class="nbHits"> </td>
@@ -732,7 +736,7 @@
<td class="src"><pre class="src"> <span class="comment"> * Create intermediate result.</span></pre></td></tr>
<tr> <td class="numLine"> 396</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 397</td> <td class="nbHitsCovered"> 656000</td> <td class="src"><pre class="src"> altResult = ctx.digest();</pre></td></tr>
+<tr> <td class="numLineCover"> 397</td> <td class="nbHitsCovered"> 492000</td> <td class="src"><pre class="src"> altResult = ctx.digest();</pre></td></tr>
<tr> <td class="numLine"> 398</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 399</td> <td class="nbHits"> </td>
@@ -767,15 +771,15 @@
<td class="src"><pre class="src"> <span class="comment"> * Now we can construct the result string. It consists of three parts.</span></pre></td></tr>
<tr> <td class="numLine"> 414</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 415</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">final</span> StringBuilder buffer = <span class="keyword">new</span> StringBuilder(saltPrefix);</pre></td></tr>
-<tr> <td class="numLineCover"> 416</td> <td class="nbHitsCovered"><a title="Line 416: Conditional coverage 100% (2/2)."> 136</a></td> <td class="src"><pre class="src"> <a title="Line 416: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (roundsCustom) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 417</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> buffer.append(ROUNDS_PREFIX);</pre></td></tr>
-<tr> <td class="numLineCover"> 418</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> buffer.append(rounds);</pre></td></tr>
-<tr> <td class="numLineCover"> 419</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> buffer.append(<span class="string">"$"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 415</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">final</span> StringBuilder buffer = <span class="keyword">new</span> StringBuilder(saltPrefix);</pre></td></tr>
+<tr> <td class="numLineCover"> 416</td> <td class="nbHitsCovered"><a title="Line 416: Conditional coverage 100% (2/2)."> 102</a></td> <td class="src"><pre class="src"> <a title="Line 416: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (roundsCustom) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 417</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> buffer.append(ROUNDS_PREFIX);</pre></td></tr>
+<tr> <td class="numLineCover"> 418</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> buffer.append(rounds);</pre></td></tr>
+<tr> <td class="numLineCover"> 419</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> buffer.append(<span class="string">"$"</span>);</pre></td></tr>
<tr> <td class="numLine"> 420</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 421</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> buffer.append(saltString);</pre></td></tr>
-<tr> <td class="numLineCover"> 422</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> buffer.append(<span class="string">"$"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 421</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> buffer.append(saltString);</pre></td></tr>
+<tr> <td class="numLineCover"> 422</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> buffer.append(<span class="string">"$"</span>);</pre></td></tr>
<tr> <td class="numLine"> 423</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 424</td> <td class="nbHits"> </td>
@@ -826,41 +830,42 @@
<td class="src"><pre class="src"> <span class="comment">// int buflen = salt_prefix.length() - 1 + ROUNDS_PREFIX.length() + 9 + 1 + salt_string.length() + 1 + 86 + 1;</span></pre></td></tr>
<tr> <td class="numLine"> 447</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 448</td> <td class="nbHitsCovered"><a title="Line 448: Conditional coverage 100% (2/2)."> 136</a></td> <td class="src"><pre class="src"> <a title="Line 448: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (blocksize == 32) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 449</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[0], altResult[10], altResult[20], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 450</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[21], altResult[1], altResult[11], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 451</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[12], altResult[22], altResult[2], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 452</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[3], altResult[13], altResult[23], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 453</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[24], altResult[4], altResult[14], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 454</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[15], altResult[25], altResult[5], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 455</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[6], altResult[16], altResult[26], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 456</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[27], altResult[7], altResult[17], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 457</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[18], altResult[28], altResult[8], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 458</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[9], altResult[19], altResult[29], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 459</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> B64.b64from24bit((<span class="keyword">byte</span>) 0, altResult[31], altResult[30], 3, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 460</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 461</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[0], altResult[21], altResult[42], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 462</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[22], altResult[43], altResult[1], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 463</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[44], altResult[2], altResult[23], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 464</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[3], altResult[24], altResult[45], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 465</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[25], altResult[46], altResult[4], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 466</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[47], altResult[5], altResult[26], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 467</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[6], altResult[27], altResult[48], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 468</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[28], altResult[49], altResult[7], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 469</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[50], altResult[8], altResult[29], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 470</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[9], altResult[30], altResult[51], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 471</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[31], altResult[52], altResult[10], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 472</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[53], altResult[11], altResult[32], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 473</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[12], altResult[33], altResult[54], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 474</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[34], altResult[55], altResult[13], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 475</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[56], altResult[14], altResult[35], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 476</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[15], altResult[36], altResult[57], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 477</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[37], altResult[58], altResult[16], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 478</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[59], altResult[17], altResult[38], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 479</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[18], altResult[39], altResult[60], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 480</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[40], altResult[61], altResult[19], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 481</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[62], altResult[20], altResult[41], 4, buffer);</pre></td></tr>
-<tr> <td class="numLineCover"> 482</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> B64.b64from24bit((<span class="keyword">byte</span>) 0, (<span class="keyword">byte</span>) 0, altResult[63], 2, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 448</td> <td class="nbHitsCovered"><a title="Line 448: Conditional coverage 100% (2/2)."> 102</a></td> <td class="src"><pre class="src"> <a title="Line 448: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (blocksize == 32) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 449</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[0], altResult[10], altResult[20], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 450</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[21], altResult[1], altResult[11], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 451</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[12], altResult[22], altResult[2], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 452</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[3], altResult[13], altResult[23], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 453</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[24], altResult[4], altResult[14], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 454</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[15], altResult[25], altResult[5], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 455</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[6], altResult[16], altResult[26], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 456</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[27], altResult[7], altResult[17], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 457</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[18], altResult[28], altResult[8], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 458</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[9], altResult[19], altResult[29], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 459</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> B64.b64from24bit((<span class="keyword">byte</span>) 0, altResult[31], altResult[30], 3, buffer);</pre></td></tr>
+<tr> <td class="numLine"> 460</td> <td class="nbHits"> </td>
+ <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
+<tr> <td class="numLineCover"> 461</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[0], altResult[21], altResult[42], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 462</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[22], altResult[43], altResult[1], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 463</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[44], altResult[2], altResult[23], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 464</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[3], altResult[24], altResult[45], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 465</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[25], altResult[46], altResult[4], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 466</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[47], altResult[5], altResult[26], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 467</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[6], altResult[27], altResult[48], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 468</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[28], altResult[49], altResult[7], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 469</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[50], altResult[8], altResult[29], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 470</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[9], altResult[30], altResult[51], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 471</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[31], altResult[52], altResult[10], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 472</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[53], altResult[11], altResult[32], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 473</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[12], altResult[33], altResult[54], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 474</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[34], altResult[55], altResult[13], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 475</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[56], altResult[14], altResult[35], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 476</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[15], altResult[36], altResult[57], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 477</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[37], altResult[58], altResult[16], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 478</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[59], altResult[17], altResult[38], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 479</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[18], altResult[39], altResult[60], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 480</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[40], altResult[61], altResult[19], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 481</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit(altResult[62], altResult[20], altResult[41], 4, buffer);</pre></td></tr>
+<tr> <td class="numLineCover"> 482</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> B64.b64from24bit((<span class="keyword">byte</span>) 0, (<span class="keyword">byte</span>) 0, altResult[63], 2, buffer);</pre></td></tr>
<tr> <td class="numLine"> 483</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 484</td> <td class="nbHits"> </td>
@@ -875,16 +880,16 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 489</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Is there a better way to do this with the JVM?</span></pre></td></tr>
-<tr> <td class="numLineCover"> 490</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> Arrays.fill(tempResult, (<span class="keyword">byte</span>) 0);</pre></td></tr>
-<tr> <td class="numLineCover"> 491</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> Arrays.fill(pBytes, (<span class="keyword">byte</span>) 0);</pre></td></tr>
-<tr> <td class="numLineCover"> 492</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> Arrays.fill(sBytes, (<span class="keyword">byte</span>) 0);</pre></td></tr>
-<tr> <td class="numLineCover"> 493</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> ctx.reset();</pre></td></tr>
-<tr> <td class="numLineCover"> 494</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> altCtx.reset();</pre></td></tr>
-<tr> <td class="numLineCover"> 495</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> Arrays.fill(keyBytes, (<span class="keyword">byte</span>) 0);</pre></td></tr>
-<tr> <td class="numLineCover"> 496</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> Arrays.fill(saltBytes, (<span class="keyword">byte</span>) 0);</pre></td></tr>
+<tr> <td class="numLineCover"> 490</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> Arrays.fill(tempResult, (<span class="keyword">byte</span>) 0);</pre></td></tr>
+<tr> <td class="numLineCover"> 491</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> Arrays.fill(pBytes, (<span class="keyword">byte</span>) 0);</pre></td></tr>
+<tr> <td class="numLineCover"> 492</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> Arrays.fill(sBytes, (<span class="keyword">byte</span>) 0);</pre></td></tr>
+<tr> <td class="numLineCover"> 493</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> ctx.reset();</pre></td></tr>
+<tr> <td class="numLineCover"> 494</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> altCtx.reset();</pre></td></tr>
+<tr> <td class="numLineCover"> 495</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> Arrays.fill(keyBytes, (<span class="keyword">byte</span>) 0);</pre></td></tr>
+<tr> <td class="numLineCover"> 496</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> Arrays.fill(saltBytes, (<span class="keyword">byte</span>) 0);</pre></td></tr>
<tr> <td class="numLine"> 497</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 498</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">return</span> buffer.toString();</pre></td></tr>
+<tr> <td class="numLineCover"> 498</td> <td class="nbHitsCovered"> 102</td> <td class="src"><pre class="src"> <span class="keyword">return</span> buffer.toString();</pre></td></tr>
<tr> <td class="numLine"> 499</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 500</td> <td class="nbHits"> </td>
@@ -907,7 +912,7 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 509</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String sha512Crypt(<span class="keyword">final</span> <span class="keyword">byte</span>[] keyBytes) {</pre></td></tr>
-<tr> <td class="numLineCover"> 510</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">return</span> sha512Crypt(keyBytes, <span class="keyword">null</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 510</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> <span class="keyword">return</span> sha512Crypt(keyBytes, <span class="keyword">null</span>);</pre></td></tr>
<tr> <td class="numLine"> 511</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 512</td> <td class="nbHits"> </td>
@@ -934,17 +939,17 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 523</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String sha512Crypt(<span class="keyword">final</span> <span class="keyword">byte</span>[] keyBytes, String salt) {</pre></td></tr>
-<tr> <td class="numLineCover"> 524</td> <td class="nbHitsCovered"><a title="Line 524: Conditional coverage 100% (2/2)."> 76</a></td> <td class="src"><pre class="src"> <a title="Line 524: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (salt == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 525</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> salt = SHA512_PREFIX + B64.getRandomSalt(8);</pre></td></tr>
+<tr> <td class="numLineCover"> 524</td> <td class="nbHitsCovered"><a title="Line 524: Conditional coverage 100% (2/2)."> 57</a></td> <td class="src"><pre class="src"> <a title="Line 524: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (salt == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 525</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> salt = SHA512_PREFIX + B64.getRandomSalt(8);</pre></td></tr>
<tr> <td class="numLine"> 526</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 527</td> <td class="nbHitsCovered"> 76</td> <td class="src"><pre class="src"> <span class="keyword">return</span> sha2Crypt(keyBytes, salt, SHA512_PREFIX, SHA512_BLOCKSIZE, MessageDigestAlgorithms.SHA_512);</pre></td></tr>
+<tr> <td class="numLineCover"> 527</td> <td class="nbHitsCovered"> 57</td> <td class="src"><pre class="src"> <span class="keyword">return</span> sha2Crypt(keyBytes, salt, SHA512_PREFIX, SHA512_BLOCKSIZE, MessageDigestAlgorithms.SHA_512);</pre></td></tr>
<tr> <td class="numLine"> 528</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 529</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
</table>
-<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 3/30/13 2:39 AM.</div>
+<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 4/6/13 12:38 PM.</div>
</body>
</html>
\ No newline at end of file