module Crypto.Skein
(
Skein_512_512
, Skein_512_512_Ctx
, Skein_1024_1024
, Skein_1024_1024_Ctx
, Skein_256_256
, Skein_256_256_Ctx
, Key
, skeinMAC
, skeinMAC'
, SkeinMAC (skeinMACCtx)
, Skein_256_128
, Skein_256_128_Ctx
, Skein_256_160
, Skein_256_160_Ctx
, Skein_256_224
, Skein_256_224_Ctx
, Skein_512_128
, Skein_512_128_Ctx
, Skein_512_160
, Skein_512_160_Ctx
, Skein_512_224
, Skein_512_224_Ctx
, Skein_512_256
, Skein_512_256_Ctx
, Skein_512_384
, Skein_512_384_Ctx
, Skein_1024_384
, Skein_1024_384_Ctx
, Skein_1024_512
, Skein_1024_512_Ctx
) where
import Control.Monad (unless)
import Foreign
import Foreign.C
import qualified System.IO.Unsafe as U
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString.Internal as BI
import qualified Data.ByteString.Unsafe as BU
import Data.Serialize
import Data.Tagged (Tagged(..))
import Crypto.Classes
import Crypto.Skein.Internal
type Key = B.ByteString
class SkeinMAC skeinCtx where
skeinMACCtx :: Key -> skeinCtx
skeinMAC :: (SkeinMAC skeinCtx, Hash skeinCtx digest) =>
Key -> L.ByteString -> digest
skeinMAC :: forall skeinCtx digest.
(SkeinMAC skeinCtx, Hash skeinCtx digest) =>
Key -> ByteString -> digest
skeinMAC Key
k = ByteString -> digest
go
where
ctx :: skeinCtx
ctx = forall skeinCtx. SkeinMAC skeinCtx => Key -> skeinCtx
skeinMACCtx Key
k
go :: ByteString -> digest
go = forall {t} {d}. Hash t d => t -> [Key] -> d
go' skeinCtx
ctx forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Key]
L.toChunks
go' :: t -> [Key] -> d
go' t
ctx' [] = forall ctx d. Hash ctx d => ctx -> Key -> d
finalize t
ctx' Key
B.empty
go' t
ctx' [Key
x] = forall ctx d. Hash ctx d => ctx -> Key -> d
finalize t
ctx' Key
x
go' t
ctx' (Key
x:[Key]
xs) = t -> [Key] -> d
go' (forall ctx d. Hash ctx d => ctx -> Key -> ctx
updateCtx t
ctx' Key
x) [Key]
xs
skeinMAC' :: (SkeinMAC skeinCtx, Hash skeinCtx digest) =>
Key -> B.ByteString -> digest
skeinMAC' :: forall skeinCtx digest.
(SkeinMAC skeinCtx, Hash skeinCtx digest) =>
Key -> Key -> digest
skeinMAC' Key
k = Key -> digest
go
where
ctx :: skeinCtx
ctx = forall skeinCtx. SkeinMAC skeinCtx => Key -> skeinCtx
skeinMACCtx Key
k
go :: Key -> digest
go = forall ctx d. Hash ctx d => ctx -> Key -> d
finalize skeinCtx
ctx
initialCtxSkein :: Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein :: forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
bits Ptr internalCtx -> CSize -> IO CInt
init_ internalCtx -> externalCtx
mkCtx =
forall a. IO a -> a
U.unsafePerformIO forall a b. (a -> b) -> a -> b
$
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca forall a b. (a -> b) -> a -> b
$ \Ptr internalCtx
ctx_ptr -> do
IO CInt -> IO ()
check forall a b. (a -> b) -> a -> b
$ Ptr internalCtx -> CSize -> IO CInt
init_ Ptr internalCtx
ctx_ptr CSize
bits
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap internalCtx -> externalCtx
mkCtx forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek Ptr internalCtx
ctx_ptr
updateCtxSkein :: Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> (externalCtx -> B.ByteString -> externalCtx)
updateCtxSkein :: forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt
update externalCtx -> internalCtx
unCtx internalCtx -> externalCtx
mkCtx = \externalCtx
ctx Key
bs ->
forall a. IO a -> a
U.unsafePerformIO forall a b. (a -> b) -> a -> b
$
forall a. Key -> (CStringLen -> IO a) -> IO a
BU.unsafeUseAsCStringLen Key
bs forall a b. (a -> b) -> a -> b
$ \(Ptr CChar
bs_ptr, Int
bs_len) ->
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with (externalCtx -> internalCtx
unCtx externalCtx
ctx) forall a b. (a -> b) -> a -> b
$ \Ptr internalCtx
ctx_ptr -> do
IO CInt -> IO ()
check forall a b. (a -> b) -> a -> b
$ Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt
update Ptr internalCtx
ctx_ptr (forall a b. Ptr a -> Ptr b
castPtr Ptr CChar
bs_ptr) (forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
bs_len)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap internalCtx -> externalCtx
mkCtx forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek Ptr internalCtx
ctx_ptr
finalizeSkein :: Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (B.ByteString -> hash)
-> (externalCtx -> B.ByteString -> hash)
finalizeSkein :: forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
hashLenBytes Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt
update Ptr internalCtx -> Ptr Word8 -> IO CInt
final externalCtx -> internalCtx
unCtx Key -> hash
mkHash = \externalCtx
ctx Key
bs ->
forall a. IO a -> a
U.unsafePerformIO forall a b. (a -> b) -> a -> b
$
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with (externalCtx -> internalCtx
unCtx externalCtx
ctx) forall a b. (a -> b) -> a -> b
$ \Ptr internalCtx
ctx_ptr -> do
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Key -> Bool
B.null Key
bs) forall a b. (a -> b) -> a -> b
$
forall a. Key -> (CStringLen -> IO a) -> IO a
BU.unsafeUseAsCStringLen Key
bs forall a b. (a -> b) -> a -> b
$ \(Ptr CChar
bs_ptr, Int
bs_len) ->
IO CInt -> IO ()
check forall a b. (a -> b) -> a -> b
$ Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt
update Ptr internalCtx
ctx_ptr (forall a b. Ptr a -> Ptr b
castPtr Ptr CChar
bs_ptr) (forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
bs_len)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> hash
mkHash forall a b. (a -> b) -> a -> b
$ Int -> (Ptr Word8 -> IO ()) -> IO Key
BI.create Int
hashLenBytes forall a b. (a -> b) -> a -> b
$ IO CInt -> IO ()
check forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr internalCtx -> Ptr Word8 -> IO CInt
final Ptr internalCtx
ctx_ptr forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. Ptr a -> Ptr b
castPtr
skeinMACCtxSkein :: Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> (Key -> externalCtx)
skeinMACCtxSkein :: forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
bits Ptr internalCtx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
initExt internalCtx -> externalCtx
mkCtx = \Key
key ->
forall a. IO a -> a
U.unsafePerformIO forall a b. (a -> b) -> a -> b
$
forall a. Key -> (CStringLen -> IO a) -> IO a
BU.unsafeUseAsCStringLen Key
key forall a b. (a -> b) -> a -> b
$ \(Ptr CChar
key_ptr, Int
key_len) ->
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca forall a b. (a -> b) -> a -> b
$ \Ptr internalCtx
ctx_ptr -> do
IO CInt -> IO ()
check forall a b. (a -> b) -> a -> b
$ Ptr internalCtx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
initExt Ptr internalCtx
ctx_ptr CSize
bits Word64
sKEIN_SEQUENTIAL (forall a b. Ptr a -> Ptr b
castPtr Ptr CChar
key_ptr) (forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
key_len)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap internalCtx -> externalCtx
mkCtx forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek Ptr internalCtx
ctx_ptr
newtype Skein_256_128_Ctx = S_256_128_Ctx {Skein_256_128_Ctx -> Skein256Ctx
unS_256_128_Ctx :: Skein256Ctx}
newtype Skein_256_128 = S_256_128 B.ByteString deriving (Skein_256_128 -> Skein_256_128 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_256_128 -> Skein_256_128 -> Bool
$c/= :: Skein_256_128 -> Skein_256_128 -> Bool
== :: Skein_256_128 -> Skein_256_128 -> Bool
$c== :: Skein_256_128 -> Skein_256_128 -> Bool
Eq, Eq Skein_256_128
Skein_256_128 -> Skein_256_128 -> Bool
Skein_256_128 -> Skein_256_128 -> Ordering
Skein_256_128 -> Skein_256_128 -> Skein_256_128
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_256_128 -> Skein_256_128 -> Skein_256_128
$cmin :: Skein_256_128 -> Skein_256_128 -> Skein_256_128
max :: Skein_256_128 -> Skein_256_128 -> Skein_256_128
$cmax :: Skein_256_128 -> Skein_256_128 -> Skein_256_128
>= :: Skein_256_128 -> Skein_256_128 -> Bool
$c>= :: Skein_256_128 -> Skein_256_128 -> Bool
> :: Skein_256_128 -> Skein_256_128 -> Bool
$c> :: Skein_256_128 -> Skein_256_128 -> Bool
<= :: Skein_256_128 -> Skein_256_128 -> Bool
$c<= :: Skein_256_128 -> Skein_256_128 -> Bool
< :: Skein_256_128 -> Skein_256_128 -> Bool
$c< :: Skein_256_128 -> Skein_256_128 -> Bool
compare :: Skein_256_128 -> Skein_256_128 -> Ordering
$ccompare :: Skein_256_128 -> Skein_256_128 -> Ordering
Ord)
instance Serialize Skein_256_128 where
put :: Putter Skein_256_128
put (S_256_128 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_256_128
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_256_128
S_256_128 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
16
instance Hash Skein_256_128_Ctx Skein_256_128 where
outputLength :: Tagged Skein_256_128 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
128
blockLength :: Tagged Skein_256_128 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
256
initialCtx :: Skein_256_128_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
128 Ptr Skein256Ctx -> CSize -> IO CInt
skein256Init Skein256Ctx -> Skein_256_128_Ctx
S_256_128_Ctx
updateCtx :: Skein_256_128_Ctx -> Key -> Skein_256_128_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein256Ctx -> Ptr Word8 -> CSize -> IO CInt
skein256Update Skein_256_128_Ctx -> Skein256Ctx
unS_256_128_Ctx Skein256Ctx -> Skein_256_128_Ctx
S_256_128_Ctx
finalize :: Skein_256_128_Ctx -> Key -> Skein_256_128
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
16 Ptr Skein256Ctx -> Ptr Word8 -> CSize -> IO CInt
skein256Update Ptr Skein256Ctx -> Ptr Word8 -> IO CInt
skein256Final Skein_256_128_Ctx -> Skein256Ctx
unS_256_128_Ctx Key -> Skein_256_128
S_256_128
instance SkeinMAC Skein_256_128_Ctx where
skeinMACCtx :: Key -> Skein_256_128_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
128 Ptr Skein256Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein256InitExt Skein256Ctx -> Skein_256_128_Ctx
S_256_128_Ctx
newtype Skein_256_160_Ctx = S_256_160_Ctx {Skein_256_160_Ctx -> Skein256Ctx
unS_256_160_Ctx :: Skein256Ctx}
newtype Skein_256_160 = S_256_160 B.ByteString deriving (Skein_256_160 -> Skein_256_160 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_256_160 -> Skein_256_160 -> Bool
$c/= :: Skein_256_160 -> Skein_256_160 -> Bool
== :: Skein_256_160 -> Skein_256_160 -> Bool
$c== :: Skein_256_160 -> Skein_256_160 -> Bool
Eq, Eq Skein_256_160
Skein_256_160 -> Skein_256_160 -> Bool
Skein_256_160 -> Skein_256_160 -> Ordering
Skein_256_160 -> Skein_256_160 -> Skein_256_160
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_256_160 -> Skein_256_160 -> Skein_256_160
$cmin :: Skein_256_160 -> Skein_256_160 -> Skein_256_160
max :: Skein_256_160 -> Skein_256_160 -> Skein_256_160
$cmax :: Skein_256_160 -> Skein_256_160 -> Skein_256_160
>= :: Skein_256_160 -> Skein_256_160 -> Bool
$c>= :: Skein_256_160 -> Skein_256_160 -> Bool
> :: Skein_256_160 -> Skein_256_160 -> Bool
$c> :: Skein_256_160 -> Skein_256_160 -> Bool
<= :: Skein_256_160 -> Skein_256_160 -> Bool
$c<= :: Skein_256_160 -> Skein_256_160 -> Bool
< :: Skein_256_160 -> Skein_256_160 -> Bool
$c< :: Skein_256_160 -> Skein_256_160 -> Bool
compare :: Skein_256_160 -> Skein_256_160 -> Ordering
$ccompare :: Skein_256_160 -> Skein_256_160 -> Ordering
Ord)
instance Serialize Skein_256_160 where
put :: Putter Skein_256_160
put (S_256_160 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_256_160
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_256_160
S_256_160 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
20
instance Hash Skein_256_160_Ctx Skein_256_160 where
outputLength :: Tagged Skein_256_160 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
160
blockLength :: Tagged Skein_256_160 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
256
initialCtx :: Skein_256_160_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
160 Ptr Skein256Ctx -> CSize -> IO CInt
skein256Init Skein256Ctx -> Skein_256_160_Ctx
S_256_160_Ctx
updateCtx :: Skein_256_160_Ctx -> Key -> Skein_256_160_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein256Ctx -> Ptr Word8 -> CSize -> IO CInt
skein256Update Skein_256_160_Ctx -> Skein256Ctx
unS_256_160_Ctx Skein256Ctx -> Skein_256_160_Ctx
S_256_160_Ctx
finalize :: Skein_256_160_Ctx -> Key -> Skein_256_160
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
20 Ptr Skein256Ctx -> Ptr Word8 -> CSize -> IO CInt
skein256Update Ptr Skein256Ctx -> Ptr Word8 -> IO CInt
skein256Final Skein_256_160_Ctx -> Skein256Ctx
unS_256_160_Ctx Key -> Skein_256_160
S_256_160
instance SkeinMAC Skein_256_160_Ctx where
skeinMACCtx :: Key -> Skein_256_160_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
160 Ptr Skein256Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein256InitExt Skein256Ctx -> Skein_256_160_Ctx
S_256_160_Ctx
newtype Skein_256_224_Ctx = S_256_224_Ctx {Skein_256_224_Ctx -> Skein256Ctx
unS_256_224_Ctx :: Skein256Ctx}
newtype Skein_256_224 = S_256_224 B.ByteString deriving (Skein_256_224 -> Skein_256_224 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_256_224 -> Skein_256_224 -> Bool
$c/= :: Skein_256_224 -> Skein_256_224 -> Bool
== :: Skein_256_224 -> Skein_256_224 -> Bool
$c== :: Skein_256_224 -> Skein_256_224 -> Bool
Eq, Eq Skein_256_224
Skein_256_224 -> Skein_256_224 -> Bool
Skein_256_224 -> Skein_256_224 -> Ordering
Skein_256_224 -> Skein_256_224 -> Skein_256_224
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_256_224 -> Skein_256_224 -> Skein_256_224
$cmin :: Skein_256_224 -> Skein_256_224 -> Skein_256_224
max :: Skein_256_224 -> Skein_256_224 -> Skein_256_224
$cmax :: Skein_256_224 -> Skein_256_224 -> Skein_256_224
>= :: Skein_256_224 -> Skein_256_224 -> Bool
$c>= :: Skein_256_224 -> Skein_256_224 -> Bool
> :: Skein_256_224 -> Skein_256_224 -> Bool
$c> :: Skein_256_224 -> Skein_256_224 -> Bool
<= :: Skein_256_224 -> Skein_256_224 -> Bool
$c<= :: Skein_256_224 -> Skein_256_224 -> Bool
< :: Skein_256_224 -> Skein_256_224 -> Bool
$c< :: Skein_256_224 -> Skein_256_224 -> Bool
compare :: Skein_256_224 -> Skein_256_224 -> Ordering
$ccompare :: Skein_256_224 -> Skein_256_224 -> Ordering
Ord)
instance Serialize Skein_256_224 where
put :: Putter Skein_256_224
put (S_256_224 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_256_224
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_256_224
S_256_224 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
28
instance Hash Skein_256_224_Ctx Skein_256_224 where
outputLength :: Tagged Skein_256_224 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
224
blockLength :: Tagged Skein_256_224 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
256
initialCtx :: Skein_256_224_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
224 Ptr Skein256Ctx -> CSize -> IO CInt
skein256Init Skein256Ctx -> Skein_256_224_Ctx
S_256_224_Ctx
updateCtx :: Skein_256_224_Ctx -> Key -> Skein_256_224_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein256Ctx -> Ptr Word8 -> CSize -> IO CInt
skein256Update Skein_256_224_Ctx -> Skein256Ctx
unS_256_224_Ctx Skein256Ctx -> Skein_256_224_Ctx
S_256_224_Ctx
finalize :: Skein_256_224_Ctx -> Key -> Skein_256_224
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
28 Ptr Skein256Ctx -> Ptr Word8 -> CSize -> IO CInt
skein256Update Ptr Skein256Ctx -> Ptr Word8 -> IO CInt
skein256Final Skein_256_224_Ctx -> Skein256Ctx
unS_256_224_Ctx Key -> Skein_256_224
S_256_224
instance SkeinMAC Skein_256_224_Ctx where
skeinMACCtx :: Key -> Skein_256_224_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
224 Ptr Skein256Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein256InitExt Skein256Ctx -> Skein_256_224_Ctx
S_256_224_Ctx
newtype Skein_256_256_Ctx = S_256_256_Ctx {Skein_256_256_Ctx -> Skein256Ctx
unS_256_256_Ctx :: Skein256Ctx}
newtype Skein_256_256 = S_256_256 B.ByteString deriving (Skein_256_256 -> Skein_256_256 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_256_256 -> Skein_256_256 -> Bool
$c/= :: Skein_256_256 -> Skein_256_256 -> Bool
== :: Skein_256_256 -> Skein_256_256 -> Bool
$c== :: Skein_256_256 -> Skein_256_256 -> Bool
Eq, Eq Skein_256_256
Skein_256_256 -> Skein_256_256 -> Bool
Skein_256_256 -> Skein_256_256 -> Ordering
Skein_256_256 -> Skein_256_256 -> Skein_256_256
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_256_256 -> Skein_256_256 -> Skein_256_256
$cmin :: Skein_256_256 -> Skein_256_256 -> Skein_256_256
max :: Skein_256_256 -> Skein_256_256 -> Skein_256_256
$cmax :: Skein_256_256 -> Skein_256_256 -> Skein_256_256
>= :: Skein_256_256 -> Skein_256_256 -> Bool
$c>= :: Skein_256_256 -> Skein_256_256 -> Bool
> :: Skein_256_256 -> Skein_256_256 -> Bool
$c> :: Skein_256_256 -> Skein_256_256 -> Bool
<= :: Skein_256_256 -> Skein_256_256 -> Bool
$c<= :: Skein_256_256 -> Skein_256_256 -> Bool
< :: Skein_256_256 -> Skein_256_256 -> Bool
$c< :: Skein_256_256 -> Skein_256_256 -> Bool
compare :: Skein_256_256 -> Skein_256_256 -> Ordering
$ccompare :: Skein_256_256 -> Skein_256_256 -> Ordering
Ord)
instance Serialize Skein_256_256 where
put :: Putter Skein_256_256
put (S_256_256 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_256_256
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_256_256
S_256_256 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
32
instance Hash Skein_256_256_Ctx Skein_256_256 where
outputLength :: Tagged Skein_256_256 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
256
blockLength :: Tagged Skein_256_256 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
256
initialCtx :: Skein_256_256_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
256 Ptr Skein256Ctx -> CSize -> IO CInt
skein256Init Skein256Ctx -> Skein_256_256_Ctx
S_256_256_Ctx
updateCtx :: Skein_256_256_Ctx -> Key -> Skein_256_256_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein256Ctx -> Ptr Word8 -> CSize -> IO CInt
skein256Update Skein_256_256_Ctx -> Skein256Ctx
unS_256_256_Ctx Skein256Ctx -> Skein_256_256_Ctx
S_256_256_Ctx
finalize :: Skein_256_256_Ctx -> Key -> Skein_256_256
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
32 Ptr Skein256Ctx -> Ptr Word8 -> CSize -> IO CInt
skein256Update Ptr Skein256Ctx -> Ptr Word8 -> IO CInt
skein256Final Skein_256_256_Ctx -> Skein256Ctx
unS_256_256_Ctx Key -> Skein_256_256
S_256_256
instance SkeinMAC Skein_256_256_Ctx where
skeinMACCtx :: Key -> Skein_256_256_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
256 Ptr Skein256Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein256InitExt Skein256Ctx -> Skein_256_256_Ctx
S_256_256_Ctx
newtype Skein_512_128_Ctx = S_512_128_Ctx {Skein_512_128_Ctx -> Skein512Ctx
unS_512_128_Ctx :: Skein512Ctx}
newtype Skein_512_128 = S_512_128 B.ByteString deriving (Skein_512_128 -> Skein_512_128 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_512_128 -> Skein_512_128 -> Bool
$c/= :: Skein_512_128 -> Skein_512_128 -> Bool
== :: Skein_512_128 -> Skein_512_128 -> Bool
$c== :: Skein_512_128 -> Skein_512_128 -> Bool
Eq, Eq Skein_512_128
Skein_512_128 -> Skein_512_128 -> Bool
Skein_512_128 -> Skein_512_128 -> Ordering
Skein_512_128 -> Skein_512_128 -> Skein_512_128
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_512_128 -> Skein_512_128 -> Skein_512_128
$cmin :: Skein_512_128 -> Skein_512_128 -> Skein_512_128
max :: Skein_512_128 -> Skein_512_128 -> Skein_512_128
$cmax :: Skein_512_128 -> Skein_512_128 -> Skein_512_128
>= :: Skein_512_128 -> Skein_512_128 -> Bool
$c>= :: Skein_512_128 -> Skein_512_128 -> Bool
> :: Skein_512_128 -> Skein_512_128 -> Bool
$c> :: Skein_512_128 -> Skein_512_128 -> Bool
<= :: Skein_512_128 -> Skein_512_128 -> Bool
$c<= :: Skein_512_128 -> Skein_512_128 -> Bool
< :: Skein_512_128 -> Skein_512_128 -> Bool
$c< :: Skein_512_128 -> Skein_512_128 -> Bool
compare :: Skein_512_128 -> Skein_512_128 -> Ordering
$ccompare :: Skein_512_128 -> Skein_512_128 -> Ordering
Ord)
instance Serialize Skein_512_128 where
put :: Putter Skein_512_128
put (S_512_128 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_512_128
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_512_128
S_512_128 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
16
instance Hash Skein_512_128_Ctx Skein_512_128 where
outputLength :: Tagged Skein_512_128 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
128
blockLength :: Tagged Skein_512_128 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
512
initialCtx :: Skein_512_128_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
128 Ptr Skein512Ctx -> CSize -> IO CInt
skein512Init Skein512Ctx -> Skein_512_128_Ctx
S_512_128_Ctx
updateCtx :: Skein_512_128_Ctx -> Key -> Skein_512_128_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Skein_512_128_Ctx -> Skein512Ctx
unS_512_128_Ctx Skein512Ctx -> Skein_512_128_Ctx
S_512_128_Ctx
finalize :: Skein_512_128_Ctx -> Key -> Skein_512_128
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
16 Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Ptr Skein512Ctx -> Ptr Word8 -> IO CInt
skein512Final Skein_512_128_Ctx -> Skein512Ctx
unS_512_128_Ctx Key -> Skein_512_128
S_512_128
instance SkeinMAC Skein_512_128_Ctx where
skeinMACCtx :: Key -> Skein_512_128_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
128 Ptr Skein512Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein512InitExt Skein512Ctx -> Skein_512_128_Ctx
S_512_128_Ctx
newtype Skein_512_160_Ctx = S_512_160_Ctx {Skein_512_160_Ctx -> Skein512Ctx
unS_512_160_Ctx :: Skein512Ctx}
newtype Skein_512_160 = S_512_160 B.ByteString deriving (Skein_512_160 -> Skein_512_160 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_512_160 -> Skein_512_160 -> Bool
$c/= :: Skein_512_160 -> Skein_512_160 -> Bool
== :: Skein_512_160 -> Skein_512_160 -> Bool
$c== :: Skein_512_160 -> Skein_512_160 -> Bool
Eq, Eq Skein_512_160
Skein_512_160 -> Skein_512_160 -> Bool
Skein_512_160 -> Skein_512_160 -> Ordering
Skein_512_160 -> Skein_512_160 -> Skein_512_160
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_512_160 -> Skein_512_160 -> Skein_512_160
$cmin :: Skein_512_160 -> Skein_512_160 -> Skein_512_160
max :: Skein_512_160 -> Skein_512_160 -> Skein_512_160
$cmax :: Skein_512_160 -> Skein_512_160 -> Skein_512_160
>= :: Skein_512_160 -> Skein_512_160 -> Bool
$c>= :: Skein_512_160 -> Skein_512_160 -> Bool
> :: Skein_512_160 -> Skein_512_160 -> Bool
$c> :: Skein_512_160 -> Skein_512_160 -> Bool
<= :: Skein_512_160 -> Skein_512_160 -> Bool
$c<= :: Skein_512_160 -> Skein_512_160 -> Bool
< :: Skein_512_160 -> Skein_512_160 -> Bool
$c< :: Skein_512_160 -> Skein_512_160 -> Bool
compare :: Skein_512_160 -> Skein_512_160 -> Ordering
$ccompare :: Skein_512_160 -> Skein_512_160 -> Ordering
Ord)
instance Serialize Skein_512_160 where
put :: Putter Skein_512_160
put (S_512_160 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_512_160
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_512_160
S_512_160 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
20
instance Hash Skein_512_160_Ctx Skein_512_160 where
outputLength :: Tagged Skein_512_160 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
160
blockLength :: Tagged Skein_512_160 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
512
initialCtx :: Skein_512_160_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
160 Ptr Skein512Ctx -> CSize -> IO CInt
skein512Init Skein512Ctx -> Skein_512_160_Ctx
S_512_160_Ctx
updateCtx :: Skein_512_160_Ctx -> Key -> Skein_512_160_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Skein_512_160_Ctx -> Skein512Ctx
unS_512_160_Ctx Skein512Ctx -> Skein_512_160_Ctx
S_512_160_Ctx
finalize :: Skein_512_160_Ctx -> Key -> Skein_512_160
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
20 Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Ptr Skein512Ctx -> Ptr Word8 -> IO CInt
skein512Final Skein_512_160_Ctx -> Skein512Ctx
unS_512_160_Ctx Key -> Skein_512_160
S_512_160
instance SkeinMAC Skein_512_160_Ctx where
skeinMACCtx :: Key -> Skein_512_160_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
160 Ptr Skein512Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein512InitExt Skein512Ctx -> Skein_512_160_Ctx
S_512_160_Ctx
newtype Skein_512_224_Ctx = S_512_224_Ctx {Skein_512_224_Ctx -> Skein512Ctx
unS_512_224_Ctx :: Skein512Ctx}
newtype Skein_512_224 = S_512_224 B.ByteString deriving (Skein_512_224 -> Skein_512_224 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_512_224 -> Skein_512_224 -> Bool
$c/= :: Skein_512_224 -> Skein_512_224 -> Bool
== :: Skein_512_224 -> Skein_512_224 -> Bool
$c== :: Skein_512_224 -> Skein_512_224 -> Bool
Eq, Eq Skein_512_224
Skein_512_224 -> Skein_512_224 -> Bool
Skein_512_224 -> Skein_512_224 -> Ordering
Skein_512_224 -> Skein_512_224 -> Skein_512_224
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_512_224 -> Skein_512_224 -> Skein_512_224
$cmin :: Skein_512_224 -> Skein_512_224 -> Skein_512_224
max :: Skein_512_224 -> Skein_512_224 -> Skein_512_224
$cmax :: Skein_512_224 -> Skein_512_224 -> Skein_512_224
>= :: Skein_512_224 -> Skein_512_224 -> Bool
$c>= :: Skein_512_224 -> Skein_512_224 -> Bool
> :: Skein_512_224 -> Skein_512_224 -> Bool
$c> :: Skein_512_224 -> Skein_512_224 -> Bool
<= :: Skein_512_224 -> Skein_512_224 -> Bool
$c<= :: Skein_512_224 -> Skein_512_224 -> Bool
< :: Skein_512_224 -> Skein_512_224 -> Bool
$c< :: Skein_512_224 -> Skein_512_224 -> Bool
compare :: Skein_512_224 -> Skein_512_224 -> Ordering
$ccompare :: Skein_512_224 -> Skein_512_224 -> Ordering
Ord)
instance Serialize Skein_512_224 where
put :: Putter Skein_512_224
put (S_512_224 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_512_224
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_512_224
S_512_224 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
28
instance Hash Skein_512_224_Ctx Skein_512_224 where
outputLength :: Tagged Skein_512_224 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
224
blockLength :: Tagged Skein_512_224 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
512
initialCtx :: Skein_512_224_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
224 Ptr Skein512Ctx -> CSize -> IO CInt
skein512Init Skein512Ctx -> Skein_512_224_Ctx
S_512_224_Ctx
updateCtx :: Skein_512_224_Ctx -> Key -> Skein_512_224_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Skein_512_224_Ctx -> Skein512Ctx
unS_512_224_Ctx Skein512Ctx -> Skein_512_224_Ctx
S_512_224_Ctx
finalize :: Skein_512_224_Ctx -> Key -> Skein_512_224
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
28 Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Ptr Skein512Ctx -> Ptr Word8 -> IO CInt
skein512Final Skein_512_224_Ctx -> Skein512Ctx
unS_512_224_Ctx Key -> Skein_512_224
S_512_224
instance SkeinMAC Skein_512_224_Ctx where
skeinMACCtx :: Key -> Skein_512_224_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
224 Ptr Skein512Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein512InitExt Skein512Ctx -> Skein_512_224_Ctx
S_512_224_Ctx
newtype Skein_512_256_Ctx = S_512_256_Ctx {Skein_512_256_Ctx -> Skein512Ctx
unS_512_256_Ctx :: Skein512Ctx}
newtype Skein_512_256 = S_512_256 B.ByteString deriving (Skein_512_256 -> Skein_512_256 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_512_256 -> Skein_512_256 -> Bool
$c/= :: Skein_512_256 -> Skein_512_256 -> Bool
== :: Skein_512_256 -> Skein_512_256 -> Bool
$c== :: Skein_512_256 -> Skein_512_256 -> Bool
Eq, Eq Skein_512_256
Skein_512_256 -> Skein_512_256 -> Bool
Skein_512_256 -> Skein_512_256 -> Ordering
Skein_512_256 -> Skein_512_256 -> Skein_512_256
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_512_256 -> Skein_512_256 -> Skein_512_256
$cmin :: Skein_512_256 -> Skein_512_256 -> Skein_512_256
max :: Skein_512_256 -> Skein_512_256 -> Skein_512_256
$cmax :: Skein_512_256 -> Skein_512_256 -> Skein_512_256
>= :: Skein_512_256 -> Skein_512_256 -> Bool
$c>= :: Skein_512_256 -> Skein_512_256 -> Bool
> :: Skein_512_256 -> Skein_512_256 -> Bool
$c> :: Skein_512_256 -> Skein_512_256 -> Bool
<= :: Skein_512_256 -> Skein_512_256 -> Bool
$c<= :: Skein_512_256 -> Skein_512_256 -> Bool
< :: Skein_512_256 -> Skein_512_256 -> Bool
$c< :: Skein_512_256 -> Skein_512_256 -> Bool
compare :: Skein_512_256 -> Skein_512_256 -> Ordering
$ccompare :: Skein_512_256 -> Skein_512_256 -> Ordering
Ord)
instance Serialize Skein_512_256 where
put :: Putter Skein_512_256
put (S_512_256 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_512_256
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_512_256
S_512_256 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
32
instance Hash Skein_512_256_Ctx Skein_512_256 where
outputLength :: Tagged Skein_512_256 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
256
blockLength :: Tagged Skein_512_256 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
512
initialCtx :: Skein_512_256_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
256 Ptr Skein512Ctx -> CSize -> IO CInt
skein512Init Skein512Ctx -> Skein_512_256_Ctx
S_512_256_Ctx
updateCtx :: Skein_512_256_Ctx -> Key -> Skein_512_256_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Skein_512_256_Ctx -> Skein512Ctx
unS_512_256_Ctx Skein512Ctx -> Skein_512_256_Ctx
S_512_256_Ctx
finalize :: Skein_512_256_Ctx -> Key -> Skein_512_256
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
32 Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Ptr Skein512Ctx -> Ptr Word8 -> IO CInt
skein512Final Skein_512_256_Ctx -> Skein512Ctx
unS_512_256_Ctx Key -> Skein_512_256
S_512_256
instance SkeinMAC Skein_512_256_Ctx where
skeinMACCtx :: Key -> Skein_512_256_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
256 Ptr Skein512Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein512InitExt Skein512Ctx -> Skein_512_256_Ctx
S_512_256_Ctx
newtype Skein_512_384_Ctx = S_512_384_Ctx {Skein_512_384_Ctx -> Skein512Ctx
unS_512_384_Ctx :: Skein512Ctx}
newtype Skein_512_384 = S_512_384 B.ByteString deriving (Skein_512_384 -> Skein_512_384 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_512_384 -> Skein_512_384 -> Bool
$c/= :: Skein_512_384 -> Skein_512_384 -> Bool
== :: Skein_512_384 -> Skein_512_384 -> Bool
$c== :: Skein_512_384 -> Skein_512_384 -> Bool
Eq, Eq Skein_512_384
Skein_512_384 -> Skein_512_384 -> Bool
Skein_512_384 -> Skein_512_384 -> Ordering
Skein_512_384 -> Skein_512_384 -> Skein_512_384
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_512_384 -> Skein_512_384 -> Skein_512_384
$cmin :: Skein_512_384 -> Skein_512_384 -> Skein_512_384
max :: Skein_512_384 -> Skein_512_384 -> Skein_512_384
$cmax :: Skein_512_384 -> Skein_512_384 -> Skein_512_384
>= :: Skein_512_384 -> Skein_512_384 -> Bool
$c>= :: Skein_512_384 -> Skein_512_384 -> Bool
> :: Skein_512_384 -> Skein_512_384 -> Bool
$c> :: Skein_512_384 -> Skein_512_384 -> Bool
<= :: Skein_512_384 -> Skein_512_384 -> Bool
$c<= :: Skein_512_384 -> Skein_512_384 -> Bool
< :: Skein_512_384 -> Skein_512_384 -> Bool
$c< :: Skein_512_384 -> Skein_512_384 -> Bool
compare :: Skein_512_384 -> Skein_512_384 -> Ordering
$ccompare :: Skein_512_384 -> Skein_512_384 -> Ordering
Ord)
instance Serialize Skein_512_384 where
put :: Putter Skein_512_384
put (S_512_384 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_512_384
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_512_384
S_512_384 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
48
instance Hash Skein_512_384_Ctx Skein_512_384 where
outputLength :: Tagged Skein_512_384 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
384
blockLength :: Tagged Skein_512_384 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
512
initialCtx :: Skein_512_384_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
384 Ptr Skein512Ctx -> CSize -> IO CInt
skein512Init Skein512Ctx -> Skein_512_384_Ctx
S_512_384_Ctx
updateCtx :: Skein_512_384_Ctx -> Key -> Skein_512_384_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Skein_512_384_Ctx -> Skein512Ctx
unS_512_384_Ctx Skein512Ctx -> Skein_512_384_Ctx
S_512_384_Ctx
finalize :: Skein_512_384_Ctx -> Key -> Skein_512_384
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
48 Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Ptr Skein512Ctx -> Ptr Word8 -> IO CInt
skein512Final Skein_512_384_Ctx -> Skein512Ctx
unS_512_384_Ctx Key -> Skein_512_384
S_512_384
instance SkeinMAC Skein_512_384_Ctx where
skeinMACCtx :: Key -> Skein_512_384_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
384 Ptr Skein512Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein512InitExt Skein512Ctx -> Skein_512_384_Ctx
S_512_384_Ctx
newtype Skein_512_512_Ctx = S_512_512_Ctx {Skein_512_512_Ctx -> Skein512Ctx
unS_512_512_Ctx :: Skein512Ctx}
newtype Skein_512_512 = S_512_512 B.ByteString deriving (Skein_512_512 -> Skein_512_512 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_512_512 -> Skein_512_512 -> Bool
$c/= :: Skein_512_512 -> Skein_512_512 -> Bool
== :: Skein_512_512 -> Skein_512_512 -> Bool
$c== :: Skein_512_512 -> Skein_512_512 -> Bool
Eq, Eq Skein_512_512
Skein_512_512 -> Skein_512_512 -> Bool
Skein_512_512 -> Skein_512_512 -> Ordering
Skein_512_512 -> Skein_512_512 -> Skein_512_512
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_512_512 -> Skein_512_512 -> Skein_512_512
$cmin :: Skein_512_512 -> Skein_512_512 -> Skein_512_512
max :: Skein_512_512 -> Skein_512_512 -> Skein_512_512
$cmax :: Skein_512_512 -> Skein_512_512 -> Skein_512_512
>= :: Skein_512_512 -> Skein_512_512 -> Bool
$c>= :: Skein_512_512 -> Skein_512_512 -> Bool
> :: Skein_512_512 -> Skein_512_512 -> Bool
$c> :: Skein_512_512 -> Skein_512_512 -> Bool
<= :: Skein_512_512 -> Skein_512_512 -> Bool
$c<= :: Skein_512_512 -> Skein_512_512 -> Bool
< :: Skein_512_512 -> Skein_512_512 -> Bool
$c< :: Skein_512_512 -> Skein_512_512 -> Bool
compare :: Skein_512_512 -> Skein_512_512 -> Ordering
$ccompare :: Skein_512_512 -> Skein_512_512 -> Ordering
Ord)
instance Serialize Skein_512_512 where
put :: Putter Skein_512_512
put (S_512_512 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_512_512
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_512_512
S_512_512 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
64
instance Hash Skein_512_512_Ctx Skein_512_512 where
outputLength :: Tagged Skein_512_512 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
512
blockLength :: Tagged Skein_512_512 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
512
initialCtx :: Skein_512_512_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
512 Ptr Skein512Ctx -> CSize -> IO CInt
skein512Init Skein512Ctx -> Skein_512_512_Ctx
S_512_512_Ctx
updateCtx :: Skein_512_512_Ctx -> Key -> Skein_512_512_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Skein_512_512_Ctx -> Skein512Ctx
unS_512_512_Ctx Skein512Ctx -> Skein_512_512_Ctx
S_512_512_Ctx
finalize :: Skein_512_512_Ctx -> Key -> Skein_512_512
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
64 Ptr Skein512Ctx -> Ptr Word8 -> CSize -> IO CInt
skein512Update Ptr Skein512Ctx -> Ptr Word8 -> IO CInt
skein512Final Skein_512_512_Ctx -> Skein512Ctx
unS_512_512_Ctx Key -> Skein_512_512
S_512_512
instance SkeinMAC Skein_512_512_Ctx where
skeinMACCtx :: Key -> Skein_512_512_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
512 Ptr Skein512Ctx -> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein512InitExt Skein512Ctx -> Skein_512_512_Ctx
S_512_512_Ctx
newtype Skein_1024_384_Ctx = S_1024_384_Ctx {Skein_1024_384_Ctx -> Skein1024Ctx
unS_1024_384_Ctx :: Skein1024Ctx}
newtype Skein_1024_384 = S_1024_384 B.ByteString deriving (Skein_1024_384 -> Skein_1024_384 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_1024_384 -> Skein_1024_384 -> Bool
$c/= :: Skein_1024_384 -> Skein_1024_384 -> Bool
== :: Skein_1024_384 -> Skein_1024_384 -> Bool
$c== :: Skein_1024_384 -> Skein_1024_384 -> Bool
Eq, Eq Skein_1024_384
Skein_1024_384 -> Skein_1024_384 -> Bool
Skein_1024_384 -> Skein_1024_384 -> Ordering
Skein_1024_384 -> Skein_1024_384 -> Skein_1024_384
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_1024_384 -> Skein_1024_384 -> Skein_1024_384
$cmin :: Skein_1024_384 -> Skein_1024_384 -> Skein_1024_384
max :: Skein_1024_384 -> Skein_1024_384 -> Skein_1024_384
$cmax :: Skein_1024_384 -> Skein_1024_384 -> Skein_1024_384
>= :: Skein_1024_384 -> Skein_1024_384 -> Bool
$c>= :: Skein_1024_384 -> Skein_1024_384 -> Bool
> :: Skein_1024_384 -> Skein_1024_384 -> Bool
$c> :: Skein_1024_384 -> Skein_1024_384 -> Bool
<= :: Skein_1024_384 -> Skein_1024_384 -> Bool
$c<= :: Skein_1024_384 -> Skein_1024_384 -> Bool
< :: Skein_1024_384 -> Skein_1024_384 -> Bool
$c< :: Skein_1024_384 -> Skein_1024_384 -> Bool
compare :: Skein_1024_384 -> Skein_1024_384 -> Ordering
$ccompare :: Skein_1024_384 -> Skein_1024_384 -> Ordering
Ord)
instance Serialize Skein_1024_384 where
put :: Putter Skein_1024_384
put (S_1024_384 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_1024_384
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_1024_384
S_1024_384 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
48
instance Hash Skein_1024_384_Ctx Skein_1024_384 where
outputLength :: Tagged Skein_1024_384 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
384
blockLength :: Tagged Skein_1024_384 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
1024
initialCtx :: Skein_1024_384_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
384 Ptr Skein1024Ctx -> CSize -> IO CInt
skein1024Init Skein1024Ctx -> Skein_1024_384_Ctx
S_1024_384_Ctx
updateCtx :: Skein_1024_384_Ctx -> Key -> Skein_1024_384_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein1024Ctx -> Ptr Word8 -> CSize -> IO CInt
skein1024Update Skein_1024_384_Ctx -> Skein1024Ctx
unS_1024_384_Ctx Skein1024Ctx -> Skein_1024_384_Ctx
S_1024_384_Ctx
finalize :: Skein_1024_384_Ctx -> Key -> Skein_1024_384
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
48 Ptr Skein1024Ctx -> Ptr Word8 -> CSize -> IO CInt
skein1024Update Ptr Skein1024Ctx -> Ptr Word8 -> IO CInt
skein1024Final Skein_1024_384_Ctx -> Skein1024Ctx
unS_1024_384_Ctx Key -> Skein_1024_384
S_1024_384
instance SkeinMAC Skein_1024_384_Ctx where
skeinMACCtx :: Key -> Skein_1024_384_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
384 Ptr Skein1024Ctx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein1024InitExt Skein1024Ctx -> Skein_1024_384_Ctx
S_1024_384_Ctx
newtype Skein_1024_512_Ctx = S_1024_512_Ctx {Skein_1024_512_Ctx -> Skein1024Ctx
unS_1024_512_Ctx :: Skein1024Ctx}
newtype Skein_1024_512 = S_1024_512 B.ByteString deriving (Skein_1024_512 -> Skein_1024_512 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_1024_512 -> Skein_1024_512 -> Bool
$c/= :: Skein_1024_512 -> Skein_1024_512 -> Bool
== :: Skein_1024_512 -> Skein_1024_512 -> Bool
$c== :: Skein_1024_512 -> Skein_1024_512 -> Bool
Eq, Eq Skein_1024_512
Skein_1024_512 -> Skein_1024_512 -> Bool
Skein_1024_512 -> Skein_1024_512 -> Ordering
Skein_1024_512 -> Skein_1024_512 -> Skein_1024_512
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_1024_512 -> Skein_1024_512 -> Skein_1024_512
$cmin :: Skein_1024_512 -> Skein_1024_512 -> Skein_1024_512
max :: Skein_1024_512 -> Skein_1024_512 -> Skein_1024_512
$cmax :: Skein_1024_512 -> Skein_1024_512 -> Skein_1024_512
>= :: Skein_1024_512 -> Skein_1024_512 -> Bool
$c>= :: Skein_1024_512 -> Skein_1024_512 -> Bool
> :: Skein_1024_512 -> Skein_1024_512 -> Bool
$c> :: Skein_1024_512 -> Skein_1024_512 -> Bool
<= :: Skein_1024_512 -> Skein_1024_512 -> Bool
$c<= :: Skein_1024_512 -> Skein_1024_512 -> Bool
< :: Skein_1024_512 -> Skein_1024_512 -> Bool
$c< :: Skein_1024_512 -> Skein_1024_512 -> Bool
compare :: Skein_1024_512 -> Skein_1024_512 -> Ordering
$ccompare :: Skein_1024_512 -> Skein_1024_512 -> Ordering
Ord)
instance Serialize Skein_1024_512 where
put :: Putter Skein_1024_512
put (S_1024_512 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_1024_512
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_1024_512
S_1024_512 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
64
instance Hash Skein_1024_512_Ctx Skein_1024_512 where
outputLength :: Tagged Skein_1024_512 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
512
blockLength :: Tagged Skein_1024_512 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
1024
initialCtx :: Skein_1024_512_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
512 Ptr Skein1024Ctx -> CSize -> IO CInt
skein1024Init Skein1024Ctx -> Skein_1024_512_Ctx
S_1024_512_Ctx
updateCtx :: Skein_1024_512_Ctx -> Key -> Skein_1024_512_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein1024Ctx -> Ptr Word8 -> CSize -> IO CInt
skein1024Update Skein_1024_512_Ctx -> Skein1024Ctx
unS_1024_512_Ctx Skein1024Ctx -> Skein_1024_512_Ctx
S_1024_512_Ctx
finalize :: Skein_1024_512_Ctx -> Key -> Skein_1024_512
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
64 Ptr Skein1024Ctx -> Ptr Word8 -> CSize -> IO CInt
skein1024Update Ptr Skein1024Ctx -> Ptr Word8 -> IO CInt
skein1024Final Skein_1024_512_Ctx -> Skein1024Ctx
unS_1024_512_Ctx Key -> Skein_1024_512
S_1024_512
instance SkeinMAC Skein_1024_512_Ctx where
skeinMACCtx :: Key -> Skein_1024_512_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
512 Ptr Skein1024Ctx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein1024InitExt Skein1024Ctx -> Skein_1024_512_Ctx
S_1024_512_Ctx
newtype Skein_1024_1024_Ctx = S_1024_1024_Ctx {Skein_1024_1024_Ctx -> Skein1024Ctx
unS_1024_1024_Ctx :: Skein1024Ctx}
newtype Skein_1024_1024 = S_1024_1024 B.ByteString deriving (Skein_1024_1024 -> Skein_1024_1024 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
$c/= :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
== :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
$c== :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
Eq, Eq Skein_1024_1024
Skein_1024_1024 -> Skein_1024_1024 -> Bool
Skein_1024_1024 -> Skein_1024_1024 -> Ordering
Skein_1024_1024 -> Skein_1024_1024 -> Skein_1024_1024
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Skein_1024_1024 -> Skein_1024_1024 -> Skein_1024_1024
$cmin :: Skein_1024_1024 -> Skein_1024_1024 -> Skein_1024_1024
max :: Skein_1024_1024 -> Skein_1024_1024 -> Skein_1024_1024
$cmax :: Skein_1024_1024 -> Skein_1024_1024 -> Skein_1024_1024
>= :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
$c>= :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
> :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
$c> :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
<= :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
$c<= :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
< :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
$c< :: Skein_1024_1024 -> Skein_1024_1024 -> Bool
compare :: Skein_1024_1024 -> Skein_1024_1024 -> Ordering
$ccompare :: Skein_1024_1024 -> Skein_1024_1024 -> Ordering
Ord)
instance Serialize Skein_1024_1024 where
put :: Putter Skein_1024_1024
put (S_1024_1024 Key
bs) = Putter Key
putByteString Key
bs
get :: Get Skein_1024_1024
get = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Key -> Skein_1024_1024
S_1024_1024 forall a b. (a -> b) -> a -> b
$ Int -> Get Key
getByteString Int
128
instance Hash Skein_1024_1024_Ctx Skein_1024_1024 where
outputLength :: Tagged Skein_1024_1024 Int
outputLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
1024
blockLength :: Tagged Skein_1024_1024 Int
blockLength = forall {k} (s :: k) b. b -> Tagged s b
Tagged Int
1024
initialCtx :: Skein_1024_1024_Ctx
initialCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> externalCtx
initialCtxSkein CSize
1024 Ptr Skein1024Ctx -> CSize -> IO CInt
skein1024Init Skein1024Ctx -> Skein_1024_1024_Ctx
S_1024_1024_Ctx
updateCtx :: Skein_1024_1024_Ctx -> Key -> Skein_1024_1024_Ctx
updateCtx = forall internalCtx externalCtx.
Storable internalCtx =>
(Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (externalCtx -> internalCtx)
-> (internalCtx -> externalCtx)
-> externalCtx
-> Key
-> externalCtx
updateCtxSkein Ptr Skein1024Ctx -> Ptr Word8 -> CSize -> IO CInt
skein1024Update Skein_1024_1024_Ctx -> Skein1024Ctx
unS_1024_1024_Ctx Skein1024Ctx -> Skein_1024_1024_Ctx
S_1024_1024_Ctx
finalize :: Skein_1024_1024_Ctx -> Key -> Skein_1024_1024
finalize = forall internalCtx externalCtx hash.
Storable internalCtx =>
Int
-> (Ptr internalCtx -> Ptr Word8 -> CSize -> IO CInt)
-> (Ptr internalCtx -> Ptr Word8 -> IO CInt)
-> (externalCtx -> internalCtx)
-> (Key -> hash)
-> externalCtx
-> Key
-> hash
finalizeSkein Int
128 Ptr Skein1024Ctx -> Ptr Word8 -> CSize -> IO CInt
skein1024Update Ptr Skein1024Ctx -> Ptr Word8 -> IO CInt
skein1024Final Skein_1024_1024_Ctx -> Skein1024Ctx
unS_1024_1024_Ctx Key -> Skein_1024_1024
S_1024_1024
instance SkeinMAC Skein_1024_1024_Ctx where
skeinMACCtx :: Key -> Skein_1024_1024_Ctx
skeinMACCtx = forall internalCtx externalCtx.
Storable internalCtx =>
CSize
-> (Ptr internalCtx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt)
-> (internalCtx -> externalCtx)
-> Key
-> externalCtx
skeinMACCtxSkein CSize
1024 Ptr Skein1024Ctx
-> CSize -> Word64 -> Ptr Word8 -> CSize -> IO CInt
skein1024InitExt Skein1024Ctx -> Skein_1024_1024_Ctx
S_1024_1024_Ctx