7y      !"#$%&'()*+,-./0123456789:;<=>?@A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k lmnopqrstuvwxyz{|}~unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy2compute a MAC using the supplied hashing function unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyinit a context #update a context with a bytestring ,updates a context with multiples bytestring .finalize the context into a digest bytestring 2hash a strict bytestring into a digest bytestring 0hash a lazy bytestring into a digest bytestring     unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy init a context #update a context with a bytestring ,updates a context with multiples bytestring .finalize the context into a digest bytestring 2hash a strict bytestring into a digest bytestring 0hash a lazy bytestring into a digest bytestring       unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyinit a context #update a context with a bytestring ,updates a context with multiples bytestring .finalize the context into a digest bytestring 2hash a strict bytestring into a digest bytestring 0hash a lazy bytestring into a digest bytestring   unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyinit a context #update a context with a bytestring !,updates a context with multiples bytestring ".finalize the context into a digest bytestring #2hash a strict bytestring into a digest bytestring $0hash a lazy bytestring into a digest bytestring  !"#$  !"#$  !"#$ !"#$unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy(init a context )#update a context with a bytestring *,updates a context with multiples bytestring +.finalize the context into a digest bytestring ,2hash a strict bytestring into a digest bytestring -0hash a lazy bytestring into a digest bytestring %&'()*+,- %&'()*+,- &'%()*+,-%&'()*+,-unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy1init a context 2#update a context with a bytestring 3,updates a context with multiples bytestring 4.finalize the context into a digest bytestring 52hash a strict bytestring into a digest bytestring 60hash a lazy bytestring into a digest bytestring ./0123456 ./0123456 /0.123456./0123456 unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy:5init a context using FIPS 180-4 for truncated SHA512 ;init a context <#update a context with a bytestring =,updates a context with multiples bytestring >.finalize the context into a digest bytestring ?2hash a strict bytestring into a digest bytestring @0hash a lazy bytestring into a digest bytestring 7 89   :;<=>?@ 789:;<=>?@ 897;:<=>?@7 89   :;<=>?@ unknown experimental#Vincent Hanquez <vincent@snarc.org> TrustworthyCinit a context D#update a context with a bytestring E.finalize the context into a digest bytestring F2hash a strict bytestring into a digest bytestring G0hash a lazy bytestring into a digest bytestring ABCDEFGABCDEFGABCDEFGABCDEFG unknown experimental#Vincent Hanquez <vincent@snarc.org> TrustworthyKinit a context L#update a context with a bytestring M,updates a context with multiples bytestring N.finalize the context into a digest bytestring O2hash a strict bytestring into a digest bytestring P0hash a lazy bytestring into a digest bytestring HIJ !"#$%&'(KLMNOP)* HIJKLMNOP IJHKLMNOPHIJ !"#$%&'(KLMNOP)* unknown experimental#Vincent Hanquez <vincent@snarc.org> TrustworthyTinit a context U#update a context with a bytestring V,updates a context with multiples bytestring W.finalize the context into a digest bytestring X2hash a strict bytestring into a digest bytestring Y0hash a lazy bytestring into a digest bytestring Q+RS,-./012345678TUVWXY9: QRSTUVWXY RSQTUVWXYQ+RS,-./012345678TUVWXY9: unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy]init a context ^#update a context with a bytestring _,updates a context with multiples bytestring `.finalize the context into a digest bytestring a2hash a strict bytestring into a digest bytestring b0hash a lazy bytestring into a digest bytestring Z;[\<=>?@ABCDEFGH]^_`abIJ Z[\]^_`ab [\Z]^_`abZ;[\<=>?@ABCDEFGH]^_`abIJ unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyfinit a context g#update a context with a bytestring h,updates a context with multiples bytestring i.finalize the context into a digest bytestring j2hash a strict bytestring into a digest bytestring k0hash a lazy bytestring into a digest bytestring cKdeLMNOPQRSTUVWXfghijkYZ cdefghijk decfghijkcKdeLMNOPQRSTUVWXfghijkYZunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyoinit a context p#update a context with a bytestring q,updates a context with multiples bytestring r.finalize the context into a digest bytestring s2hash a strict bytestring into a digest bytestring t0hash a lazy bytestring into a digest bytestring l[mn\]^_`abcdefghopqrstij lmnopqrst mnlopqrstl[mn\]^_`abcdefghopqrstijunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyxinit a context y#update a context with a bytestring z,updates a context with multiples bytestring {.finalize the context into a digest bytestring |2hash a strict bytestring into a digest bytestring }0hash a lazy bytestring into a digest bytestring ukvwlmnopqrstuvwxxyz{|}yz uvwxyz{|} vwuxyz{|}ukvwlmnopqrstuvwxxyz{|}yzunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyinit a context #update a context with a bytestring ,updates a context with multiples bytestring .finalize the context into a digest bytestring 2hash a strict bytestring into a digest bytestring 0hash a lazy bytestring into a digest bytestring ~{|}~ ~ ~~{|}~unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy/Represent a digest for a given hash algorithm. Return the binary digest 0Represent a context for a given hash algorithm. 'Class representing hashing algorithms. /The hash algorithm is built over 3 primitives:  init : create a new context > updates : update the context with some strict bytestrings 1 finalize : finalize the context into a digest 1Initialize a new context for this hash algorithm 5Update the context with a list of strict bytestring, , and return a new context with the updates. (Finalize a context and return a digest.  unknown experimental#Vincent Hanquez <vincent@snarc.org> TrustworthyIrun hashUpdates on one single bytestring and return the updated context. (Hash a strict bytestring into a digest. &Hash a lazy bytestring into a digest. 9Return the hexadecimal (base16) bytestring of the digest . !. !"#        $         %         &         '        ()*++,--./0123456789:;< "$%&'()*=>+?@ABCDEFGHIJKLM+NOPCQDEFGHIJKRS+TUVCQDEFGHIJKWX+YZ[BCDEFGHIJK\]+^_`BCDEFGHIJKab+cdeCQDEFGHIJKfg+hijkBCDEFGHIJKlm + n o p B C D E F G H I J K q r + s t u B C D E F G H I J K v w + x y z B C D E F G H I J K { | + } ~  B C D E F G H I J K +BCDEFGHIJK+BCDEFGHIJK+BCDEFGHIJKcryptohash-0.8.0Crypto.MAC.HMACCrypto.Hash.WhirlpoolCrypto.Hash.Skein512Crypto.Hash.Skein256Crypto.Hash.TigerCrypto.Hash.RIPEMD160Crypto.Hash.SHA3Crypto.Hash.SHA512Crypto.Hash.SHA512tCrypto.Hash.SHA384Crypto.Hash.SHA256Crypto.Hash.SHA224Crypto.Hash.SHA1Crypto.Hash.MD5Crypto.Hash.MD4Crypto.Hash.MD2Crypto.Hash.Types Crypto.HashCrypto.Hash.Utilshmac WhirlpoolCtxinitupdateupdatesfinalizehashhashlazySkein512Skein256Tiger RIPEMD160SHA3SHA512init_tSHA384SHA256SHA224SHA1MD5MD4MD2DigestdigestToByteStringContextcontextToByteString HashAlgorithmhashInit hashUpdates hashFinalize Skein512_512 Skein512_384 Skein512_256 Skein512_224 Skein256_256 Skein256_224SHA3_512SHA3_384SHA3_256SHA3_224 hashUpdatedigestToHexByteStringc_whirlpool_finalizec_whirlpool_updatec_whirlpool_init digestSizesizeCtxwithByteStringPtr memcopy64 withCtxCopy withCtxThrow withCtxNewwithCtxNewThrowupdateInternalIOfinalizeInternalIO$fSerializeWhirlpool$fHashCtxWhirlpoolc_skein512_finalizec_skein512_updatec_skein512_init peekHashlen$fSerializeSkein512$fHashCtxSkein512c_skein256_finalizec_skein256_updatec_skein256_init$fSerializeSkein256$fHashCtxSkein256c_tiger_finalizec_tiger_update c_tiger_init$fSerializeTiger$fHashCtxTigerc_ripemd160_finalizec_ripemd160_updatec_ripemd160_init$fSerializeRIPEMD160$fHashCtxRIPEMD160c_sha3_finalize c_sha3_update c_sha3_init$fSerializeSHA3 $fHashCtxSHA3c_sha512_init_tc_sha512_finalizec_sha512_update c_sha512_init$fSerializeSHA512$fHashCtxSHA512c_sha384_finalizec_sha384_update c_sha384_init$fSerializeSHA384$fHashCtxSHA384c_sha256_finalizec_sha256_update c_sha256_init$fSerializeSHA256$fHashCtxSHA256c_sha224_finalizec_sha224_update c_sha224_init$fSerializeSHA224$fHashCtxSHA224c_sha1_finalize c_sha1_update c_sha1_init$fSerializeSHA1 $fHashCtxSHA1c_md5_finalize c_md5_update c_md5_init$fSerializeMD5 $fHashCtxMD5c_md4_finalize c_md4_update c_md4_init$fSerializeMD4 $fHashCtxMD4c_md2_finalize c_md2_update c_md2_init$fSerializeMD2 $fHashCtxMD2toHex $fShowDigest$fHashAlgorithmSkein512_512$fHashAlgorithmSkein512_384$fHashAlgorithmSkein512_256$fHashAlgorithmSkein512_224$fHashAlgorithmSkein256_256$fHashAlgorithmSkein256_224$fHashAlgorithmSHA3_512$fHashAlgorithmSHA3_384$fHashAlgorithmSHA3_256$fHashAlgorithmSHA3_224$fHashAlgorithmTiger$fHashAlgorithmWhirlpool$fHashAlgorithmRIPEMD160$fHashAlgorithmSHA512$fHashAlgorithmSHA384$fHashAlgorithmSHA256$fHashAlgorithmSHA224$fHashAlgorithmSHA1$fHashAlgorithmMD5$fHashAlgorithmMD4$fHashAlgorithmMD2