[Haskell-cafe] How to use an crypto with hackage cereal?

Magicloud Magiclouds magicloud.magiclouds at gmail.com
Tue Apr 21 13:58:42 UTC 2015


Thank you. But how if the cipher was specified outside the binary data? I
mean I need to pass the decrypt/encrypt function to get/put while they do
not accept parameters. Should I use Reader here?

On Tue, Apr 21, 2015 at 6:43 PM, Yitzchak Gale <gale at sefer.org> wrote:

> Magicloud Magiclouds wrote:
> > I am trying to work with some binary data that encrypted by field
> instead of
> > the result of serialization. I'd like to use Data.Serialize to wrap the
> data
> > structure. But I could not figure out how to apply an runtime specified
> > cipher method to the bytestring.
>
> Are you using the set of crypto libraries written by
> Victor Hanquez, such as cryptocipher-types,
> crypto-pubkey-types, and cryptohash?
>
> Or the set of libraries written by Thomas DuBuisson,
> such as crypto-api, cipher-aes128, etc.?
>
> Here is an example of decoding for Victor's libraries.
> Encoding would be similar using Put instead of Get.
> Thomas' libraries would be similar using the other
> API.
>
> Let's say you have a type like this:
>
> data MyCipher = MyAES | MyBlowfish | ...
>
> Then in your cereal code you would have a Get monad
> expression something like this (assuming you have
> written all of the functions called parseSomething):
>
> getStuff = do
>   cipher <- parseCipher :: Get MyCipher
>   clearText <- case cipher of
>     MyAES -> do
>       keyBS <- parseAESKey :: Get ByteString
>       let key = either (error "bad AES key") id $ makeKey keyBS
>           cipher = cipherInit key
>       cipherText <- parseAESCipherText :: Get ByteString
>       return $ ecbDecrypt cipher cipherText
>     MyBlowfish -> do ...
>
> etc.
>
> Hope this helps,
> Yitz
>



-- 
竹密岂妨流水过
山高哪阻野云飞

And for G+, please use magiclouds#gmail.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150421/e2801589/attachment.html>


More information about the Haskell-Cafe mailing list