-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Hash functions -- -- Efficient implementations of hash functions @package hashes @version 0.3.0 -- | Incremental and Resetable Mutable Hashes module Data.Hash.Class.Mutable.Internal class IncrementalHash a where { type Context a :: Type; } update :: IncrementalHash a => Context a -> Ptr Word8 -> Int -> IO () finalize :: IncrementalHash a => Context a -> IO a updateByteString :: forall a. IncrementalHash a => Context a -> ByteString -> IO () updateByteStringLazy :: forall a. IncrementalHash a => Context a -> ByteString -> IO () updateShortByteString :: forall a. IncrementalHash a => Context a -> ShortByteString -> IO () updateStorable :: forall a b. IncrementalHash a => Storable b => Context a -> b -> IO () updateByteArray :: forall a. IncrementalHash a => Context a -> ByteArray# -> IO () class IncrementalHash a => ResetableHash a reset :: ResetableHash a => Context a -> IO () -- | Class of Salted Pure Hashes module Data.Hash.Class.Mutable class IncrementalHash a => Hash a initialize :: Hash a => IO (Context a) class IncrementalHash a where { type Context a :: Type; } update :: IncrementalHash a => Context a -> Ptr Word8 -> Int -> IO () finalize :: IncrementalHash a => Context a -> IO a hashPtr :: forall a. Hash a => Ptr Word8 -> Int -> IO a hashStorable :: forall a b. Hash a => Storable b => b -> IO a hashByteString :: forall a. Hash a => ByteString -> IO a hashByteStringLazy :: forall a. Hash a => ByteString -> IO a hashShortByteString :: forall a. Hash a => ShortByteString -> IO a hashByteArray :: forall a. Hash a => ByteArray# -> IO a hashPtr_ :: forall a. Hash a => Ptr Word8 -> Int -> a hashStorable_ :: forall a b. Hash a => Storable b => b -> a hashByteString_ :: forall a. Hash a => ByteString -> a hashByteStringLazy_ :: forall a. Hash a => ByteString -> a hashShortByteString_ :: forall a. Hash a => ShortByteString -> a hashByteArray_ :: forall a. Hash a => ByteArray# -> a updateByteString :: forall a. IncrementalHash a => Context a -> ByteString -> IO () updateByteStringLazy :: forall a. IncrementalHash a => Context a -> ByteString -> IO () updateShortByteString :: forall a. IncrementalHash a => Context a -> ShortByteString -> IO () updateStorable :: forall a b. IncrementalHash a => Storable b => Context a -> b -> IO () updateByteArray :: forall a. IncrementalHash a => Context a -> ByteArray# -> IO () class IncrementalHash a => ResetableHash a reset :: ResetableHash a => Context a -> IO () -- | Class of Salted Mutable Hashes module Data.Hash.Class.Mutable.Salted class IncrementalHash a => Hash a where { type Salt a :: Type; } initialize :: Hash a => Salt a -> IO (Context a) hashPtr :: forall a. Hash a => Salt a -> Ptr Word8 -> Int -> IO a hashStorable :: forall a b. Hash a => Storable b => Salt a -> b -> IO a hashByteString :: forall a. Hash a => Salt a -> ByteString -> IO a hashByteStringLazy :: forall a. Hash a => Salt a -> ByteString -> IO a hashShortByteString :: forall a. Hash a => Salt a -> ShortByteString -> IO a hashByteArray :: forall a. Hash a => Salt a -> ByteArray# -> IO a hashPtr_ :: forall a. Hash a => Salt a -> Ptr Word8 -> Int -> a hashStorable_ :: forall a b. Hash a => Storable b => Salt a -> b -> a hashByteString_ :: forall a. Hash a => Salt a -> ByteString -> a hashByteStringLazy_ :: forall a. Hash a => Salt a -> ByteString -> a hashShortByteString_ :: forall a. Hash a => Salt a -> ShortByteString -> a hashByteArray_ :: forall a. Hash a => Salt a -> ByteArray# -> a updateByteString :: forall a. IncrementalHash a => Context a -> ByteString -> IO () updateByteStringLazy :: forall a. IncrementalHash a => Context a -> ByteString -> IO () updateShortByteString :: forall a. IncrementalHash a => Context a -> ShortByteString -> IO () updateStorable :: forall a b. IncrementalHash a => Storable b => Context a -> b -> IO () updateByteArray :: forall a. IncrementalHash a => Context a -> ByteArray# -> IO () -- | Incremental Pure Hashes module Data.Hash.Class.Pure.Internal class IncrementalHash a where { type Context a :: Type; } update :: IncrementalHash a => Context a -> Ptr Word8 -> Int -> IO (Context a) finalize :: IncrementalHash a => Context a -> a updateByteString :: forall a. IncrementalHash a => Context a -> ByteString -> Context a updateByteStringLazy :: forall a. IncrementalHash a => Context a -> ByteString -> Context a updateShortByteString :: forall a. IncrementalHash a => Context a -> ShortByteString -> Context a updateStorable :: forall a b. IncrementalHash a => Storable b => Context a -> b -> Context a updateByteArray :: forall a. IncrementalHash a => Context a -> ByteArray# -> Context a -- | Hashes with pure context module Data.Hash.Class.Pure class IncrementalHash a => Hash a initialize :: Hash a => Context a class IncrementalHash a where { type Context a :: Type; } update :: IncrementalHash a => Context a -> Ptr Word8 -> Int -> IO (Context a) finalize :: IncrementalHash a => Context a -> a hashPtr :: forall a. Hash a => Ptr Word8 -> Int -> IO a hashStorable :: forall a b. Hash a => Storable b => b -> a hashByteString :: forall a. Hash a => ByteString -> a hashByteStringLazy :: forall a. Hash a => ByteString -> a hashShortByteString :: forall a. Hash a => ShortByteString -> a hashByteArray :: forall a. Hash a => ByteArray# -> a updateByteString :: forall a. IncrementalHash a => Context a -> ByteString -> Context a updateByteStringLazy :: forall a. IncrementalHash a => Context a -> ByteString -> Context a updateShortByteString :: forall a. IncrementalHash a => Context a -> ShortByteString -> Context a updateStorable :: forall a b. IncrementalHash a => Storable b => Context a -> b -> Context a updateByteArray :: forall a. IncrementalHash a => Context a -> ByteArray# -> Context a -- | Utility function to initialize a hash with a salt initializeWithSalt :: forall a s. Hash a => Storable s => s -> Context a module Data.Hash.Class.Pure.Salted class IncrementalHash a => Hash a where { type Salt a :: Type; } initialize :: Hash a => Salt a -> Context a class IncrementalHash a where { type Context a :: Type; } update :: IncrementalHash a => Context a -> Ptr Word8 -> Int -> IO (Context a) finalize :: IncrementalHash a => Context a -> a hashPtr :: forall a. Hash a => Salt a -> Ptr Word8 -> Int -> IO a hashStorable :: forall a b. Hash a => Storable b => Salt a -> b -> a hashByteString :: forall a. Hash a => Salt a -> ByteString -> a hashByteStringLazy :: forall a. Hash a => Salt a -> ByteString -> a hashShortByteString :: forall a. Hash a => Salt a -> ShortByteString -> a hashByteArray :: forall a. Hash a => Salt a -> ByteArray# -> a updateByteString :: forall a. IncrementalHash a => Context a -> ByteString -> Context a updateByteStringLazy :: forall a. IncrementalHash a => Context a -> ByteString -> Context a updateShortByteString :: forall a. IncrementalHash a => Context a -> ShortByteString -> Context a updateStorable :: forall a b. IncrementalHash a => Storable b => Context a -> b -> Context a updateByteArray :: forall a. IncrementalHash a => Context a -> ByteArray# -> Context a -- | The primitive versions are usually not more efficient than the version -- with explicit word sizes for the respective host architecture. module Data.Hash.FNV1 newtype Fnv164Hash Fnv164Hash :: Word64 -> Fnv164Hash data Fnv164Context fnv164Initialize :: Fnv164Context fnv164Update :: Fnv164Context -> Ptr Word8 -> Int -> IO Fnv164Context fnv164Finalize :: Fnv164Context -> Fnv164Hash fnv164 :: Ptr Word8 -> Int -> IO Fnv164Hash newtype Fnv1a64Hash Fnv1a64Hash :: Word64 -> Fnv1a64Hash data Fnv1a64Context fnv1a64Initialize :: Fnv1a64Context fnv1a64Update :: Fnv1a64Context -> Ptr Word8 -> Int -> IO Fnv1a64Context fnv1a64Finalize :: Fnv1a64Context -> Fnv1a64Hash fnv1a64 :: Ptr Word8 -> Int -> IO Fnv1a64Hash newtype Fnv132Hash Fnv132Hash :: Word32 -> Fnv132Hash data Fnv132Context fnv132Initialize :: Fnv132Context fnv132Update :: Fnv132Context -> Ptr Word8 -> Int -> IO Fnv132Context fnv132Finalize :: Fnv132Context -> Fnv132Hash fnv132 :: Ptr Word8 -> Int -> IO Fnv132Hash newtype Fnv1a32Hash Fnv1a32Hash :: Word32 -> Fnv1a32Hash data Fnv1a32Context fnv1a32Initialize :: Fnv1a32Context fnv1a32Update :: Fnv1a32Context -> Ptr Word8 -> Int -> IO Fnv1a32Context fnv1a32Finalize :: Fnv1a32Context -> Fnv1a32Hash fnv1a32 :: Ptr Word8 -> Int -> IO Fnv1a32Hash newtype Fnv1Hash Fnv1Hash :: Word -> Fnv1Hash data Fnv1Context fnv1Initialize :: Fnv1Context fnv1Update :: Fnv1Context -> Ptr Word8 -> Int -> IO Fnv1Context fnv1Finalize :: Fnv1Context -> Fnv1Hash fnv1 :: Ptr Word8 -> Int -> IO Fnv1Hash newtype Fnv1aHash Fnv1aHash :: Word -> Fnv1aHash data Fnv1aContext fnv1aInitialize :: Fnv1aContext fnv1aUpdate :: Fnv1aContext -> Ptr Word8 -> Int -> IO Fnv1aContext fnv1aFinalize :: Fnv1aContext -> Fnv1aHash fnv1a :: Ptr Word8 -> Int -> IO Fnv1aHash fnv1_64 :: Ptr Word8 -> Int -> IO Word64 fnv1_64_ :: Ptr Word8 -> Int -> Word64 -> IO Word64 fnv1a_64 :: Ptr Word8 -> Int -> IO Word64 fnv1a_64_ :: Ptr Word8 -> Int -> Word64 -> IO Word64 fnv1_32 :: Ptr Word8 -> Int -> IO Word32 fnv1_32_ :: Ptr Word8 -> Int -> Word32 -> IO Word32 fnv1a_32 :: Ptr Word8 -> Int -> IO Word32 fnv1a_32_ :: Ptr Word8 -> Int -> Word32 -> IO Word32 fnv1_host :: Ptr Word8 -> Int -> IO Word fnv1_host_ :: Ptr Word8 -> Int -> Word -> IO Word fnv1Primitive :: Addr# -> Int# -> State# tok -> (# State# tok, Word# #) fnv1Primitive_ :: Addr# -> Int# -> Word# -> State# tok -> (# State# tok, Word# #) fnv1a_host :: Ptr Word8 -> Int -> IO Word fnv1a_host_ :: Ptr Word8 -> Int -> Word -> IO Word fnv1aPrimitive :: Addr# -> Int# -> State# tok -> (# State# tok, Word# #) fnv1aPrimitive_ :: Addr# -> Int# -> Word# -> State# tok -> (# State# tok, Word# #) fnvPrime :: Word fnvPrime32 :: Word32 fnvPrime64 :: Word64 fnvOffsetBasis :: Word fnvOffsetBasis32 :: Word32 fnvOffsetBasis64 :: Word64 instance GHC.Classes.Ord Data.Hash.FNV1.Fnv164Hash instance GHC.Classes.Eq Data.Hash.FNV1.Fnv164Hash instance GHC.Show.Show Data.Hash.FNV1.Fnv164Hash instance GHC.Classes.Ord Data.Hash.FNV1.Fnv1a64Hash instance GHC.Classes.Eq Data.Hash.FNV1.Fnv1a64Hash instance GHC.Show.Show Data.Hash.FNV1.Fnv1a64Hash instance GHC.Classes.Ord Data.Hash.FNV1.Fnv132Hash instance GHC.Classes.Eq Data.Hash.FNV1.Fnv132Hash instance GHC.Show.Show Data.Hash.FNV1.Fnv132Hash instance GHC.Classes.Ord Data.Hash.FNV1.Fnv1a32Hash instance GHC.Classes.Eq Data.Hash.FNV1.Fnv1a32Hash instance GHC.Show.Show Data.Hash.FNV1.Fnv1a32Hash instance GHC.Classes.Ord Data.Hash.FNV1.Fnv1Hash instance GHC.Classes.Eq Data.Hash.FNV1.Fnv1Hash instance GHC.Show.Show Data.Hash.FNV1.Fnv1Hash instance GHC.Classes.Ord Data.Hash.FNV1.Fnv1aHash instance GHC.Classes.Eq Data.Hash.FNV1.Fnv1aHash instance GHC.Show.Show Data.Hash.FNV1.Fnv1aHash instance Data.Hash.Class.Pure.Internal.IncrementalHash Data.Hash.FNV1.Fnv1aHash instance Data.Hash.Class.Pure.Hash Data.Hash.FNV1.Fnv1aHash instance Data.Hash.Class.Pure.Internal.IncrementalHash Data.Hash.FNV1.Fnv1Hash instance Data.Hash.Class.Pure.Hash Data.Hash.FNV1.Fnv1Hash instance Data.Hash.Class.Pure.Internal.IncrementalHash Data.Hash.FNV1.Fnv1a32Hash instance Data.Hash.Class.Pure.Hash Data.Hash.FNV1.Fnv1a32Hash instance Data.Hash.Class.Pure.Internal.IncrementalHash Data.Hash.FNV1.Fnv132Hash instance Data.Hash.Class.Pure.Hash Data.Hash.FNV1.Fnv132Hash instance Data.Hash.Class.Pure.Internal.IncrementalHash Data.Hash.FNV1.Fnv1a64Hash instance Data.Hash.Class.Pure.Hash Data.Hash.FNV1.Fnv1a64Hash instance Data.Hash.Class.Pure.Internal.IncrementalHash Data.Hash.FNV1.Fnv164Hash instance Data.Hash.Class.Pure.Hash Data.Hash.FNV1.Fnv164Hash -- | Salted variants for FNV1 Hashes module Data.Hash.FNV1.Salted newtype Fnv164Hash Fnv164Hash :: Word64 -> Fnv164Hash data Fnv164Context newtype Fnv1a64Hash Fnv1a64Hash :: Word64 -> Fnv1a64Hash data Fnv1a64Context newtype Fnv132Hash Fnv132Hash :: Word32 -> Fnv132Hash data Fnv132Context newtype Fnv1a32Hash Fnv1a32Hash :: Word32 -> Fnv1a32Hash data Fnv1a32Context newtype Fnv1Hash Fnv1Hash :: Word -> Fnv1Hash data Fnv1Context newtype Fnv1aHash Fnv1aHash :: Word -> Fnv1aHash data Fnv1aContext instance Data.Hash.Class.Pure.Salted.Hash Data.Hash.FNV1.Fnv164Hash instance Data.Hash.Class.Pure.Salted.Hash Data.Hash.FNV1.Fnv1a64Hash instance Data.Hash.Class.Pure.Salted.Hash Data.Hash.FNV1.Fnv132Hash instance Data.Hash.Class.Pure.Salted.Hash Data.Hash.FNV1.Fnv1a32Hash instance Data.Hash.Class.Pure.Salted.Hash Data.Hash.FNV1.Fnv1Hash instance Data.Hash.Class.Pure.Salted.Hash Data.Hash.FNV1.Fnv1aHash module Data.Hash.Internal.Utils newtype B16ShortByteString B16ShortByteString :: ShortByteString -> B16ShortByteString [_unB16ShortByteString] :: B16ShortByteString -> ShortByteString b16 :: B16ShortByteString -> ByteString instance GHC.Show.Show Data.Hash.Internal.Utils.B16ShortByteString instance Data.String.IsString Data.Hash.Internal.Utils.B16ShortByteString -- | Bindings for OpenSSL EVP Message Digest Routines. -- -- Requires OpenSSL version >= 1.1.0 module Data.Hash.Internal.OpenSSL -- | 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. newtype Algorithm a Algorithm :: ForeignPtr Void -> Algorithm a -- | OpenSSL Message Digest Context newtype Ctx a Ctx :: ForeignPtr Void -> Ctx a -- | Generic OpenSSL message digest type. -- -- This can be used with DerivingVia to derive hash instances -- for concrete message digest algorithms. newtype Digest a Digest :: ShortByteString -> Digest a -- | Resets a context an initialize context. resetCtx :: Ctx a -> IO () -- | Allocates and initializes a new context. The context may be reused by -- calling resetCtx on it. initCtx :: Algorithm a -> IO (Ctx a) -- | Feed more data into an context. updateCtx :: Ctx a -> Ptr Word8 -> Int -> IO () -- | Finalize a hash and return the digest. finalCtx :: Ctx a -> IO (Digest a) -- | Look up the Algorithm 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 -- OpenSslException is thrown. fetchAlgorithm :: String -> IO (Algorithm a) class OpenSslDigest a algorithm :: OpenSslDigest a => Algorithm a newtype OpenSslException OpenSslException :: String -> OpenSslException newtype Sha2_224 Sha2_224 :: ShortByteString -> Sha2_224 newtype Sha2_256 Sha2_256 :: ShortByteString -> Sha2_256 newtype Sha2_384 Sha2_384 :: ShortByteString -> Sha2_384 newtype Sha2_512 Sha2_512 :: ShortByteString -> Sha2_512 newtype Sha2_512_224 Sha2_512_224 :: ShortByteString -> Sha2_512_224 newtype Sha2_512_256 Sha2_512_256 :: ShortByteString -> Sha2_512_256 newtype Sha3_224 Sha3_224 :: ShortByteString -> Sha3_224 newtype Sha3_256 Sha3_256 :: ShortByteString -> Sha3_256 newtype Sha3_384 Sha3_384 :: ShortByteString -> Sha3_384 newtype Sha3_512 Sha3_512 :: ShortByteString -> Sha3_512 newtype Shake128 (bits :: Natural) Shake128 :: ShortByteString -> Shake128 (bits :: Natural) type Shake128_256 = Shake128 32 newtype Shake256 (bits :: Natural) Shake256 :: ShortByteString -> Shake256 (bits :: Natural) type Shake256_512 = Shake256 64 newtype Keccak224 Keccak224 :: ShortByteString -> Keccak224 newtype Keccak256 Keccak256 :: ShortByteString -> Keccak256 newtype Keccak384 Keccak384 :: ShortByteString -> Keccak384 newtype Keccak512 Keccak512 :: ShortByteString -> Keccak512 -- | Low-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. finalizeKeccak256Ptr :: Ctx Keccak256 -> Ptr Word8 -> IO () -- | Low-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. finalizeKeccak512Ptr :: Ctx Keccak512 -> Ptr Word8 -> IO () newtype Blake2b512 Blake2b512 :: ShortByteString -> Blake2b512 newtype Blake2s256 Blake2s256 :: ShortByteString -> Blake2s256 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.OpenSslException instance Data.String.IsString (Data.Hash.Internal.OpenSSL.Digest a) instance GHC.Show.Show (Data.Hash.Internal.OpenSSL.Digest a) instance GHC.Classes.Ord (Data.Hash.Internal.OpenSSL.Digest a) instance GHC.Classes.Eq (Data.Hash.Internal.OpenSSL.Digest a) instance Data.String.IsString (Data.Hash.Internal.OpenSSL.XOF_Digest n a) instance GHC.Show.Show (Data.Hash.Internal.OpenSSL.XOF_Digest n a) instance GHC.TypeNats.KnownNat n => Data.Hash.Class.Mutable.Internal.ResetableHash (Data.Hash.Internal.OpenSSL.XOF_Digest n a) instance (GHC.TypeNats.KnownNat n, Data.Hash.Internal.OpenSSL.OpenSslDigest a) => Data.Hash.Class.Mutable.Hash (Data.Hash.Internal.OpenSSL.XOF_Digest n a) instance GHC.Classes.Ord (Data.Hash.Internal.OpenSSL.XOF_Digest n a) instance GHC.Classes.Eq (Data.Hash.Internal.OpenSSL.XOF_Digest n a) instance Data.String.IsString (Data.Hash.Internal.OpenSSL.LegacyKeccak_Digest a) instance GHC.Show.Show (Data.Hash.Internal.OpenSSL.LegacyKeccak_Digest a) instance Data.Hash.Class.Mutable.Internal.IncrementalHash (Data.Hash.Internal.OpenSSL.LegacyKeccak_Digest a) instance GHC.Classes.Ord (Data.Hash.Internal.OpenSSL.LegacyKeccak_Digest a) instance GHC.Classes.Eq (Data.Hash.Internal.OpenSSL.LegacyKeccak_Digest a) instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha2_224 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha2_224 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha2_224 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha2_224 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha2_224 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha2_224 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha2_224 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha2_256 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha2_256 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha2_256 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha2_256 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha2_256 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha2_256 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha2_256 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha2_384 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha2_384 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha2_384 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha2_384 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha2_384 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha2_384 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha2_384 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha2_512 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha2_512 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha2_512 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha2_512 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha2_512 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha2_512 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha2_512 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha2_512_224 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha2_512_224 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha2_512_224 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha2_512_224 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha2_512_224 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha2_512_224 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha2_512_224 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha2_512_256 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha2_512_256 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha2_512_256 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha2_512_256 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha2_512_256 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha2_512_256 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha2_512_256 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha3_224 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha3_224 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha3_224 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha3_224 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha3_224 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha3_224 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha3_224 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha3_256 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha3_256 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha3_256 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha3_256 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha3_256 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha3_256 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha3_256 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha3_384 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha3_384 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha3_384 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha3_384 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha3_384 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha3_384 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha3_384 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Sha3_512 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Sha3_512 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Sha3_512 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Sha3_512 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Sha3_512 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Sha3_512 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Sha3_512 instance GHC.TypeNats.KnownNat bits => Data.Hash.Class.Mutable.Internal.ResetableHash (Data.Hash.Internal.OpenSSL.Shake128 bits) instance GHC.TypeNats.KnownNat bits => Data.Hash.Class.Mutable.Hash (Data.Hash.Internal.OpenSSL.Shake128 bits) instance GHC.TypeNats.KnownNat bits => Data.Hash.Class.Mutable.Internal.IncrementalHash (Data.Hash.Internal.OpenSSL.Shake128 bits) instance Data.String.IsString (Data.Hash.Internal.OpenSSL.Shake128 bits) instance GHC.Show.Show (Data.Hash.Internal.OpenSSL.Shake128 bits) instance GHC.Classes.Ord (Data.Hash.Internal.OpenSSL.Shake128 bits) instance GHC.Classes.Eq (Data.Hash.Internal.OpenSSL.Shake128 bits) instance GHC.TypeNats.KnownNat bits => Data.Hash.Class.Mutable.Internal.ResetableHash (Data.Hash.Internal.OpenSSL.Shake256 bits) instance GHC.TypeNats.KnownNat bits => Data.Hash.Class.Mutable.Hash (Data.Hash.Internal.OpenSSL.Shake256 bits) instance GHC.TypeNats.KnownNat bits => Data.Hash.Class.Mutable.Internal.IncrementalHash (Data.Hash.Internal.OpenSSL.Shake256 bits) instance Data.String.IsString (Data.Hash.Internal.OpenSSL.Shake256 bits) instance GHC.Show.Show (Data.Hash.Internal.OpenSSL.Shake256 bits) instance GHC.Classes.Ord (Data.Hash.Internal.OpenSSL.Shake256 bits) instance GHC.Classes.Eq (Data.Hash.Internal.OpenSSL.Shake256 bits) instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Keccak224 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Keccak224 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Keccak224 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Keccak224 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Keccak224 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Keccak224 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Keccak224 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Keccak256 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Keccak256 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Keccak256 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Keccak256 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Keccak256 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Keccak256 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Keccak256 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Keccak384 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Keccak384 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Keccak384 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Keccak384 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Keccak384 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Keccak384 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Keccak384 instance Data.Hash.Class.Mutable.Internal.ResetableHash Data.Hash.Internal.OpenSSL.Keccak512 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Keccak512 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Keccak512 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Keccak512 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Keccak512 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Keccak512 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Keccak512 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Blake2b512 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Blake2b512 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Blake2b512 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Blake2b512 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Blake2b512 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Blake2b512 instance Data.Hash.Class.Mutable.Hash Data.Hash.Internal.OpenSSL.Blake2s256 instance Data.Hash.Class.Mutable.Internal.IncrementalHash Data.Hash.Internal.OpenSSL.Blake2s256 instance Data.String.IsString Data.Hash.Internal.OpenSSL.Blake2s256 instance GHC.Show.Show Data.Hash.Internal.OpenSSL.Blake2s256 instance GHC.Classes.Ord Data.Hash.Internal.OpenSSL.Blake2s256 instance GHC.Classes.Eq Data.Hash.Internal.OpenSSL.Blake2s256 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Blake2s256 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Blake2b512 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Keccak512 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Keccak384 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Keccak256 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Keccak224 instance Data.Hash.Internal.OpenSSL.OpenSslDigest (Data.Hash.Internal.OpenSSL.Shake256 n) instance Data.Hash.Internal.OpenSSL.OpenSslDigest (Data.Hash.Internal.OpenSSL.Shake128 n) instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha3_512 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha3_384 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha3_256 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha3_224 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha2_512_256 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha2_512_224 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha2_512 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha2_384 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha2_256 instance Data.Hash.Internal.OpenSSL.OpenSslDigest Data.Hash.Internal.OpenSSL.Sha2_224 instance Data.Hash.Internal.OpenSSL.OpenSslDigest a => Data.Hash.Class.Mutable.Hash (Data.Hash.Internal.OpenSSL.LegacyKeccak_Digest a) instance Data.Hash.Class.Mutable.Internal.ResetableHash (Data.Hash.Internal.OpenSSL.LegacyKeccak_Digest a) instance GHC.TypeNats.KnownNat n => Data.Hash.Class.Mutable.Internal.IncrementalHash (Data.Hash.Internal.OpenSSL.XOF_Digest n a) instance Data.Hash.Class.Mutable.Internal.IncrementalHash (Data.Hash.Internal.OpenSSL.Digest a) instance Data.Hash.Internal.OpenSSL.OpenSslDigest a => Data.Hash.Class.Mutable.Hash (Data.Hash.Internal.OpenSSL.Digest a) instance Data.Hash.Class.Mutable.Internal.ResetableHash (Data.Hash.Internal.OpenSSL.Digest a) instance Data.Typeable.Internal.Typeable a => GHC.Show.Show (Data.Hash.Internal.OpenSSL.Algorithm a) instance GHC.Exception.Type.Exception Data.Hash.Internal.OpenSSL.OpenSslException -- | Blake2 Hash Functions module Data.Hash.Blake2 newtype Blake2b512 Blake2b512 :: ShortByteString -> Blake2b512 newtype Blake2s256 Blake2s256 :: ShortByteString -> Blake2s256 -- | | The code in this module uses internal OpenSSL APIs. It may break -- with new versions of OpenSSL. It may also be broken for existing -- versions of OpenSSL. Portability of the code is unknown. -- -- ONLY USE THIS CODE AFTER YOU HAVE VERIFIED THAT IT WORKS WITH OUR -- VERSION OF OPENSSL. -- -- For details see the file cbits/keccak.c. module Data.Hash.Keccak newtype Keccak256 Keccak256 :: ShortByteString -> Keccak256 newtype Keccak512 Keccak512 :: ShortByteString -> Keccak512 -- | Low-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. finalizeKeccak256Ptr :: Ctx Keccak256 -> Ptr Word8 -> IO () -- | Low-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. finalizeKeccak512Ptr :: Ctx Keccak512 -> Ptr Word8 -> IO () -- | SHA-2 Hash Functions module Data.Hash.SHA2 newtype Sha2_224 Sha2_224 :: ShortByteString -> Sha2_224 newtype Sha2_256 Sha2_256 :: ShortByteString -> Sha2_256 newtype Sha2_384 Sha2_384 :: ShortByteString -> Sha2_384 newtype Sha2_512 Sha2_512 :: ShortByteString -> Sha2_512 newtype Sha2_512_224 Sha2_512_224 :: ShortByteString -> Sha2_512_224 newtype Sha2_512_256 Sha2_512_256 :: ShortByteString -> Sha2_512_256 -- | SHA-3 Hash Functions module Data.Hash.SHA3 newtype Sha3_224 Sha3_224 :: ShortByteString -> Sha3_224 newtype Sha3_256 Sha3_256 :: ShortByteString -> Sha3_256 newtype Sha3_384 Sha3_384 :: ShortByteString -> Sha3_384 newtype Sha3_512 Sha3_512 :: ShortByteString -> Sha3_512 newtype Shake128 (bits :: Natural) Shake128 :: ShortByteString -> Shake128 (bits :: Natural) type Shake128_256 = Shake128 32 newtype Shake256 (bits :: Natural) Shake256 :: ShortByteString -> Shake256 (bits :: Natural) type Shake256_512 = Shake256 64 module Data.Hash.SipHash -- | The Word46 constructor parameters represent the 128 bit key -- in little endian encoding. data SipHashKey SipHashKey :: {-# UNPACK #-} !Word64 -> {-# UNPACK #-} !Word64 -> SipHashKey -- | SipHash with c compression rounds and d finalization -- rounds. -- -- cf. http://cr.yp.to/siphash/siphash-20120918.pdf newtype SipHash (c :: Nat) (d :: Nat) SipHash :: Word64 -> SipHash (c :: Nat) (d :: Nat) -- | SipHash, with recommended default parameters of c=2 and d=4. -- -- The first and second argument is the 128 bit key, represented as two -- 64 bit words. sipHash :: SipHashKey -> Ptr Word8 -> Int -> IO (SipHash 2 4) -- | Generic SipHash with c rounds per block and d finalization rounds. -- -- The first and second argument is the 128 bit key, represented as two -- 64 bit words. sipHashCD :: forall c d. SipHashParam c => SipHashParam d => SipHashKey -> Ptr Word8 -> Int -> IO (SipHash c d) -- | SipHash-2-4 -- -- The first and second argument is the 128 bit key, represented as two -- 64 bit words. sipHash24 :: SipHashKey -> Ptr Word8 -> Int -> IO (SipHash 2 4) -- | SipHash-1-3 -- -- The first and second argument is the 128 bit key, represented as two -- 64 bit words. sipHash13 :: SipHashKey -> Ptr Word8 -> Int -> IO (SipHash 1 3) -- | SipHash-4-8 -- -- The first and second argument is the 128 bit key, represented as two -- 64 bit words. sipHash48 :: SipHashKey -> Ptr Word8 -> Int -> IO (SipHash 4 8) -- | Internal mutable SipHashContext. -- -- The first four arguments are the internal state values <math> -- and the last argument represents the pending bytes from an incomplete -- word of the last chunk of input. data SipHashContext (c :: Nat) (d :: Nat) -- | Initialize a new SipHashContext sipHashInitialize :: SipHashKey -> SipHashContext c d -- | Incrementally add input bytes to an SipHash computation and update the -- internal context. sipHashUpdate :: forall (c :: Nat) (d :: Nat). SipHashParam c => SipHashContext c d -> Ptr Word8 -> Int -> IO (SipHashContext c d) sipHashFinalize :: forall (c :: Nat) (d :: Nat). SipHashParam c => SipHashParam d => SipHashContext c d -> SipHash c d instance GHC.Classes.Ord (Data.Hash.SipHash.SipHash c d) instance GHC.Classes.Eq (Data.Hash.SipHash.SipHash c d) instance GHC.Show.Show (Data.Hash.SipHash.SipHash c d) instance GHC.Classes.Ord Data.Hash.SipHash.SipHashKey instance GHC.Classes.Eq Data.Hash.SipHash.SipHashKey instance GHC.Show.Show Data.Hash.SipHash.SipHashKey instance Data.Hash.SipHash.SipHashRounds n (Data.Hash.SipHash.SlowRounds n) => Data.Hash.SipHash.SipHashParam n instance Data.Hash.SipHash.SipHashRounds 1 'GHC.Types.False instance Data.Hash.SipHash.SipHashRounds 2 'GHC.Types.False instance Data.Hash.SipHash.SipHashRounds 3 'GHC.Types.False instance Data.Hash.SipHash.SipHashRounds 4 'GHC.Types.False instance Data.Hash.SipHash.SipHashRounds 5 'GHC.Types.False instance Data.Hash.SipHash.SipHashRounds 6 'GHC.Types.False instance Data.Hash.SipHash.SipHashRounds 7 'GHC.Types.False instance Data.Hash.SipHash.SipHashRounds 8 'GHC.Types.False instance ((GHC.TypeNats.Internal.CmpNat n 8 Data.Type.Equality.== 'GHC.Types.GT) GHC.Types.~ 'GHC.Types.True, Data.Hash.SipHash.SipHashRounds (n GHC.TypeNats.- 8) t) => Data.Hash.SipHash.SipHashRounds n 'GHC.Types.True instance (Data.Hash.SipHash.SipHashParam c, Data.Hash.SipHash.SipHashParam d) => Data.Hash.Class.Pure.Internal.IncrementalHash (Data.Hash.SipHash.SipHash c d) instance (Data.Hash.SipHash.SipHashParam c, Data.Hash.SipHash.SipHashParam d) => Data.Hash.Class.Pure.Salted.Hash (Data.Hash.SipHash.SipHash c d)