%ڻ      !"#$%&'()*+,-./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> TrustworthyWhirlpool Context 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 Skein512 Context 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> TrustworthySkein256 Context 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> TrustworthyTiger Context 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!RIPEMD160 Context #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) SHA3 Context +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> Trustworthy1SHA512 Context 35init 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 12   3456789 123456789 12435678912   3456789 unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthy:)SHA512 Context with variable size output <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> TrustworthyASHA384 Context Cinit 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> TrustworthyISHA256 Context Kinit 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&'()*+,-./012KLMNOPIJKLMNOPIJKLMNOPIJ&'()*+,-./012KLMNOP unknown experimental#Vincent Hanquez <vincent@snarc.org> TrustworthyQSHA224 Context Sinit 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 QR3456789:;<=>?STUVWXQRSTUVWXQRSTUVWXQR3456789:;<=>?STUVWX unknown experimental#Vincent Hanquez <vincent@snarc.org> TrustworthyY SHA1 Context [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@ABCDEFGHIJKL[\]^_`YZ[\]^_`YZ[\]^_`YZ@ABCDEFGHIJKL[\]^_`unknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthya MD5 Context cinit 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 abMNOPQRSTUVWXYcdefghabcdefghabcdefghabMNOPQRSTUVWXYcdefghunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyi MD4 Context kinit 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 ijZ[\]^_`abcdefklmnopijklmnopijklmnopijZ[\]^_`abcdefklmnopunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyq MD2 Context sinit 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 qrghijklmnopqrsstuvwxqrstuvwxqrstuvwxqrghijklmnopqrsstuvwxunknown experimental#Vincent Hanquez <vincent@snarc.org> Trustworthyt3Convert a bytestring to the hexadecimal equivalent ! using 0123456789abcdef as digit tttunknown 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 ~3Block size in bytes the hash algorithm operates on 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{|}~uvw yz{|}~ }~{|yzyz{|}~uvwunknown 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. /Skein512 (512 bits version) cryptographic hash /Skein512 (384 bits version) cryptographic hash /Skein512 (256 bits version) cryptographic hash /Skein512 (224 bits version) cryptographic hash /Skein256 (256 bits version) cryptographic hash /Skein256 (224 bits version) cryptographic hash +SHA3 (512 bits version) cryptographic hash +SHA3 (384 bits version) cryptographic hash +SHA3 (256 bits version) cryptographic hash +SHA3 (224 bits version) cryptographic hash Tiger cryptographic hash Whirlpool cryptographic hash RIPEMD160 cryptographic hash SHA512 cryptographic hash SHA384 cryptographic hash SHA256 cryptographic hash SHA224 cryptographic hash SHA1 cryptographic hash MD5 cryptographic hash MD4 cryptographic hash MD2 cryptographic hash 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 8Initialize a new context for a specified hash algorithm 2compute a MAC using the supplied hashing function +compute a HMAC using a specified algorithm M Secret key Message to MAC /the hash algorithm the actual value is unused.  Secret key Message to MAC xyz{|}~?y{}~?}~{y6xyz{|}~                                         !"#$%&'())*++,,--..//00112233445566778899::;;<<==>>??@ABCDEFGHIJKLMNOPQRSTUVWLXMNOPQRSTYZ[LXMNOPQRST\]^KLMNOPQRST_`aKLMNOPQRSTbcdLXMNOPQRSTefghKLMNOPQRST i j k K L M N O P Q R S T l m n K L M N O P Q R S T o p q K L M N O P Q R S T r s t K L M N O P Q R S TuvwKLMNOPQRSTxyzKLMNOPQRST{|}KLMNOPQRST~cryptohash-0.11.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 HashAlgorithm hashBlockSizehashInit hashUpdates hashFinalizedigestFromByteStringcontextToByteStringdigestToByteStringHMAC hmacGetDigest Skein512_512 Skein512_384 Skein512_256 Skein512_224 Skein256_256 Skein256_224SHA3_512SHA3_384SHA3_256SHA3_224Tiger Whirlpool RIPEMD160SHA512SHA384SHA256SHA224SHA1MD5MD4MD2HashFunctionLBSHashFunctionBS hashUpdatedigestToHexByteString hashInitAlghmacAlguse32Hex 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