t      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc d e f g h i j k l m n o p q r s t u v w x y z { | } ~   BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy Mperform io for hashes that do allocation and ffi. unsafeDupablePerformIO is used when possible as the 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. BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy M*Whirlpool Context,init a context-"update a context with a bytestring.+updates a context with multiples bytestring/-finalize the context into a digest bytestring01hash a strict bytestring into a digest bytestring1/hash a lazy bytestring into a digest bytestring*+,-./01*+,-./01*+,-./01*+,-./01 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy 2Skein512 Context4init a context5"update a context with a bytestring6+updates a context with multiples bytestring7-finalize the context into a digest bytestring81hash a strict bytestring into a digest bytestring9/hash a lazy bytestring into a digest bytestring23456789234567892345678923456789 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy :Skein256 Context<init a context="update a context with a bytestring>+updates a context with multiples bytestring?-finalize the context into a digest bytestring@1hash a strict bytestring into a digest bytestringA/hash a lazy bytestring into a digest bytestring:;<=>?@A:;<=>?@A:;<=>?@A:;<=>?@A BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy MB Tiger ContextDinit a contextE"update a context with a bytestringF+updates a context with multiples bytestringG-finalize the context into a digest bytestringH1hash a strict bytestring into a digest bytestringI/hash a lazy bytestring into a digest bytestringBCDEFGHIBCDEFGHIBCDEFGHIBCDEFGHI BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy MJRIPEMD160 ContextLinit a contextM"update a context with a bytestringN+updates a context with multiples bytestringO-finalize the context into a digest bytestringP1hash a strict bytestring into a digest bytestringQ/hash a lazy bytestring into a digest bytestringJKLMNOPQJKLMNOPQJKLMNOPQJKLMNOPQ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy R SHA3 ContextTinit a contextU"update a context with a bytestringV+updates a context with multiples bytestringW-finalize the context into a digest bytestringX1hash a strict bytestring into a digest bytestringY/hash a lazy bytestring into a digest bytestringRSTUVWXYRSTUVWXYRSTUVWXYRSTUVWXY BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy ZSHA512 Context\4init 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 bytestringa1hash a strict bytestring into a digest bytestringb/hash a lazy bytestring into a digest bytestringZ[\]^_`ab Z[\]^_`ab Z[]\^_`abZ[\]^_`ab  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy c(SHA512 Context with variable size outputeinit a contextf"update a context with a bytestringg-finalize the context into a digest bytestringh1hash a strict bytestring into a digest bytestringi/hash a lazy bytestring into a digest bytestringcdefghicdefghicdefghicdefghi  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy MjSHA384 Contextlinit a contextm"update a context with a bytestringn+updates a context with multiples bytestringo-finalize the context into a digest bytestringp1hash a strict bytestring into a digest bytestringq/hash a lazy bytestring into a digest bytestringjklmnopqjklmnopqjklmnopqjklmnopq  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy MrSHA256 Contexttinit a contextu"update a context with a bytestringv+updates a context with multiples bytestringw-finalize the context into a digest bytestringx1hash a strict bytestring into a digest bytestringy/hash a lazy bytestring into a digest bytestringrstuvwxyrstuvwxyrstuvwxyrstuvwxy  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy MzSHA224 Context|init a context}"update a context with a bytestring~+updates a context with multiples bytestring-finalize the context into a digest bytestring1hash a strict bytestring into a digest bytestring/hash a lazy bytestring into a digest bytestringz{|}~z{|}~z{|}~z{|}~  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy M SHA1 Contextinit a context"update a context with a bytestring+updates a context with multiples bytestring-finalize the context into a digest bytestring1hash a strict bytestring into a digest bytestring/hash a lazy bytestring into a digest bytestring BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy M MD5 Contextinit a context"update a context with a bytestring+updates a context with multiples bytestring-finalize the context into a digest bytestring1hash a strict bytestring into a digest bytestring/hash a lazy bytestring into a digest bytestring BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy M MD4 Contextinit a context"update a context with a bytestring+updates a context with multiples bytestring-finalize the context into a digest bytestring1hash a strict bytestring into a digest bytestring/hash a lazy bytestring into a digest bytestring BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy M MD2 Contextinit a context"update a context with a bytestring+updates a context with multiples bytestring-finalize the context into a digest bytestring1hash a strict bytestring into a digest bytestring/hash a lazy bytestring into a digest bytestring BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy M.Represent a digest for a given hash algorithm./Represent a context for a given hash algorithm.5return the binary bytestring. deprecated use toBytes.      BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy 1compute a MAC using the supplied hashing function.An incremental API can be found in the module  Crypto.Hash. hash function block sizesecretmessage BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy M%ORepresent an HMAC that is a phantom type with the hash used to produce the mac.!The Eq instance is constant time.&Class representing hashing algorithms..The hash algorithm is built over 3 primitives:'init : create a new hashing contextkupdates : update the hashing context with some strict bytestrings and return the new context-finalize : finalize the context into a digest2Block size in bytes the hash algorithm operates on0Initialize a new context for this hash algorithm`Update the context with a list of strict bytestring, and return a new context with the updates.'Finalize a context and return a digest.6Try to convert a binary digest bytestring to a digest.FAlias to a single pass hash function that operate on a lazy bytestringHAlias to a single pass hash function that operate on a strict bytestringHrun hashUpdates on one single bytestring and return the updated context.'Hash a strict bytestring into a digest.%Hash a lazy bytestring into a digest.8Return the hexadecimal (base16) bytestring of the digest7Initialize a new context for a specified hash algorithm1compute a MAC using the supplied hashing function*compute a HMAC using a specified algorithm .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 hashTiger cryptographic hashWhirlpool cryptographic hashRIPEMD160 cryptographic hashSHA512 cryptographic hashSHA384 cryptographic hashSHA256 cryptographic hashSHA224 cryptographic hashSHA1 cryptographic hashMD5 cryptographic hashMD4 cryptographic hashMD2 cryptographic hash) Secret keyMessage to MAC.the hash algorithm the actual value is unused. Secret keyMessage to MAC !   ?  !"#$%&'()?)('&%$#"!   " !    BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy ;Represent an ongoing HMAC state, that can be appended with  and finalize to an HMAC with )Initialize a new incremental HMAC contextFInitialize a new incremental HMAC context with a given hash algorithm.#Incrementally update a HMAC context,Finalize a HMAC context and return the HMAC." Secret key.the hash algorithm the actual value is unused. Secret keyMessage to Mac " BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknown Trustworthy  SHA3_224 MAC SHA3_256 MAC SHA3_384 MAC SHA3_512 MAC-compute a MAC using a simple SHA3_512 key|msg-compute a MAC using a simple SHA3_384 key|msg-compute a MAC using a simple SHA3_256 key|msg-compute a MAC using a simple SHA3_224 key|msgsecretmessagesecretmessagesecretmessagesecretmessage#$%&'()*#$%&'()*+  !!""##$$ % % & & ' ' ( ())**++,,-./012,,-./012,,-./012,,-./012,,-./012,,-./012,,3-./012 , , - . 0 1 2 , , - . / 0 1 2 , , - . / 0 1 2 , , - . / 0 1 2 , , - . / 0 1 2,,-./012,,-./012,,-./012445567899:;<=>?@ABC12DE8FGHIJKLLMNNOPPQRRSTUVWX7YZ[\]^_`abcdefghi]^_`abcdefjkl]^_`abcdefmnopq]_`abcdefrstuvwxyz{|}~Gcrypt_GEQ1t4Tm0IqFmYz8P9KrIn Crypto.HashCrypto.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.TypesCrypto.MAC.HMAC Crypto.MACCrypto.MAC.SHA3Crypto.Hash.Internalcrypt_8tOVQjMArS579icds1NXMc Whirlpool Skein512_224 Skein512_256 Skein512_384 Skein512_512 Skein256_224 Skein256_256Tiger RIPEMD160SHA3_224SHA3_256SHA3_384SHA3_512SHA512SHA384SHA256SHA224SHA1MD5MD4MD2Ctxinitupdateupdatesfinalizehashhashlazyinit_tDigestContextcontextToByteStringdigestToByteStringhmacHMAC hmacGetDigest HashAlgorithm hashBlockSizehashInit hashUpdates hashFinalizedigestFromByteStringHashFunctionLBSHashFunctionBS hashUpdatedigestToHexByteString hashInitAlghmacAlg HMACContexthmacInit hmacInitAlg hmacUpdate hmacFinalizeMAC224 getDigest224MAC256 getDigest256MAC384 getDigest384MAC512 getDigest512mac512mac384mac256mac224 unsafeDoIOdigestToByteStringWitnessc_skein512_finalizec_skein512_updatec_skein512_initsizeCtx peekHashlenwithByteStringPtr memcopy64 withCtxCopy withCtxThrow withCtxNewwithCtxNewThrowupdateInternalIOfinalizeInternalIOc_skein256_finalizec_skein256_updatec_skein256_initc_sha3_finalize c_sha3_update c_sha3_initc_sha512_init_tc_sha512_finalizec_sha512_update c_sha512_init digestSize $fShowDigest$fByteableDigest$fByteableContext$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$fEqHMAC$fByteableHMAC $fEqMAC224$fByteableMAC224 $fEqMAC256$fByteableMAC256 $fEqMAC384$fByteableMAC384 $fEqMAC512$fByteableMAC512