wire-api-0.1.0
Safe HaskellSafe-Inferred
LanguageGHC2021

Wire.API.MLS.Serialisation

Synopsis

Documentation

class ParseMLS a where Source #

Parse a value encoded using the "TLS presentation" format.

Methods

parseMLS :: Get a Source #

Instances

Instances details
ParseMLS Word16 Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

ParseMLS Word32 Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

ParseMLS Word64 Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

ParseMLS Word8 Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

ParseMLS Capabilities Source # 
Instance details

Defined in Wire.API.MLS.Capabilities

ParseMLS CipherSuite Source # 
Instance details

Defined in Wire.API.MLS.CipherSuite

ParseMLS SignatureScheme Source # 
Instance details

Defined in Wire.API.MLS.CipherSuite

ParseMLS Commit Source # 
Instance details

Defined in Wire.API.MLS.Commit

ParseMLS HPKECiphertext Source # 
Instance details

Defined in Wire.API.MLS.Commit

ParseMLS UpdatePath Source # 
Instance details

Defined in Wire.API.MLS.Commit

ParseMLS UpdatePathNode Source # 
Instance details

Defined in Wire.API.MLS.Commit

ParseMLS CommitBundle Source # 
Instance details

Defined in Wire.API.MLS.CommitBundle

ParseMLS ClientIdentity Source # 
Instance details

Defined in Wire.API.MLS.Credential

ParseMLS Credential Source # 
Instance details

Defined in Wire.API.MLS.Credential

ParseMLS CredentialTag Source # 
Instance details

Defined in Wire.API.MLS.Credential

ParseMLS Epoch Source # 
Instance details

Defined in Wire.API.MLS.Epoch

ParseMLS Extension Source # 
Instance details

Defined in Wire.API.MLS.Extension

ParseMLS GroupId Source # 
Instance details

Defined in Wire.API.MLS.Group

ParseMLS GroupContext Source # 
Instance details

Defined in Wire.API.MLS.GroupInfo

ParseMLS GroupInfo Source # 
Instance details

Defined in Wire.API.MLS.GroupInfo

ParseMLS GroupInfoData Source # 
Instance details

Defined in Wire.API.MLS.GroupInfo

ParseMLS HPKEPublicKey Source # 
Instance details

Defined in Wire.API.MLS.HPKEPublicKey

ParseMLS KeyPackage Source # 
Instance details

Defined in Wire.API.MLS.KeyPackage

ParseMLS KeyPackageRef Source # 
Instance details

Defined in Wire.API.MLS.KeyPackage

ParseMLS KeyPackageTBS Source # 
Instance details

Defined in Wire.API.MLS.KeyPackage

ParseMLS LeafNode Source # 
Instance details

Defined in Wire.API.MLS.LeafNode

ParseMLS LeafNodeCore Source # 
Instance details

Defined in Wire.API.MLS.LeafNode

ParseMLS LeafNodeSource Source # 
Instance details

Defined in Wire.API.MLS.LeafNode

ParseMLS LeafNodeSourceTag Source # 
Instance details

Defined in Wire.API.MLS.LeafNode

ParseMLS Lifetime Source # 
Instance details

Defined in Wire.API.MLS.Lifetime

ParseMLS Timestamp Source # 
Instance details

Defined in Wire.API.MLS.Lifetime

ParseMLS FramedContent Source # 
Instance details

Defined in Wire.API.MLS.Message

ParseMLS FramedContentData Source # 
Instance details

Defined in Wire.API.MLS.Message

ParseMLS FramedContentDataTag Source # 
Instance details

Defined in Wire.API.MLS.Message

ParseMLS Message Source # 
Instance details

Defined in Wire.API.MLS.Message

ParseMLS MessageContent Source # 
Instance details

Defined in Wire.API.MLS.Message

ParseMLS PrivateMessage Source # 
Instance details

Defined in Wire.API.MLS.Message

ParseMLS PublicMessage Source # 
Instance details

Defined in Wire.API.MLS.Message

ParseMLS Sender Source # 
Instance details

Defined in Wire.API.MLS.Message

ParseMLS WireFormatTag Source # 
Instance details

Defined in Wire.API.MLS.Message

ParseMLS MessageRange Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS PreSharedKeyID Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS PreSharedKeyIDCore Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS PreSharedKeyTag Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS Proposal Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS ProposalOrRef Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS ProposalOrRefTag Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS ProposalRef Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS ReInit Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS Resumption Source # 
Instance details

Defined in Wire.API.MLS.Proposal

ParseMLS ProposalTag Source # 
Instance details

Defined in Wire.API.MLS.ProposalTag

ParseMLS ProtocolVersion Source # 
Instance details

Defined in Wire.API.MLS.ProtocolVersion

ParseMLS VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

ParseMLS GroupSecrets Source # 
Instance details

Defined in Wire.API.MLS.Welcome

