From def7972c0e6e2d894380953c2a5114bdbca8febc Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Sat, 30 Jul 2011 14:33:10 -0500 Subject: get/put for Message --- lib/openpgp.hs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/openpgp.hs b/lib/openpgp.hs index a52d255..2848538 100644 --- a/lib/openpgp.hs +++ b/lib/openpgp.hs @@ -6,6 +6,21 @@ import Data.Word newtype Message = Message [Packet] deriving Show data Packet = EmptyPacket | Len Word8 Word32 deriving Show +-- A message is encoded as a list that takes the entire file +instance Binary Message where + put (Message []) = return () + put (Message (x:xs)) = do + put x + put (Message xs) + get = do + done <- isEmpty + if done then do + return (Message []) + else do + next_packet <- get :: Get Packet + (Message tail) <- get :: Get Message + return (Message (next_packet:tail)) + instance Binary Packet where get = do tag <- get :: Get Word8 -- cgit v1.2.3