This file is indexed.

/usr/share/doc/libghc-skein-doc/html/Crypto-Skein.html is in libghc-skein-doc 0.1.0.5-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
<!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"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Crypto.Skein</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Crypto-Skein.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Crypto-Skein.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">skein-0.1.0.5: Skein, a family of cryptographic hash functions.  Includes Skein-MAC as well.</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>portable (needs FFI)</td></tr><tr><th>Stability</th><td>provisional</td></tr><tr><th>Maintainer</th><td>felipe.lessa@gmail.com</td></tr><tr><th>Safe Haskell</th><td>Safe-Infered</td></tr></table><p class="caption">Crypto.Skein</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Using this module
</a><ul><li><a href="#g:2">Skein as a cryptographic hash function
</a></li><li><a href="#g:3">Skein as a message authentication code (MAC)
</a></li></ul></li><li><a href="#g:4">About Skein
</a></li><li><a href="#g:5">Main cryptographic hash functions
</a><ul><li><a href="#g:6">Skein-512-512
</a></li><li><a href="#g:7">Skein-1024-1024
</a></li><li><a href="#g:8">Skein-256-256
</a></li></ul></li><li><a href="#g:9">Skein-MAC
</a></li><li><a href="#g:10">Other variants of cryptographic hash functions
</a><ul><li><a href="#g:11">Skein-256-128
</a></li><li><a href="#g:12">Skein-256-160
</a></li><li><a href="#g:13">Skein-256-224
</a></li></ul></li><li><a href="#g:14">Skein-512
</a><ul><li><a href="#g:15">Skein-512-128
</a></li><li><a href="#g:16">Skein-512-160
</a></li><li><a href="#g:17">Skein-512-224
</a></li><li><a href="#g:18">Skein-512-256
</a></li><li><a href="#g:19">Skein-512-384
</a></li></ul></li><li><a href="#g:20">Skein-1024
</a><ul><li><a href="#g:21">Skein-1024-384
</a></li><li><a href="#g:22">Skein-1024-512
</a></li></ul></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>High-level interface for the Skein family of hash functions.
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_512">Skein_512_512</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_512_Ctx">Skein_512_512_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_1024_1024">Skein_1024_1024</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_1024_1024_Ctx">Skein_1024_1024_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_256_256">Skein_256_256</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_256_256_Ctx">Skein_256_256_Ctx</a> </li><li class="src short"><span class="keyword">type</span> <a href="#t:Key">Key</a> = <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:skeinMAC">skeinMAC</a> :: (<a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> skeinCtx, <a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> skeinCtx digest) =&gt; <a href="Crypto-Skein.html#t:Key">Key</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a> -&gt; digest</li><li class="src short"><a href="#v:skeinMAC-39-">skeinMAC'</a> :: (<a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> skeinCtx, <a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> skeinCtx digest) =&gt; <a href="Crypto-Skein.html#t:Key">Key</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; digest</li><li class="src short"><span class="keyword">class</span>  <a href="#t:SkeinMAC">SkeinMAC</a> skeinCtx  <span class="keyword">where</span><ul class="subs"><li><a href="#v:skeinMACCtx">skeinMACCtx</a> :: <a href="Crypto-Skein.html#t:Key">Key</a> -&gt; skeinCtx</li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_256_128">Skein_256_128</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_256_128_Ctx">Skein_256_128_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_256_160">Skein_256_160</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_256_160_Ctx">Skein_256_160_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_256_224">Skein_256_224</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_256_224_Ctx">Skein_256_224_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_128">Skein_512_128</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_128_Ctx">Skein_512_128_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_160">Skein_512_160</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_160_Ctx">Skein_512_160_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_224">Skein_512_224</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_224_Ctx">Skein_512_224_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_256">Skein_512_256</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_256_Ctx">Skein_512_256_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_384">Skein_512_384</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_512_384_Ctx">Skein_512_384_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_1024_384">Skein_1024_384</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_1024_384_Ctx">Skein_1024_384_Ctx</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_1024_512">Skein_1024_512</a> </li><li class="src short"><span class="keyword">data</span>  <a href="#t:Skein_1024_512_Ctx">Skein_1024_512_Ctx</a> </li></ul></div><div id="interface"><h1 id="g:1">Using this module
</h1><div class="doc"><p>Currently this module provides both Skein as a cryptographic
 hash function and Skein as a MAC.  This module currently does
 not provide some Skein functions, such as tree hashing,
 pseudo-random number generation, stream ciphing or key
 derivation.