ParseMLS Welcome Source # 
Instance details

Defined in Wire.API.MLS.Welcome

ParseMLS a => ParseMLS (RawMLS a) Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

parseMLS :: Get (RawMLS a) Source #

class SerialiseMLS a where Source #

Convert a value to "TLS presentation" format.

Methods

serialiseMLS :: a -> Put Source #

Instances

Instances details
SerialiseMLS Word16 Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

SerialiseMLS Word32 Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

SerialiseMLS Word64 Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

SerialiseMLS Word8 Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

SerialiseMLS AuthenticatedContent Source # 
Instance details

Defined in Wire.API.MLS.AuthenticatedContent

SerialiseMLS Capabilities Source # 
Instance details

Defined in Wire.API.MLS.Capabilities

SerialiseMLS CipherSuite Source # 
Instance details

Defined in Wire.API.MLS.CipherSuite

SerialiseMLS Commit Source # 
Instance details

Defined in Wire.API.MLS.Commit

SerialiseMLS HPKECiphertext Source # 
Instance details

Defined in Wire.API.MLS.Commit

SerialiseMLS UpdatePath Source # 
Instance details

Defined in Wire.API.MLS.Commit

SerialiseMLS UpdatePathNode Source # 
Instance details

Defined in Wire.API.MLS.Commit

SerialiseMLS CommitBundle Source # 
Instance details

Defined in Wire.API.MLS.CommitBundle

SerialiseMLS ClientIdentity Source # 
Instance details

Defined in Wire.API.MLS.Credential

SerialiseMLS Credential Source # 
Instance details

Defined in Wire.API.MLS.Credential

SerialiseMLS CredentialTag Source # 
Instance details

Defined in Wire.API.MLS.Credential

SerialiseMLS Epoch Source # 
Instance details

Defined in Wire.API.MLS.Epoch

SerialiseMLS Extension Source # 
Instance details

Defined in Wire.API.MLS.Extension

SerialiseMLS GroupId Source # 
Instance details

Defined in Wire.API.MLS.Group

SerialiseMLS GroupContext Source # 
Instance details

Defined in Wire.API.MLS.GroupInfo

SerialiseMLS GroupInfo Source # 
Instance details

Defined in Wire.API.MLS.GroupInfo

SerialiseMLS GroupInfoData Source # 
Instance details

Defined in Wire.API.MLS.GroupInfo

SerialiseMLS HPKEPublicKey Source # 
Instance details

Defined in Wire.API.MLS.HPKEPublicKey

SerialiseMLS KeyPackage Source # 
Instance details

Defined in Wire.API.MLS.KeyPackage

SerialiseMLS KeyPackageRef Source # 
Instance details

Defined in Wire.API.MLS.KeyPackage

SerialiseMLS KeyPackageTBS Source # 
Instance details

Defined in Wire.API.MLS.KeyPackage

SerialiseMLS LeafNode Source # 
Instance details

Defined in Wire.API.MLS.LeafNode

SerialiseMLS LeafNodeCore Source # 
Instance details

Defined in Wire.API.MLS.LeafNode

SerialiseMLS LeafNodeSource Source # 
Instance details

Defined in Wire.API.MLS.LeafNode

SerialiseMLS LeafNodeSourceTag Source # 
Instance details

Defined in Wire.API.MLS.LeafNode

SerialiseMLS LeafNodeTBS Source # 
Instance details

Defined in Wire.API.MLS.LeafNode

SerialiseMLS Lifetime Source # 
Instance details

Defined in Wire.API.MLS.Lifetime

SerialiseMLS Timestamp Source # 
Instance details

Defined in Wire.API.MLS.Lifetime

SerialiseMLS FramedContent Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS FramedContentAuthData Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS FramedContentData Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS FramedContentDataTag Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS FramedContentTBS Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS Message Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS MessageContent Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS PublicMessage Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS Sender Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS WireFormatTag Source # 
Instance details

Defined in Wire.API.MLS.Message

SerialiseMLS MessageRange Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS PreSharedKeyID Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS PreSharedKeyIDCore Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS PreSharedKeyTag Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS Proposal Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS ProposalOrRef Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS ProposalOrRefTag Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS ProposalRef Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS ReInit Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS Resumption Source # 
Instance details

Defined in Wire.API.MLS.Proposal

SerialiseMLS ProposalTag Source # 
Instance details

Defined in Wire.API.MLS.ProposalTag

SerialiseMLS ProtocolVersion Source # 
Instance details

Defined in Wire.API.MLS.ProtocolVersion

SerialiseMLS VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

SerialiseMLS GroupSecrets Source # 
Instance details

Defined in Wire.API.MLS.Welcome

SerialiseMLS Welcome Source # 
Instance details

Defined in Wire.API.MLS.Welcome

SerialiseMLS (RawMLS a) Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

serialiseMLS :: RawMLS a -> Put Source #

newtype VarInt Source #

An integer value serialised with a variable-size encoding.

