h**!Z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                                                                                                                                  0.3.0/Copyright  2021 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred v    4Copyright  2021-2024 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred       4Copyright  2021-2024 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred   !"&#$%'  !"&#$%' /Copyright  2021 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred  ()+*,-./0 ()+*,-./0/Copyright  2021 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred 9hashes1Utility function to initialize a hash with a salt12()+*374568,-./0912()+*374568,-./09/Copyright  2021 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred  B:;<()+*=A>?@B,-./0:;<()+*=A>?@B,-./0/Copyright  2021 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred  RSTUVWXOPQYZ[\LMN]^_`IJKabcdFGHefghCDEijkl12()+*)374568,-./09stuvwxyz{|}~qmnropRSTUVWXOPQYZ[\LMN]^_`IJKabcdFGHefghCDEijklstuvwxyz{|}~qmnrop/Copyright  2021 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred "+&RSTOPQLMNIJKFGHCDE:;<()+*);=A>?@B,-./0RSTOPQLMNIJKFGHCDE 4Copyright  2021-2024 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred" 4Copyright  2021-2024 Lars Kuhtz MITLars Kuhtz  experimentalNone"1f hashesOpenSSL Message Digest Contexthashes$Generic OpenSSL message digest type.This can be used with  DerivingVia to derive hash instances for concrete message digest algorithms.hashes?An algorithm implementation from an OpenSSL algorithm provider.It must be freed after use. Internally, implementations are cached and reference counted. Re-initialization after the last reference is freed is somewhat expensive.It is assumed that this always points to a valid algorithm implementation.hashesInitialize new MD context. The obtained context must be freed after use.hashes Look up the  with given identifier. This is a less efficient legacy way to obtain algorithm implementations. The returned algorithms do not need to be freed.The result is guaranteed to be a valid algorithm. Otherwise an  is thrown.hashesAllocates and initializes a new context. The context may be reused by calling  on it.hashes'Resets a context an initialize context.hashesFeed more data into an context.hashes&Finalize a hash and return the digest.hashes1Finalize an XOF based hash and return the digest.hashesLow-Level function that writes the final digest directly into the provided pointer. The pointer must point to at least 64 bytes of allocated memory. This is not checked and a violation of this condition may result in a segmentation fault.hashesLow-Level function that writes the final digest directly into the provided pointer. The pointer must point to at least 64 bytes of allocated memory. This is not checked and a violation of this condition may result in a segmentation fault.77 4Copyright  2021-2024 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred   4Copyright  2021-2024 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred    4Copyright  2021-2024 Lars Kuhtz MITLars Kuhtz  experimental Safe-InferredI&   4Copyright  2021-2024 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred!(    4Copyright  2021-2024 Lars Kuhtz MITLars Kuhtz  experimental Safe-Inferred1! hashes Internal mutable SipHashContext.7The first four arguments are the internal state values v_{0..3} and the last argument represents the pending bytes from an incomplete word of the last chunk of input.hashesthe most significant byte keeps track of the total number of input bytes modulo 256. The remaining bytes are the currently pending input bytes (i.e. the last totalInput `mod` 8 many bytes of the input).hashesThe Word46 constructor parameters represent the 128 bit key in little endian encoding.hashes SipHash with c compression rounds and d finalization rounds.cf. ,http://cr.yp.to/siphash/siphash-20120918.pdfhashes?@B,-./0  !"#$%&'()* !"#$%&'() !"#+* !"#,,-../00122344566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~pnljhf                                                                                                                                                                                                                                                                     #hashes-0.3.0-2kenzS9p06jJDqloywF1I0 Data.Hash.Class.Mutable.InternalData.Hash.Class.MutableData.Hash.Class.Mutable.SaltedData.Hash.Class.Pure.InternalData.Hash.Class.PureData.Hash.Class.Pure.SaltedData.Hash.FNV1Data.Hash.FNV1.SaltedData.Hash.Internal.UtilsData.Hash.Internal.OpenSSLData.Hash.SipHashhashesData.Hash.Blake2Data.Hash.KeccakData.Hash.SHA2Data.Hash.SHA3 ResetableHashresetIncrementalHashContextupdatefinalizeupdateByteStringupdateByteStringLazyupdateShortByteStringupdateStorableupdateByteArrayHash initializehashPtrhashByteStringhashByteStringLazyhashShortByteString hashStorable hashByteArrayhashPtr_hashByteString_hashByteStringLazy_hashShortByteString_ hashStorable_hashByteArray_SaltinitializeWithSalt Fnv1aHash Fnv1aContextFnv1Hash Fnv1Context Fnv1a32HashFnv1a32Context Fnv132Hash Fnv132Context Fnv1a64HashFnv1a64Context Fnv164Hash Fnv164Contextfnv164Initialize fnv164Updatefnv164Finalizefnv164fnv1a64Initialize fnv1a64Updatefnv1a64Finalizefnv1a64fnv132Initialize fnv132Updatefnv132Finalizefnv132fnv1a32Initialize fnv1a32Updatefnv1a32Finalizefnv1a32fnv1Initialize fnv1Update fnv1Finalizefnv1fnv1aInitialize fnv1aUpdate fnv1aFinalizefnv1a fnvPrime32 fnvPrime64fnvOffsetBasis32fnvOffsetBasis64fnvPrimefnvOffsetBasisfnv1_64fnv1_64_fnv1a_64 fnv1a_64_fnv1_32fnv1_32_fnv1a_32 fnv1a_32_ fnv1_host fnv1_host_ fnv1Primitivefnv1Primitive_ fnv1a_host fnv1a_host_fnv1aPrimitivefnv1aPrimitive_$fHashFnv164Hash$fIncrementalHashFnv164Hash$fHashFnv1a64Hash$fIncrementalHashFnv1a64Hash$fHashFnv132Hash$fIncrementalHashFnv132Hash$fHashFnv1a32Hash$fIncrementalHashFnv1a32Hash$fHashFnv1Hash$fIncrementalHashFnv1Hash$fHashFnv1aHash$fIncrementalHashFnv1aHash$fShowFnv1aHash $fEqFnv1aHash$fOrdFnv1aHash$fShowFnv1Hash $fEqFnv1Hash $fOrdFnv1Hash$fShowFnv1a32Hash$fEqFnv1a32Hash$fOrdFnv1a32Hash$fShowFnv132Hash$fEqFnv132Hash$fOrdFnv132Hash$fShowFnv1a64Hash$fEqFnv1a64Hash$fOrdFnv1a64Hash$fShowFnv164Hash$fEqFnv164Hash$fOrdFnv164HashB16ShortByteString_unB16ShortByteStringb16$fIsStringB16ShortByteString$fShowB16ShortByteString Blake2s256 Blake2b512 Keccak512 Keccak384 Keccak256 Keccak224 Shake256_512 Shake128_256Shake256Shake128Sha3_512Sha3_384Sha3_256Sha3_224 Sha2_512_256 Sha2_512_224Sha2_512Sha2_384Sha2_256Sha2_224CtxDigest OpenSslDigest algorithm AlgorithmOpenSslExceptionfetchAlgorithminitCtxresetCtx updateCtxfinalCtxfinalizeKeccak256PtrfinalizeKeccak512Ptr$fExceptionOpenSslException$fShowAlgorithm$fResetableHashDigest $fHashDigest$fIncrementalHashDigest$fIncrementalHashXOF_Digest"$fResetableHashLegacyKeccak_Digest$fHashLegacyKeccak_Digest$fOpenSslDigestSha2_224$fOpenSslDigestSha2_256$fOpenSslDigestSha2_384$fOpenSslDigestSha2_512$fOpenSslDigestSha2_512_224$fOpenSslDigestSha2_512_256$fOpenSslDigestSha3_224$fOpenSslDigestSha3_256$fOpenSslDigestSha3_384$fOpenSslDigestSha3_512$fOpenSslDigestShake128$fOpenSslDigestShake256$fOpenSslDigestKeccak224$fOpenSslDigestKeccak256$fOpenSslDigestKeccak384$fOpenSslDigestKeccak512$fOpenSslDigestBlake2b512$fOpenSslDigestBlake2s256$fEqBlake2s256$fOrdBlake2s256$fShowBlake2s256$fIsStringBlake2s256$fIncrementalHashBlake2s256$fHashBlake2s256$fEqBlake2b512$fOrdBlake2b512$fShowBlake2b512$fIsStringBlake2b512$fIncrementalHashBlake2b512$fHashBlake2b512 $fEqKeccak512$fOrdKeccak512$fShowKeccak512$fIsStringKeccak512$fIncrementalHashKeccak512$fHashKeccak512$fResetableHashKeccak512 $fEqKeccak384$fOrdKeccak384$fShowKeccak384$fIsStringKeccak384$fIncrementalHashKeccak384$fHashKeccak384$fResetableHashKeccak384 $fEqKeccak256$fOrdKeccak256$fShowKeccak256$fIsStringKeccak256$fIncrementalHashKeccak256$fHashKeccak256$fResetableHashKeccak256 $fEqKeccak224$fOrdKeccak224$fShowKeccak224$fIsStringKeccak224$fIncrementalHashKeccak224$fHashKeccak224$fResetableHashKeccak224 $fEqShake256 $fOrdShake256$fShowShake256$fIsStringShake256$fIncrementalHashShake256$fHashShake256$fResetableHashShake256 $fEqShake128 $fOrdShake128$fShowShake128$fIsStringShake128$fIncrementalHashShake128$fHashShake128$fResetableHashShake128 $fEqSha3_512 $fOrdSha3_512$fShowSha3_512$fIsStringSha3_512$fIncrementalHashSha3_512$fHashSha3_512$fResetableHashSha3_512 $fEqSha3_384 $fOrdSha3_384$fShowSha3_384$fIsStringSha3_384$fIncrementalHashSha3_384$fHashSha3_384$fResetableHashSha3_384 $fEqSha3_256 $fOrdSha3_256$fShowSha3_256$fIsStringSha3_256$fIncrementalHashSha3_256$fHashSha3_256$fResetableHashSha3_256 $fEqSha3_224 $fOrdSha3_224$fShowSha3_224$fIsStringSha3_224$fIncrementalHashSha3_224$fHashSha3_224$fResetableHashSha3_224$fEqSha2_512_256$fOrdSha2_512_256$fShowSha2_512_256$fIsStringSha2_512_256$fIncrementalHashSha2_512_256$fHashSha2_512_256$fResetableHashSha2_512_256$fEqSha2_512_224$fOrdSha2_512_224$fShowSha2_512_224$fIsStringSha2_512_224$fIncrementalHashSha2_512_224$fHashSha2_512_224$fResetableHashSha2_512_224 $fEqSha2_512 $fOrdSha2_512$fShowSha2_512$fIsStringSha2_512$fIncrementalHashSha2_512$fHashSha2_512$fResetableHashSha2_512 $fEqSha2_384 $fOrdSha2_384$fShowSha2_384$fIsStringSha2_384$fIncrementalHashSha2_384$fHashSha2_384$fResetableHashSha2_384 $fEqSha2_256 $fOrdSha2_256$fShowSha2_256$fIsStringSha2_256$fIncrementalHashSha2_256$fHashSha2_256$fResetableHashSha2_256 $fEqSha2_224 $fOrdSha2_224$fShowSha2_224$fIsStringSha2_224$fIncrementalHashSha2_224$fHashSha2_224$fResetableHashSha2_224$fEqLegacyKeccak_Digest$fOrdLegacyKeccak_Digest$$fIncrementalHashLegacyKeccak_Digest$fShowLegacyKeccak_Digest$fIsStringLegacyKeccak_Digest$fEqXOF_Digest$fOrdXOF_Digest$fHashXOF_Digest$fResetableHashXOF_Digest$fShowXOF_Digest$fIsStringXOF_Digest $fEqDigest $fOrdDigest $fShowDigest$fIsStringDigest$fShowOpenSslExceptionSipHashContext SipHashKeySipHashsipHash sipHashCD sipHash24 sipHash13 sipHash48sipHashInitialize sipHashUpdatesipHashFinalize $fHashSipHash$fIncrementalHashSipHash$fSipHashRoundsnTrue$fSipHashRounds8False$fSipHashRounds7False$fSipHashRounds6False$fSipHashRounds5False$fSipHashRounds4False$fSipHashRounds3False$fSipHashRounds2False$fSipHashRounds1False$fSipHashParamn$fShowSipHashKey$fEqSipHashKey$fOrdSipHashKey $fShowSipHash $fEqSipHash $fOrdSipHash c_evp_ctx_new xof_finalCtx