deserialisation of DHT messages
This commit is contained in:
parent
c9654d66d6
commit
6dc9650da5
|
@ -4,14 +4,16 @@ module Hash2Pub.ASN1Coding where
|
||||||
|
|
||||||
import Data.ASN1.Encoding -- asn1-encoding package
|
import Data.ASN1.Encoding -- asn1-encoding package
|
||||||
import Data.ASN1.BinaryEncoding
|
import Data.ASN1.BinaryEncoding
|
||||||
import Data.ASN1.Error
|
import Data.ASN1.Error()
|
||||||
import Data.ASN1.Types -- asn1-types package
|
import Data.ASN1.Types -- asn1-types package
|
||||||
import Data.ASN1.Parse
|
import Data.ASN1.Parse
|
||||||
import Data.Maybe (fromMaybe, mapMaybe)
|
import Data.Maybe (fromMaybe, mapMaybe)
|
||||||
import Data.Time.Clock.POSIX
|
import Data.Time.Clock.POSIX()
|
||||||
import qualified Data.ByteString as BS
|
import qualified Data.ByteString as BS
|
||||||
import qualified Data.Set as Set
|
import qualified Data.Set as Set
|
||||||
import qualified Data.Map.Strict as Map
|
import qualified Data.Map.Strict as Map()
|
||||||
|
import Data.Bifunctor (first)
|
||||||
|
import Control.Exception (displayException)
|
||||||
import Safe
|
import Safe
|
||||||
|
|
||||||
import Hash2Pub.FediChord
|
import Hash2Pub.FediChord
|
||||||
|
@ -159,6 +161,11 @@ serialiseMessage msg maxBytesLength =
|
||||||
maxMsgLength msgs = maximum $ map BS.length msgs
|
maxMsgLength msgs = maximum $ map BS.length msgs
|
||||||
maximumParts = 150
|
maximumParts = 150
|
||||||
|
|
||||||
|
-- | Deserialise a ASN.1 DER encoded bytesstring of a single 'FediChordMessage'.
|
||||||
|
deserialiseMessage :: BS.ByteString
|
||||||
|
-> Either String FediChordMessage
|
||||||
|
deserialiseMessage msgBytes = first displayException (decodeASN1' DER msgBytes) >>= runParseASN1 parseMessage
|
||||||
|
|
||||||
-- ===== encoding functions =====
|
-- ===== encoding functions =====
|
||||||
|
|
||||||
-- encode a message 'ActionPayload' according to its type,
|
-- encode a message 'ActionPayload' according to its type,
|
||||||
|
|
Loading…
Reference in a new issue