The underlying Word32 must be strictly less than 2^30.

Constructors

VarInt 

Fields

Instances

Instances details
Arbitrary VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Enum VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Num VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Integral VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Real VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Show VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Binary VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

put :: VarInt -> Put #

get :: Get VarInt #

putList :: [VarInt] -> Put #

Eq VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

(==) :: VarInt -> VarInt -> Bool #

(/=) :: VarInt -> VarInt -> Bool #

Ord VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

ParseMLS VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

SerialiseMLS VarInt Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

parseMLSVector :: forall w a. (Binary w, Integral w) => Get a -> Get [a] Source #

serialiseMLSVector :: forall w a. (Binary w, Integral w) => (a -> Put) -> [a] -> Put Source #

parseMLSEnum :: forall (w :: Type) a. (Bounded a, Enum a, Integral w, Binary w) => String -> Get a Source #

Parse a positive tag for an enumeration. The value 0 is considered "reserved", and all other values are shifted down by 1 to get the corresponding enumeration index. This makes it possible to parse enumeration types that don't contain an explicit constructor for a "reserved" value.

serialiseMLSEnum :: forall w a. (Enum a, Integral w, Binary w) => a -> Put Source #

fromMLSEnum :: (Integral w, Enum a) => a -> w Source #

toMLSEnum' :: forall a w. (Bounded a, Enum a, Integral w) => w -> Either MLSEnumError a Source #

toMLSEnum :: forall a w f. (Bounded a, Enum a, MonadFail f, Integral w) => String -> w -> f a Source #

encodeMLS :: SerialiseMLS a => a -> LByteString Source #

Encode an MLS value to a lazy bytestring.

decodeMLS :: ParseMLS a => LByteString -> Either Text a Source #

Decode an MLS value from a lazy bytestring. Return an error message in case of failure.

decodeMLSWith :: Get a -> LByteString -> Either Text a Source #

Decode an MLS value from a lazy bytestring given a custom parser. Return an error message in case of failure.

data RawMLS a Source #

An MLS value together with its serialisation.

This can be used whenever we need to parse an object, but at the same time retain the original serialised bytes (e.g. for signature verification, or to forward them verbatim).

Constructors

RawMLS 

Fields

Instances

Instances details
Foldable RawMLS Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

fold :: Monoid m => RawMLS m -> m #

foldMap :: Monoid m => (a -> m) -> RawMLS a -> m #

foldMap' :: Monoid m => (a -> m) -> RawMLS a -> m #

foldr :: (a -> b -> b) -> b -> RawMLS a -> b #

foldr' :: (a -> b -> b) -> b -> RawMLS a -> b #

foldl :: (b -> a -> b) -> b -> RawMLS a -> b #

foldl' :: (b -> a -> b) -> b -> RawMLS a -> b #

foldr1 :: (a -> a -> a) -> RawMLS a -> a #

foldl1 :: (a -> a -> a) -> RawMLS a -> a #

toList :: RawMLS a -> [a] #

null :: RawMLS a -> Bool #

length :: RawMLS a -> Int #

elem :: Eq a => a -> RawMLS a -> Bool #

maximum :: Ord a => RawMLS a -> a #

minimum :: Ord a => RawMLS a -> a #

sum :: Num a => RawMLS a -> a #

product :: Num a => RawMLS a -> a #

(Arbitrary a, SerialiseMLS a) => Arbitrary (RawMLS a) Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

arbitrary :: Gen (RawMLS a) Source #

shrink :: RawMLS a -> [RawMLS a] Source #

ParseMLS a => FromJSON (RawMLS a) Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Show a => Show (RawMLS a) Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

showsPrec :: Int -> RawMLS a -> ShowS #

show :: RawMLS a -> String #

showList :: [RawMLS a] -> ShowS #

Eq a => Eq (RawMLS a) Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

(==) :: RawMLS a -> RawMLS a -> Bool #

(/=) :: RawMLS a -> RawMLS a -> Bool #

ToSchema a => ToSchema (RawMLS a) Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

ParseMLS a => ParseMLS (RawMLS a) Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

parseMLS :: Get (RawMLS a) Source #

SerialiseMLS (RawMLS a) Source # 
Instance details

Defined in Wire.API.MLS.Serialisation

Methods

serialiseMLS :: RawMLS a -> Put Source #

rawMLSSchema :: Text -> (ByteString -> Either Text a) -> ValueSchema NamedSwaggerDoc (RawMLS a) Source #

A schema for a raw MLS object.

This can be used for embedding MLS objects into JSON. It expresses the object as a base64-encoded string containing the raw bytes of its native MLS serialisation.

Note that a ValueSchema for the underlying type a is not required.

parseRawMLS :: Get a -> Get (RawMLS a) Source #

Parse an MLS object, but keep the raw bytes as well.

traceMLS :: Show a => String -> Get a -> Get a Source #