</p><p>Terminology note: we say &quot;message&quot; for your variable-sized
 data that is given to Skein.
</p></div><h2 id="g:2">Skein as a cryptographic hash function
</h2><div class="doc"><p>There are many variants of Skein as a cryptographic hash
 function.  They are called <code>Skein_X_Y</code>, where <code>X</code> is internal
 state size in bits and <code>Y</code> is the output size in bits.  The
 main ones are <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>, <code><a href="Crypto-Skein.html#t:Skein_1024_1024">Skein_1024_1024</a></code> and
 <code><a href="Crypto-Skein.html#t:Skein_256_256">Skein_256_256</a></code>.  If you are unsure, then use <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>.
</p><p>To use these data types, you have to use <code><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a></code> and
 <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a></code>.  Suppose you wanted to hash a lazy <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a></code>
 <code>bs</code>.  Then you could use
</p><pre>
   digest :: <code><a href="S.html#t:ByteString">ByteString</a></code>
   digest = let h = <code><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#v:hash">hash</a></code> bs :: <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>
            in <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> h
</pre><p>where <code><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#v:hash">hash</a></code> is from <a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html">Crypto.Classes</a> (<code>crypto-api</code> package),
 <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> is from <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a></code> (<code>cereal</code> package) and <code>digest</code>
 is a strict <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code> with the hash.  Given that we've
 used <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code> which has an output size of 512 bits,
 <code>digest</code> will have <code>512 / 8 = 64</code> bytes of length.
</p></div><h2 id="g:3">Skein as a message authentication code (MAC)
</h2><div class="doc"><p>If you need a message authentication code (MAC), you may use
 HMAC with Skein (e.g. HMAC-Skein-512-512).  Using HMAC with
 Skein is supported and secure.  However, Skein also supports
 another secure method, called Skein-MAC.
</p><p>Skein-MAC is as secure as HMAC with Skein, however with a much
 lower overhead (especially for short messages).  HMAC requires
 two hash invocations.  Skein-MAC, on the other hand, requires
 just one hash invocation after the setup.
