WfOe?      !"#$%&'()*+,-./0123456789:;<=>portable (needs FFI) provisionalfelipe.lessa@gmail.comNone1Throws exception if the function does not return  successfully. Pass to InitExt to get sequential processing. & ?@ABCD        ?@ABCDportable (needs FFI) provisionalfelipe.lessa@gmail.comNone# 0Skein-1024-1024 hash. You probably want to use E to  obtain a 1024-bit (128-byte) F. This is the 9 ultra-conservative variant. Even if some future attack  managed to break Skein-512, it's quite likely that Skein-1024  would remain secure. !.Context of the Skein-1024-1024 hash function. "/Skein-1024-512 hash. You probably want to use E to  obtain a 512-bit (64-byte) F. May be used as a " drop-in replacement for SHA-512. #-Context of the Skein-1024-512 hash function. $/Skein-1024-384 hash. You probably want to use E to  obtain a 384-bit (48-byte) F. May be used as a " drop-in replacement for SHA-384. %-Context of the Skein-1024-384 hash function. &.Skein-512-512 hash. You probably want to use E to  obtain a 512-bit (64-byte) F. It's the main Skein : hash function. May be used as a drop-in replacement for  SHA-512 as well. ',Context of the Skein-512-512 hash function. (.Skein-512-384 hash. You probably want to use E to  obtain a 384-bit (48-byte) F. May be used as a " drop-in replacement for SHA-384. ),Context of the Skein-512-384 hash function. *.Skein-512-256 hash. You probably want to use E to  obtain a 256-bit (32-byte) F. +,Context of the Skein-512-256 hash function. ,.Skein-512-224 hash. You probably want to use E to  obtain a 224-bit (28-byte) F5. May be used as a drop-in replacement for SHA-224. -,Context of the Skein-512-224 hash function. ..Skein-512-160 hash. You probably want to use E to  obtain a 160-bit (20-byte) F. May be used as a  drop-in replacement for SHA-1. /,Context of the Skein-512-160 hash function. 0.Skein-512-128 hash. You probably want to use E to  obtain a 128-bit (16-byte) F. May be used as a  drop-in replacement for MD5. 1,Context of the Skein-512-128 hash function. 2.Skein-256-256 hash. You probably want to use E to  obtain a 256-bit (32-byte) F . Usually it' s better  to use * (256 bits of output) or &  (512 bits of output). 3,Context of the Skein-256-256 hash function. 4.Skein-256-224 hash. You probably want to use E to  obtain a 224-bit (28-byte) F. May be used as a " drop-in replacement for SHA-224. 5,Context of the Skein-256-224 hash function. 6.Skein-256-160 hash. You probably want to use E to  obtain a 160-bit (20-byte) F. May be used as a  drop-in replacement for SHA-1. 7,Context of the Skein-256-160 hash function. 8.Skein-256-128 hash. You probably want to use E to  obtain a 128-bit (16-byte) F. May be used as a  drop-in replacement for MD5. 9,Context of the Skein-256-128 hash function. :<Class of Skein contexts that may be used for Skein-MAC (all = of them). Included here mostly for documentation purposes, 9 since adding new instances is not safe (functions using  :3 unsurprisingly assume that they are using Skein). ;Construct a context skeinCtx given a <. This $ context may be used with the usual G interface to - obtain a message authentication code (MAC). For a simpler interface, see = and >. <,Secret key used to calculate the Skein-MAC. The <" 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 = with *, it is > recommended to have a key with at least 64 bytes (512 bits),  which is the state size of * (the first of the  two numbers). ="Calculate the Skein-MAC of a lazy H given a  <#. You probably also want to apply E to get a  F out of the digest. 5This function may be partially applied for increased ) performance. Using a partially applied skeinMAC is as fast ? as using Skein as a cryptographic hash function. So, instead  of   " let mac1 = skeinMAC key message1 " mac2 = skeinMAC key message2 " mac3 = skeinMAC key message3  ... write the following code:    let calcMAC = skeinMAC key  mac1 = calcMAC message1  mac2 = calcMAC message2  mac3 = calcMAC message3  ... 3This way the key will be processed only once (with  ;). >Same as =, however using a strict F.  Should be faster for small Fs. IHelper function to create J. KHelper function to create K. LHelper function to create M. NHelper function to create ;. q O!PQ"R#ST$U%VW&X'YZ([)\]*^+_`,a-bc.d/ef0g1hi2j3kl4m5no6p7qr8s9tu:;<=>IKLNvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>&' !23<=>:;89674501./,-*+()$%"#I O!PQ"R#ST$U%VW&X'YZ([)\]*^+_`,a-bc.d/ef0g1hi2j3kl4m5no6p7qr8s9tu:;<=>IKLNvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPKQMRNOSTUNOVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ skein-1.0.8Crypto.Skein.Internal Crypto.Skein Skein1024CtxS1024Ctx unS1024Ctx Skein512CtxS512Ctx unS512Ctx Skein256CtxS256Ctx unS256Ctxskein1024Outputskein512Outputskein256Outputskein1024FinalPadskein512FinalPadskein256FinalPadskein1024InitExtskein512InitExtskein256InitExtskein1024Final skein512Final skein256Finalskein1024Updateskein512Updateskein256Update skein1024Init skein512Init skein256Init sKEIN_SUCCESS sKEIN_FAILsKEIN_BAD_HASHLENchecksKEIN_SEQUENTIALSkein_1024_1024Skein_1024_1024_CtxSkein_1024_512Skein_1024_512_CtxSkein_1024_384Skein_1024_384_Ctx Skein_512_512Skein_512_512_Ctx Skein_512_384Skein_512_384_Ctx Skein_512_256Skein_512_256_Ctx Skein_512_224Skein_512_224_Ctx Skein_512_160Skein_512_160_Ctx Skein_512_128Skein_512_128_Ctx Skein_256_256Skein_256_256_Ctx Skein_256_224Skein_256_224_Ctx Skein_256_160Skein_256_160_Ctx Skein_256_128Skein_256_128_CtxSkeinMAC skeinMACCtxKeyskeinMAC skeinMAC' size256Ctx size512Ctx size1024Ctx$fStorableSkein1024Ctx$fStorableSkein512Ctx$fStorableSkein256Ctxcereal-0.4.0.0Data.Serializeencodebytestring-0.10.0.2Data.ByteString.Internal ByteStringcrypto-api-0.12.2.2Crypto.ClassesHashData.ByteString.Lazy.InternalinitialCtxSkein initialCtxupdateCtxSkein finalizeSkeinfinalizeskeinMACCtxSkein S_1024_1024S_1024_1024_CtxunS_1024_1024_Ctx S_1024_512S_1024_512_CtxunS_1024_512_Ctx S_1024_384S_1024_384_CtxunS_1024_384_Ctx S_512_512 S_512_512_CtxunS_512_512_Ctx S_512_384 S_512_384_CtxunS_512_384_Ctx S_512_256 S_512_256_CtxunS_512_256_Ctx S_512_224 S_512_224_CtxunS_512_224_Ctx S_512_160 S_512_160_CtxunS_512_160_Ctx S_512_128 S_512_128_CtxunS_512_128_Ctx S_256_256 S_256_256_CtxunS_256_256_Ctx S_256_224 S_256_224_CtxunS_256_224_Ctx S_256_160 S_256_160_CtxunS_256_160_Ctx S_256_128 S_256_128_CtxunS_256_128_Ctx$fSkeinMACSkein_1024_1024_Ctx($fHashSkein_1024_1024_CtxSkein_1024_1024$fSerializeSkein_1024_1024$fSkeinMACSkein_1024_512_Ctx&$fHashSkein_1024_512_CtxSkein_1024_512$fSerializeSkein_1024_512$fSkeinMACSkein_1024_384_Ctx&$fHashSkein_1024_384_CtxSkein_1024_384$fSerializeSkein_1024_384$fSkeinMACSkein_512_512_Ctx$$fHashSkein_512_512_CtxSkein_512_512$fSerializeSkein_512_512$fSkeinMACSkein_512_384_Ctx$$fHashSkein_512_384_CtxSkein_512_384$fSerializeSkein_512_384$fSkeinMACSkein_512_256_Ctx$$fHashSkein_512_256_CtxSkein_512_256$fSerializeSkein_512_256$fSkeinMACSkein_512_224_Ctx$$fHashSkein_512_224_CtxSkein_512_224$fSerializeSkein_512_224$fSkeinMACSkein_512_160_Ctx$$fHashSkein_512_160_CtxSkein_512_160$fSerializeSkein_512_160$fSkeinMACSkein_512_128_Ctx$$fHashSkein_512_128_CtxSkein_512_128$fSerializeSkein_512_128$fSkeinMACSkein_256_256_Ctx$$fHashSkein_256_256_CtxSkein_256_256$fSerializeSkein_256_256$fSkeinMACSkein_256_224_Ctx$$fHashSkein_256_224_CtxSkein_256_224$fSerializeSkein_256_224$fSkeinMACSkein_256_160_Ctx$$fHashSkein_256_160_CtxSkein_256_160$fSerializeSkein_256_160$fSkeinMACSkein_256_128_Ctx$$fHashSkein_256_128_CtxSkein_256_128$fSerializeSkein_256_128