module Crypto.Cipher.Camellia
( Camellia128
) where
import Crypto.Cipher.Camellia.Primitive
import Crypto.Cipher.Types
newtype Camellia128 = Camellia128 Camellia
instance Cipher Camellia128 where
cipherName :: Camellia128 -> String
cipherName Camellia128
_ = String
"Camellia128"
cipherKeySize :: Camellia128 -> KeySizeSpecifier
cipherKeySize Camellia128
_ = Int -> KeySizeSpecifier
KeySizeFixed Int
16
cipherInit :: forall key. ByteArray key => key -> CryptoFailable Camellia128
cipherInit key
k = Camellia -> Camellia128
Camellia128 (Camellia -> Camellia128)
-> CryptoFailable Camellia -> CryptoFailable Camellia128
forall a b. (a -> b) -> CryptoFailable a -> CryptoFailable b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
`fmap` key -> CryptoFailable Camellia
forall key. ByteArray key => key -> CryptoFailable Camellia
initCamellia key
k
instance BlockCipher Camellia128 where
blockSize :: Camellia128 -> Int
blockSize Camellia128
_ = Int
16
ecbEncrypt :: forall ba. ByteArray ba => Camellia128 -> ba -> ba
ecbEncrypt (Camellia128 Camellia
key) = Camellia -> ba -> ba
forall ba. ByteArray ba => Camellia -> ba -> ba
encrypt Camellia
key
ecbDecrypt :: forall ba. ByteArray ba => Camellia128 -> ba -> ba
ecbDecrypt (Camellia128 Camellia
key) = Camellia -> ba -> ba
forall ba. ByteArray ba => Camellia -> ba -> ba
decrypt Camellia
key