</p><p>To use Skein-MAC, you need <code><a href="Crypto-Skein.html#v:skeinMAC">skeinMAC</a></code> (or <code><a href="Crypto-Skein.html#v:skeinMAC-39-">skeinMAC'</a></code>) and
 <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a></code>.  You also need a <code><a href="Crypto-Skein.html#t:Key">Key</a></code> with at least as many bits
 as the state size you choose (<code>256</code>, <code>512</code> or <code>1024</code> bits).
</p><p>Suppose you want to use Skein-MAC with <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>.  To
 setup the MAC function with a <code><a href="Crypto-Skein.html#t:Key">Key</a></code> <code>key</code> (that has at least
 <code>512 / 8 = 64</code> bytes), use
</p><pre>
   let calcMAC :: <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a></code> -&gt; <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>
       calcMAC = <code><a href="Crypto-Skein.html#v:skeinMAC">skeinMAC</a></code> key
</pre><p>It is recommended to partially apply <code><a href="Crypto-Skein.html#v:skeinMAC">skeinMAC</a></code> (or
 <code><a href="Crypto-Skein.html#v:skeinMAC-39-">skeinMAC'</a></code>) to avoid recomputing the key setup.  We give an
 explicit type to <code>calcMAC</code> because we have to choose which
 Skein we want.
</p><p>Now, if you want to calculate the Skein-MAC of a lazy
 <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a></code> message <code>msg</code>, use
</p><pre>
   let msgMAC = <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> (calcMAC msg)
</pre><p>where <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> is from <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a></code> (<code>cereal</code> package) and
 <code>msgMAC</code> is a strict <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code> with the MAC.
</p><p>Now, suppose you are given a <code>msg'</code> with MAC <code>msgMAC'</code> and
 want to check the integrity and authenticity of <code>msg'</code>.  You
 may do so by calculating the MAC of <code>msg'</code> and checking
 against <code>msgMAC'</code>:
</p><pre>
   let msgMAC'' = <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> (calcMAC msg')
   in if msgMAC' == msgMAC''
      then Right &quot;Message is okay&quot;
      else Left &quot;Message has been corrupted or tampered with&quot;
</pre></div><h1 id="g:4">About Skein
</h1><div class="doc"><p>From <a href="http://www.skein-hash.info/about">http://www.skein-hash.info/about</a> at 09/2011:
</p><p>Skein is a new family of cryptographic hash functions. Its
 design combines speed, security, simplicity, and a great deal
 of flexibility in a modular package that is easy to analyze.
</p><p>Skein is fast. Skein-512 -- our primary proposal -- hashes data at
 6.1 clock cycles per byte on a 64-bit CPU. This means that on
 a 3.1 GHz x64 Core 2 Duo CPU, Skein hashes data at 500
 MBytes/second per core -- almost twice as fast as SHA-512 and
 three times faster than SHA-256. An optional hash-tree mode
 speeds up parallelizable implementations even more. Skein is
 fast for short messages, too; Skein-512 hashes short messages
 in about 1000 clock cycles.
</p><p>Skein is secure. Our current best attack on Skein-512 is on 25
 of 72 rounds, for a safety factor of 2.9. For comparison, at a
 similar stage in the standardization process, the AES
 encryption algorithm had an attack on 6 of 10 rounds, for a
 safety factor of only 1.7. Additionally, Skein has a number of
 provably secure properties, increasing confidence in the
 algorithm.
</p><p>Skein is simple. Using only three primitive operations, the
 Skein compression function can be easily understood and
 remembered. The rest of the algorithm is a straightforward
 iteration of this function.
</p><p>Skein is flexible. Skein is defined for three different
 internal state sizes -- 256 bits, 512 bits, and 1024 bits --
 and any output size. This allows Skein to be a drop-in
 replacement for the entire SHA family of hash functions. A
 completely optional and extendable argument system makes Skein
 an efficient tool to use for a very large number of functions:
 a PRNG, a stream cipher, a key derivation function,
 authentication without the overhead of HMAC, and a
 personalization capability. All these features can be
 implemented with very low overhead. Together with the
 Threefish large-block cipher at Skein core, this design
 provides a full set of symmetric cryptographic primitives
 suitable for most modern applications.
</p><p>Skein is efficient on a variety of platforms, both hardware
 and software. Skein-512 can be implemented in about 200 bytes
 of state. Small devices, such as 8-bit smart cards, can
 implement Skein-256 using about 100 bytes of memory. Larger
 devices can implement the larger versions of Skein to achieve
 faster speeds.
</p><p>Skein was designed by a team of highly experienced
 cryptographic experts from academia and industry, with
 expertise in cryptography, security analysis, software, chip
 design, and implementation of real-world cryptographic
 systems. This breadth of knowledge allowed them to create a
 balanced design that works well in all environments.
</p></div><h1 id="g:5">Main cryptographic hash functions
</h1><div class="doc"><p>These are the main Skein hash functions.  Unless you have any
 special reasons, you should use one of these.
</p><dl><dt><code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code></dt><dd> is the primary cryptographic hash function
   of this package.  It can safely be used for all current
   hashing applications, and should remain secure for the
   foreseeable future.
</dd><dt><code><a href="Crypto-Skein.html#t:Skein_1024_1024">Skein_1024_1024</a></code></dt><dd> is the ultra-conservative variant.  Even
   if some future attack managed to break <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>, it
   is quite likely that <code><a href="Crypto-Skein.html#t:Skein_1024_1024">Skein_1024_1024</a></code> would remain secure.
</dd><dt><code><a href="Crypto-Skein.html#t:Skein_256_256">Skein_256_256</a></code></dt><dd> is the low-memory variant.  It can be
   implemented using 100 bytes of RAM, but this is not the case
   with this implementation.  It is faster than <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>
   only for small message lengths, so it's preferable to use
   <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>.  If you can't afford 512 bits of output,
   you may get the speed advantage of <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code> by using
   <code><a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></code>.
</dd></dl></div><h2 id="g:6">Skein-512-512
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_512" class="def">Skein_512_512</a>  <a href="src/Crypto-Skein.html#Skein_512_512" class="link">Source</a></p><div class="doc"><p>Skein-512-512 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 512-bit (64-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  It's the main Skein
 hash function.  May be used as a drop-in replacement for
 SHA-512 as well.
</p></div><div class="subs instances"><p id="control.i:Skein_512_512" class="caption collapser" onclick="toggleSection('i:Skein_512_512')">Instances</p><div id="section.i:Skein_512_512" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_512_Ctx">Skein_512_512_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_512_Ctx" class="def">Skein_512_512_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_512_512_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-512-512 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_512_512_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_512_512_Ctx')">Instances</p><div id="section.i:Skein_512_512_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_512_Ctx">Skein_512_512_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_512_Ctx">Skein_512_512_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:7">Skein-1024-1024
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_1024_1024" class="def">Skein_1024_1024</a>  <a href="src/Crypto-Skein.html#Skein_1024_1024" class="link">Source</a></p><div class="doc"><p>Skein-1024-1024 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 1024-bit (128-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  This is the
 ultra-conservative variant.  Even if some future attack
 managed to break Skein-512, it's quite likely that Skein-1024
 would remain secure.
</p></div><div class="subs instances"><p id="control.i:Skein_1024_1024" class="caption collapser" onclick="toggleSection('i:Skein_1024_1024')">Instances</p><div id="section.i:Skein_1024_1024" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_1024_1024">Skein_1024_1024</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_1024_1024">Skein_1024_1024</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_1024_1024">Skein_1024_1024</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_1024_1024_Ctx">Skein_1024_1024_Ctx</a> <a href="Crypto-Skein.html#t:Skein_1024_1024">Skein_1024_1024</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_1024_1024_Ctx" class="def">Skein_1024_1024_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_1024_1024_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-1024-1024 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_1024_1024_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_1024_1024_Ctx')">Instances</p><div id="section.i:Skein_1024_1024_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_1024_1024_Ctx">Skein_1024_1024_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_1024_1024_Ctx">Skein_1024_1024_Ctx</a> <a href="Crypto-Skein.html#t:Skein_1024_1024">Skein_1024_1024</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:8">Skein-256-256
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_256_256" class="def">Skein_256_256</a>  <a href="src/Crypto-Skein.html#Skein_256_256" class="link">Source</a></p><div class="doc"><p>Skein-256-256 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 256-bit (32-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  Usually it's better
 to use <code><a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></code> (256 bits of output) or <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>
 (512 bits of output).
</p></div><div class="subs instances"><p id="control.i:Skein_256_256" class="caption collapser" onclick="toggleSection('i:Skein_256_256')">Instances</p><div id="section.i:Skein_256_256" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_256_256">Skein_256_256</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_256_256">Skein_256_256</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_256_256">Skein_256_256</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_256_256_Ctx">Skein_256_256_Ctx</a> <a href="Crypto-Skein.html#t:Skein_256_256">Skein_256_256</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_256_256_Ctx" class="def">Skein_256_256_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_256_256_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-256-256 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_256_256_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_256_256_Ctx')">Instances</p><div id="section.i:Skein_256_256_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_256_256_Ctx">Skein_256_256_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_256_256_Ctx">Skein_256_256_Ctx</a> <a href="Crypto-Skein.html#t:Skein_256_256">Skein_256_256</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:9">Skein-MAC
</h1><div class="doc"><p>The standard way to use a hash function for authentication is
 to use the HMAC construction.  While you may securely use
 Skein with HMAC (e.g. HMAC-Skein-512-512), Skein also supports
 another mode for MAC.  Skein-MAC is as secure as
 HMAC-Skein, however faster.  Skein-MAC is as fast as
 Skein as a hash function, with zero overhead.
</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Key" class="def">Key</a> = <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a><a href="src/Crypto-Skein.html#Key" class="link">Source</a></p><div class="doc"><p>Secret key used to calculate the Skein-MAC.
</p><p>The <code><a href="Crypto-Skein.html#t:Key">Key</a></code> may have any length.  However, it's recommended to
 have at least the same number of bits of the state size.  For
 example, when using <code><a href="Crypto-Skein.html#v:skeinMAC">skeinMAC</a></code> with <code><a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></code>, it is
 recommended to have a key with at least 64 bytes (512 bits),
 which is the state size of <code><a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></code> (the first of the
 two numbers).
</p></div></div><div class="top"><p class="src"><a name="v:skeinMAC" class="def">skeinMAC</a> :: (<a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> skeinCtx, <a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> skeinCtx digest) =&gt; <a href="Crypto-Skein.html#t:Key">Key</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a> -&gt; digest<a href="src/Crypto-Skein.html#skeinMAC" class="link">Source</a></p><div class="doc"><p>Calculate the Skein-MAC of a lazy <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString-Lazy.html#t:ByteString">ByteString</a></code> given a
 <code><a href="Crypto-Skein.html#t:Key">Key</a></code>.  You probably also want to apply <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to get a
 <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code> out of the <code>digest</code>.
</p><p>This function may be partially applied for increased
 performance.  Using a partially applied <code>skeinMAC</code> is as fast
 as using Skein as a cryptographic hash function.  So, instead
 of
</p><pre>
 let mac1 = skeinMAC key message1
     mac2 = skeinMAC key message2
     mac3 = skeinMAC key message3
     ...
</pre><p>write the following code:
</p><pre>
 let calcMAC = skeinMAC key
     mac1 = calcMAC message1
     mac2 = calcMAC message2
     mac3 = calcMAC message3
     ...
</pre><p>This way the key will be processed only once (with
 <code><a href="Crypto-Skein.html#v:skeinMACCtx">skeinMACCtx</a></code>).
</p></div></div><div class="top"><p class="src"><a name="v:skeinMAC-39-" class="def">skeinMAC'</a> :: (<a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> skeinCtx, <a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> skeinCtx digest) =&gt; <a href="Crypto-Skein.html#t:Key">Key</a> -&gt; <a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a> -&gt; digest<a href="src/Crypto-Skein.html#skeinMAC%27" class="link">Source</a></p><div class="doc"><p>Same as <code><a href="Crypto-Skein.html#v:skeinMAC">skeinMAC</a></code>, however using a strict <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.
 Should be faster for small <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code><code>s</code>.
</p></div></div><div class="top"><p class="src"><span class="keyword">class</span>  <a name="t:SkeinMAC" class="def">SkeinMAC</a> skeinCtx  <span class="keyword">where</span><a href="src/Crypto-Skein.html#SkeinMAC" class="link">Source</a></p><div class="doc"><p>Class of Skein contexts that may be used for Skein-MAC (all
 of them).  Included here mostly for documentation purposes,
 since adding new instances is not safe (functions using
 <code><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a></code> unsurprisingly assume that they are using Skein).
</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:skeinMACCtx" class="def">skeinMACCtx</a> :: <a href="Crypto-Skein.html#t:Key">Key</a> -&gt; skeinCtx<a href="src/Crypto-Skein.html#skeinMACCtx" class="link">Source</a></p><div class="doc"><p>Construct a context <code>skeinCtx</code> given a <code><a href="Crypto-Skein.html#t:Key">Key</a></code>.  This
 context may be used with the usual <code><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a></code> interface to
 obtain a message authentication code (MAC).
</p><p>For a simpler interface, see <code><a href="Crypto-Skein.html#v:skeinMAC">skeinMAC</a></code> and <code><a href="Crypto-Skein.html#v:skeinMAC-39-">skeinMAC'</a></code>.
</p></div></div><div class="subs instances"><p id="control.i:SkeinMAC" class="caption collapser" onclick="toggleSection('i:SkeinMAC')">Instances</p><div id="section.i:SkeinMAC" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_1024_1024_Ctx">Skein_1024_1024_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_1024_512_Ctx">Skein_1024_512_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_1024_384_Ctx">Skein_1024_384_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_512_Ctx">Skein_512_512_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_384_Ctx">Skein_512_384_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_256_Ctx">Skein_512_256_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_224_Ctx">Skein_512_224_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_160_Ctx">Skein_512_160_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_128_Ctx">Skein_512_128_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_256_256_Ctx">Skein_256_256_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_256_224_Ctx">Skein_256_224_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_256_160_Ctx">Skein_256_160_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_256_128_Ctx">Skein_256_128_Ctx</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:10">Other variants of cryptographic hash functions
</h1><div class="doc"><p>These hash functions produce less output bits than their state
 size.  For example, <code><a href="Crypto-Skein.html#t:Skein_512_160">Skein_512_160</a></code> produces 160 output bits
 while having 512 bits of state size.  Their main use is to be
 a drop-in replacement to legacy hash functions.  If you don't
 have any special reason for using them, use one of the main
 hash functions above (e.g. <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code>).
</p><p>You may replace:
</p><dl><dt>MD5</dt><dd> with <code><a href="Crypto-Skein.html#t:Skein_256_128">Skein_256_128</a></code> or <code><a href="Crypto-Skein.html#t:Skein_512_128">Skein_512_128</a></code>.
</dd><dt>SHA-1</dt><dd> with <code><a href="Crypto-Skein.html#t:Skein_256_160">Skein_256_160</a></code> or <code><a href="Crypto-Skein.html#t:Skein_512_160">Skein_512_160</a></code>.
</dd><dt>SHA-224</dt><dd> with <code><a href="Crypto-Skein.html#t:Skein_256_224">Skein_256_224</a></code> or <code><a href="Crypto-Skein.html#t:Skein_512_224">Skein_512_224</a></code>.
</dd><dt>SHA-256</dt><dd> with <code><a href="Crypto-Skein.html#t:Skein_256_256">Skein_256_256</a></code> or <code><a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></code>.
</dd><dt>SHA-384</dt><dd> with <code><a href="Crypto-Skein.html#t:Skein_512_384">Skein_512_384</a></code> or <code><a href="Crypto-Skein.html#t:Skein_1024_384">Skein_1024_384</a></code>.
</dd><dt>SHA-512</dt><dd> with <code><a href="Crypto-Skein.html#t:Skein_512_512">Skein_512_512</a></code> or <code><a href="Crypto-Skein.html#t:Skein_1024_512">Skein_1024_512</a></code>.
</dd></dl></div><h2 id="g:11">Skein-256-128
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_256_128" class="def">Skein_256_128</a>  <a href="src/Crypto-Skein.html#Skein_256_128" class="link">Source</a></p><div class="doc"><p>Skein-256-128 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 128-bit (16-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  May be used as a
 drop-in replacement for MD5.
</p></div><div class="subs instances"><p id="control.i:Skein_256_128" class="caption collapser" onclick="toggleSection('i:Skein_256_128')">Instances</p><div id="section.i:Skein_256_128" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_256_128">Skein_256_128</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_256_128">Skein_256_128</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_256_128">Skein_256_128</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_256_128_Ctx">Skein_256_128_Ctx</a> <a href="Crypto-Skein.html#t:Skein_256_128">Skein_256_128</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_256_128_Ctx" class="def">Skein_256_128_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_256_128_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-256-128 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_256_128_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_256_128_Ctx')">Instances</p><div id="section.i:Skein_256_128_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_256_128_Ctx">Skein_256_128_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_256_128_Ctx">Skein_256_128_Ctx</a> <a href="Crypto-Skein.html#t:Skein_256_128">Skein_256_128</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:12">Skein-256-160
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_256_160" class="def">Skein_256_160</a>  <a href="src/Crypto-Skein.html#Skein_256_160" class="link">Source</a></p><div class="doc"><p>Skein-256-160 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 160-bit (20-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  May be used as a
 drop-in replacement for SHA-1.
</p></div><div class="subs instances"><p id="control.i:Skein_256_160" class="caption collapser" onclick="toggleSection('i:Skein_256_160')">Instances</p><div id="section.i:Skein_256_160" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_256_160">Skein_256_160</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_256_160">Skein_256_160</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_256_160">Skein_256_160</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_256_160_Ctx">Skein_256_160_Ctx</a> <a href="Crypto-Skein.html#t:Skein_256_160">Skein_256_160</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_256_160_Ctx" class="def">Skein_256_160_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_256_160_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-256-160 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_256_160_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_256_160_Ctx')">Instances</p><div id="section.i:Skein_256_160_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_256_160_Ctx">Skein_256_160_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_256_160_Ctx">Skein_256_160_Ctx</a> <a href="Crypto-Skein.html#t:Skein_256_160">Skein_256_160</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:13">Skein-256-224
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_256_224" class="def">Skein_256_224</a>  <a href="src/Crypto-Skein.html#Skein_256_224" class="link">Source</a></p><div class="doc"><p>Skein-256-224 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 224-bit (28-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  May be used as a
 drop-in replacement for SHA-224.
</p></div><div class="subs instances"><p id="control.i:Skein_256_224" class="caption collapser" onclick="toggleSection('i:Skein_256_224')">Instances</p><div id="section.i:Skein_256_224" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_256_224">Skein_256_224</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_256_224">Skein_256_224</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_256_224">Skein_256_224</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_256_224_Ctx">Skein_256_224_Ctx</a> <a href="Crypto-Skein.html#t:Skein_256_224">Skein_256_224</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_256_224_Ctx" class="def">Skein_256_224_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_256_224_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-256-224 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_256_224_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_256_224_Ctx')">Instances</p><div id="section.i:Skein_256_224_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_256_224_Ctx">Skein_256_224_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_256_224_Ctx">Skein_256_224_Ctx</a> <a href="Crypto-Skein.html#t:Skein_256_224">Skein_256_224</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:14">Skein-512
</h1><h2 id="g:15">Skein-512-128
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_128" class="def">Skein_512_128</a>  <a href="src/Crypto-Skein.html#Skein_512_128" class="link">Source</a></p><div class="doc"><p>Skein-512-128 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 128-bit (16-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  May be used as a
 drop-in replacement for MD5.
</p></div><div class="subs instances"><p id="control.i:Skein_512_128" class="caption collapser" onclick="toggleSection('i:Skein_512_128')">Instances</p><div id="section.i:Skein_512_128" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_512_128">Skein_512_128</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_512_128">Skein_512_128</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_512_128">Skein_512_128</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_128_Ctx">Skein_512_128_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_128">Skein_512_128</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_128_Ctx" class="def">Skein_512_128_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_512_128_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-512-128 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_512_128_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_512_128_Ctx')">Instances</p><div id="section.i:Skein_512_128_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_128_Ctx">Skein_512_128_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_128_Ctx">Skein_512_128_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_128">Skein_512_128</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:16">Skein-512-160
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_160" class="def">Skein_512_160</a>  <a href="src/Crypto-Skein.html#Skein_512_160" class="link">Source</a></p><div class="doc"><p>Skein-512-160 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 160-bit (20-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  May be used as a
 drop-in replacement for SHA-1.
</p></div><div class="subs instances"><p id="control.i:Skein_512_160" class="caption collapser" onclick="toggleSection('i:Skein_512_160')">Instances</p><div id="section.i:Skein_512_160" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_512_160">Skein_512_160</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_512_160">Skein_512_160</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_512_160">Skein_512_160</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_160_Ctx">Skein_512_160_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_160">Skein_512_160</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_160_Ctx" class="def">Skein_512_160_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_512_160_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-512-160 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_512_160_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_512_160_Ctx')">Instances</p><div id="section.i:Skein_512_160_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_160_Ctx">Skein_512_160_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_160_Ctx">Skein_512_160_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_160">Skein_512_160</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:17">Skein-512-224
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_224" class="def">Skein_512_224</a>  <a href="src/Crypto-Skein.html#Skein_512_224" class="link">Source</a></p><div class="doc"><p>Skein-512-224 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 224-bit (28-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  May be used as a drop-in replacement for SHA-224.
</p></div><div class="subs instances"><p id="control.i:Skein_512_224" class="caption collapser" onclick="toggleSection('i:Skein_512_224')">Instances</p><div id="section.i:Skein_512_224" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_512_224">Skein_512_224</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_512_224">Skein_512_224</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_512_224">Skein_512_224</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_224_Ctx">Skein_512_224_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_224">Skein_512_224</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_224_Ctx" class="def">Skein_512_224_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_512_224_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-512-224 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_512_224_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_512_224_Ctx')">Instances</p><div id="section.i:Skein_512_224_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_224_Ctx">Skein_512_224_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_224_Ctx">Skein_512_224_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_224">Skein_512_224</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:18">Skein-512-256
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_256" class="def">Skein_512_256</a>  <a href="src/Crypto-Skein.html#Skein_512_256" class="link">Source</a></p><div class="doc"><p>Skein-512-256 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 256-bit (32-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.
</p></div><div class="subs instances"><p id="control.i:Skein_512_256" class="caption collapser" onclick="toggleSection('i:Skein_512_256')">Instances</p><div id="section.i:Skein_512_256" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_256_Ctx">Skein_512_256_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_256_Ctx" class="def">Skein_512_256_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_512_256_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-512-256 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_512_256_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_512_256_Ctx')">Instances</p><div id="section.i:Skein_512_256_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_256_Ctx">Skein_512_256_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_256_Ctx">Skein_512_256_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_256">Skein_512_256</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:19">Skein-512-384
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_384" class="def">Skein_512_384</a>  <a href="src/Crypto-Skein.html#Skein_512_384" class="link">Source</a></p><div class="doc"><p>Skein-512-384 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 384-bit (48-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  May be used as a
 drop-in replacement for SHA-384.
</p></div><div class="subs instances"><p id="control.i:Skein_512_384" class="caption collapser" onclick="toggleSection('i:Skein_512_384')">Instances</p><div id="section.i:Skein_512_384" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_512_384">Skein_512_384</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_512_384">Skein_512_384</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_512_384">Skein_512_384</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_384_Ctx">Skein_512_384_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_384">Skein_512_384</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_512_384_Ctx" class="def">Skein_512_384_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_512_384_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-512-384 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_512_384_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_512_384_Ctx')">Instances</p><div id="section.i:Skein_512_384_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_512_384_Ctx">Skein_512_384_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_512_384_Ctx">Skein_512_384_Ctx</a> <a href="Crypto-Skein.html#t:Skein_512_384">Skein_512_384</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:20">Skein-1024
</h1><h2 id="g:21">Skein-1024-384
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_1024_384" class="def">Skein_1024_384</a>  <a href="src/Crypto-Skein.html#Skein_1024_384" class="link">Source</a></p><div class="doc"><p>Skein-1024-384 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 384-bit (48-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  May be used as a
 drop-in replacement for SHA-384.
</p></div><div class="subs instances"><p id="control.i:Skein_1024_384" class="caption collapser" onclick="toggleSection('i:Skein_1024_384')">Instances</p><div id="section.i:Skein_1024_384" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_1024_384">Skein_1024_384</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_1024_384">Skein_1024_384</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_1024_384">Skein_1024_384</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_1024_384_Ctx">Skein_1024_384_Ctx</a> <a href="Crypto-Skein.html#t:Skein_1024_384">Skein_1024_384</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_1024_384_Ctx" class="def">Skein_1024_384_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_1024_384_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-1024-384 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_1024_384_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_1024_384_Ctx')">Instances</p><div id="section.i:Skein_1024_384_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_1024_384_Ctx">Skein_1024_384_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_1024_384_Ctx">Skein_1024_384_Ctx</a> <a href="Crypto-Skein.html#t:Skein_1024_384">Skein_1024_384</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h2 id="g:22">Skein-1024-512
</h2><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_1024_512" class="def">Skein_1024_512</a>  <a href="src/Crypto-Skein.html#Skein_1024_512" class="link">Source</a></p><div class="doc"><p>Skein-1024-512 hash.  You probably want to use <code><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#v:encode">encode</a></code> to
 obtain a 512-bit (64-byte) <code><a href="/usr/share/doc/ghc-doc/html/libraries/bytestring-0.9.2.1/Data-ByteString.html#t:ByteString">ByteString</a></code>.  May be used as a
 drop-in replacement for SHA-512.
</p></div><div class="subs instances"><p id="control.i:Skein_1024_512" class="caption collapser" onclick="toggleSection('i:Skein_1024_512')">Instances</p><div id="section.i:Skein_1024_512" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Crypto-Skein.html#t:Skein_1024_512">Skein_1024_512</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Crypto-Skein.html#t:Skein_1024_512">Skein_1024_512</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-cereal-doc/html/Data-Serialize.html#t:Serialize">Serialize</a> <a href="Crypto-Skein.html#t:Skein_1024_512">Skein_1024_512</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_1024_512_Ctx">Skein_1024_512_Ctx</a> <a href="Crypto-Skein.html#t:Skein_1024_512">Skein_1024_512</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Skein_1024_512_Ctx" class="def">Skein_1024_512_Ctx</a>  <a href="src/Crypto-Skein.html#Skein_1024_512_Ctx" class="link">Source</a></p><div class="doc"><p>Context of the Skein-1024-512 hash function.
</p></div><div class="subs instances"><p id="control.i:Skein_1024_512_Ctx" class="caption collapser" onclick="toggleSection('i:Skein_1024_512_Ctx')">Instances</p><div id="section.i:Skein_1024_512_Ctx" class="show"><table><tr><td class="src"><a href="Crypto-Skein.html#t:SkeinMAC">SkeinMAC</a> <a href="Crypto-Skein.html#t:Skein_1024_512_Ctx">Skein_1024_512_Ctx</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/libghc-crypto-api-doc/html/Crypto-Classes.html#t:Hash">Hash</a> <a href="Crypto-Skein.html#t:Skein_1024_512_Ctx">Skein_1024_512_Ctx</a> <a href="Crypto-Skein.html#t:Skein_1024_512">Skein_1024_512</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.10.0</p></div></body></html>