Visitar URL original
Crypto.Threefish
threefish-0.2.6: The Threefish block cipher and the Skein hash function for Haskell.
Safe HaskellNone
LanguageHaskell2010

Crypto.Threefish

Description

256 and 512 bit variants of the Threefish block cipher used as the foundation of the Skein hash function.

Synopsis

Documentation

data Threefish256 Source #

256 bit Threefish block cipher.

Instances

Instances details
Serialize Threefish256 Source # 
Instance details

Defined in Crypto.Threefish.Threefish256

BlockCipher Threefish256 Source # 
Instance details

Defined in Crypto.Threefish.Threefish256

Methods

blockSize :: Tagged Threefish256 BitLength #

encryptBlock :: Threefish256 -> ByteString -> ByteString #

decryptBlock :: Threefish256 -> ByteString -> ByteString #

buildKey :: ByteString -> Maybe Threefish256 #

keyLength :: Tagged Threefish256 BitLength #

ecb :: Threefish256 -> ByteString -> ByteString #

unEcb :: Threefish256 -> ByteString -> ByteString #

cbc :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

unCbc :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

ctr :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

unCtr :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

ctrLazy :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

unCtrLazy :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

cfb :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

unCfb :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

ofb :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

unOfb :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

cbcLazy :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

unCbcLazy :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

sivLazy :: Threefish256 -> Threefish256 -> [ByteString] -> ByteString -> Maybe ByteString #

unSivLazy :: Threefish256 -> Threefish256 -> [ByteString] -> ByteString -> Maybe ByteString #

siv :: Threefish256 -> Threefish256 -> [ByteString] -> ByteString -> Maybe ByteString #

unSiv :: Threefish256 -> Threefish256 -> [ByteString] -> ByteString -> Maybe ByteString #

ecbLazy :: Threefish256 -> ByteString -> ByteString #

unEcbLazy :: Threefish256 -> ByteString -> ByteString #

cfbLazy :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

unCfbLazy :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

ofbLazy :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

unOfbLazy :: Threefish256 -> IV Threefish256 -> ByteString -> (ByteString, IV Threefish256) #

Threefish Block256 Threefish256 Source # 
Instance details

Defined in Crypto.Threefish

data Threefish512 Source #

512 bit Threefish block cipher.

Instances

Instances details
Serialize Threefish512 Source # 
Instance details

Defined in Crypto.Threefish.Threefish512

BlockCipher Threefish512 Source # 
Instance details

Defined in Crypto.Threefish.Threefish512

Methods

blockSize :: Tagged Threefish512 BitLength #

encryptBlock :: Threefish512 -> ByteString -> ByteString #

decryptBlock :: Threefish512 -> ByteString -> ByteString #

buildKey :: ByteString -> Maybe Threefish512 #

keyLength :: Tagged Threefish512 BitLength #

ecb :: Threefish512 -> ByteString -> ByteString #

unEcb :: Threefish512 -> ByteString -> ByteString #

cbc :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

unCbc :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

ctr :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

unCtr :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

ctrLazy :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

unCtrLazy :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

cfb :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

unCfb :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

ofb :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

unOfb :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

cbcLazy :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

unCbcLazy :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

sivLazy :: Threefish512 -> Threefish512 -> [ByteString] -> ByteString -> Maybe ByteString #

unSivLazy :: Threefish512 -> Threefish512 -> [ByteString] -> ByteString -> Maybe ByteString #

siv :: Threefish512 -> Threefish512 -> [ByteString] -> ByteString -> Maybe ByteString #

unSiv :: Threefish512 -> Threefish512 -> [ByteString] -> ByteString -> Maybe ByteString #

ecbLazy :: Threefish512 -> ByteString -> ByteString #

unEcbLazy :: Threefish512 -> ByteString -> ByteString #

cfbLazy :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

unCfbLazy :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

ofbLazy :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

unOfbLazy :: Threefish512 -> IV Threefish512 -> ByteString -> (ByteString, IV Threefish512) #

Threefish Block512 Threefish512 Source # 
Instance details

Defined in Crypto.Threefish

data Tweak Source #

Threefish tweak value. Please see the Skein specification for info on how to use this.

Constructors

Tweak !Word64 !Word64 

Instances

Instances details
Show Tweak Source # 
Instance details

Defined in Crypto.Threefish.Common

Methods

showsPrec :: Int -> Tweak -> ShowS #

show :: Tweak -> String #

showList :: [Tweak] -> ShowS #

Serialize Tweak Source # 
Instance details

Defined in Crypto.Threefish.Common

Methods

put :: Putter Tweak #

get :: Get Tweak #

Default Tweak Source # 
Instance details

Defined in Crypto.Threefish.Common

Methods

def :: Tweak #

parseHex :: String -> Maybe ByteString Source #

Parses a string of hexadecimal digits into a ByteString.

readHex :: Serialize a => String -> Maybe a Source #

Read any deserializable type from a hex string.

defaultTweak :: Tweak Source #

Default tweak when Threefish is used in CBC, CTR, etc. modes.

class Serialize a => Threefish a b | a -> b where Source #

Methods

threefishKey :: Tweak -> a -> b Source #

Create a Threefish key using a custom tweak value.

threefishEncrypt :: a -> Tweak -> a -> a Source #

Encrypt a block using the given key and tweak value.

threefishDecrypt :: a -> Tweak -> a -> a Source #

Decrypt a block using the given key and tweak value.

toBlock :: ByteString -> Maybe a Source #

Create an appropriately sized block.

fromBlock :: a -> ByteString Source #

Extract the contents of a block.