!"#$%&'()*+,-./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 [ \ ] ^ _ ` abcdefghijklmnopqrstuvwxyz{|}~ Trustworthyunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy2compute a MAC using the supplied hashing function unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy2perform io for hashes that do allocation and ffi. 5 unsafeDupablePerformIO is used when possible as the 7 computation is pure and the output is directly linked ; to the input. we also do not modify anything after it has  been returned to the user. 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> 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 00hash a lazy bytestring into a digest bytestring )*+,-./0)*+,-./0)*+,-./0)*+,-./0unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy35init a context using FIPS 180-4 for truncated SHA512 4init a context 5#update a context with a bytestring 6,updates a context with multiples bytestring 7.finalize the context into a digest bytestring 82hash a strict bytestring into a digest bytestring 90hash a lazy bytestring into a digest bytestring 123456789 123456789 124356789123456789 unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy<init a context =#update a context with a 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> TrustworthyCinit a context D#update a context with a bytestring E,updates a context with multiples bytestring F.finalize the context into a digest bytestring G2hash a strict bytestring into a digest bytestring H0hash a lazy bytestring into a digest bytestring AB    CDEFGHABCDEFGHABCDEFGHAB    CDEFGH 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 IJ KLMNOPIJKLMNOPIJKLMNOPIJ KLMNOP unknown experimental#Vincent Hanquez <vincent@snarc.org> TrustworthySinit a context T#update a context with a bytestring U,updates a context with multiples bytestring V.finalize the context into a digest bytestring W2hash a strict bytestring into a digest bytestring X0hash a lazy bytestring into a digest bytestring QR !"#$%&STUVWXQRSTUVWXQRSTUVWXQR !"#$%&STUVWX 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 YZ'()*+,-./0123[\]^_`YZ[\]^_`YZ[\]^_`YZ'()*+,-./0123[\]^_`unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthycinit a context d#update a context with a bytestring e,updates a context with multiples bytestring f.finalize the context into a digest bytestring g2hash a strict bytestring into a digest bytestring h0hash a lazy bytestring into a digest bytestring ab456789:;<=>?@cdefghabcdefghabcdefghab456789:;<=>?@cdefghunknown 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 ijABCDEFGHIJKLMklmnopijklmnopijklmnopijABCDEFGHIJKLMklmnopunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthysinit a context t#update a context with a bytestring u,updates a context with multiples bytestring v.finalize the context into a digest bytestring w2hash a strict bytestring into a digest bytestring x0hash a lazy bytestring into a digest bytestring qrNOPQRSTUVWXYZstuvwxqrstuvwxqrstuvwxqrNOPQRSTUVWXYZstuvwxunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy[[[unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy y/Represent a digest for a given hash algorithm. {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. 7Try to convert a binary digest bytestring to a digest. 6return the binary bytestring. deprecated use toBytes. 6return the binary bytestring. deprecated use toBytes. yz{|}~\]^ yz{|}~ }~{|yzyz{|}~\]^unknown experimental#Vincent Hanquez <vincent@snarc.org> TrustworthyPRepresent an HMAC that is a phantom type with the hash used to produce the mac. "The Eq instance is constant time. GAlias to a single pass hash function that operate on a lazy bytestring IAlias to a single pass hash function that operate on a strict bytestring Irun 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 2compute a MAC using the supplied hashing function 5Hash function to use )Block size in bytes of the hash function  Secret key Message to MAC _`abcdefghijklmnopqrstu&y{}~&}~{y4_`abcdefghijklmnopqrstuv                                         !"#$%&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSHTIJKLMNOPUVWHTIJKLMNOPXYZGHIJKLMNOP[\]GHIJKLMNOP^_`HTIJKLMNOPabcdGHIJKLMNOP e f g G H I J K L M N O P h i j G H I J K L M N O P k l m G H I J K L M N O P n o p G H I J K L M N O PqrsGHIJKLMNOPtuvGHIJKLMNOPwxyGHIJKLMNOPz{|}~cryptohash-0.10.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.Utils.CpuCrypto.Hash.InternalCrypto.Hash.UtilshmacCtxinitupdateupdatesfinalizehashhashlazyinit_tDigestContext HashAlgorithmhashInit hashUpdates hashFinalizedigestFromByteStringcontextToByteStringdigestToByteStringHMAC Skein512_512 Skein512_384 Skein512_256 Skein512_224 Skein256_256 Skein256_224SHA3_512SHA3_384SHA3_256SHA3_224Tiger Whirlpool RIPEMD160SHA512SHA384SHA256SHA224SHA1MD5MD4MD2HashFunctionLBSHashFunctionBS hashUpdatedigestToHexByteStringuse32Hex unsafeDoIOc_whirlpool_finalizec_whirlpool_updatec_whirlpool_init digestSizesizeCtxwithByteStringPtr memcopy64 withCtxCopy withCtxThrow withCtxNewwithCtxNewThrowupdateInternalIOfinalizeInternalIOc_skein512_finalizec_skein512_updatec_skein512_init peekHashlenc_skein256_finalizec_skein256_updatec_skein256_initc_tiger_finalizec_tiger_update c_tiger_initc_ripemd160_finalizec_ripemd160_updatec_ripemd160_initc_sha3_finalize c_sha3_update c_sha3_initc_sha512_init_tc_sha512_finalizec_sha512_update c_sha512_initc_sha384_finalizec_sha384_update c_sha384_initc_sha256_finalizec_sha256_update c_sha256_initc_sha224_finalizec_sha224_update c_sha224_initc_sha1_finalize c_sha1_update c_sha1_initc_md5_finalize c_md5_update c_md5_initc_md4_finalize c_md4_update c_md4_initc_md2_finalize c_md2_update c_md2_inittoHex $fShowDigest$fByteableDigest$fByteableContext$fEqHMAC$fByteableHMAC$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