packages feed

asn1-data 0.4.1 → 0.4.2

raw patch · 3 files changed

+49/−17 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.ASN1.BER: decodeASN1Events :: [ASN1Event] -> Either ASN1Err [ASN1]
+ Data.ASN1.BER: encodeASN1Events :: [ASN1] -> Either ASN1Err [ASN1Event]
+ Data.ASN1.BER: iterateEvents :: Monad m => [ASN1Event] -> Iteratee ASN1 m a -> m (Either SomeException a)
+ Data.ASN1.DER: decodeASN1Events :: [ASN1Event] -> Either ASN1Err [ASN1]
+ Data.ASN1.DER: encodeASN1Events :: [ASN1] -> Either ASN1Err [ASN1Event]
+ Data.ASN1.DER: iterateEvents :: Monad m => [ASN1Event] -> Iteratee ASN1 m a -> m (Either SomeException a)

Files

Data/ASN1/BER.hs view
@@ -23,8 +23,11 @@ 	-- * iterate over common representation to an ASN1 stream 	, iterateFile 	, iterateByteString+	, iterateEvents  	-- * BER serialize functions+	, decodeASN1Events+	, encodeASN1Events 	, decodeASN1Stream 	, encodeASN1Stream @@ -149,19 +152,32 @@ iterateByteString :: Monad m => L.ByteString -> Iteratee ASN1 m a -> m (Either SomeException a) iterateByteString bs p = E.run (E.enumList 1 (L.toChunks bs) $$ E.joinI $ enumReadBytes $$ p) +{-| iterate over asn1 events using a list enumerator over each chunks -}+iterateEvents :: Monad m => [Raw.ASN1Event] -> Iteratee ASN1 m a -> m (Either SomeException a)+iterateEvents evs p = E.run (E.enumList 8 evs $$ E.joinI $ enumReadRaw $$ p)++{- helper to transform a Someexception from the enumerator to an ASN1Err if possible -}+wrapASN1Err :: Either SomeException a -> Either ASN1Err a+wrapASN1Err (Left err) = Left (maybe (ASN1ParsingFail "unknown") id $ fromException err)+wrapASN1Err (Right x)  = Right x++{-| decode a list of raw ASN1Events into a stream of ASN1 types -}+decodeASN1Events :: [Raw.ASN1Event] -> Either ASN1Err [ASN1]+decodeASN1Events evs = wrapASN1Err $ runIdentity (iterateEvents evs E.consume)+ {-| decode a lazy bytestring as an ASN1 stream -} decodeASN1Stream :: L.ByteString -> Either ASN1Err [ASN1]-decodeASN1Stream l = do-	case runIdentity (iterateByteString l E.consume) of-		Left err -> Left (maybe (ASN1ParsingFail "unknown") id $ fromException err)-		Right x  -> Right x+decodeASN1Stream l = wrapASN1Err $ runIdentity (iterateByteString l E.consume) +{-| encode an ASN1 Stream as raw ASN1 Events -}+encodeASN1Events :: [ASN1] -> Either ASN1Err [Raw.ASN1Event]+encodeASN1Events o = wrapASN1Err $ runIdentity run+	where run = E.run (E.enumList 8 o $$ E.joinI $ enumWriteRaw $$ E.consume)+ {-| encode an ASN1 Stream as lazy bytestring -} encodeASN1Stream :: [ASN1] -> Either ASN1Err L.ByteString-encodeASN1Stream l =-	case runIdentity $ E.run (E.enumList 1 l $$ E.joinI $ enumWriteBytes $$ E.consume) of-		Left err -> Left (maybe (ASN1ParsingFail "unknown") id $ fromException err)-		Right x  -> Right $ L.fromChunks x+encodeASN1Stream l = either Left (Right . L.fromChunks) $ wrapASN1Err $ runIdentity run+	where run = E.run (E.enumList 1 l $$ E.joinI $ enumWriteBytes $$ E.consume)  {-# DEPRECATED decodeASN1s "use stream types with decodeASN1Stream" #-} decodeASN1s :: L.ByteString -> Either ASN1Err [ASN1t]
Data/ASN1/DER.hs view
@@ -23,8 +23,11 @@ 	-- * iterate over common representation to an ASN1 stream 	, iterateFile 	, iterateByteString+	, iterateEvents  	-- * DER serialize functions+	, decodeASN1Events+	, encodeASN1Events 	, decodeASN1Stream 	, encodeASN1Stream @@ -102,19 +105,32 @@ iterateByteString :: Monad m => L.ByteString -> Iteratee ASN1 m a -> m (Either SomeException a) iterateByteString bs p = E.run (E.enumList 1 (L.toChunks bs) $$ E.joinI $ enumReadBytes $$ p) +{-| iterate over asn1 events using a list enumerator over each chunks -}+iterateEvents :: Monad m => [Raw.ASN1Event] -> Iteratee ASN1 m a -> m (Either SomeException a)+iterateEvents evs p = E.run (E.enumList 8 evs $$ E.joinI $ enumReadRaw $$ p)++{- helper to transform a Someexception from the enumerator to an ASN1Err if possible -}+wrapASN1Err :: Either SomeException a -> Either ASN1Err a+wrapASN1Err (Left err) = Left (maybe (ASN1ParsingFail "unknown") id $ fromException err)+wrapASN1Err (Right x)  = Right x++{-| decode a list of raw ASN1Events into a stream of ASN1 types -}+decodeASN1Events :: [Raw.ASN1Event] -> Either ASN1Err [ASN1]+decodeASN1Events evs = wrapASN1Err $ runIdentity (iterateEvents evs E.consume)+ {-| decode a lazy bytestring as an ASN1 stream -} decodeASN1Stream :: L.ByteString -> Either ASN1Err [ASN1]-decodeASN1Stream l =-	case runIdentity (iterateByteString l E.consume) of-		Left err -> Left (maybe (ASN1ParsingFail "unknown") id $ fromException err)-		Right x  -> Right x+decodeASN1Stream l = wrapASN1Err $ runIdentity (iterateByteString l E.consume) +{-| encode an ASN1 Stream as raw ASN1 Events -}+encodeASN1Events :: [ASN1] -> Either ASN1Err [Raw.ASN1Event]+encodeASN1Events o = wrapASN1Err $ runIdentity run+	where run = E.run (E.enumList 8 o $$ E.joinI $ enumWriteRaw $$ E.consume)+ {-| encode an ASN1 Stream as lazy bytestring -} encodeASN1Stream :: [ASN1] -> Either ASN1Err L.ByteString-encodeASN1Stream l =-	case runIdentity $ E.run (E.enumList 1 l $$ E.joinI $ enumWriteBytes $$ E.consume) of-		Left err -> Left (maybe (ASN1ParsingFail "unknown") id $ fromException err)-		Right x  -> Right $ L.fromChunks x+encodeASN1Stream l = either Left (Right . L.fromChunks) $ wrapASN1Err $ runIdentity run+	where run = E.run (E.enumList 1 l $$ E.joinI $ enumWriteBytes $$ E.consume)  {-# DEPRECATED decodeASN1s "use stream types with decodeASN1Stream" #-} decodeASN1s :: L.ByteString -> Either ASN1Err [ASN1t]
asn1-data.cabal view
@@ -1,5 +1,5 @@ Name:                asn1-data-Version:             0.4.1+Version:             0.4.2 Description:     ASN1 data reader and writer in raw form with supports for high level forms of ASN1 (BER, CER and DER).     .