cryptonite-0.21: Cryptography Primitives sink

Safe Haskell | None
Language | Haskell2010

Crypto.Tutorial

Description

How to use `cryptonite`

    -- | Beware MUST BE 256bits as we use AES256
    import Data.ByteString (ByteString)
    import Crypto.Cipher.AES (AES256)
    import Crypto.Cipher.Types (BlockCipher(..), Cipher(..),nullIV)
    import Crypto.Error (CryptoFailable(..))

    secretKey :: ByteString
    secretKey = "012-456-89A-CDE-012-456-89A-CDE-"

    encrypt :: ByteString -> ByteString -> ByteString
    encrypt secret = ctrCombine ctx nullIV
      where
        ctx = cipherInitNoErr (cipherMakeKey (undefined :: AES256) secret)
        cipherInitNoErr :: BlockCipher c => Key c -> c
        cipherInitNoErr (Key k) = case cipherInit k of
          CryptoPassed a -> a
          CryptoFailed e -> error (show e)
        cipherMakeKey :: Cipher cipher => cipher -> ByteString -> Key cipher
        cipherMakeKey _ = Key -- Yeah Lazyness!!!!!!

    decrypt :: ByteString -> ByteString -> ByteString
    decrypt = encrypt

|