module Network.CCNx.Messages
( Message (..)
, ContentObject (..)
, Content
, Name
, Component
, SignedInfo (..)
, Interest (..)
, PublisherPublicKeyDigest
, Exclude (..)
, AnyBloom (..)
, ChildSelector
, AnswerOriginKind
, Scope
, Nonce
, MinSuffixComponents
, MaxSuffixComponents
, Timestamp
, FreshnessSeconds
, FinalBlockID
, Type (..)
, KeyLocator (..)
, Signature (..)
, DigestAlgorithm
, Witness
, SignatureBits
, PublisherID (..)
) where
import Data.ByteString (ByteString)
import Data.Word
data Message
= ContentObjectMessage ContentObject
| InterestMessage Interest
data ContentObject = ContentObject
Signature
Name
SignedInfo
Content
type Content = ByteString
type Name = [Component]
type Component = String
data SignedInfo = SignedInfo
PublisherPublicKeyDigest
Timestamp
(Maybe Type)
(Maybe FreshnessSeconds)
(Maybe FinalBlockID)
(Maybe KeyLocator)
data Interest = Interest
Name
(Maybe MinSuffixComponents)
(Maybe MaxSuffixComponents)
(Maybe PublisherID)
(Maybe Exclude)
(Maybe ChildSelector)
(Maybe AnswerOriginKind)
(Maybe Scope)
(Maybe Nonce)
type PublisherPublicKeyDigest = String
data Exclude = Exclude (Maybe AnyBloom) [(Component, Maybe AnyBloom)]
data AnyBloom = Any | Bloom String
type ChildSelector = Int
type AnswerOriginKind = Int
type Scope = Int
type Nonce = String
type MinSuffixComponents = Int
type MaxSuffixComponents = Int
type Timestamp = Word16
type FreshnessSeconds = Int
type FinalBlockID = String
data Type = DATA | ENCR | GONE | KEY | LINK | NACK
data KeyLocator
= Key String
| Certificate String
| KeyName Name (Maybe PublisherID)
data Signature = Signature
(Maybe DigestAlgorithm)
(Maybe Witness)
SignatureBits
type DigestAlgorithm = String
type Witness = String
type SignatureBits = String
data PublisherID
= PublisherIDPublisherPublicKeyDigest PublisherPublicKeyDigest
| PublisherCertificateDigest String
| PublisherIssuerKeyDigest String
| PublisherIssuerCertificateDigest String